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

Analysis Run

e5aba0e0-0e54-45b4-9f2e-e5278884807e

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 11:29 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 proxy context implementation known
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
31480 report.consolidate complete 1 / 1 3 months ago
77506 artifact.fetch complete 1 / 3 2 weeks ago
77507 tool.cast_disasm complete 1 / 3 2 weeks ago
77508 analysis.bundle complete 1 / 3 2 weeks ago
77509 capability.graph complete 1 / 3 2 weeks ago
77510 detector.run complete 1 / 3 2 weeks ago
77511 validation.fork complete 1 / 3 2 weeks ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes
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 runtime bytecode bundle.
View stderr
[codex:836777] OpenAI Codex v0.77.0 (research preview)
[codex:836777] --------
[codex:836777] workdir: /tmp/codex-multi-2dmb35p4
[codex:836777] model: gpt-5.2-codex
[codex:836777] provider: openai
[codex:836777] approval: never
[codex:836777] sandbox: read-only
[codex:836777] reasoning effort: xhigh
[codex:836777] reasoning summaries: auto
[codex:836777] session id: 019b8627-b29e-71f2-8a79-005b8c266efd
[codex:836777] --------
[codex:836777] user
[codex:836777] 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:836777] 
[codex:836777] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:836777] 
[codex:836777] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:836777] - Gas inefficiency, code quality, or best practices
[codex:836777] - Theoretical vulnerabilities without a clear extraction path
[codex:836777] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:836777] - Issues requiring social engineering or off-chain coordination
[codex:836777] 
[codex:836777] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:836777] - CALL/DELEGATECALL with controllable destination or calldata
[codex:836777] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:836777] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:836777] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:836777] - External calls before state updates (reentrancy)
[codex:836777] - SELFDESTRUCT with controllable beneficiary
[codex:836777] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:836777] 
[codex:836777] For each finding, you MUST explain:
[codex:836777] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:836777] 2. The concrete sequence of transactions to extract value
[codex:836777] 3. Why you believe this is exploitable (not just suspicious)
[codex:836777] 
[codex:836777] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:836777] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:836777] 
[codex:836777] Output MUST be valid JSON matching the provided schema.
[codex:836777] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:836777] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:836777] mcp startup: no servers
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Reading the file content**
[codex:836777] exec
[codex:836777] /bin/bash -lc ls in /tmp/codex-multi-2dmb35p4 succeeded in 5ms:
[codex:836777] BYTECODE_BUNDLE.txt
[codex:836777] codex-output-schema.json
[codex:836777] exec
[codex:836777] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-2dmb35p4 succeeded in 5ms:
[codex:836777] Runtime bytecode bundle for best-effort auditing.
[codex:836777] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:836777] 
[codex:836777] FILE: runtime_bytecode.hex
[codex:836777] 0x6080604052600436106101fd5760003560e01c806374899a7e1161010d578063abc9653e116100a0578063d35249c81161006f578063d35249c814610586578063d79e85671461058e578063efdcd974146105ae578063f2fde38b146105ce578063f922c0d0146105ee57600080fd5b8063abc9653e14610506578063b179b46514610526578063b3f0067414610546578063c553173f1461056657600080fd5b80638da5cb5b116100dc5780638da5cb5b1461049c578063978bbdb9146104ba578063996e5c06146104d0578063a24bcf46146104e657600080fd5b806374899a7e146103fe57806374de4ec41461041e5780637a9262a21461043e5780638456cb591461048757600080fd5b80634e6fd6c4116101905780635c975abb1161015f5780635c975abb1461037b5780635f4c71f11461039e57806363ea1b92146103b357806369d42148146103c9578063715018a6146103e957600080fd5b80634e6fd6c41461030957806352a630b91461031f5780635a70ad281461033f5780635baa75091461035b57600080fd5b80631ec01fcd116101cc5780631ec01fcd1461029457806322f808d5146102b45780633f4ba83a146102d457806345596e2e146102e957600080fd5b8063104e9929146102095780631249c58b146102325780631460e3901461023c578063193a225c1461025c57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021f60cf5481565b6040519081526020015b60405180910390f35b61023a61060e565b005b34801561024857600080fd5b5061023a610257366004611e44565b610791565b34801561026857600080fd5b5060ca5461027c906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b3480156102a057600080fd5b5060c95461027c906001600160a01b031681565b3480156102c057600080fd5b5060cb5461027c906001600160a01b031681565b3480156102e057600080fd5b5061023a610bc5565b3480156102f557600080fd5b5061023a610304366004611ec3565b610bd5565b34801561031557600080fd5b5061027c61dead81565b34801561032b57600080fd5b5061021f61033a366004611edc565b610be9565b34801561034b57600080fd5b5061021f670de0b6b3a764000081565b34801561036757600080fd5b5061023a610376366004611ec3565b610c7e565b34801561038757600080fd5b5060975460ff166040519015158152602001610229565b3480156103aa57600080fd5b5061021f610d8b565b3480156103bf57600080fd5b5061021f60d25481565b3480156103d557600080fd5b5060cd5461027c906001600160a01b031681565b3480156103f557600080fd5b5061023a610da0565b34801561040a57600080fd5b5061023a610419366004611ec3565b610db2565b34801561042a57600080fd5b5061023a610439366004611ec3565b610f04565b34801561044a57600080fd5b50610472610459366004611edc565b60d3602052600090815260409020805460019091015482565b60408051928352602083019190915201610229565b34801561049357600080fd5b5061023a611066565b3480156104a857600080fd5b506033546001600160a01b031661027c565b3480156104c657600080fd5b5061021f60d05481565b3480156104dc57600080fd5b5061021f60d15481565b3480156104f257600080fd5b5061021f610501366004611ec3565b611076565b34801561051257600080fd5b5061023a610521366004611ec3565b61112f565b34801561053257600080fd5b5061021f610541366004611ec3565b611281565b34801561055257600080fd5b5060ce5461027c906001600160a01b031681565b34801561057257600080fd5b5061023a610581366004611ec3565b611325565b61023a611437565b34801561059a57600080fd5b5061023a6105a9366004611efe565b6114c8565b3480156105ba57600080fd5b5061023a6105c9366004611edc565b6114de565b3480156105da57600080fd5b5061023a6105e9366004611edc565b6114ef565b3480156105fa57600080fd5b5060cc5461027c906001600160a01b031681565b610616611565565b61061e6115be565b34806106455760405162461bcd60e51b815260040161063c90611f28565b60405180910390fd5b600061065082611281565b9050600081116106725760405162461bcd60e51b815260040161063c90611f28565b8160cf546106809190611f63565b60cf5560cb546040805163f6326fb360e01b815290516001600160a01b039092169163f6326fb3918591600480830192600092919082900301818588803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505060ca546040516340c10f1960e01b8152336004820152602481018690526001600160a01b0390911693506340c10f1992506044019050600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505060408051858152602081018590523393507f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca92500160405180910390a2505061078f6001606555565b565b600054610100900460ff16158080156107b15750600054600160ff909116105b806107cb5750303b1580156107cb575060005460ff166001145b61082e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161063c565b6000805460ff191660011790558015610851576000805461ff0019166101001790555b6001600160a01b0388166108975760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420764554483160981b604482015260640161063c565b6001600160a01b0387166108dd5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103b22aa241960991b604482015260640161063c565b6001600160a01b0386166109335760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420534c50206465706f73697420616464726573730000000000604482015260640161063c565b6001600160a01b0385166109895760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964204d4556207661756c74206164647265737300000000000000604482015260640161063c565b6001600160a01b0384166109df5760405162461bcd60e51b815260206004820181905260248201527f496e76616c6964207769746864726177616c207661756c742061646472657373604482015260640161063c565b6000876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611f7c565b11610a905760405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420746f74616c537570706c79206f6620764554483200000000604482015260640161063c565b610a9861160b565b610aa061163a565b610aa8611669565b610ab182611698565b610aba83611720565b60c980546001600160a01b03808b166001600160a01b03199283161790925560ca80548a8416908316811790915560cb80548a851690841617905560cc805489851690841617905560cd805493881693909216929092179055604080516318160ddd60e01b815290516318160ddd916004808201926020929091908290030181865afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190611f7c565b60cf558015610bbb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610bcd6117c6565b61078f611820565b610bdd6117c6565b610be681611698565b50565b6001600160a01b038116600090815260d360209081526040808320815180830190925280548083526001909101549282019290925290610c27610d8b565b11610c355750600092915050565b8051600090610c42610d8b565b610c4c9190611f95565b9050804710610c5b5780610c5d565b475b905080826020015110610c705780610c76565b81602001515b949350505050565b610c86611565565b60008111610ca65760405162461bcd60e51b815260040161063c90611f28565b806000610cb282611281565b90508160cf54610cc29190611f63565b60cf5560c954610cdf906001600160a01b03163361dead85611872565b60ca546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505060408051858152602081018590523393507f9f1eab6cdd1daff5126e5746868327717314baefd3abd72422a3064e1300279c9250015b60405180910390a25050610be66001606555565b600060d25447610d9b9190611f63565b905090565b610da86117c6565b61078f60006118d2565b610dba611565565b610dc26115be565b60008111610de25760405162461bcd60e51b815260040161063c90611f28565b33600090815260d36020526040812090610dfb83611076565b905060008111610e1d5760405162461bcd60e51b815260040161063c90611f28565b816001015460d154610e2f9190611f95565b82556001820154610e41908290611f63565b600183015560d154610e54908290611f63565b60d15560cf54610e65908290611f95565b60cf5560ca54604051632770a7eb60e21b8152336004820152602481018590526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b505060408051848152602081018790523393507f24b91f4f47caf44230a57777a9be744924e82bf666f2d5702faf97df35e60f9f925001610d77565b60cc546001600160a01b0316331480610f27575060cd546001600160a01b031633145b610f735760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f74207661756c7420636f6e747261637400000000604482015260640161063c565b610f7b6115be565b6000670de0b6b3a764000060d05483610f949190611fa8565b610f9e9190611fbf565b90506000610fab82611281565b90508260cf54610fbb9190611f63565b60cf5560ca5460ce546040516340c10f1960e01b81526001600160a01b039182166004820152602481018490529116906340c10f1990604401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b505060408051868152602081018590523393507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec847492500160405180910390a2505050565b61106e6117c6565b61078f611924565b60008060ca60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190611f7c565b905080158015611100575060cf54155b1561110d57829150611129565b8060cf548461111c9190611fa8565b6111269190611fbf565b91505b50919050565b611137611565565b33600090815260d3602052604081209082900361115657806001015491505b80600101548211156111aa5760405162461bcd60e51b815260206004820152601760248201527f457863656564207065726d697474656420616d6f756e74000000000000000000604482015260640161063c565b6111b333610be9565b8211156112025760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e74207769746864726177616c20616d6f756e740000604482015260640161063c565b8181600101546112129190611f95565b60018201558054611224908390611f63565b815560d254611234908390611f63565b60d2556112413383611961565b60405182815233907f1a39b9c5044b9f0ff56c5951e30c1ebe24911353aafcceb9250e83a24fe158c49060200160405180910390a250610be66001606555565b60008060ca60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fb9190611f7c565b90508015801561130b575060cf54155b1561131857829150611129565b60cf5461111c8285611fa8565b60cc546001600160a01b0316331480611348575060cd546001600160a01b031633145b6113945760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f74207661756c7420636f6e747261637400000000604482015260640161063c565b61139c6115be565b8060cf54116113ed5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e7420706f6f6c20616d6f756e740000000000000000604482015260640161063c565b8060cf546113fb9190611f95565b60cf5560405181815233907fccdd1b4597f1516187e25b38fbad3e75a428981d2a1d898667abb3cdd95a672f906020015b60405180910390a250565b60cd546001600160a01b031633146114915760405162461bcd60e51b815260206004820181905260248201527f496e76616c6964207769746864726177616c207661756c742061646472657373604482015260640161063c565b60405134815233907f0a89b53a0597c8291bcd6a87acb5dc18d0123915629a55c470bfbfd4680f591e9060200160405180910390a2565b6114d06117c6565b6114da8282611a47565b5050565b6114e66117c6565b610be681611720565b6114f76117c6565b6001600160a01b03811661155c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063c565b610be6816118d2565b6002606554036115b75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161063c565b6002606555565b60975460ff161561078f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161063c565b6001606555565b600054610100900460ff166116325760405162461bcd60e51b815260040161063c90611fe1565b61078f611b60565b600054610100900460ff166116615760405162461bcd60e51b815260040161063c90611fe1565b61078f611b90565b600054610100900460ff166116905760405162461bcd60e51b815260040161063c90611fe1565b61078f611bb7565b670de0b6b3a76400008111156116e95760405162461bcd60e51b8152602060048201526016602482015275466565207261746520657863656564732072616e676560501b604482015260640161063c565b60d081905560405181815233907f021ec04e349d47f898250a9525e5ab79abae4d9a0a3f0e6c5a5d61f3a8b873789060200161142c565b6001600160a01b0381166117765760405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420666565207265636569766572206164647265737300000000604482015260640161063c565b60ce80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f49bc8f1c292131e71bfca22660d0716072ff2442b58d72840474dd83a390411c9060200161142c565b6033546001600160a01b0316331461078f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161063c565b611828611bea565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526118cc908590611c33565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61192c6115be565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118553390565b804710156119a85760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161063c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119f5576040519150601f19603f3d011682016040523d82523d6000602084013e6119fa565b606091505b5050905080611a425760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f2073656e642076616c756560601b604482015260640161063c565b505050565b80471015611a975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161063c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ae4576040519150601f19603f3d011682016040523d82523d6000602084013e611ae9565b606091505b5050905080611a425760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161063c565b600054610100900460ff16611b875760405162461bcd60e51b815260040161063c90611fe1565b61078f336118d2565b600054610100900460ff166116045760405162461bcd60e51b815260040161063c90611fe1565b600054610100900460ff16611bde5760405162461bcd60e51b815260040161063c90611fe1565b6097805460ff19169055565b60975460ff1661078f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161063c565b6000611c88826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611d059092919063ffffffff16565b805190915015611a425780806020019051810190611ca6919061202c565b611a425760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063c565b6060610c76848460008585600080866001600160a01b03168587604051611d2c9190612072565b60006040518083038185875af1925050503d8060008114611d69576040519150601f19603f3d011682016040523d82523d6000602084013e611d6e565b606091505b5091509150611d7f87838387611d8a565b979650505050505050565b60608315611df9578251600003611df2576001600160a01b0385163b611df25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063c565b5081610c76565b610c768383815115611e0e5781518083602001fd5b8060405162461bcd60e51b815260040161063c919061208e565b80356001600160a01b0381168114611e3f57600080fd5b919050565b600080600080600080600060e0888a031215611e5f57600080fd5b611e6888611e28565b9650611e7660208901611e28565b9550611e8460408901611e28565b9450611e9260608901611e28565b9350611ea060808901611e28565b9250611eae60a08901611e28565b915060c0880135905092959891949750929550565b600060208284031215611ed557600080fd5b5035919050565b600060208284031215611eee57600080fd5b611ef782611e28565b9392505050565b60008060408385031215611f1157600080fd5b611f1a83611e28565b946020939093013593505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115611f7657611f76611f4d565b92915050565b600060208284031215611f8e57600080fd5b5051919050565b81810381811115611f7657611f76611f4d565b8082028115828204841417611f7657611f76611f4d565b600082611fdc57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561203e57600080fd5b81518015158114611ef757600080fd5b60005b83811015612069578181015183820152602001612051565b50506000910152565b6000825161208481846020870161204e565b9190910192915050565b60208152600082518060208401526120ad81604085016020870161204e565b601f01601f1916919091016040019291505056fea2646970667358221220b42dd3209e672c7449aaae0fe8ec7ad5e416b8664e5340f4fb42dd7f6a28714364736f6c63430008110033
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Examining bytecode for vulnerabilities**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] # extract hex after runtime_bytecode.hex
[codex:836777] m=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code)
[codex:836777] hexstr=m.group(1)[2:]
[codex:836777] print('length bytes', len(hexstr)//2)
[codex:836777] # find opcodes 0xf4,0xff
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] print('delegatecall positions', [i for i,b in enumerate(bytecode) if b==0xf4][:20])
[codex:836777] print('selfdestruct positions', [i for i,b in enumerate(bytecode) if b==0xff][:20])
[codex:836777] # find CALL opcodes 0xf1 occurrences count
[codex:836777] print('CALL count', sum(1 for b in bytecode if b==0xf1))
[codex:836777] # find CALLCODE 0xf2
[codex:836777] a=[i for i,b in enumerate(bytecode) if b==0xf2]
[codex:836777] print('CALLCODE positions', a[:20], 'count', len(a))
[codex:836777] # find STATICCALL 0xfa
[codex:836777] print('STATICCALL count', sum(1 for b in bytecode if b==0xfa))
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 26ms:
[codex:836777] length bytes 8439
[codex:836777] delegatecall positions [3811, 8419]
[codex:836777] selfdestruct positions [909, 1947, 1964, 1990, 2100, 2119, 2550, 2551, 2552, 2553, 2945, 4259, 4260, 4261, 4262, 4782, 4783, 4784, 4785, 5571]
[codex:836777] CALL count 11
[codex:836777] CALLCODE positions [87, 1260, 3826, 4166, 6202, 6410, 7578, 7593] count 8
[codex:836777] STATICCALL count 6
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Planning EVM bytecode disassembly**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # opcode names
[codex:836777] opnames = {i:f'OP_{i:02x}' for i in range(256)}
[codex:836777] # fill common opcodes
[codex:836777] opnames.update({
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] })
[codex:836777] 
[codex:836777] # disassemble and collect positions of certain opcodes
[codex:836777] positions = { 'DELEGATECALL':[], 'SELFDESTRUCT':[], 'CALL':[], 'CALLCODE':[], 'STATICCALL':[] }
[codex:836777] 
[codex:836777] i=0
[codex:836777] while i < len(bytecode):
[codex:836777]     op = bytecode[i]
[codex:836777]     name = opnames.get(op,f'OP_{op:02x}')
[codex:836777]     if name in positions:
[codex:836777]         positions[name].append(i)
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         push_len = op - 0x5f
[codex:836777]         i += 1 + push_len
[codex:836777]         continue
[codex:836777]     i += 1
[codex:836777] 
[codex:836777] for k,v in positions.items():
[codex:836777]     print(k, len(v), v[:20])
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 27ms:
[codex:836777] DELEGATECALL 0 []
[codex:836777] SELFDESTRUCT 0 []
[codex:836777] CALL 8 [1741, 1843, 3374, 3767, 4113, 6597, 6836, 7481]
[codex:836777] CALLCODE 0 []
[codex:836777] STATICCALL 4 [2574, 2877, 4283, 4806]
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing CALL instructions for risks**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames = {i:f'OP_{i:02x}' for i in range(256)}
[codex:836777] opnames.update({
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] })
[codex:836777] 
[codex:836777] # build disassembly map
[codex:836777] instrs=[]
[codex:836777] i=0
[codex:836777] while i < len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     name=opnames.get(op,f'OP_{op:02x}')
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         l=op-0x5f
[codex:836777]         data=bytecode[i+1:i+1+l]
[codex:836777]         instrs.append((i,name,data))
[codex:836777]         i+=1+l
[codex:836777]     else:
[codex:836777]         instrs.append((i,name,None))
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] # create index by offset
[codex:836777] index={off:idx for idx,(off,_,__) in enumerate(instrs)}
[codex:836777] 
[codex:836777] call_offsets=[off for off,op,_ in instrs if op=='CALL']
[codex:836777] for off in call_offsets:
[codex:836777]     idx=index[off]
[codex:836777]     start=max(0,idx-12)
[codex:836777]     end=min(len(instrs), idx+6)
[codex:836777]     print('\\n=== CALL at',off,'===')
[codex:836777]     for j in range(start,end):
[codex:836777]         o,op,data=instrs[j]
[codex:836777]         if data is None:
[codex:836777]             print(f'{o:04x}: {op}')
[codex:836777]         else:
[codex:836777]             print(f'{o:04x}: {op} 0x{data.hex()}')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 33ms:
[codex:836777] 
[codex:836777] === CALL at 1741 ===
[codex:836777] 06be: EXTCODESIZE
[codex:836777] 06bf: ISZERO
[codex:836777] 06c0: DUP1
[codex:836777] 06c1: ISZERO
[codex:836777] 06c2: PUSH2 0x06ca
[codex:836777] 06c5: JUMPI
[codex:836777] 06c6: PUSH1 0x00
[codex:836777] 06c8: DUP1
[codex:836777] 06c9: REVERT
[codex:836777] 06ca: JUMPDEST
[codex:836777] 06cb: POP
[codex:836777] 06cc: GAS
[codex:836777] 06cd: CALL
[codex:836777] 06ce: ISZERO
[codex:836777] 06cf: DUP1
[codex:836777] 06d0: ISZERO
[codex:836777] 06d1: PUSH2 0x06de
[codex:836777] 06d4: JUMPI
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Examining call context and static calls**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames = {i:f'OP_{i:02x}' for i in range(256)}
[codex:836777] # fill some names
[codex:836777] opnames.update({
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] })
[codex:836777] 
[codex:836777] instrs=[]
[codex:836777] i=0
[codex:836777] while i < len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     name=opnames.get(op,f'OP_{op:02x}')
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         l=op-0x5f
[codex:836777]         data=bytecode[i+1:i+1+l]
[codex:836777]         instrs.append((i,name,data))
[codex:836777]         i+=1+l
[codex:836777]     else:
[codex:836777]         instrs.append((i,name,None))
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] index={off:idx for idx,(off,_,__) in enumerate(instrs)}
[codex:836777] 
[codex:836777] static_offsets=[off for off,op,_ in instrs if op=='STATICCALL']
[codex:836777] for off in static_offsets:
[codex:836777]     idx=index[off]
[codex:836777]     start=max(0,idx-12)
[codex:836777]     end=min(len(instrs), idx+6)
[codex:836777]     print('\\n=== STATICCALL at',off,'===')
[codex:836777]     for j in range(start,end):
[codex:836777]         o,op,data=instrs[j]
[codex:836777]         if data is None:
[codex:836777]             print(f'{o:04x}: {op}')
[codex:836777]         else:
[codex:836777]             print(f'{o:04x}: {op} 0x{data.hex()}')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 29ms:
[codex:836777] 
[codex:836777] === STATICCALL at 2574 ===
[codex:836777] 09ff: MSTORE
[codex:836777] 0a00: PUSH1 0x04
[codex:836777] 0a02: ADD
[codex:836777] 0a03: PUSH1 0x20
[codex:836777] 0a05: PUSH1 0x40
[codex:836777] 0a07: MLOAD
[codex:836777] 0a08: DUP1
[codex:836777] 0a09: DUP4
[codex:836777] 0a0a: SUB
[codex:836777] 0a0b: DUP2
[codex:836777] 0a0c: DUP7
[codex:836777] 0a0d: GAS
[codex:836777] 0a0e: STATICCALL
[codex:836777] 0a0f: ISZERO
[codex:836777] 0a10: DUP1
[codex:836777] 0a11: ISZERO
[codex:836777] 0a12: PUSH2 0x0a1f
[codex:836777] 0a15: JUMPI
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing contract CALL instructions**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames = {i:f'OP_{i:02x}' for i in range(256)}
[codex:836777] opnames.update({
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] })
[codex:836777] 
[codex:836777] instrs=[]
[codex:836777] i=0
[codex:836777] while i < len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     name=opnames.get(op,f'OP_{op:02x}')
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         l=op-0x5f
[codex:836777]         data=bytecode[i+1:i+1+l]
[codex:836777]         instrs.append((i,name,data))
[codex:836777]         i+=1+l
[codex:836777]     else:
[codex:836777]         instrs.append((i,name,None))
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] index={off:idx for idx,(off,_,__) in enumerate(instrs)}
[codex:836777] 
[codex:836777] call_offsets=[off for off,op,_ in instrs if op=='CALL']
[codex:836777] for off in call_offsets:
[codex:836777]     idx=index[off]
[codex:836777]     start=max(0,idx-30)
[codex:836777]     end=min(len(instrs), idx+6)
[codex:836777]     print('\\n=== CALL at',hex(off),'===')
[codex:836777]     for j in range(start,end):
[codex:836777]         o,op,data=instrs[j]
[codex:836777]         if data is None:
[codex:836777]             print(f'{o:04x}: {op}')
[codex:836777]         else:
[codex:836777]             print(f'{o:04x}: {op} 0x{data.hex()}')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 30ms:
[codex:836777] 
[codex:836777] === CALL at 0x6cd ===
[codex:836777] 06aa: SWAP2
[codex:836777] 06ab: PUSH1 0x04
[codex:836777] 06ad: DUP1
[codex:836777] 06ae: DUP4
[codex:836777] 06af: ADD
[codex:836777] 06b0: SWAP3
[codex:836777] 06b1: PUSH1 0x00
[codex:836777] 06b3: SWAP3
[codex:836777] 06b4: SWAP2
[codex:836777] 06b5: SWAP1
[codex:836777] 06b6: DUP3
[codex:836777] 06b7: SWAP1
[codex:836777] 06b8: SUB
[codex:836777] 06b9: ADD
[codex:836777] 06ba: DUP2
[codex:836777] 06bb: DUP6
[codex:836777] 06bc: DUP9
[codex:836777] 06bd: DUP1
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing ERC20 mint and burn calls**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import sha3
[codex:836777] for sig in ['burn(address,uint256)','burnFrom(address,uint256)','mint(address,uint256)','transfer(address,uint256)','transferFrom(address,address,uint256)']:
[codex:836777]     k=sha3.keccak_256(sig.encode()).hexdigest()[:8]
[codex:836777]     print(sig,k)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 exited 1 in 33ms:
[codex:836777] Traceback (most recent call last):
[codex:836777]   File "<stdin>", line 1, in <module>
[codex:836777] ModuleNotFoundError: No module named 'sha3'
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing low-level call stack and ETH transfers**
[codex:836777] 
[codex:836777] I'm piecing together how ETH transfers happen via CALL instructions by examining the stack order and opcode patterns, trying to distinguish standard token calls (value zero) from actual ETH-sending calls. I’m considering simulating stack behavior to see if any CALL uses user-controlled or nonzero value, and checking for CALLVALUE usage to identify payable or ETH-receiving functions in the bytecode. This should help find if users can trigger mint, burn, or withdrawal of ETH.
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # disassemble to find CALLVALUE positions (opcode 0x34)
[codex:836777] positions=[]
[codex:836777] # need to skip push data
[codex:836777] i=0
[codex:836777] while i<len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     if op==0x34:
[codex:836777]         positions.append(i)
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         i+=1+(op-0x5f)
[codex:836777]     else:
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] print('CALLVALUE positions', positions)
[codex:836777] 
[codex:836777] # print context around each
[codex:836777] opnames={
[codex:836777]     0x34:'CALLVALUE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',0x55:'SSTORE',0x54:'SLOAD',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0x52:'MSTORE',0x51:'MLOAD',0x50:'POP',0x33:'CALLER',0x32:'ORIGIN',0x3b:'EXTCODESIZE',0x15:'ISZERO',0x14:'EQ',0x11:'GT',0x10:'LT',0x12:'SLT',0x13:'SGT',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x34:'CALLVALUE'
[codex:836777] }
[codex:836777] 
[codex:836777] # quick disassemble function
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i<len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         name=opnames.get(op, None)
[codex:836777]         if name is None:
[codex:836777]             if 0x60 <= op <= 0x7f:
[codex:836777]                 l=op-0x5f
[codex:836777]                 data=bytecode[i+1:i+1+l]
[codex:836777]                 print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]                 i+=1+l
[codex:836777]                 continue
[codex:836777]             else:
[codex:836777]                 name=f'OP_{op:02x}'
[codex:836777]         print(f'{i:04x}: {name}')
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] for pos in positions:
[codex:836777]     print('\\nContext around', hex(pos))
[codex:836777]     disasm(pos-20, pos+40)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 27ms:
[codex:836777] CALLVALUE positions [522, 573, 605, 661, 693, 725, 746, 778, 800, 832, 860, 892, 927, 948, 970, 1002, 1023, 1055, 1087, 1160, 1181, 1211, 1233, 1255, 1287, 1319, 1351, 1383, 1423, 1455, 1487, 1519, 1567, 5269]
[codex:836777] 
[codex:836777] Context around 0x20a
[codex:836777] 01f6: OP_02
[codex:836777] 01f7: OP_5c
[codex:836777] 01f8: JUMPI
[codex:836777] 01f9: PUSH1 0x00
[codex:836777] 01fb: OP_80
[codex:836777] 01fc: REVERT
[codex:836777] 01fd: JUMPDEST
[codex:836777] 01fe: CALLDATASIZE
[codex:836777] 01ff: PUSH2 0x0204
[codex:836777] 0202: JUMPI
[codex:836777] 0203: OP_00
[codex:836777] 0204: JUMPDEST
[codex:836777] 0205: PUSH1 0x00
[codex:836777] 0207: OP_80
[codex:836777] 0208: REVERT
[codex:836777] 0209: JUMPDEST
[codex:836777] 020a: CALLVALUE
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing ETH transfer functions**
[codex:836777] 
[codex:836777] I'm digging into the bytecode to find which functions use the Address library's sendValue pattern for ETH transfers, focusing on those with revert strings like "Address: insufficient balance." My goal is to spot any public functions that let callers withdraw ETH without restrictions by tracing call sites and offsets around 0x11961 and 0x1a47. Let’s see if any function exposes sendValue in an uncontrolled way.
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # search for ASCII strings
[codex:836777] s=b'Address: insufficient balance'
[codex:836777] idx=bytecode.find(s)
[codex:836777] print('string offset', idx)
[codex:836777] # print some bytes around
[codex:836777] print(bytecode[idx-40:idx+len(s)+40])
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 23ms:
[codex:836777] string offset 6763
[codex:836777] b'PPPV[\x80G\x10\x15a\x1a\x97W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fAddress: insufficient balance\x00\x00\x00`D\x82\x01R`d\x01a\x06<V[`\x00\x82`\x01`\x01`\xa0\x1b\x03\x16\x82`@Q`\x00`@Q\x80\x83\x03'
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing function selectors and contract errors**
[codex:836777] 
[codex:836777] I'm trying to identify function selectors by parsing the contract's jump table and examining error strings related to deposits, withdrawals, and vault controls. This should help map functions like deposit or withdraw and understand access restrictions around vault calls, which is key to spotting vulnerabilities. I'll create a Python script to disassemble the dispatcher and connect selectors to jump destinations.
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # disassemble first 0x250 bytes
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i < len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             name=opnames.get(op, f'OP_{op:02x}')
[codex:836777]             print(f'{i:04x}: {name}')
[codex:836777]             i+=1
[codex:836777] 
[codex:836777] # disassemble first 0x200 bytes for dispatcher
[codex:836777] print('--- dispatcher ---')
[codex:836777] disasm(0, 0x200)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 25ms:
[codex:836777] --- dispatcher ---
[codex:836777] 0000: PUSH1 0x80
[codex:836777] 0002: PUSH1 0x40
[codex:836777] 0004: MSTORE
[codex:836777] 0005: PUSH1 0x04
[codex:836777] 0007: CALLDATASIZE
[codex:836777] 0008: LT
[codex:836777] 0009: PUSH2 0x01fd
[codex:836777] 000c: JUMPI
[codex:836777] 000d: PUSH1 0x00
[codex:836777] 000f: CALLDATALOAD
[codex:836777] 0010: PUSH1 0xe0
[codex:836777] 0012: SHR
[codex:836777] 0013: DUP1
[codex:836777] 0014: PUSH4 0x74899a7e
[codex:836777] 0019: GT
[codex:836777] 001a: PUSH2 0x010d
[codex:836777] 001d: JUMPI
[codex:836777] 001e: DUP1
[codex:836777] 001f: PUSH4 0xabc9653e
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Mapping and analyzing function selectors**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # function entry points from dispatcher
[codex:836777] funcs={
[codex:836777]     '104e9929':0x0209,
[codex:836777]     '1249c58b':0x0232,
[codex:836777]     '1460e390':0x023c,
[codex:836777]     '193a225c':0x025c,
[codex:836777]     '1ec01fcd':0x0294,
[codex:836777]     '22f808d5':0x02b4,
[codex:836777]     '3f4ba83a':0x02d4,
[codex:836777]     '45596e2e':0x02e9,
[codex:836777]     '4e6fd6c4':0x0309,
[codex:836777]     '52a630b9':0x031f,
[codex:836777]     '5a70ad28':0x033f,
[codex:836777]     '5baa7509':0x035b,
[codex:836777]     '5c975abb':0x037b,
[codex:836777]     '5f4c71f1':0x039e,
[codex:836777]     '63ea1b92':0x03b3,
[codex:836777]     '69d42148':0x03c9,
[codex:836777]     '715018a6':0x03e9,
[codex:836777]     '74899a7e':0x03fe,
[codex:836777]     '74de4ec4':0x041e,
[codex:836777]     '7a9262a2':0x043e,
[codex:836777]     '8456cb59':0x0487,
[codex:836777]     '8da5cb5b':0x049c,
[codex:836777]     '978bbdb9':0x04ba,
[codex:836777]     '996e5c06':0x04d0,
[codex:836777]     'a24bcf46':0x04e6,
[codex:836777]     'abc9653e':0x0506,
[codex:836777]     'b179b465':0x0526,
[codex:836777]     'b3f00674':0x0546,
[codex:836777]     'c553173f':0x0566,
[codex:836777]     'd35249c8':0x0586,
[codex:836777]     'd79e8567':0x058e,
[codex:836777]     'efdcd974':0x05ae,
[codex:836777]     'f2fde38b':0x05ce,
[codex:836777]     'f922c0d0':0x05ee,
[codex:836777] }
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] def disasm_at(start, count=20):
[codex:836777]     i=start
[codex:836777]     n=0
[codex:836777]     res=[]
[codex:836777]     while i < len(bytecode) and n < count:
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             res.append((i, f'PUSH{l} 0x{data.hex()}'))
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             res.append((i, opnames.get(op,f'OP_{op:02x}')))
[codex:836777]             i+=1
[codex:836777]         n+=1
[codex:836777]     return res
[codex:836777] 
[codex:836777] for sig,off in funcs.items():
[codex:836777]     print(f'\\nFunction {sig} @ {off:04x}')
[codex:836777]     for o,op in disasm_at(off, 18):
[codex:836777]         print(f' {o:04x}: {op}')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 29ms:
[codex:836777] 
[codex:836777] Function 104e9929 @ 0209
[codex:836777]  0209: JUMPDEST
[codex:836777]  020a: CALLVALUE
[codex:836777]  020b: DUP1
[codex:836777]  020c: ISZERO
[codex:836777]  020d: PUSH2 0x0215
[codex:836777]  0210: JUMPI
[codex:836777]  0211: PUSH1 0x00
[codex:836777]  0213: DUP1
[codex:836777]  0214: REVERT
[codex:836777]  0215: JUMPDEST
[codex:836777]  0216: POP
[codex:836777]  0217: PUSH2 0x021f
[codex:836777]  021a: PUSH1 0xcf
[codex:836777]  021c: SLOAD
[codex:836777]  021d: DUP2
[codex:836777]  021e: JUMP
[codex:836777]  021f: JUMPDEST
[codex:836777]  0220: PUSH1 0x40
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Mapping internal function entry points**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] def disasm_at(start, count=50):
[codex:836777]     i=start
[codex:836777]     n=0
[codex:836777]     res=[]
[codex:836777]     while i < len(bytecode) and n < count:
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             res.append((i, f'PUSH{l} 0x{data.hex()}'))
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             res.append((i, opnames.get(op,f'OP_{op:02x}')))
[codex:836777]             i+=1
[codex:836777]         n+=1
[codex:836777]     return res
[codex:836777] 
[codex:836777] internal_points=[0x060e,0x0791,0x0bc5,0x0bd5,0x0be9,0x0c7e,0x0d8b,0x0da0,0x0db2,0x0f04,0x1066,0x1076,0x112f,0x1281,0x1325,0x1437,0x14c8,0x14de,0x14ef,0x1565,0x15be,0x160b,0x163a,0x1669,0x1698,0x1720,0x17c6,0x1820,0x1872,0x18d2,0x1924,0x1961,0x1a47,0x1b60,0x1b90,0x1bb7,0x1bea]
[codex:836777] 
[codex:836777] for off in internal_points:
[codex:836777]     print(f'\\nInternal @ {off:04x}')
[codex:836777]     for o,op in disasm_at(off, 35):
[codex:836777]         print(f' {o:04x}: {op}')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 25ms:
[codex:836777] 
[codex:836777] Internal @ 060e
[codex:836777]  060e: JUMPDEST
[codex:836777]  060f: PUSH2 0x0616
[codex:836777]  0612: PUSH2 0x1565
[codex:836777]  0615: JUMP
[codex:836777]  0616: JUMPDEST
[codex:836777]  0617: PUSH2 0x061e
[codex:836777]  061a: PUSH2 0x15be
[codex:836777]  061d: JUMP
[codex:836777]  061e: JUMPDEST
[codex:836777]  061f: CALLVALUE
[codex:836777]  0620: DUP1
[codex:836777]  0621: PUSH2 0x0645
[codex:836777]  0624: JUMPI
[codex:836777]  0625: PUSH1 0x40
[codex:836777]  0627: MLOAD
[codex:836777]  0628: PUSH3 0x461bcd
[codex:836777]  062c: PUSH1 0xe5
[codex:836777]  062e: SHL
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing key internal functions**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i < len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             name=opnames.get(op, f'OP_{op:02x}')
[codex:836777]             print(f'{i:04x}: {name}')
[codex:836777]             i+=1
[codex:836777] 
[codex:836777] print('Function around 0x112f:')
[codex:836777] disasm(0x112f, 0x1200)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 26ms:
[codex:836777] Function around 0x112f:
[codex:836777] 112f: JUMPDEST
[codex:836777] 1130: PUSH2 0x1137
[codex:836777] 1133: PUSH2 0x1565
[codex:836777] 1136: JUMP
[codex:836777] 1137: JUMPDEST
[codex:836777] 1138: CALLER
[codex:836777] 1139: PUSH1 0x00
[codex:836777] 113b: SWAP1
[codex:836777] 113c: DUP2
[codex:836777] 113d: MSTORE
[codex:836777] 113e: PUSH1 0xd3
[codex:836777] 1140: PUSH1 0x20
[codex:836777] 1142: MSTORE
[codex:836777] 1143: PUSH1 0x40
[codex:836777] 1145: DUP2
[codex:836777] 1146: SHA3
[codex:836777] 1147: SWAP1
[codex:836777] 1148: DUP3
[codex:836777] 1149: SWAP1
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Continuing analysis**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i < len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             name=opnames.get(op, f'OP_{op:02x}')
[codex:836777]             print(f'{i:04x}: {name}')
[codex:836777]             i+=1
[codex:836777] 
[codex:836777] print('Continue 0x1200-0x1260')
[codex:836777] disasm(0x1200,0x1260)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 23ms:
[codex:836777] Continue 0x1200-0x1260
[codex:836777] 1200: EXTCODECOPY
[codex:836777] 1201: JUMP
[codex:836777] 1202: JUMPDEST
[codex:836777] 1203: DUP2
[codex:836777] 1204: DUP2
[codex:836777] 1205: PUSH1 0x01
[codex:836777] 1207: ADD
[codex:836777] 1208: SLOAD
[codex:836777] 1209: PUSH2 0x1212
[codex:836777] 120c: SWAP2
[codex:836777] 120d: SWAP1
[codex:836777] 120e: PUSH2 0x1f95
[codex:836777] 1211: JUMP
[codex:836777] 1212: JUMPDEST
[codex:836777] 1213: PUSH1 0x01
[codex:836777] 1215: DUP3
[codex:836777] 1216: ADD
[codex:836777] 1217: SSTORE
[codex:836777] 1218: DUP1
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing withdrawal function and mapping usage**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # disassemble
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] # disassemble and keep list
[codex:836777] instrs=[]
[codex:836777] i=0
[codex:836777] while i < len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         l=op-0x5f
[codex:836777]         data=bytecode[i+1:i+1+l]
[codex:836777]         instrs.append((i, f'PUSH{l}', data))
[codex:836777]         i+=1+l
[codex:836777]     else:
[codex:836777]         instrs.append((i, opnames.get(op,f'OP_{op:02x}'), None))
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] # find PUSH1 0xd3 occurrences and see nearby SSTORE
[codex:836777] for idx,(off,op,data) in enumerate(instrs):
[codex:836777]     if op=='PUSH1' and data==bytes([0xd3]):
[codex:836777]         # look ahead next 40 instrs for SSTORE
[codex:836777]         window=instrs[idx:idx+60]
[codex:836777]         if any(op2=='SSTORE' for _,op2,_ in window):
[codex:836777]             print('PUSH1 0xd3 at',hex(off),'with SSTORE in next 60')
[codex:836777]             # print context lines
[codex:836777]             for o,op2,d2 in window[:30]:
[codex:836777]                 if d2 is None:
[codex:836777]                     print(f' {o:04x}: {op2}')
[codex:836777]                 else:
[codex:836777]                     print(f' {o:04x}: {op2} 0x{d2.hex()}')
[codex:836777]             print('----')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 28ms:
[codex:836777] PUSH1 0xd3 at 0xde9 with SSTORE in next 60
[codex:836777]  0de9: PUSH1 0xd3
[codex:836777]  0deb: PUSH1 0x20
[codex:836777]  0ded: MSTORE
[codex:836777]  0dee: PUSH1 0x40
[codex:836777]  0df0: DUP2
[codex:836777]  0df1: SHA3
[codex:836777]  0df2: SWAP1
[codex:836777]  0df3: PUSH2 0x0dfb
[codex:836777]  0df6: DUP4
[codex:836777]  0df7: PUSH2 0x1076
[codex:836777]  0dfa: JUMP
[codex:836777]  0dfb: JUMPDEST
[codex:836777]  0dfc: SWAP1
[codex:836777]  0dfd: POP
[codex:836777]  0dfe: PUSH1 0x00
[codex:836777]  0e00: DUP2
[codex:836777]  0e01: GT
[codex:836777]  0e02: PUSH2 0x0e1d
[codex:836777]  0e05: JUMPI
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing function and storage access**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i < len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             name=opnames.get(op, f'OP_{op:02x}')
[codex:836777]             print(f'{i:04x}: {name}')
[codex:836777]             i+=1
[codex:836777] 
[codex:836777] print('Disasm 0xdb2-0xf40')
[codex:836777] disasm(0xdb2, 0xf40)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 23ms:
[codex:836777] Disasm 0xdb2-0xf40
[codex:836777] 0db2: JUMPDEST
[codex:836777] 0db3: PUSH2 0x0dba
[codex:836777] 0db6: PUSH2 0x1565
[codex:836777] 0db9: JUMP
[codex:836777] 0dba: JUMPDEST
[codex:836777] 0dbb: PUSH2 0x0dc2
[codex:836777] 0dbe: PUSH2 0x15be
[codex:836777] 0dc1: JUMP
[codex:836777] 0dc2: JUMPDEST
[codex:836777] 0dc3: PUSH1 0x00
[codex:836777] 0dc5: DUP2
[codex:836777] 0dc6: GT
[codex:836777] 0dc7: PUSH2 0x0de2
[codex:836777] 0dca: JUMPI
[codex:836777] 0dcb: PUSH1 0x40
[codex:836777] 0dcd: MLOAD
[codex:836777] 0dce: PUSH3 0x461bcd
[codex:836777] 0dd2: PUSH1 0xe5
[codex:836777] 0dd4: SHL
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing function calls and keccak needs**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] try:
[codex:836777]     from Crypto.Hash import keccak
[codex:836777]     print('pycryptodome available')
[codex:836777]     k=keccak.new(digest_bits=256)
[codex:836777]     k.update(b'totalSupply()')
[codex:836777]     print(k.hexdigest()[:8])
[codex:836777] except Exception as e:
[codex:836777]     print('no keccak', e)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 43ms:
[codex:836777] pycryptodome available
[codex:836777] 18160ddd
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing function selectors and signatures**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] from Crypto.Hash import keccak
[codex:836777] for sig in ['transfer(address,uint256)','burn(address,uint256)','burnFrom(address,uint256)','transferFrom(address,address,uint256)','withdraw(uint256)','requestWithdraw(uint256)','redeem(uint256)','deposit(uint256)','mint(address,uint256)','approve(address,uint256)','increaseAllowance(address,uint256)','decreaseAllowance(address,uint256)']:
[codex:836777]     k=keccak.new(digest_bits=256)
[codex:836777]     k.update(sig.encode())
[codex:836777]     print(sig, k.hexdigest()[:8])
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 37ms:
[codex:836777] transfer(address,uint256) a9059cbb
[codex:836777] burn(address,uint256) 9dc29fac
[codex:836777] burnFrom(address,uint256) 79cc6790
[codex:836777] transferFrom(address,address,uint256) 23b872dd
[codex:836777] withdraw(uint256) 2e1a7d4d
[codex:836777] requestWithdraw(uint256) 745400c9
[codex:836777] redeem(uint256) db006a75
[codex:836777] deposit(uint256) b6b55f25
[codex:836777] mint(address,uint256) 40c10f19
[codex:836777] approve(address,uint256) 095ea7b3
[codex:836777] increaseAllowance(address,uint256) 39509351
[codex:836777] decreaseAllowance(address,uint256) a457c2d7
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing unknown function signature**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] from Crypto.Hash import keccak
[codex:836777] for sig in ['requestWithdraw(address,uint256)','requestWithdrawal(address,uint256)','withdraw(address,uint256)','redeem(address,uint256)','deposit(address,uint256)','mint(address,uint256)','burn(address,uint256)','queueWithdraw(address,uint256)','queueWithdrawal(address,uint256)','enqueueWithdraw(address,uint256)','transferShares(address,uint256)','withdrawalRequest(address,uint256)','claim(address,uint256)','lock(address,uint256)','unlock(address,uint256)','stake(address,uint256)','unstake(address,uint256)','submit(address,uint256)']:
[codex:836777]     k=keccak.new(digest_bits=256)
[codex:836777]     k.update(sig.encode())
[codex:836777]     print(sig, k.hexdigest()[:8])
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 41ms:
[codex:836777] requestWithdraw(address,uint256) 397a1b28
[codex:836777] requestWithdrawal(address,uint256) da95ebf7
[codex:836777] withdraw(address,uint256) f3fef3a3
[codex:836777] redeem(address,uint256) 1e9a6950
[codex:836777] deposit(address,uint256) 47e7ef24
[codex:836777] mint(address,uint256) 40c10f19
[codex:836777] burn(address,uint256) 9dc29fac
[codex:836777] queueWithdraw(address,uint256) ea4b4ca3
[codex:836777] queueWithdrawal(address,uint256) ecd24bbe
[codex:836777] enqueueWithdraw(address,uint256) 15f00a94
[codex:836777] transferShares(address,uint256) 8fcb4e5b
[codex:836777] withdrawalRequest(address,uint256) 9d2ce6f6
[codex:836777] claim(address,uint256) aad3ec96
[codex:836777] lock(address,uint256) 282d3fdf
[codex:836777] unlock(address,uint256) 7eee288d
[codex:836777] stake(address,uint256) adc9772e
[codex:836777] unstake(address,uint256) c2a672e0
[codex:836777] submit(address,uint256) 203dd666
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Investigating function selectors and storage mappings**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] from textwrap import indent
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] opnames={
[codex:836777]     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:836777]     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:836777]     0x20:'SHA3',
[codex:836777]     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:836777]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:836777]     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:836777]     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:836777]     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:836777]     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:836777]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:836777]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:836777] }
[codex:836777] 
[codex:836777] 
[codex:836777] def disasm(start, end):
[codex:836777]     i=start
[codex:836777]     while i<end and i < len(bytecode):
[codex:836777]         op=bytecode[i]
[codex:836777]         if 0x60 <= op <= 0x7f:
[codex:836777]             l=op-0x5f
[codex:836777]             data=bytecode[i+1:i+1+l]
[codex:836777]             print(f'{i:04x}: PUSH{l} 0x{data.hex()}')
[codex:836777]             i+=1+l
[codex:836777]         else:
[codex:836777]             name=opnames.get(op, f'OP_{op:02x}')
[codex:836777]             print(f'{i:04x}: {name}')
[codex:836777]             i+=1
[codex:836777] 
[codex:836777] print('Init function 0x060e-0x0b80')
[codex:836777] disasm(0x060e,0x0b80)
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 29ms:
[codex:836777] Init function 0x060e-0x0b80
[codex:836777] 060e: JUMPDEST
[codex:836777] 060f: PUSH2 0x0616
[codex:836777] 0612: PUSH2 0x1565
[codex:836777] 0615: JUMP
[codex:836777] 0616: JUMPDEST
[codex:836777] 0617: PUSH2 0x061e
[codex:836777] 061a: PUSH2 0x15be
[codex:836777] 061d: JUMP
[codex:836777] 061e: JUMPDEST
[codex:836777] 061f: CALLVALUE
[codex:836777] 0620: DUP1
[codex:836777] 0621: PUSH2 0x0645
[codex:836777] 0624: JUMPI
[codex:836777] 0625: PUSH1 0x40
[codex:836777] 0627: MLOAD
[codex:836777] 0628: PUSH3 0x461bcd
[codex:836777] 062c: PUSH1 0xe5
[codex:836777] 062e: SHL
[codex:836777] 062f: DUP2
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Analyzing storage slot access for vulnerabilities**
[codex:836777] exec
[codex:836777] /bin/bash -lc "python - <<'PY'
[codex:836777] import re
[codex:836777] code=open('BYTECODE_BUNDLE.txt').read()
[codex:836777] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', code).group(1)[2:]
[codex:836777] bytecode=bytes.fromhex(hexstr)
[codex:836777] 
[codex:836777] # disassemble into list
[codex:836777] opnames={
[codex:836777]     0x55:'SSTORE',0x54:'SLOAD'
[codex:836777] }
[codex:836777] 
[codex:836777] instrs=[]
[codex:836777] i=0
[codex:836777] while i<len(bytecode):
[codex:836777]     op=bytecode[i]
[codex:836777]     if 0x60 <= op <= 0x7f:
[codex:836777]         l=op-0x5f
[codex:836777]         data=bytecode[i+1:i+1+l]
[codex:836777]         instrs.append((i, f'PUSH{l}', data))
[codex:836777]         i+=1+l
[codex:836777]     else:
[codex:836777]         instrs.append((i, opnames.get(op,f'OP_{op:02x}'), None))
[codex:836777]         i+=1
[codex:836777] 
[codex:836777] # find PUSH1 0x33 with SSTORE soon after
[codex:836777] for idx,(off,op,data) in enumerate(instrs):
[codex:836777]     if op=='PUSH1' and data==bytes([0x33]):
[codex:836777]         # look ahead for SSTORE within 40 ops
[codex:836777]         window=instrs[idx:idx+50]
[codex:836777]         if any(op2=='SSTORE' for _,op2,_ in window):
[codex:836777]             print('PUSH1 0x33 at',hex(off))
[codex:836777]             for o,op2,d2 in window[:30]:
[codex:836777]                 if d2 is None:
[codex:836777]                     print(f' {o:04x}: {op2}')
[codex:836777]                 else:
[codex:836777]                     print(f' {o:04x}: {op2} 0x{d2.hex()}')
[codex:836777]             print('---')
[codex:836777] PY" in /tmp/codex-multi-2dmb35p4 succeeded in 29ms:
[codex:836777] PUSH1 0x33 at 0x18d3
[codex:836777]  18d3: PUSH1 0x33
[codex:836777]  18d5: OP_80
[codex:836777]  18d6: SLOAD
[codex:836777]  18d7: PUSH1 0x01
[codex:836777]  18d9: PUSH1 0x01
[codex:836777]  18db: PUSH1 0xa0
[codex:836777]  18dd: OP_1b
[codex:836777]  18de: OP_03
[codex:836777]  18df: OP_83
[codex:836777]  18e0: OP_81
[codex:836777]  18e1: OP_16
[codex:836777]  18e2: PUSH1 0x01
[codex:836777]  18e4: PUSH1 0x01
[codex:836777]  18e6: PUSH1 0xa0
[codex:836777]  18e8: OP_1b
[codex:836777]  18e9: OP_03
[codex:836777]  18ea: OP_19
[codex:836777]  18eb: OP_83
[codex:836777]  18ec: OP_16
[codex:836777] 
[codex:836777] thinking
[codex:836777] **Concluding security assessment**
[codex:836777] 
[codex:836777] I'm verifying no exploitable owner assignment, no reentrancy risks due to proper guards, and no upgrade or self-destruct patterns. Since nothing suspicious appears, I’m preparing a minimal JSON report indicating no findings and a concise summary based on bytecode analysis.
[codex:836777] codex
[codex:836777] {"no_findings":true,"summary":"No concrete, exploitable value extraction path identified from the runtime bytecode bundle.","findings":[]}
[codex:836777] tokens used
[codex:836777] 127,905
[codex:836777] {"no_findings":true,"summary":"No concrete, exploitable value extraction path identified from the runtime bytecode bundle.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-03T23:29:26.306265+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value extraction path identified from the runtime bytecode bundle.",
    "raw_final": {
        "summary": "No concrete, exploitable value extraction path identified from the runtime bytecode bundle.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
12
EXT*/BALANCE
7
Total opcodes
4864
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 0x01fd
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x74899a7e
00000019: GT
0000001a: PUSH2 0x010d
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xabc9653e
00000024: GT
00000025: PUSH2 0x00a0
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd35249c8
0000002f: GT
00000030: PUSH2 0x006f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd35249c8
0000003a: EQ
0000003b: PUSH2 0x0586
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xd79e8567
00000045: EQ
00000046: PUSH2 0x058e
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xefdcd974
00000050: EQ
00000051: PUSH2 0x05ae
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf2fde38b
0000005b: EQ
0000005c: PUSH2 0x05ce
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xf922c0d0
00000066: EQ
00000067: PUSH2 0x05ee
0000006a: JUMPI
0000006b: PUSH1 0x00
0000006d: DUP1
0000006e: REVERT
0000006f: JUMPDEST
00000070: DUP1
00000071: PUSH4 0xabc9653e
00000076: EQ
00000077: PUSH2 0x0506
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xb179b465
00000081: EQ
00000082: PUSH2 0x0526
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xb3f00674
0000008c: EQ
0000008d: PUSH2 0x0546
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0xc553173f
00000097: EQ
00000098: PUSH2 0x0566
0000009b: JUMPI
0000009c: PUSH1 0x00
0000009e: DUP1
0000009f: REVERT
000000a0: JUMPDEST
000000a1: DUP1
000000a2: PUSH4 0x8da5cb5b
000000a7: GT
000000a8: PUSH2 0x00dc
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x8da5cb5b
000000b2: EQ
000000b3: PUSH2 0x049c
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x978bbdb9
000000bd: EQ
000000be: PUSH2 0x04ba
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x996e5c06
000000c8: EQ
000000c9: PUSH2 0x04d0
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0xa24bcf46
000000d3: EQ
000000d4: PUSH2 0x04e6
000000d7: JUMPI
000000d8: PUSH1 0x00
000000da: DUP1
000000db: REVERT
000000dc: JUMPDEST
000000dd: DUP1
000000de: PUSH4 0x74899a7e
000000e3: EQ
000000e4: PUSH2 0x03fe
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x74de4ec4
000000ee: EQ
000000ef: PUSH2 0x041e
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x7a9262a2
000000f9: EQ
000000fa: PUSH2 0x043e
000000fd: JUMPI
000000fe: DUP1
000000ff: PUSH4 0x8456cb59
00000104: EQ
00000105: PUSH2 0x0487
00000108: JUMPI
00000109: PUSH1 0x00
0000010b: DUP1
0000010c: REVERT
0000010d: JUMPDEST
0000010e: DUP1
0000010f: PUSH4 0x4e6fd6c4
00000114: GT
00000115: PUSH2 0x0190
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x5c975abb
0000011f: GT
00000120: PUSH2 0x015f
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x5c975abb
0000012a: EQ
0000012b: PUSH2 0x037b
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x5f4c71f1
00000135: EQ
00000136: PUSH2 0x039e
00000139: JUMPI
0000013a: DUP1
0000013b: PUSH4 0x63ea1b92
00000140: EQ
00000141: PUSH2 0x03b3
00000144: JUMPI
00000145: DUP1
00000146: PUSH4 0x69d42148
0000014b: EQ
0000014c: PUSH2 0x03c9
0000014f: JUMPI
00000150: DUP1
00000151: PUSH4 0x715018a6
00000156: EQ
00000157: PUSH2 0x03e9
0000015a: JUMPI
0000015b: PUSH1 0x00
0000015d: DUP1
0000015e: REVERT
0000015f: JUMPDEST
00000160: DUP1
00000161: PUSH4 0x4e6fd6c4
00000166: EQ
00000167: PUSH2 0x0309
0000016a: JUMPI
0000016b: DUP1
0000016c: PUSH4 0x52a630b9
00000171: EQ
00000172: PUSH2 0x031f
00000175: JUMPI
00000176: DUP1
00000177: PUSH4 0x5a70ad28
0000017c: EQ
0000017d: PUSH2 0x033f
00000180: JUMPI
00000181: DUP1
00000182: PUSH4 0x5baa7509
00000187: EQ
00000188: PUSH2 0x035b
0000018b: JUMPI
0000018c: PUSH1 0x00
0000018e: DUP1
0000018f: REVERT
00000190: JUMPDEST
00000191: DUP1
00000192: PUSH4 0x1ec01fcd
00000197: GT
00000198: PUSH2 0x01cc
0000019b: JUMPI
0000019c: DUP1
0000019d: PUSH4 0x1ec01fcd
000001a2: EQ
000001a3: PUSH2 0x0294
000001a6: JUMPI
000001a7: DUP1
000001a8: PUSH4 0x22f808d5
000001ad: EQ
000001ae: PUSH2 0x02b4
000001b1: JUMPI
000001b2: DUP1
000001b3: PUSH4 0x3f4ba83a
000001b8: EQ
000001b9: PUSH2 0x02d4
000001bc: JUMPI
000001bd: DUP1
000001be: PUSH4 0x45596e2e
000001c3: EQ
000001c4: PUSH2 0x02e9
000001c7: JUMPI
000001c8: PUSH1 0x00
000001ca: DUP1
000001cb: REVERT
000001cc: JUMPDEST
000001cd: DUP1
000001ce: PUSH4 0x104e9929
000001d3: EQ
000001d4: PUSH2 0x0209
000001d7: JUMPI
000001d8: DUP1
000001d9: PUSH4 0x1249c58b
000001de: EQ
000001df: PUSH2 0x0232
000001e2: JUMPI
000001e3: DUP1
000001e4: PUSH4 0x1460e390
000001e9: EQ
000001ea: PUSH2 0x023c
000001ed: JUMPI
000001ee: DUP1
000001ef: PUSH4 0x193a225c
000001f4: EQ
000001f5: PUSH2 0x025c
000001f8: JUMPI
000001f9: PUSH1 0x00
000001fb: DUP1
000001fc: REVERT
000001fd: JUMPDEST
000001fe: CALLDATASIZE
000001ff: PUSH2 0x0204
00000202: JUMPI
00000203: STOP
00000204: JUMPDEST
00000205: PUSH1 0x00
00000207: DUP1
00000208: REVERT
00000209: JUMPDEST
0000020a: CALLVALUE
0000020b: DUP1
0000020c: ISZERO
0000020d: PUSH2 0x0215
00000210: JUMPI
00000211: PUSH1 0x00
00000213: DUP1
00000214: REVERT
00000215: JUMPDEST
00000216: POP
00000217: PUSH2 0x021f
0000021a: PUSH1 0xcf
0000021c: SLOAD
0000021d: DUP2
0000021e: JUMP
0000021f: JUMPDEST
00000220: PUSH1 0x40
00000222: MLOAD
00000223: SWAP1
00000224: DUP2
00000225: MSTORE
00000226: PUSH1 0x20
00000228: ADD
00000229: JUMPDEST
0000022a: PUSH1 0x40
0000022c: MLOAD
0000022d: DUP1
0000022e: SWAP2
0000022f: SUB
00000230: SWAP1
00000231: RETURN
00000232: JUMPDEST
00000233: PUSH2 0x023a
00000236: PUSH2 0x060e
00000239: JUMP
0000023a: JUMPDEST
0000023b: STOP
0000023c: JUMPDEST
0000023d: CALLVALUE
0000023e: DUP1
0000023f: ISZERO
00000240: PUSH2 0x0248
00000243: JUMPI
00000244: PUSH1 0x00
00000246: DUP1
00000247: REVERT
00000248: JUMPDEST
00000249: POP
0000024a: PUSH2 0x023a
0000024d: PUSH2 0x0257
00000250: CALLDATASIZE
00000251: PUSH1 0x04
00000253: PUSH2 0x1e44
00000256: JUMP
00000257: JUMPDEST
00000258: PUSH2 0x0791
0000025b: JUMP
0000025c: JUMPDEST
0000025d: CALLVALUE
0000025e: DUP1
0000025f: ISZERO
00000260: PUSH2 0x0268
00000263: JUMPI
00000264: PUSH1 0x00
00000266: DUP1
00000267: REVERT
00000268: JUMPDEST
00000269: POP
0000026a: PUSH1 0xca
0000026c: SLOAD
0000026d: PUSH2 0x027c
00000270: SWAP1
00000271: PUSH1 0x01
00000273: PUSH1 0x01
00000275: PUSH1 0xa0
00000277: SHL
00000278: SUB
00000279: AND
0000027a: DUP2
0000027b: JUMP
0000027c: JUMPDEST
0000027d: PUSH1 0x40
0000027f: MLOAD
00000280: PUSH1 0x01
00000282: PUSH1 0x01
00000284: PUSH1 0xa0
00000286: SHL
00000287: SUB
00000288: SWAP1
00000289: SWAP2
0000028a: AND
0000028b: DUP2
0000028c: MSTORE
0000028d: PUSH1 0x20
0000028f: ADD
00000290: PUSH2 0x0229
00000293: JUMP
00000294: JUMPDEST
00000295: CALLVALUE
00000296: DUP1
00000297: ISZERO
00000298: PUSH2 0x02a0
0000029b: JUMPI
0000029c: PUSH1 0x00
0000029e: DUP1
0000029f: REVERT
000002a0: JUMPDEST
000002a1: POP
000002a2: PUSH1 0xc9
000002a4: SLOAD
000002a5: PUSH2 0x027c
000002a8: SWAP1
000002a9: PUSH1 0x01
000002ab: PUSH1 0x01
000002ad: PUSH1 0xa0
000002af: SHL
000002b0: SUB
000002b1: AND
000002b2: DUP2
000002b3: JUMP
000002b4: JUMPDEST
000002b5: CALLVALUE
000002b6: DUP1
000002b7: ISZERO
000002b8: PUSH2 0x02c0
000002bb: JUMPI
000002bc: PUSH1 0x00
000002be: DUP1
000002bf: REVERT
000002c0: JUMPDEST
000002c1: POP
000002c2: PUSH1 0xcb
000002c4: SLOAD
000002c5: PUSH2 0x027c
000002c8: SWAP1
000002c9: PUSH1 0x01
000002cb: PUSH1 0x01
000002cd: PUSH1 0xa0
000002cf: SHL
000002d0: SUB
000002d1: AND
000002d2: DUP2
000002d3: JUMP
000002d4: JUMPDEST
000002d5: CALLVALUE
000002d6: DUP1
000002d7: ISZERO
000002d8: PUSH2 0x02e0
000002db: JUMPI
000002dc: PUSH1 0x00
000002de: DUP1
000002df: REVERT
000002e0: JUMPDEST
000002e1: POP
000002e2: PUSH2 0x023a
000002e5: PUSH2 0x0bc5
000002e8: JUMP
000002e9: JUMPDEST
000002ea: CALLVALUE
000002eb: DUP1
000002ec: ISZERO
000002ed: PUSH2 0x02f5
000002f0: JUMPI
000002f1: PUSH1 0x00
000002f3: DUP1
000002f4: REVERT
000002f5: JUMPDEST
000002f6: POP
000002f7: PUSH2 0x023a
000002fa: PUSH2 0x0304
000002fd: CALLDATASIZE
000002fe: PUSH1 0x04
00000300: PUSH2 0x1ec3
00000303: JUMP
00000304: JUMPDEST
00000305: PUSH2 0x0bd5
00000308: JUMP
00000309: JUMPDEST
0000030a: CALLVALUE
0000030b: DUP1
0000030c: ISZERO
0000030d: PUSH2 0x0315
00000310: JUMPI
00000311: PUSH1 0x00
00000313: DUP1
00000314: REVERT
00000315: JUMPDEST
00000316: POP
00000317: PUSH2 0x027c
0000031a: PUSH2 0xdead
0000031d: DUP2
0000031e: JUMP
0000031f: JUMPDEST
00000320: CALLVALUE
00000321: DUP1
00000322: ISZERO
00000323: PUSH2 0x032b
00000326: JUMPI
00000327: PUSH1 0x00
00000329: DUP1
0000032a: REVERT
0000032b: JUMPDEST
0000032c: POP
0000032d: PUSH2 0x021f
00000330: PUSH2 0x033a
00000333: CALLDATASIZE
00000334: PUSH1 0x04
00000336: PUSH2 0x1edc
00000339: JUMP
0000033a: JUMPDEST
0000033b: PUSH2 0x0be9
0000033e: JUMP
0000033f: JUMPDEST
00000340: CALLVALUE
00000341: DUP1
00000342: ISZERO
00000343: PUSH2 0x034b
00000346: JUMPI
00000347: PUSH1 0x00
00000349: DUP1
0000034a: REVERT
0000034b: JUMPDEST
0000034c: POP
0000034d: PUSH2 0x021f
00000350: PUSH8 0x0de0b6b3a7640000
00000359: DUP2
0000035a: JUMP
0000035b: JUMPDEST
0000035c: CALLVALUE
0000035d: DUP1
0000035e: ISZERO
0000035f: PUSH2 0x0367
00000362: JUMPI
00000363: PUSH1 0x00
00000365: DUP1
00000366: REVERT
00000367: JUMPDEST
00000368: POP
00000369: PUSH2 0x023a
0000036c: PUSH2 0x0376
0000036f: CALLDATASIZE
00000370: PUSH1 0x04
00000372: PUSH2 0x1ec3
00000375: JUMP
00000376: JUMPDEST
00000377: PUSH2 0x0c7e
0000037a: JUMP
0000037b: JUMPDEST
0000037c: CALLVALUE
0000037d: DUP1
0000037e: ISZERO
0000037f: PUSH2 0x0387
00000382: JUMPI
00000383: PUSH1 0x00
00000385: DUP1
00000386: REVERT
00000387: JUMPDEST
00000388: POP
00000389: PUSH1 0x97
0000038b: SLOAD
0000038c: PUSH1 0xff
0000038e: AND
0000038f: PUSH1 0x40
00000391: MLOAD
00000392: SWAP1
00000393: ISZERO
00000394: ISZERO
00000395: DUP2
00000396: MSTORE
00000397: PUSH1 0x20
00000399: ADD
0000039a: PUSH2 0x0229
0000039d: JUMP
0000039e: JUMPDEST
0000039f: CALLVALUE
000003a0: DUP1
000003a1: ISZERO
000003a2: PUSH2 0x03aa
000003a5: JUMPI
000003a6: PUSH1 0x00
000003a8: DUP1
000003a9: REVERT
000003aa: JUMPDEST
000003ab: POP
000003ac: PUSH2 0x021f
000003af: PUSH2 0x0d8b
000003b2: JUMP
000003b3: JUMPDEST
000003b4: CALLVALUE
000003b5: DUP1
000003b6: ISZERO
000003b7: PUSH2 0x03bf
000003ba: JUMPI
000003bb: PUSH1 0x00
000003bd: DUP1
000003be: REVERT
000003bf: JUMPDEST
000003c0: POP
000003c1: PUSH2 0x021f
000003c4: PUSH1 0xd2
000003c6: SLOAD
000003c7: DUP2
000003c8: JUMP
000003c9: JUMPDEST
000003ca: CALLVALUE
000003cb: DUP1
000003cc: ISZERO
000003cd: PUSH2 0x03d5
000003d0: JUMPI
000003d1: PUSH1 0x00
000003d3: DUP1
000003d4: REVERT
000003d5: JUMPDEST
000003d6: POP
000003d7: PUSH1 0xcd
000003d9: SLOAD
000003da: PUSH2 0x027c
000003dd: SWAP1
000003de: PUSH1 0x01
000003e0: PUSH1 0x01
000003e2: PUSH1 0xa0
000003e4: SHL
000003e5: SUB
000003e6: AND
000003e7: DUP2
000003e8: JUMP
000003e9: JUMPDEST
000003ea: CALLVALUE
000003eb: DUP1
000003ec: ISZERO
000003ed: PUSH2 0x03f5
000003f0: JUMPI
000003f1: PUSH1 0x00
000003f3: DUP1
000003f4: REVERT
000003f5: JUMPDEST
000003f6: POP
000003f7: PUSH2 0x023a
000003fa: PUSH2 0x0da0
000003fd: JUMP
000003fe: JUMPDEST
000003ff: CALLVALUE
00000400: DUP1
00000401: ISZERO
00000402: PUSH2 0x040a
00000405: JUMPI
00000406: PUSH1 0x00
00000408: DUP1
00000409: REVERT
0000040a: JUMPDEST
0000040b: POP
0000040c: PUSH2 0x023a
0000040f: PUSH2 0x0419
00000412: CALLDATASIZE
00000413: PUSH1 0x04
00000415: PUSH2 0x1ec3
00000418: JUMP
00000419: JUMPDEST
0000041a: PUSH2 0x0db2
0000041d: JUMP
0000041e: JUMPDEST
0000041f: CALLVALUE
00000420: DUP1
00000421: ISZERO
00000422: PUSH2 0x042a
00000425: JUMPI
00000426: PUSH1 0x00
00000428: DUP1
00000429: REVERT
0000042a: JUMPDEST
0000042b: POP
0000042c: PUSH2 0x023a
0000042f: PUSH2 0x0439
00000432: CALLDATASIZE
00000433: PUSH1 0x04
00000435: PUSH2 0x1ec3
00000438: JUMP
00000439: JUMPDEST
0000043a: PUSH2 0x0f04
0000043d: JUMP
0000043e: JUMPDEST
0000043f: CALLVALUE
00000440: DUP1
00000441: ISZERO
00000442: PUSH2 0x044a
00000445: JUMPI
00000446: PUSH1 0x00
00000448: DUP1
00000449: REVERT
0000044a: JUMPDEST
0000044b: POP
0000044c: PUSH2 0x0472
0000044f: PUSH2 0x0459
00000452: CALLDATASIZE
00000453: PUSH1 0x04
00000455: PUSH2 0x1edc
00000458: JUMP
00000459: JUMPDEST
0000045a: PUSH1 0xd3
0000045c: PUSH1 0x20
0000045e: MSTORE
0000045f: PUSH1 0x00
00000461: SWAP1
00000462: DUP2
00000463: MSTORE
00000464: PUSH1 0x40
00000466: SWAP1
00000467: KECCAK256
00000468: DUP1
00000469: SLOAD
0000046a: PUSH1 0x01
0000046c: SWAP1
0000046d: SWAP2
0000046e: ADD
0000046f: SLOAD
00000470: DUP3
00000471: JUMP
00000472: JUMPDEST
00000473: PUSH1 0x40
00000475: DUP1
00000476: MLOAD
00000477: SWAP3
00000478: DUP4
00000479: MSTORE
0000047a: PUSH1 0x20
0000047c: DUP4
0000047d: ADD
0000047e: SWAP2
0000047f: SWAP1
00000480: SWAP2
00000481: MSTORE
00000482: ADD
00000483: PUSH2 0x0229
00000486: JUMP
00000487: JUMPDEST
00000488: CALLVALUE
00000489: DUP1
0000048a: ISZERO
0000048b: PUSH2 0x0493
0000048e: JUMPI
0000048f: PUSH1 0x00
00000491: DUP1
00000492: REVERT
00000493: JUMPDEST
00000494: POP
00000495: PUSH2 0x023a
00000498: PUSH2 0x1066
0000049b: JUMP
0000049c: JUMPDEST
0000049d: CALLVALUE
0000049e: DUP1
0000049f: ISZERO
000004a0: PUSH2 0x04a8
000004a3: JUMPI
000004a4: PUSH1 0x00
000004a6: DUP1
000004a7: REVERT
000004a8: JUMPDEST
000004a9: POP
000004aa: PUSH1 0x33
000004ac: SLOAD
000004ad: PUSH1 0x01
000004af: PUSH1 0x01
000004b1: PUSH1 0xa0
000004b3: SHL
000004b4: SUB
000004b5: AND
000004b6: PUSH2 0x027c
000004b9: JUMP
000004ba: JUMPDEST
000004bb: CALLVALUE
000004bc: DUP1
000004bd: ISZERO
000004be: PUSH2 0x04c6
000004c1: JUMPI
000004c2: PUSH1 0x00
000004c4: DUP1
000004c5: REVERT
000004c6: JUMPDEST
000004c7: POP
000004c8: PUSH2 0x021f
000004cb: PUSH1 0xd0
000004cd: SLOAD
000004ce: DUP2
000004cf: JUMP
000004d0: JUMPDEST
000004d1: CALLVALUE
000004d2: DUP1
000004d3: ISZERO
000004d4: PUSH2 0x04dc
000004d7: JUMPI
000004d8: PUSH1 0x00
000004da: DUP1
000004db: REVERT
000004dc: JUMPDEST
000004dd: POP
000004de: PUSH2 0x021f
000004e1: PUSH1 0xd1
000004e3: SLOAD
000004e4: DUP2
000004e5: JUMP
000004e6: JUMPDEST
000004e7: CALLVALUE
000004e8: DUP1
000004e9: ISZERO
000004ea: PUSH2 0x04f2
000004ed: JUMPI
000004ee: PUSH1 0x00
000004f0: DUP1
000004f1: REVERT
000004f2: JUMPDEST
000004f3: POP
000004f4: PUSH2 0x021f
000004f7: PUSH2 0x0501
000004fa: CALLDATASIZE
000004fb: PUSH1 0x04
000004fd: PUSH2 0x1ec3
00000500: JUMP
00000501: JUMPDEST
00000502: PUSH2 0x1076
00000505: JUMP
00000506: JUMPDEST
00000507: CALLVALUE
00000508: DUP1
00000509: ISZERO
0000050a: PUSH2 0x0512
0000050d: JUMPI
0000050e: PUSH1 0x00
00000510: DUP1
00000511: REVERT
00000512: JUMPDEST
00000513: POP
00000514: PUSH2 0x023a
00000517: PUSH2 0x0521
0000051a: CALLDATASIZE
0000051b: PUSH1 0x04
0000051d: PUSH2 0x1ec3
00000520: JUMP
00000521: JUMPDEST
00000522: PUSH2 0x112f
00000525: JUMP
00000526: JUMPDEST
00000527: CALLVALUE
00000528: DUP1
00000529: ISZERO
0000052a: PUSH2 0x0532
0000052d: JUMPI
0000052e: PUSH1 0x00
00000530: DUP1
00000531: REVERT
00000532: JUMPDEST
00000533: POP
00000534: PUSH2 0x021f
00000537: PUSH2 0x0541
0000053a: CALLDATASIZE
0000053b: PUSH1 0x04
0000053d: PUSH2 0x1ec3
00000540: JUMP
00000541: JUMPDEST
00000542: PUSH2 0x1281
00000545: JUMP
00000546: JUMPDEST
00000547: CALLVALUE
00000548: DUP1
00000549: ISZERO
0000054a: PUSH2 0x0552
0000054d: JUMPI
0000054e: PUSH1 0x00
00000550: DUP1
00000551: REVERT
00000552: JUMPDEST
00000553: POP
00000554: PUSH1 0xce
00000556: SLOAD
00000557: PUSH2 0x027c
0000055a: SWAP1
0000055b: PUSH1 0x01
0000055d: PUSH1 0x01
0000055f: PUSH1 0xa0
00000561: SHL
00000562: SUB
00000563: AND
00000564: DUP2
00000565: JUMP
00000566: JUMPDEST
00000567: CALLVALUE
00000568: DUP1
00000569: ISZERO
0000056a: PUSH2 0x0572
0000056d: JUMPI
0000056e: PUSH1 0x00
00000570: DUP1
00000571: REVERT
00000572: JUMPDEST
00000573: POP
00000574: PUSH2 0x023a
00000577: PUSH2 0x0581
0000057a: CALLDATASIZE
0000057b: PUSH1 0x04
0000057d: PUSH2 0x1ec3
00000580: JUMP
00000581: JUMPDEST
00000582: PUSH2 0x1325
00000585: JUMP
00000586: JUMPDEST
00000587: PUSH2 0x023a
0000058a: PUSH2 0x1437
0000058d: JUMP
0000058e: JUMPDEST
0000058f: CALLVALUE
00000590: DUP1
00000591: ISZERO
00000592: PUSH2 0x059a
00000595: JUMPI
00000596: PUSH1 0x00
00000598: DUP1
00000599: REVERT
0000059a: JUMPDEST
0000059b: POP
0000059c: PUSH2 0x023a
0000059f: PUSH2 0x05a9
000005a2: CALLDATASIZE
000005a3: PUSH1 0x04
000005a5: PUSH2 0x1efe
000005a8: JUMP
000005a9: JUMPDEST
000005aa: PUSH2 0x14c8
000005ad: JUMP
000005ae: JUMPDEST
000005af: CALLVALUE
000005b0: DUP1
000005b1: ISZERO
000005b2: PUSH2 0x05ba
000005b5: JUMPI
000005b6: PUSH1 0x00
000005b8: DUP1
000005b9: REVERT
000005ba: JUMPDEST
000005bb: POP
000005bc: PUSH2 0x023a
000005bf: PUSH2 0x05c9
000005c2: CALLDATASIZE
000005c3: PUSH1 0x04
000005c5: PUSH2 0x1edc
000005c8: JUMP
000005c9: JUMPDEST
000005ca: PUSH2 0x14de
000005cd: JUMP
000005ce: JUMPDEST
000005cf: CALLVALUE
000005d0: DUP1
000005d1: ISZERO
000005d2: PUSH2 0x05da
000005d5: JUMPI
000005d6: PUSH1 0x00
000005d8: DUP1
000005d9: REVERT
000005da: JUMPDEST
000005db: POP
000005dc: PUSH2 0x023a
000005df: PUSH2 0x05e9
000005e2: CALLDATASIZE
000005e3: PUSH1 0x04
000005e5: PUSH2 0x1edc
000005e8: JUMP
000005e9: JUMPDEST
000005ea: PUSH2 0x14ef
000005ed: JUMP
000005ee: JUMPDEST
000005ef: CALLVALUE
000005f0: DUP1
000005f1: ISZERO
000005f2: PUSH2 0x05fa
000005f5: JUMPI
000005f6: PUSH1 0x00
000005f8: DUP1
000005f9: REVERT
000005fa: JUMPDEST
000005fb: POP
000005fc: PUSH1 0xcc
000005fe: SLOAD
000005ff: PUSH2 0x027c
00000602: SWAP1
00000603: PUSH1 0x01
00000605: PUSH1 0x01
00000607: PUSH1 0xa0
00000609: SHL
0000060a: SUB
0000060b: AND
0000060c: DUP2
0000060d: JUMP
0000060e: JUMPDEST
0000060f: PUSH2 0x0616
00000612: PUSH2 0x1565
00000615: JUMP
00000616: JUMPDEST
00000617: PUSH2 0x061e
0000061a: PUSH2 0x15be
0000061d: JUMP
0000061e: JUMPDEST
0000061f: CALLVALUE
00000620: DUP1
00000621: PUSH2 0x0645
00000624: JUMPI
00000625: PUSH1 0x40
00000627: MLOAD
00000628: PUSH3 0x461bcd
0000062c: PUSH1 0xe5
0000062e: SHL
0000062f: DUP2
00000630: MSTORE
00000631: PUSH1 0x04
00000633: ADD
00000634: PUSH2 0x063c
00000637: SWAP1
00000638: PUSH2 0x1f28
0000063b: JUMP
0000063c: JUMPDEST
0000063d: PUSH1 0x40
0000063f: MLOAD
00000640: DUP1
00000641: SWAP2
00000642: SUB
00000643: SWAP1
00000644: REVERT
00000645: JUMPDEST
00000646: PUSH1 0x00
00000648: PUSH2 0x0650
0000064b: DUP3
0000064c: PUSH2 0x1281
0000064f: JUMP
00000650: JUMPDEST
00000651: SWAP1
00000652: POP
00000653: PUSH1 0x00
00000655: DUP2
00000656: GT
00000657: PUSH2 0x0672
0000065a: JUMPI
0000065b: PUSH1 0x40
0000065d: MLOAD
0000065e: PUSH3 0x461bcd
00000662: PUSH1 0xe5
00000664: SHL
00000665: DUP2
00000666: MSTORE
00000667: PUSH1 0x04
00000669: ADD
0000066a: PUSH2 0x063c
0000066d: SWAP1
0000066e: PUSH2 0x1f28
00000671: JUMP
00000672: JUMPDEST
00000673: DUP2
00000674: PUSH1 0xcf
00000676: SLOAD
00000677: PUSH2 0x0680
0000067a: SWAP2
0000067b: SWAP1
0000067c: PUSH2 0x1f63
0000067f: JUMP
00000680: JUMPDEST
00000681: PUSH1 0xcf
00000683: SSTORE
00000684: PUSH1 0xcb
00000686: SLOAD
00000687: PUSH1 0x40
00000689: DUP1
0000068a: MLOAD
0000068b: PUSH4 0xf6326fb3
00000690: PUSH1 0xe0
00000692: SHL
00000693: DUP2
00000694: MSTORE
00000695: SWAP1
00000696: MLOAD
00000697: PUSH1 0x01
00000699: PUSH1 0x01
0000069b: PUSH1 0xa0
0000069d: SHL
0000069e: SUB
0000069f: SWAP1
000006a0: SWAP3
000006a1: AND
000006a2: SWAP2
000006a3: PUSH4 0xf6326fb3
000006a8: SWAP2
000006a9: DUP6
000006aa: SWAP2
000006ab: PUSH1 0x04
000006ad: DUP1
000006ae: DUP4
000006af: ADD
000006b0: SWAP3
000006b1: PUSH1 0x00
000006b3: SWAP3
000006b4: SWAP2
000006b5: SWAP1
000006b6: DUP3
000006b7: SWAP1
000006b8: SUB
000006b9: ADD
000006ba: DUP2
000006bb: DUP6
000006bc: DUP9
000006bd: DUP1
000006be: EXTCODESIZE
000006bf: ISZERO
000006c0: DUP1
000006c1: ISZERO
000006c2: PUSH2 0x06ca
000006c5: JUMPI
000006c6: PUSH1 0x00
000006c8: DUP1
000006c9: REVERT
000006ca: JUMPDEST
000006cb: POP
000006cc: GAS
000006cd: CALL
000006ce: ISZERO
000006cf: DUP1
000006d0: ISZERO
000006d1: PUSH2 0x06de
000006d4: JUMPI
000006d5: RETURNDATASIZE
000006d6: PUSH1 0x00
000006d8: DUP1
000006d9: RETURNDATACOPY
000006da: RETURNDATASIZE
000006db: PUSH1 0x00
000006dd: REVERT
000006de: JUMPDEST
000006df: POP
000006e0: POP
000006e1: PUSH1 0xca
000006e3: SLOAD
000006e4: PUSH1 0x40
000006e6: MLOAD
000006e7: PUSH4 0x40c10f19
000006ec: PUSH1 0xe0
000006ee: SHL
000006ef: DUP2
000006f0: MSTORE
000006f1: CALLER
000006f2: PUSH1 0x04
000006f4: DUP3
000006f5: ADD
000006f6: MSTORE
000006f7: PUSH1 0x24
000006f9: DUP2
000006fa: ADD
000006fb: DUP7
000006fc: SWAP1
000006fd: MSTORE
000006fe: PUSH1 0x01
00000700: PUSH1 0x01
00000702: PUSH1 0xa0
00000704: SHL
00000705: SUB
00000706: SWAP1
00000707: SWAP2
00000708: AND
00000709: SWAP4
0000070a: POP
0000070b: PUSH4 0x40c10f19
00000710: SWAP3
00000711: POP
00000712: PUSH1 0x44
00000714: ADD
00000715: SWAP1
00000716: POP
00000717: PUSH1 0x00
00000719: PUSH1 0x40
0000071b: MLOAD
0000071c: DUP1
0000071d: DUP4
0000071e: SUB
0000071f: DUP2
00000720: PUSH1 0x00
00000722: DUP8
00000723: DUP1
00000724: EXTCODESIZE
00000725: ISZERO
00000726: DUP1
00000727: ISZERO
00000728: PUSH2 0x0730
0000072b: JUMPI
0000072c: PUSH1 0x00
0000072e: DUP1
0000072f: REVERT
00000730: JUMPDEST
00000731: POP
00000732: GAS
00000733: CALL
00000734: ISZERO
00000735: DUP1
00000736: ISZERO
00000737: PUSH2 0x0744
0000073a: JUMPI
0000073b: RETURNDATASIZE
0000073c: PUSH1 0x00
0000073e: DUP1
0000073f: RETURNDATACOPY
00000740: RETURNDATASIZE
00000741: PUSH1 0x00
00000743: REVERT
00000744: JUMPDEST
00000745: POP
00000746: POP
00000747: PUSH1 0x40
00000749: DUP1
0000074a: MLOAD
0000074b: DUP6
0000074c: DUP2
0000074d: MSTORE
0000074e: PUSH1 0x20
00000750: DUP2
00000751: ADD
00000752: DUP6
00000753: SWAP1
00000754: MSTORE
00000755: CALLER
00000756: SWAP4
00000757: POP
00000758: PUSH32 0x73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca
00000779: SWAP3
0000077a: POP
0000077b: ADD
0000077c: PUSH1 0x40
0000077e: MLOAD
0000077f: DUP1
00000780: SWAP2
00000781: SUB
00000782: SWAP1
00000783: LOG2
00000784: POP
00000785: POP
00000786: PUSH2 0x078f
00000789: PUSH1 0x01
0000078b: PUSH1 0x65
0000078d: SSTORE
0000078e: JUMP
0000078f: JUMPDEST
00000790: JUMP
00000791: JUMPDEST
00000792: PUSH1 0x00
00000794: SLOAD
00000795: PUSH2 0x0100
00000798: SWAP1
00000799: DIV
0000079a: PUSH1 0xff
0000079c: AND
0000079d: ISZERO
0000079e: DUP1
0000079f: DUP1
000007a0: ISZERO
000007a1: PUSH2 0x07b1
000007a4: JUMPI
000007a5: POP
000007a6: PUSH1 0x00
000007a8: SLOAD
000007a9: PUSH1 0x01
000007ab: PUSH1 0xff
000007ad: SWAP1
000007ae: SWAP2
000007af: AND
000007b0: LT
000007b1: JUMPDEST
000007b2: DUP1
000007b3: PUSH2 0x07cb
000007b6: JUMPI
000007b7: POP
000007b8: ADDRESS
000007b9: EXTCODESIZE
000007ba: ISZERO
000007bb: DUP1
000007bc: ISZERO
000007bd: PUSH2 0x07cb
000007c0: JUMPI
000007c1: POP
000007c2: PUSH1 0x00
000007c4: SLOAD
000007c5: PUSH1 0xff
000007c7: AND
000007c8: PUSH1 0x01
000007ca: EQ
000007cb: JUMPDEST
000007cc: PUSH2 0x082e
000007cf: JUMPI
000007d0: PUSH1 0x40
000007d2: MLOAD
000007d3: PUSH3 0x461bcd
000007d7: PUSH1 0xe5
000007d9: SHL
000007da: DUP2
000007db: MSTORE
000007dc: PUSH1 0x20
000007de: PUSH1 0x04
000007e0: DUP3
000007e1: ADD
000007e2: MSTORE
000007e3: PUSH1 0x2e
000007e5: PUSH1 0x24
000007e7: DUP3
000007e8: ADD
000007e9: MSTORE
000007ea: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
0000080b: PUSH1 0x44
0000080d: DUP3
0000080e: ADD
0000080f: MSTORE
00000810: PUSH14 0x191e481a5b9a5d1a585b1a5e9959
0000081f: PUSH1 0x92
00000821: SHL
00000822: PUSH1 0x64
00000824: DUP3
00000825: ADD
00000826: MSTORE
00000827: PUSH1 0x84
00000829: ADD
0000082a: PUSH2 0x063c
0000082d: JUMP
0000082e: JUMPDEST
0000082f: PUSH1 0x00
00000831: DUP1
00000832: SLOAD
00000833: PUSH1 0xff
00000835: NOT
00000836: AND
00000837: PUSH1 0x01
00000839: OR
0000083a: SWAP1
0000083b: SSTORE
0000083c: DUP1
0000083d: ISZERO
0000083e: PUSH2 0x0851
00000841: JUMPI
00000842: PUSH1 0x00
00000844: DUP1
00000845: SLOAD
00000846: PUSH2 0xff00
00000849: NOT
0000084a: AND
0000084b: PUSH2 0x0100
0000084e: OR
0000084f: SWAP1
00000850: SSTORE
00000851: JUMPDEST
00000852: PUSH1 0x01
00000854: PUSH1 0x01
00000856: PUSH1 0xa0
00000858: SHL
00000859: SUB
0000085a: DUP9
0000085b: AND
0000085c: PUSH2 0x0897
0000085f: JUMPI
00000860: PUSH1 0x40
00000862: MLOAD
00000863: PUSH3 0x461bcd
00000867: PUSH1 0xe5
00000869: SHL
0000086a: DUP2
0000086b: MSTORE
0000086c: PUSH1 0x20
0000086e: PUSH1 0x04
00000870: DUP3
00000871: ADD
00000872: MSTORE
00000873: PUSH1 0x0d
00000875: PUSH1 0x24
00000877: DUP3
00000878: ADD
00000879: MSTORE
0000087a: PUSH13 0x496e76616c6964207645544831
00000888: PUSH1 0x98
0000088a: SHL
0000088b: PUSH1 0x44
0000088d: DUP3
0000088e: ADD
0000088f: MSTORE
00000890: PUSH1 0x64
00000892: ADD
00000893: PUSH2 0x063c
00000896: JUMP
00000897: JUMPDEST
00000898: PUSH1 0x01
0000089a: PUSH1 0x01
0000089c: PUSH1 0xa0
0000089e: SHL
0000089f: SUB
000008a0: DUP8
000008a1: AND
000008a2: PUSH2 0x08dd
000008a5: JUMPI
000008a6: PUSH1 0x40
000008a8: MLOAD
000008a9: PUSH3 0x461bcd
000008ad: PUSH1 0xe5
000008af: SHL
000008b0: DUP2
000008b1: MSTORE
000008b2: PUSH1 0x20
000008b4: PUSH1 0x04
000008b6: DUP3
000008b7: ADD
000008b8: MSTORE
000008b9: PUSH1 0x0d
000008bb: PUSH1 0x24
000008bd: DUP3
000008be: ADD
000008bf: MSTORE
000008c0: PUSH13 0x24b73b30b634b2103b22aa2419
000008ce: PUSH1 0x99
000008d0: SHL
000008d1: PUSH1 0x44
000008d3: DUP3
000008d4: ADD
000008d5: MSTORE
000008d6: PUSH1 0x64
000008d8: ADD
000008d9: PUSH2 0x063c
000008dc: JUMP
000008dd: JUMPDEST
000008de: PUSH1 0x01
000008e0: PUSH1 0x01
000008e2: PUSH1 0xa0
000008e4: SHL
000008e5: SUB
000008e6: DUP7
000008e7: AND
000008e8: PUSH2 0x0933
000008eb: JUMPI
000008ec: PUSH1 0x40
000008ee: MLOAD
000008ef: PUSH3 0x461bcd
000008f3: PUSH1 0xe5
000008f5: SHL
000008f6: DUP2
000008f7: MSTORE
000008f8: PUSH1 0x20
000008fa: PUSH1 0x04
000008fc: DUP3
000008fd: ADD
000008fe: MSTORE
000008ff: PUSH1 0x1b
00000901: PUSH1 0x24
00000903: DUP3
00000904: ADD
00000905: MSTORE
00000906: PUSH32 0x496e76616c696420534c50206465706f73697420616464726573730000000000
00000927: PUSH1 0x44
00000929: DUP3
0000092a: ADD
0000092b: MSTORE
0000092c: PUSH1 0x64
0000092e: ADD
0000092f: PUSH2 0x063c
00000932: JUMP
00000933: JUMPDEST
00000934: PUSH1 0x01
00000936: PUSH1 0x01
00000938: PUSH1 0xa0
0000093a: SHL
0000093b: SUB
0000093c: DUP6
0000093d: AND
0000093e: PUSH2 0x0989
00000941: JUMPI
00000942: PUSH1 0x40
00000944: MLOAD
00000945: PUSH3 0x461bcd
00000949: PUSH1 0xe5
0000094b: SHL
0000094c: DUP2
0000094d: MSTORE
0000094e: PUSH1 0x20
00000950: PUSH1 0x04
00000952: DUP3
00000953: ADD
00000954: MSTORE
00000955: PUSH1 0x19
00000957: PUSH1 0x24
00000959: DUP3
0000095a: ADD
0000095b: MSTORE
0000095c: PUSH32 0x496e76616c6964204d4556207661756c74206164647265737300000000000000
0000097d: PUSH1 0x44
0000097f: DUP3
00000980: ADD
00000981: MSTORE
00000982: PUSH1 0x64
00000984: ADD
00000985: PUSH2 0x063c
00000988: JUMP
00000989: JUMPDEST
0000098a: PUSH1 0x01
0000098c: PUSH1 0x01
0000098e: PUSH1 0xa0
00000990: SHL
00000991: SUB
00000992: DUP5
00000993: AND
00000994: PUSH2 0x09df
00000997: JUMPI
00000998: PUSH1 0x40
0000099a: MLOAD
0000099b: PUSH3 0x461bcd
0000099f: PUSH1 0xe5
000009a1: SHL
000009a2: DUP2
000009a3: MSTORE
000009a4: PUSH1 0x20
000009a6: PUSH1 0x04
000009a8: DUP3
000009a9: ADD
000009aa: DUP2
000009ab: SWAP1
000009ac: MSTORE
000009ad: PUSH1 0x24
000009af: DUP3
000009b0: ADD
000009b1: MSTORE
000009b2: PUSH32 0x496e76616c6964207769746864726177616c207661756c742061646472657373
000009d3: PUSH1 0x44
000009d5: DUP3
000009d6: ADD
000009d7: MSTORE
000009d8: PUSH1 0x64
000009da: ADD
000009db: PUSH2 0x063c
000009de: JUMP
000009df: JUMPDEST
000009e0: PUSH1 0x00
000009e2: DUP8
000009e3: PUSH1 0x01
000009e5: PUSH1 0x01
000009e7: PUSH1 0xa0
000009e9: SHL
000009ea: SUB
000009eb: AND
000009ec: PUSH4 0x18160ddd
000009f1: PUSH1 0x40
000009f3: MLOAD
000009f4: DUP2
000009f5: PUSH4 0xffffffff
000009fa: AND
000009fb: PUSH1 0xe0
000009fd: SHL
000009fe: DUP2
000009ff: MSTORE
00000a00: PUSH1 0x04
00000a02: ADD
00000a03: PUSH1 0x20
00000a05: PUSH1 0x40
00000a07: MLOAD
00000a08: DUP1
00000a09: DUP4
00000a0a: SUB
00000a0b: DUP2
00000a0c: DUP7
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 0x1f7c
00000a42: JUMP
00000a43: JUMPDEST
00000a44: GT
00000a45: PUSH2 0x0a90
00000a48: JUMPI
00000a49: PUSH1 0x40
00000a4b: MLOAD
00000a4c: PUSH3 0x461bcd
00000a50: PUSH1 0xe5
00000a52: SHL
00000a53: DUP2
00000a54: MSTORE
00000a55: PUSH1 0x20
00000a57: PUSH1 0x04
00000a59: DUP3
00000a5a: ADD
00000a5b: MSTORE
00000a5c: PUSH1 0x1c
00000a5e: PUSH1 0x24
00000a60: DUP3
00000a61: ADD
00000a62: MSTORE
00000a63: PUSH32 0x496e76616c696420746f74616c537570706c79206f6620764554483200000000
00000a84: PUSH1 0x44
00000a86: DUP3
00000a87: ADD
00000a88: MSTORE
00000a89: PUSH1 0x64
00000a8b: ADD
00000a8c: PUSH2 0x063c
00000a8f: JUMP
00000a90: JUMPDEST
00000a91: PUSH2 0x0a98
00000a94: PUSH2 0x160b
00000a97: JUMP
00000a98: JUMPDEST
00000a99: PUSH2 0x0aa0
00000a9c: PUSH2 0x163a
00000a9f: JUMP
00000aa0: JUMPDEST
00000aa1: PUSH2 0x0aa8
00000aa4: PUSH2 0x1669
00000aa7: JUMP
00000aa8: JUMPDEST
00000aa9: PUSH2 0x0ab1
00000aac: DUP3
00000aad: PUSH2 0x1698
00000ab0: JUMP
00000ab1: JUMPDEST
00000ab2: PUSH2 0x0aba
00000ab5: DUP4
00000ab6: PUSH2 0x1720
00000ab9: JUMP
00000aba: JUMPDEST
00000abb: PUSH1 0xc9
00000abd: DUP1
00000abe: SLOAD
00000abf: PUSH1 0x01
00000ac1: PUSH1 0x01
00000ac3: PUSH1 0xa0
00000ac5: SHL
00000ac6: SUB
00000ac7: DUP1
00000ac8: DUP12
00000ac9: AND
00000aca: PUSH1 0x01
00000acc: PUSH1 0x01
00000ace: PUSH1 0xa0
00000ad0: SHL
00000ad1: SUB
00000ad2: NOT
00000ad3: SWAP3
00000ad4: DUP4
00000ad5: AND
00000ad6: OR
00000ad7: SWAP1
00000ad8: SWAP3
00000ad9: SSTORE
00000ada: PUSH1 0xca
00000adc: DUP1
00000add: SLOAD
00000ade: DUP11
00000adf: DUP5
00000ae0: AND
00000ae1: SWAP1
00000ae2: DUP4
00000ae3: AND
00000ae4: DUP2
00000ae5: OR
00000ae6: SWAP1
00000ae7: SWAP2
00000ae8: SSTORE
00000ae9: PUSH1 0xcb
00000aeb: DUP1
00000aec: SLOAD
00000aed: DUP11
00000aee: DUP6
00000aef: AND
00000af0: SWAP1
00000af1: DUP5
00000af2: AND
00000af3: OR
00000af4: SWAP1
00000af5: SSTORE
00000af6: PUSH1 0xcc
00000af8: DUP1
00000af9: SLOAD
00000afa: DUP10
00000afb: DUP6
00000afc: AND
00000afd: SWAP1
00000afe: DUP5
00000aff: AND
00000b00: OR
00000b01: SWAP1
00000b02: SSTORE
00000b03: PUSH1 0xcd
00000b05: DUP1
00000b06: SLOAD
00000b07: SWAP4
00000b08: DUP9
00000b09: AND
00000b0a: SWAP4
00000b0b: SWAP1
00000b0c: SWAP3
00000b0d: AND
00000b0e: SWAP3
00000b0f: SWAP1
00000b10: SWAP3
00000b11: OR
00000b12: SWAP1
00000b13: SSTORE
00000b14: PUSH1 0x40
00000b16: DUP1
00000b17: MLOAD
00000b18: PUSH4 0x18160ddd
00000b1d: PUSH1 0xe0
00000b1f: SHL
00000b20: DUP2
00000b21: MSTORE
00000b22: SWAP1
00000b23: MLOAD
00000b24: PUSH4 0x18160ddd
00000b29: SWAP2
00000b2a: PUSH1 0x04
00000b2c: DUP1
00000b2d: DUP3
00000b2e: ADD
00000b2f: SWAP3
00000b30: PUSH1 0x20
00000b32: SWAP3
00000b33: SWAP1
00000b34: SWAP2
00000b35: SWAP1
00000b36: DUP3
00000b37: SWAP1
00000b38: SUB
00000b39: ADD
00000b3a: DUP2
00000b3b: DUP7
00000b3c: GAS
00000b3d: STATICCALL
00000b3e: ISZERO
00000b3f: DUP1
00000b40: ISZERO
00000b41: PUSH2 0x0b4e
00000b44: JUMPI
00000b45: RETURNDATASIZE
00000b46: PUSH1 0x00
00000b48: DUP1
00000b49: RETURNDATACOPY
00000b4a: RETURNDATASIZE
00000b4b: PUSH1 0x00
00000b4d: REVERT
00000b4e: JUMPDEST
00000b4f: POP
00000b50: POP
00000b51: POP
00000b52: POP
00000b53: PUSH1 0x40
00000b55: MLOAD
00000b56: RETURNDATASIZE
00000b57: PUSH1 0x1f
00000b59: NOT
00000b5a: PUSH1 0x1f
00000b5c: DUP3
00000b5d: ADD
00000b5e: AND
00000b5f: DUP3
00000b60: ADD
00000b61: DUP1
00000b62: PUSH1 0x40
00000b64: MSTORE
00000b65: POP
00000b66: DUP2
00000b67: ADD
00000b68: SWAP1
00000b69: PUSH2 0x0b72
00000b6c: SWAP2
00000b6d: SWAP1
00000b6e: PUSH2 0x1f7c
00000b71: JUMP
00000b72: JUMPDEST
00000b73: PUSH1 0xcf
00000b75: SSTORE
00000b76: DUP1
00000b77: ISZERO
00000b78: PUSH2 0x0bbb
00000b7b: JUMPI
00000b7c: PUSH1 0x00
00000b7e: DUP1
00000b7f: SLOAD
00000b80: PUSH2 0xff00
00000b83: NOT
00000b84: AND
00000b85: SWAP1
00000b86: SSTORE
00000b87: PUSH1 0x40
00000b89: MLOAD
00000b8a: PUSH1 0x01
00000b8c: DUP2
00000b8d: MSTORE
00000b8e: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00000baf: SWAP1
00000bb0: PUSH1 0x20
00000bb2: ADD
00000bb3: PUSH1 0x40
00000bb5: MLOAD
00000bb6: DUP1
00000bb7: SWAP2
00000bb8: SUB
00000bb9: SWAP1
00000bba: LOG1
00000bbb: JUMPDEST
00000bbc: POP
00000bbd: POP
00000bbe: POP
00000bbf: POP
00000bc0: POP
00000bc1: POP
00000bc2: POP
00000bc3: POP
00000bc4: JUMP
00000bc5: JUMPDEST
00000bc6: PUSH2 0x0bcd
00000bc9: PUSH2 0x17c6
00000bcc: JUMP
00000bcd: JUMPDEST
00000bce: PUSH2 0x078f
00000bd1: PUSH2 0x1820
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: PUSH2 0x0bdd
00000bd9: PUSH2 0x17c6
00000bdc: JUMP
00000bdd: JUMPDEST
00000bde: PUSH2 0x0be6
00000be1: DUP2
00000be2: PUSH2 0x1698
00000be5: JUMP
00000be6: JUMPDEST
00000be7: POP
00000be8: JUMP
00000be9: JUMPDEST
00000bea: PUSH1 0x01
00000bec: PUSH1 0x01
00000bee: PUSH1 0xa0
00000bf0: SHL
00000bf1: SUB
00000bf2: DUP2
00000bf3: AND
00000bf4: PUSH1 0x00
00000bf6: SWAP1
00000bf7: DUP2
00000bf8: MSTORE
00000bf9: PUSH1 0xd3
00000bfb: PUSH1 0x20
00000bfd: SWAP1
00000bfe: DUP2
00000bff: MSTORE
00000c00: PUSH1 0x40
00000c02: DUP1
00000c03: DUP4
00000c04: KECCAK256
00000c05: DUP2
00000c06: MLOAD
00000c07: DUP1
00000c08: DUP4
00000c09: ADD
00000c0a: SWAP1
00000c0b: SWAP3
00000c0c: MSTORE
00000c0d: DUP1
00000c0e: SLOAD
00000c0f: DUP1
00000c10: DUP4
00000c11: MSTORE
00000c12: PUSH1 0x01
00000c14: SWAP1
00000c15: SWAP2
00000c16: ADD
00000c17: SLOAD
00000c18: SWAP3
00000c19: DUP3
00000c1a: ADD
00000c1b: SWAP3
00000c1c: SWAP1
00000c1d: SWAP3
00000c1e: MSTORE
00000c1f: SWAP1
00000c20: PUSH2 0x0c27
00000c23: PUSH2 0x0d8b
00000c26: JUMP
00000c27: JUMPDEST
00000c28: GT
00000c29: PUSH2 0x0c35
00000c2c: JUMPI
00000c2d: POP
00000c2e: PUSH1 0x00
00000c30: SWAP3
00000c31: SWAP2
00000c32: POP
00000c33: POP
00000c34: JUMP
00000c35: JUMPDEST
00000c36: DUP1
00000c37: MLOAD
00000c38: PUSH1 0x00
00000c3a: SWAP1
00000c3b: PUSH2 0x0c42
00000c3e: PUSH2 0x0d8b
00000c41: JUMP
00000c42: JUMPDEST
00000c43: PUSH2 0x0c4c
00000c46: SWAP2
00000c47: SWAP1
00000c48: PUSH2 0x1f95
00000c4b: JUMP
00000c4c: JUMPDEST
00000c4d: SWAP1
00000c4e: POP
00000c4f: DUP1
00000c50: SELFBALANCE
00000c51: LT
00000c52: PUSH2 0x0c5b
00000c55: JUMPI
00000c56: DUP1
00000c57: PUSH2 0x0c5d
00000c5a: JUMP
00000c5b: JUMPDEST
00000c5c: SELFBALANCE
00000c5d: JUMPDEST
00000c5e: SWAP1
00000c5f: POP
00000c60: DUP1
00000c61: DUP3
00000c62: PUSH1 0x20
00000c64: ADD
00000c65: MLOAD
00000c66: LT
00000c67: PUSH2 0x0c70
00000c6a: JUMPI
00000c6b: DUP1
00000c6c: PUSH2 0x0c76
00000c6f: JUMP
00000c70: JUMPDEST
00000c71: DUP2
00000c72: PUSH1 0x20
00000c74: ADD
00000c75: MLOAD
00000c76: JUMPDEST
00000c77: SWAP5
00000c78: SWAP4
00000c79: POP
00000c7a: POP
00000c7b: POP
00000c7c: POP
00000c7d: JUMP
00000c7e: JUMPDEST
00000c7f: PUSH2 0x0c86
00000c82: PUSH2 0x1565
00000c85: JUMP
00000c86: JUMPDEST
00000c87: PUSH1 0x00
00000c89: DUP2
00000c8a: GT
00000c8b: PUSH2 0x0ca6
00000c8e: JUMPI
00000c8f: PUSH1 0x40
00000c91: MLOAD
00000c92: PUSH3 0x461bcd
00000c96: PUSH1 0xe5
00000c98: SHL
00000c99: DUP2
00000c9a: MSTORE
00000c9b: PUSH1 0x04
00000c9d: ADD
00000c9e: PUSH2 0x063c
00000ca1: SWAP1
00000ca2: PUSH2 0x1f28
00000ca5: JUMP
00000ca6: JUMPDEST
00000ca7: DUP1
00000ca8: PUSH1 0x00
00000caa: PUSH2 0x0cb2
00000cad: DUP3
00000cae: PUSH2 0x1281
00000cb1: JUMP
00000cb2: JUMPDEST
00000cb3: SWAP1
00000cb4: POP
00000cb5: DUP2
00000cb6: PUSH1 0xcf
00000cb8: SLOAD
00000cb9: PUSH2 0x0cc2
00000cbc: SWAP2
00000cbd: SWAP1
00000cbe: PUSH2 0x1f63
00000cc1: JUMP
00000cc2: JUMPDEST
00000cc3: PUSH1 0xcf
00000cc5: SSTORE
00000cc6: PUSH1 0xc9
00000cc8: SLOAD
00000cc9: PUSH2 0x0cdf
00000ccc: SWAP1
00000ccd: PUSH1 0x01
00000ccf: PUSH1 0x01
00000cd1: PUSH1 0xa0
00000cd3: SHL
00000cd4: SUB
00000cd5: AND
00000cd6: CALLER
00000cd7: PUSH2 0xdead
00000cda: DUP6
00000cdb: PUSH2 0x1872
00000cde: JUMP
00000cdf: JUMPDEST
00000ce0: PUSH1 0xca
00000ce2: SLOAD
00000ce3: PUSH1 0x40
00000ce5: MLOAD
00000ce6: PUSH4 0x40c10f19
00000ceb: PUSH1 0xe0
00000ced: SHL
00000cee: DUP2
00000cef: MSTORE
00000cf0: CALLER
00000cf1: PUSH1 0x04
00000cf3: DUP3
00000cf4: ADD
00000cf5: MSTORE
00000cf6: PUSH1 0x24
00000cf8: DUP2
00000cf9: ADD
00000cfa: DUP4
00000cfb: SWAP1
00000cfc: MSTORE
00000cfd: PUSH1 0x01
00000cff: PUSH1 0x01
00000d01: PUSH1 0xa0
00000d03: SHL
00000d04: SUB
00000d05: SWAP1
00000d06: SWAP2
00000d07: AND
00000d08: SWAP1
00000d09: PUSH4 0x40c10f19
00000d0e: SWAP1
00000d0f: PUSH1 0x44
00000d11: ADD
00000d12: PUSH1 0x00
00000d14: PUSH1 0x40
00000d16: MLOAD
00000d17: DUP1
00000d18: DUP4
00000d19: SUB
00000d1a: DUP2
00000d1b: PUSH1 0x00
00000d1d: DUP8
00000d1e: DUP1
00000d1f: EXTCODESIZE
00000d20: ISZERO
00000d21: DUP1
00000d22: ISZERO
00000d23: PUSH2 0x0d2b
00000d26: JUMPI
00000d27: PUSH1 0x00
00000d29: DUP1
00000d2a: REVERT
00000d2b: JUMPDEST
00000d2c: POP
00000d2d: GAS
00000d2e: CALL
00000d2f: ISZERO
00000d30: DUP1
00000d31: ISZERO
00000d32: PUSH2 0x0d3f
00000d35: JUMPI
00000d36: RETURNDATASIZE
00000d37: PUSH1 0x00
00000d39: DUP1
00000d3a: RETURNDATACOPY
00000d3b: RETURNDATASIZE
00000d3c: PUSH1 0x00
00000d3e: REVERT
00000d3f: JUMPDEST
00000d40: POP
00000d41: POP
00000d42: PUSH1 0x40
00000d44: DUP1
00000d45: MLOAD
00000d46: DUP6
00000d47: DUP2
00000d48: MSTORE
00000d49: PUSH1 0x20
00000d4b: DUP2
00000d4c: ADD
00000d4d: DUP6
00000d4e: SWAP1
00000d4f: MSTORE
00000d50: CALLER
00000d51: SWAP4
00000d52: POP
00000d53: PUSH32 0x9f1eab6cdd1daff5126e5746868327717314baefd3abd72422a3064e1300279c
00000d74: SWAP3
00000d75: POP
00000d76: ADD
00000d77: JUMPDEST
00000d78: PUSH1 0x40
00000d7a: MLOAD
00000d7b: DUP1
00000d7c: SWAP2
00000d7d: SUB
00000d7e: SWAP1
00000d7f: LOG2
00000d80: POP
00000d81: POP
00000d82: PUSH2 0x0be6
00000d85: PUSH1 0x01
00000d87: PUSH1 0x65
00000d89: SSTORE
00000d8a: JUMP
00000d8b: JUMPDEST
00000d8c: PUSH1 0x00
00000d8e: PUSH1 0xd2
00000d90: SLOAD
00000d91: SELFBALANCE
00000d92: PUSH2 0x0d9b
00000d95: SWAP2
00000d96: SWAP1
00000d97: PUSH2 0x1f63
00000d9a: JUMP
00000d9b: JUMPDEST
00000d9c: SWAP1
00000d9d: POP
00000d9e: SWAP1
00000d9f: JUMP
00000da0: JUMPDEST
00000da1: PUSH2 0x0da8
00000da4: PUSH2 0x17c6
00000da7: JUMP
00000da8: JUMPDEST
00000da9: PUSH2 0x078f
00000dac: PUSH1 0x00
00000dae: PUSH2 0x18d2
00000db1: JUMP
00000db2: JUMPDEST
00000db3: PUSH2 0x0dba
00000db6: PUSH2 0x1565
00000db9: JUMP
00000dba: JUMPDEST
00000dbb: PUSH2 0x0dc2
00000dbe: PUSH2 0x15be
00000dc1: JUMP
00000dc2: JUMPDEST
00000dc3: PUSH1 0x00
00000dc5: DUP2
00000dc6: GT
00000dc7: PUSH2 0x0de2
00000dca: JUMPI
00000dcb: PUSH1 0x40
00000dcd: MLOAD
00000dce: PUSH3 0x461bcd
00000dd2: PUSH1 0xe5
00000dd4: SHL
00000dd5: DUP2
00000dd6: MSTORE
00000dd7: PUSH1 0x04
00000dd9: ADD
00000dda: PUSH2 0x063c
00000ddd: SWAP1
00000dde: PUSH2 0x1f28
00000de1: JUMP
00000de2: JUMPDEST
00000de3: CALLER
00000de4: PUSH1 0x00
00000de6: SWAP1
00000de7: DUP2
00000de8: MSTORE
00000de9: PUSH1 0xd3
00000deb: PUSH1 0x20
00000ded: MSTORE
00000dee: PUSH1 0x40
00000df0: DUP2
00000df1: KECCAK256
00000df2: SWAP1
00000df3: PUSH2 0x0dfb
00000df6: DUP4
00000df7: PUSH2 0x1076
00000dfa: JUMP
00000dfb: JUMPDEST
00000dfc: SWAP1
00000dfd: POP
00000dfe: PUSH1 0x00
00000e00: DUP2
00000e01: GT
00000e02: PUSH2 0x0e1d
00000e05: JUMPI
00000e06: PUSH1 0x40
00000e08: MLOAD
00000e09: PUSH3 0x461bcd
00000e0d: PUSH1 0xe5
00000e0f: SHL
00000e10: DUP2
00000e11: MSTORE
00000e12: PUSH1 0x04
00000e14: ADD
00000e15: PUSH2 0x063c
00000e18: SWAP1
00000e19: PUSH2 0x1f28
00000e1c: JUMP
00000e1d: JUMPDEST
00000e1e: DUP2
00000e1f: PUSH1 0x01
00000e21: ADD
00000e22: SLOAD
00000e23: PUSH1 0xd1
00000e25: SLOAD
00000e26: PUSH2 0x0e2f
00000e29: SWAP2
00000e2a: SWAP1
00000e2b: PUSH2 0x1f95
00000e2e: JUMP
00000e2f: JUMPDEST
00000e30: DUP3
00000e31: SSTORE
00000e32: PUSH1 0x01
00000e34: DUP3
00000e35: ADD
00000e36: SLOAD
00000e37: PUSH2 0x0e41
00000e3a: SWAP1
00000e3b: DUP3
00000e3c: SWAP1
00000e3d: PUSH2 0x1f63
00000e40: JUMP
00000e41: JUMPDEST
00000e42: PUSH1 0x01
00000e44: DUP4
00000e45: ADD
00000e46: SSTORE
00000e47: PUSH1 0xd1
00000e49: SLOAD
00000e4a: PUSH2 0x0e54
00000e4d: SWAP1
00000e4e: DUP3
00000e4f: SWAP1
00000e50: PUSH2 0x1f63
00000e53: JUMP
00000e54: JUMPDEST
00000e55: PUSH1 0xd1
00000e57: SSTORE
00000e58: PUSH1 0xcf
00000e5a: SLOAD
00000e5b: PUSH2 0x0e65
00000e5e: SWAP1
00000e5f: DUP3
00000e60: SWAP1
00000e61: PUSH2 0x1f95
00000e64: JUMP
00000e65: JUMPDEST
00000e66: PUSH1 0xcf
00000e68: SSTORE
00000e69: PUSH1 0xca
00000e6b: SLOAD
00000e6c: PUSH1 0x40
00000e6e: MLOAD
00000e6f: PUSH4 0x2770a7eb
00000e74: PUSH1 0xe2
00000e76: SHL
00000e77: DUP2
00000e78: MSTORE
00000e79: CALLER
00000e7a: PUSH1 0x04
00000e7c: DUP3
00000e7d: ADD
00000e7e: MSTORE
00000e7f: PUSH1 0x24
00000e81: DUP2
00000e82: ADD
00000e83: DUP6
00000e84: SWAP1
00000e85: MSTORE
00000e86: PUSH1 0x01
00000e88: PUSH1 0x01
00000e8a: PUSH1 0xa0
00000e8c: SHL
00000e8d: SUB
00000e8e: SWAP1
00000e8f: SWAP2
00000e90: AND
00000e91: SWAP1
00000e92: PUSH4 0x9dc29fac
00000e97: SWAP1
00000e98: PUSH1 0x44
00000e9a: ADD
00000e9b: PUSH1 0x00
00000e9d: PUSH1 0x40
00000e9f: MLOAD
00000ea0: DUP1
00000ea1: DUP4
00000ea2: SUB
00000ea3: DUP2
00000ea4: PUSH1 0x00
00000ea6: DUP8
00000ea7: DUP1
00000ea8: EXTCODESIZE
00000ea9: ISZERO
00000eaa: DUP1
00000eab: ISZERO
00000eac: PUSH2 0x0eb4
00000eaf: JUMPI
00000eb0: PUSH1 0x00
00000eb2: DUP1
00000eb3: REVERT
00000eb4: JUMPDEST
00000eb5: POP
00000eb6: GAS
00000eb7: CALL
00000eb8: ISZERO
00000eb9: DUP1
00000eba: ISZERO
00000ebb: PUSH2 0x0ec8
00000ebe: JUMPI
00000ebf: RETURNDATASIZE
00000ec0: PUSH1 0x00
00000ec2: DUP1
00000ec3: RETURNDATACOPY
00000ec4: RETURNDATASIZE
00000ec5: PUSH1 0x00
00000ec7: REVERT
00000ec8: JUMPDEST
00000ec9: POP
00000eca: POP
00000ecb: PUSH1 0x40
00000ecd: DUP1
00000ece: MLOAD
00000ecf: DUP5
00000ed0: DUP2
00000ed1: MSTORE
00000ed2: PUSH1 0x20
00000ed4: DUP2
00000ed5: ADD
00000ed6: DUP8
00000ed7: SWAP1
00000ed8: MSTORE
00000ed9: CALLER
00000eda: SWAP4
00000edb: POP
00000edc: PUSH32 0x24b91f4f47caf44230a57777a9be744924e82bf666f2d5702faf97df35e60f9f
00000efd: SWAP3
00000efe: POP
00000eff: ADD
00000f00: PUSH2 0x0d77
00000f03: JUMP
00000f04: JUMPDEST
00000f05: PUSH1 0xcc
00000f07: SLOAD
00000f08: PUSH1 0x01
00000f0a: PUSH1 0x01
00000f0c: PUSH1 0xa0
00000f0e: SHL
00000f0f: SUB
00000f10: AND
00000f11: CALLER
00000f12: EQ
00000f13: DUP1
00000f14: PUSH2 0x0f27
00000f17: JUMPI
00000f18: POP
00000f19: PUSH1 0xcd
00000f1b: SLOAD
00000f1c: PUSH1 0x01
00000f1e: PUSH1 0x01
00000f20: PUSH1 0xa0
00000f22: SHL
00000f23: SUB
00000f24: AND
00000f25: CALLER
00000f26: EQ
00000f27: JUMPDEST
00000f28: PUSH2 0x0f73
00000f2b: JUMPI
00000f2c: PUSH1 0x40
00000f2e: MLOAD
00000f2f: PUSH3 0x461bcd
00000f33: PUSH1 0xe5
00000f35: SHL
00000f36: DUP2
00000f37: MSTORE
00000f38: PUSH1 0x20
00000f3a: PUSH1 0x04
00000f3c: DUP3
00000f3d: ADD
00000f3e: MSTORE
00000f3f: PUSH1 0x1c
00000f41: PUSH1 0x24
00000f43: DUP3
00000f44: ADD
00000f45: MSTORE
00000f46: PUSH32 0x43616c6c6572206973206e6f74207661756c7420636f6e747261637400000000
00000f67: PUSH1 0x44
00000f69: DUP3
00000f6a: ADD
00000f6b: MSTORE
00000f6c: PUSH1 0x64
00000f6e: ADD
00000f6f: PUSH2 0x063c
00000f72: JUMP
00000f73: JUMPDEST
00000f74: PUSH2 0x0f7b
00000f77: PUSH2 0x15be
00000f7a: JUMP
00000f7b: JUMPDEST
00000f7c: PUSH1 0x00
00000f7e: PUSH8 0x0de0b6b3a7640000
00000f87: PUSH1 0xd0
00000f89: SLOAD
00000f8a: DUP4
00000f8b: PUSH2 0x0f94
00000f8e: SWAP2
00000f8f: SWAP1
00000f90: PUSH2 0x1fa8
00000f93: JUMP
00000f94: JUMPDEST
00000f95: PUSH2 0x0f9e
00000f98: SWAP2
00000f99: SWAP1
00000f9a: PUSH2 0x1fbf
00000f9d: JUMP
00000f9e: JUMPDEST
00000f9f: SWAP1
00000fa0: POP
00000fa1: PUSH1 0x00
00000fa3: PUSH2 0x0fab
00000fa6: DUP3
00000fa7: PUSH2 0x1281
00000faa: JUMP
00000fab: JUMPDEST
00000fac: SWAP1
00000fad: POP
00000fae: DUP3
00000faf: PUSH1 0xcf
00000fb1: SLOAD
00000fb2: PUSH2 0x0fbb
00000fb5: SWAP2
00000fb6: SWAP1
00000fb7: PUSH2 0x1f63
00000fba: JUMP
00000fbb: JUMPDEST
00000fbc: PUSH1 0xcf
00000fbe: SSTORE
00000fbf: PUSH1 0xca
00000fc1: SLOAD
00000fc2: PUSH1 0xce
00000fc4: SLOAD
00000fc5: PUSH1 0x40
00000fc7: MLOAD
00000fc8: PUSH4 0x40c10f19
00000fcd: PUSH1 0xe0
00000fcf: SHL
00000fd0: DUP2
00000fd1: MSTORE
00000fd2: PUSH1 0x01
00000fd4: PUSH1 0x01
00000fd6: PUSH1 0xa0
00000fd8: SHL
00000fd9: SUB
00000fda: SWAP2
00000fdb: DUP3
00000fdc: AND
00000fdd: PUSH1 0x04
00000fdf: DUP3
00000fe0: ADD
00000fe1: MSTORE
00000fe2: PUSH1 0x24
00000fe4: DUP2
00000fe5: ADD
00000fe6: DUP5
00000fe7: SWAP1
00000fe8: MSTORE
00000fe9: SWAP2
00000fea: AND
00000feb: SWAP1
00000fec: PUSH4 0x40c10f19
00000ff1: SWAP1
00000ff2: PUSH1 0x44
00000ff4: ADD
00000ff5: PUSH1 0x00
00000ff7: PUSH1 0x40
00000ff9: MLOAD
00000ffa: DUP1
00000ffb: DUP4
00000ffc: SUB
00000ffd: DUP2
00000ffe: PUSH1 0x00
00001000: DUP8
00001001: DUP1
00001002: EXTCODESIZE
00001003: ISZERO
00001004: DUP1
00001005: ISZERO
00001006: PUSH2 0x100e
00001009: JUMPI
0000100a: PUSH1 0x00
0000100c: DUP1
0000100d: REVERT
0000100e: JUMPDEST
0000100f: POP
00001010: GAS
00001011: CALL
00001012: ISZERO
00001013: DUP1
00001014: ISZERO
00001015: PUSH2 0x1022
00001018: JUMPI
00001019: RETURNDATASIZE
0000101a: PUSH1 0x00
0000101c: DUP1
0000101d: RETURNDATACOPY
0000101e: RETURNDATASIZE
0000101f: PUSH1 0x00
00001021: REVERT
00001022: JUMPDEST
00001023: POP
00001024: POP
00001025: PUSH1 0x40
00001027: DUP1
00001028: MLOAD
00001029: DUP7
0000102a: DUP2
0000102b: MSTORE
0000102c: PUSH1 0x20
0000102e: DUP2
0000102f: ADD
00001030: DUP6
00001031: SWAP1
00001032: MSTORE
00001033: CALLER
00001034: SWAP4
00001035: POP
00001036: PUSH32 0x6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474
00001057: SWAP3
00001058: POP
00001059: ADD
0000105a: PUSH1 0x40
0000105c: MLOAD
0000105d: DUP1
0000105e: SWAP2
0000105f: SUB
00001060: SWAP1
00001061: LOG2
00001062: POP
00001063: POP
00001064: POP
00001065: JUMP
00001066: JUMPDEST
00001067: PUSH2 0x106e
0000106a: PUSH2 0x17c6
0000106d: JUMP
0000106e: JUMPDEST
0000106f: PUSH2 0x078f
00001072: PUSH2 0x1924
00001075: JUMP
00001076: JUMPDEST
00001077: PUSH1 0x00
00001079: DUP1
0000107a: PUSH1 0xca
0000107c: PUSH1 0x00
0000107e: SWAP1
0000107f: SLOAD
00001080: SWAP1
00001081: PUSH2 0x0100
00001084: EXP
00001085: SWAP1
00001086: DIV
00001087: PUSH1 0x01
00001089: PUSH1 0x01
0000108b: PUSH1 0xa0
0000108d: SHL
0000108e: SUB
0000108f: AND
00001090: PUSH1 0x01
00001092: PUSH1 0x01
00001094: PUSH1 0xa0
00001096: SHL
00001097: SUB
00001098: AND
00001099: PUSH4 0x18160ddd
0000109e: PUSH1 0x40
000010a0: MLOAD
000010a1: DUP2
000010a2: PUSH4 0xffffffff
000010a7: AND
000010a8: PUSH1 0xe0
000010aa: SHL
000010ab: DUP2
000010ac: MSTORE
000010ad: PUSH1 0x04
000010af: ADD
000010b0: PUSH1 0x20
000010b2: PUSH1 0x40
000010b4: MLOAD
000010b5: DUP1
000010b6: DUP4
000010b7: SUB
000010b8: DUP2
000010b9: DUP7
000010ba: GAS
000010bb: STATICCALL
000010bc: ISZERO
000010bd: DUP1
000010be: ISZERO
000010bf: PUSH2 0x10cc
000010c2: JUMPI
000010c3: RETURNDATASIZE
000010c4: PUSH1 0x00
000010c6: DUP1
000010c7: RETURNDATACOPY
000010c8: RETURNDATASIZE
000010c9: PUSH1 0x00
000010cb: REVERT
000010cc: JUMPDEST
000010cd: POP
000010ce: POP
000010cf: POP
000010d0: POP
000010d1: PUSH1 0x40
000010d3: MLOAD
000010d4: RETURNDATASIZE
000010d5: PUSH1 0x1f
000010d7: NOT
000010d8: PUSH1 0x1f
000010da: DUP3
000010db: ADD
000010dc: AND
000010dd: DUP3
000010de: ADD
000010df: DUP1
000010e0: PUSH1 0x40
000010e2: MSTORE
000010e3: POP
000010e4: DUP2
000010e5: ADD
000010e6: SWAP1
000010e7: PUSH2 0x10f0
000010ea: SWAP2
000010eb: SWAP1
000010ec: PUSH2 0x1f7c
000010ef: JUMP
000010f0: JUMPDEST
000010f1: SWAP1
000010f2: POP
000010f3: DUP1
000010f4: ISZERO
000010f5: DUP1
000010f6: ISZERO
000010f7: PUSH2 0x1100
000010fa: JUMPI
000010fb: POP
000010fc: PUSH1 0xcf
000010fe: SLOAD
000010ff: ISZERO
00001100: JUMPDEST
00001101: ISZERO
00001102: PUSH2 0x110d
00001105: JUMPI
00001106: DUP3
00001107: SWAP2
00001108: POP
00001109: PUSH2 0x1129
0000110c: JUMP
0000110d: JUMPDEST
0000110e: DUP1
0000110f: PUSH1 0xcf
00001111: SLOAD
00001112: DUP5
00001113: PUSH2 0x111c
00001116: SWAP2
00001117: SWAP1
00001118: PUSH2 0x1fa8
0000111b: JUMP
0000111c: JUMPDEST
0000111d: PUSH2 0x1126
00001120: SWAP2
00001121: SWAP1
00001122: PUSH2 0x1fbf
00001125: JUMP
00001126: JUMPDEST
00001127: SWAP2
00001128: POP
00001129: JUMPDEST
0000112a: POP
0000112b: SWAP2
0000112c: SWAP1
0000112d: POP
0000112e: JUMP
0000112f: JUMPDEST
00001130: PUSH2 0x1137
00001133: PUSH2 0x1565
00001136: JUMP
00001137: JUMPDEST
00001138: CALLER
00001139: PUSH1 0x00
0000113b: SWAP1
0000113c: DUP2
0000113d: MSTORE
0000113e: PUSH1 0xd3
00001140: PUSH1 0x20
00001142: MSTORE
00001143: PUSH1 0x40
00001145: DUP2
00001146: KECCAK256
00001147: SWAP1
00001148: DUP3
00001149: SWAP1
0000114a: SUB
0000114b: PUSH2 0x1156
0000114e: JUMPI
0000114f: DUP1
00001150: PUSH1 0x01
00001152: ADD
00001153: SLOAD
00001154: SWAP2
00001155: POP
00001156: JUMPDEST
00001157: DUP1
00001158: PUSH1 0x01
0000115a: ADD
0000115b: SLOAD
0000115c: DUP3
0000115d: GT
0000115e: ISZERO
0000115f: PUSH2 0x11aa
00001162: JUMPI
00001163: PUSH1 0x40
00001165: MLOAD
00001166: PUSH3 0x461bcd
0000116a: PUSH1 0xe5
0000116c: SHL
0000116d: DUP2
0000116e: MSTORE
0000116f: PUSH1 0x20
00001171: PUSH1 0x04
00001173: DUP3
00001174: ADD
00001175: MSTORE
00001176: PUSH1 0x17
00001178: PUSH1 0x24
0000117a: DUP3
0000117b: ADD
0000117c: MSTORE
0000117d: PUSH32 0x457863656564207065726d697474656420616d6f756e74000000000000000000
0000119e: PUSH1 0x44
000011a0: DUP3
000011a1: ADD
000011a2: MSTORE
000011a3: PUSH1 0x64
000011a5: ADD
000011a6: PUSH2 0x063c
000011a9: JUMP
000011aa: JUMPDEST
000011ab: PUSH2 0x11b3
000011ae: CALLER
000011af: PUSH2 0x0be9
000011b2: JUMP
000011b3: JUMPDEST
000011b4: DUP3
000011b5: GT
000011b6: ISZERO
000011b7: PUSH2 0x1202
000011ba: JUMPI
000011bb: PUSH1 0x40
000011bd: MLOAD
000011be: PUSH3 0x461bcd
000011c2: PUSH1 0xe5
000011c4: SHL
000011c5: DUP2
000011c6: MSTORE
000011c7: PUSH1 0x20
000011c9: PUSH1 0x04
000011cb: DUP3
000011cc: ADD
000011cd: MSTORE
000011ce: PUSH1 0x1e
000011d0: PUSH1 0x24
000011d2: DUP3
000011d3: ADD
000011d4: MSTORE
000011d5: PUSH32 0x496e73756666696369656e74207769746864726177616c20616d6f756e740000
000011f6: PUSH1 0x44
000011f8: DUP3
000011f9: ADD
000011fa: MSTORE
000011fb: PUSH1 0x64
000011fd: ADD
000011fe: PUSH2 0x063c
00001201: JUMP
00001202: JUMPDEST
00001203: DUP2
00001204: DUP2
00001205: PUSH1 0x01
00001207: ADD
00001208: SLOAD
00001209: PUSH2 0x1212
0000120c: SWAP2
0000120d: SWAP1
0000120e: PUSH2 0x1f95
00001211: JUMP
00001212: JUMPDEST
00001213: PUSH1 0x01
00001215: DUP3
00001216: ADD
00001217: SSTORE
00001218: DUP1
00001219: SLOAD
0000121a: PUSH2 0x1224
0000121d: SWAP1
0000121e: DUP4
0000121f: SWAP1
00001220: PUSH2 0x1f63
00001223: JUMP
00001224: JUMPDEST
00001225: DUP2
00001226: SSTORE
00001227: PUSH1 0xd2
00001229: SLOAD
0000122a: PUSH2 0x1234
0000122d: SWAP1
0000122e: DUP4
0000122f: SWAP1
00001230: PUSH2 0x1f63
00001233: JUMP
00001234: JUMPDEST
00001235: PUSH1 0xd2
00001237: SSTORE
00001238: PUSH2 0x1241
0000123b: CALLER
0000123c: DUP4
0000123d: PUSH2 0x1961
00001240: JUMP
00001241: JUMPDEST
00001242: PUSH1 0x40
00001244: MLOAD
00001245: DUP3
00001246: DUP2
00001247: MSTORE
00001248: CALLER
00001249: SWAP1
0000124a: PUSH32 0x1a39b9c5044b9f0ff56c5951e30c1ebe24911353aafcceb9250e83a24fe158c4
0000126b: SWAP1
0000126c: PUSH1 0x20
0000126e: ADD
0000126f: PUSH1 0x40
00001271: MLOAD
00001272: DUP1
00001273: SWAP2
00001274: SUB
00001275: SWAP1
00001276: LOG2
00001277: POP
00001278: PUSH2 0x0be6
0000127b: PUSH1 0x01
0000127d: PUSH1 0x65
0000127f: SSTORE
00001280: JUMP
00001281: JUMPDEST
00001282: PUSH1 0x00
00001284: DUP1
00001285: PUSH1 0xca
00001287: PUSH1 0x00
00001289: SWAP1
0000128a: SLOAD
0000128b: SWAP1
0000128c: PUSH2 0x0100
0000128f: EXP
00001290: SWAP1
00001291: DIV
00001292: PUSH1 0x01
00001294: PUSH1 0x01
00001296: PUSH1 0xa0
00001298: SHL
00001299: SUB
0000129a: AND
0000129b: PUSH1 0x01
0000129d: PUSH1 0x01
0000129f: PUSH1 0xa0
000012a1: SHL
000012a2: SUB
000012a3: AND
000012a4: PUSH4 0x18160ddd
000012a9: PUSH1 0x40
000012ab: MLOAD
000012ac: DUP2
000012ad: PUSH4 0xffffffff
000012b2: AND
000012b3: PUSH1 0xe0
000012b5: SHL
000012b6: DUP2
000012b7: MSTORE
000012b8: PUSH1 0x04
000012ba: ADD
000012bb: PUSH1 0x20
000012bd: PUSH1 0x40
000012bf: MLOAD
000012c0: DUP1
000012c1: DUP4
000012c2: SUB
000012c3: DUP2
000012c4: DUP7
000012c5: GAS
000012c6: STATICCALL
000012c7: ISZERO
000012c8: DUP1
000012c9: ISZERO
000012ca: PUSH2 0x12d7
000012cd: JUMPI
000012ce: RETURNDATASIZE
000012cf: PUSH1 0x00
000012d1: DUP1
000012d2: RETURNDATACOPY
000012d3: RETURNDATASIZE
000012d4: PUSH1 0x00
000012d6: REVERT
000012d7: JUMPDEST
000012d8: POP
000012d9: POP
000012da: POP
000012db: POP
000012dc: PUSH1 0x40
000012de: MLOAD
000012df: RETURNDATASIZE
000012e0: PUSH1 0x1f
000012e2: NOT
000012e3: PUSH1 0x1f
000012e5: DUP3
000012e6: ADD
000012e7: AND
000012e8: DUP3
000012e9: ADD
000012ea: DUP1
000012eb: PUSH1 0x40
000012ed: MSTORE
000012ee: POP
000012ef: DUP2
000012f0: ADD
000012f1: SWAP1
000012f2: PUSH2 0x12fb
000012f5: SWAP2
000012f6: SWAP1
000012f7: PUSH2 0x1f7c
000012fa: JUMP
000012fb: JUMPDEST
000012fc: SWAP1
000012fd: POP
000012fe: DUP1
000012ff: ISZERO
00001300: DUP1
00001301: ISZERO
00001302: PUSH2 0x130b
00001305: JUMPI
00001306: POP
00001307: PUSH1 0xcf
00001309: SLOAD
0000130a: ISZERO
0000130b: JUMPDEST
0000130c: ISZERO
0000130d: PUSH2 0x1318
00001310: JUMPI
00001311: DUP3
00001312: SWAP2
00001313: POP
00001314: PUSH2 0x1129
00001317: JUMP
00001318: JUMPDEST
00001319: PUSH1 0xcf
0000131b: SLOAD
0000131c: PUSH2 0x111c
0000131f: DUP3
00001320: DUP6
00001321: PUSH2 0x1fa8
00001324: JUMP
00001325: JUMPDEST
00001326: PUSH1 0xcc
00001328: SLOAD
00001329: PUSH1 0x01
0000132b: PUSH1 0x01
0000132d: PUSH1 0xa0
0000132f: SHL
00001330: SUB
00001331: AND
00001332: CALLER
00001333: EQ
00001334: DUP1
00001335: PUSH2 0x1348
00001338: JUMPI
00001339: POP
0000133a: PUSH1 0xcd
0000133c: SLOAD
0000133d: PUSH1 0x01
0000133f: PUSH1 0x01
00001341: PUSH1 0xa0
00001343: SHL
00001344: SUB
00001345: AND
00001346: CALLER
00001347: EQ
00001348: JUMPDEST
00001349: PUSH2 0x1394
0000134c: JUMPI
0000134d: PUSH1 0x40
0000134f: MLOAD
00001350: PUSH3 0x461bcd
00001354: PUSH1 0xe5
00001356: SHL
00001357: DUP2
00001358: MSTORE
00001359: PUSH1 0x20
0000135b: PUSH1 0x04
0000135d: DUP3
0000135e: ADD
0000135f: MSTORE
00001360: PUSH1 0x1c
00001362: PUSH1 0x24
00001364: DUP3
00001365: ADD
00001366: MSTORE
00001367: PUSH32 0x43616c6c6572206973206e6f74207661756c7420636f6e747261637400000000
00001388: PUSH1 0x44
0000138a: DUP3
0000138b: ADD
0000138c: MSTORE
0000138d: PUSH1 0x64
0000138f: ADD
00001390: PUSH2 0x063c
00001393: JUMP
00001394: JUMPDEST
00001395: PUSH2 0x139c
00001398: PUSH2 0x15be
0000139b: JUMP
0000139c: JUMPDEST
0000139d: DUP1
0000139e: PUSH1 0xcf
000013a0: SLOAD
000013a1: GT
000013a2: PUSH2 0x13ed
000013a5: JUMPI
000013a6: PUSH1 0x40
000013a8: MLOAD
000013a9: PUSH3 0x461bcd
000013ad: PUSH1 0xe5
000013af: SHL
000013b0: DUP2
000013b1: MSTORE
000013b2: PUSH1 0x20
000013b4: PUSH1 0x04
000013b6: DUP3
000013b7: ADD
000013b8: MSTORE
000013b9: PUSH1 0x18
000013bb: PUSH1 0x24
000013bd: DUP3
000013be: ADD
000013bf: MSTORE
000013c0: PUSH32 0x496e73756666696369656e7420706f6f6c20616d6f756e740000000000000000
000013e1: PUSH1 0x44
000013e3: DUP3
000013e4: ADD
000013e5: MSTORE
000013e6: PUSH1 0x64
000013e8: ADD
000013e9: PUSH2 0x063c
000013ec: JUMP
000013ed: JUMPDEST
000013ee: DUP1
000013ef: PUSH1 0xcf
000013f1: SLOAD
000013f2: PUSH2 0x13fb
000013f5: SWAP2
000013f6: SWAP1
000013f7: PUSH2 0x1f95
000013fa: JUMP
000013fb: JUMPDEST
000013fc: PUSH1 0xcf
000013fe: SSTORE
000013ff: PUSH1 0x40
00001401: MLOAD
00001402: DUP2
00001403: DUP2
00001404: MSTORE
00001405: CALLER
00001406: SWAP1
00001407: PUSH32 0xccdd1b4597f1516187e25b38fbad3e75a428981d2a1d898667abb3cdd95a672f
00001428: SWAP1
00001429: PUSH1 0x20
0000142b: ADD
0000142c: JUMPDEST
0000142d: PUSH1 0x40
0000142f: MLOAD
00001430: DUP1
00001431: SWAP2
00001432: SUB
00001433: SWAP1
00001434: LOG2
00001435: POP
00001436: JUMP
00001437: JUMPDEST
00001438: PUSH1 0xcd
0000143a: SLOAD
0000143b: PUSH1 0x01
0000143d: PUSH1 0x01
0000143f: PUSH1 0xa0
00001441: SHL
00001442: SUB
00001443: AND
00001444: CALLER
00001445: EQ
00001446: PUSH2 0x1491
00001449: JUMPI
0000144a: PUSH1 0x40
0000144c: MLOAD
0000144d: PUSH3 0x461bcd
00001451: PUSH1 0xe5
00001453: SHL
00001454: DUP2
00001455: MSTORE
00001456: PUSH1 0x20
00001458: PUSH1 0x04
0000145a: DUP3
0000145b: ADD
0000145c: DUP2
0000145d: SWAP1
0000145e: MSTORE
0000145f: PUSH1 0x24
00001461: DUP3
00001462: ADD
00001463: MSTORE
00001464: PUSH32 0x496e76616c6964207769746864726177616c207661756c742061646472657373
00001485: PUSH1 0x44
00001487: DUP3
00001488: ADD
00001489: MSTORE
0000148a: PUSH1 0x64
0000148c: ADD
0000148d: PUSH2 0x063c
00001490: JUMP
00001491: JUMPDEST
00001492: PUSH1 0x40
00001494: MLOAD
00001495: CALLVALUE
00001496: DUP2
00001497: MSTORE
00001498: CALLER
00001499: SWAP1
0000149a: PUSH32 0x0a89b53a0597c8291bcd6a87acb5dc18d0123915629a55c470bfbfd4680f591e
000014bb: SWAP1
000014bc: PUSH1 0x20
000014be: ADD
000014bf: PUSH1 0x40
000014c1: MLOAD
000014c2: DUP1
000014c3: SWAP2
000014c4: SUB
000014c5: SWAP1
000014c6: LOG2
000014c7: JUMP
000014c8: JUMPDEST
000014c9: PUSH2 0x14d0
000014cc: PUSH2 0x17c6
000014cf: JUMP
000014d0: JUMPDEST
000014d1: PUSH2 0x14da
000014d4: DUP3
000014d5: DUP3
000014d6: PUSH2 0x1a47
000014d9: JUMP
000014da: JUMPDEST
000014db: POP
000014dc: POP
000014dd: JUMP
000014de: JUMPDEST
000014df: PUSH2 0x14e6
000014e2: PUSH2 0x17c6
000014e5: JUMP
000014e6: JUMPDEST
000014e7: PUSH2 0x0be6
000014ea: DUP2
000014eb: PUSH2 0x1720
000014ee: JUMP
000014ef: JUMPDEST
000014f0: PUSH2 0x14f7
000014f3: PUSH2 0x17c6
000014f6: JUMP
000014f7: JUMPDEST
000014f8: PUSH1 0x01
000014fa: PUSH1 0x01
000014fc: PUSH1 0xa0
000014fe: SHL
000014ff: SUB
00001500: DUP2
00001501: AND
00001502: PUSH2 0x155c
00001505: JUMPI
00001506: PUSH1 0x40
00001508: MLOAD
00001509: PUSH3 0x461bcd
0000150d: PUSH1 0xe5
0000150f: SHL
00001510: DUP2
00001511: MSTORE
00001512: PUSH1 0x20
00001514: PUSH1 0x04
00001516: DUP3
00001517: ADD
00001518: MSTORE
00001519: PUSH1 0x26
0000151b: PUSH1 0x24
0000151d: DUP3
0000151e: ADD
0000151f: MSTORE
00001520: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00001541: PUSH1 0x44
00001543: DUP3
00001544: ADD
00001545: MSTORE
00001546: PUSH6 0x646472657373
0000154d: PUSH1 0xd0
0000154f: SHL
00001550: PUSH1 0x64
00001552: DUP3
00001553: ADD
00001554: MSTORE
00001555: PUSH1 0x84
00001557: ADD
00001558: PUSH2 0x063c
0000155b: JUMP
0000155c: JUMPDEST
0000155d: PUSH2 0x0be6
00001560: DUP2
00001561: PUSH2 0x18d2
00001564: JUMP
00001565: JUMPDEST
00001566: PUSH1 0x02
00001568: PUSH1 0x65
0000156a: SLOAD
0000156b: SUB
0000156c: PUSH2 0x15b7
0000156f: JUMPI
00001570: PUSH1 0x40
00001572: MLOAD
00001573: PUSH3 0x461bcd
00001577: PUSH1 0xe5
00001579: SHL
0000157a: DUP2
0000157b: MSTORE
0000157c: PUSH1 0x20
0000157e: PUSH1 0x04
00001580: DUP3
00001581: ADD
00001582: MSTORE
00001583: PUSH1 0x1f
00001585: PUSH1 0x24
00001587: DUP3
00001588: ADD
00001589: MSTORE
0000158a: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
000015ab: PUSH1 0x44
000015ad: DUP3
000015ae: ADD
000015af: MSTORE
000015b0: PUSH1 0x64
000015b2: ADD
000015b3: PUSH2 0x063c
000015b6: JUMP
000015b7: JUMPDEST
000015b8: PUSH1 0x02
000015ba: PUSH1 0x65
000015bc: SSTORE
000015bd: JUMP
000015be: JUMPDEST
000015bf: PUSH1 0x97
000015c1: SLOAD
000015c2: PUSH1 0xff
000015c4: AND
000015c5: ISZERO
000015c6: PUSH2 0x078f
000015c9: JUMPI
000015ca: PUSH1 0x40
000015cc: MLOAD
000015cd: PUSH3 0x461bcd
000015d1: PUSH1 0xe5
000015d3: SHL
000015d4: DUP2
000015d5: MSTORE
000015d6: PUSH1 0x20
000015d8: PUSH1 0x04
000015da: DUP3
000015db: ADD
000015dc: MSTORE
000015dd: PUSH1 0x10
000015df: PUSH1 0x24
000015e1: DUP3
000015e2: ADD
000015e3: MSTORE
000015e4: PUSH16 0x14185d5cd8589b194e881c185d5cd959
000015f5: PUSH1 0x82
000015f7: SHL
000015f8: PUSH1 0x44
000015fa: DUP3
000015fb: ADD
000015fc: MSTORE
000015fd: PUSH1 0x64
000015ff: ADD
00001600: PUSH2 0x063c
00001603: JUMP
00001604: JUMPDEST
00001605: PUSH1 0x01
00001607: PUSH1 0x65
00001609: SSTORE
0000160a: JUMP
0000160b: JUMPDEST
0000160c: PUSH1 0x00
0000160e: SLOAD
0000160f: PUSH2 0x0100
00001612: SWAP1
00001613: DIV
00001614: PUSH1 0xff
00001616: AND
00001617: PUSH2 0x1632
0000161a: JUMPI
0000161b: PUSH1 0x40
0000161d: MLOAD
0000161e: PUSH3 0x461bcd
00001622: PUSH1 0xe5
00001624: SHL
00001625: DUP2
00001626: MSTORE
00001627: PUSH1 0x04
00001629: ADD
0000162a: PUSH2 0x063c
0000162d: SWAP1
0000162e: PUSH2 0x1fe1
00001631: JUMP
00001632: JUMPDEST
00001633: PUSH2 0x078f
00001636: PUSH2 0x1b60
00001639: JUMP
0000163a: JUMPDEST
0000163b: PUSH1 0x00
0000163d: SLOAD
0000163e: PUSH2 0x0100
00001641: SWAP1
00001642: DIV
00001643: PUSH1 0xff
00001645: AND
00001646: PUSH2 0x1661
00001649: JUMPI
0000164a: PUSH1 0x40
0000164c: MLOAD
0000164d: PUSH3 0x461bcd
00001651: PUSH1 0xe5
00001653: SHL
00001654: DUP2
00001655: MSTORE
00001656: PUSH1 0x04
00001658: ADD
00001659: PUSH2 0x063c
0000165c: SWAP1
0000165d: PUSH2 0x1fe1
00001660: JUMP
00001661: JUMPDEST
00001662: PUSH2 0x078f
00001665: PUSH2 0x1b90
00001668: JUMP
00001669: JUMPDEST
0000166a: PUSH1 0x00
0000166c: SLOAD
0000166d: PUSH2 0x0100
00001670: SWAP1
00001671: DIV
00001672: PUSH1 0xff
00001674: AND
00001675: PUSH2 0x1690
00001678: JUMPI
00001679: PUSH1 0x40
0000167b: MLOAD
0000167c: PUSH3 0x461bcd
00001680: PUSH1 0xe5
00001682: SHL
00001683: DUP2
00001684: MSTORE
00001685: PUSH1 0x04
00001687: ADD
00001688: PUSH2 0x063c
0000168b: SWAP1
0000168c: PUSH2 0x1fe1
0000168f: JUMP
00001690: JUMPDEST
00001691: PUSH2 0x078f
00001694: PUSH2 0x1bb7
00001697: JUMP
00001698: JUMPDEST
00001699: PUSH8 0x0de0b6b3a7640000
000016a2: DUP2
000016a3: GT
000016a4: ISZERO
000016a5: PUSH2 0x16e9
000016a8: JUMPI
000016a9: PUSH1 0x40
000016ab: MLOAD
000016ac: PUSH3 0x461bcd
000016b0: PUSH1 0xe5
000016b2: SHL
000016b3: DUP2
000016b4: MSTORE
000016b5: PUSH1 0x20
000016b7: PUSH1 0x04
000016b9: DUP3
000016ba: ADD
000016bb: MSTORE
000016bc: PUSH1 0x16
000016be: PUSH1 0x24
000016c0: DUP3
000016c1: ADD
000016c2: MSTORE
000016c3: PUSH22 0x466565207261746520657863656564732072616e6765
000016da: PUSH1 0x50
000016dc: SHL
000016dd: PUSH1 0x44
000016df: DUP3
000016e0: ADD
000016e1: MSTORE
000016e2: PUSH1 0x64
000016e4: ADD
000016e5: PUSH2 0x063c
000016e8: JUMP
000016e9: JUMPDEST
000016ea: PUSH1 0xd0
000016ec: DUP2
000016ed: SWAP1
000016ee: SSTORE
000016ef: PUSH1 0x40
000016f1: MLOAD
000016f2: DUP2
000016f3: DUP2
000016f4: MSTORE
000016f5: CALLER
000016f6: SWAP1
000016f7: PUSH32 0x021ec04e349d47f898250a9525e5ab79abae4d9a0a3f0e6c5a5d61f3a8b87378
00001718: SWAP1
00001719: PUSH1 0x20
0000171b: ADD
0000171c: PUSH2 0x142c
0000171f: JUMP
00001720: JUMPDEST
00001721: PUSH1 0x01
00001723: PUSH1 0x01
00001725: PUSH1 0xa0
00001727: SHL
00001728: SUB
00001729: DUP2
0000172a: AND
0000172b: PUSH2 0x1776
0000172e: JUMPI
0000172f: PUSH1 0x40
00001731: MLOAD
00001732: PUSH3 0x461bcd
00001736: PUSH1 0xe5
00001738: SHL
00001739: DUP2
0000173a: MSTORE
0000173b: PUSH1 0x20
0000173d: PUSH1 0x04
0000173f: DUP3
00001740: ADD
00001741: MSTORE
00001742: PUSH1 0x1c
00001744: PUSH1 0x24
00001746: DUP3
00001747: ADD
00001748: MSTORE
00001749: PUSH32 0x496e76616c696420666565207265636569766572206164647265737300000000
0000176a: PUSH1 0x44
0000176c: DUP3
0000176d: ADD
0000176e: MSTORE
0000176f: PUSH1 0x64
00001771: ADD
00001772: PUSH2 0x063c
00001775: JUMP
00001776: JUMPDEST
00001777: PUSH1 0xce
00001779: DUP1
0000177a: SLOAD
0000177b: PUSH1 0x01
0000177d: PUSH1 0x01
0000177f: PUSH1 0xa0
00001781: SHL
00001782: SUB
00001783: NOT
00001784: AND
00001785: PUSH1 0x01
00001787: PUSH1 0x01
00001789: PUSH1 0xa0
0000178b: SHL
0000178c: SUB
0000178d: DUP4
0000178e: AND
0000178f: SWAP1
00001790: DUP2
00001791: OR
00001792: SWAP1
00001793: SWAP2
00001794: SSTORE
00001795: PUSH1 0x40
00001797: MLOAD
00001798: SWAP1
00001799: DUP2
0000179a: MSTORE
0000179b: CALLER
0000179c: SWAP1
0000179d: PUSH32 0x49bc8f1c292131e71bfca22660d0716072ff2442b58d72840474dd83a390411c
000017be: SWAP1
000017bf: PUSH1 0x20
000017c1: ADD
000017c2: PUSH2 0x142c
000017c5: JUMP
000017c6: JUMPDEST
000017c7: PUSH1 0x33
000017c9: SLOAD
000017ca: PUSH1 0x01
000017cc: PUSH1 0x01
000017ce: PUSH1 0xa0
000017d0: SHL
000017d1: SUB
000017d2: AND
000017d3: CALLER
000017d4: EQ
000017d5: PUSH2 0x078f
000017d8: JUMPI
000017d9: PUSH1 0x40
000017db: MLOAD
000017dc: PUSH3 0x461bcd
000017e0: PUSH1 0xe5
000017e2: SHL
000017e3: DUP2
000017e4: MSTORE
000017e5: PUSH1 0x20
000017e7: PUSH1 0x04
000017e9: DUP3
000017ea: ADD
000017eb: DUP2
000017ec: SWAP1
000017ed: MSTORE
000017ee: PUSH1 0x24
000017f0: DUP3
000017f1: ADD
000017f2: MSTORE
000017f3: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00001814: PUSH1 0x44
00001816: DUP3
00001817: ADD
00001818: MSTORE
00001819: PUSH1 0x64
0000181b: ADD
0000181c: PUSH2 0x063c
0000181f: JUMP
00001820: JUMPDEST
00001821: PUSH2 0x1828
00001824: PUSH2 0x1bea
00001827: JUMP
00001828: JUMPDEST
00001829: PUSH1 0x97
0000182b: DUP1
0000182c: SLOAD
0000182d: PUSH1 0xff
0000182f: NOT
00001830: AND
00001831: SWAP1
00001832: SSTORE
00001833: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
00001854: CALLER
00001855: JUMPDEST
00001856: PUSH1 0x40
00001858: MLOAD
00001859: PUSH1 0x01
0000185b: PUSH1 0x01
0000185d: PUSH1 0xa0
0000185f: SHL
00001860: SUB
00001861: SWAP1
00001862: SWAP2
00001863: AND
00001864: DUP2
00001865: MSTORE
00001866: PUSH1 0x20
00001868: ADD
00001869: PUSH1 0x40
0000186b: MLOAD
0000186c: DUP1
0000186d: SWAP2
0000186e: SUB
0000186f: SWAP1
00001870: LOG1
00001871: JUMP
00001872: JUMPDEST
00001873: PUSH1 0x40
00001875: DUP1
00001876: MLOAD
00001877: PUSH1 0x01
00001879: PUSH1 0x01
0000187b: PUSH1 0xa0
0000187d: SHL
0000187e: SUB
0000187f: DUP6
00001880: DUP2
00001881: AND
00001882: PUSH1 0x24
00001884: DUP4
00001885: ADD
00001886: MSTORE
00001887: DUP5
00001888: AND
00001889: PUSH1 0x44
0000188b: DUP3
0000188c: ADD
0000188d: MSTORE
0000188e: PUSH1 0x64
00001890: DUP1
00001891: DUP3
00001892: ADD
00001893: DUP5
00001894: SWAP1
00001895: MSTORE
00001896: DUP3
00001897: MLOAD
00001898: DUP1
00001899: DUP4
0000189a: SUB
0000189b: SWAP1
0000189c: SWAP2
0000189d: ADD
0000189e: DUP2
0000189f: MSTORE
000018a0: PUSH1 0x84
000018a2: SWAP1
000018a3: SWAP2
000018a4: ADD
000018a5: SWAP1
000018a6: SWAP2
000018a7: MSTORE
000018a8: PUSH1 0x20
000018aa: DUP2
000018ab: ADD
000018ac: DUP1
000018ad: MLOAD
000018ae: PUSH1 0x01
000018b0: PUSH1 0x01
000018b2: PUSH1 0xe0
000018b4: SHL
000018b5: SUB
000018b6: AND
000018b7: PUSH4 0x23b872dd
000018bc: PUSH1 0xe0
000018be: SHL
000018bf: OR
000018c0: SWAP1
000018c1: MSTORE
000018c2: PUSH2 0x18cc
000018c5: SWAP1
000018c6: DUP6
000018c7: SWAP1
000018c8: PUSH2 0x1c33
000018cb: JUMP
000018cc: JUMPDEST
000018cd: POP
000018ce: POP
000018cf: POP
000018d0: POP
000018d1: JUMP
000018d2: JUMPDEST
000018d3: PUSH1 0x33
000018d5: DUP1
000018d6: SLOAD
000018d7: PUSH1 0x01
000018d9: PUSH1 0x01
000018db: PUSH1 0xa0
000018dd: SHL
000018de: SUB
000018df: DUP4
000018e0: DUP2
000018e1: AND
000018e2: PUSH1 0x01
000018e4: PUSH1 0x01
000018e6: PUSH1 0xa0
000018e8: SHL
000018e9: SUB
000018ea: NOT
000018eb: DUP4
000018ec: AND
000018ed: DUP2
000018ee: OR
000018ef: SWAP1
000018f0: SWAP4
000018f1: SSTORE
000018f2: PUSH1 0x40
000018f4: MLOAD
000018f5: SWAP2
000018f6: AND
000018f7: SWAP2
000018f8: SWAP1
000018f9: DUP3
000018fa: SWAP1
000018fb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000191c: SWAP1
0000191d: PUSH1 0x00
0000191f: SWAP1
00001920: LOG3
00001921: POP
00001922: POP
00001923: JUMP
00001924: JUMPDEST
00001925: PUSH2 0x192c
00001928: PUSH2 0x15be
0000192b: JUMP
0000192c: JUMPDEST
0000192d: PUSH1 0x97
0000192f: DUP1
00001930: SLOAD
00001931: PUSH1 0xff
00001933: NOT
00001934: AND
00001935: PUSH1 0x01
00001937: OR
00001938: SWAP1
00001939: SSTORE
0000193a: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
0000195b: PUSH2 0x1855
0000195e: CALLER
0000195f: SWAP1
00001960: JUMP
00001961: JUMPDEST
00001962: DUP1
00001963: SELFBALANCE
00001964: LT
00001965: ISZERO
00001966: PUSH2 0x19a8
00001969: JUMPI
0000196a: PUSH1 0x40
0000196c: MLOAD
0000196d: PUSH3 0x461bcd
00001971: PUSH1 0xe5
00001973: SHL
00001974: DUP2
00001975: MSTORE
00001976: PUSH1 0x20
00001978: PUSH1 0x04
0000197a: DUP3
0000197b: ADD
0000197c: MSTORE
0000197d: PUSH1 0x14
0000197f: PUSH1 0x24
00001981: DUP3
00001982: ADD
00001983: MSTORE
00001984: PUSH20 0x496e73756666696369656e742062616c616e6365
00001999: PUSH1 0x60
0000199b: SHL
0000199c: PUSH1 0x44
0000199e: DUP3
0000199f: ADD
000019a0: MSTORE
000019a1: PUSH1 0x64
000019a3: ADD
000019a4: PUSH2 0x063c
000019a7: JUMP
000019a8: JUMPDEST
000019a9: PUSH1 0x00
000019ab: DUP3
000019ac: PUSH1 0x01
000019ae: PUSH1 0x01
000019b0: PUSH1 0xa0
000019b2: SHL
000019b3: SUB
000019b4: AND
000019b5: DUP3
000019b6: PUSH1 0x40
000019b8: MLOAD
000019b9: PUSH1 0x00
000019bb: PUSH1 0x40
000019bd: MLOAD
000019be: DUP1
000019bf: DUP4
000019c0: SUB
000019c1: DUP2
000019c2: DUP6
000019c3: DUP8
000019c4: GAS
000019c5: CALL
000019c6: SWAP3
000019c7: POP
000019c8: POP
000019c9: POP
000019ca: RETURNDATASIZE
000019cb: DUP1
000019cc: PUSH1 0x00
000019ce: DUP2
000019cf: EQ
000019d0: PUSH2 0x19f5
000019d3: JUMPI
000019d4: PUSH1 0x40
000019d6: MLOAD
000019d7: SWAP2
000019d8: POP
000019d9: PUSH1 0x1f
000019db: NOT
000019dc: PUSH1 0x3f
000019de: RETURNDATASIZE
000019df: ADD
000019e0: AND
000019e1: DUP3
000019e2: ADD
000019e3: PUSH1 0x40
000019e5: MSTORE
000019e6: RETURNDATASIZE
000019e7: DUP3
000019e8: MSTORE
000019e9: RETURNDATASIZE
000019ea: PUSH1 0x00
000019ec: PUSH1 0x20
000019ee: DUP5
000019ef: ADD
000019f0: RETURNDATACOPY
000019f1: PUSH2 0x19fa
000019f4: JUMP
000019f5: JUMPDEST
000019f6: PUSH1 0x60
000019f8: SWAP2
000019f9: POP
000019fa: JUMPDEST
000019fb: POP
000019fc: POP
000019fd: SWAP1
000019fe: POP
000019ff: DUP1
00001a00: PUSH2 0x1a42
00001a03: JUMPI
00001a04: PUSH1 0x40
00001a06: MLOAD
00001a07: PUSH3 0x461bcd
00001a0b: PUSH1 0xe5
00001a0d: SHL
00001a0e: DUP2
00001a0f: MSTORE
00001a10: PUSH1 0x20
00001a12: PUSH1 0x04
00001a14: DUP3
00001a15: ADD
00001a16: MSTORE
00001a17: PUSH1 0x14
00001a19: PUSH1 0x24
00001a1b: DUP3
00001a1c: ADD
00001a1d: MSTORE
00001a1e: PUSH20 0x556e61626c6520746f2073656e642076616c7565
00001a33: PUSH1 0x60
00001a35: SHL
00001a36: PUSH1 0x44
00001a38: DUP3
00001a39: ADD
00001a3a: MSTORE
00001a3b: PUSH1 0x64
00001a3d: ADD
00001a3e: PUSH2 0x063c
00001a41: JUMP
00001a42: JUMPDEST
00001a43: POP
00001a44: POP
00001a45: POP
00001a46: JUMP
00001a47: JUMPDEST
00001a48: DUP1
00001a49: SELFBALANCE
00001a4a: LT
00001a4b: ISZERO
00001a4c: PUSH2 0x1a97
00001a4f: JUMPI
00001a50: PUSH1 0x40
00001a52: MLOAD
00001a53: PUSH3 0x461bcd
00001a57: PUSH1 0xe5
00001a59: SHL
00001a5a: DUP2
00001a5b: MSTORE
00001a5c: PUSH1 0x20
00001a5e: PUSH1 0x04
00001a60: DUP3
00001a61: ADD
00001a62: MSTORE
00001a63: PUSH1 0x1d
00001a65: PUSH1 0x24
00001a67: DUP3
00001a68: ADD
00001a69: MSTORE
00001a6a: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000
00001a8b: PUSH1 0x44
00001a8d: DUP3
00001a8e: ADD
00001a8f: MSTORE
00001a90: PUSH1 0x64
00001a92: ADD
00001a93: PUSH2 0x063c
00001a96: JUMP
00001a97: JUMPDEST
00001a98: PUSH1 0x00
00001a9a: DUP3
00001a9b: PUSH1 0x01
00001a9d: PUSH1 0x01
00001a9f: PUSH1 0xa0
00001aa1: SHL
00001aa2: SUB
00001aa3: AND
00001aa4: DUP3
00001aa5: PUSH1 0x40
00001aa7: MLOAD
00001aa8: PUSH1 0x00
00001aaa: PUSH1 0x40
00001aac: MLOAD
00001aad: DUP1
00001aae: DUP4
00001aaf: SUB
00001ab0: DUP2
00001ab1: DUP6
00001ab2: DUP8
00001ab3: GAS
00001ab4: CALL
00001ab5: SWAP3
00001ab6: POP
00001ab7: POP
00001ab8: POP
00001ab9: RETURNDATASIZE
00001aba: DUP1
00001abb: PUSH1 0x00
00001abd: DUP2
00001abe: EQ
00001abf: PUSH2 0x1ae4
00001ac2: JUMPI
00001ac3: PUSH1 0x40
00001ac5: MLOAD
00001ac6: SWAP2
00001ac7: POP
00001ac8: PUSH1 0x1f
00001aca: NOT
00001acb: PUSH1 0x3f
00001acd: RETURNDATASIZE
00001ace: ADD
00001acf: AND
00001ad0: DUP3
00001ad1: ADD
00001ad2: PUSH1 0x40
00001ad4: MSTORE
00001ad5: RETURNDATASIZE
00001ad6: DUP3
00001ad7: MSTORE
00001ad8: RETURNDATASIZE
00001ad9: PUSH1 0x00
00001adb: PUSH1 0x20
00001add: DUP5
00001ade: ADD
00001adf: RETURNDATACOPY
00001ae0: PUSH2 0x1ae9
00001ae3: JUMP
00001ae4: JUMPDEST
00001ae5: PUSH1 0x60
00001ae7: SWAP2
00001ae8: POP
00001ae9: JUMPDEST
00001aea: POP
00001aeb: POP
00001aec: SWAP1
00001aed: POP
00001aee: DUP1
00001aef: PUSH2 0x1a42
00001af2: JUMPI
00001af3: PUSH1 0x40
00001af5: MLOAD
00001af6: PUSH3 0x461bcd
00001afa: PUSH1 0xe5
00001afc: SHL
00001afd: DUP2
00001afe: MSTORE
00001aff: PUSH1 0x20
00001b01: PUSH1 0x04
00001b03: DUP3
00001b04: ADD
00001b05: MSTORE
00001b06: PUSH1 0x3a
00001b08: PUSH1 0x24
00001b0a: DUP3
00001b0b: ADD
00001b0c: MSTORE
00001b0d: PUSH32 0x416464726573733a20756e61626c6520746f2073656e642076616c75652c2072
00001b2e: PUSH1 0x44
00001b30: DUP3
00001b31: ADD
00001b32: MSTORE
00001b33: PUSH32 0x6563697069656e74206d61792068617665207265766572746564000000000000
00001b54: PUSH1 0x64
00001b56: DUP3
00001b57: ADD
00001b58: MSTORE
00001b59: PUSH1 0x84
00001b5b: ADD
00001b5c: PUSH2 0x063c
00001b5f: JUMP
00001b60: JUMPDEST
00001b61: PUSH1 0x00
00001b63: SLOAD
00001b64: PUSH2 0x0100
00001b67: SWAP1
00001b68: DIV
00001b69: PUSH1 0xff
00001b6b: AND
00001b6c: PUSH2 0x1b87
00001b6f: JUMPI
00001b70: PUSH1 0x40
00001b72: MLOAD
00001b73: PUSH3 0x461bcd
00001b77: PUSH1 0xe5
00001b79: SHL
00001b7a: DUP2
00001b7b: MSTORE
00001b7c: PUSH1 0x04
00001b7e: ADD
00001b7f: PUSH2 0x063c
00001b82: SWAP1
00001b83: PUSH2 0x1fe1
00001b86: JUMP
00001b87: JUMPDEST
00001b88: PUSH2 0x078f
00001b8b: CALLER
00001b8c: PUSH2 0x18d2
00001b8f: JUMP
00001b90: JUMPDEST
00001b91: PUSH1 0x00
00001b93: SLOAD
00001b94: PUSH2 0x0100
00001b97: SWAP1
00001b98: DIV
00001b99: PUSH1 0xff
00001b9b: AND
00001b9c: PUSH2 0x1604
00001b9f: JUMPI
00001ba0: PUSH1 0x40
00001ba2: MLOAD
00001ba3: PUSH3 0x461bcd
00001ba7: PUSH1 0xe5
00001ba9: SHL
00001baa: DUP2
00001bab: MSTORE
00001bac: PUSH1 0x04
00001bae: ADD
00001baf: PUSH2 0x063c
00001bb2: SWAP1
00001bb3: PUSH2 0x1fe1
00001bb6: JUMP
00001bb7: JUMPDEST
00001bb8: PUSH1 0x00
00001bba: SLOAD
00001bbb: PUSH2 0x0100
00001bbe: SWAP1
00001bbf: DIV
00001bc0: PUSH1 0xff
00001bc2: AND
00001bc3: PUSH2 0x1bde
00001bc6: JUMPI
00001bc7: PUSH1 0x40
00001bc9: MLOAD
00001bca: PUSH3 0x461bcd
00001bce: PUSH1 0xe5
00001bd0: SHL
00001bd1: DUP2
00001bd2: MSTORE
00001bd3: PUSH1 0x04
00001bd5: ADD
00001bd6: PUSH2 0x063c
00001bd9: SWAP1
00001bda: PUSH2 0x1fe1
00001bdd: JUMP
00001bde: JUMPDEST
00001bdf: PUSH1 0x97
00001be1: DUP1
00001be2: SLOAD
00001be3: PUSH1 0xff
00001be5: NOT
00001be6: AND
00001be7: SWAP1
00001be8: SSTORE
00001be9: JUMP
00001bea: JUMPDEST
00001beb: PUSH1 0x97
00001bed: SLOAD
00001bee: PUSH1 0xff
00001bf0: AND
00001bf1: PUSH2 0x078f
00001bf4: JUMPI
00001bf5: PUSH1 0x40
00001bf7: MLOAD
00001bf8: PUSH3 0x461bcd
00001bfc: PUSH1 0xe5
00001bfe: SHL
00001bff: DUP2
00001c00: MSTORE
00001c01: PUSH1 0x20
00001c03: PUSH1 0x04
00001c05: DUP3
00001c06: ADD
00001c07: MSTORE
00001c08: PUSH1 0x14
00001c0a: PUSH1 0x24
00001c0c: DUP3
00001c0d: ADD
00001c0e: MSTORE
00001c0f: PUSH20 0x14185d5cd8589b194e881b9bdd081c185d5cd959
00001c24: PUSH1 0x62
00001c26: SHL
00001c27: PUSH1 0x44
00001c29: DUP3
00001c2a: ADD
00001c2b: MSTORE
00001c2c: PUSH1 0x64
00001c2e: ADD
00001c2f: PUSH2 0x063c
00001c32: JUMP
00001c33: JUMPDEST
00001c34: PUSH1 0x00
00001c36: PUSH2 0x1c88
00001c39: DUP3
00001c3a: PUSH1 0x40
00001c3c: MLOAD
00001c3d: DUP1
00001c3e: PUSH1 0x40
00001c40: ADD
00001c41: PUSH1 0x40
00001c43: MSTORE
00001c44: DUP1
00001c45: PUSH1 0x20
00001c47: DUP2
00001c48: MSTORE
00001c49: PUSH1 0x20
00001c4b: ADD
00001c4c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001c6d: DUP2
00001c6e: MSTORE
00001c6f: POP
00001c70: DUP6
00001c71: PUSH1 0x01
00001c73: PUSH1 0x01
00001c75: PUSH1 0xa0
00001c77: SHL
00001c78: SUB
00001c79: AND
00001c7a: PUSH2 0x1d05
00001c7d: SWAP1
00001c7e: SWAP3
00001c7f: SWAP2
00001c80: SWAP1
00001c81: PUSH4 0xffffffff
00001c86: AND
00001c87: JUMP
00001c88: JUMPDEST
00001c89: DUP1
00001c8a: MLOAD
00001c8b: SWAP1
00001c8c: SWAP2
00001c8d: POP
00001c8e: ISZERO
00001c8f: PUSH2 0x1a42
00001c92: JUMPI
00001c93: DUP1
00001c94: DUP1
00001c95: PUSH1 0x20
00001c97: ADD
00001c98: SWAP1
00001c99: MLOAD
00001c9a: DUP2
00001c9b: ADD
00001c9c: SWAP1
00001c9d: PUSH2 0x1ca6
00001ca0: SWAP2
00001ca1: SWAP1
00001ca2: PUSH2 0x202c
00001ca5: JUMP
00001ca6: JUMPDEST
00001ca7: PUSH2 0x1a42
00001caa: JUMPI
00001cab: PUSH1 0x40
00001cad: MLOAD
00001cae: PUSH3 0x461bcd
00001cb2: PUSH1 0xe5
00001cb4: SHL
00001cb5: DUP2
00001cb6: MSTORE
00001cb7: PUSH1 0x20
00001cb9: PUSH1 0x04
00001cbb: DUP3
00001cbc: ADD
00001cbd: MSTORE
00001cbe: PUSH1 0x2a
00001cc0: PUSH1 0x24
00001cc2: DUP3
00001cc3: ADD
00001cc4: MSTORE
00001cc5: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00001ce6: PUSH1 0x44
00001ce8: DUP3
00001ce9: ADD
00001cea: MSTORE
00001ceb: PUSH10 0x1bdd081cdd58d8d95959
00001cf6: PUSH1 0xb2
00001cf8: SHL
00001cf9: PUSH1 0x64
00001cfb: DUP3
00001cfc: ADD
00001cfd: MSTORE
00001cfe: PUSH1 0x84
00001d00: ADD
00001d01: PUSH2 0x063c
00001d04: JUMP
00001d05: JUMPDEST
00001d06: PUSH1 0x60
00001d08: PUSH2 0x0c76
00001d0b: DUP5
00001d0c: DUP5
00001d0d: PUSH1 0x00
00001d0f: DUP6
00001d10: DUP6
00001d11: PUSH1 0x00
00001d13: DUP1
00001d14: DUP7
00001d15: PUSH1 0x01
00001d17: PUSH1 0x01
00001d19: PUSH1 0xa0
00001d1b: SHL
00001d1c: SUB
00001d1d: AND
00001d1e: DUP6
00001d1f: DUP8
00001d20: PUSH1 0x40
00001d22: MLOAD
00001d23: PUSH2 0x1d2c
00001d26: SWAP2
00001d27: SWAP1
00001d28: PUSH2 0x2072
00001d2b: JUMP
00001d2c: JUMPDEST
00001d2d: PUSH1 0x00
00001d2f: PUSH1 0x40
00001d31: MLOAD
00001d32: DUP1
00001d33: DUP4
00001d34: SUB
00001d35: DUP2
00001d36: DUP6
00001d37: DUP8
00001d38: GAS
00001d39: CALL
00001d3a: SWAP3
00001d3b: POP
00001d3c: POP
00001d3d: POP
00001d3e: RETURNDATASIZE
00001d3f: DUP1
00001d40: PUSH1 0x00
00001d42: DUP2
00001d43: EQ
00001d44: PUSH2 0x1d69
00001d47: JUMPI
00001d48: PUSH1 0x40
00001d4a: MLOAD
00001d4b: SWAP2
00001d4c: POP
00001d4d: PUSH1 0x1f
00001d4f: NOT
00001d50: PUSH1 0x3f
00001d52: RETURNDATASIZE
00001d53: ADD
00001d54: AND
00001d55: DUP3
00001d56: ADD
00001d57: PUSH1 0x40
00001d59: MSTORE
00001d5a: RETURNDATASIZE
00001d5b: DUP3
00001d5c: MSTORE
00001d5d: RETURNDATASIZE
00001d5e: PUSH1 0x00
00001d60: PUSH1 0x20
00001d62: DUP5
00001d63: ADD
00001d64: RETURNDATACOPY
00001d65: PUSH2 0x1d6e
00001d68: JUMP
00001d69: JUMPDEST
00001d6a: PUSH1 0x60
00001d6c: SWAP2
00001d6d: POP
00001d6e: JUMPDEST
00001d6f: POP
00001d70: SWAP2
00001d71: POP
00001d72: SWAP2
00001d73: POP
00001d74: PUSH2 0x1d7f
00001d77: DUP8
00001d78: DUP4
00001d79: DUP4
00001d7a: DUP8
00001d7b: PUSH2 0x1d8a
00001d7e: JUMP
00001d7f: JUMPDEST
00001d80: SWAP8
00001d81: SWAP7
00001d82: POP
00001d83: POP
00001d84: POP
00001d85: POP
00001d86: POP
00001d87: POP
00001d88: POP
00001d89: JUMP
00001d8a: JUMPDEST
00001d8b: PUSH1 0x60
00001d8d: DUP4
00001d8e: ISZERO
00001d8f: PUSH2 0x1df9
00001d92: JUMPI
00001d93: DUP3
00001d94: MLOAD
00001d95: PUSH1 0x00
00001d97: SUB
00001d98: PUSH2 0x1df2
00001d9b: JUMPI
00001d9c: PUSH1 0x01
00001d9e: PUSH1 0x01
00001da0: PUSH1 0xa0
00001da2: SHL
00001da3: SUB
00001da4: DUP6
00001da5: AND
00001da6: EXTCODESIZE
00001da7: PUSH2 0x1df2
00001daa: JUMPI
00001dab: PUSH1 0x40
00001dad: MLOAD
00001dae: PUSH3 0x461bcd
00001db2: PUSH1 0xe5
00001db4: SHL
00001db5: DUP2
00001db6: MSTORE
00001db7: PUSH1 0x20
00001db9: PUSH1 0x04
00001dbb: DUP3
00001dbc: ADD
00001dbd: MSTORE
00001dbe: PUSH1 0x1d
00001dc0: PUSH1 0x24
00001dc2: DUP3
00001dc3: ADD
00001dc4: MSTORE
00001dc5: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001de6: PUSH1 0x44
00001de8: DUP3
00001de9: ADD
00001dea: MSTORE
00001deb: PUSH1 0x64
00001ded: ADD
00001dee: PUSH2 0x063c
00001df1: JUMP
00001df2: JUMPDEST
00001df3: POP
00001df4: DUP2
00001df5: PUSH2 0x0c76
00001df8: JUMP
00001df9: JUMPDEST
00001dfa: PUSH2 0x0c76
00001dfd: DUP4
00001dfe: DUP4
00001dff: DUP2
00001e00: MLOAD
00001e01: ISZERO
00001e02: PUSH2 0x1e0e
00001e05: JUMPI
00001e06: DUP2
00001e07: MLOAD
00001e08: DUP1
00001e09: DUP4
00001e0a: PUSH1 0x20
00001e0c: ADD
00001e0d: REVERT
00001e0e: JUMPDEST
00001e0f: DUP1
00001e10: PUSH1 0x40
00001e12: MLOAD
00001e13: PUSH3 0x461bcd
00001e17: PUSH1 0xe5
00001e19: SHL
00001e1a: DUP2
00001e1b: MSTORE
00001e1c: PUSH1 0x04
00001e1e: ADD
00001e1f: PUSH2 0x063c
00001e22: SWAP2
00001e23: SWAP1
00001e24: PUSH2 0x208e
00001e27: JUMP
00001e28: JUMPDEST
00001e29: DUP1
00001e2a: CALLDATALOAD
00001e2b: PUSH1 0x01
00001e2d: PUSH1 0x01
00001e2f: PUSH1 0xa0
00001e31: SHL
00001e32: SUB
00001e33: DUP2
00001e34: AND
00001e35: DUP2
00001e36: EQ
00001e37: PUSH2 0x1e3f
00001e3a: JUMPI
00001e3b: PUSH1 0x00
00001e3d: DUP1
00001e3e: REVERT
00001e3f: JUMPDEST
00001e40: SWAP2
00001e41: SWAP1
00001e42: POP
00001e43: JUMP
00001e44: JUMPDEST
00001e45: PUSH1 0x00
00001e47: DUP1
00001e48: PUSH1 0x00
00001e4a: DUP1
00001e4b: PUSH1 0x00
00001e4d: DUP1
00001e4e: PUSH1 0x00
00001e50: PUSH1 0xe0
00001e52: DUP9
00001e53: DUP11
00001e54: SUB
00001e55: SLT
00001e56: ISZERO
00001e57: PUSH2 0x1e5f
00001e5a: JUMPI
00001e5b: PUSH1 0x00
00001e5d: DUP1
00001e5e: REVERT
00001e5f: JUMPDEST
00001e60: PUSH2 0x1e68
00001e63: DUP9
00001e64: PUSH2 0x1e28
00001e67: JUMP
00001e68: JUMPDEST
00001e69: SWAP7
00001e6a: POP
00001e6b: PUSH2 0x1e76
00001e6e: PUSH1 0x20
00001e70: DUP10
00001e71: ADD
00001e72: PUSH2 0x1e28
00001e75: JUMP
00001e76: JUMPDEST
00001e77: SWAP6
00001e78: POP
00001e79: PUSH2 0x1e84
00001e7c: PUSH1 0x40
00001e7e: DUP10
00001e7f: ADD
00001e80: PUSH2 0x1e28
00001e83: JUMP
00001e84: JUMPDEST
00001e85: SWAP5
00001e86: POP
00001e87: PUSH2 0x1e92
00001e8a: PUSH1 0x60
00001e8c: DUP10
00001e8d: ADD
00001e8e: PUSH2 0x1e28
00001e91: JUMP
00001e92: JUMPDEST
00001e93: SWAP4
00001e94: POP
00001e95: PUSH2 0x1ea0
00001e98: PUSH1 0x80
00001e9a: DUP10
00001e9b: ADD
00001e9c: PUSH2 0x1e28
00001e9f: JUMP
00001ea0: JUMPDEST
00001ea1: SWAP3
00001ea2: POP
00001ea3: PUSH2 0x1eae
00001ea6: PUSH1 0xa0
00001ea8: DUP10
00001ea9: ADD
00001eaa: PUSH2 0x1e28
00001ead: JUMP
00001eae: JUMPDEST
00001eaf: SWAP2
00001eb0: POP
00001eb1: PUSH1 0xc0
00001eb3: DUP9
00001eb4: ADD
00001eb5: CALLDATALOAD
00001eb6: SWAP1
00001eb7: POP
00001eb8: SWAP3
00001eb9: SWAP6
00001eba: SWAP9
00001ebb: SWAP2
00001ebc: SWAP5
00001ebd: SWAP8
00001ebe: POP
00001ebf: SWAP3
00001ec0: SWAP6
00001ec1: POP
00001ec2: JUMP
00001ec3: JUMPDEST
00001ec4: PUSH1 0x00
00001ec6: PUSH1 0x20
00001ec8: DUP3
00001ec9: DUP5
00001eca: SUB
00001ecb: SLT
00001ecc: ISZERO
00001ecd: PUSH2 0x1ed5
00001ed0: JUMPI
00001ed1: PUSH1 0x00
00001ed3: DUP1
00001ed4: REVERT
00001ed5: JUMPDEST
00001ed6: POP
00001ed7: CALLDATALOAD
00001ed8: SWAP2
00001ed9: SWAP1
00001eda: POP
00001edb: JUMP
00001edc: JUMPDEST
00001edd: PUSH1 0x00
00001edf: PUSH1 0x20
00001ee1: DUP3
00001ee2: DUP5
00001ee3: SUB
00001ee4: SLT
00001ee5: ISZERO
00001ee6: PUSH2 0x1eee
00001ee9: JUMPI
00001eea: PUSH1 0x00
00001eec: DUP1
00001eed: REVERT
00001eee: JUMPDEST
00001eef: PUSH2 0x1ef7
00001ef2: DUP3
00001ef3: PUSH2 0x1e28
00001ef6: JUMP
00001ef7: JUMPDEST
00001ef8: SWAP4
00001ef9: SWAP3
00001efa: POP
00001efb: POP
00001efc: POP
00001efd: JUMP
00001efe: JUMPDEST
00001eff: PUSH1 0x00
00001f01: DUP1
00001f02: PUSH1 0x40
00001f04: DUP4
00001f05: DUP6
00001f06: SUB
00001f07: SLT
00001f08: ISZERO
00001f09: PUSH2 0x1f11
00001f0c: JUMPI
00001f0d: PUSH1 0x00
00001f0f: DUP1
00001f10: REVERT
00001f11: JUMPDEST
00001f12: PUSH2 0x1f1a
00001f15: DUP4
00001f16: PUSH2 0x1e28
00001f19: JUMP
00001f1a: JUMPDEST
00001f1b: SWAP5
00001f1c: PUSH1 0x20
00001f1e: SWAP4
00001f1f: SWAP1
00001f20: SWAP4
00001f21: ADD
00001f22: CALLDATALOAD
00001f23: SWAP4
00001f24: POP
00001f25: POP
00001f26: POP
00001f27: JUMP
00001f28: JUMPDEST
00001f29: PUSH1 0x20
00001f2b: DUP1
00001f2c: DUP3
00001f2d: MSTORE
00001f2e: PUSH1 0x0b
00001f30: SWAP1
00001f31: DUP3
00001f32: ADD
00001f33: MSTORE
00001f34: PUSH11 0x16995c9bc8185b5bdd5b9d
00001f40: PUSH1 0xaa
00001f42: SHL
00001f43: PUSH1 0x40
00001f45: DUP3
00001f46: ADD
00001f47: MSTORE
00001f48: PUSH1 0x60
00001f4a: ADD
00001f4b: SWAP1
00001f4c: JUMP
00001f4d: JUMPDEST
00001f4e: PUSH4 0x4e487b71
00001f53: PUSH1 0xe0
00001f55: SHL
00001f56: PUSH1 0x00
00001f58: MSTORE
00001f59: PUSH1 0x11
00001f5b: PUSH1 0x04
00001f5d: MSTORE
00001f5e: PUSH1 0x24
00001f60: PUSH1 0x00
00001f62: REVERT
00001f63: JUMPDEST
00001f64: DUP1
00001f65: DUP3
00001f66: ADD
00001f67: DUP1
00001f68: DUP3
00001f69: GT
00001f6a: ISZERO
00001f6b: PUSH2 0x1f76
00001f6e: JUMPI
00001f6f: PUSH2 0x1f76
00001f72: PUSH2 0x1f4d
00001f75: JUMP
00001f76: JUMPDEST
00001f77: SWAP3
00001f78: SWAP2
00001f79: POP
00001f7a: POP
00001f7b: JUMP
00001f7c: JUMPDEST
00001f7d: PUSH1 0x00
00001f7f: PUSH1 0x20
00001f81: DUP3
00001f82: DUP5
00001f83: SUB
00001f84: SLT
00001f85: ISZERO
00001f86: PUSH2 0x1f8e
00001f89: JUMPI
00001f8a: PUSH1 0x00
00001f8c: DUP1
00001f8d: REVERT
00001f8e: JUMPDEST
00001f8f: POP
00001f90: MLOAD
00001f91: SWAP2
00001f92: SWAP1
00001f93: POP
00001f94: JUMP
00001f95: JUMPDEST
00001f96: DUP2
00001f97: DUP2
00001f98: SUB
00001f99: DUP2
00001f9a: DUP2
00001f9b: GT
00001f9c: ISZERO
00001f9d: PUSH2 0x1f76
00001fa0: JUMPI
00001fa1: PUSH2 0x1f76
00001fa4: PUSH2 0x1f4d
00001fa7: JUMP
00001fa8: JUMPDEST
00001fa9: DUP1
00001faa: DUP3
00001fab: MUL
00001fac: DUP2
00001fad: ISZERO
00001fae: DUP3
00001faf: DUP3
00001fb0: DIV
00001fb1: DUP5
00001fb2: EQ
00001fb3: OR
00001fb4: PUSH2 0x1f76
00001fb7: JUMPI
00001fb8: PUSH2 0x1f76
00001fbb: PUSH2 0x1f4d
00001fbe: JUMP
00001fbf: JUMPDEST
00001fc0: PUSH1 0x00
00001fc2: DUP3
00001fc3: PUSH2 0x1fdc
00001fc6: JUMPI
00001fc7: PUSH4 0x4e487b71
00001fcc: PUSH1 0xe0
00001fce: SHL
00001fcf: PUSH1 0x00
00001fd1: MSTORE
00001fd2: PUSH1 0x12
00001fd4: PUSH1 0x04
00001fd6: MSTORE
00001fd7: PUSH1 0x24
00001fd9: PUSH1 0x00
00001fdb: REVERT
00001fdc: JUMPDEST
00001fdd: POP
00001fde: DIV
00001fdf: SWAP1
00001fe0: JUMP
00001fe1: JUMPDEST
00001fe2: PUSH1 0x20
00001fe4: DUP1
00001fe5: DUP3
00001fe6: MSTORE
00001fe7: PUSH1 0x2b
00001fe9: SWAP1
00001fea: DUP3
00001feb: ADD
00001fec: MSTORE
00001fed: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000200e: PUSH1 0x40
00002010: DUP3
00002011: ADD
00002012: MSTORE
00002013: PUSH11 0x6e697469616c697a696e67
0000201f: PUSH1 0xa8
00002021: SHL
00002022: PUSH1 0x60
00002024: DUP3
00002025: ADD
00002026: MSTORE
00002027: PUSH1 0x80
00002029: ADD
0000202a: SWAP1
0000202b: JUMP
0000202c: JUMPDEST
0000202d: PUSH1 0x00
0000202f: PUSH1 0x20
00002031: DUP3
00002032: DUP5
00002033: SUB
00002034: SLT
00002035: ISZERO
00002036: PUSH2 0x203e
00002039: JUMPI
0000203a: PUSH1 0x00
0000203c: DUP1
0000203d: REVERT
0000203e: JUMPDEST
0000203f: DUP2
00002040: MLOAD
00002041: DUP1
00002042: ISZERO
00002043: ISZERO
00002044: DUP2
00002045: EQ
00002046: PUSH2 0x1ef7
00002049: JUMPI
0000204a: PUSH1 0x00
0000204c: DUP1
0000204d: REVERT
0000204e: JUMPDEST
0000204f: PUSH1 0x00
00002051: JUMPDEST
00002052: DUP4
00002053: DUP2
00002054: LT
00002055: ISZERO
00002056: PUSH2 0x2069
00002059: JUMPI
0000205a: DUP2
0000205b: DUP2
0000205c: ADD
0000205d: MLOAD
0000205e: DUP4
0000205f: DUP3
00002060: ADD
00002061: MSTORE
00002062: PUSH1 0x20
00002064: ADD
00002065: PUSH2 0x2051
00002068: JUMP
00002069: JUMPDEST
0000206a: POP
0000206b: POP
0000206c: PUSH1 0x00
0000206e: SWAP2
0000206f: ADD
00002070: MSTORE
00002071: JUMP
00002072: JUMPDEST
00002073: PUSH1 0x00
00002075: DUP3
00002076: MLOAD
00002077: PUSH2 0x2084
0000207a: DUP2
0000207b: DUP5
0000207c: PUSH1 0x20
0000207e: DUP8
0000207f: ADD
00002080: PUSH2 0x204e
00002083: JUMP
00002084: JUMPDEST
00002085: SWAP2
00002086: SWAP1
00002087: SWAP2
00002088: ADD
00002089: SWAP3
0000208a: SWAP2
0000208b: POP
0000208c: POP
0000208d: JUMP
0000208e: JUMPDEST
0000208f: PUSH1 0x20
00002091: DUP2
00002092: MSTORE
00002093: PUSH1 0x00
00002095: DUP3
00002096: MLOAD
00002097: DUP1
00002098: PUSH1 0x20
0000209a: DUP5
0000209b: ADD
0000209c: MSTORE
0000209d: PUSH2 0x20ad
000020a0: DUP2
000020a1: PUSH1 0x40
000020a3: DUP6
000020a4: ADD
000020a5: PUSH1 0x20
000020a7: DUP8
000020a8: ADD
000020a9: PUSH2 0x204e
000020ac: JUMP
000020ad: JUMPDEST
000020ae: PUSH1 0x1f
000020b0: ADD
000020b1: PUSH1 0x1f
000020b3: NOT
000020b4: AND
000020b5: SWAP2
000020b6: SWAP1
000020b7: SWAP2
000020b8: ADD
000020b9: PUSH1 0x40
000020bb: ADD
000020bc: SWAP3
000020bd: SWAP2
000020be: POP
000020bf: POP
000020c0: JUMP
000020c1: INVALID
000020c2: LOG2
000020c3: PUSH5 0x6970667358
000020c9: UNKNOWN(0x22)
000020ca: SLT
000020cb: KECCAK256
000020cc: UNKNOWN(0xB4)
000020cd: UNKNOWN(0x2D)
000020ce: UNKNOWN(0xD3)
000020cf: KECCAK256
000020d0: SWAP15
000020d1: PUSH8 0x2c7449aaae0fe8ec
000020da: PUSH27 0xd5e416b8664e5340f4fb42dd7f6a28714364736f6c634300081100
000020f6: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x08ec86977f14d31eab580b078788672b38cca1eebb41d4ba292b2d5a1071dca2
call_targets: 0xe3a1a016ec439aee7cf56fd4f0f5d2d394c2bda6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x08ec86977f14d31eab580b078788672b38cca1eebb41d4ba292b2d5a1071dca2",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe3a1a016ec439aee7cf56fd4f0f5d2d394c2bda6"
    ],
    "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": "0xd35249c8",
            "selector": "0xd35249c8",
            "calldata_variants": [
                "0xd35249c8",
                "0xd35249c80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd79e8567",
            "selector": "0xd79e8567",
            "calldata_variants": [
                "0xd79e8567",
                "0xd79e85670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xefdcd974",
            "selector": "0xefdcd974",
            "calldata_variants": [
                "0xefdcd974",
                "0xefdcd9740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf922c0d0",
            "selector": "0xf922c0d0",
            "calldata_variants": [
                "0xf922c0d0",
                "0xf922c0d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xabc9653e",
            "selector": "0xabc9653e",
            "calldata_variants": [
                "0xabc9653e",
                "0xabc9653e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb179b465",
            "selector": "0xb179b465",
            "calldata_variants": [
                "0xb179b465",
                "0xb179b4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb3f00674",
            "selector": "0xb3f00674",
            "calldata_variants": [
                "0xb3f00674",
                "0xb3f006740000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1741,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1843,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3374,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 8,
    "guards_detected": [],
    "untrusted_call_count": 8
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x08ec86977f14d31eab580b078788672b38cca1eebb41d4ba292b2d5a1071dca2
call_targets: 0xe3a1a016ec439aee7cf56fd4f0f5d2d394c2bda6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x08ec86977f14d31eab580b078788672b38cca1eebb41d4ba292b2d5a1071dca2",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe3a1a016ec439aee7cf56fd4f0f5d2d394c2bda6"
    ],
    "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": "0xd35249c8",
            "selector": "0xd35249c8",
            "calldata_variants": [
                "0xd35249c8",
                "0xd35249c80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd79e8567",
            "selector": "0xd79e8567",
            "calldata_variants": [
                "0xd79e8567",
                "0xd79e85670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xefdcd974",
            "selector": "0xefdcd974",
            "calldata_variants": [
                "0xefdcd974",
                "0xefdcd9740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf922c0d0",
            "selector": "0xf922c0d0",
            "calldata_variants": [
                "0xf922c0d0",
                "0xf922c0d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xabc9653e",
            "selector": "0xabc9653e",
            "calldata_variants": [
                "0xabc9653e",
                "0xabc9653e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb179b465",
            "selector": "0xb179b465",
            "calldata_variants": [
                "0xb179b465",
                "0xb179b4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb3f00674",
            "selector": "0xb3f00674",
            "calldata_variants": [
                "0xb3f00674",
                "0xb3f006740000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1741,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1843,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3374,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 8,
    "guards_detected": []
}
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": 7
}
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": 12
}