03b89d93-903e-4c2b-8ae4-5a72a1cd13bc
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 |
|---|---|---|---|---|
| 31543 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77885 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 77886 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 77887 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 77888 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 77889 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 77890 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:1092707] OpenAI Codex v0.77.0 (research preview)
[codex:1092707] --------
[codex:1092707] workdir: /tmp/codex-multi-yy41lczj
[codex:1092707] model: gpt-5.2-codex
[codex:1092707] provider: openai
[codex:1092707] approval: never
[codex:1092707] sandbox: read-only
[codex:1092707] reasoning effort: xhigh
[codex:1092707] reasoning summaries: auto
[codex:1092707] session id: 019b870a-9d3b-75c1-ae2e-186c134570e6
[codex:1092707] --------
[codex:1092707] user
[codex:1092707] 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:1092707]
[codex:1092707] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1092707]
[codex:1092707] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1092707] - Gas inefficiency, code quality, or best practices
[codex:1092707] - Theoretical vulnerabilities without a clear extraction path
[codex:1092707] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1092707] - Issues requiring social engineering or off-chain coordination
[codex:1092707]
[codex:1092707] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1092707] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1092707] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1092707] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1092707] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1092707] - External calls before state updates (reentrancy)
[codex:1092707] - SELFDESTRUCT with controllable beneficiary
[codex:1092707] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1092707]
[codex:1092707] For each finding, you MUST explain:
[codex:1092707] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1092707] 2. The concrete sequence of transactions to extract value
[codex:1092707] 3. Why you believe this is exploitable (not just suspicious)
[codex:1092707]
[codex:1092707] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1092707] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1092707]
[codex:1092707] Output MUST be valid JSON matching the provided schema.
[codex:1092707] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1092707] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1092707] mcp startup: no servers
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Reading BYTECODE_BUNDLE.txt**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc ls in /tmp/codex-multi-yy41lczj succeeded in 5ms:
[codex:1092707] BYTECODE_BUNDLE.txt
[codex:1092707] codex-output-schema.json
[codex:1092707] exec
[codex:1092707] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-yy41lczj succeeded in 5ms:
[codex:1092707] Runtime bytecode bundle for best-effort auditing.
[codex:1092707] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1092707]
[codex:1092707] FILE: runtime_bytecode.hex
[codex:1092707] 0x608060405260043610610091575f3560e01c8063ce5980d611610058578063ce5980d614610358578063ebc74fb014610380578063f2fde38b1461039c578063f6ee3c40146103c4578063f8df605d146103ec57610098565b8060b11461027e57806301ffc9a71461029a57806319eb0759146102d657806338ed173914610312578063b06341b41461034257610098565b3661009857005b60025f54146100dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d390611854565b60405180910390fd5b739ecee66868cbbb2c0b45fcf77a16e4fb965eb71073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161480610169575073146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b6101a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f906118bc565b60405180910390fd5b5f60025f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461027c5761027b815f36610414565b5b005b6102986004803603810190610293919061199d565b610492565b005b3480156102a5575f80fd5b506102c060048036038101906102bb9190611a4f565b610646565b6040516102cd9190611a94565b60405180910390f35b3480156102e1575f80fd5b506102fc60048036038101906102f79190611a4f565b61083d565b6040516103099190611abc565b60405180910390f35b61032c60048036038101906103279190611ad5565b6108b4565b6040516103399190611b38565b60405180910390f35b34801561034d575f80fd5b50610356610c0f565b005b348015610363575f80fd5b5061037e60048036038101906103799190611b7b565b610d59565b005b61039a6004803603810190610395919061199d565b610ec7565b005b3480156103a7575f80fd5b506103c260048036038101906103bd9190611bb9565b61103a565b005b3480156103cf575f80fd5b506103ea60048036038101906103e59190611be4565b6110bf565b005b3480156103f7575f80fd5b50610412600480360381019061040d9190611c4c565b6112ba565b005b5f808473ffffffffffffffffffffffffffffffffffffffff16848460405161043d929190611cb3565b5f60405180830381855af49150503d805f8114610475576040519150601f19603f3d011682016040523d82523d5f602084013e61047a565b606091505b50915091508161048b578060208201fd5b5050505050565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050b90611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90611d15565b60405180910390fd5b60015f54146105da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d190611d7d565b60405180910390fd5b60025f819055505f4790506105f184348585611405565b5f47905081811015610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f90611de5565b60405180910390fd5b60015f819055505050505050565b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061072d575063f0b9e5ba60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061077c575063f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107cb575063bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156107d95760019050610838565b60015f837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff1690505b919050565b5f60025f837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f805a9050739ecee66868cbbb2c0b45fcf77a16e4fb965eb71073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290611e4d565b60405180910390fd5b60015f541461097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097690611d7d565b60405180910390fd5b60025f819055505f4790506109948585611487565b5f4790508181116109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190611eb5565b60405180910390fd5b5f86865f906002926109ee93929190611edb565b906109f99190611f56565b60f01c61ffff1690505f83830390505f6009898990500260400190505f615208826199415a8a030101013a029050808311610a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6090611ffe565b60405180910390fd5b80830392505f841115610b1e57612710841115610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab290612066565b60405180910390fd5b5f61271085850281610ad057610acf612084565b5b0490504173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b16573d5f803e3d5ffd5b508084039350505b3373ffffffffffffffffffffffffffffffffffffffff166108fc82850190811502906040515f60405180830381858888f19350505050158015610b63573d5f803e3d5ffd5b5060015f81905550343a0281840111610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906120fb565b60405180910390fd5b615208825a890301013a0281840111610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690612163565b60405180910390fd5b8297505050505050505092915050565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90611d15565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610d56573d5f803e3d5ffd5b50565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490611d15565b60405180910390fd5b8060015f847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290611d15565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16348383604051610ff3929190611cb3565b5f6040518083038185875af1925050503d805f811461102d576040519150601f19603f3d011682016040523d82523d5f602084013e611032565b606091505b505050505050565b732ec0a49888cf7bd05985fe8366e9205c9d0f901e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b3906121cb565b60405180910390fd5b50565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90611d15565b60405180910390fd5b8060025f847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390611d15565b60405180910390fd5b73146c6432a5cf6c3126501def6c8cd0c3172497d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590611d15565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611401573d5f803e3d5ffd5b5050565b5f808573ffffffffffffffffffffffffffffffffffffffff1685858560405161142f929190611cb3565b5f6040518083038185875af1925050503d805f8114611469576040519150601f19603f3d011682016040523d82523d5f602084013e61146e565b606091505b50915091508161147f578060208201fd5b505050505050565b5f828260029060049261149c93929190611edb565b906114a79190611f56565b60f01c61ffff1690505f8160020260040190505f600490505f5b83811015611526575f8686849060028601926114df93929190611edb565b906114ea9190611f56565b60f01c61ffff169050600283019250611515878786908488019261151093929190611edb565b61152e565b8084019350816001019150506114c1565b505050505050565b5f82825f9060019261154293929190611edb565b9061154d9190612214565b60f81c60ff1690505f60018083161490505f600180600185901c161490505f600180600286901c161490505f868660019060159261158d93929190611edb565b90611598919061229d565b60601c9050600115158415150361162d575f60b08888601590601f926115c093929190611edb565b906115cb9190612304565b5f1c901c9050365f8989601f9080926115e693929190611edb565b915091505f151586151514801561160057505f1515851515145b156116165761161184848484611405565b611625565b61162484848484898b61168d565b5b505050611684565b365f8888601590809261164293929190611edb565b915091505f151585151514801561165c57505f1515841515145b156116725761166d835f8484611405565b611681565b611680835f8484888a61168d565b5b50505b50505050505050565b5f1515821515036116aa576116a586868686856116bf565b6116b7565b6116b6868585846116f0565b5b505050505050565b60011515811515036116dc576116d78585858561171e565b6116e9565b6116e885858585611405565b5b5050505050565b600115158115150361170c5761170784848461178e565b611718565b611717848484610414565b5b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16838383604051611746929190611cb3565b5f6040518083038185875af1925050503d805f8114611780576040519150601f19603f3d011682016040523d82523d5f602084013e611785565b606091505b50505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1682826040516117b5929190611cb3565b5f60405180830381855af49150503d805f81146117ed576040519150601f19603f3d011682016040523d82523d5f602084013e6117f2565b606091505b505050505050565b5f82825260208201905092915050565b7f72656e32000000000000000000000000000000000000000000000000000000005f82015250565b5f61183e6004836117fa565b91506118498261180a565b602082019050919050565b5f6020820190508181035f83015261186b81611832565b9050919050565b7f74786e6f726967696e64696166616c6c000000000000000000000000000000005f82015250565b5f6118a66010836117fa565b91506118b182611872565b602082019050919050565b5f6020820190508181035f8301526118d38161189a565b9050919050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61190b826118e2565b9050919050565b61191b81611901565b8114611925575f80fd5b50565b5f8135905061193681611912565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261195d5761195c61193c565b5b8235905067ffffffffffffffff81111561197a57611979611940565b5b60208301915083600182028301111561199657611995611944565b5b9250929050565b5f805f604084860312156119b4576119b36118da565b5b5f6119c186828701611928565b935050602084013567ffffffffffffffff8111156119e2576119e16118de565b5b6119ee86828701611948565b92509250509250925092565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a2e816119fa565b8114611a38575f80fd5b50565b5f81359050611a4981611a25565b92915050565b5f60208284031215611a6457611a636118da565b5b5f611a7184828501611a3b565b91505092915050565b5f8115159050919050565b611a8e81611a7a565b82525050565b5f602082019050611aa75f830184611a85565b92915050565b611ab681611901565b82525050565b5f602082019050611acf5f830184611aad565b92915050565b5f8060208385031215611aeb57611aea6118da565b5b5f83013567ffffffffffffffff811115611b0857611b076118de565b5b611b1485828601611948565b92509250509250929050565b5f819050919050565b611b3281611b20565b82525050565b5f602082019050611b4b5f830184611b29565b92915050565b611b5a81611a7a565b8114611b64575f80fd5b50565b5f81359050611b7581611b51565b92915050565b5f8060408385031215611b9157611b906118da565b5b5f611b9e85828601611a3b565b9250506020611baf85828601611b67565b9150509250929050565b5f60208284031215611bce57611bcd6118da565b5b5f611bdb84828501611928565b91505092915050565b5f8060408385031215611bfa57611bf96118da565b5b5f611c0785828601611a3b565b9250506020611c1885828601611928565b9150509250929050565b611c2b81611b20565b8114611c35575f80fd5b50565b5f81359050611c4681611c22565b92915050565b5f60208284031215611c6157611c606118da565b5b5f611c6e84828501611c38565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f611c9a8385611c77565b9350611ca7838584611c81565b82840190509392505050565b5f611cbf828486611c8f565b91508190509392505050565b7f6e6f776e000000000000000000000000000000000000000000000000000000005f82015250565b5f611cff6004836117fa565b9150611d0a82611ccb565b602082019050919050565b5f6020820190508181035f830152611d2c81611cf3565b9050919050565b7f72656e30000000000000000000000000000000000000000000000000000000005f82015250565b5f611d676004836117fa565b9150611d7282611d33565b602082019050919050565b5f6020820190508181035f830152611d9481611d5b565b9050919050565b7f62766537000000000000000000000000000000000000000000000000000000005f82015250565b5f611dcf6004836117fa565b9150611dda82611d9b565b602082019050919050565b5f6020820190508181035f830152611dfc81611dc3565b9050919050565b7f6e77686c000000000000000000000000000000000000000000000000000000005f82015250565b5f611e376004836117fa565b9150611e4282611e03565b602082019050919050565b5f6020820190508181035f830152611e6481611e2b565b9050919050565b7f62766531000000000000000000000000000000000000000000000000000000005f82015250565b5f611e9f6004836117fa565b9150611eaa82611e6b565b602082019050919050565b5f6020820190508181035f830152611ecc81611e93565b9050919050565b5f80fd5b5f80fd5b5f8085851115611eee57611eed611ed3565b5b83861115611eff57611efe611ed7565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b5f82821b905092915050565b5f611f618383611f15565b82611f6c8135611f1f565b92506002821015611fac57611fa77fffff00000000000000000000000000000000000000000000000000000000000083600203600802611f4a565b831692505b505092915050565b7f67733100000000000000000000000000000000000000000000000000000000005f82015250565b5f611fe86003836117fa565b9150611ff382611fb4565b602082019050919050565b5f6020820190508181035f83015261201581611fdc565b9050919050565b7f66626531000000000000000000000000000000000000000000000000000000005f82015250565b5f6120506004836117fa565b915061205b8261201c565b602082019050919050565b5f6020820190508181035f83015261207d81612044565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f67733200000000000000000000000000000000000000000000000000000000005f82015250565b5f6120e56003836117fa565b91506120f0826120b1565b602082019050919050565b5f6020820190508181035f830152612112816120d9565b9050919050565b7f67733300000000000000000000000000000000000000000000000000000000005f82015250565b5f61214d6003836117fa565b915061215882612119565b602082019050919050565b5f6020820190508181035f83015261217a81612141565b9050919050565b7f6e74726e000000000000000000000000000000000000000000000000000000005f82015250565b5f6121b56004836117fa565b91506121c082612181565b602082019050919050565b5f6020820190508181035f8301526121e2816121a9565b9050919050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b5f61221f8383611f15565b8261222a81356121e9565b9250600182101561226a576122657fff0000000000000000000000000000000000000000000000000000000000000083600103600802611f4a565b831692505b505092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6122a88383611f15565b826122b38135612272565b925060148210156122f3576122ee7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802611f4a565b831692505b505092915050565b5f819050919050565b5f61230f8383611f15565b8261231a81356122fb565b9250602082101561235a576123557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611f4a565b831692505b50509291505056fea264697066735822122023cb4bcec4c53386a8fbd5bb75c108e97b8aeab0647067ad687fb1d0d6fe726c64736f6c63430008190033
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Examining bytecode for exploit detection**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import binascii
[codex:1092707]
[codex:1092707] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:1092707] # extract 0x...
[codex:1092707] import re
[codex:1092707] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:1092707] code=m.group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] # EVM opcode map
[codex:1092707] ops = {}
[codex:1092707] # basic map for 0x00-0xff? We'll create for push
[codex:1092707] for i in range(1,33):
[codex:1092707] ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] # standard names
[codex:1092707] opmap={
[codex:1092707] 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:1092707] 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:1092707] 0x20:'SHA3',
[codex:1092707] 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:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 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:1092707] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1092707] }
[codex:1092707] # merge
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] # disassemble
[codex:1092707] instrs=[]
[codex:1092707] pc=0
[codex:1092707] while pc < len(code_bytes):
[codex:1092707] op=code_bytes[pc]
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] pc0=pc
[codex:1092707] pc+=1
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f: # PUSH1-32
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]
[codex:1092707] pc+=n
[codex:1092707] instrs.append((pc0,op,name,arg))
[codex:1092707]
[codex:1092707] # collect interesting ops
[codex:1092707] interesting={'CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT','SSTORE'}
[codex:1092707] for pc0,op,name,arg in instrs:
[codex:1092707] if name in interesting:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 39ms:
[codex:1092707] 0448: DELEGATECALL
[codex:1092707] 05e0: SSTORE
[codex:1092707] 063e: SSTORE
[codex:1092707] 0985: SSTORE
[codex:1092707] 0b02: CALL
[codex:1092707] 0b4f: CALL
[codex:1092707] 0b6a: SSTORE
[codex:1092707] 0d42: CALL
[codex:1092707] 0ec2: SSTORE
[codex:1092707] 0fff: CALL
[codex:1092707] 124f: SSTORE
[codex:1092707] 12b5: SSTORE
[codex:1092707] 13ed: CALL
[codex:1092707] 143b: CALL
[codex:1092707] 1752: CALL
[codex:1092707] 17c0: DELEGATECALL
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing CALL instructions and contexts**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] # disassemble
[codex:1092707] ops = {}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={
[codex:1092707] 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:1092707] 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:1092707] 0x20:'SHA3',
[codex:1092707] 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:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 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:1092707] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1092707] }
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] instrs=[]
[codex:1092707] pc=0
[codex:1092707] while pc < len(code_bytes):
[codex:1092707] op=code_bytes[pc]
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] pc0=pc
[codex:1092707] pc+=1
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]
[codex:1092707] pc+=n
[codex:1092707] instrs.append((pc0,op,name,arg))
[codex:1092707]
[codex:1092707] # map pc->index
[codex:1092707] idx_by_pc={pc:i for i,(pc,_,_,_) in enumerate(instrs)}
[codex:1092707]
[codex:1092707] def show(pc, window=10):
[codex:1092707] i=idx_by_pc[pc]
[codex:1092707] start=max(0,i-window)
[codex:1092707] end=min(len(instrs), i+window+1)
[codex:1092707] for pc0,op,name,arg in instrs[start:end]:
[codex:1092707] if arg:
[codex:1092707] arghex='0x'+arg.hex()
[codex:1092707] print(f\"{pc0:04x}: {name} {arghex}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] print('----')
[codex:1092707]
[codex:1092707] for pc in [0x448,0x5e0,0x63e,0x985,0xb02,0xb4f,0xb6a,0xd42,0xec2,0xfff,0x124f,0x12b5,0x13ed,0x143b,0x1752,0x17c0]:
[codex:1092707] show(pc)
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 34ms:
[codex:1092707] 043d: JUMPDEST
[codex:1092707] 043e: OP_5f
[codex:1092707] 043f: PUSH1 0x40
[codex:1092707] 0441: MLOAD
[codex:1092707] 0442: OP_80
[codex:1092707] 0443: OP_83
[codex:1092707] 0444: SUB
[codex:1092707] 0445: OP_81
[codex:1092707] 0446: OP_85
[codex:1092707] 0447: GAS
[codex:1092707] 0448: DELEGATECALL
[codex:1092707] 0449: OP_91
[codex:1092707] 044a: POP
[codex:1092707] 044b: POP
[codex:1092707] 044c: RETURNDATASIZE
[codex:1092707] 044d: OP_80
[codex:1092707] 044e: OP_5f
[codex:1092707] 044f: OP_81
[codex:1092707] 0450: EQ
[codex:1092707] 0451: PUSH2 0x0475
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing function selectors and dispatch**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] # parse function selectors by scanning for pattern: DUP1 PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:1092707] # We'll do simple disasm to find push4 and jumpdest patterns.
[codex:1092707]
[codex:1092707] # Build op list with pc
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] # map for eq, jumpi etc
[codex:1092707] opmap={0x14:'EQ',0x57:'JUMPI'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] # parse instructions
[codex:1092707] instrs=[]
[codex:1092707] pc=0
[codex:1092707] while pc < len(code_bytes):
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] instrs.append((pc0,op,name,arg))
[codex:1092707]
[codex:1092707] selectors=[]
[codex:1092707] for i in range(len(instrs)-3):
[codex:1092707] pc0,op,name,arg=instrs[i]
[codex:1092707] if name=='PUSH4':
[codex:1092707] # look ahead for EQ and PUSH2 and JUMPI
[codex:1092707] if instrs[i+1][2]=='EQ' and instrs[i+2][2]=='PUSH2' and instrs[i+3][2]=='JUMPI':
[codex:1092707] sel=arg.hex(); dest=int.from_bytes(instrs[i+2][3], 'big')
[codex:1092707] selectors.append((sel, dest, pc0))
[codex:1092707]
[codex:1092707] print('selectors:')
[codex:1092707] for sel,dest,pc0 in selectors:
[codex:1092707] print(f'0x{sel} -> 0x{dest:04x} (at {pc0:04x})')
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 32ms:
[codex:1092707] selectors:
[codex:1092707] 0xce5980d6 -> 0x0358 (at 001e)
[codex:1092707] 0xebc74fb0 -> 0x0380 (at 0029)
[codex:1092707] 0xf2fde38b -> 0x039c (at 0034)
[codex:1092707] 0xf6ee3c40 -> 0x03c4 (at 003f)
[codex:1092707] 0xf8df605d -> 0x03ec (at 004a)
[codex:1092707] 0x01ffc9a7 -> 0x029a (at 0062)
[codex:1092707] 0x19eb0759 -> 0x02d6 (at 006d)
[codex:1092707] 0x38ed1739 -> 0x0312 (at 0078)
[codex:1092707] 0xb06341b4 -> 0x0342 (at 0083)
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing function selectors and dispatch table**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] # disassemble first 0x120 bytes
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={
[codex:1092707] 0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:1092707] }
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0
[codex:1092707] while pc < len(code_bytes) and pc < 0x120:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 27ms:
[codex:1092707] 0000: PUSH1 0x80
[codex:1092707] 0002: PUSH1 0x40
[codex:1092707] 0004: MSTORE
[codex:1092707] 0005: PUSH1 0x04
[codex:1092707] 0007: CALLDATASIZE
[codex:1092707] 0008: LT
[codex:1092707] 0009: PUSH2 0x0091
[codex:1092707] 000c: JUMPI
[codex:1092707] 000d: OP_5f
[codex:1092707] 000e: CALLDATALOAD
[codex:1092707] 000f: PUSH1 0xe0
[codex:1092707] 0011: SHR
[codex:1092707] 0012: OP_80
[codex:1092707] 0013: PUSH4 0xce5980d6
[codex:1092707] 0018: GT
[codex:1092707] 0019: PUSH2 0x0058
[codex:1092707] 001c: JUMPI
[codex:1092707] 001d: OP_80
[codex:1092707] 001e: PUSH4 0xce5980d6
[codex:1092707] 0023: EQ
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing unusual function selector checks**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={
[codex:1092707] 0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:1092707] }
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x00dc
[codex:1092707] end=0x01c0
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 32ms:
[codex:1092707] 00dc: JUMPDEST
[codex:1092707] 00dd: PUSH20 0x9ecee66868cbbb2c0b45fcf77a16e4fb965eb710
[codex:1092707] 00f2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 0107: AND
[codex:1092707] 0108: ORIGIN
[codex:1092707] 0109: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 011e: AND
[codex:1092707] 011f: EQ
[codex:1092707] 0120: OP_80
[codex:1092707] 0121: PUSH2 0x0169
[codex:1092707] 0124: JUMPI
[codex:1092707] 0125: POP
[codex:1092707] 0126: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7
[codex:1092707] 013b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 0150: AND
[codex:1092707] 0151: ORIGIN
[codex:1092707] 0152: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 0167: AND
[codex:1092707] 0168: EQ
[codex:1092707] 0169: JUMPDEST
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing fallback address check**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x01a8
[codex:1092707] end=0x0285
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 33ms:
[codex:1092707] 01a8: JUMPDEST
[codex:1092707] 01a9: OP_5f
[codex:1092707] 01aa: PUSH1 0x02
[codex:1092707] 01ac: OP_5f
[codex:1092707] 01ad: OP_80
[codex:1092707] 01ae: CALLDATALOAD
[codex:1092707] 01af: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
[codex:1092707] 01d0: AND
[codex:1092707] 01d1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 01ee: NOT
[codex:1092707] 01ef: AND
[codex:1092707] 01f0: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 020d: NOT
[codex:1092707] 020e: AND
[codex:1092707] 020f: OP_81
[codex:1092707] 0210: MSTORE
[codex:1092707] 0211: PUSH1 0x20
[codex:1092707] 0213: OP_01
[codex:1092707] 0214: OP_90
[codex:1092707] 0215: OP_81
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Decoding complex EVM mapping access**
[codex:1092707]
[codex:1092707] I'm parsing EVM bytecode that computes a keccak hash to access a mapping at storage slot 2, likely mapping function selectors (bytes4) to facet addresses as in a diamond proxy pattern. It reads calldata, masks to extract the selector, calculates the mapping slot, loads the storage word, then extracts an address by shifting and masking before conditionally jumping based on equality checks. I’m also noticing the fallback guards access by restricting `tx.origin` to two allowed addresses, making delegation possible only for those origins. Now I’ll start analyzing the function code at specific jump destinations to understand potential exploits or behavior.
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] # disassemble from 0x027e to 0x02a0
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x027e
[codex:1092707] end=0x02b0
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 28ms:
[codex:1092707] 027e: JUMPDEST
[codex:1092707] 027f: PUSH2 0x0298
[codex:1092707] 0282: PUSH1 0x04
[codex:1092707] 0284: OP_80
[codex:1092707] 0285: CALLDATASIZE
[codex:1092707] 0286: OP_03
[codex:1092707] 0287: OP_81
[codex:1092707] 0288: OP_01
[codex:1092707] 0289: OP_90
[codex:1092707] 028a: PUSH2 0x0293
[codex:1092707] 028d: OP_91
[codex:1092707] 028e: OP_90
[codex:1092707] 028f: PUSH2 0x199d
[codex:1092707] 0292: JUMP
[codex:1092707] 0293: JUMPDEST
[codex:1092707] 0294: PUSH2 0x0492
[codex:1092707] 0297: JUMP
[codex:1092707] 0298: JUMPDEST
[codex:1092707] 0299: STOP
[codex:1092707] 029a: JUMPDEST
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing function dispatch and selectors**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x0492
[codex:1092707] end=0x0520
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 27ms:
[codex:1092707] 0492: JUMPDEST
[codex:1092707] 0493: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7
[codex:1092707] 04a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 04bd: AND
[codex:1092707] 04be: CALLER
[codex:1092707] 04bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 04d4: AND
[codex:1092707] 04d5: EQ
[codex:1092707] 04d6: PUSH2 0x0514
[codex:1092707] 04d9: JUMPI
[codex:1092707] 04da: PUSH1 0x40
[codex:1092707] 04dc: MLOAD
[codex:1092707] 04dd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1092707] 04fe: OP_81
[codex:1092707] 04ff: MSTORE
[codex:1092707] 0500: PUSH1 0x04
[codex:1092707] 0502: OP_01
[codex:1092707] 0503: PUSH2 0x050b
[codex:1092707] 0506: OP_90
[codex:1092707] 0507: PUSH2 0x1d15
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing access control check**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x0514
[codex:1092707] end=0x0600
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 27ms:
[codex:1092707] 0514: JUMPDEST
[codex:1092707] 0515: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7
[codex:1092707] 052a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 053f: AND
[codex:1092707] 0540: CALLER
[codex:1092707] 0541: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 0556: AND
[codex:1092707] 0557: EQ
[codex:1092707] 0558: PUSH2 0x0596
[codex:1092707] 055b: JUMPI
[codex:1092707] 055c: PUSH1 0x40
[codex:1092707] 055e: MLOAD
[codex:1092707] 055f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1092707] 0580: OP_81
[codex:1092707] 0581: MSTORE
[codex:1092707] 0582: PUSH1 0x04
[codex:1092707] 0584: OP_01
[codex:1092707] 0585: PUSH2 0x058d
[codex:1092707] 0588: OP_90
[codex:1092707] 0589: PUSH2 0x1d15
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing storage and call behavior**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x1405
[codex:1092707] end=0x148a
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 30ms:
[codex:1092707] 1405: JUMPDEST
[codex:1092707] 1406: OP_5f
[codex:1092707] 1407: OP_80
[codex:1092707] 1408: OP_85
[codex:1092707] 1409: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 141e: AND
[codex:1092707] 141f: OP_85
[codex:1092707] 1420: OP_85
[codex:1092707] 1421: OP_85
[codex:1092707] 1422: PUSH1 0x40
[codex:1092707] 1424: MLOAD
[codex:1092707] 1425: PUSH2 0x142f
[codex:1092707] 1428: OP_92
[codex:1092707] 1429: OP_91
[codex:1092707] 142a: OP_90
[codex:1092707] 142b: PUSH2 0x1cb3
[codex:1092707] 142e: JUMP
[codex:1092707] 142f: JUMPDEST
[codex:1092707] 1430: OP_5f
[codex:1092707] 1431: PUSH1 0x40
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing internal CALL functions**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={0x00:'STOP',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] pc=0x1487
[codex:1092707] end=0x16b0
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 30ms:
[codex:1092707] 1487: JUMPDEST
[codex:1092707] 1488: OP_5f
[codex:1092707] 1489: OP_82
[codex:1092707] 148a: OP_82
[codex:1092707] 148b: PUSH1 0x02
[codex:1092707] 148d: OP_90
[codex:1092707] 148e: PUSH1 0x04
[codex:1092707] 1490: OP_92
[codex:1092707] 1491: PUSH2 0x149c
[codex:1092707] 1494: OP_93
[codex:1092707] 1495: OP_92
[codex:1092707] 1496: OP_91
[codex:1092707] 1497: OP_90
[codex:1092707] 1498: PUSH2 0x1edb
[codex:1092707] 149b: JUMP
[codex:1092707] 149c: JUMPDEST
[codex:1092707] 149d: OP_90
[codex:1092707] 149e: PUSH2 0x14a7
[codex:1092707] 14a1: OP_91
[codex:1092707] 14a2: OP_90
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing external function selectors**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={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:1092707] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1092707] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] entries=[0x0358,0x0380,0x039c,0x03c4,0x03ec,0x029a,0x02d6,0x0312,0x0342,0x027e]
[codex:1092707]
[codex:1092707] for entry in entries:
[codex:1092707] print(f\"\\n=== entry {entry:04x} ===\")
[codex:1092707] pc=entry
[codex:1092707] end=entry+0x60
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 32ms:
[codex:1092707]
[codex:1092707] === entry 0358 ===
[codex:1092707] 0358: JUMPDEST
[codex:1092707] 0359: CALLVALUE
[codex:1092707] 035a: OP_80
[codex:1092707] 035b: ISZERO
[codex:1092707] 035c: PUSH2 0x0363
[codex:1092707] 035f: JUMPI
[codex:1092707] 0360: OP_5f
[codex:1092707] 0361: OP_80
[codex:1092707] 0362: REVERT
[codex:1092707] 0363: JUMPDEST
[codex:1092707] 0364: POP
[codex:1092707] 0365: PUSH2 0x037e
[codex:1092707] 0368: PUSH1 0x04
[codex:1092707] 036a: OP_80
[codex:1092707] 036b: CALLDATASIZE
[codex:1092707] 036c: SUB
[codex:1092707] 036d: OP_81
[codex:1092707] 036e: ADD
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Mapping internal function entries**
[codex:1092707] exec
[codex:1092707] /bin/bash -lc "python - <<'PY'
[codex:1092707] from pathlib import Path
[codex:1092707] import re
[codex:1092707] code=re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:1092707] code_bytes=bytes.fromhex(code)
[codex:1092707] ops={}
[codex:1092707] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:1092707] opmap={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:1092707] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:1092707] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',
[codex:1092707] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:1092707] 0xf1:'CALL',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'}
[codex:1092707] ops.update(opmap)
[codex:1092707]
[codex:1092707] def disasm(start,end):
[codex:1092707] pc=start
[codex:1092707] while pc < end:
[codex:1092707] op=code_bytes[pc]; pc0=pc; pc+=1
[codex:1092707] name=ops.get(op, f'OP_{op:02x}')
[codex:1092707] arg=b''
[codex:1092707] if 0x60 <= op <= 0x7f:
[codex:1092707] n=op-0x5f
[codex:1092707] arg=code_bytes[pc:pc+n]; pc+=n
[codex:1092707] if arg:
[codex:1092707] print(f\"{pc0:04x}: {name} 0x{arg.hex()}\")
[codex:1092707] else:
[codex:1092707] print(f\"{pc0:04x}: {name}\")
[codex:1092707] print('----')
[codex:1092707]
[codex:1092707] # disasm around internal functions
[codex:1092707] for start,end in [(0x0646,0x0730),(0x083d,0x0900),(0x08b4,0x0a20),(0x0c0f,0x0d80),(0x0d59,0x0ec7),(0x0ec7,0x103a),(0x103a,0x10bf),(0x10bf,0x12ba),(0x12ba,0x1405)]:
[codex:1092707] print(f\"\\n== {start:04x}-{end:04x} ==\")
[codex:1092707] disasm(start,end)
[codex:1092707] PY" in /tmp/codex-multi-yy41lczj succeeded in 28ms:
[codex:1092707]
[codex:1092707] == 0646-0730 ==
[codex:1092707] 0646: JUMPDEST
[codex:1092707] 0647: OP_5f
[codex:1092707] 0648: PUSH4 0x01ffc9a7
[codex:1092707] 064d: PUSH1 0xe0
[codex:1092707] 064f: SHL
[codex:1092707] 0650: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 066d: NOT
[codex:1092707] 066e: AND
[codex:1092707] 066f: OP_82
[codex:1092707] 0670: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
[codex:1092707] 068d: NOT
[codex:1092707] 068e: AND
[codex:1092707] 068f: EQ
[codex:1092707] 0690: OP_80
[codex:1092707] 0691: PUSH2 0x06de
[codex:1092707] 0694: JUMPI
[codex:1092707] 0695: POP
[codex:1092707] 0696: PUSH4 0x150b7a02
[codex:1092707]
[codex:1092707]
[codex:1092707] thinking
[codex:1092707] **Analyzing access controls and potential exploits**
[codex:1092707] thinking
[codex:1092707] **Preparing no-findings JSON report**
[codex:1092707]
[codex:1092707] I'll produce a JSON summary confirming no exploitable path found, citing that all value transfers and delegatecalls are properly access-controlled by fixed addresses or tx.origin checks, with no unprotected upgrade or selfdestruct.
[codex:1092707] codex
[codex:1092707] {"no_findings":true,"summary":"No concrete, exploitable profit path identified in the provided bytecode. All CALL/DELEGATECALL sites and SSTORE mutations appear gated by hard-coded caller/origin checks, with no unprotected value transfer, upgrade hook, or selfdestruct reachable by an arbitrary attacker.","findings":[]}
[codex:1092707] tokens used
[codex:1092707] 70,219
[codex:1092707] {"no_findings":true,"summary":"No concrete, exploitable profit path identified in the provided bytecode. All CALL/DELEGATECALL sites and SSTORE mutations appear gated by hard-coded caller/origin checks, with no unprotected value transfer, upgrade hook, or selfdestruct reachable by an arbitrary attacker.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T03:32:42.911208+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path identified in the provided bytecode. All CALL/DELEGATECALL sites and SSTORE mutations appear gated by hard-coded caller/origin checks, with no unprotected value transfer, upgrade hook, or selfdestruct reachable by an arbitrary attacker.",
"raw_final": {
"summary": "No concrete, exploitable profit path identified in the provided bytecode. All CALL/DELEGATECALL sites and SSTORE mutations appear gated by hard-coded caller/origin checks, with no unprotected value transfer, upgrade hook, or selfdestruct reachable by an arbitrary attacker.",
"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 0x0091 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0xce5980d6 00000018: GT 00000019: PUSH2 0x0058 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0xce5980d6 00000023: EQ 00000024: PUSH2 0x0358 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xebc74fb0 0000002e: EQ 0000002f: PUSH2 0x0380 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xf2fde38b 00000039: EQ 0000003a: PUSH2 0x039c 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xf6ee3c40 00000044: EQ 00000045: PUSH2 0x03c4 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xf8df605d 0000004f: EQ 00000050: PUSH2 0x03ec 00000053: JUMPI 00000054: PUSH2 0x0098 00000057: JUMP 00000058: JUMPDEST 00000059: DUP1 0000005a: PUSH1 0xb1 0000005c: EQ 0000005d: PUSH2 0x027e 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x01ffc9a7 00000067: EQ 00000068: PUSH2 0x029a 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x19eb0759 00000072: EQ 00000073: PUSH2 0x02d6 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x38ed1739 0000007d: EQ 0000007e: PUSH2 0x0312 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0xb06341b4 00000088: EQ 00000089: PUSH2 0x0342 0000008c: JUMPI 0000008d: PUSH2 0x0098 00000090: JUMP 00000091: JUMPDEST 00000092: CALLDATASIZE 00000093: PUSH2 0x0098 00000096: JUMPI 00000097: STOP 00000098: JUMPDEST 00000099: PUSH1 0x02 0000009b: PUSH0 0000009c: SLOAD 0000009d: EQ 0000009e: PUSH2 0x00dc 000000a1: JUMPI 000000a2: PUSH1 0x40 000000a4: MLOAD 000000a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000000c6: DUP2 000000c7: MSTORE 000000c8: PUSH1 0x04 000000ca: ADD 000000cb: PUSH2 0x00d3 000000ce: SWAP1 000000cf: PUSH2 0x1854 000000d2: JUMP 000000d3: JUMPDEST 000000d4: PUSH1 0x40 000000d6: MLOAD 000000d7: DUP1 000000d8: SWAP2 000000d9: SUB 000000da: SWAP1 000000db: REVERT 000000dc: JUMPDEST 000000dd: PUSH20 0x9ecee66868cbbb2c0b45fcf77a16e4fb965eb710 000000f2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000107: AND 00000108: ORIGIN 00000109: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000011e: AND 0000011f: EQ 00000120: DUP1 00000121: PUSH2 0x0169 00000124: JUMPI 00000125: POP 00000126: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 0000013b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000150: AND 00000151: ORIGIN 00000152: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000167: AND 00000168: EQ 00000169: JUMPDEST 0000016a: PUSH2 0x01a8 0000016d: JUMPI 0000016e: PUSH1 0x40 00000170: MLOAD 00000171: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000192: DUP2 00000193: MSTORE 00000194: PUSH1 0x04 00000196: ADD 00000197: PUSH2 0x019f 0000019a: SWAP1 0000019b: PUSH2 0x18bc 0000019e: JUMP 0000019f: JUMPDEST 000001a0: PUSH1 0x40 000001a2: MLOAD 000001a3: DUP1 000001a4: SWAP2 000001a5: SUB 000001a6: SWAP1 000001a7: REVERT 000001a8: JUMPDEST 000001a9: PUSH0 000001aa: PUSH1 0x02 000001ac: PUSH0 000001ad: DUP1 000001ae: CALLDATALOAD 000001af: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000001d0: AND 000001d1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000001ee: NOT 000001ef: AND 000001f0: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000020d: NOT 0000020e: AND 0000020f: DUP2 00000210: MSTORE 00000211: PUSH1 0x20 00000213: ADD 00000214: SWAP1 00000215: DUP2 00000216: MSTORE 00000217: PUSH1 0x20 00000219: ADD 0000021a: PUSH0 0000021b: KECCAK256 0000021c: PUSH0 0000021d: SWAP1 0000021e: SLOAD 0000021f: SWAP1 00000220: PUSH2 0x0100 00000223: EXP 00000224: SWAP1 00000225: DIV 00000226: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000023b: AND 0000023c: SWAP1 0000023d: POP 0000023e: PUSH0 0000023f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000254: AND 00000255: DUP2 00000256: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000026b: AND 0000026c: EQ 0000026d: PUSH2 0x027c 00000270: JUMPI 00000271: PUSH2 0x027b 00000274: DUP2 00000275: PUSH0 00000276: CALLDATASIZE 00000277: PUSH2 0x0414 0000027a: JUMP 0000027b: JUMPDEST 0000027c: JUMPDEST 0000027d: STOP 0000027e: JUMPDEST 0000027f: PUSH2 0x0298 00000282: PUSH1 0x04 00000284: DUP1 00000285: CALLDATASIZE 00000286: SUB 00000287: DUP2 00000288: ADD 00000289: SWAP1 0000028a: PUSH2 0x0293 0000028d: SWAP2 0000028e: SWAP1 0000028f: PUSH2 0x199d 00000292: JUMP 00000293: JUMPDEST 00000294: PUSH2 0x0492 00000297: JUMP 00000298: JUMPDEST 00000299: STOP 0000029a: JUMPDEST 0000029b: CALLVALUE 0000029c: DUP1 0000029d: ISZERO 0000029e: PUSH2 0x02a5 000002a1: JUMPI 000002a2: PUSH0 000002a3: DUP1 000002a4: REVERT 000002a5: JUMPDEST 000002a6: POP 000002a7: PUSH2 0x02c0 000002aa: PUSH1 0x04 000002ac: DUP1 000002ad: CALLDATASIZE 000002ae: SUB 000002af: DUP2 000002b0: ADD 000002b1: SWAP1 000002b2: PUSH2 0x02bb 000002b5: SWAP2 000002b6: SWAP1 000002b7: PUSH2 0x1a4f 000002ba: JUMP 000002bb: JUMPDEST 000002bc: PUSH2 0x0646 000002bf: JUMP 000002c0: JUMPDEST 000002c1: PUSH1 0x40 000002c3: MLOAD 000002c4: PUSH2 0x02cd 000002c7: SWAP2 000002c8: SWAP1 000002c9: PUSH2 0x1a94 000002cc: JUMP 000002cd: JUMPDEST 000002ce: PUSH1 0x40 000002d0: MLOAD 000002d1: DUP1 000002d2: SWAP2 000002d3: SUB 000002d4: SWAP1 000002d5: RETURN 000002d6: JUMPDEST 000002d7: CALLVALUE 000002d8: DUP1 000002d9: ISZERO 000002da: PUSH2 0x02e1 000002dd: JUMPI 000002de: PUSH0 000002df: DUP1 000002e0: REVERT 000002e1: JUMPDEST 000002e2: POP 000002e3: PUSH2 0x02fc 000002e6: PUSH1 0x04 000002e8: DUP1 000002e9: CALLDATASIZE 000002ea: SUB 000002eb: DUP2 000002ec: ADD 000002ed: SWAP1 000002ee: PUSH2 0x02f7 000002f1: SWAP2 000002f2: SWAP1 000002f3: PUSH2 0x1a4f 000002f6: JUMP 000002f7: JUMPDEST 000002f8: PUSH2 0x083d 000002fb: JUMP 000002fc: JUMPDEST 000002fd: PUSH1 0x40 000002ff: MLOAD 00000300: PUSH2 0x0309 00000303: SWAP2 00000304: SWAP1 00000305: PUSH2 0x1abc 00000308: JUMP 00000309: JUMPDEST 0000030a: PUSH1 0x40 0000030c: MLOAD 0000030d: DUP1 0000030e: SWAP2 0000030f: SUB 00000310: SWAP1 00000311: RETURN 00000312: JUMPDEST 00000313: PUSH2 0x032c 00000316: PUSH1 0x04 00000318: DUP1 00000319: CALLDATASIZE 0000031a: SUB 0000031b: DUP2 0000031c: ADD 0000031d: SWAP1 0000031e: PUSH2 0x0327 00000321: SWAP2 00000322: SWAP1 00000323: PUSH2 0x1ad5 00000326: JUMP 00000327: JUMPDEST 00000328: PUSH2 0x08b4 0000032b: JUMP 0000032c: JUMPDEST 0000032d: PUSH1 0x40 0000032f: MLOAD 00000330: PUSH2 0x0339 00000333: SWAP2 00000334: SWAP1 00000335: PUSH2 0x1b38 00000338: JUMP 00000339: JUMPDEST 0000033a: PUSH1 0x40 0000033c: MLOAD 0000033d: DUP1 0000033e: SWAP2 0000033f: SUB 00000340: SWAP1 00000341: RETURN 00000342: JUMPDEST 00000343: CALLVALUE 00000344: DUP1 00000345: ISZERO 00000346: PUSH2 0x034d 00000349: JUMPI 0000034a: PUSH0 0000034b: DUP1 0000034c: REVERT 0000034d: JUMPDEST 0000034e: POP 0000034f: PUSH2 0x0356 00000352: PUSH2 0x0c0f 00000355: JUMP 00000356: JUMPDEST 00000357: STOP 00000358: JUMPDEST 00000359: CALLVALUE 0000035a: DUP1 0000035b: ISZERO 0000035c: PUSH2 0x0363 0000035f: JUMPI 00000360: PUSH0 00000361: DUP1 00000362: REVERT 00000363: JUMPDEST 00000364: POP 00000365: PUSH2 0x037e 00000368: PUSH1 0x04 0000036a: DUP1 0000036b: CALLDATASIZE 0000036c: SUB 0000036d: DUP2 0000036e: ADD 0000036f: SWAP1 00000370: PUSH2 0x0379 00000373: SWAP2 00000374: SWAP1 00000375: PUSH2 0x1b7b 00000378: JUMP 00000379: JUMPDEST 0000037a: PUSH2 0x0d59 0000037d: JUMP 0000037e: JUMPDEST 0000037f: STOP 00000380: JUMPDEST 00000381: PUSH2 0x039a 00000384: PUSH1 0x04 00000386: DUP1 00000387: CALLDATASIZE 00000388: SUB 00000389: DUP2 0000038a: ADD 0000038b: SWAP1 0000038c: PUSH2 0x0395 0000038f: SWAP2 00000390: SWAP1 00000391: PUSH2 0x199d 00000394: JUMP 00000395: JUMPDEST 00000396: PUSH2 0x0ec7 00000399: JUMP 0000039a: JUMPDEST 0000039b: STOP 0000039c: JUMPDEST 0000039d: CALLVALUE 0000039e: DUP1 0000039f: ISZERO 000003a0: PUSH2 0x03a7 000003a3: JUMPI 000003a4: PUSH0 000003a5: DUP1 000003a6: REVERT 000003a7: JUMPDEST 000003a8: POP 000003a9: PUSH2 0x03c2 000003ac: PUSH1 0x04 000003ae: DUP1 000003af: CALLDATASIZE 000003b0: SUB 000003b1: DUP2 000003b2: ADD 000003b3: SWAP1 000003b4: PUSH2 0x03bd 000003b7: SWAP2 000003b8: SWAP1 000003b9: PUSH2 0x1bb9 000003bc: JUMP 000003bd: JUMPDEST 000003be: PUSH2 0x103a 000003c1: JUMP 000003c2: JUMPDEST 000003c3: STOP 000003c4: JUMPDEST 000003c5: CALLVALUE 000003c6: DUP1 000003c7: ISZERO 000003c8: PUSH2 0x03cf 000003cb: JUMPI 000003cc: PUSH0 000003cd: DUP1 000003ce: REVERT 000003cf: JUMPDEST 000003d0: POP 000003d1: PUSH2 0x03ea 000003d4: PUSH1 0x04 000003d6: DUP1 000003d7: CALLDATASIZE 000003d8: SUB 000003d9: DUP2 000003da: ADD 000003db: SWAP1 000003dc: PUSH2 0x03e5 000003df: SWAP2 000003e0: SWAP1 000003e1: PUSH2 0x1be4 000003e4: JUMP 000003e5: JUMPDEST 000003e6: PUSH2 0x10bf 000003e9: JUMP 000003ea: JUMPDEST 000003eb: STOP 000003ec: JUMPDEST 000003ed: CALLVALUE 000003ee: DUP1 000003ef: ISZERO 000003f0: PUSH2 0x03f7 000003f3: JUMPI 000003f4: PUSH0 000003f5: DUP1 000003f6: REVERT 000003f7: JUMPDEST 000003f8: POP 000003f9: PUSH2 0x0412 000003fc: PUSH1 0x04 000003fe: DUP1 000003ff: CALLDATASIZE 00000400: SUB 00000401: DUP2 00000402: ADD 00000403: SWAP1 00000404: PUSH2 0x040d 00000407: SWAP2 00000408: SWAP1 00000409: PUSH2 0x1c4c 0000040c: JUMP 0000040d: JUMPDEST 0000040e: PUSH2 0x12ba 00000411: JUMP 00000412: JUMPDEST 00000413: STOP 00000414: JUMPDEST 00000415: PUSH0 00000416: DUP1 00000417: DUP5 00000418: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000042d: AND 0000042e: DUP5 0000042f: DUP5 00000430: PUSH1 0x40 00000432: MLOAD 00000433: PUSH2 0x043d 00000436: SWAP3 00000437: SWAP2 00000438: SWAP1 00000439: PUSH2 0x1cb3 0000043c: JUMP 0000043d: JUMPDEST 0000043e: PUSH0 0000043f: PUSH1 0x40 00000441: MLOAD 00000442: DUP1 00000443: DUP4 00000444: SUB 00000445: DUP2 00000446: DUP6 00000447: GAS 00000448: DELEGATECALL 00000449: SWAP2 0000044a: POP 0000044b: POP 0000044c: RETURNDATASIZE 0000044d: DUP1 0000044e: PUSH0 0000044f: DUP2 00000450: EQ 00000451: PUSH2 0x0475 00000454: JUMPI 00000455: PUSH1 0x40 00000457: MLOAD 00000458: SWAP2 00000459: POP 0000045a: PUSH1 0x1f 0000045c: NOT 0000045d: PUSH1 0x3f 0000045f: RETURNDATASIZE 00000460: ADD 00000461: AND 00000462: DUP3 00000463: ADD 00000464: PUSH1 0x40 00000466: MSTORE 00000467: RETURNDATASIZE 00000468: DUP3 00000469: MSTORE 0000046a: RETURNDATASIZE 0000046b: PUSH0 0000046c: PUSH1 0x20 0000046e: DUP5 0000046f: ADD 00000470: RETURNDATACOPY 00000471: PUSH2 0x047a 00000474: JUMP 00000475: JUMPDEST 00000476: PUSH1 0x60 00000478: SWAP2 00000479: POP 0000047a: JUMPDEST 0000047b: POP 0000047c: SWAP2 0000047d: POP 0000047e: SWAP2 0000047f: POP 00000480: DUP2 00000481: PUSH2 0x048b 00000484: JUMPI 00000485: DUP1 00000486: PUSH1 0x20 00000488: DUP3 00000489: ADD 0000048a: REVERT 0000048b: JUMPDEST 0000048c: POP 0000048d: POP 0000048e: POP 0000048f: POP 00000490: POP 00000491: JUMP 00000492: JUMPDEST 00000493: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 000004a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004bd: AND 000004be: CALLER 000004bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004d4: AND 000004d5: EQ 000004d6: PUSH2 0x0514 000004d9: JUMPI 000004da: PUSH1 0x40 000004dc: MLOAD 000004dd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004fe: DUP2 000004ff: MSTORE 00000500: PUSH1 0x04 00000502: ADD 00000503: PUSH2 0x050b 00000506: SWAP1 00000507: PUSH2 0x1d15 0000050a: JUMP 0000050b: JUMPDEST 0000050c: PUSH1 0x40 0000050e: MLOAD 0000050f: DUP1 00000510: SWAP2 00000511: SUB 00000512: SWAP1 00000513: REVERT 00000514: JUMPDEST 00000515: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 0000052a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000053f: AND 00000540: CALLER 00000541: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000556: AND 00000557: EQ 00000558: PUSH2 0x0596 0000055b: JUMPI 0000055c: PUSH1 0x40 0000055e: MLOAD 0000055f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000580: DUP2 00000581: MSTORE 00000582: PUSH1 0x04 00000584: ADD 00000585: PUSH2 0x058d 00000588: SWAP1 00000589: PUSH2 0x1d15 0000058c: JUMP 0000058d: JUMPDEST 0000058e: PUSH1 0x40 00000590: MLOAD 00000591: DUP1 00000592: SWAP2 00000593: SUB 00000594: SWAP1 00000595: REVERT 00000596: JUMPDEST 00000597: PUSH1 0x01 00000599: PUSH0 0000059a: SLOAD 0000059b: EQ 0000059c: PUSH2 0x05da 0000059f: JUMPI 000005a0: PUSH1 0x40 000005a2: MLOAD 000005a3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000005c4: DUP2 000005c5: MSTORE 000005c6: PUSH1 0x04 000005c8: ADD 000005c9: PUSH2 0x05d1 000005cc: SWAP1 000005cd: PUSH2 0x1d7d 000005d0: JUMP 000005d1: JUMPDEST 000005d2: PUSH1 0x40 000005d4: MLOAD 000005d5: DUP1 000005d6: SWAP2 000005d7: SUB 000005d8: SWAP1 000005d9: REVERT 000005da: JUMPDEST 000005db: PUSH1 0x02 000005dd: PUSH0 000005de: DUP2 000005df: SWAP1 000005e0: SSTORE 000005e1: POP 000005e2: PUSH0 000005e3: SELFBALANCE 000005e4: SWAP1 000005e5: POP 000005e6: PUSH2 0x05f1 000005e9: DUP5 000005ea: CALLVALUE 000005eb: DUP6 000005ec: DUP6 000005ed: PUSH2 0x1405 000005f0: JUMP 000005f1: JUMPDEST 000005f2: PUSH0 000005f3: SELFBALANCE 000005f4: SWAP1 000005f5: POP 000005f6: DUP2 000005f7: DUP2 000005f8: LT 000005f9: ISZERO 000005fa: PUSH2 0x0638 000005fd: JUMPI 000005fe: PUSH1 0x40 00000600: MLOAD 00000601: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000622: DUP2 00000623: MSTORE 00000624: PUSH1 0x04 00000626: ADD 00000627: PUSH2 0x062f 0000062a: SWAP1 0000062b: PUSH2 0x1de5 0000062e: JUMP 0000062f: JUMPDEST 00000630: PUSH1 0x40 00000632: MLOAD 00000633: DUP1 00000634: SWAP2 00000635: SUB 00000636: SWAP1 00000637: REVERT 00000638: JUMPDEST 00000639: PUSH1 0x01 0000063b: PUSH0 0000063c: DUP2 0000063d: SWAP1 0000063e: SSTORE 0000063f: POP 00000640: POP 00000641: POP 00000642: POP 00000643: POP 00000644: POP 00000645: JUMP 00000646: JUMPDEST 00000647: PUSH0 00000648: PUSH4 0x01ffc9a7 0000064d: PUSH1 0xe0 0000064f: SHL 00000650: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000066d: NOT 0000066e: AND 0000066f: DUP3 00000670: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000068d: NOT 0000068e: AND 0000068f: EQ 00000690: DUP1 00000691: PUSH2 0x06de 00000694: JUMPI 00000695: POP 00000696: PUSH4 0x150b7a02 0000069b: PUSH1 0xe0 0000069d: SHL 0000069e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000006bb: NOT 000006bc: AND 000006bd: DUP3 000006be: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000006db: NOT 000006dc: AND 000006dd: EQ 000006de: JUMPDEST 000006df: DUP1 000006e0: PUSH2 0x072d 000006e3: JUMPI 000006e4: POP 000006e5: PUSH4 0xf0b9e5ba 000006ea: PUSH1 0xe0 000006ec: SHL 000006ed: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000070a: NOT 0000070b: AND 0000070c: DUP3 0000070d: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000072a: NOT 0000072b: AND 0000072c: EQ 0000072d: JUMPDEST 0000072e: DUP1 0000072f: PUSH2 0x077c 00000732: JUMPI 00000733: POP 00000734: PUSH4 0xf23a6e61 00000739: PUSH1 0xe0 0000073b: SHL 0000073c: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000759: NOT 0000075a: AND 0000075b: DUP3 0000075c: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000779: NOT 0000077a: AND 0000077b: EQ 0000077c: JUMPDEST 0000077d: DUP1 0000077e: PUSH2 0x07cb 00000781: JUMPI 00000782: POP 00000783: PUSH4 0xbc197c81 00000788: PUSH1 0xe0 0000078a: SHL 0000078b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000007a8: NOT 000007a9: AND 000007aa: DUP3 000007ab: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000007c8: NOT 000007c9: AND 000007ca: EQ 000007cb: JUMPDEST 000007cc: ISZERO 000007cd: PUSH2 0x07d9 000007d0: JUMPI 000007d1: PUSH1 0x01 000007d3: SWAP1 000007d4: POP 000007d5: PUSH2 0x0838 000007d8: JUMP 000007d9: JUMPDEST 000007da: PUSH1 0x01 000007dc: PUSH0 000007dd: DUP4 000007de: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000007fb: NOT 000007fc: AND 000007fd: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000081a: NOT 0000081b: AND 0000081c: DUP2 0000081d: MSTORE 0000081e: PUSH1 0x20 00000820: ADD 00000821: SWAP1 00000822: DUP2 00000823: MSTORE 00000824: PUSH1 0x20 00000826: ADD 00000827: PUSH0 00000828: KECCAK256 00000829: PUSH0 0000082a: SWAP1 0000082b: SLOAD 0000082c: SWAP1 0000082d: PUSH2 0x0100 00000830: EXP 00000831: SWAP1 00000832: DIV 00000833: PUSH1 0xff 00000835: AND 00000836: SWAP1 00000837: POP 00000838: JUMPDEST 00000839: SWAP2 0000083a: SWAP1 0000083b: POP 0000083c: JUMP 0000083d: JUMPDEST 0000083e: PUSH0 0000083f: PUSH1 0x02 00000841: PUSH0 00000842: DUP4 00000843: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000860: NOT 00000861: AND 00000862: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000087f: NOT 00000880: AND 00000881: DUP2 00000882: MSTORE 00000883: PUSH1 0x20 00000885: ADD 00000886: SWAP1 00000887: DUP2 00000888: MSTORE 00000889: PUSH1 0x20 0000088b: ADD 0000088c: PUSH0 0000088d: KECCAK256 0000088e: PUSH0 0000088f: SWAP1 00000890: SLOAD 00000891: SWAP1 00000892: PUSH2 0x0100 00000895: EXP 00000896: SWAP1 00000897: DIV 00000898: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008ad: AND 000008ae: SWAP1 000008af: POP 000008b0: SWAP2 000008b1: SWAP1 000008b2: POP 000008b3: JUMP 000008b4: JUMPDEST 000008b5: PUSH0 000008b6: DUP1 000008b7: GAS 000008b8: SWAP1 000008b9: POP 000008ba: PUSH20 0x9ecee66868cbbb2c0b45fcf77a16e4fb965eb710 000008cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008e4: AND 000008e5: CALLER 000008e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008fb: AND 000008fc: EQ 000008fd: PUSH2 0x093b 00000900: JUMPI 00000901: PUSH1 0x40 00000903: MLOAD 00000904: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000925: DUP2 00000926: MSTORE 00000927: PUSH1 0x04 00000929: ADD 0000092a: PUSH2 0x0932 0000092d: SWAP1 0000092e: PUSH2 0x1e4d 00000931: JUMP 00000932: JUMPDEST 00000933: PUSH1 0x40 00000935: MLOAD 00000936: DUP1 00000937: SWAP2 00000938: SUB 00000939: SWAP1 0000093a: REVERT 0000093b: JUMPDEST 0000093c: PUSH1 0x01 0000093e: PUSH0 0000093f: SLOAD 00000940: EQ 00000941: PUSH2 0x097f 00000944: JUMPI 00000945: PUSH1 0x40 00000947: MLOAD 00000948: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000969: DUP2 0000096a: MSTORE 0000096b: PUSH1 0x04 0000096d: ADD 0000096e: PUSH2 0x0976 00000971: SWAP1 00000972: PUSH2 0x1d7d 00000975: JUMP 00000976: JUMPDEST 00000977: PUSH1 0x40 00000979: MLOAD 0000097a: DUP1 0000097b: SWAP2 0000097c: SUB 0000097d: SWAP1 0000097e: REVERT 0000097f: JUMPDEST 00000980: PUSH1 0x02 00000982: PUSH0 00000983: DUP2 00000984: SWAP1 00000985: SSTORE 00000986: POP 00000987: PUSH0 00000988: SELFBALANCE 00000989: SWAP1 0000098a: POP 0000098b: PUSH2 0x0994 0000098e: DUP6 0000098f: DUP6 00000990: PUSH2 0x1487 00000993: JUMP 00000994: JUMPDEST 00000995: PUSH0 00000996: SELFBALANCE 00000997: SWAP1 00000998: POP 00000999: DUP2 0000099a: DUP2 0000099b: GT 0000099c: PUSH2 0x09da 0000099f: JUMPI 000009a0: PUSH1 0x40 000009a2: MLOAD 000009a3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009c4: DUP2 000009c5: MSTORE 000009c6: PUSH1 0x04 000009c8: ADD 000009c9: PUSH2 0x09d1 000009cc: SWAP1 000009cd: PUSH2 0x1eb5 000009d0: JUMP 000009d1: JUMPDEST 000009d2: PUSH1 0x40 000009d4: MLOAD 000009d5: DUP1 000009d6: SWAP2 000009d7: SUB 000009d8: SWAP1 000009d9: REVERT 000009da: JUMPDEST 000009db: PUSH0 000009dc: DUP7 000009dd: DUP7 000009de: PUSH0 000009df: SWAP1 000009e0: PUSH1 0x02 000009e2: SWAP3 000009e3: PUSH2 0x09ee 000009e6: SWAP4 000009e7: SWAP3 000009e8: SWAP2 000009e9: SWAP1 000009ea: PUSH2 0x1edb 000009ed: JUMP 000009ee: JUMPDEST 000009ef: SWAP1 000009f0: PUSH2 0x09f9 000009f3: SWAP2 000009f4: SWAP1 000009f5: PUSH2 0x1f56 000009f8: JUMP 000009f9: JUMPDEST 000009fa: PUSH1 0xf0 000009fc: SHR 000009fd: PUSH2 0xffff 00000a00: AND 00000a01: SWAP1 00000a02: POP 00000a03: PUSH0 00000a04: DUP4 00000a05: DUP4 00000a06: SUB 00000a07: SWAP1 00000a08: POP 00000a09: PUSH0 00000a0a: PUSH1 0x09 00000a0c: DUP10 00000a0d: DUP10 00000a0e: SWAP1 00000a0f: POP 00000a10: MUL 00000a11: PUSH1 0x40 00000a13: ADD 00000a14: SWAP1 00000a15: POP 00000a16: PUSH0 00000a17: PUSH2 0x5208 00000a1a: DUP3 00000a1b: PUSH2 0x9941 00000a1e: GAS 00000a1f: DUP11 00000a20: SUB 00000a21: ADD 00000a22: ADD 00000a23: ADD 00000a24: GASPRICE 00000a25: MUL 00000a26: SWAP1 00000a27: POP 00000a28: DUP1 00000a29: DUP4 00000a2a: GT 00000a2b: PUSH2 0x0a69 00000a2e: JUMPI 00000a2f: PUSH1 0x40 00000a31: MLOAD 00000a32: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a53: DUP2 00000a54: MSTORE 00000a55: PUSH1 0x04 00000a57: ADD 00000a58: PUSH2 0x0a60 00000a5b: SWAP1 00000a5c: PUSH2 0x1ffe 00000a5f: JUMP 00000a60: JUMPDEST 00000a61: PUSH1 0x40 00000a63: MLOAD 00000a64: DUP1 00000a65: SWAP2 00000a66: SUB 00000a67: SWAP1 00000a68: REVERT 00000a69: JUMPDEST 00000a6a: DUP1 00000a6b: DUP4 00000a6c: SUB 00000a6d: SWAP3 00000a6e: POP 00000a6f: PUSH0 00000a70: DUP5 00000a71: GT 00000a72: ISZERO 00000a73: PUSH2 0x0b1e 00000a76: JUMPI 00000a77: PUSH2 0x2710 00000a7a: DUP5 00000a7b: GT 00000a7c: ISZERO 00000a7d: PUSH2 0x0abb 00000a80: JUMPI 00000a81: PUSH1 0x40 00000a83: MLOAD 00000a84: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000aa5: DUP2 00000aa6: MSTORE 00000aa7: PUSH1 0x04 00000aa9: ADD 00000aaa: PUSH2 0x0ab2 00000aad: SWAP1 00000aae: PUSH2 0x2066 00000ab1: JUMP 00000ab2: JUMPDEST 00000ab3: PUSH1 0x40 00000ab5: MLOAD 00000ab6: DUP1 00000ab7: SWAP2 00000ab8: SUB 00000ab9: SWAP1 00000aba: REVERT 00000abb: JUMPDEST 00000abc: PUSH0 00000abd: PUSH2 0x2710 00000ac0: DUP6 00000ac1: DUP6 00000ac2: MUL 00000ac3: DUP2 00000ac4: PUSH2 0x0ad0 00000ac7: JUMPI 00000ac8: PUSH2 0x0acf 00000acb: PUSH2 0x2084 00000ace: JUMP 00000acf: JUMPDEST 00000ad0: JUMPDEST 00000ad1: DIV 00000ad2: SWAP1 00000ad3: POP 00000ad4: COINBASE 00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aea: AND 00000aeb: PUSH2 0x08fc 00000aee: DUP3 00000aef: SWAP1 00000af0: DUP2 00000af1: ISZERO 00000af2: MUL 00000af3: SWAP1 00000af4: PUSH1 0x40 00000af6: MLOAD 00000af7: PUSH0 00000af8: PUSH1 0x40 00000afa: MLOAD 00000afb: DUP1 00000afc: DUP4 00000afd: SUB 00000afe: DUP2 00000aff: DUP6 00000b00: DUP9 00000b01: DUP9 00000b02: CALL 00000b03: SWAP4 00000b04: POP 00000b05: POP 00000b06: POP 00000b07: POP 00000b08: ISZERO 00000b09: DUP1 00000b0a: ISZERO 00000b0b: PUSH2 0x0b16 00000b0e: JUMPI 00000b0f: RETURNDATASIZE 00000b10: PUSH0 00000b11: DUP1 00000b12: RETURNDATACOPY 00000b13: RETURNDATASIZE 00000b14: PUSH0 00000b15: REVERT 00000b16: JUMPDEST 00000b17: POP 00000b18: DUP1 00000b19: DUP5 00000b1a: SUB 00000b1b: SWAP4 00000b1c: POP 00000b1d: POP 00000b1e: JUMPDEST 00000b1f: CALLER 00000b20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b35: AND 00000b36: PUSH2 0x08fc 00000b39: DUP3 00000b3a: DUP6 00000b3b: ADD 00000b3c: SWAP1 00000b3d: DUP2 00000b3e: ISZERO 00000b3f: MUL 00000b40: SWAP1 00000b41: PUSH1 0x40 00000b43: MLOAD 00000b44: PUSH0 00000b45: PUSH1 0x40 00000b47: MLOAD 00000b48: DUP1 00000b49: DUP4 00000b4a: SUB 00000b4b: DUP2 00000b4c: DUP6 00000b4d: DUP9 00000b4e: DUP9 00000b4f: CALL 00000b50: SWAP4 00000b51: POP 00000b52: POP 00000b53: POP 00000b54: POP 00000b55: ISZERO 00000b56: DUP1 00000b57: ISZERO 00000b58: PUSH2 0x0b63 00000b5b: JUMPI 00000b5c: RETURNDATASIZE 00000b5d: PUSH0 00000b5e: DUP1 00000b5f: RETURNDATACOPY 00000b60: RETURNDATASIZE 00000b61: PUSH0 00000b62: REVERT 00000b63: JUMPDEST 00000b64: POP 00000b65: PUSH1 0x01 00000b67: PUSH0 00000b68: DUP2 00000b69: SWAP1 00000b6a: SSTORE 00000b6b: POP 00000b6c: CALLVALUE 00000b6d: GASPRICE 00000b6e: MUL 00000b6f: DUP2 00000b70: DUP5 00000b71: ADD 00000b72: GT 00000b73: PUSH2 0x0bb1 00000b76: JUMPI 00000b77: PUSH1 0x40 00000b79: MLOAD 00000b7a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b9b: DUP2 00000b9c: MSTORE 00000b9d: PUSH1 0x04 00000b9f: ADD 00000ba0: PUSH2 0x0ba8 00000ba3: SWAP1 00000ba4: PUSH2 0x20fb 00000ba7: JUMP 00000ba8: JUMPDEST 00000ba9: PUSH1 0x40 00000bab: MLOAD 00000bac: DUP1 00000bad: SWAP2 00000bae: SUB 00000baf: SWAP1 00000bb0: REVERT 00000bb1: JUMPDEST 00000bb2: PUSH2 0x5208 00000bb5: DUP3 00000bb6: GAS 00000bb7: DUP10 00000bb8: SUB 00000bb9: ADD 00000bba: ADD 00000bbb: GASPRICE 00000bbc: MUL 00000bbd: DUP2 00000bbe: DUP5 00000bbf: ADD 00000bc0: GT 00000bc1: PUSH2 0x0bff 00000bc4: JUMPI 00000bc5: PUSH1 0x40 00000bc7: MLOAD 00000bc8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000be9: DUP2 00000bea: MSTORE 00000beb: PUSH1 0x04 00000bed: ADD 00000bee: PUSH2 0x0bf6 00000bf1: SWAP1 00000bf2: PUSH2 0x2163 00000bf5: JUMP 00000bf6: JUMPDEST 00000bf7: PUSH1 0x40 00000bf9: MLOAD 00000bfa: DUP1 00000bfb: SWAP2 00000bfc: SUB 00000bfd: SWAP1 00000bfe: REVERT 00000bff: JUMPDEST 00000c00: DUP3 00000c01: SWAP8 00000c02: POP 00000c03: POP 00000c04: POP 00000c05: POP 00000c06: POP 00000c07: POP 00000c08: POP 00000c09: POP 00000c0a: SWAP3 00000c0b: SWAP2 00000c0c: POP 00000c0d: POP 00000c0e: JUMP 00000c0f: JUMPDEST 00000c10: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000c25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c3a: AND 00000c3b: CALLER 00000c3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c51: AND 00000c52: EQ 00000c53: PUSH2 0x0c91 00000c56: JUMPI 00000c57: PUSH1 0x40 00000c59: MLOAD 00000c5a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c7b: DUP2 00000c7c: MSTORE 00000c7d: PUSH1 0x04 00000c7f: ADD 00000c80: PUSH2 0x0c88 00000c83: SWAP1 00000c84: PUSH2 0x1d15 00000c87: JUMP 00000c88: JUMPDEST 00000c89: PUSH1 0x40 00000c8b: MLOAD 00000c8c: DUP1 00000c8d: SWAP2 00000c8e: SUB 00000c8f: SWAP1 00000c90: REVERT 00000c91: JUMPDEST 00000c92: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000ca7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cbc: AND 00000cbd: CALLER 00000cbe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cd3: AND 00000cd4: EQ 00000cd5: PUSH2 0x0d13 00000cd8: JUMPI 00000cd9: PUSH1 0x40 00000cdb: MLOAD 00000cdc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000cfd: DUP2 00000cfe: MSTORE 00000cff: PUSH1 0x04 00000d01: ADD 00000d02: PUSH2 0x0d0a 00000d05: SWAP1 00000d06: PUSH2 0x1d15 00000d09: JUMP 00000d0a: JUMPDEST 00000d0b: PUSH1 0x40 00000d0d: MLOAD 00000d0e: DUP1 00000d0f: SWAP2 00000d10: SUB 00000d11: SWAP1 00000d12: REVERT 00000d13: JUMPDEST 00000d14: CALLER 00000d15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d2a: AND 00000d2b: PUSH2 0x08fc 00000d2e: SELFBALANCE 00000d2f: SWAP1 00000d30: DUP2 00000d31: ISZERO 00000d32: MUL 00000d33: SWAP1 00000d34: PUSH1 0x40 00000d36: MLOAD 00000d37: PUSH0 00000d38: PUSH1 0x40 00000d3a: MLOAD 00000d3b: DUP1 00000d3c: DUP4 00000d3d: SUB 00000d3e: DUP2 00000d3f: DUP6 00000d40: DUP9 00000d41: DUP9 00000d42: CALL 00000d43: SWAP4 00000d44: POP 00000d45: POP 00000d46: POP 00000d47: POP 00000d48: ISZERO 00000d49: DUP1 00000d4a: ISZERO 00000d4b: PUSH2 0x0d56 00000d4e: JUMPI 00000d4f: RETURNDATASIZE 00000d50: PUSH0 00000d51: DUP1 00000d52: RETURNDATACOPY 00000d53: RETURNDATASIZE 00000d54: PUSH0 00000d55: REVERT 00000d56: JUMPDEST 00000d57: POP 00000d58: JUMP 00000d59: JUMPDEST 00000d5a: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000d6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d84: AND 00000d85: CALLER 00000d86: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d9b: AND 00000d9c: EQ 00000d9d: PUSH2 0x0ddb 00000da0: JUMPI 00000da1: PUSH1 0x40 00000da3: MLOAD 00000da4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000dc5: DUP2 00000dc6: MSTORE 00000dc7: PUSH1 0x04 00000dc9: ADD 00000dca: PUSH2 0x0dd2 00000dcd: SWAP1 00000dce: PUSH2 0x1d15 00000dd1: JUMP 00000dd2: JUMPDEST 00000dd3: PUSH1 0x40 00000dd5: MLOAD 00000dd6: DUP1 00000dd7: SWAP2 00000dd8: SUB 00000dd9: SWAP1 00000dda: REVERT 00000ddb: JUMPDEST 00000ddc: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000df1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e06: AND 00000e07: CALLER 00000e08: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e1d: AND 00000e1e: EQ 00000e1f: PUSH2 0x0e5d 00000e22: JUMPI 00000e23: PUSH1 0x40 00000e25: MLOAD 00000e26: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e47: DUP2 00000e48: MSTORE 00000e49: PUSH1 0x04 00000e4b: ADD 00000e4c: PUSH2 0x0e54 00000e4f: SWAP1 00000e50: PUSH2 0x1d15 00000e53: JUMP 00000e54: JUMPDEST 00000e55: PUSH1 0x40 00000e57: MLOAD 00000e58: DUP1 00000e59: SWAP2 00000e5a: SUB 00000e5b: SWAP1 00000e5c: REVERT 00000e5d: JUMPDEST 00000e5e: DUP1 00000e5f: PUSH1 0x01 00000e61: PUSH0 00000e62: DUP5 00000e63: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000e80: NOT 00000e81: AND 00000e82: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000e9f: NOT 00000ea0: AND 00000ea1: DUP2 00000ea2: MSTORE 00000ea3: PUSH1 0x20 00000ea5: ADD 00000ea6: SWAP1 00000ea7: DUP2 00000ea8: MSTORE 00000ea9: PUSH1 0x20 00000eab: ADD 00000eac: PUSH0 00000ead: KECCAK256 00000eae: PUSH0 00000eaf: PUSH2 0x0100 00000eb2: EXP 00000eb3: DUP2 00000eb4: SLOAD 00000eb5: DUP2 00000eb6: PUSH1 0xff 00000eb8: MUL 00000eb9: NOT 00000eba: AND 00000ebb: SWAP1 00000ebc: DUP4 00000ebd: ISZERO 00000ebe: ISZERO 00000ebf: MUL 00000ec0: OR 00000ec1: SWAP1 00000ec2: SSTORE 00000ec3: POP 00000ec4: POP 00000ec5: POP 00000ec6: JUMP 00000ec7: JUMPDEST 00000ec8: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000edd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ef2: AND 00000ef3: CALLER 00000ef4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f09: AND 00000f0a: EQ 00000f0b: PUSH2 0x0f49 00000f0e: JUMPI 00000f0f: PUSH1 0x40 00000f11: MLOAD 00000f12: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f33: DUP2 00000f34: MSTORE 00000f35: PUSH1 0x04 00000f37: ADD 00000f38: PUSH2 0x0f40 00000f3b: SWAP1 00000f3c: PUSH2 0x1d15 00000f3f: JUMP 00000f40: JUMPDEST 00000f41: PUSH1 0x40 00000f43: MLOAD 00000f44: DUP1 00000f45: SWAP2 00000f46: SUB 00000f47: SWAP1 00000f48: REVERT 00000f49: JUMPDEST 00000f4a: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00000f5f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f74: AND 00000f75: CALLER 00000f76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f8b: AND 00000f8c: EQ 00000f8d: PUSH2 0x0fcb 00000f90: JUMPI 00000f91: PUSH1 0x40 00000f93: MLOAD 00000f94: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000fb5: DUP2 00000fb6: MSTORE 00000fb7: PUSH1 0x04 00000fb9: ADD 00000fba: PUSH2 0x0fc2 00000fbd: SWAP1 00000fbe: PUSH2 0x1d15 00000fc1: JUMP 00000fc2: JUMPDEST 00000fc3: PUSH1 0x40 00000fc5: MLOAD 00000fc6: DUP1 00000fc7: SWAP2 00000fc8: SUB 00000fc9: SWAP1 00000fca: REVERT 00000fcb: JUMPDEST 00000fcc: DUP3 00000fcd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fe2: AND 00000fe3: CALLVALUE 00000fe4: DUP4 00000fe5: DUP4 00000fe6: PUSH1 0x40 00000fe8: MLOAD 00000fe9: PUSH2 0x0ff3 00000fec: SWAP3 00000fed: SWAP2 00000fee: SWAP1 00000fef: PUSH2 0x1cb3 00000ff2: JUMP 00000ff3: JUMPDEST 00000ff4: PUSH0 00000ff5: PUSH1 0x40 00000ff7: MLOAD 00000ff8: DUP1 00000ff9: DUP4 00000ffa: SUB 00000ffb: DUP2 00000ffc: DUP6 00000ffd: DUP8 00000ffe: GAS 00000fff: CALL 00001000: SWAP3 00001001: POP 00001002: POP 00001003: POP 00001004: RETURNDATASIZE 00001005: DUP1 00001006: PUSH0 00001007: DUP2 00001008: EQ 00001009: PUSH2 0x102d 0000100c: JUMPI 0000100d: PUSH1 0x40 0000100f: MLOAD 00001010: SWAP2 00001011: POP 00001012: PUSH1 0x1f 00001014: NOT 00001015: PUSH1 0x3f 00001017: RETURNDATASIZE 00001018: ADD 00001019: AND 0000101a: DUP3 0000101b: ADD 0000101c: PUSH1 0x40 0000101e: MSTORE 0000101f: RETURNDATASIZE 00001020: DUP3 00001021: MSTORE 00001022: RETURNDATASIZE 00001023: PUSH0 00001024: PUSH1 0x20 00001026: DUP5 00001027: ADD 00001028: RETURNDATACOPY 00001029: PUSH2 0x1032 0000102c: JUMP 0000102d: JUMPDEST 0000102e: PUSH1 0x60 00001030: SWAP2 00001031: POP 00001032: JUMPDEST 00001033: POP 00001034: POP 00001035: POP 00001036: POP 00001037: POP 00001038: POP 00001039: JUMP 0000103a: JUMPDEST 0000103b: PUSH20 0x2ec0a49888cf7bd05985fe8366e9205c9d0f901e 00001050: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001065: AND 00001066: CALLER 00001067: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107c: AND 0000107d: EQ 0000107e: PUSH2 0x10bc 00001081: JUMPI 00001082: PUSH1 0x40 00001084: MLOAD 00001085: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000010a6: DUP2 000010a7: MSTORE 000010a8: PUSH1 0x04 000010aa: ADD 000010ab: PUSH2 0x10b3 000010ae: SWAP1 000010af: PUSH2 0x21cb 000010b2: JUMP 000010b3: JUMPDEST 000010b4: PUSH1 0x40 000010b6: MLOAD 000010b7: DUP1 000010b8: SWAP2 000010b9: SUB 000010ba: SWAP1 000010bb: REVERT 000010bc: JUMPDEST 000010bd: POP 000010be: JUMP 000010bf: JUMPDEST 000010c0: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 000010d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010ea: AND 000010eb: CALLER 000010ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001101: AND 00001102: EQ 00001103: PUSH2 0x1141 00001106: JUMPI 00001107: PUSH1 0x40 00001109: MLOAD 0000110a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000112b: DUP2 0000112c: MSTORE 0000112d: PUSH1 0x04 0000112f: ADD 00001130: PUSH2 0x1138 00001133: SWAP1 00001134: PUSH2 0x1d15 00001137: JUMP 00001138: JUMPDEST 00001139: PUSH1 0x40 0000113b: MLOAD 0000113c: DUP1 0000113d: SWAP2 0000113e: SUB 0000113f: SWAP1 00001140: REVERT 00001141: JUMPDEST 00001142: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00001157: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000116c: AND 0000116d: CALLER 0000116e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001183: AND 00001184: EQ 00001185: PUSH2 0x11c3 00001188: JUMPI 00001189: PUSH1 0x40 0000118b: MLOAD 0000118c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000011ad: DUP2 000011ae: MSTORE 000011af: PUSH1 0x04 000011b1: ADD 000011b2: PUSH2 0x11ba 000011b5: SWAP1 000011b6: PUSH2 0x1d15 000011b9: JUMP 000011ba: JUMPDEST 000011bb: PUSH1 0x40 000011bd: MLOAD 000011be: DUP1 000011bf: SWAP2 000011c0: SUB 000011c1: SWAP1 000011c2: REVERT 000011c3: JUMPDEST 000011c4: DUP1 000011c5: PUSH1 0x02 000011c7: PUSH0 000011c8: DUP5 000011c9: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000011e6: NOT 000011e7: AND 000011e8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001205: NOT 00001206: AND 00001207: DUP2 00001208: MSTORE 00001209: PUSH1 0x20 0000120b: ADD 0000120c: SWAP1 0000120d: DUP2 0000120e: MSTORE 0000120f: PUSH1 0x20 00001211: ADD 00001212: PUSH0 00001213: KECCAK256 00001214: PUSH0 00001215: PUSH2 0x0100 00001218: EXP 00001219: DUP2 0000121a: SLOAD 0000121b: DUP2 0000121c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001231: MUL 00001232: NOT 00001233: AND 00001234: SWAP1 00001235: DUP4 00001236: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000124b: AND 0000124c: MUL 0000124d: OR 0000124e: SWAP1 0000124f: SSTORE 00001250: POP 00001251: PUSH1 0x01 00001253: DUP1 00001254: PUSH0 00001255: DUP5 00001256: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001273: NOT 00001274: AND 00001275: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001292: NOT 00001293: AND 00001294: DUP2 00001295: MSTORE 00001296: PUSH1 0x20 00001298: ADD 00001299: SWAP1 0000129a: DUP2 0000129b: MSTORE 0000129c: PUSH1 0x20 0000129e: ADD 0000129f: PUSH0 000012a0: KECCAK256 000012a1: PUSH0 000012a2: PUSH2 0x0100 000012a5: EXP 000012a6: DUP2 000012a7: SLOAD 000012a8: DUP2 000012a9: PUSH1 0xff 000012ab: MUL 000012ac: NOT 000012ad: AND 000012ae: SWAP1 000012af: DUP4 000012b0: ISZERO 000012b1: ISZERO 000012b2: MUL 000012b3: OR 000012b4: SWAP1 000012b5: SSTORE 000012b6: POP 000012b7: POP 000012b8: POP 000012b9: JUMP 000012ba: JUMPDEST 000012bb: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 000012d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012e5: AND 000012e6: CALLER 000012e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012fc: AND 000012fd: EQ 000012fe: PUSH2 0x133c 00001301: JUMPI 00001302: PUSH1 0x40 00001304: MLOAD 00001305: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001326: DUP2 00001327: MSTORE 00001328: PUSH1 0x04 0000132a: ADD 0000132b: PUSH2 0x1333 0000132e: SWAP1 0000132f: PUSH2 0x1d15 00001332: JUMP 00001333: JUMPDEST 00001334: PUSH1 0x40 00001336: MLOAD 00001337: DUP1 00001338: SWAP2 00001339: SUB 0000133a: SWAP1 0000133b: REVERT 0000133c: JUMPDEST 0000133d: PUSH20 0x146c6432a5cf6c3126501def6c8cd0c3172497d7 00001352: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001367: AND 00001368: CALLER 00001369: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000137e: AND 0000137f: EQ 00001380: PUSH2 0x13be 00001383: JUMPI 00001384: PUSH1 0x40 00001386: MLOAD 00001387: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000013a8: DUP2 000013a9: MSTORE 000013aa: PUSH1 0x04 000013ac: ADD 000013ad: PUSH2 0x13b5 000013b0: SWAP1 000013b1: PUSH2 0x1d15 000013b4: JUMP 000013b5: JUMPDEST 000013b6: PUSH1 0x40 000013b8: MLOAD 000013b9: DUP1 000013ba: SWAP2 000013bb: SUB 000013bc: SWAP1 000013bd: REVERT 000013be: JUMPDEST 000013bf: CALLER 000013c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013d5: AND 000013d6: PUSH2 0x08fc 000013d9: DUP3 000013da: SWAP1 000013db: DUP2 000013dc: ISZERO 000013dd: MUL 000013de: SWAP1 000013df: PUSH1 0x40 000013e1: MLOAD 000013e2: PUSH0 000013e3: PUSH1 0x40 000013e5: MLOAD 000013e6: DUP1 000013e7: DUP4 000013e8: SUB 000013e9: DUP2 000013ea: DUP6 000013eb: DUP9 000013ec: DUP9 000013ed: CALL 000013ee: SWAP4 000013ef: POP 000013f0: POP 000013f1: POP 000013f2: POP 000013f3: ISZERO 000013f4: DUP1 000013f5: ISZERO 000013f6: PUSH2 0x1401 000013f9: JUMPI 000013fa: RETURNDATASIZE 000013fb: PUSH0 000013fc: DUP1 000013fd: RETURNDATACOPY 000013fe: RETURNDATASIZE 000013ff: PUSH0 00001400: REVERT 00001401: JUMPDEST 00001402: POP 00001403: POP 00001404: JUMP 00001405: JUMPDEST 00001406: PUSH0 00001407: DUP1 00001408: DUP6 00001409: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000141e: AND 0000141f: DUP6 00001420: DUP6 00001421: DUP6 00001422: PUSH1 0x40 00001424: MLOAD 00001425: PUSH2 0x142f 00001428: SWAP3 00001429: SWAP2 0000142a: SWAP1 0000142b: PUSH2 0x1cb3 0000142e: JUMP 0000142f: JUMPDEST 00001430: PUSH0 00001431: PUSH1 0x40 00001433: MLOAD 00001434: DUP1 00001435: DUP4 00001436: SUB 00001437: DUP2 00001438: DUP6 00001439: DUP8 0000143a: GAS 0000143b: CALL 0000143c: SWAP3 0000143d: POP 0000143e: POP 0000143f: POP 00001440: RETURNDATASIZE 00001441: DUP1 00001442: PUSH0 00001443: DUP2 00001444: EQ 00001445: PUSH2 0x1469 00001448: JUMPI 00001449: PUSH1 0x40 0000144b: MLOAD 0000144c: SWAP2 0000144d: POP 0000144e: PUSH1 0x1f 00001450: NOT 00001451: PUSH1 0x3f 00001453: RETURNDATASIZE 00001454: ADD 00001455: AND 00001456: DUP3 00001457: ADD 00001458: PUSH1 0x40 0000145a: MSTORE 0000145b: RETURNDATASIZE 0000145c: DUP3 0000145d: MSTORE 0000145e: RETURNDATASIZE 0000145f: PUSH0 00001460: PUSH1 0x20 00001462: DUP5 00001463: ADD 00001464: RETURNDATACOPY 00001465: PUSH2 0x146e 00001468: JUMP 00001469: JUMPDEST 0000146a: PUSH1 0x60 0000146c: SWAP2 0000146d: POP 0000146e: JUMPDEST 0000146f: POP 00001470: SWAP2 00001471: POP 00001472: SWAP2 00001473: POP 00001474: DUP2 00001475: PUSH2 0x147f 00001478: JUMPI 00001479: DUP1 0000147a: PUSH1 0x20 0000147c: DUP3 0000147d: ADD 0000147e: REVERT 0000147f: JUMPDEST 00001480: POP 00001481: POP 00001482: POP 00001483: POP 00001484: POP 00001485: POP 00001486: JUMP 00001487: JUMPDEST 00001488: PUSH0 00001489: DUP3 0000148a: DUP3 0000148b: PUSH1 0x02 0000148d: SWAP1 0000148e: PUSH1 0x04 00001490: SWAP3 00001491: PUSH2 0x149c 00001494: SWAP4 00001495: SWAP3 00001496: SWAP2 00001497: SWAP1 00001498: PUSH2 0x1edb 0000149b: JUMP 0000149c: JUMPDEST 0000149d: SWAP1 0000149e: PUSH2 0x14a7 000014a1: SWAP2 000014a2: SWAP1 000014a3: PUSH2 0x1f56 000014a6: JUMP 000014a7: JUMPDEST 000014a8: PUSH1 0xf0 000014aa: SHR 000014ab: PUSH2 0xffff 000014ae: AND 000014af: SWAP1 000014b0: POP 000014b1: PUSH0 000014b2: DUP2 000014b3: PUSH1 0x02 000014b5: MUL 000014b6: PUSH1 0x04 000014b8: ADD 000014b9: SWAP1 000014ba: POP 000014bb: PUSH0 000014bc: PUSH1 0x04 000014be: SWAP1 000014bf: POP 000014c0: PUSH0 000014c1: JUMPDEST 000014c2: DUP4 000014c3: DUP2 000014c4: LT 000014c5: ISZERO 000014c6: PUSH2 0x1526 000014c9: JUMPI 000014ca: PUSH0 000014cb: DUP7 000014cc: DUP7 000014cd: DUP5 000014ce: SWAP1 000014cf: PUSH1 0x02 000014d1: DUP7 000014d2: ADD 000014d3: SWAP3 000014d4: PUSH2 0x14df 000014d7: SWAP4 000014d8: SWAP3 000014d9: SWAP2 000014da: SWAP1 000014db: PUSH2 0x1edb 000014de: JUMP 000014df: JUMPDEST 000014e0: SWAP1 000014e1: PUSH2 0x14ea 000014e4: SWAP2 000014e5: SWAP1 000014e6: PUSH2 0x1f56 000014e9: JUMP 000014ea: JUMPDEST 000014eb: PUSH1 0xf0 000014ed: SHR 000014ee: PUSH2 0xffff 000014f1: AND 000014f2: SWAP1 000014f3: POP 000014f4: PUSH1 0x02 000014f6: DUP4 000014f7: ADD 000014f8: SWAP3 000014f9: POP 000014fa: PUSH2 0x1515 000014fd: DUP8 000014fe: DUP8 000014ff: DUP7 00001500: SWAP1 00001501: DUP5 00001502: DUP9 00001503: ADD 00001504: SWAP3 00001505: PUSH2 0x1510 00001508: SWAP4 00001509: SWAP3 0000150a: SWAP2 0000150b: SWAP1 0000150c: PUSH2 0x1edb 0000150f: JUMP 00001510: JUMPDEST 00001511: PUSH2 0x152e 00001514: JUMP 00001515: JUMPDEST 00001516: DUP1 00001517: DUP5 00001518: ADD 00001519: SWAP4 0000151a: POP 0000151b: DUP2 0000151c: PUSH1 0x01 0000151e: ADD 0000151f: SWAP2 00001520: POP 00001521: POP 00001522: PUSH2 0x14c1 00001525: JUMP 00001526: JUMPDEST 00001527: POP 00001528: POP 00001529: POP 0000152a: POP 0000152b: POP 0000152c: POP 0000152d: JUMP 0000152e: JUMPDEST 0000152f: PUSH0 00001530: DUP3 00001531: DUP3 00001532: PUSH0 00001533: SWAP1 00001534: PUSH1 0x01 00001536: SWAP3 00001537: PUSH2 0x1542 0000153a: SWAP4 0000153b: SWAP3 0000153c: SWAP2 0000153d: SWAP1 0000153e: PUSH2 0x1edb 00001541: JUMP 00001542: JUMPDEST 00001543: SWAP1 00001544: PUSH2 0x154d 00001547: SWAP2 00001548: SWAP1 00001549: PUSH2 0x2214 0000154c: JUMP 0000154d: JUMPDEST 0000154e: PUSH1 0xf8 00001550: SHR 00001551: PUSH1 0xff 00001553: AND 00001554: SWAP1 00001555: POP 00001556: PUSH0 00001557: PUSH1 0x01 00001559: DUP1 0000155a: DUP4 0000155b: AND 0000155c: EQ 0000155d: SWAP1 0000155e: POP 0000155f: PUSH0 00001560: PUSH1 0x01 00001562: DUP1 00001563: PUSH1 0x01 00001565: DUP6 00001566: SWAP1 00001567: SHR 00001568: AND 00001569: EQ 0000156a: SWAP1 0000156b: POP 0000156c: PUSH0 0000156d: PUSH1 0x01 0000156f: DUP1 00001570: PUSH1 0x02 00001572: DUP7 00001573: SWAP1 00001574: SHR 00001575: AND 00001576: EQ 00001577: SWAP1 00001578: POP 00001579: PUSH0 0000157a: DUP7 0000157b: DUP7 0000157c: PUSH1 0x01 0000157e: SWAP1 0000157f: PUSH1 0x15 00001581: SWAP3 00001582: PUSH2 0x158d 00001585: SWAP4 00001586: SWAP3 00001587: SWAP2 00001588: SWAP1 00001589: PUSH2 0x1edb 0000158c: JUMP 0000158d: JUMPDEST 0000158e: SWAP1 0000158f: PUSH2 0x1598 00001592: SWAP2 00001593: SWAP1 00001594: PUSH2 0x229d 00001597: JUMP 00001598: JUMPDEST 00001599: PUSH1 0x60 0000159b: SHR 0000159c: SWAP1 0000159d: POP 0000159e: PUSH1 0x01 000015a0: ISZERO 000015a1: ISZERO 000015a2: DUP5 000015a3: ISZERO 000015a4: ISZERO 000015a5: SUB 000015a6: PUSH2 0x162d 000015a9: JUMPI 000015aa: PUSH0 000015ab: PUSH1 0xb0 000015ad: DUP9 000015ae: DUP9 000015af: PUSH1 0x15 000015b1: SWAP1 000015b2: PUSH1 0x1f 000015b4: SWAP3 000015b5: PUSH2 0x15c0 000015b8: SWAP4 000015b9: SWAP3 000015ba: SWAP2 000015bb: SWAP1 000015bc: PUSH2 0x1edb 000015bf: JUMP 000015c0: JUMPDEST 000015c1: SWAP1 000015c2: PUSH2 0x15cb 000015c5: SWAP2 000015c6: SWAP1 000015c7: PUSH2 0x2304 000015ca: JUMP 000015cb: JUMPDEST 000015cc: PUSH0 000015cd: SHR 000015ce: SWAP1 000015cf: SHR 000015d0: SWAP1 000015d1: POP 000015d2: CALLDATASIZE 000015d3: PUSH0 000015d4: DUP10 000015d5: DUP10 000015d6: PUSH1 0x1f 000015d8: SWAP1 000015d9: DUP1 000015da: SWAP3 000015db: PUSH2 0x15e6 000015de: SWAP4 000015df: SWAP3 000015e0: SWAP2 000015e1: SWAP1 000015e2: PUSH2 0x1edb 000015e5: JUMP 000015e6: JUMPDEST 000015e7: SWAP2 000015e8: POP 000015e9: SWAP2 000015ea: POP 000015eb: PUSH0 000015ec: ISZERO 000015ed: ISZERO 000015ee: DUP7 000015ef: ISZERO 000015f0: ISZERO 000015f1: EQ 000015f2: DUP1 000015f3: ISZERO 000015f4: PUSH2 0x1600 000015f7: JUMPI 000015f8: POP 000015f9: PUSH0 000015fa: ISZERO 000015fb: ISZERO 000015fc: DUP6 000015fd: ISZERO 000015fe: ISZERO 000015ff: EQ 00001600: JUMPDEST 00001601: ISZERO 00001602: PUSH2 0x1616 00001605: JUMPI 00001606: PUSH2 0x1611 00001609: DUP5 0000160a: DUP5 0000160b: DUP5 0000160c: DUP5 0000160d: PUSH2 0x1405 00001610: JUMP 00001611: JUMPDEST 00001612: PUSH2 0x1625 00001615: JUMP 00001616: JUMPDEST 00001617: PUSH2 0x1624 0000161a: DUP5 0000161b: DUP5 0000161c: DUP5 0000161d: DUP5 0000161e: DUP10 0000161f: DUP12 00001620: PUSH2 0x168d 00001623: JUMP 00001624: JUMPDEST 00001625: JUMPDEST 00001626: POP 00001627: POP 00001628: POP 00001629: PUSH2 0x1684 0000162c: JUMP 0000162d: JUMPDEST 0000162e: CALLDATASIZE 0000162f: PUSH0 00001630: DUP9 00001631: DUP9 00001632: PUSH1 0x15 00001634: SWAP1 00001635: DUP1 00001636: SWAP3 00001637: PUSH2 0x1642 0000163a: SWAP4 0000163b: SWAP3 0000163c: SWAP2 0000163d: SWAP1 0000163e: PUSH2 0x1edb 00001641: JUMP 00001642: JUMPDEST 00001643: SWAP2 00001644: POP 00001645: SWAP2 00001646: POP 00001647: PUSH0 00001648: ISZERO 00001649: ISZERO 0000164a: DUP6 0000164b: ISZERO 0000164c: ISZERO 0000164d: EQ 0000164e: DUP1 0000164f: ISZERO 00001650: PUSH2 0x165c 00001653: JUMPI 00001654: POP 00001655: PUSH0 00001656: ISZERO 00001657: ISZERO 00001658: DUP5 00001659: ISZERO 0000165a: ISZERO 0000165b: EQ 0000165c: JUMPDEST 0000165d: ISZERO 0000165e: PUSH2 0x1672 00001661: JUMPI 00001662: PUSH2 0x166d 00001665: DUP4 00001666: PUSH0 00001667: DUP5 00001668: DUP5 00001669: PUSH2 0x1405 0000166c: JUMP 0000166d: JUMPDEST 0000166e: PUSH2 0x1681 00001671: JUMP 00001672: JUMPDEST 00001673: PUSH2 0x1680 00001676: DUP4 00001677: PUSH0 00001678: DUP5 00001679: DUP5 0000167a: DUP9 0000167b: DUP11 0000167c: PUSH2 0x168d 0000167f: JUMP 00001680: JUMPDEST 00001681: JUMPDEST 00001682: POP 00001683: POP 00001684: JUMPDEST 00001685: POP 00001686: POP 00001687: POP 00001688: POP 00001689: POP 0000168a: POP 0000168b: POP 0000168c: JUMP 0000168d: JUMPDEST 0000168e: PUSH0 0000168f: ISZERO 00001690: ISZERO 00001691: DUP3 00001692: ISZERO 00001693: ISZERO 00001694: SUB 00001695: PUSH2 0x16aa 00001698: JUMPI 00001699: PUSH2 0x16a5 0000169c: DUP7 0000169d: DUP7 0000169e: DUP7 0000169f: DUP7 000016a0: DUP6 000016a1: PUSH2 0x16bf 000016a4: JUMP 000016a5: JUMPDEST 000016a6: PUSH2 0x16b7 000016a9: JUMP 000016aa: JUMPDEST 000016ab: PUSH2 0x16b6 000016ae: DUP7 000016af: DUP6 000016b0: DUP6 000016b1: DUP5 000016b2: PUSH2 0x16f0 000016b5: JUMP 000016b6: JUMPDEST 000016b7: JUMPDEST 000016b8: POP 000016b9: POP 000016ba: POP 000016bb: POP 000016bc: POP 000016bd: POP 000016be: JUMP 000016bf: JUMPDEST 000016c0: PUSH1 0x01 000016c2: ISZERO 000016c3: ISZERO 000016c4: DUP2 000016c5: ISZERO 000016c6: ISZERO 000016c7: SUB 000016c8: PUSH2 0x16dc 000016cb: JUMPI 000016cc: PUSH2 0x16d7 000016cf: DUP6 000016d0: DUP6 000016d1: DUP6 000016d2: DUP6 000016d3: PUSH2 0x171e 000016d6: JUMP 000016d7: JUMPDEST 000016d8: PUSH2 0x16e9 000016db: JUMP 000016dc: JUMPDEST 000016dd: PUSH2 0x16e8 000016e0: DUP6 000016e1: DUP6 000016e2: DUP6 000016e3: DUP6 000016e4: PUSH2 0x1405 000016e7: JUMP 000016e8: JUMPDEST 000016e9: JUMPDEST 000016ea: POP 000016eb: POP 000016ec: POP 000016ed: POP 000016ee: POP 000016ef: JUMP 000016f0: JUMPDEST 000016f1: PUSH1 0x01 000016f3: ISZERO 000016f4: ISZERO 000016f5: DUP2 000016f6: ISZERO 000016f7: ISZERO 000016f8: SUB 000016f9: PUSH2 0x170c 000016fc: JUMPI 000016fd: PUSH2 0x1707 00001700: DUP5 00001701: DUP5 00001702: DUP5 00001703: PUSH2 0x178e 00001706: JUMP 00001707: JUMPDEST 00001708: PUSH2 0x1718 0000170b: JUMP 0000170c: JUMPDEST 0000170d: PUSH2 0x1717 00001710: DUP5 00001711: DUP5 00001712: DUP5 00001713: PUSH2 0x0414 00001716: JUMP 00001717: JUMPDEST 00001718: JUMPDEST 00001719: POP 0000171a: POP 0000171b: POP 0000171c: POP 0000171d: JUMP 0000171e: JUMPDEST 0000171f: DUP4 00001720: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001735: AND 00001736: DUP4 00001737: DUP4 00001738: DUP4 00001739: PUSH1 0x40 0000173b: MLOAD 0000173c: PUSH2 0x1746 0000173f: SWAP3 00001740: SWAP2 00001741: SWAP1 00001742: PUSH2 0x1cb3 00001745: JUMP 00001746: JUMPDEST 00001747: PUSH0 00001748: PUSH1 0x40 0000174a: MLOAD 0000174b: DUP1 0000174c: DUP4 0000174d: SUB 0000174e: DUP2 0000174f: DUP6 00001750: DUP8 00001751: GAS 00001752: CALL 00001753: SWAP3 00001754: POP 00001755: POP 00001756: POP 00001757: RETURNDATASIZE 00001758: DUP1 00001759: PUSH0 0000175a: DUP2 0000175b: EQ 0000175c: PUSH2 0x1780 0000175f: JUMPI 00001760: PUSH1 0x40 00001762: MLOAD 00001763: SWAP2 00001764: POP 00001765: PUSH1 0x1f 00001767: NOT 00001768: PUSH1 0x3f 0000176a: RETURNDATASIZE 0000176b: ADD 0000176c: AND 0000176d: DUP3 0000176e: ADD 0000176f: PUSH1 0x40 00001771: MSTORE 00001772: RETURNDATASIZE 00001773: DUP3 00001774: MSTORE 00001775: RETURNDATASIZE 00001776: PUSH0 00001777: PUSH1 0x20 00001779: DUP5 0000177a: ADD 0000177b: RETURNDATACOPY 0000177c: PUSH2 0x1785 0000177f: JUMP 00001780: JUMPDEST 00001781: PUSH1 0x60 00001783: SWAP2 00001784: POP 00001785: JUMPDEST 00001786: POP 00001787: POP 00001788: POP 00001789: POP 0000178a: POP 0000178b: POP 0000178c: POP 0000178d: JUMP 0000178e: JUMPDEST 0000178f: DUP3 00001790: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017a5: AND 000017a6: DUP3 000017a7: DUP3 000017a8: PUSH1 0x40 000017aa: MLOAD 000017ab: PUSH2 0x17b5 000017ae: SWAP3 000017af: SWAP2 000017b0: SWAP1 000017b1: PUSH2 0x1cb3 000017b4: JUMP 000017b5: JUMPDEST 000017b6: PUSH0 000017b7: PUSH1 0x40 000017b9: MLOAD 000017ba: DUP1 000017bb: DUP4 000017bc: SUB 000017bd: DUP2 000017be: DUP6 000017bf: GAS 000017c0: DELEGATECALL 000017c1: SWAP2 000017c2: POP 000017c3: POP 000017c4: RETURNDATASIZE 000017c5: DUP1 000017c6: PUSH0 000017c7: DUP2 000017c8: EQ 000017c9: PUSH2 0x17ed 000017cc: JUMPI 000017cd: PUSH1 0x40 000017cf: MLOAD 000017d0: SWAP2 000017d1: POP 000017d2: PUSH1 0x1f 000017d4: NOT 000017d5: PUSH1 0x3f 000017d7: RETURNDATASIZE 000017d8: ADD 000017d9: AND 000017da: DUP3 000017db: ADD 000017dc: PUSH1 0x40 000017de: MSTORE 000017df: RETURNDATASIZE 000017e0: DUP3 000017e1: MSTORE 000017e2: RETURNDATASIZE 000017e3: PUSH0 000017e4: PUSH1 0x20 000017e6: DUP5 000017e7: ADD 000017e8: RETURNDATACOPY 000017e9: PUSH2 0x17f2 000017ec: JUMP 000017ed: JUMPDEST 000017ee: PUSH1 0x60 000017f0: SWAP2 000017f1: POP 000017f2: JUMPDEST 000017f3: POP 000017f4: POP 000017f5: POP 000017f6: POP 000017f7: POP 000017f8: POP 000017f9: JUMP 000017fa: JUMPDEST 000017fb: PUSH0 000017fc: DUP3 000017fd: DUP3 000017fe: MSTORE 000017ff: PUSH1 0x20 00001801: DUP3 00001802: ADD 00001803: SWAP1 00001804: POP 00001805: SWAP3 00001806: SWAP2 00001807: POP 00001808: POP 00001809: JUMP 0000180a: JUMPDEST 0000180b: PUSH32 0x72656e3200000000000000000000000000000000000000000000000000000000 0000182c: PUSH0 0000182d: DUP3 0000182e: ADD 0000182f: MSTORE 00001830: POP 00001831: JUMP 00001832: JUMPDEST 00001833: PUSH0 00001834: PUSH2 0x183e 00001837: PUSH1 0x04 00001839: DUP4 0000183a: PUSH2 0x17fa 0000183d: JUMP 0000183e: JUMPDEST 0000183f: SWAP2 00001840: POP 00001841: PUSH2 0x1849 00001844: DUP3 00001845: PUSH2 0x180a 00001848: JUMP 00001849: JUMPDEST 0000184a: PUSH1 0x20 0000184c: DUP3 0000184d: ADD 0000184e: SWAP1 0000184f: POP 00001850: SWAP2 00001851: SWAP1 00001852: POP 00001853: JUMP 00001854: JUMPDEST 00001855: PUSH0 00001856: PUSH1 0x20 00001858: DUP3 00001859: ADD 0000185a: SWAP1 0000185b: POP 0000185c: DUP2 0000185d: DUP2 0000185e: SUB 0000185f: PUSH0 00001860: DUP4 00001861: ADD 00001862: MSTORE 00001863: PUSH2 0x186b 00001866: DUP2 00001867: PUSH2 0x1832 0000186a: JUMP 0000186b: JUMPDEST 0000186c: SWAP1 0000186d: POP 0000186e: SWAP2 0000186f: SWAP1 00001870: POP 00001871: JUMP 00001872: JUMPDEST 00001873: PUSH32 0x74786e6f726967696e64696166616c6c00000000000000000000000000000000 00001894: PUSH0 00001895: DUP3 00001896: ADD 00001897: MSTORE 00001898: POP 00001899: JUMP 0000189a: JUMPDEST 0000189b: PUSH0 0000189c: PUSH2 0x18a6 0000189f: PUSH1 0x10 000018a1: DUP4 000018a2: PUSH2 0x17fa 000018a5: JUMP 000018a6: JUMPDEST 000018a7: SWAP2 000018a8: POP 000018a9: PUSH2 0x18b1 000018ac: DUP3 000018ad: PUSH2 0x1872 000018b0: JUMP 000018b1: JUMPDEST 000018b2: PUSH1 0x20 000018b4: DUP3 000018b5: ADD 000018b6: SWAP1 000018b7: POP 000018b8: SWAP2 000018b9: SWAP1 000018ba: POP 000018bb: JUMP 000018bc: JUMPDEST 000018bd: PUSH0 000018be: PUSH1 0x20 000018c0: DUP3 000018c1: ADD 000018c2: SWAP1 000018c3: POP 000018c4: DUP2 000018c5: DUP2 000018c6: SUB 000018c7: PUSH0 000018c8: DUP4 000018c9: ADD 000018ca: MSTORE 000018cb: PUSH2 0x18d3 000018ce: DUP2 000018cf: PUSH2 0x189a 000018d2: JUMP 000018d3: JUMPDEST 000018d4: SWAP1 000018d5: POP 000018d6: SWAP2 000018d7: SWAP1 000018d8: POP 000018d9: JUMP 000018da: JUMPDEST 000018db: PUSH0 000018dc: DUP1 000018dd: REVERT 000018de: JUMPDEST 000018df: PUSH0 000018e0: DUP1 000018e1: REVERT 000018e2: JUMPDEST 000018e3: PUSH0 000018e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018f9: DUP3 000018fa: AND 000018fb: SWAP1 000018fc: POP 000018fd: SWAP2 000018fe: SWAP1 000018ff: POP 00001900: JUMP 00001901: JUMPDEST 00001902: PUSH0 00001903: PUSH2 0x190b 00001906: DUP3 00001907: PUSH2 0x18e2 0000190a: JUMP 0000190b: JUMPDEST 0000190c: SWAP1 0000190d: POP 0000190e: SWAP2 0000190f: SWAP1 00001910: POP 00001911: JUMP 00001912: JUMPDEST 00001913: PUSH2 0x191b 00001916: DUP2 00001917: PUSH2 0x1901 0000191a: JUMP 0000191b: JUMPDEST 0000191c: DUP2 0000191d: EQ 0000191e: PUSH2 0x1925 00001921: JUMPI 00001922: PUSH0 00001923: DUP1 00001924: REVERT 00001925: JUMPDEST 00001926: POP 00001927: JUMP 00001928: JUMPDEST 00001929: PUSH0 0000192a: DUP2 0000192b: CALLDATALOAD 0000192c: SWAP1 0000192d: POP 0000192e: PUSH2 0x1936 00001931: DUP2 00001932: PUSH2 0x1912 00001935: JUMP 00001936: JUMPDEST 00001937: SWAP3 00001938: SWAP2 00001939: POP 0000193a: POP 0000193b: JUMP 0000193c: JUMPDEST 0000193d: PUSH0 0000193e: DUP1 0000193f: REVERT 00001940: JUMPDEST 00001941: PUSH0 00001942: DUP1 00001943: REVERT 00001944: JUMPDEST 00001945: PUSH0 00001946: DUP1 00001947: REVERT 00001948: JUMPDEST 00001949: PUSH0 0000194a: DUP1 0000194b: DUP4 0000194c: PUSH1 0x1f 0000194e: DUP5 0000194f: ADD 00001950: SLT 00001951: PUSH2 0x195d 00001954: JUMPI 00001955: PUSH2 0x195c 00001958: PUSH2 0x193c 0000195b: JUMP 0000195c: JUMPDEST 0000195d: JUMPDEST 0000195e: DUP3 0000195f: CALLDATALOAD 00001960: SWAP1 00001961: POP 00001962: PUSH8 0xffffffffffffffff 0000196b: DUP2 0000196c: GT 0000196d: ISZERO 0000196e: PUSH2 0x197a 00001971: JUMPI 00001972: PUSH2 0x1979 00001975: PUSH2 0x1940 00001978: JUMP 00001979: JUMPDEST 0000197a: JUMPDEST 0000197b: PUSH1 0x20 0000197d: DUP4 0000197e: ADD 0000197f: SWAP2 00001980: POP 00001981: DUP4 00001982: PUSH1 0x01 00001984: DUP3 00001985: MUL 00001986: DUP4 00001987: ADD 00001988: GT 00001989: ISZERO 0000198a: PUSH2 0x1996 0000198d: JUMPI 0000198e: PUSH2 0x1995 00001991: PUSH2 0x1944 00001994: JUMP 00001995: JUMPDEST 00001996: JUMPDEST 00001997: SWAP3 00001998: POP 00001999: SWAP3 0000199a: SWAP1 0000199b: POP 0000199c: JUMP 0000199d: JUMPDEST 0000199e: PUSH0 0000199f: DUP1 000019a0: PUSH0 000019a1: PUSH1 0x40 000019a3: DUP5 000019a4: DUP7 000019a5: SUB 000019a6: SLT 000019a7: ISZERO 000019a8: PUSH2 0x19b4 000019ab: JUMPI 000019ac: PUSH2 0x19b3 000019af: PUSH2 0x18da 000019b2: JUMP 000019b3: JUMPDEST 000019b4: JUMPDEST 000019b5: PUSH0 000019b6: PUSH2 0x19c1 000019b9: DUP7 000019ba: DUP3 000019bb: DUP8 000019bc: ADD 000019bd: PUSH2 0x1928 000019c0: JUMP 000019c1: JUMPDEST 000019c2: SWAP4 000019c3: POP 000019c4: POP 000019c5: PUSH1 0x20 000019c7: DUP5 000019c8: ADD 000019c9: CALLDATALOAD 000019ca: PUSH8 0xffffffffffffffff 000019d3: DUP2 000019d4: GT 000019d5: ISZERO 000019d6: PUSH2 0x19e2 000019d9: JUMPI 000019da: PUSH2 0x19e1 000019dd: PUSH2 0x18de 000019e0: JUMP 000019e1: JUMPDEST 000019e2: JUMPDEST 000019e3: PUSH2 0x19ee 000019e6: DUP7 000019e7: DUP3 000019e8: DUP8 000019e9: ADD 000019ea: PUSH2 0x1948 000019ed: JUMP 000019ee: JUMPDEST 000019ef: SWAP3 000019f0: POP 000019f1: SWAP3 000019f2: POP 000019f3: POP 000019f4: SWAP3 000019f5: POP 000019f6: SWAP3 000019f7: POP 000019f8: SWAP3 000019f9: JUMP 000019fa: JUMPDEST 000019fb: PUSH0 000019fc: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00001a1d: DUP3 00001a1e: AND 00001a1f: SWAP1 00001a20: POP 00001a21: SWAP2 00001a22: SWAP1 00001a23: POP 00001a24: JUMP 00001a25: JUMPDEST 00001a26: PUSH2 0x1a2e 00001a29: DUP2 00001a2a: PUSH2 0x19fa 00001a2d: JUMP 00001a2e: JUMPDEST 00001a2f: DUP2 00001a30: EQ 00001a31: PUSH2 0x1a38 00001a34: JUMPI 00001a35: PUSH0 00001a36: DUP1 00001a37: REVERT 00001a38: JUMPDEST 00001a39: POP 00001a3a: JUMP 00001a3b: JUMPDEST 00001a3c: PUSH0 00001a3d: DUP2 00001a3e: CALLDATALOAD 00001a3f: SWAP1 00001a40: POP 00001a41: PUSH2 0x1a49 00001a44: DUP2 00001a45: PUSH2 0x1a25 00001a48: JUMP 00001a49: JUMPDEST 00001a4a: SWAP3 00001a4b: SWAP2 00001a4c: POP 00001a4d: POP 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: PUSH0 00001a51: PUSH1 0x20 00001a53: DUP3 00001a54: DUP5 00001a55: SUB 00001a56: SLT 00001a57: ISZERO 00001a58: PUSH2 0x1a64 00001a5b: JUMPI 00001a5c: PUSH2 0x1a63 00001a5f: PUSH2 0x18da 00001a62: JUMP 00001a63: JUMPDEST 00001a64: JUMPDEST 00001a65: PUSH0 00001a66: PUSH2 0x1a71 00001a69: DUP5 00001a6a: DUP3 00001a6b: DUP6 00001a6c: ADD 00001a6d: PUSH2 0x1a3b 00001a70: JUMP 00001a71: JUMPDEST 00001a72: SWAP2 00001a73: POP 00001a74: POP 00001a75: SWAP3 00001a76: SWAP2 00001a77: POP 00001a78: POP 00001a79: JUMP 00001a7a: JUMPDEST 00001a7b: PUSH0 00001a7c: DUP2 00001a7d: ISZERO 00001a7e: ISZERO 00001a7f: SWAP1 00001a80: POP 00001a81: SWAP2 00001a82: SWAP1 00001a83: POP 00001a84: JUMP 00001a85: JUMPDEST 00001a86: PUSH2 0x1a8e 00001a89: DUP2 00001a8a: PUSH2 0x1a7a 00001a8d: JUMP 00001a8e: JUMPDEST 00001a8f: DUP3 00001a90: MSTORE 00001a91: POP 00001a92: POP 00001a93: JUMP 00001a94: JUMPDEST 00001a95: PUSH0 00001a96: PUSH1 0x20 00001a98: DUP3 00001a99: ADD 00001a9a: SWAP1 00001a9b: POP 00001a9c: PUSH2 0x1aa7 00001a9f: PUSH0 00001aa0: DUP4 00001aa1: ADD 00001aa2: DUP5 00001aa3: PUSH2 0x1a85 00001aa6: JUMP 00001aa7: JUMPDEST 00001aa8: SWAP3 00001aa9: SWAP2 00001aaa: POP 00001aab: POP 00001aac: JUMP 00001aad: JUMPDEST 00001aae: PUSH2 0x1ab6 00001ab1: DUP2 00001ab2: PUSH2 0x1901 00001ab5: JUMP 00001ab6: JUMPDEST 00001ab7: DUP3 00001ab8: MSTORE 00001ab9: POP 00001aba: POP 00001abb: JUMP 00001abc: JUMPDEST 00001abd: PUSH0 00001abe: PUSH1 0x20 00001ac0: DUP3 00001ac1: ADD 00001ac2: SWAP1 00001ac3: POP 00001ac4: PUSH2 0x1acf 00001ac7: PUSH0 00001ac8: DUP4 00001ac9: ADD 00001aca: DUP5 00001acb: PUSH2 0x1aad 00001ace: JUMP 00001acf: JUMPDEST 00001ad0: SWAP3 00001ad1: SWAP2 00001ad2: POP 00001ad3: POP 00001ad4: JUMP 00001ad5: JUMPDEST 00001ad6: PUSH0 00001ad7: DUP1 00001ad8: PUSH1 0x20 00001ada: DUP4 00001adb: DUP6 00001adc: SUB 00001add: SLT 00001ade: ISZERO 00001adf: PUSH2 0x1aeb 00001ae2: JUMPI 00001ae3: PUSH2 0x1aea 00001ae6: PUSH2 0x18da 00001ae9: JUMP 00001aea: JUMPDEST 00001aeb: JUMPDEST 00001aec: PUSH0 00001aed: DUP4 00001aee: ADD 00001aef: CALLDATALOAD 00001af0: PUSH8 0xffffffffffffffff 00001af9: DUP2 00001afa: GT 00001afb: ISZERO 00001afc: PUSH2 0x1b08 00001aff: JUMPI 00001b00: PUSH2 0x1b07 00001b03: PUSH2 0x18de 00001b06: JUMP 00001b07: JUMPDEST 00001b08: JUMPDEST 00001b09: PUSH2 0x1b14 00001b0c: DUP6 00001b0d: DUP3 00001b0e: DUP7 00001b0f: ADD 00001b10: PUSH2 0x1948 00001b13: JUMP 00001b14: JUMPDEST 00001b15: SWAP3 00001b16: POP 00001b17: SWAP3 00001b18: POP 00001b19: POP 00001b1a: SWAP3 00001b1b: POP 00001b1c: SWAP3 00001b1d: SWAP1 00001b1e: POP 00001b1f: JUMP 00001b20: JUMPDEST 00001b21: PUSH0 00001b22: DUP2 00001b23: SWAP1 00001b24: POP 00001b25: SWAP2 00001b26: SWAP1 00001b27: POP 00001b28: JUMP 00001b29: JUMPDEST 00001b2a: PUSH2 0x1b32 00001b2d: DUP2 00001b2e: PUSH2 0x1b20 00001b31: JUMP 00001b32: JUMPDEST 00001b33: DUP3 00001b34: MSTORE 00001b35: POP 00001b36: POP 00001b37: JUMP 00001b38: JUMPDEST 00001b39: PUSH0 00001b3a: PUSH1 0x20 00001b3c: DUP3 00001b3d: ADD 00001b3e: SWAP1 00001b3f: POP 00001b40: PUSH2 0x1b4b 00001b43: PUSH0 00001b44: DUP4 00001b45: ADD 00001b46: DUP5 00001b47: PUSH2 0x1b29 00001b4a: JUMP 00001b4b: JUMPDEST 00001b4c: SWAP3 00001b4d: SWAP2 00001b4e: POP 00001b4f: POP 00001b50: JUMP 00001b51: JUMPDEST 00001b52: PUSH2 0x1b5a 00001b55: DUP2 00001b56: PUSH2 0x1a7a 00001b59: JUMP 00001b5a: JUMPDEST 00001b5b: DUP2 00001b5c: EQ 00001b5d: PUSH2 0x1b64 00001b60: JUMPI 00001b61: PUSH0 00001b62: DUP1 00001b63: REVERT 00001b64: JUMPDEST 00001b65: POP 00001b66: JUMP 00001b67: JUMPDEST 00001b68: PUSH0 00001b69: DUP2 00001b6a: CALLDATALOAD 00001b6b: SWAP1 00001b6c: POP 00001b6d: PUSH2 0x1b75 00001b70: DUP2 00001b71: PUSH2 0x1b51 00001b74: JUMP 00001b75: JUMPDEST 00001b76: SWAP3 00001b77: SWAP2 00001b78: POP 00001b79: POP 00001b7a: JUMP 00001b7b: JUMPDEST 00001b7c: PUSH0 00001b7d: DUP1 00001b7e: PUSH1 0x40 00001b80: DUP4 00001b81: DUP6 00001b82: SUB 00001b83: SLT 00001b84: ISZERO 00001b85: PUSH2 0x1b91 00001b88: JUMPI 00001b89: PUSH2 0x1b90 00001b8c: PUSH2 0x18da 00001b8f: JUMP 00001b90: JUMPDEST 00001b91: JUMPDEST 00001b92: PUSH0 00001b93: PUSH2 0x1b9e 00001b96: DUP6 00001b97: DUP3 00001b98: DUP7 00001b99: ADD 00001b9a: PUSH2 0x1a3b 00001b9d: JUMP 00001b9e: JUMPDEST 00001b9f: SWAP3 00001ba0: POP 00001ba1: POP 00001ba2: PUSH1 0x20 00001ba4: PUSH2 0x1baf 00001ba7: DUP6 00001ba8: DUP3 00001ba9: DUP7 00001baa: ADD 00001bab: PUSH2 0x1b67 00001bae: JUMP 00001baf: JUMPDEST 00001bb0: SWAP2 00001bb1: POP 00001bb2: POP 00001bb3: SWAP3 00001bb4: POP 00001bb5: SWAP3 00001bb6: SWAP1 00001bb7: POP 00001bb8: JUMP 00001bb9: JUMPDEST 00001bba: PUSH0 00001bbb: PUSH1 0x20 00001bbd: DUP3 00001bbe: DUP5 00001bbf: SUB 00001bc0: SLT 00001bc1: ISZERO 00001bc2: PUSH2 0x1bce 00001bc5: JUMPI 00001bc6: PUSH2 0x1bcd 00001bc9: PUSH2 0x18da 00001bcc: JUMP 00001bcd: JUMPDEST 00001bce: JUMPDEST 00001bcf: PUSH0 00001bd0: PUSH2 0x1bdb 00001bd3: DUP5 00001bd4: DUP3 00001bd5: DUP6 00001bd6: ADD 00001bd7: PUSH2 0x1928 00001bda: JUMP 00001bdb: JUMPDEST 00001bdc: SWAP2 00001bdd: POP 00001bde: POP 00001bdf: SWAP3 00001be0: SWAP2 00001be1: POP 00001be2: POP 00001be3: JUMP 00001be4: JUMPDEST 00001be5: PUSH0 00001be6: DUP1 00001be7: PUSH1 0x40 00001be9: DUP4 00001bea: DUP6 00001beb: SUB 00001bec: SLT 00001bed: ISZERO 00001bee: PUSH2 0x1bfa 00001bf1: JUMPI 00001bf2: PUSH2 0x1bf9 00001bf5: PUSH2 0x18da 00001bf8: JUMP 00001bf9: JUMPDEST 00001bfa: JUMPDEST 00001bfb: PUSH0 00001bfc: PUSH2 0x1c07 00001bff: DUP6 00001c00: DUP3 00001c01: DUP7 00001c02: ADD 00001c03: PUSH2 0x1a3b 00001c06: JUMP 00001c07: JUMPDEST 00001c08: SWAP3 00001c09: POP 00001c0a: POP 00001c0b: PUSH1 0x20 00001c0d: PUSH2 0x1c18 00001c10: DUP6 00001c11: DUP3 00001c12: DUP7 00001c13: ADD 00001c14: PUSH2 0x1928 00001c17: JUMP 00001c18: JUMPDEST 00001c19: SWAP2 00001c1a: POP 00001c1b: POP 00001c1c: SWAP3 00001c1d: POP 00001c1e: SWAP3 00001c1f: SWAP1 00001c20: POP 00001c21: JUMP 00001c22: JUMPDEST 00001c23: PUSH2 0x1c2b 00001c26: DUP2 00001c27: PUSH2 0x1b20 00001c2a: JUMP 00001c2b: JUMPDEST 00001c2c: DUP2 00001c2d: EQ 00001c2e: PUSH2 0x1c35 00001c31: JUMPI 00001c32: PUSH0 00001c33: DUP1 00001c34: REVERT 00001c35: JUMPDEST 00001c36: POP 00001c37: JUMP 00001c38: JUMPDEST 00001c39: PUSH0 00001c3a: DUP2 00001c3b: CALLDATALOAD 00001c3c: SWAP1 00001c3d: POP 00001c3e: PUSH2 0x1c46 00001c41: DUP2 00001c42: PUSH2 0x1c22 00001c45: JUMP 00001c46: JUMPDEST 00001c47: SWAP3 00001c48: SWAP2 00001c49: POP 00001c4a: POP 00001c4b: JUMP 00001c4c: JUMPDEST 00001c4d: PUSH0 00001c4e: PUSH1 0x20 00001c50: DUP3 00001c51: DUP5 00001c52: SUB 00001c53: SLT 00001c54: ISZERO 00001c55: PUSH2 0x1c61 00001c58: JUMPI 00001c59: PUSH2 0x1c60 00001c5c: PUSH2 0x18da 00001c5f: JUMP 00001c60: JUMPDEST 00001c61: JUMPDEST 00001c62: PUSH0 00001c63: PUSH2 0x1c6e 00001c66: DUP5 00001c67: DUP3 00001c68: DUP6 00001c69: ADD 00001c6a: PUSH2 0x1c38 00001c6d: JUMP 00001c6e: JUMPDEST 00001c6f: SWAP2 00001c70: POP 00001c71: POP 00001c72: SWAP3 00001c73: SWAP2 00001c74: POP 00001c75: POP 00001c76: JUMP 00001c77: JUMPDEST 00001c78: PUSH0 00001c79: DUP2 00001c7a: SWAP1 00001c7b: POP 00001c7c: SWAP3 00001c7d: SWAP2 00001c7e: POP 00001c7f: POP 00001c80: JUMP 00001c81: JUMPDEST 00001c82: DUP3 00001c83: DUP2 00001c84: DUP4 00001c85: CALLDATACOPY 00001c86: PUSH0 00001c87: DUP4 00001c88: DUP4 00001c89: ADD 00001c8a: MSTORE 00001c8b: POP 00001c8c: POP 00001c8d: POP 00001c8e: JUMP 00001c8f: JUMPDEST 00001c90: PUSH0 00001c91: PUSH2 0x1c9a 00001c94: DUP4 00001c95: DUP6 00001c96: PUSH2 0x1c77 00001c99: JUMP 00001c9a: JUMPDEST 00001c9b: SWAP4 00001c9c: POP 00001c9d: PUSH2 0x1ca7 00001ca0: DUP4 00001ca1: DUP6 00001ca2: DUP5 00001ca3: PUSH2 0x1c81 00001ca6: JUMP 00001ca7: JUMPDEST 00001ca8: DUP3 00001ca9: DUP5 00001caa: ADD 00001cab: SWAP1 00001cac: POP 00001cad: SWAP4 00001cae: SWAP3 00001caf: POP 00001cb0: POP 00001cb1: POP 00001cb2: JUMP 00001cb3: JUMPDEST 00001cb4: PUSH0 00001cb5: PUSH2 0x1cbf 00001cb8: DUP3 00001cb9: DUP5 00001cba: DUP7 00001cbb: PUSH2 0x1c8f 00001cbe: JUMP 00001cbf: JUMPDEST 00001cc0: SWAP2 00001cc1: POP 00001cc2: DUP2 00001cc3: SWAP1 00001cc4: POP 00001cc5: SWAP4 00001cc6: SWAP3 00001cc7: POP 00001cc8: POP 00001cc9: POP 00001cca: JUMP 00001ccb: JUMPDEST 00001ccc: PUSH32 0x6e6f776e00000000000000000000000000000000000000000000000000000000 00001ced: PUSH0 00001cee: DUP3 00001cef: ADD 00001cf0: MSTORE 00001cf1: POP 00001cf2: JUMP 00001cf3: JUMPDEST 00001cf4: PUSH0 00001cf5: PUSH2 0x1cff 00001cf8: PUSH1 0x04 00001cfa: DUP4 00001cfb: PUSH2 0x17fa 00001cfe: JUMP 00001cff: JUMPDEST 00001d00: SWAP2 00001d01: POP 00001d02: PUSH2 0x1d0a 00001d05: DUP3 00001d06: PUSH2 0x1ccb 00001d09: JUMP 00001d0a: JUMPDEST 00001d0b: PUSH1 0x20 00001d0d: DUP3 00001d0e: ADD 00001d0f: SWAP1 00001d10: POP 00001d11: SWAP2 00001d12: SWAP1 00001d13: POP 00001d14: JUMP 00001d15: JUMPDEST 00001d16: PUSH0 00001d17: PUSH1 0x20 00001d19: DUP3 00001d1a: ADD 00001d1b: SWAP1 00001d1c: POP 00001d1d: DUP2 00001d1e: DUP2 00001d1f: SUB 00001d20: PUSH0 00001d21: DUP4 00001d22: ADD 00001d23: MSTORE 00001d24: PUSH2 0x1d2c 00001d27: DUP2 00001d28: PUSH2 0x1cf3 00001d2b: JUMP 00001d2c: JUMPDEST 00001d2d: SWAP1 00001d2e: POP 00001d2f: SWAP2 00001d30: SWAP1 00001d31: POP 00001d32: JUMP 00001d33: JUMPDEST 00001d34: PUSH32 0x72656e3000000000000000000000000000000000000000000000000000000000 00001d55: PUSH0 00001d56: DUP3 00001d57: ADD 00001d58: MSTORE 00001d59: POP 00001d5a: JUMP 00001d5b: JUMPDEST 00001d5c: PUSH0 00001d5d: PUSH2 0x1d67 00001d60: PUSH1 0x04 00001d62: DUP4 00001d63: PUSH2 0x17fa 00001d66: JUMP 00001d67: JUMPDEST 00001d68: SWAP2 00001d69: POP 00001d6a: PUSH2 0x1d72 00001d6d: DUP3 00001d6e: PUSH2 0x1d33 00001d71: JUMP 00001d72: JUMPDEST 00001d73: PUSH1 0x20 00001d75: DUP3 00001d76: ADD 00001d77: SWAP1 00001d78: POP 00001d79: SWAP2 00001d7a: SWAP1 00001d7b: POP 00001d7c: JUMP 00001d7d: JUMPDEST 00001d7e: PUSH0 00001d7f: PUSH1 0x20 00001d81: DUP3 00001d82: ADD 00001d83: SWAP1 00001d84: POP 00001d85: DUP2 00001d86: DUP2 00001d87: SUB 00001d88: PUSH0 00001d89: DUP4 00001d8a: ADD 00001d8b: MSTORE 00001d8c: PUSH2 0x1d94 00001d8f: DUP2 00001d90: PUSH2 0x1d5b 00001d93: JUMP 00001d94: JUMPDEST 00001d95: SWAP1 00001d96: POP 00001d97: SWAP2 00001d98: SWAP1 00001d99: POP 00001d9a: JUMP 00001d9b: JUMPDEST 00001d9c: PUSH32 0x6276653700000000000000000000000000000000000000000000000000000000 00001dbd: PUSH0 00001dbe: DUP3 00001dbf: ADD 00001dc0: MSTORE 00001dc1: POP 00001dc2: JUMP 00001dc3: JUMPDEST 00001dc4: PUSH0 00001dc5: PUSH2 0x1dcf 00001dc8: PUSH1 0x04 00001dca: DUP4 00001dcb: PUSH2 0x17fa 00001dce: JUMP 00001dcf: JUMPDEST 00001dd0: SWAP2 00001dd1: POP 00001dd2: PUSH2 0x1dda 00001dd5: DUP3 00001dd6: PUSH2 0x1d9b 00001dd9: JUMP 00001dda: JUMPDEST 00001ddb: PUSH1 0x20 00001ddd: DUP3 00001dde: ADD 00001ddf: SWAP1 00001de0: POP 00001de1: SWAP2 00001de2: SWAP1 00001de3: POP 00001de4: JUMP 00001de5: JUMPDEST 00001de6: PUSH0 00001de7: PUSH1 0x20 00001de9: DUP3 00001dea: ADD 00001deb: SWAP1 00001dec: POP 00001ded: DUP2 00001dee: DUP2 00001def: SUB 00001df0: PUSH0 00001df1: DUP4 00001df2: ADD 00001df3: MSTORE 00001df4: PUSH2 0x1dfc 00001df7: DUP2 00001df8: PUSH2 0x1dc3 00001dfb: JUMP 00001dfc: JUMPDEST 00001dfd: SWAP1 00001dfe: POP 00001dff: SWAP2 00001e00: SWAP1 00001e01: POP 00001e02: JUMP 00001e03: JUMPDEST 00001e04: PUSH32 0x6e77686c00000000000000000000000000000000000000000000000000000000 00001e25: PUSH0 00001e26: DUP3 00001e27: ADD 00001e28: MSTORE 00001e29: POP 00001e2a: JUMP 00001e2b: JUMPDEST 00001e2c: PUSH0 00001e2d: PUSH2 0x1e37 00001e30: PUSH1 0x04 00001e32: DUP4 00001e33: PUSH2 0x17fa 00001e36: JUMP 00001e37: JUMPDEST 00001e38: SWAP2 00001e39: POP 00001e3a: PUSH2 0x1e42 00001e3d: DUP3 00001e3e: PUSH2 0x1e03 00001e41: JUMP 00001e42: JUMPDEST 00001e43: PUSH1 0x20 00001e45: DUP3 00001e46: ADD 00001e47: SWAP1 00001e48: POP 00001e49: SWAP2 00001e4a: SWAP1 00001e4b: POP 00001e4c: JUMP 00001e4d: JUMPDEST 00001e4e: PUSH0 00001e4f: PUSH1 0x20 00001e51: DUP3 00001e52: ADD 00001e53: SWAP1 00001e54: POP 00001e55: DUP2 00001e56: DUP2 00001e57: SUB 00001e58: PUSH0 00001e59: DUP4 00001e5a: ADD 00001e5b: MSTORE 00001e5c: PUSH2 0x1e64 00001e5f: DUP2 00001e60: PUSH2 0x1e2b 00001e63: JUMP 00001e64: JUMPDEST 00001e65: SWAP1 00001e66: POP 00001e67: SWAP2 00001e68: SWAP1 00001e69: POP 00001e6a: JUMP 00001e6b: JUMPDEST 00001e6c: PUSH32 0x6276653100000000000000000000000000000000000000000000000000000000 00001e8d: PUSH0 00001e8e: DUP3 00001e8f: ADD 00001e90: MSTORE 00001e91: POP 00001e92: JUMP 00001e93: JUMPDEST 00001e94: PUSH0 00001e95: PUSH2 0x1e9f 00001e98: PUSH1 0x04 00001e9a: DUP4 00001e9b: PUSH2 0x17fa 00001e9e: JUMP 00001e9f: JUMPDEST 00001ea0: SWAP2 00001ea1: POP 00001ea2: PUSH2 0x1eaa 00001ea5: DUP3 00001ea6: PUSH2 0x1e6b 00001ea9: JUMP 00001eaa: JUMPDEST 00001eab: PUSH1 0x20 00001ead: DUP3 00001eae: ADD 00001eaf: SWAP1 00001eb0: POP 00001eb1: SWAP2 00001eb2: SWAP1 00001eb3: POP 00001eb4: JUMP 00001eb5: JUMPDEST 00001eb6: PUSH0 00001eb7: PUSH1 0x20 00001eb9: DUP3 00001eba: ADD 00001ebb: SWAP1 00001ebc: POP 00001ebd: DUP2 00001ebe: DUP2 00001ebf: SUB 00001ec0: PUSH0 00001ec1: DUP4 00001ec2: ADD 00001ec3: MSTORE 00001ec4: PUSH2 0x1ecc 00001ec7: DUP2 00001ec8: PUSH2 0x1e93 00001ecb: JUMP 00001ecc: JUMPDEST 00001ecd: SWAP1 00001ece: POP 00001ecf: SWAP2 00001ed0: SWAP1 00001ed1: POP 00001ed2: JUMP 00001ed3: JUMPDEST 00001ed4: PUSH0 00001ed5: DUP1 00001ed6: REVERT 00001ed7: JUMPDEST 00001ed8: PUSH0 00001ed9: DUP1 00001eda: REVERT 00001edb: JUMPDEST 00001edc: PUSH0 00001edd: DUP1 00001ede: DUP6 00001edf: DUP6 00001ee0: GT 00001ee1: ISZERO 00001ee2: PUSH2 0x1eee 00001ee5: JUMPI 00001ee6: PUSH2 0x1eed 00001ee9: PUSH2 0x1ed3 00001eec: JUMP 00001eed: JUMPDEST 00001eee: JUMPDEST 00001eef: DUP4 00001ef0: DUP7 00001ef1: GT 00001ef2: ISZERO 00001ef3: PUSH2 0x1eff 00001ef6: JUMPI 00001ef7: PUSH2 0x1efe 00001efa: PUSH2 0x1ed7 00001efd: JUMP 00001efe: JUMPDEST 00001eff: JUMPDEST 00001f00: PUSH1 0x01 00001f02: DUP6 00001f03: MUL 00001f04: DUP4 00001f05: ADD 00001f06: SWAP2 00001f07: POP 00001f08: DUP5 00001f09: DUP7 00001f0a: SUB 00001f0b: SWAP1 00001f0c: POP 00001f0d: SWAP5 00001f0e: POP 00001f0f: SWAP5 00001f10: SWAP3 00001f11: POP 00001f12: POP 00001f13: POP 00001f14: JUMP 00001f15: JUMPDEST 00001f16: PUSH0 00001f17: DUP3 00001f18: SWAP1 00001f19: POP 00001f1a: SWAP3 00001f1b: SWAP2 00001f1c: POP 00001f1d: POP 00001f1e: JUMP 00001f1f: JUMPDEST 00001f20: PUSH0 00001f21: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000 00001f42: DUP3 00001f43: AND 00001f44: SWAP1 00001f45: POP 00001f46: SWAP2 00001f47: SWAP1 00001f48: POP 00001f49: JUMP 00001f4a: JUMPDEST 00001f4b: PUSH0 00001f4c: DUP3 00001f4d: DUP3 00001f4e: SHL 00001f4f: SWAP1 00001f50: POP 00001f51: SWAP3 00001f52: SWAP2 00001f53: POP 00001f54: POP 00001f55: JUMP 00001f56: JUMPDEST 00001f57: PUSH0 00001f58: PUSH2 0x1f61 00001f5b: DUP4 00001f5c: DUP4 00001f5d: PUSH2 0x1f15 00001f60: JUMP 00001f61: JUMPDEST 00001f62: DUP3 00001f63: PUSH2 0x1f6c 00001f66: DUP2 00001f67: CALLDATALOAD 00001f68: PUSH2 0x1f1f 00001f6b: JUMP 00001f6c: JUMPDEST 00001f6d: SWAP3 00001f6e: POP 00001f6f: PUSH1 0x02 00001f71: DUP3 00001f72: LT 00001f73: ISZERO 00001f74: PUSH2 0x1fac 00001f77: JUMPI 00001f78: PUSH2 0x1fa7 00001f7b: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000 00001f9c: DUP4 00001f9d: PUSH1 0x02 00001f9f: SUB 00001fa0: PUSH1 0x08 00001fa2: MUL 00001fa3: PUSH2 0x1f4a 00001fa6: JUMP 00001fa7: JUMPDEST 00001fa8: DUP4 00001fa9: AND 00001faa: SWAP3 00001fab: POP 00001fac: JUMPDEST 00001fad: POP 00001fae: POP 00001faf: SWAP3 00001fb0: SWAP2 00001fb1: POP 00001fb2: POP 00001fb3: JUMP 00001fb4: JUMPDEST 00001fb5: PUSH32 0x6773310000000000000000000000000000000000000000000000000000000000 00001fd6: PUSH0 00001fd7: DUP3 00001fd8: ADD 00001fd9: MSTORE 00001fda: POP 00001fdb: JUMP 00001fdc: JUMPDEST 00001fdd: PUSH0 00001fde: PUSH2 0x1fe8 00001fe1: PUSH1 0x03 00001fe3: DUP4 00001fe4: PUSH2 0x17fa 00001fe7: JUMP 00001fe8: JUMPDEST 00001fe9: SWAP2 00001fea: POP 00001feb: PUSH2 0x1ff3 00001fee: DUP3 00001fef: PUSH2 0x1fb4 00001ff2: JUMP 00001ff3: JUMPDEST 00001ff4: PUSH1 0x20 00001ff6: DUP3 00001ff7: ADD 00001ff8: SWAP1 00001ff9: POP 00001ffa: SWAP2 00001ffb: SWAP1 00001ffc: POP 00001ffd: JUMP 00001ffe: JUMPDEST 00001fff: PUSH0 00002000: PUSH1 0x20 00002002: DUP3 00002003: ADD 00002004: SWAP1 00002005: POP 00002006: DUP2 00002007: DUP2 00002008: SUB 00002009: PUSH0 0000200a: DUP4 0000200b: ADD 0000200c: MSTORE 0000200d: PUSH2 0x2015 00002010: DUP2 00002011: PUSH2 0x1fdc 00002014: JUMP 00002015: JUMPDEST 00002016: SWAP1 00002017: POP 00002018: SWAP2 00002019: SWAP1 0000201a: POP 0000201b: JUMP 0000201c: JUMPDEST 0000201d: PUSH32 0x6662653100000000000000000000000000000000000000000000000000000000 0000203e: PUSH0 0000203f: DUP3 00002040: ADD 00002041: MSTORE 00002042: POP 00002043: JUMP 00002044: JUMPDEST 00002045: PUSH0 00002046: PUSH2 0x2050 00002049: PUSH1 0x04 0000204b: DUP4 0000204c: PUSH2 0x17fa 0000204f: JUMP 00002050: JUMPDEST 00002051: SWAP2 00002052: POP 00002053: PUSH2 0x205b 00002056: DUP3 00002057: PUSH2 0x201c 0000205a: JUMP 0000205b: JUMPDEST 0000205c: PUSH1 0x20 0000205e: DUP3 0000205f: ADD 00002060: SWAP1 00002061: POP 00002062: SWAP2 00002063: SWAP1 00002064: POP 00002065: JUMP 00002066: JUMPDEST 00002067: PUSH0 00002068: PUSH1 0x20 0000206a: DUP3 0000206b: ADD 0000206c: SWAP1 0000206d: POP 0000206e: DUP2 0000206f: DUP2 00002070: SUB 00002071: PUSH0 00002072: DUP4 00002073: ADD 00002074: MSTORE 00002075: PUSH2 0x207d 00002078: DUP2 00002079: PUSH2 0x2044 0000207c: JUMP 0000207d: JUMPDEST 0000207e: SWAP1 0000207f: POP 00002080: SWAP2 00002081: SWAP1 00002082: POP 00002083: JUMP 00002084: JUMPDEST 00002085: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000020a6: PUSH0 000020a7: MSTORE 000020a8: PUSH1 0x12 000020aa: PUSH1 0x04 000020ac: MSTORE 000020ad: PUSH1 0x24 000020af: PUSH0 000020b0: REVERT 000020b1: JUMPDEST 000020b2: PUSH32 0x6773320000000000000000000000000000000000000000000000000000000000 000020d3: PUSH0 000020d4: DUP3 000020d5: ADD 000020d6: MSTORE 000020d7: POP 000020d8: JUMP 000020d9: JUMPDEST 000020da: PUSH0 000020db: PUSH2 0x20e5 000020de: PUSH1 0x03 000020e0: DUP4 000020e1: PUSH2 0x17fa 000020e4: JUMP 000020e5: JUMPDEST 000020e6: SWAP2 000020e7: POP 000020e8: PUSH2 0x20f0 000020eb: DUP3 000020ec: PUSH2 0x20b1 000020ef: JUMP 000020f0: JUMPDEST 000020f1: PUSH1 0x20 000020f3: DUP3 000020f4: ADD 000020f5: SWAP1 000020f6: POP 000020f7: SWAP2 000020f8: SWAP1 000020f9: POP 000020fa: JUMP 000020fb: JUMPDEST 000020fc: PUSH0 000020fd: PUSH1 0x20 000020ff: DUP3 00002100: ADD 00002101: SWAP1 00002102: POP 00002103: DUP2 00002104: DUP2 00002105: SUB 00002106: PUSH0 00002107: DUP4 00002108: ADD 00002109: MSTORE 0000210a: PUSH2 0x2112 0000210d: DUP2 0000210e: PUSH2 0x20d9 00002111: JUMP 00002112: JUMPDEST 00002113: SWAP1 00002114: POP 00002115: SWAP2 00002116: SWAP1 00002117: POP 00002118: JUMP 00002119: JUMPDEST 0000211a: PUSH32 0x6773330000000000000000000000000000000000000000000000000000000000 0000213b: PUSH0 0000213c: DUP3 0000213d: ADD 0000213e: MSTORE 0000213f: POP 00002140: JUMP 00002141: JUMPDEST 00002142: PUSH0 00002143: PUSH2 0x214d 00002146: PUSH1 0x03 00002148: DUP4 00002149: PUSH2 0x17fa 0000214c: JUMP 0000214d: JUMPDEST 0000214e: SWAP2 0000214f: POP 00002150: PUSH2 0x2158 00002153: DUP3 00002154: PUSH2 0x2119 00002157: JUMP 00002158: JUMPDEST 00002159: PUSH1 0x20 0000215b: DUP3 0000215c: ADD 0000215d: SWAP1 0000215e: POP 0000215f: SWAP2 00002160: SWAP1 00002161: POP 00002162: JUMP 00002163: JUMPDEST 00002164: PUSH0 00002165: PUSH1 0x20 00002167: DUP3 00002168: ADD 00002169: SWAP1 0000216a: POP 0000216b: DUP2 0000216c: DUP2 0000216d: SUB 0000216e: PUSH0 0000216f: DUP4 00002170: ADD 00002171: MSTORE 00002172: PUSH2 0x217a 00002175: DUP2 00002176: PUSH2 0x2141 00002179: JUMP 0000217a: JUMPDEST 0000217b: SWAP1 0000217c: POP 0000217d: SWAP2 0000217e: SWAP1 0000217f: POP 00002180: JUMP 00002181: JUMPDEST 00002182: PUSH32 0x6e74726e00000000000000000000000000000000000000000000000000000000 000021a3: PUSH0 000021a4: DUP3 000021a5: ADD 000021a6: MSTORE 000021a7: POP 000021a8: JUMP 000021a9: JUMPDEST 000021aa: PUSH0 000021ab: PUSH2 0x21b5 000021ae: PUSH1 0x04 000021b0: DUP4 000021b1: PUSH2 0x17fa 000021b4: JUMP 000021b5: JUMPDEST 000021b6: SWAP2 000021b7: POP 000021b8: PUSH2 0x21c0 000021bb: DUP3 000021bc: PUSH2 0x2181 000021bf: JUMP 000021c0: JUMPDEST 000021c1: PUSH1 0x20 000021c3: DUP3 000021c4: ADD 000021c5: SWAP1 000021c6: POP 000021c7: SWAP2 000021c8: SWAP1 000021c9: POP 000021ca: JUMP 000021cb: JUMPDEST 000021cc: PUSH0 000021cd: PUSH1 0x20 000021cf: DUP3 000021d0: ADD 000021d1: SWAP1 000021d2: POP 000021d3: DUP2 000021d4: DUP2 000021d5: SUB 000021d6: PUSH0 000021d7: DUP4 000021d8: ADD 000021d9: MSTORE 000021da: PUSH2 0x21e2 000021dd: DUP2 000021de: PUSH2 0x21a9 000021e1: JUMP 000021e2: JUMPDEST 000021e3: SWAP1 000021e4: POP 000021e5: SWAP2 000021e6: SWAP1 000021e7: POP 000021e8: JUMP 000021e9: JUMPDEST 000021ea: PUSH0 000021eb: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 0000220c: DUP3 0000220d: AND 0000220e: SWAP1 0000220f: POP 00002210: SWAP2 00002211: SWAP1 00002212: POP 00002213: JUMP 00002214: JUMPDEST 00002215: PUSH0 00002216: PUSH2 0x221f 00002219: DUP4 0000221a: DUP4 0000221b: PUSH2 0x1f15 0000221e: JUMP 0000221f: JUMPDEST 00002220: DUP3 00002221: PUSH2 0x222a 00002224: DUP2 00002225: CALLDATALOAD 00002226: PUSH2 0x21e9 00002229: JUMP 0000222a: JUMPDEST 0000222b: SWAP3 0000222c: POP 0000222d: PUSH1 0x01 0000222f: DUP3 00002230: LT 00002231: ISZERO 00002232: PUSH2 0x226a 00002235: JUMPI 00002236: PUSH2 0x2265 00002239: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 0000225a: DUP4 0000225b: PUSH1 0x01 0000225d: SUB 0000225e: PUSH1 0x08 00002260: MUL 00002261: PUSH2 0x1f4a 00002264: JUMP 00002265: JUMPDEST 00002266: DUP4 00002267: AND 00002268: SWAP3 00002269: POP 0000226a: JUMPDEST 0000226b: POP 0000226c: POP 0000226d: SWAP3 0000226e: SWAP2 0000226f: POP 00002270: POP 00002271: JUMP 00002272: JUMPDEST 00002273: PUSH0 00002274: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 00002295: DUP3 00002296: AND 00002297: SWAP1 00002298: POP 00002299: SWAP2 0000229a: SWAP1 0000229b: POP 0000229c: JUMP 0000229d: JUMPDEST 0000229e: PUSH0 0000229f: PUSH2 0x22a8 000022a2: DUP4 000022a3: DUP4 000022a4: PUSH2 0x1f15 000022a7: JUMP 000022a8: JUMPDEST 000022a9: DUP3 000022aa: PUSH2 0x22b3 000022ad: DUP2 000022ae: CALLDATALOAD 000022af: PUSH2 0x2272 000022b2: JUMP 000022b3: JUMPDEST 000022b4: SWAP3 000022b5: POP 000022b6: PUSH1 0x14 000022b8: DUP3 000022b9: LT 000022ba: ISZERO 000022bb: PUSH2 0x22f3 000022be: JUMPI 000022bf: PUSH2 0x22ee 000022c2: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 000022e3: DUP4 000022e4: PUSH1 0x14 000022e6: SUB 000022e7: PUSH1 0x08 000022e9: MUL 000022ea: PUSH2 0x1f4a 000022ed: JUMP 000022ee: JUMPDEST 000022ef: DUP4 000022f0: AND 000022f1: SWAP3 000022f2: POP 000022f3: JUMPDEST 000022f4: POP 000022f5: POP 000022f6: SWAP3 000022f7: SWAP2 000022f8: POP 000022f9: POP 000022fa: JUMP 000022fb: JUMPDEST 000022fc: PUSH0 000022fd: DUP2 000022fe: SWAP1 000022ff: POP 00002300: SWAP2 00002301: SWAP1 00002302: POP 00002303: JUMP 00002304: JUMPDEST 00002305: PUSH0 00002306: PUSH2 0x230f 00002309: DUP4 0000230a: DUP4 0000230b: PUSH2 0x1f15 0000230e: JUMP 0000230f: JUMPDEST 00002310: DUP3 00002311: PUSH2 0x231a 00002314: DUP2 00002315: CALLDATALOAD 00002316: PUSH2 0x22fb 00002319: JUMP 0000231a: JUMPDEST 0000231b: SWAP3 0000231c: POP 0000231d: PUSH1 0x20 0000231f: DUP3 00002320: LT 00002321: ISZERO 00002322: PUSH2 0x235a 00002325: JUMPI 00002326: PUSH2 0x2355 00002329: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000234a: DUP4 0000234b: PUSH1 0x20 0000234d: SUB 0000234e: PUSH1 0x08 00002350: MUL 00002351: PUSH2 0x1f4a 00002354: JUMP 00002355: JUMPDEST 00002356: DUP4 00002357: AND 00002358: SWAP3 00002359: POP 0000235a: JUMPDEST 0000235b: POP 0000235c: POP 0000235d: SWAP3 0000235e: SWAP2 0000235f: POP 00002360: POP 00002361: JUMP 00002362: INVALID 00002363: LOG2 00002364: PUSH5 0x6970667358 0000236a: UNKNOWN(0x22) 0000236b: SLT 0000236c: KECCAK256 0000236d: UNKNOWN(0x23) 0000236e: UNKNOWN(0xCB) 0000236f: UNKNOWN(0x4B) 00002370: UNKNOWN(0xCE) 00002371: UNKNOWN(0xC4) 00002372: UNKNOWN(0xC5) 00002373: CALLER 00002374: DUP7 00002375: UNKNOWN(0xA8) 00002376: UNKNOWN(0xFB) 00002377: UNKNOWN(0xD5) 00002378: UNKNOWN(0xBB) 00002379: PUSH22 0xc108e97b8aeab0647067ad687fb1d0d6fe726c64736f 00002390: PUSH13
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0x295d122326f068cdcc51bdf3a24ea02c064e43b439ffb2e4ec126c76f884e37a
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 108,
"trace_id": "0x295d122326f068cdcc51bdf3a24ea02c064e43b439ffb2e4ec126c76f884e37a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xce5980d6",
"selector": "0xce5980d6",
"calldata_variants": [
"0xce5980d6",
"0xce5980d60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebc74fb0",
"selector": "0xebc74fb0",
"calldata_variants": [
"0xebc74fb0",
"0xebc74fb00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6ee3c40",
"selector": "0xf6ee3c40",
"calldata_variants": [
"0xf6ee3c40",
"0xf6ee3c400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8df605d",
"selector": "0xf8df605d",
"calldata_variants": [
"0xf8df605d",
"0xf8df605d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19eb0759",
"selector": "0x19eb0759",
"calldata_variants": [
"0x19eb0759",
"0x19eb07590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38ed1739",
"selector": "0x38ed1739",
"calldata_variants": [
"0x38ed1739",
"0x38ed17390000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1096,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 6080,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 264,
"type": "tx_origin_used"
},
{
"pc": 337,
"type": "tx_origin_used"
},
{
"pc": 1214,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1344,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3131,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3261,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3591,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3827,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3957,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4198,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4331,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4838,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4968,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"delegatecall_count": 2,
"untrusted_delegatecall_count": 2
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xce5980d6",
"selector": "0xce5980d6",
"calldata_variants": [
"0xce5980d6",
"0xce5980d60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebc74fb0",
"selector": "0xebc74fb0",
"calldata_variants": [
"0xebc74fb0",
"0xebc74fb00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6ee3c40",
"selector": "0xf6ee3c40",
"calldata_variants": [
"0xf6ee3c40",
"0xf6ee3c400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8df605d",
"selector": "0xf8df605d",
"calldata_variants": [
"0xf8df605d",
"0xf8df605d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19eb0759",
"selector": "0x19eb0759",
"calldata_variants": [
"0x19eb0759",
"0x19eb07590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38ed1739",
"selector": "0x38ed1739",
"calldata_variants": [
"0x38ed1739",
"0x38ed17390000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 264,
"type": "tx_origin_used"
},
{
"pc": 337,
"type": "tx_origin_used"
},
{
"pc": 1214,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1344,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3131,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3261,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3591,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3827,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3957,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4198,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4331,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4838,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4968,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 2
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x1e193c4c0a4061bd106892c949fd3cd7caf85b07a26d7c7f063a86dc8a180079
call_targets:
0x42df00ac2e0000005486ac375a00b80000d12758
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1e193c4c0a4061bd106892c949fd3cd7caf85b07a26d7c7f063a86dc8a180079",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x42df00ac2e0000005486ac375a00b80000d12758"
],
"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": "0xce5980d6",
"selector": "0xce5980d6",
"calldata_variants": [
"0xce5980d6",
"0xce5980d60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebc74fb0",
"selector": "0xebc74fb0",
"calldata_variants": [
"0xebc74fb0",
"0xebc74fb00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6ee3c40",
"selector": "0xf6ee3c40",
"calldata_variants": [
"0xf6ee3c40",
"0xf6ee3c400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8df605d",
"selector": "0xf8df605d",
"calldata_variants": [
"0xf8df605d",
"0xf8df605d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19eb0759",
"selector": "0x19eb0759",
"calldata_variants": [
"0x19eb0759",
"0x19eb07590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38ed1739",
"selector": "0x38ed1739",
"calldata_variants": [
"0x38ed1739",
"0x38ed17390000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2818,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2895,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3394,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [
{
"pc": 264,
"type": "tx_origin_used"
},
{
"pc": 337,
"type": "tx_origin_used"
},
{
"pc": 1214,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1344,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3131,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3261,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3591,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3827,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3957,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4198,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4331,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4838,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4968,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 7
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x1e193c4c0a4061bd106892c949fd3cd7caf85b07a26d7c7f063a86dc8a180079
call_targets:
0x42df00ac2e0000005486ac375a00b80000d12758
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1e193c4c0a4061bd106892c949fd3cd7caf85b07a26d7c7f063a86dc8a180079",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x42df00ac2e0000005486ac375a00b80000d12758"
],
"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": "0xce5980d6",
"selector": "0xce5980d6",
"calldata_variants": [
"0xce5980d6",
"0xce5980d60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebc74fb0",
"selector": "0xebc74fb0",
"calldata_variants": [
"0xebc74fb0",
"0xebc74fb00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6ee3c40",
"selector": "0xf6ee3c40",
"calldata_variants": [
"0xf6ee3c40",
"0xf6ee3c400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8df605d",
"selector": "0xf8df605d",
"calldata_variants": [
"0xf8df605d",
"0xf8df605d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19eb0759",
"selector": "0x19eb0759",
"calldata_variants": [
"0x19eb0759",
"0x19eb07590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38ed1739",
"selector": "0x38ed1739",
"calldata_variants": [
"0x38ed1739",
"0x38ed17390000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2818,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2895,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3394,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 264,
"type": "tx_origin_used"
},
{
"pc": 337,
"type": "tx_origin_used"
},
{
"pc": 1214,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1344,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3131,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3261,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3591,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3827,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3957,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4198,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4331,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4461,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4838,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4968,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|