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

Analysis Run

03b89d93-903e-4c2b-8ae4-5a72a1cd13bc

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 3:32 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted DELEGATECALL target reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable 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.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
0
Total opcodes
4408
Flags
delegatecall_present
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_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
view
validation_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
view
evidence_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
view
trace_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
view
trace_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"
        }
    ]
}