e5aba0e0-0e54-45b4-9f2e-e5278884807e
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|