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

Analysis Run

d295e25c-e0df-4ff8-a962-da094f11ac94

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 8:26 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Present
Best current signal
ETH value transfer possible
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
30753 report.consolidate complete 1 / 1 3 months ago
75514 artifact.fetch complete 1 / 3 1 week ago
75515 tool.cast_disasm complete 1 / 3 1 week ago
75516 analysis.bundle complete 1 / 3 1 week ago
75517 capability.graph complete 1 / 3 1 week ago
75518 detector.run complete 1 / 3 1 week ago
75519 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Found privileged-admin capabilities in bytecode: selfdestruct and arbitrary external call execution.
View stderr
[codex:587445] OpenAI Codex v0.77.0 (research preview)
[codex:587445] --------
[codex:587445] workdir: /tmp/codex-multi-jjv9veru
[codex:587445] model: gpt-5.2-codex
[codex:587445] provider: openai
[codex:587445] approval: never
[codex:587445] sandbox: read-only
[codex:587445] reasoning effort: xhigh
[codex:587445] reasoning summaries: auto
[codex:587445] session id: 019b70ec-6d99-7ad1-9bc4-4ab3bd7c8279
[codex:587445] --------
[codex:587445] user
[codex:587445] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:587445] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:587445] 
[codex:587445] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:587445] 
[codex:587445] Output MUST be valid JSON matching the provided schema.
[codex:587445] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:587445] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:587445] 
[codex:587445] Output constraints (IMPORTANT):
[codex:587445] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:587445] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:587445] mcp startup: no servers
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Preparing to review instructions and files**
[codex:587445] exec
[codex:587445] /bin/bash -lc ls in /tmp/codex-multi-jjv9veru succeeded in 5ms:
[codex:587445] BYTECODE_BUNDLE.txt
[codex:587445] codex-output-schema.json
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Reading BYTECODE_BUNDLE.txt**
[codex:587445] exec
[codex:587445] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-jjv9veru succeeded in 5ms:
[codex:587445] Runtime bytecode bundle for best-effort auditing.
[codex:587445] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:587445] 
[codex:587445] FILE: runtime_bytecode.hex
[codex:587445] 0x60806040526004361061010d5760003560e01c806362e843a111610095578063ce5cae3011610064578063ce5cae30146102e6578063e7af5c72146102f9578063e84e01eb1461030f578063ef51802c14610337578063fd228db71461034d57600080fd5b806362e843a114610259578063a1a379aa14610291578063a98e0d65146102b1578063b1075772146102c657600080fd5b8063234748b5116100dc578063234748b5146101b557806323c5672e146101d5578063448e2494146101f957806348b6dad2146102195780634f2341841461023957600080fd5b806315a93c161461011957806318bf93481461015e5780631a3ddd6a146101755780631a771a4e1461019557600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610149610134366004610e2b565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561016a57600080fd5b50610173610363565b005b34801561018157600080fd5b50610173610190366004610f12565b610388565b3480156101a157600080fd5b506101736101b03660046110bf565b6106a0565b3480156101c157600080fd5b506101736101d0366004610e4f565b6106e5565b3480156101e157600080fd5b506101eb600c5481565b604051908152602001610155565b34801561020557600080fd5b50610173610214366004610e2b565b610727565b34801561022557600080fd5b50610173610234366004610e2b565b610760565b34801561024557600080fd5b5061017361025436600461109d565b6107a5565b34801561026557600080fd5b50600854610279906001600160a01b031681565b6040516001600160a01b039091168152602001610155565b34801561029d57600080fd5b506101736102ac366004610fc5565b6107cb565b3480156102bd57600080fd5b5061017361087a565b3480156102d257600080fd5b506101736102e1366004611084565b6108a7565b6101736102f4366004610e8d565b61093c565b34801561030557600080fd5b506101eb600b5481565b34801561031b57600080fd5b506007546102799064010000000090046001600160a01b031681565b34801561034357600080fd5b506101eb600a5481565b34801561035957600080fd5b506101eb600d5481565b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff5b60075464010000000090046001600160a01b031633146103a757600080fd5b6002544210156103b657600080fd5b6001546103c3904261116b565b600255604080516060810182526000808252602082018190529181019190915261040760405180606001604052806000815260200160008152602001600081525090565b6040805180820182526003546001600160a01b03908116825260045481166020808401919091528351808501909452600554821684526006549091169083015290610454828560016109c8565b610460818460016109c8565b600061046c8585610b8c565b905089861461047a57600080fd5b60005b8a8110156105a95760008c8c83818110610499576104996112fa565b90506020020160208101906104ae9190610e2b565b6001600160a01b03811660009081526009602052604090205490915060ff166104d657600080fd5b60008a83106104e6576000610500565b8b8b848181106104f8576104f86112fa565b905060200201355b90506000826001600160a01b0316828c8c87818110610521576105216112fa565b90506020028101906105339190611124565b604051610541929190611114565b60006040518083038185875af1925050503d806000811461057e576040519150601f19603f3d011682016040523d82523d6000602084013e610583565b606091505b5050809150508061059357600080fd5b50505080806105a1906112c9565b91505061047d565b50845184516105ba858860006109c8565b6105c6848760006109c8565b60006105d28888610b8c565b6007549091506000906020906105ee9063ffffffff1687611293565b901c9050808210156105ff57600080fd5b50875183108061060f5750865182105b61061857600080fd5b875187516040808b0151818b01518251888152602081018890528084019590955260608501939093526080840188905260a0840185905260c084015260e0830191909152517ff91c1656473b2a03aa3a8669d3cfd947335d6d368ebeb93a8dddeac8cc886a6c918190036101000190a15050505050505050610698610bf6565b505050505050565b6000546001600160a01b031633146106b757600080fd5b828411156106c457600080fd5b808211156106d157600080fd5b600a93909355600b91909155600c55600d55565b6000546001600160a01b031633146106fc57600080fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461073e57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461077757600080fd5b600780546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6000546001600160a01b031633146107bc57600080fd5b600191909155600255565b5050565b6000546001600160a01b031633146107e257600080fd5b6108756107f436859003850185611017565b61080336859003850185611017565b8151600380546001600160a01b03199081166001600160a01b0393841617909155602093840151600480548316918416919091179055825160058054831691841691909117905591909201516006805490921692169190911790556007805463ffffffff191663ffffffff8416179055565b505050565b6008546001600160a01b0316331461089157600080fd5b60078054640100000000600160c01b0319169055565b6000546001600160a01b031633146108be57600080fd5b478110156108ff57600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156107c7573d6000803e3d6000fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156107c7573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1925050503d80600081146109ad576040519150601f19603f3d011682016040523d82523d6000602084013e6109b2565b606091505b505080915050806109c257600080fd5b50505050565b82516001600160a01b03166109dc57505050565b82516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610a1e57600080fd5b505afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190610fac565b825280156108755760208301516001600160a01b031615610b795782602001516001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190610fac565b82604001818152505082600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2c57600080fd5b505afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110f1565b610b6f90600a6111e8565b6020830152505050565b6001604083018190526020830152505050565b60208201516040830151835160009247929091610ba99190611293565b610bb39190611183565b610bbd908261116b565b9050826020015183604001518460000151610bd89190611293565b610be29190611183565b610bec908261116b565b9150505b92915050565b600a546000908015610c6657333181811015610c64574792506000610c1f828585600b54610d84565b90508015610c6257604051339082156108fc029083906000818181858888f19350505050158015610c54573d6000803e3d6000fd5b50610c5f81856112b2565b93505b505b505b50600c5480156107c75781610c79574791505b808210156107c7576040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29060009082906370a082319060240160206040518083038186803b158015610cd057600080fd5b505afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d089190610fac565b90506000610d1a858386600d54610d84565b90508015610d7d57604051632e1a7d4d60e01b8152600481018290526001600160a01b03841690632e1a7d4d90602401600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b505050505b5050505050565b600082610d91858761116b565b10610dbb576000610da286846112b2565b9050848111610db15780610db3565b845b915050610dbf565b5060005b949350505050565b60008083601f840112610dd957600080fd5b50813567ffffffffffffffff811115610df157600080fd5b6020830191508360208260051b8501011115610e0c57600080fd5b9250929050565b600060408284031215610e2557600080fd5b50919050565b600060208284031215610e3d57600080fd5b8135610e4881611310565b9392505050565b60008060408385031215610e6257600080fd5b8235610e6d81611310565b915060208301358015158114610e8257600080fd5b809150509250929050565b600080600060408486031215610ea257600080fd5b8335610ead81611310565b9250602084013567ffffffffffffffff80821115610eca57600080fd5b818601915086601f830112610ede57600080fd5b813581811115610eed57600080fd5b876020828501011115610eff57600080fd5b6020830194508093505050509250925092565b60008060008060008060608789031215610f2b57600080fd5b863567ffffffffffffffff80821115610f4357600080fd5b610f4f8a838b01610dc7565b90985096506020890135915080821115610f6857600080fd5b610f748a838b01610dc7565b90965094506040890135915080821115610f8d57600080fd5b50610f9a89828a01610dc7565b979a9699509497509295939492505050565b600060208284031215610fbe57600080fd5b5051919050565b600080600060a08486031215610fda57600080fd5b610fe48585610e13565b9250610ff38560408601610e13565b9150608084013563ffffffff8116811461100c57600080fd5b809150509250925092565b60006040828403121561102957600080fd5b6040516040810181811067ffffffffffffffff8211171561105a57634e487b7160e01b600052604160045260246000fd5b604052823561106881611310565b8152602083013561107881611310565b60208201529392505050565b60006020828403121561109657600080fd5b5035919050565b600080604083850312156110b057600080fd5b50508035926020909101359150565b600080600080608085870312156110d557600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561110357600080fd5b815160ff81168114610e4857600080fd5b8183823760009101908152919050565b6000808335601e1984360301811261113b57600080fd5b83018035915067ffffffffffffffff82111561115657600080fd5b602001915036819003821315610e0c57600080fd5b6000821982111561117e5761117e6112e4565b500190565b6000826111a057634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156111e05781600019048211156111c6576111c66112e4565b808516156111d357918102915b93841c93908002906111aa565b509250929050565b6000610e4860ff84168360008261120157506001610bf0565b8161120e57506000610bf0565b8160018114611224576002811461122e5761124a565b6001915050610bf0565b60ff84111561123f5761123f6112e4565b50506001821b610bf0565b5060208310610133831016604e8410600b841016171561126d575081810a610bf0565b61127783836111a5565b806000190482111561128b5761128b6112e4565b029392505050565b60008160001904831182151516156112ad576112ad6112e4565b500290565b6000828210156112c4576112c46112e4565b500390565b60006000198214156112dd576112dd6112e4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461093957600080fdfea2646970667358221220854a81e7cf91c011d2283c513ec458d67e8ced200eecc3a6b76ed777294b9f0d64736f6c63430008060033
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing bytecode for security patterns**
[codex:587445] 
[codex:587445] I’m examining the contract’s runtime bytecode to spot potential issues like owner-controlled selfdestruct, delegatecall usage, and reentrancy risks by identifying opcode patterns and mapping function selectors, while carefully weighing concrete risks versus centralization concerns based on control flows and storage access.
[codex:587445] exec
[codex:587445] /bin/bash -lc 'nl -ba BYTECODE_BUNDLE.txt' in /tmp/codex-multi-jjv9veru succeeded in 5ms:
[codex:587445]      1	Runtime bytecode bundle for best-effort auditing.
[codex:587445]      2	Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:587445]      3	
[codex:587445]      4	FILE: runtime_bytecode.hex
[codex:587445]      5	0x60806040526004361061010d5760003560e01c806362e843a111610095578063ce5cae3011610064578063ce5cae30146102e6578063e7af5c72146102f9578063e84e01eb1461030f578063ef51802c14610337578063fd228db71461034d57600080fd5b806362e843a114610259578063a1a379aa14610291578063a98e0d65146102b1578063b1075772146102c657600080fd5b8063234748b5116100dc578063234748b5146101b557806323c5672e146101d5578063448e2494146101f957806348b6dad2146102195780634f2341841461023957600080fd5b806315a93c161461011957806318bf93481461015e5780631a3ddd6a146101755780631a771a4e1461019557600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610149610134366004610e2b565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561016a57600080fd5b50610173610363565b005b34801561018157600080fd5b50610173610190366004610f12565b610388565b3480156101a157600080fd5b506101736101b03660046110bf565b6106a0565b3480156101c157600080fd5b506101736101d0366004610e4f565b6106e5565b3480156101e157600080fd5b506101eb600c5481565b604051908152602001610155565b34801561020557600080fd5b50610173610214366004610e2b565b610727565b34801561022557600080fd5b50610173610234366004610e2b565b610760565b34801561024557600080fd5b5061017361025436600461109d565b6107a5565b34801561026557600080fd5b50600854610279906001600160a01b031681565b6040516001600160a01b039091168152602001610155565b34801561029d57600080fd5b506101736102ac366004610fc5565b6107cb565b3480156102bd57600080fd5b5061017361087a565b3480156102d257600080fd5b506101736102e1366004611084565b6108a7565b6101736102f4366004610e8d565b61093c565b34801561030557600080fd5b506101eb600b5481565b34801561031b57600080fd5b506007546102799064010000000090046001600160a01b031681565b34801561034357600080fd5b506101eb600a5481565b34801561035957600080fd5b506101eb600d5481565b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff5b60075464010000000090046001600160a01b031633146103a757600080fd5b6002544210156103b657600080fd5b6001546103c3904261116b565b600255604080516060810182526000808252602082018190529181019190915261040760405180606001604052806000815260200160008152602001600081525090565b6040805180820182526003546001600160a01b03908116825260045481166020808401919091528351808501909452600554821684526006549091169083015290610454828560016109c8565b610460818460016109c8565b600061046c8585610b8c565b905089861461047a57600080fd5b60005b8a8110156105a95760008c8c83818110610499576104996112fa565b90506020020160208101906104ae9190610e2b565b6001600160a01b03811660009081526009602052604090205490915060ff166104d657600080fd5b60008a83106104e6576000610500565b8b8b848181106104f8576104f86112fa565b905060200201355b90506000826001600160a01b0316828c8c87818110610521576105216112fa565b90506020028101906105339190611124565b604051610541929190611114565b60006040518083038185875af1925050503d806000811461057e576040519150601f19603f3d011682016040523d82523d6000602084013e610583565b606091505b5050809150508061059357600080fd5b50505080806105a1906112c9565b91505061047d565b50845184516105ba858860006109c8565b6105c6848760006109c8565b60006105d28888610b8c565b6007549091506000906020906105ee9063ffffffff1687611293565b901c9050808210156105ff57600080fd5b50875183108061060f5750865182105b61061857600080fd5b875187516040808b0151818b01518251888152602081018890528084019590955260608501939093526080840188905260a0840185905260c084015260e0830191909152517ff91c1656473b2a03aa3a8669d3cfd947335d6d368ebeb93a8dddeac8cc886a6c918190036101000190a15050505050505050610698610bf6565b505050505050565b6000546001600160a01b031633146106b757600080fd5b828411156106c457600080fd5b808211156106d157600080fd5b600a93909355600b91909155600c55600d55565b6000546001600160a01b031633146106fc57600080fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461073e57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461077757600080fd5b600780546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6000546001600160a01b031633146107bc57600080fd5b600191909155600255565b5050565b6000546001600160a01b031633146107e257600080fd5b6108756107f436859003850185611017565b61080336859003850185611017565b8151600380546001600160a01b03199081166001600160a01b0393841617909155602093840151600480548316918416919091179055825160058054831691841691909117905591909201516006805490921692169190911790556007805463ffffffff191663ffffffff8416179055565b505050565b6008546001600160a01b0316331461089157600080fd5b60078054640100000000600160c01b0319169055565b6000546001600160a01b031633146108be57600080fd5b478110156108ff57600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156107c7573d6000803e3d6000fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156107c7573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1925050503d80600081146109ad576040519150601f19603f3d011682016040523d82523d6000602084013e6109b2565b606091505b505080915050806109c257600080fd5b50505050565b82516001600160a01b03166109dc57505050565b82516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610a1e57600080fd5b505afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190610fac565b825280156108755760208301516001600160a01b031615610b795782602001516001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190610fac565b82604001818152505082600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2c57600080fd5b505afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110f1565b610b6f90600a6111e8565b6020830152505050565b6001604083018190526020830152505050565b60208201516040830151835160009247929091610ba99190611293565b610bb39190611183565b610bbd908261116b565b9050826020015183604001518460000151610bd89190611293565b610be29190611183565b610bec908261116b565b9150505b92915050565b600a546000908015610c6657333181811015610c64574792506000610c1f828585600b54610d84565b90508015610c6257604051339082156108fc029083906000818181858888f19350505050158015610c54573d6000803e3d6000fd5b50610c5f81856112b2565b93505b505b505b50600c5480156107c75781610c79574791505b808210156107c7576040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29060009082906370a082319060240160206040518083038186803b158015610cd057600080fd5b505afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d089190610fac565b90506000610d1a858386600d54610d84565b90508015610d7d57604051632e1a7d4d60e01b8152600481018290526001600160a01b03841690632e1a7d4d90602401600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b505050505b5050505050565b600082610d91858761116b565b10610dbb576000610da286846112b2565b9050848111610db15780610db3565b845b915050610dbf565b5060005b949350505050565b60008083601f840112610dd957600080fd5b50813567ffffffffffffffff811115610df157600080fd5b6020830191508360208260051b8501011115610e0c57600080fd5b9250929050565b600060408284031215610e2557600080fd5b50919050565b600060208284031215610e3d57600080fd5b8135610e4881611310565b9392505050565b60008060408385031215610e6257600080fd5b8235610e6d81611310565b915060208301358015158114610e8257600080fd5b809150509250929050565b600080600060408486031215610ea257600080fd5b8335610ead81611310565b9250602084013567ffffffffffffffff80821115610eca57600080fd5b818601915086601f830112610ede57600080fd5b813581811115610eed57600080fd5b876020828501011115610eff57600080fd5b6020830194508093505050509250925092565b60008060008060008060608789031215610f2b57600080fd5b863567ffffffffffffffff80821115610f4357600080fd5b610f4f8a838b01610dc7565b90985096506020890135915080821115610f6857600080fd5b610f748a838b01610dc7565b90965094506040890135915080821115610f8d57600080fd5b50610f9a89828a01610dc7565b979a9699509497509295939492505050565b600060208284031215610fbe57600080fd5b5051919050565b600080600060a08486031215610fda57600080fd5b610fe48585610e13565b9250610ff38560408601610e13565b9150608084013563ffffffff8116811461100c57600080fd5b809150509250925092565b60006040828403121561102957600080fd5b6040516040810181811067ffffffffffffffff8211171561105a57634e487b7160e01b600052604160045260246000fd5b604052823561106881611310565b8152602083013561107881611310565b60208201529392505050565b60006020828403121561109657600080fd5b5035919050565b600080604083850312156110b057600080fd5b50508035926020909101359150565b600080600080608085870312156110d557600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561110357600080fd5b815160ff81168114610e4857600080fd5b8183823760009101908152919050565b6000808335601e1984360301811261113b57600080fd5b83018035915067ffffffffffffffff82111561115657600080fd5b602001915036819003821315610e0c57600080fd5b6000821982111561117e5761117e6112e4565b500190565b6000826111a057634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156111e05781600019048211156111c6576111c66112e4565b808516156111d357918102915b93841c93908002906111aa565b509250929050565b6000610e4860ff84168360008261120157506001610bf0565b8161120e57506000610bf0565b8160018114611224576002811461122e5761124a565b6001915050610bf0565b60ff84111561123f5761123f6112e4565b50506001821b610bf0565b5060208310610133831016604e8410600b841016171561126d575081810a610bf0565b61127783836111a5565b806000190482111561128b5761128b6112e4565b029392505050565b60008160001904831182151516156112ad576112ad6112e4565b500290565b6000828210156112c4576112c46112e4565b500390565b60006000198214156112dd576112dd6112e4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461093957600080fdfea2646970667358221220854a81e7cf91c011d2283c513ec458d67e8ced200eecc3a6b76ed777294b9f0d64736f6c63430008060033
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing bytecode for vulnerabilities**
[codex:587445] exec
[codex:587445] /bin/bash -lc 'which evm' in /tmp/codex-multi-jjv9veru exited 1 in 5ms:
[codex:587445] 
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing bytecode and mapping functions**
[codex:587445] 
[codex:587445] I'm examining the bytecode to identify functions and their roles, focusing on access control and admin patterns. Since I can't install tools, I'll write a simple Python script to disassemble the hex and map jump destinations to better understand the contract's structure and potential risks.
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] from binascii import unhexlify
[codex:587445] 
[codex:587445] # Read bytecode from file
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] if not m:
[codex:587445]     raise SystemExit('no bytecode')
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] # opcode map
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] # merge push
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start=0, end=None, max_lines=500):
[codex:587445]     i=start
[codex:587445]     lines=[]
[codex:587445]     while i < len(code) and (end is None or i<end) and len(lines)<max_lines:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             lines.append((i,name,data.hex()))
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             lines.append((i,name,''))
[codex:587445]             i+=1
[codex:587445]     return lines
[codex:587445] 
[codex:587445] # Let's dump around addresses mentioned in dispatcher for functions.
[codex:587445] # First, find all JUMPDESTs
[codex:587445] jumpdests=[i for i,b in enumerate(code) if b==0x5b]
[codex:587445] 
[codex:587445] # print some context around specific addresses (0x0363,0x0388 etc)
[codex:587445] addrs=[0x0363,0x0388,0x06a0,0x06e5,0x0727,0x0760,0x07a5,0x07cb,0x087a,0x08a7,0x093c,0x09c8,0x0b8c,0x0bf6]
[codex:587445] for addr in addrs:
[codex:587445]     print(f\"\\n-- disasm @ 0x{addr:x} --\")
[codex:587445]     for a,name,data in disasm(addr, addr+120, max_lines=60):
[codex:587445]         if data:
[codex:587445]             print(f\"{a:04x}: {name} 0x{data}\")
[codex:587445]         else:
[codex:587445]             print(f\"{a:04x}: {name}\")
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 33ms:
[codex:587445] 
[codex:587445] -- disasm @ 0x363 --
[codex:587445] 0363: JUMPDEST
[codex:587445] 0364: PUSH1 0x00
[codex:587445] 0366: SLOAD
[codex:587445] 0367: PUSH1 0x01
[codex:587445] 0369: PUSH1 0x01
[codex:587445] 036b: PUSH1 0xa0
[codex:587445] 036d: SHL
[codex:587445] 036e: SUB
[codex:587445] 036f: AND
[codex:587445] 0370: CALLER
[codex:587445] 0371: EQ
[codex:587445] 0372: PUSH2 0x037a
[codex:587445] 0375: JUMPI
[codex:587445] 0376: PUSH1 0x00
[codex:587445] 0378: OP_80
[codex:587445] 0379: REVERT
[codex:587445] 037a: JUMPDEST
[codex:587445] 037b: PUSH1 0x00
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing critical disassembly regions**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] from binascii import unhexlify
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start, end):
[codex:587445]     i=start
[codex:587445]     while i<end:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             print(f\"{i:04x}: {name}\")
[codex:587445]             i+=1
[codex:587445] 
[codex:587445] print('--- 0x08be to 0x0910 ---')
[codex:587445] disasm(0x08be, 0x0910)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 26ms:
[codex:587445] --- 0x08be to 0x0910 ---
[codex:587445] 08be: JUMPDEST
[codex:587445] 08bf: SELFBALANCE
[codex:587445] 08c0: OP_81
[codex:587445] 08c1: LT
[codex:587445] 08c2: ISZERO
[codex:587445] 08c3: PUSH2 0x08ff
[codex:587445] 08c6: JUMPI
[codex:587445] 08c7: PUSH1 0x00
[codex:587445] 08c9: OP_80
[codex:587445] 08ca: SLOAD
[codex:587445] 08cb: PUSH1 0x40
[codex:587445] 08cd: MLOAD
[codex:587445] 08ce: PUSH1 0x01
[codex:587445] 08d0: PUSH1 0x01
[codex:587445] 08d2: PUSH1 0xa0
[codex:587445] 08d4: SHL
[codex:587445] 08d5: SUB
[codex:587445] 08d6: OP_90
[codex:587445] 08d7: OP_91
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing potential reentrancy risks**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start, end):
[codex:587445]     i=start
[codex:587445]     while i<end:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             print(f\"{i:04x}: {name}\")
[codex:587445]             i+=1
[codex:587445] 
[codex:587445] print('--- 0x093c to 0x09e0 ---')
[codex:587445] disasm(0x093c, 0x09e0)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 24ms:
[codex:587445] --- 0x093c to 0x09e0 ---
[codex:587445] 093c: JUMPDEST
[codex:587445] 093d: PUSH1 0x00
[codex:587445] 093f: SLOAD
[codex:587445] 0940: PUSH1 0x01
[codex:587445] 0942: PUSH1 0x01
[codex:587445] 0944: PUSH1 0xa0
[codex:587445] 0946: SHL
[codex:587445] 0947: SUB
[codex:587445] 0948: AND
[codex:587445] 0949: CALLER
[codex:587445] 094a: EQ
[codex:587445] 094b: PUSH2 0x0953
[codex:587445] 094e: JUMPI
[codex:587445] 094f: PUSH1 0x00
[codex:587445] 0951: OP_80
[codex:587445] 0952: REVERT
[codex:587445] 0953: JUMPDEST
[codex:587445] 0954: PUSH1 0x00
[codex:587445] 0956: OP_83
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing owner-only execute function and claim-related logic**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start, end):
[codex:587445]     i=start
[codex:587445]     while i<end:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             print(f\"{i:04x}: {name}\")
[codex:587445]             i+=1
[codex:587445] 
[codex:587445] print('--- 0x03a7 to 0x0610 ---')
[codex:587445] disasm(0x03a7, 0x0610)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 24ms:
[codex:587445] --- 0x03a7 to 0x0610 ---
[codex:587445] 03a7: JUMPDEST
[codex:587445] 03a8: PUSH1 0x02
[codex:587445] 03aa: SLOAD
[codex:587445] 03ab: TIMESTAMP
[codex:587445] 03ac: LT
[codex:587445] 03ad: ISZERO
[codex:587445] 03ae: PUSH2 0x03b6
[codex:587445] 03b1: JUMPI
[codex:587445] 03b2: PUSH1 0x00
[codex:587445] 03b4: OP_80
[codex:587445] 03b5: REVERT
[codex:587445] 03b6: JUMPDEST
[codex:587445] 03b7: PUSH1 0x01
[codex:587445] 03b9: SLOAD
[codex:587445] 03ba: PUSH2 0x03c3
[codex:587445] 03bd: OP_90
[codex:587445] 03be: TIMESTAMP
[codex:587445] 03bf: PUSH2 0x116b
[codex:587445] 03c2: JUMP
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing contract function complexity and access controls**
[codex:587445] 
[codex:587445] I'm examining a large contract function that loops over an array making external calls with checks on whitelisted addresses, owner-only functions with arbitrary call capability, and a selfdestruct function. I'm carefully inspecting access controls, storage modifications, and potential reentrancy or centralization risks, focusing only on concrete issues evident in the bytecode patterns.
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start, end):
[codex:587445]     i=start
[codex:587445]     while i<end:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             print(f\"{i:04x}: {name}\")
[codex:587445]             i+=1
[codex:587445] 
[codex:587445] print('--- 0x0bf6 to 0x0d20 ---')
[codex:587445] disasm(0x0bf6, 0x0d20)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 24ms:
[codex:587445] --- 0x0bf6 to 0x0d20 ---
[codex:587445] 0bf6: JUMPDEST
[codex:587445] 0bf7: PUSH1 0x0a
[codex:587445] 0bf9: SLOAD
[codex:587445] 0bfa: PUSH1 0x00
[codex:587445] 0bfc: OP_90
[codex:587445] 0bfd: OP_80
[codex:587445] 0bfe: ISZERO
[codex:587445] 0bff: PUSH2 0x0c66
[codex:587445] 0c02: JUMPI
[codex:587445] 0c03: CALLER
[codex:587445] 0c04: BALANCE
[codex:587445] 0c05: OP_81
[codex:587445] 0c06: OP_81
[codex:587445] 0c07: LT
[codex:587445] 0c08: ISZERO
[codex:587445] 0c09: PUSH2 0x0c64
[codex:587445] 0c0c: JUMPI
[codex:587445] 0c0d: SELFBALANCE
[codex:587445] 0c0e: OP_92
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing CALL usage and reentrancy risk**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] 
[codex:587445] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:587445] hexcode=m.group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] opnames = {
[codex:587445] 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:587445] 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:587445] 0x20:'SHA3',
[codex:587445] 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:587445] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:587445] 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:587445] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:587445] }
[codex:587445] 
[codex:587445] opnames.update(opcodes)
[codex:587445] 
[codex:587445] def disasm(start, end):
[codex:587445]     i=start
[codex:587445]     while i<end:
[codex:587445]         op=code[i]
[codex:587445]         name=opnames.get(op, f'OP_{op:02x}')
[codex:587445]         if 0x60 <= op <= 0x7f:
[codex:587445]             n=op-0x5f
[codex:587445]             data=code[i+1:i+1+n]
[codex:587445]             print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:587445]             i+=1+n
[codex:587445]         else:
[codex:587445]             print(f\"{i:04x}: {name}\")
[codex:587445]             i+=1
[codex:587445] 
[codex:587445] print('--- 0x12a0 to 0x12d5 ---')
[codex:587445] disasm(0x12a0, 0x12d5)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 23ms:
[codex:587445] --- 0x12a0 to 0x12d5 ---
[codex:587445] 12a0: AND
[codex:587445] 12a1: ISZERO
[codex:587445] 12a2: PUSH2 0x12ad
[codex:587445] 12a5: JUMPI
[codex:587445] 12a6: PUSH2 0x12ad
[codex:587445] 12a9: PUSH2 0x12e4
[codex:587445] 12ac: JUMP
[codex:587445] 12ad: JUMPDEST
[codex:587445] 12ae: POP
[codex:587445] 12af: MUL
[codex:587445] 12b0: OP_90
[codex:587445] 12b1: JUMP
[codex:587445] 12b2: JUMPDEST
[codex:587445] 12b3: PUSH1 0x00
[codex:587445] 12b5: OP_82
[codex:587445] 12b6: OP_82
[codex:587445] 12b7: LT
[codex:587445] 12b8: ISZERO
[codex:587445] 12b9: PUSH2 0x12c4
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing admin privileges and reentrancy risks**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] hexcode=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:587445] code=bytes.fromhex(hexcode)
[codex:587445] ops=set(code)
[codex:587445] print('f4' in [f'{b:02x}' for b in code])
[codex:587445] print('DELEGATECALL count', code.count(0xf4))
[codex:587445] print('CALL count', code.count(0xf1))
[codex:587445] print('SELFDESTRUCT count', code.count(0xff))
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 25ms:
[codex:587445] True
[codex:587445] DELEGATECALL count 2
[codex:587445] CALL count 8
[codex:587445] SELFDESTRUCT count 74
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Verifying DELEGATECALL opcodes**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] hexcode=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:587445] code=bytearray.fromhex(hexcode)
[codex:587445] 
[codex:587445] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:587445] 
[codex:587445] # disassemble sequentially, noting opcode positions
[codex:587445] 
[codex:587445] i=0
[codex:587445] addrs={'DELEGATECALL':[],'SELFDESTRUCT':[],'CALLCODE':[],'CALL':[]}
[codex:587445] while i < len(code):
[codex:587445]     op=code[i]
[codex:587445]     if op==0xf4:
[codex:587445]         addrs['DELEGATECALL'].append(i)
[codex:587445]     elif op==0xff:
[codex:587445]         addrs['SELFDESTRUCT'].append(i)
[codex:587445]     elif op==0xf1:
[codex:587445]         addrs['CALL'].append(i)
[codex:587445]     elif op==0xf2:
[codex:587445]         addrs['CALLCODE'].append(i)
[codex:587445]     if 0x60 <= op <= 0x7f:
[codex:587445]         i += 1 + (op-0x5f)
[codex:587445]     else:
[codex:587445]         i += 1
[codex:587445] 
[codex:587445] print(addrs)
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 29ms:
[codex:587445] {'DELEGATECALL': [], 'SELFDESTRUCT': [903], 'CALLCODE': [], 'CALL': [1358, 2281, 2339, 2429, 3134, 3431]}
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Analyzing owner-only selfdestruct and arbitrary call**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] 
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] hexcode=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:587445] 
[codex:587445] start=0x093c
[codex:587445] end=0x09a0
[codex:587445] print(hexcode[start*2:end*2])
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 27ms:
[codex:587445] 5b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1925050503d80600081146109ad576040519150601f19603f3d011682016040523d82
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Inspecting owner check and selfdestruct snippets**
[codex:587445] exec
[codex:587445] /bin/bash -lc "python - <<'PY'
[codex:587445] import re
[codex:587445] with open('/tmp/codex-multi-jjv9veru/BYTECODE_BUNDLE.txt','r') as f:
[codex:587445]     data=f.read()
[codex:587445] hexcode=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:587445] start=0x0363
[codex:587445] end=0x0388
[codex:587445] print(hexcode[start*2:end*2])
[codex:587445] PY" in /tmp/codex-multi-jjv9veru succeeded in 23ms:
[codex:587445] 5b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff
[codex:587445] 
[codex:587445] thinking
[codex:587445] **Preparing detailed JSON findings**
[codex:587445] 
[codex:587445] I’m drafting JSON output with a summary and two medium-severity findings about privileged admin capabilities involving selfdestruct and arbitrary external calls. I’ll carefully format the findings with severity, categories, titles, scenarios, recommendations, evidence (including hex snippets), and locations, ensuring it fits the required schema and includes no extra text.
[codex:587445] codex
[codex:587445] {"no_findings":false,"summary":"Found privileged-admin capabilities in bytecode: selfdestruct and arbitrary external call execution.","findings":[{"severity":"medium","category":"access_control","title":"Privileged address can selfdestruct the contract","exploit_scenario":"If the address stored in slot 0 is compromised or malicious, it can invoke the function at 0x0363 to execute SELFDESTRUCT, permanently disabling the contract and sending all ETH to that address.","recommendation":"Remove SELFDESTRUCT or gate it behind a timelock/multisig; if intended, clearly disclose this admin capability to users.","evidence":"Bytecode shows a slot0==caller check followed by SELFDESTRUCT: `5b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff`.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"medium","category":"access_control","title":"Privileged address can perform arbitrary external calls with value","exploit_scenario":"A privileged function checks slot0==caller and then builds a low-level CALL using calldata/value, enabling the privileged address to call any target and move funds if compromised or malicious.","recommendation":"Limit this capability to a multisig/timelock or remove it if not strictly necessary; document the trust assumption.","evidence":"Owner-checked CALL pattern: `5b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1...`.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:587445] tokens used
[codex:587445] 51,061
[codex:587445] {"no_findings":false,"summary":"Found privileged-admin capabilities in bytecode: selfdestruct and arbitrary external call execution.","findings":[{"severity":"medium","category":"access_control","title":"Privileged address can selfdestruct the contract","exploit_scenario":"If the address stored in slot 0 is compromised or malicious, it can invoke the function at 0x0363 to execute SELFDESTRUCT, permanently disabling the contract and sending all ETH to that address.","recommendation":"Remove SELFDESTRUCT or gate it behind a timelock/multisig; if intended, clearly disclose this admin capability to users.","evidence":"Bytecode shows a slot0==caller check followed by SELFDESTRUCT: `5b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff`.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"medium","category":"access_control","title":"Privileged address can perform arbitrary external calls with value","exploit_scenario":"A privileged function checks slot0==caller and then builds a low-level CALL using calldata/value, enabling the privileged address to call any target and move funds if compromised or malicious.","recommendation":"Limit this capability to a multisig/timelock or remove it if not strictly necessary; document the trust assumption.","evidence":"Owner-checked CALL pattern: `5b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1...`.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T20:26:26.063394+00:00",
        "returncode": 0
    },
    "summary": "Found privileged-admin capabilities in bytecode: selfdestruct and arbitrary external call execution.",
    "raw_final": {
        "summary": "Found privileged-admin capabilities in bytecode: selfdestruct and arbitrary external call execution.",
        "findings": [
            {
                "title": "Privileged address can selfdestruct the contract",
                "category": "access_control",
                "evidence": "Bytecode shows a slot0==caller check followed by SELFDESTRUCT: `5b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff`.",
                "severity": "medium",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Remove SELFDESTRUCT or gate it behind a timelock/multisig; if intended, clearly disclose this admin capability to users.",
                "exploit_scenario": "If the address stored in slot 0 is compromised or malicious, it can invoke the function at 0x0363 to execute SELFDESTRUCT, permanently disabling the contract and sending all ETH to that address."
            },
            {
                "title": "Privileged address can perform arbitrary external calls with value",
                "category": "access_control",
                "evidence": "Owner-checked CALL pattern: `5b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1...`.",
                "severity": "medium",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Limit this capability to a multisig/timelock or remove it if not strictly necessary; document the trust assumption.",
                "exploit_scenario": "A privileged function checks slot0==caller and then builds a low-level CALL using calldata/value, enabling the privileged address to call any target and move funds if compromised or malicious."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
10
EXT*/BALANCE
7
Total opcodes
3498
Flags
selfdestruct_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x010d
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x62e843a1
00000019: GT
0000001a: PUSH2 0x0095
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xce5cae30
00000024: GT
00000025: PUSH2 0x0064
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xce5cae30
0000002f: EQ
00000030: PUSH2 0x02e6
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe7af5c72
0000003a: EQ
0000003b: PUSH2 0x02f9
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe84e01eb
00000045: EQ
00000046: PUSH2 0x030f
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xef51802c
00000050: EQ
00000051: PUSH2 0x0337
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfd228db7
0000005b: EQ
0000005c: PUSH2 0x034d
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x62e843a1
0000006b: EQ
0000006c: PUSH2 0x0259
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xa1a379aa
00000076: EQ
00000077: PUSH2 0x0291
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xa98e0d65
00000081: EQ
00000082: PUSH2 0x02b1
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xb1075772
0000008c: EQ
0000008d: PUSH2 0x02c6
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x234748b5
0000009c: GT
0000009d: PUSH2 0x00dc
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x234748b5
000000a7: EQ
000000a8: PUSH2 0x01b5
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x23c5672e
000000b2: EQ
000000b3: PUSH2 0x01d5
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x448e2494
000000bd: EQ
000000be: PUSH2 0x01f9
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x48b6dad2
000000c8: EQ
000000c9: PUSH2 0x0219
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0x4f234184
000000d3: EQ
000000d4: PUSH2 0x0239
000000d7: JUMPI
000000d8: PUSH1 0x00
000000da: DUP1
000000db: REVERT
000000dc: JUMPDEST
000000dd: DUP1
000000de: PUSH4 0x15a93c16
000000e3: EQ
000000e4: PUSH2 0x0119
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x18bf9348
000000ee: EQ
000000ef: PUSH2 0x015e
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x1a3ddd6a
000000f9: EQ
000000fa: PUSH2 0x0175
000000fd: JUMPI
000000fe: DUP1
000000ff: PUSH4 0x1a771a4e
00000104: EQ
00000105: PUSH2 0x0195
00000108: JUMPI
00000109: PUSH1 0x00
0000010b: DUP1
0000010c: REVERT
0000010d: JUMPDEST
0000010e: CALLDATASIZE
0000010f: PUSH2 0x0114
00000112: JUMPI
00000113: STOP
00000114: JUMPDEST
00000115: PUSH1 0x00
00000117: DUP1
00000118: REVERT
00000119: JUMPDEST
0000011a: CALLVALUE
0000011b: DUP1
0000011c: ISZERO
0000011d: PUSH2 0x0125
00000120: JUMPI
00000121: PUSH1 0x00
00000123: DUP1
00000124: REVERT
00000125: JUMPDEST
00000126: POP
00000127: PUSH2 0x0149
0000012a: PUSH2 0x0134
0000012d: CALLDATASIZE
0000012e: PUSH1 0x04
00000130: PUSH2 0x0e2b
00000133: JUMP
00000134: JUMPDEST
00000135: PUSH1 0x09
00000137: PUSH1 0x20
00000139: MSTORE
0000013a: PUSH1 0x00
0000013c: SWAP1
0000013d: DUP2
0000013e: MSTORE
0000013f: PUSH1 0x40
00000141: SWAP1
00000142: KECCAK256
00000143: SLOAD
00000144: PUSH1 0xff
00000146: AND
00000147: DUP2
00000148: JUMP
00000149: JUMPDEST
0000014a: PUSH1 0x40
0000014c: MLOAD
0000014d: SWAP1
0000014e: ISZERO
0000014f: ISZERO
00000150: DUP2
00000151: MSTORE
00000152: PUSH1 0x20
00000154: ADD
00000155: JUMPDEST
00000156: PUSH1 0x40
00000158: MLOAD
00000159: DUP1
0000015a: SWAP2
0000015b: SUB
0000015c: SWAP1
0000015d: RETURN
0000015e: JUMPDEST
0000015f: CALLVALUE
00000160: DUP1
00000161: ISZERO
00000162: PUSH2 0x016a
00000165: JUMPI
00000166: PUSH1 0x00
00000168: DUP1
00000169: REVERT
0000016a: JUMPDEST
0000016b: POP
0000016c: PUSH2 0x0173
0000016f: PUSH2 0x0363
00000172: JUMP
00000173: JUMPDEST
00000174: STOP
00000175: JUMPDEST
00000176: CALLVALUE
00000177: DUP1
00000178: ISZERO
00000179: PUSH2 0x0181
0000017c: JUMPI
0000017d: PUSH1 0x00
0000017f: DUP1
00000180: REVERT
00000181: JUMPDEST
00000182: POP
00000183: PUSH2 0x0173
00000186: PUSH2 0x0190
00000189: CALLDATASIZE
0000018a: PUSH1 0x04
0000018c: PUSH2 0x0f12
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH2 0x0388
00000194: JUMP
00000195: JUMPDEST
00000196: CALLVALUE
00000197: DUP1
00000198: ISZERO
00000199: PUSH2 0x01a1
0000019c: JUMPI
0000019d: PUSH1 0x00
0000019f: DUP1
000001a0: REVERT
000001a1: JUMPDEST
000001a2: POP
000001a3: PUSH2 0x0173
000001a6: PUSH2 0x01b0
000001a9: CALLDATASIZE
000001aa: PUSH1 0x04
000001ac: PUSH2 0x10bf
000001af: JUMP
000001b0: JUMPDEST
000001b1: PUSH2 0x06a0
000001b4: JUMP
000001b5: JUMPDEST
000001b6: CALLVALUE
000001b7: DUP1
000001b8: ISZERO
000001b9: PUSH2 0x01c1
000001bc: JUMPI
000001bd: PUSH1 0x00
000001bf: DUP1
000001c0: REVERT
000001c1: JUMPDEST
000001c2: POP
000001c3: PUSH2 0x0173
000001c6: PUSH2 0x01d0
000001c9: CALLDATASIZE
000001ca: PUSH1 0x04
000001cc: PUSH2 0x0e4f
000001cf: JUMP
000001d0: JUMPDEST
000001d1: PUSH2 0x06e5
000001d4: JUMP
000001d5: JUMPDEST
000001d6: CALLVALUE
000001d7: DUP1
000001d8: ISZERO
000001d9: PUSH2 0x01e1
000001dc: JUMPI
000001dd: PUSH1 0x00
000001df: DUP1
000001e0: REVERT
000001e1: JUMPDEST
000001e2: POP
000001e3: PUSH2 0x01eb
000001e6: PUSH1 0x0c
000001e8: SLOAD
000001e9: DUP2
000001ea: JUMP
000001eb: JUMPDEST
000001ec: PUSH1 0x40
000001ee: MLOAD
000001ef: SWAP1
000001f0: DUP2
000001f1: MSTORE
000001f2: PUSH1 0x20
000001f4: ADD
000001f5: PUSH2 0x0155
000001f8: JUMP
000001f9: JUMPDEST
000001fa: CALLVALUE
000001fb: DUP1
000001fc: ISZERO
000001fd: PUSH2 0x0205
00000200: JUMPI
00000201: PUSH1 0x00
00000203: DUP1
00000204: REVERT
00000205: JUMPDEST
00000206: POP
00000207: PUSH2 0x0173
0000020a: PUSH2 0x0214
0000020d: CALLDATASIZE
0000020e: PUSH1 0x04
00000210: PUSH2 0x0e2b
00000213: JUMP
00000214: JUMPDEST
00000215: PUSH2 0x0727
00000218: JUMP
00000219: JUMPDEST
0000021a: CALLVALUE
0000021b: DUP1
0000021c: ISZERO
0000021d: PUSH2 0x0225
00000220: JUMPI
00000221: PUSH1 0x00
00000223: DUP1
00000224: REVERT
00000225: JUMPDEST
00000226: POP
00000227: PUSH2 0x0173
0000022a: PUSH2 0x0234
0000022d: CALLDATASIZE
0000022e: PUSH1 0x04
00000230: PUSH2 0x0e2b
00000233: JUMP
00000234: JUMPDEST
00000235: PUSH2 0x0760
00000238: JUMP
00000239: JUMPDEST
0000023a: CALLVALUE
0000023b: DUP1
0000023c: ISZERO
0000023d: PUSH2 0x0245
00000240: JUMPI
00000241: PUSH1 0x00
00000243: DUP1
00000244: REVERT
00000245: JUMPDEST
00000246: POP
00000247: PUSH2 0x0173
0000024a: PUSH2 0x0254
0000024d: CALLDATASIZE
0000024e: PUSH1 0x04
00000250: PUSH2 0x109d
00000253: JUMP
00000254: JUMPDEST
00000255: PUSH2 0x07a5
00000258: JUMP
00000259: JUMPDEST
0000025a: CALLVALUE
0000025b: DUP1
0000025c: ISZERO
0000025d: PUSH2 0x0265
00000260: JUMPI
00000261: PUSH1 0x00
00000263: DUP1
00000264: REVERT
00000265: JUMPDEST
00000266: POP
00000267: PUSH1 0x08
00000269: SLOAD
0000026a: PUSH2 0x0279
0000026d: SWAP1
0000026e: PUSH1 0x01
00000270: PUSH1 0x01
00000272: PUSH1 0xa0
00000274: SHL
00000275: SUB
00000276: AND
00000277: DUP2
00000278: JUMP
00000279: JUMPDEST
0000027a: PUSH1 0x40
0000027c: MLOAD
0000027d: PUSH1 0x01
0000027f: PUSH1 0x01
00000281: PUSH1 0xa0
00000283: SHL
00000284: SUB
00000285: SWAP1
00000286: SWAP2
00000287: AND
00000288: DUP2
00000289: MSTORE
0000028a: PUSH1 0x20
0000028c: ADD
0000028d: PUSH2 0x0155
00000290: JUMP
00000291: JUMPDEST
00000292: CALLVALUE
00000293: DUP1
00000294: ISZERO
00000295: PUSH2 0x029d
00000298: JUMPI
00000299: PUSH1 0x00
0000029b: DUP1
0000029c: REVERT
0000029d: JUMPDEST
0000029e: POP
0000029f: PUSH2 0x0173
000002a2: PUSH2 0x02ac
000002a5: CALLDATASIZE
000002a6: PUSH1 0x04
000002a8: PUSH2 0x0fc5
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH2 0x07cb
000002b0: JUMP
000002b1: JUMPDEST
000002b2: CALLVALUE
000002b3: DUP1
000002b4: ISZERO
000002b5: PUSH2 0x02bd
000002b8: JUMPI
000002b9: PUSH1 0x00
000002bb: DUP1
000002bc: REVERT
000002bd: JUMPDEST
000002be: POP
000002bf: PUSH2 0x0173
000002c2: PUSH2 0x087a
000002c5: JUMP
000002c6: JUMPDEST
000002c7: CALLVALUE
000002c8: DUP1
000002c9: ISZERO
000002ca: PUSH2 0x02d2
000002cd: JUMPI
000002ce: PUSH1 0x00
000002d0: DUP1
000002d1: REVERT
000002d2: JUMPDEST
000002d3: POP
000002d4: PUSH2 0x0173
000002d7: PUSH2 0x02e1
000002da: CALLDATASIZE
000002db: PUSH1 0x04
000002dd: PUSH2 0x1084
000002e0: JUMP
000002e1: JUMPDEST
000002e2: PUSH2 0x08a7
000002e5: JUMP
000002e6: JUMPDEST
000002e7: PUSH2 0x0173
000002ea: PUSH2 0x02f4
000002ed: CALLDATASIZE
000002ee: PUSH1 0x04
000002f0: PUSH2 0x0e8d
000002f3: JUMP
000002f4: JUMPDEST
000002f5: PUSH2 0x093c
000002f8: JUMP
000002f9: JUMPDEST
000002fa: CALLVALUE
000002fb: DUP1
000002fc: ISZERO
000002fd: PUSH2 0x0305
00000300: JUMPI
00000301: PUSH1 0x00
00000303: DUP1
00000304: REVERT
00000305: JUMPDEST
00000306: POP
00000307: PUSH2 0x01eb
0000030a: PUSH1 0x0b
0000030c: SLOAD
0000030d: DUP2
0000030e: JUMP
0000030f: JUMPDEST
00000310: CALLVALUE
00000311: DUP1
00000312: ISZERO
00000313: PUSH2 0x031b
00000316: JUMPI
00000317: PUSH1 0x00
00000319: DUP1
0000031a: REVERT
0000031b: JUMPDEST
0000031c: POP
0000031d: PUSH1 0x07
0000031f: SLOAD
00000320: PUSH2 0x0279
00000323: SWAP1
00000324: PUSH5 0x0100000000
0000032a: SWAP1
0000032b: DIV
0000032c: PUSH1 0x01
0000032e: PUSH1 0x01
00000330: PUSH1 0xa0
00000332: SHL
00000333: SUB
00000334: AND
00000335: DUP2
00000336: JUMP
00000337: JUMPDEST
00000338: CALLVALUE
00000339: DUP1
0000033a: ISZERO
0000033b: PUSH2 0x0343
0000033e: JUMPI
0000033f: PUSH1 0x00
00000341: DUP1
00000342: REVERT
00000343: JUMPDEST
00000344: POP
00000345: PUSH2 0x01eb
00000348: PUSH1 0x0a
0000034a: SLOAD
0000034b: DUP2
0000034c: JUMP
0000034d: JUMPDEST
0000034e: CALLVALUE
0000034f: DUP1
00000350: ISZERO
00000351: PUSH2 0x0359
00000354: JUMPI
00000355: PUSH1 0x00
00000357: DUP1
00000358: REVERT
00000359: JUMPDEST
0000035a: POP
0000035b: PUSH2 0x01eb
0000035e: PUSH1 0x0d
00000360: SLOAD
00000361: DUP2
00000362: JUMP
00000363: JUMPDEST
00000364: PUSH1 0x00
00000366: SLOAD
00000367: PUSH1 0x01
00000369: PUSH1 0x01
0000036b: PUSH1 0xa0
0000036d: SHL
0000036e: SUB
0000036f: AND
00000370: CALLER
00000371: EQ
00000372: PUSH2 0x037a
00000375: JUMPI
00000376: PUSH1 0x00
00000378: DUP1
00000379: REVERT
0000037a: JUMPDEST
0000037b: PUSH1 0x00
0000037d: SLOAD
0000037e: PUSH1 0x01
00000380: PUSH1 0x01
00000382: PUSH1 0xa0
00000384: SHL
00000385: SUB
00000386: AND
00000387: SELFDESTRUCT
00000388: JUMPDEST
00000389: PUSH1 0x07
0000038b: SLOAD
0000038c: PUSH5 0x0100000000
00000392: SWAP1
00000393: DIV
00000394: PUSH1 0x01
00000396: PUSH1 0x01
00000398: PUSH1 0xa0
0000039a: SHL
0000039b: SUB
0000039c: AND
0000039d: CALLER
0000039e: EQ
0000039f: PUSH2 0x03a7
000003a2: JUMPI
000003a3: PUSH1 0x00
000003a5: DUP1
000003a6: REVERT
000003a7: JUMPDEST
000003a8: PUSH1 0x02
000003aa: SLOAD
000003ab: TIMESTAMP
000003ac: LT
000003ad: ISZERO
000003ae: PUSH2 0x03b6
000003b1: JUMPI
000003b2: PUSH1 0x00
000003b4: DUP1
000003b5: REVERT
000003b6: JUMPDEST
000003b7: PUSH1 0x01
000003b9: SLOAD
000003ba: PUSH2 0x03c3
000003bd: SWAP1
000003be: TIMESTAMP
000003bf: PUSH2 0x116b
000003c2: JUMP
000003c3: JUMPDEST
000003c4: PUSH1 0x02
000003c6: SSTORE
000003c7: PUSH1 0x40
000003c9: DUP1
000003ca: MLOAD
000003cb: PUSH1 0x60
000003cd: DUP2
000003ce: ADD
000003cf: DUP3
000003d0: MSTORE
000003d1: PUSH1 0x00
000003d3: DUP1
000003d4: DUP3
000003d5: MSTORE
000003d6: PUSH1 0x20
000003d8: DUP3
000003d9: ADD
000003da: DUP2
000003db: SWAP1
000003dc: MSTORE
000003dd: SWAP2
000003de: DUP2
000003df: ADD
000003e0: SWAP2
000003e1: SWAP1
000003e2: SWAP2
000003e3: MSTORE
000003e4: PUSH2 0x0407
000003e7: PUSH1 0x40
000003e9: MLOAD
000003ea: DUP1
000003eb: PUSH1 0x60
000003ed: ADD
000003ee: PUSH1 0x40
000003f0: MSTORE
000003f1: DUP1
000003f2: PUSH1 0x00
000003f4: DUP2
000003f5: MSTORE
000003f6: PUSH1 0x20
000003f8: ADD
000003f9: PUSH1 0x00
000003fb: DUP2
000003fc: MSTORE
000003fd: PUSH1 0x20
000003ff: ADD
00000400: PUSH1 0x00
00000402: DUP2
00000403: MSTORE
00000404: POP
00000405: SWAP1
00000406: JUMP
00000407: JUMPDEST
00000408: PUSH1 0x40
0000040a: DUP1
0000040b: MLOAD
0000040c: DUP1
0000040d: DUP3
0000040e: ADD
0000040f: DUP3
00000410: MSTORE
00000411: PUSH1 0x03
00000413: SLOAD
00000414: PUSH1 0x01
00000416: PUSH1 0x01
00000418: PUSH1 0xa0
0000041a: SHL
0000041b: SUB
0000041c: SWAP1
0000041d: DUP2
0000041e: AND
0000041f: DUP3
00000420: MSTORE
00000421: PUSH1 0x04
00000423: SLOAD
00000424: DUP2
00000425: AND
00000426: PUSH1 0x20
00000428: DUP1
00000429: DUP5
0000042a: ADD
0000042b: SWAP2
0000042c: SWAP1
0000042d: SWAP2
0000042e: MSTORE
0000042f: DUP4
00000430: MLOAD
00000431: DUP1
00000432: DUP6
00000433: ADD
00000434: SWAP1
00000435: SWAP5
00000436: MSTORE
00000437: PUSH1 0x05
00000439: SLOAD
0000043a: DUP3
0000043b: AND
0000043c: DUP5
0000043d: MSTORE
0000043e: PUSH1 0x06
00000440: SLOAD
00000441: SWAP1
00000442: SWAP2
00000443: AND
00000444: SWAP1
00000445: DUP4
00000446: ADD
00000447: MSTORE
00000448: SWAP1
00000449: PUSH2 0x0454
0000044c: DUP3
0000044d: DUP6
0000044e: PUSH1 0x01
00000450: PUSH2 0x09c8
00000453: JUMP
00000454: JUMPDEST
00000455: PUSH2 0x0460
00000458: DUP2
00000459: DUP5
0000045a: PUSH1 0x01
0000045c: PUSH2 0x09c8
0000045f: JUMP
00000460: JUMPDEST
00000461: PUSH1 0x00
00000463: PUSH2 0x046c
00000466: DUP6
00000467: DUP6
00000468: PUSH2 0x0b8c
0000046b: JUMP
0000046c: JUMPDEST
0000046d: SWAP1
0000046e: POP
0000046f: DUP10
00000470: DUP7
00000471: EQ
00000472: PUSH2 0x047a
00000475: JUMPI
00000476: PUSH1 0x00
00000478: DUP1
00000479: REVERT
0000047a: JUMPDEST
0000047b: PUSH1 0x00
0000047d: JUMPDEST
0000047e: DUP11
0000047f: DUP2
00000480: LT
00000481: ISZERO
00000482: PUSH2 0x05a9
00000485: JUMPI
00000486: PUSH1 0x00
00000488: DUP13
00000489: DUP13
0000048a: DUP4
0000048b: DUP2
0000048c: DUP2
0000048d: LT
0000048e: PUSH2 0x0499
00000491: JUMPI
00000492: PUSH2 0x0499
00000495: PUSH2 0x12fa
00000498: JUMP
00000499: JUMPDEST
0000049a: SWAP1
0000049b: POP
0000049c: PUSH1 0x20
0000049e: MUL
0000049f: ADD
000004a0: PUSH1 0x20
000004a2: DUP2
000004a3: ADD
000004a4: SWAP1
000004a5: PUSH2 0x04ae
000004a8: SWAP2
000004a9: SWAP1
000004aa: PUSH2 0x0e2b
000004ad: JUMP
000004ae: JUMPDEST
000004af: PUSH1 0x01
000004b1: PUSH1 0x01
000004b3: PUSH1 0xa0
000004b5: SHL
000004b6: SUB
000004b7: DUP2
000004b8: AND
000004b9: PUSH1 0x00
000004bb: SWAP1
000004bc: DUP2
000004bd: MSTORE
000004be: PUSH1 0x09
000004c0: PUSH1 0x20
000004c2: MSTORE
000004c3: PUSH1 0x40
000004c5: SWAP1
000004c6: KECCAK256
000004c7: SLOAD
000004c8: SWAP1
000004c9: SWAP2
000004ca: POP
000004cb: PUSH1 0xff
000004cd: AND
000004ce: PUSH2 0x04d6
000004d1: JUMPI
000004d2: PUSH1 0x00
000004d4: DUP1
000004d5: REVERT
000004d6: JUMPDEST
000004d7: PUSH1 0x00
000004d9: DUP11
000004da: DUP4
000004db: LT
000004dc: PUSH2 0x04e6
000004df: JUMPI
000004e0: PUSH1 0x00
000004e2: PUSH2 0x0500
000004e5: JUMP
000004e6: JUMPDEST
000004e7: DUP12
000004e8: DUP12
000004e9: DUP5
000004ea: DUP2
000004eb: DUP2
000004ec: LT
000004ed: PUSH2 0x04f8
000004f0: JUMPI
000004f1: PUSH2 0x04f8
000004f4: PUSH2 0x12fa
000004f7: JUMP
000004f8: JUMPDEST
000004f9: SWAP1
000004fa: POP
000004fb: PUSH1 0x20
000004fd: MUL
000004fe: ADD
000004ff: CALLDATALOAD
00000500: JUMPDEST
00000501: SWAP1
00000502: POP
00000503: PUSH1 0x00
00000505: DUP3
00000506: PUSH1 0x01
00000508: PUSH1 0x01
0000050a: PUSH1 0xa0
0000050c: SHL
0000050d: SUB
0000050e: AND
0000050f: DUP3
00000510: DUP13
00000511: DUP13
00000512: DUP8
00000513: DUP2
00000514: DUP2
00000515: LT
00000516: PUSH2 0x0521
00000519: JUMPI
0000051a: PUSH2 0x0521
0000051d: PUSH2 0x12fa
00000520: JUMP
00000521: JUMPDEST
00000522: SWAP1
00000523: POP
00000524: PUSH1 0x20
00000526: MUL
00000527: DUP2
00000528: ADD
00000529: SWAP1
0000052a: PUSH2 0x0533
0000052d: SWAP2
0000052e: SWAP1
0000052f: PUSH2 0x1124
00000532: JUMP
00000533: JUMPDEST
00000534: PUSH1 0x40
00000536: MLOAD
00000537: PUSH2 0x0541
0000053a: SWAP3
0000053b: SWAP2
0000053c: SWAP1
0000053d: PUSH2 0x1114
00000540: JUMP
00000541: JUMPDEST
00000542: PUSH1 0x00
00000544: PUSH1 0x40
00000546: MLOAD
00000547: DUP1
00000548: DUP4
00000549: SUB
0000054a: DUP2
0000054b: DUP6
0000054c: DUP8
0000054d: GAS
0000054e: CALL
0000054f: SWAP3
00000550: POP
00000551: POP
00000552: POP
00000553: RETURNDATASIZE
00000554: DUP1
00000555: PUSH1 0x00
00000557: DUP2
00000558: EQ
00000559: PUSH2 0x057e
0000055c: JUMPI
0000055d: PUSH1 0x40
0000055f: MLOAD
00000560: SWAP2
00000561: POP
00000562: PUSH1 0x1f
00000564: NOT
00000565: PUSH1 0x3f
00000567: RETURNDATASIZE
00000568: ADD
00000569: AND
0000056a: DUP3
0000056b: ADD
0000056c: PUSH1 0x40
0000056e: MSTORE
0000056f: RETURNDATASIZE
00000570: DUP3
00000571: MSTORE
00000572: RETURNDATASIZE
00000573: PUSH1 0x00
00000575: PUSH1 0x20
00000577: DUP5
00000578: ADD
00000579: RETURNDATACOPY
0000057a: PUSH2 0x0583
0000057d: JUMP
0000057e: JUMPDEST
0000057f: PUSH1 0x60
00000581: SWAP2
00000582: POP
00000583: JUMPDEST
00000584: POP
00000585: POP
00000586: DUP1
00000587: SWAP2
00000588: POP
00000589: POP
0000058a: DUP1
0000058b: PUSH2 0x0593
0000058e: JUMPI
0000058f: PUSH1 0x00
00000591: DUP1
00000592: REVERT
00000593: JUMPDEST
00000594: POP
00000595: POP
00000596: POP
00000597: DUP1
00000598: DUP1
00000599: PUSH2 0x05a1
0000059c: SWAP1
0000059d: PUSH2 0x12c9
000005a0: JUMP
000005a1: JUMPDEST
000005a2: SWAP2
000005a3: POP
000005a4: POP
000005a5: PUSH2 0x047d
000005a8: JUMP
000005a9: JUMPDEST
000005aa: POP
000005ab: DUP5
000005ac: MLOAD
000005ad: DUP5
000005ae: MLOAD
000005af: PUSH2 0x05ba
000005b2: DUP6
000005b3: DUP9
000005b4: PUSH1 0x00
000005b6: PUSH2 0x09c8
000005b9: JUMP
000005ba: JUMPDEST
000005bb: PUSH2 0x05c6
000005be: DUP5
000005bf: DUP8
000005c0: PUSH1 0x00
000005c2: PUSH2 0x09c8
000005c5: JUMP
000005c6: JUMPDEST
000005c7: PUSH1 0x00
000005c9: PUSH2 0x05d2
000005cc: DUP9
000005cd: DUP9
000005ce: PUSH2 0x0b8c
000005d1: JUMP
000005d2: JUMPDEST
000005d3: PUSH1 0x07
000005d5: SLOAD
000005d6: SWAP1
000005d7: SWAP2
000005d8: POP
000005d9: PUSH1 0x00
000005db: SWAP1
000005dc: PUSH1 0x20
000005de: SWAP1
000005df: PUSH2 0x05ee
000005e2: SWAP1
000005e3: PUSH4 0xffffffff
000005e8: AND
000005e9: DUP8
000005ea: PUSH2 0x1293
000005ed: JUMP
000005ee: JUMPDEST
000005ef: SWAP1
000005f0: SHR
000005f1: SWAP1
000005f2: POP
000005f3: DUP1
000005f4: DUP3
000005f5: LT
000005f6: ISZERO
000005f7: PUSH2 0x05ff
000005fa: JUMPI
000005fb: PUSH1 0x00
000005fd: DUP1
000005fe: REVERT
000005ff: JUMPDEST
00000600: POP
00000601: DUP8
00000602: MLOAD
00000603: DUP4
00000604: LT
00000605: DUP1
00000606: PUSH2 0x060f
00000609: JUMPI
0000060a: POP
0000060b: DUP7
0000060c: MLOAD
0000060d: DUP3
0000060e: LT
0000060f: JUMPDEST
00000610: PUSH2 0x0618
00000613: JUMPI
00000614: PUSH1 0x00
00000616: DUP1
00000617: REVERT
00000618: JUMPDEST
00000619: DUP8
0000061a: MLOAD
0000061b: DUP8
0000061c: MLOAD
0000061d: PUSH1 0x40
0000061f: DUP1
00000620: DUP12
00000621: ADD
00000622: MLOAD
00000623: DUP2
00000624: DUP12
00000625: ADD
00000626: MLOAD
00000627: DUP3
00000628: MLOAD
00000629: DUP9
0000062a: DUP2
0000062b: MSTORE
0000062c: PUSH1 0x20
0000062e: DUP2
0000062f: ADD
00000630: DUP9
00000631: SWAP1
00000632: MSTORE
00000633: DUP1
00000634: DUP5
00000635: ADD
00000636: SWAP6
00000637: SWAP1
00000638: SWAP6
00000639: MSTORE
0000063a: PUSH1 0x60
0000063c: DUP6
0000063d: ADD
0000063e: SWAP4
0000063f: SWAP1
00000640: SWAP4
00000641: MSTORE
00000642: PUSH1 0x80
00000644: DUP5
00000645: ADD
00000646: DUP9
00000647: SWAP1
00000648: MSTORE
00000649: PUSH1 0xa0
0000064b: DUP5
0000064c: ADD
0000064d: DUP6
0000064e: SWAP1
0000064f: MSTORE
00000650: PUSH1 0xc0
00000652: DUP5
00000653: ADD
00000654: MSTORE
00000655: PUSH1 0xe0
00000657: DUP4
00000658: ADD
00000659: SWAP2
0000065a: SWAP1
0000065b: SWAP2
0000065c: MSTORE
0000065d: MLOAD
0000065e: PUSH32 0xf91c1656473b2a03aa3a8669d3cfd947335d6d368ebeb93a8dddeac8cc886a6c
0000067f: SWAP2
00000680: DUP2
00000681: SWAP1
00000682: SUB
00000683: PUSH2 0x0100
00000686: ADD
00000687: SWAP1
00000688: LOG1
00000689: POP
0000068a: POP
0000068b: POP
0000068c: POP
0000068d: POP
0000068e: POP
0000068f: POP
00000690: POP
00000691: PUSH2 0x0698
00000694: PUSH2 0x0bf6
00000697: JUMP
00000698: JUMPDEST
00000699: POP
0000069a: POP
0000069b: POP
0000069c: POP
0000069d: POP
0000069e: POP
0000069f: JUMP
000006a0: JUMPDEST
000006a1: PUSH1 0x00
000006a3: SLOAD
000006a4: PUSH1 0x01
000006a6: PUSH1 0x01
000006a8: PUSH1 0xa0
000006aa: SHL
000006ab: SUB
000006ac: AND
000006ad: CALLER
000006ae: EQ
000006af: PUSH2 0x06b7
000006b2: JUMPI
000006b3: PUSH1 0x00
000006b5: DUP1
000006b6: REVERT
000006b7: JUMPDEST
000006b8: DUP3
000006b9: DUP5
000006ba: GT
000006bb: ISZERO
000006bc: PUSH2 0x06c4
000006bf: JUMPI
000006c0: PUSH1 0x00
000006c2: DUP1
000006c3: REVERT
000006c4: JUMPDEST
000006c5: DUP1
000006c6: DUP3
000006c7: GT
000006c8: ISZERO
000006c9: PUSH2 0x06d1
000006cc: JUMPI
000006cd: PUSH1 0x00
000006cf: DUP1
000006d0: REVERT
000006d1: JUMPDEST
000006d2: PUSH1 0x0a
000006d4: SWAP4
000006d5: SWAP1
000006d6: SWAP4
000006d7: SSTORE
000006d8: PUSH1 0x0b
000006da: SWAP2
000006db: SWAP1
000006dc: SWAP2
000006dd: SSTORE
000006de: PUSH1 0x0c
000006e0: SSTORE
000006e1: PUSH1 0x0d
000006e3: SSTORE
000006e4: JUMP
000006e5: JUMPDEST
000006e6: PUSH1 0x00
000006e8: SLOAD
000006e9: PUSH1 0x01
000006eb: PUSH1 0x01
000006ed: PUSH1 0xa0
000006ef: SHL
000006f0: SUB
000006f1: AND
000006f2: CALLER
000006f3: EQ
000006f4: PUSH2 0x06fc
000006f7: JUMPI
000006f8: PUSH1 0x00
000006fa: DUP1
000006fb: REVERT
000006fc: JUMPDEST
000006fd: PUSH1 0x01
000006ff: PUSH1 0x01
00000701: PUSH1 0xa0
00000703: SHL
00000704: SUB
00000705: SWAP2
00000706: SWAP1
00000707: SWAP2
00000708: AND
00000709: PUSH1 0x00
0000070b: SWAP1
0000070c: DUP2
0000070d: MSTORE
0000070e: PUSH1 0x09
00000710: PUSH1 0x20
00000712: MSTORE
00000713: PUSH1 0x40
00000715: SWAP1
00000716: KECCAK256
00000717: DUP1
00000718: SLOAD
00000719: PUSH1 0xff
0000071b: NOT
0000071c: AND
0000071d: SWAP2
0000071e: ISZERO
0000071f: ISZERO
00000720: SWAP2
00000721: SWAP1
00000722: SWAP2
00000723: OR
00000724: SWAP1
00000725: SSTORE
00000726: JUMP
00000727: JUMPDEST
00000728: PUSH1 0x00
0000072a: SLOAD
0000072b: PUSH1 0x01
0000072d: PUSH1 0x01
0000072f: PUSH1 0xa0
00000731: SHL
00000732: SUB
00000733: AND
00000734: CALLER
00000735: EQ
00000736: PUSH2 0x073e
00000739: JUMPI
0000073a: PUSH1 0x00
0000073c: DUP1
0000073d: REVERT
0000073e: JUMPDEST
0000073f: PUSH1 0x08
00000741: DUP1
00000742: SLOAD
00000743: PUSH1 0x01
00000745: PUSH1 0x01
00000747: PUSH1 0xa0
00000749: SHL
0000074a: SUB
0000074b: NOT
0000074c: AND
0000074d: PUSH1 0x01
0000074f: PUSH1 0x01
00000751: PUSH1 0xa0
00000753: SHL
00000754: SUB
00000755: SWAP3
00000756: SWAP1
00000757: SWAP3
00000758: AND
00000759: SWAP2
0000075a: SWAP1
0000075b: SWAP2
0000075c: OR
0000075d: SWAP1
0000075e: SSTORE
0000075f: JUMP
00000760: JUMPDEST
00000761: PUSH1 0x00
00000763: SLOAD
00000764: PUSH1 0x01
00000766: PUSH1 0x01
00000768: PUSH1 0xa0
0000076a: SHL
0000076b: SUB
0000076c: AND
0000076d: CALLER
0000076e: EQ
0000076f: PUSH2 0x0777
00000772: JUMPI
00000773: PUSH1 0x00
00000775: DUP1
00000776: REVERT
00000777: JUMPDEST
00000778: PUSH1 0x07
0000077a: DUP1
0000077b: SLOAD
0000077c: PUSH1 0x01
0000077e: PUSH1 0x01
00000780: PUSH1 0xa0
00000782: SHL
00000783: SUB
00000784: SWAP1
00000785: SWAP3
00000786: AND
00000787: PUSH5 0x0100000000
0000078d: MUL
0000078e: PUSH5 0x0100000000
00000794: PUSH1 0x01
00000796: PUSH1 0xc0
00000798: SHL
00000799: SUB
0000079a: NOT
0000079b: SWAP1
0000079c: SWAP3
0000079d: AND
0000079e: SWAP2
0000079f: SWAP1
000007a0: SWAP2
000007a1: OR
000007a2: SWAP1
000007a3: SSTORE
000007a4: JUMP
000007a5: JUMPDEST
000007a6: PUSH1 0x00
000007a8: SLOAD
000007a9: PUSH1 0x01
000007ab: PUSH1 0x01
000007ad: PUSH1 0xa0
000007af: SHL
000007b0: SUB
000007b1: AND
000007b2: CALLER
000007b3: EQ
000007b4: PUSH2 0x07bc
000007b7: JUMPI
000007b8: PUSH1 0x00
000007ba: DUP1
000007bb: REVERT
000007bc: JUMPDEST
000007bd: PUSH1 0x01
000007bf: SWAP2
000007c0: SWAP1
000007c1: SWAP2
000007c2: SSTORE
000007c3: PUSH1 0x02
000007c5: SSTORE
000007c6: JUMP
000007c7: JUMPDEST
000007c8: POP
000007c9: POP
000007ca: JUMP
000007cb: JUMPDEST
000007cc: PUSH1 0x00
000007ce: SLOAD
000007cf: PUSH1 0x01
000007d1: PUSH1 0x01
000007d3: PUSH1 0xa0
000007d5: SHL
000007d6: SUB
000007d7: AND
000007d8: CALLER
000007d9: EQ
000007da: PUSH2 0x07e2
000007dd: JUMPI
000007de: PUSH1 0x00
000007e0: DUP1
000007e1: REVERT
000007e2: JUMPDEST
000007e3: PUSH2 0x0875
000007e6: PUSH2 0x07f4
000007e9: CALLDATASIZE
000007ea: DUP6
000007eb: SWAP1
000007ec: SUB
000007ed: DUP6
000007ee: ADD
000007ef: DUP6
000007f0: PUSH2 0x1017
000007f3: JUMP
000007f4: JUMPDEST
000007f5: PUSH2 0x0803
000007f8: CALLDATASIZE
000007f9: DUP6
000007fa: SWAP1
000007fb: SUB
000007fc: DUP6
000007fd: ADD
000007fe: DUP6
000007ff: PUSH2 0x1017
00000802: JUMP
00000803: JUMPDEST
00000804: DUP2
00000805: MLOAD
00000806: PUSH1 0x03
00000808: DUP1
00000809: SLOAD
0000080a: PUSH1 0x01
0000080c: PUSH1 0x01
0000080e: PUSH1 0xa0
00000810: SHL
00000811: SUB
00000812: NOT
00000813: SWAP1
00000814: DUP2
00000815: AND
00000816: PUSH1 0x01
00000818: PUSH1 0x01
0000081a: PUSH1 0xa0
0000081c: SHL
0000081d: SUB
0000081e: SWAP4
0000081f: DUP5
00000820: AND
00000821: OR
00000822: SWAP1
00000823: SWAP2
00000824: SSTORE
00000825: PUSH1 0x20
00000827: SWAP4
00000828: DUP5
00000829: ADD
0000082a: MLOAD
0000082b: PUSH1 0x04
0000082d: DUP1
0000082e: SLOAD
0000082f: DUP4
00000830: AND
00000831: SWAP2
00000832: DUP5
00000833: AND
00000834: SWAP2
00000835: SWAP1
00000836: SWAP2
00000837: OR
00000838: SWAP1
00000839: SSTORE
0000083a: DUP3
0000083b: MLOAD
0000083c: PUSH1 0x05
0000083e: DUP1
0000083f: SLOAD
00000840: DUP4
00000841: AND
00000842: SWAP2
00000843: DUP5
00000844: AND
00000845: SWAP2
00000846: SWAP1
00000847: SWAP2
00000848: OR
00000849: SWAP1
0000084a: SSTORE
0000084b: SWAP2
0000084c: SWAP1
0000084d: SWAP3
0000084e: ADD
0000084f: MLOAD
00000850: PUSH1 0x06
00000852: DUP1
00000853: SLOAD
00000854: SWAP1
00000855: SWAP3
00000856: AND
00000857: SWAP3
00000858: AND
00000859: SWAP2
0000085a: SWAP1
0000085b: SWAP2
0000085c: OR
0000085d: SWAP1
0000085e: SSTORE
0000085f: PUSH1 0x07
00000861: DUP1
00000862: SLOAD
00000863: PUSH4 0xffffffff
00000868: NOT
00000869: AND
0000086a: PUSH4 0xffffffff
0000086f: DUP5
00000870: AND
00000871: OR
00000872: SWAP1
00000873: SSTORE
00000874: JUMP
00000875: JUMPDEST
00000876: POP
00000877: POP
00000878: POP
00000879: JUMP
0000087a: JUMPDEST
0000087b: PUSH1 0x08
0000087d: SLOAD
0000087e: PUSH1 0x01
00000880: PUSH1 0x01
00000882: PUSH1 0xa0
00000884: SHL
00000885: SUB
00000886: AND
00000887: CALLER
00000888: EQ
00000889: PUSH2 0x0891
0000088c: JUMPI
0000088d: PUSH1 0x00
0000088f: DUP1
00000890: REVERT
00000891: JUMPDEST
00000892: PUSH1 0x07
00000894: DUP1
00000895: SLOAD
00000896: PUSH5 0x0100000000
0000089c: PUSH1 0x01
0000089e: PUSH1 0xc0
000008a0: SHL
000008a1: SUB
000008a2: NOT
000008a3: AND
000008a4: SWAP1
000008a5: SSTORE
000008a6: JUMP
000008a7: JUMPDEST
000008a8: PUSH1 0x00
000008aa: SLOAD
000008ab: PUSH1 0x01
000008ad: PUSH1 0x01
000008af: PUSH1 0xa0
000008b1: SHL
000008b2: SUB
000008b3: AND
000008b4: CALLER
000008b5: EQ
000008b6: PUSH2 0x08be
000008b9: JUMPI
000008ba: PUSH1 0x00
000008bc: DUP1
000008bd: REVERT
000008be: JUMPDEST
000008bf: SELFBALANCE
000008c0: DUP2
000008c1: LT
000008c2: ISZERO
000008c3: PUSH2 0x08ff
000008c6: JUMPI
000008c7: PUSH1 0x00
000008c9: DUP1
000008ca: SLOAD
000008cb: PUSH1 0x40
000008cd: MLOAD
000008ce: PUSH1 0x01
000008d0: PUSH1 0x01
000008d2: PUSH1 0xa0
000008d4: SHL
000008d5: SUB
000008d6: SWAP1
000008d7: SWAP2
000008d8: AND
000008d9: SWAP2
000008da: DUP4
000008db: ISZERO
000008dc: PUSH2 0x08fc
000008df: MUL
000008e0: SWAP2
000008e1: DUP5
000008e2: SWAP2
000008e3: DUP2
000008e4: DUP2
000008e5: DUP2
000008e6: DUP6
000008e7: DUP9
000008e8: DUP9
000008e9: CALL
000008ea: SWAP4
000008eb: POP
000008ec: POP
000008ed: POP
000008ee: POP
000008ef: ISZERO
000008f0: DUP1
000008f1: ISZERO
000008f2: PUSH2 0x07c7
000008f5: JUMPI
000008f6: RETURNDATASIZE
000008f7: PUSH1 0x00
000008f9: DUP1
000008fa: RETURNDATACOPY
000008fb: RETURNDATASIZE
000008fc: PUSH1 0x00
000008fe: REVERT
000008ff: JUMPDEST
00000900: PUSH1 0x00
00000902: DUP1
00000903: SLOAD
00000904: PUSH1 0x40
00000906: MLOAD
00000907: PUSH1 0x01
00000909: PUSH1 0x01
0000090b: PUSH1 0xa0
0000090d: SHL
0000090e: SUB
0000090f: SWAP1
00000910: SWAP2
00000911: AND
00000912: SWAP2
00000913: SELFBALANCE
00000914: DUP1
00000915: ISZERO
00000916: PUSH2 0x08fc
00000919: MUL
0000091a: SWAP3
0000091b: SWAP1
0000091c: SWAP2
0000091d: DUP2
0000091e: DUP2
0000091f: DUP2
00000920: DUP6
00000921: DUP9
00000922: DUP9
00000923: CALL
00000924: SWAP4
00000925: POP
00000926: POP
00000927: POP
00000928: POP
00000929: ISZERO
0000092a: DUP1
0000092b: ISZERO
0000092c: PUSH2 0x07c7
0000092f: JUMPI
00000930: RETURNDATASIZE
00000931: PUSH1 0x00
00000933: DUP1
00000934: RETURNDATACOPY
00000935: RETURNDATASIZE
00000936: PUSH1 0x00
00000938: REVERT
00000939: JUMPDEST
0000093a: POP
0000093b: JUMP
0000093c: JUMPDEST
0000093d: PUSH1 0x00
0000093f: SLOAD
00000940: PUSH1 0x01
00000942: PUSH1 0x01
00000944: PUSH1 0xa0
00000946: SHL
00000947: SUB
00000948: AND
00000949: CALLER
0000094a: EQ
0000094b: PUSH2 0x0953
0000094e: JUMPI
0000094f: PUSH1 0x00
00000951: DUP1
00000952: REVERT
00000953: JUMPDEST
00000954: PUSH1 0x00
00000956: DUP4
00000957: PUSH1 0x01
00000959: PUSH1 0x01
0000095b: PUSH1 0xa0
0000095d: SHL
0000095e: SUB
0000095f: AND
00000960: CALLVALUE
00000961: DUP5
00000962: DUP5
00000963: PUSH1 0x40
00000965: MLOAD
00000966: PUSH2 0x0970
00000969: SWAP3
0000096a: SWAP2
0000096b: SWAP1
0000096c: PUSH2 0x1114
0000096f: JUMP
00000970: JUMPDEST
00000971: PUSH1 0x00
00000973: PUSH1 0x40
00000975: MLOAD
00000976: DUP1
00000977: DUP4
00000978: SUB
00000979: DUP2
0000097a: DUP6
0000097b: DUP8
0000097c: GAS
0000097d: CALL
0000097e: SWAP3
0000097f: POP
00000980: POP
00000981: POP
00000982: RETURNDATASIZE
00000983: DUP1
00000984: PUSH1 0x00
00000986: DUP2
00000987: EQ
00000988: PUSH2 0x09ad
0000098b: JUMPI
0000098c: PUSH1 0x40
0000098e: MLOAD
0000098f: SWAP2
00000990: POP
00000991: PUSH1 0x1f
00000993: NOT
00000994: PUSH1 0x3f
00000996: RETURNDATASIZE
00000997: ADD
00000998: AND
00000999: DUP3
0000099a: ADD
0000099b: PUSH1 0x40
0000099d: MSTORE
0000099e: RETURNDATASIZE
0000099f: DUP3
000009a0: MSTORE
000009a1: RETURNDATASIZE
000009a2: PUSH1 0x00
000009a4: PUSH1 0x20
000009a6: DUP5
000009a7: ADD
000009a8: RETURNDATACOPY
000009a9: PUSH2 0x09b2
000009ac: JUMP
000009ad: JUMPDEST
000009ae: PUSH1 0x60
000009b0: SWAP2
000009b1: POP
000009b2: JUMPDEST
000009b3: POP
000009b4: POP
000009b5: DUP1
000009b6: SWAP2
000009b7: POP
000009b8: POP
000009b9: DUP1
000009ba: PUSH2 0x09c2
000009bd: JUMPI
000009be: PUSH1 0x00
000009c0: DUP1
000009c1: REVERT
000009c2: JUMPDEST
000009c3: POP
000009c4: POP
000009c5: POP
000009c6: POP
000009c7: JUMP
000009c8: JUMPDEST
000009c9: DUP3
000009ca: MLOAD
000009cb: PUSH1 0x01
000009cd: PUSH1 0x01
000009cf: PUSH1 0xa0
000009d1: SHL
000009d2: SUB
000009d3: AND
000009d4: PUSH2 0x09dc
000009d7: JUMPI
000009d8: POP
000009d9: POP
000009da: POP
000009db: JUMP
000009dc: JUMPDEST
000009dd: DUP3
000009de: MLOAD
000009df: PUSH1 0x40
000009e1: MLOAD
000009e2: PUSH4 0x70a08231
000009e7: PUSH1 0xe0
000009e9: SHL
000009ea: DUP2
000009eb: MSTORE
000009ec: ADDRESS
000009ed: PUSH1 0x04
000009ef: DUP3
000009f0: ADD
000009f1: MSTORE
000009f2: PUSH1 0x01
000009f4: PUSH1 0x01
000009f6: PUSH1 0xa0
000009f8: SHL
000009f9: SUB
000009fa: SWAP1
000009fb: SWAP2
000009fc: AND
000009fd: SWAP1
000009fe: PUSH4 0x70a08231
00000a03: SWAP1
00000a04: PUSH1 0x24
00000a06: ADD
00000a07: PUSH1 0x20
00000a09: PUSH1 0x40
00000a0b: MLOAD
00000a0c: DUP1
00000a0d: DUP4
00000a0e: SUB
00000a0f: DUP2
00000a10: DUP7
00000a11: DUP1
00000a12: EXTCODESIZE
00000a13: ISZERO
00000a14: DUP1
00000a15: ISZERO
00000a16: PUSH2 0x0a1e
00000a19: JUMPI
00000a1a: PUSH1 0x00
00000a1c: DUP1
00000a1d: REVERT
00000a1e: JUMPDEST
00000a1f: POP
00000a20: GAS
00000a21: STATICCALL
00000a22: ISZERO
00000a23: DUP1
00000a24: ISZERO
00000a25: PUSH2 0x0a32
00000a28: JUMPI
00000a29: RETURNDATASIZE
00000a2a: PUSH1 0x00
00000a2c: DUP1
00000a2d: RETURNDATACOPY
00000a2e: RETURNDATASIZE
00000a2f: PUSH1 0x00
00000a31: REVERT
00000a32: JUMPDEST
00000a33: POP
00000a34: POP
00000a35: POP
00000a36: POP
00000a37: PUSH1 0x40
00000a39: MLOAD
00000a3a: RETURNDATASIZE
00000a3b: PUSH1 0x1f
00000a3d: NOT
00000a3e: PUSH1 0x1f
00000a40: DUP3
00000a41: ADD
00000a42: AND
00000a43: DUP3
00000a44: ADD
00000a45: DUP1
00000a46: PUSH1 0x40
00000a48: MSTORE
00000a49: POP
00000a4a: DUP2
00000a4b: ADD
00000a4c: SWAP1
00000a4d: PUSH2 0x0a56
00000a50: SWAP2
00000a51: SWAP1
00000a52: PUSH2 0x0fac
00000a55: JUMP
00000a56: JUMPDEST
00000a57: DUP3
00000a58: MSTORE
00000a59: DUP1
00000a5a: ISZERO
00000a5b: PUSH2 0x0875
00000a5e: JUMPI
00000a5f: PUSH1 0x20
00000a61: DUP4
00000a62: ADD
00000a63: MLOAD
00000a64: PUSH1 0x01
00000a66: PUSH1 0x01
00000a68: PUSH1 0xa0
00000a6a: SHL
00000a6b: SUB
00000a6c: AND
00000a6d: ISZERO
00000a6e: PUSH2 0x0b79
00000a71: JUMPI
00000a72: DUP3
00000a73: PUSH1 0x20
00000a75: ADD
00000a76: MLOAD
00000a77: PUSH1 0x01
00000a79: PUSH1 0x01
00000a7b: PUSH1 0xa0
00000a7d: SHL
00000a7e: SUB
00000a7f: AND
00000a80: PUSH4 0x50d25bcd
00000a85: PUSH1 0x40
00000a87: MLOAD
00000a88: DUP2
00000a89: PUSH4 0xffffffff
00000a8e: AND
00000a8f: PUSH1 0xe0
00000a91: SHL
00000a92: DUP2
00000a93: MSTORE
00000a94: PUSH1 0x04
00000a96: ADD
00000a97: PUSH1 0x20
00000a99: PUSH1 0x40
00000a9b: MLOAD
00000a9c: DUP1
00000a9d: DUP4
00000a9e: SUB
00000a9f: DUP2
00000aa0: DUP7
00000aa1: DUP1
00000aa2: EXTCODESIZE
00000aa3: ISZERO
00000aa4: DUP1
00000aa5: ISZERO
00000aa6: PUSH2 0x0aae
00000aa9: JUMPI
00000aaa: PUSH1 0x00
00000aac: DUP1
00000aad: REVERT
00000aae: JUMPDEST
00000aaf: POP
00000ab0: GAS
00000ab1: STATICCALL
00000ab2: ISZERO
00000ab3: DUP1
00000ab4: ISZERO
00000ab5: PUSH2 0x0ac2
00000ab8: JUMPI
00000ab9: RETURNDATASIZE
00000aba: PUSH1 0x00
00000abc: DUP1
00000abd: RETURNDATACOPY
00000abe: RETURNDATASIZE
00000abf: PUSH1 0x00
00000ac1: REVERT
00000ac2: JUMPDEST
00000ac3: POP
00000ac4: POP
00000ac5: POP
00000ac6: POP
00000ac7: PUSH1 0x40
00000ac9: MLOAD
00000aca: RETURNDATASIZE
00000acb: PUSH1 0x1f
00000acd: NOT
00000ace: PUSH1 0x1f
00000ad0: DUP3
00000ad1: ADD
00000ad2: AND
00000ad3: DUP3
00000ad4: ADD
00000ad5: DUP1
00000ad6: PUSH1 0x40
00000ad8: MSTORE
00000ad9: POP
00000ada: DUP2
00000adb: ADD
00000adc: SWAP1
00000add: PUSH2 0x0ae6
00000ae0: SWAP2
00000ae1: SWAP1
00000ae2: PUSH2 0x0fac
00000ae5: JUMP
00000ae6: JUMPDEST
00000ae7: DUP3
00000ae8: PUSH1 0x40
00000aea: ADD
00000aeb: DUP2
00000aec: DUP2
00000aed: MSTORE
00000aee: POP
00000aef: POP
00000af0: DUP3
00000af1: PUSH1 0x00
00000af3: ADD
00000af4: MLOAD
00000af5: PUSH1 0x01
00000af7: PUSH1 0x01
00000af9: PUSH1 0xa0
00000afb: SHL
00000afc: SUB
00000afd: AND
00000afe: PUSH4 0x313ce567
00000b03: PUSH1 0x40
00000b05: MLOAD
00000b06: DUP2
00000b07: PUSH4 0xffffffff
00000b0c: AND
00000b0d: PUSH1 0xe0
00000b0f: SHL
00000b10: DUP2
00000b11: MSTORE
00000b12: PUSH1 0x04
00000b14: ADD
00000b15: PUSH1 0x20
00000b17: PUSH1 0x40
00000b19: MLOAD
00000b1a: DUP1
00000b1b: DUP4
00000b1c: SUB
00000b1d: DUP2
00000b1e: DUP7
00000b1f: DUP1
00000b20: EXTCODESIZE
00000b21: ISZERO
00000b22: DUP1
00000b23: ISZERO
00000b24: PUSH2 0x0b2c
00000b27: JUMPI
00000b28: PUSH1 0x00
00000b2a: DUP1
00000b2b: REVERT
00000b2c: JUMPDEST
00000b2d: POP
00000b2e: GAS
00000b2f: STATICCALL
00000b30: ISZERO
00000b31: DUP1
00000b32: ISZERO
00000b33: PUSH2 0x0b40
00000b36: JUMPI
00000b37: RETURNDATASIZE
00000b38: PUSH1 0x00
00000b3a: DUP1
00000b3b: RETURNDATACOPY
00000b3c: RETURNDATASIZE
00000b3d: PUSH1 0x00
00000b3f: REVERT
00000b40: JUMPDEST
00000b41: POP
00000b42: POP
00000b43: POP
00000b44: POP
00000b45: PUSH1 0x40
00000b47: MLOAD
00000b48: RETURNDATASIZE
00000b49: PUSH1 0x1f
00000b4b: NOT
00000b4c: PUSH1 0x1f
00000b4e: DUP3
00000b4f: ADD
00000b50: AND
00000b51: DUP3
00000b52: ADD
00000b53: DUP1
00000b54: PUSH1 0x40
00000b56: MSTORE
00000b57: POP
00000b58: DUP2
00000b59: ADD
00000b5a: SWAP1
00000b5b: PUSH2 0x0b64
00000b5e: SWAP2
00000b5f: SWAP1
00000b60: PUSH2 0x10f1
00000b63: JUMP
00000b64: JUMPDEST
00000b65: PUSH2 0x0b6f
00000b68: SWAP1
00000b69: PUSH1 0x0a
00000b6b: PUSH2 0x11e8
00000b6e: JUMP
00000b6f: JUMPDEST
00000b70: PUSH1 0x20
00000b72: DUP4
00000b73: ADD
00000b74: MSTORE
00000b75: POP
00000b76: POP
00000b77: POP
00000b78: JUMP
00000b79: JUMPDEST
00000b7a: PUSH1 0x01
00000b7c: PUSH1 0x40
00000b7e: DUP4
00000b7f: ADD
00000b80: DUP2
00000b81: SWAP1
00000b82: MSTORE
00000b83: PUSH1 0x20
00000b85: DUP4
00000b86: ADD
00000b87: MSTORE
00000b88: POP
00000b89: POP
00000b8a: POP
00000b8b: JUMP
00000b8c: JUMPDEST
00000b8d: PUSH1 0x20
00000b8f: DUP3
00000b90: ADD
00000b91: MLOAD
00000b92: PUSH1 0x40
00000b94: DUP4
00000b95: ADD
00000b96: MLOAD
00000b97: DUP4
00000b98: MLOAD
00000b99: PUSH1 0x00
00000b9b: SWAP3
00000b9c: SELFBALANCE
00000b9d: SWAP3
00000b9e: SWAP1
00000b9f: SWAP2
00000ba0: PUSH2 0x0ba9
00000ba3: SWAP2
00000ba4: SWAP1
00000ba5: PUSH2 0x1293
00000ba8: JUMP
00000ba9: JUMPDEST
00000baa: PUSH2 0x0bb3
00000bad: SWAP2
00000bae: SWAP1
00000baf: PUSH2 0x1183
00000bb2: JUMP
00000bb3: JUMPDEST
00000bb4: PUSH2 0x0bbd
00000bb7: SWAP1
00000bb8: DUP3
00000bb9: PUSH2 0x116b
00000bbc: JUMP
00000bbd: JUMPDEST
00000bbe: SWAP1
00000bbf: POP
00000bc0: DUP3
00000bc1: PUSH1 0x20
00000bc3: ADD
00000bc4: MLOAD
00000bc5: DUP4
00000bc6: PUSH1 0x40
00000bc8: ADD
00000bc9: MLOAD
00000bca: DUP5
00000bcb: PUSH1 0x00
00000bcd: ADD
00000bce: MLOAD
00000bcf: PUSH2 0x0bd8
00000bd2: SWAP2
00000bd3: SWAP1
00000bd4: PUSH2 0x1293
00000bd7: JUMP
00000bd8: JUMPDEST
00000bd9: PUSH2 0x0be2
00000bdc: SWAP2
00000bdd: SWAP1
00000bde: PUSH2 0x1183
00000be1: JUMP
00000be2: JUMPDEST
00000be3: PUSH2 0x0bec
00000be6: SWAP1
00000be7: DUP3
00000be8: PUSH2 0x116b
00000beb: JUMP
00000bec: JUMPDEST
00000bed: SWAP2
00000bee: POP
00000bef: POP
00000bf0: JUMPDEST
00000bf1: SWAP3
00000bf2: SWAP2
00000bf3: POP
00000bf4: POP
00000bf5: JUMP
00000bf6: JUMPDEST
00000bf7: PUSH1 0x0a
00000bf9: SLOAD
00000bfa: PUSH1 0x00
00000bfc: SWAP1
00000bfd: DUP1
00000bfe: ISZERO
00000bff: PUSH2 0x0c66
00000c02: JUMPI
00000c03: CALLER
00000c04: BALANCE
00000c05: DUP2
00000c06: DUP2
00000c07: LT
00000c08: ISZERO
00000c09: PUSH2 0x0c64
00000c0c: JUMPI
00000c0d: SELFBALANCE
00000c0e: SWAP3
00000c0f: POP
00000c10: PUSH1 0x00
00000c12: PUSH2 0x0c1f
00000c15: DUP3
00000c16: DUP6
00000c17: DUP6
00000c18: PUSH1 0x0b
00000c1a: SLOAD
00000c1b: PUSH2 0x0d84
00000c1e: JUMP
00000c1f: JUMPDEST
00000c20: SWAP1
00000c21: POP
00000c22: DUP1
00000c23: ISZERO
00000c24: PUSH2 0x0c62
00000c27: JUMPI
00000c28: PUSH1 0x40
00000c2a: MLOAD
00000c2b: CALLER
00000c2c: SWAP1
00000c2d: DUP3
00000c2e: ISZERO
00000c2f: PUSH2 0x08fc
00000c32: MUL
00000c33: SWAP1
00000c34: DUP4
00000c35: SWAP1
00000c36: PUSH1 0x00
00000c38: DUP2
00000c39: DUP2
00000c3a: DUP2
00000c3b: DUP6
00000c3c: DUP9
00000c3d: DUP9
00000c3e: CALL
00000c3f: SWAP4
00000c40: POP
00000c41: POP
00000c42: POP
00000c43: POP
00000c44: ISZERO
00000c45: DUP1
00000c46: ISZERO
00000c47: PUSH2 0x0c54
00000c4a: JUMPI
00000c4b: RETURNDATASIZE
00000c4c: PUSH1 0x00
00000c4e: DUP1
00000c4f: RETURNDATACOPY
00000c50: RETURNDATASIZE
00000c51: PUSH1 0x00
00000c53: REVERT
00000c54: JUMPDEST
00000c55: POP
00000c56: PUSH2 0x0c5f
00000c59: DUP2
00000c5a: DUP6
00000c5b: PUSH2 0x12b2
00000c5e: JUMP
00000c5f: JUMPDEST
00000c60: SWAP4
00000c61: POP
00000c62: JUMPDEST
00000c63: POP
00000c64: JUMPDEST
00000c65: POP
00000c66: JUMPDEST
00000c67: POP
00000c68: PUSH1 0x0c
00000c6a: SLOAD
00000c6b: DUP1
00000c6c: ISZERO
00000c6d: PUSH2 0x07c7
00000c70: JUMPI
00000c71: DUP2
00000c72: PUSH2 0x0c79
00000c75: JUMPI
00000c76: SELFBALANCE
00000c77: SWAP2
00000c78: POP
00000c79: JUMPDEST
00000c7a: DUP1
00000c7b: DUP3
00000c7c: LT
00000c7d: ISZERO
00000c7e: PUSH2 0x07c7
00000c81: JUMPI
00000c82: PUSH1 0x40
00000c84: MLOAD
00000c85: PUSH4 0x70a08231
00000c8a: PUSH1 0xe0
00000c8c: SHL
00000c8d: DUP2
00000c8e: MSTORE
00000c8f: ADDRESS
00000c90: PUSH1 0x04
00000c92: DUP3
00000c93: ADD
00000c94: MSTORE
00000c95: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000caa: SWAP1
00000cab: PUSH1 0x00
00000cad: SWAP1
00000cae: DUP3
00000caf: SWAP1
00000cb0: PUSH4 0x70a08231
00000cb5: SWAP1
00000cb6: PUSH1 0x24
00000cb8: ADD
00000cb9: PUSH1 0x20
00000cbb: PUSH1 0x40
00000cbd: MLOAD
00000cbe: DUP1
00000cbf: DUP4
00000cc0: SUB
00000cc1: DUP2
00000cc2: DUP7
00000cc3: DUP1
00000cc4: EXTCODESIZE
00000cc5: ISZERO
00000cc6: DUP1
00000cc7: ISZERO
00000cc8: PUSH2 0x0cd0
00000ccb: JUMPI
00000ccc: PUSH1 0x00
00000cce: DUP1
00000ccf: REVERT
00000cd0: JUMPDEST
00000cd1: POP
00000cd2: GAS
00000cd3: STATICCALL
00000cd4: ISZERO
00000cd5: DUP1
00000cd6: ISZERO
00000cd7: PUSH2 0x0ce4
00000cda: JUMPI
00000cdb: RETURNDATASIZE
00000cdc: PUSH1 0x00
00000cde: DUP1
00000cdf: RETURNDATACOPY
00000ce0: RETURNDATASIZE
00000ce1: PUSH1 0x00
00000ce3: REVERT
00000ce4: JUMPDEST
00000ce5: POP
00000ce6: POP
00000ce7: POP
00000ce8: POP
00000ce9: PUSH1 0x40
00000ceb: MLOAD
00000cec: RETURNDATASIZE
00000ced: PUSH1 0x1f
00000cef: NOT
00000cf0: PUSH1 0x1f
00000cf2: DUP3
00000cf3: ADD
00000cf4: AND
00000cf5: DUP3
00000cf6: ADD
00000cf7: DUP1
00000cf8: PUSH1 0x40
00000cfa: MSTORE
00000cfb: POP
00000cfc: DUP2
00000cfd: ADD
00000cfe: SWAP1
00000cff: PUSH2 0x0d08
00000d02: SWAP2
00000d03: SWAP1
00000d04: PUSH2 0x0fac
00000d07: JUMP
00000d08: JUMPDEST
00000d09: SWAP1
00000d0a: POP
00000d0b: PUSH1 0x00
00000d0d: PUSH2 0x0d1a
00000d10: DUP6
00000d11: DUP4
00000d12: DUP7
00000d13: PUSH1 0x0d
00000d15: SLOAD
00000d16: PUSH2 0x0d84
00000d19: JUMP
00000d1a: JUMPDEST
00000d1b: SWAP1
00000d1c: POP
00000d1d: DUP1
00000d1e: ISZERO
00000d1f: PUSH2 0x0d7d
00000d22: JUMPI
00000d23: PUSH1 0x40
00000d25: MLOAD
00000d26: PUSH4 0x2e1a7d4d
00000d2b: PUSH1 0xe0
00000d2d: SHL
00000d2e: DUP2
00000d2f: MSTORE
00000d30: PUSH1 0x04
00000d32: DUP2
00000d33: ADD
00000d34: DUP3
00000d35: SWAP1
00000d36: MSTORE
00000d37: PUSH1 0x01
00000d39: PUSH1 0x01
00000d3b: PUSH1 0xa0
00000d3d: SHL
00000d3e: SUB
00000d3f: DUP5
00000d40: AND
00000d41: SWAP1
00000d42: PUSH4 0x2e1a7d4d
00000d47: SWAP1
00000d48: PUSH1 0x24
00000d4a: ADD
00000d4b: PUSH1 0x00
00000d4d: PUSH1 0x40
00000d4f: MLOAD
00000d50: DUP1
00000d51: DUP4
00000d52: SUB
00000d53: DUP2
00000d54: PUSH1 0x00
00000d56: DUP8
00000d57: DUP1
00000d58: EXTCODESIZE
00000d59: ISZERO
00000d5a: DUP1
00000d5b: ISZERO
00000d5c: PUSH2 0x0d64
00000d5f: JUMPI
00000d60: PUSH1 0x00
00000d62: DUP1
00000d63: REVERT
00000d64: JUMPDEST
00000d65: POP
00000d66: GAS
00000d67: CALL
00000d68: ISZERO
00000d69: DUP1
00000d6a: ISZERO
00000d6b: PUSH2 0x0d78
00000d6e: JUMPI
00000d6f: RETURNDATASIZE
00000d70: PUSH1 0x00
00000d72: DUP1
00000d73: RETURNDATACOPY
00000d74: RETURNDATASIZE
00000d75: PUSH1 0x00
00000d77: REVERT
00000d78: JUMPDEST
00000d79: POP
00000d7a: POP
00000d7b: POP
00000d7c: POP
00000d7d: JUMPDEST
00000d7e: POP
00000d7f: POP
00000d80: POP
00000d81: POP
00000d82: POP
00000d83: JUMP
00000d84: JUMPDEST
00000d85: PUSH1 0x00
00000d87: DUP3
00000d88: PUSH2 0x0d91
00000d8b: DUP6
00000d8c: DUP8
00000d8d: PUSH2 0x116b
00000d90: JUMP
00000d91: JUMPDEST
00000d92: LT
00000d93: PUSH2 0x0dbb
00000d96: JUMPI
00000d97: PUSH1 0x00
00000d99: PUSH2 0x0da2
00000d9c: DUP7
00000d9d: DUP5
00000d9e: PUSH2 0x12b2
00000da1: JUMP
00000da2: JUMPDEST
00000da3: SWAP1
00000da4: POP
00000da5: DUP5
00000da6: DUP2
00000da7: GT
00000da8: PUSH2 0x0db1
00000dab: JUMPI
00000dac: DUP1
00000dad: PUSH2 0x0db3
00000db0: JUMP
00000db1: JUMPDEST
00000db2: DUP5
00000db3: JUMPDEST
00000db4: SWAP2
00000db5: POP
00000db6: POP
00000db7: PUSH2 0x0dbf
00000dba: JUMP
00000dbb: JUMPDEST
00000dbc: POP
00000dbd: PUSH1 0x00
00000dbf: JUMPDEST
00000dc0: SWAP5
00000dc1: SWAP4
00000dc2: POP
00000dc3: POP
00000dc4: POP
00000dc5: POP
00000dc6: JUMP
00000dc7: JUMPDEST
00000dc8: PUSH1 0x00
00000dca: DUP1
00000dcb: DUP4
00000dcc: PUSH1 0x1f
00000dce: DUP5
00000dcf: ADD
00000dd0: SLT
00000dd1: PUSH2 0x0dd9
00000dd4: JUMPI
00000dd5: PUSH1 0x00
00000dd7: DUP1
00000dd8: REVERT
00000dd9: JUMPDEST
00000dda: POP
00000ddb: DUP2
00000ddc: CALLDATALOAD
00000ddd: PUSH8 0xffffffffffffffff
00000de6: DUP2
00000de7: GT
00000de8: ISZERO
00000de9: PUSH2 0x0df1
00000dec: JUMPI
00000ded: PUSH1 0x00
00000def: DUP1
00000df0: REVERT
00000df1: JUMPDEST
00000df2: PUSH1 0x20
00000df4: DUP4
00000df5: ADD
00000df6: SWAP2
00000df7: POP
00000df8: DUP4
00000df9: PUSH1 0x20
00000dfb: DUP3
00000dfc: PUSH1 0x05
00000dfe: SHL
00000dff: DUP6
00000e00: ADD
00000e01: ADD
00000e02: GT
00000e03: ISZERO
00000e04: PUSH2 0x0e0c
00000e07: JUMPI
00000e08: PUSH1 0x00
00000e0a: DUP1
00000e0b: REVERT
00000e0c: JUMPDEST
00000e0d: SWAP3
00000e0e: POP
00000e0f: SWAP3
00000e10: SWAP1
00000e11: POP
00000e12: JUMP
00000e13: JUMPDEST
00000e14: PUSH1 0x00
00000e16: PUSH1 0x40
00000e18: DUP3
00000e19: DUP5
00000e1a: SUB
00000e1b: SLT
00000e1c: ISZERO
00000e1d: PUSH2 0x0e25
00000e20: JUMPI
00000e21: PUSH1 0x00
00000e23: DUP1
00000e24: REVERT
00000e25: JUMPDEST
00000e26: POP
00000e27: SWAP2
00000e28: SWAP1
00000e29: POP
00000e2a: JUMP
00000e2b: JUMPDEST
00000e2c: PUSH1 0x00
00000e2e: PUSH1 0x20
00000e30: DUP3
00000e31: DUP5
00000e32: SUB
00000e33: SLT
00000e34: ISZERO
00000e35: PUSH2 0x0e3d
00000e38: JUMPI
00000e39: PUSH1 0x00
00000e3b: DUP1
00000e3c: REVERT
00000e3d: JUMPDEST
00000e3e: DUP2
00000e3f: CALLDATALOAD
00000e40: PUSH2 0x0e48
00000e43: DUP2
00000e44: PUSH2 0x1310
00000e47: JUMP
00000e48: JUMPDEST
00000e49: SWAP4
00000e4a: SWAP3
00000e4b: POP
00000e4c: POP
00000e4d: POP
00000e4e: JUMP
00000e4f: JUMPDEST
00000e50: PUSH1 0x00
00000e52: DUP1
00000e53: PUSH1 0x40
00000e55: DUP4
00000e56: DUP6
00000e57: SUB
00000e58: SLT
00000e59: ISZERO
00000e5a: PUSH2 0x0e62
00000e5d: JUMPI
00000e5e: PUSH1 0x00
00000e60: DUP1
00000e61: REVERT
00000e62: JUMPDEST
00000e63: DUP3
00000e64: CALLDATALOAD
00000e65: PUSH2 0x0e6d
00000e68: DUP2
00000e69: PUSH2 0x1310
00000e6c: JUMP
00000e6d: JUMPDEST
00000e6e: SWAP2
00000e6f: POP
00000e70: PUSH1 0x20
00000e72: DUP4
00000e73: ADD
00000e74: CALLDATALOAD
00000e75: DUP1
00000e76: ISZERO
00000e77: ISZERO
00000e78: DUP2
00000e79: EQ
00000e7a: PUSH2 0x0e82
00000e7d: JUMPI
00000e7e: PUSH1 0x00
00000e80: DUP1
00000e81: REVERT
00000e82: JUMPDEST
00000e83: DUP1
00000e84: SWAP2
00000e85: POP
00000e86: POP
00000e87: SWAP3
00000e88: POP
00000e89: SWAP3
00000e8a: SWAP1
00000e8b: POP
00000e8c: JUMP
00000e8d: JUMPDEST
00000e8e: PUSH1 0x00
00000e90: DUP1
00000e91: PUSH1 0x00
00000e93: PUSH1 0x40
00000e95: DUP5
00000e96: DUP7
00000e97: SUB
00000e98: SLT
00000e99: ISZERO
00000e9a: PUSH2 0x0ea2
00000e9d: JUMPI
00000e9e: PUSH1 0x00
00000ea0: DUP1
00000ea1: REVERT
00000ea2: JUMPDEST
00000ea3: DUP4
00000ea4: CALLDATALOAD
00000ea5: PUSH2 0x0ead
00000ea8: DUP2
00000ea9: PUSH2 0x1310
00000eac: JUMP
00000ead: JUMPDEST
00000eae: SWAP3
00000eaf: POP
00000eb0: PUSH1 0x20
00000eb2: DUP5
00000eb3: ADD
00000eb4: CALLDATALOAD
00000eb5: PUSH8 0xffffffffffffffff
00000ebe: DUP1
00000ebf: DUP3
00000ec0: GT
00000ec1: ISZERO
00000ec2: PUSH2 0x0eca
00000ec5: JUMPI
00000ec6: PUSH1 0x00
00000ec8: DUP1
00000ec9: REVERT
00000eca: JUMPDEST
00000ecb: DUP2
00000ecc: DUP7
00000ecd: ADD
00000ece: SWAP2
00000ecf: POP
00000ed0: DUP7
00000ed1: PUSH1 0x1f
00000ed3: DUP4
00000ed4: ADD
00000ed5: SLT
00000ed6: PUSH2 0x0ede
00000ed9: JUMPI
00000eda: PUSH1 0x00
00000edc: DUP1
00000edd: REVERT
00000ede: JUMPDEST
00000edf: DUP2
00000ee0: CALLDATALOAD
00000ee1: DUP2
00000ee2: DUP2
00000ee3: GT
00000ee4: ISZERO
00000ee5: PUSH2 0x0eed
00000ee8: JUMPI
00000ee9: PUSH1 0x00
00000eeb: DUP1
00000eec: REVERT
00000eed: JUMPDEST
00000eee: DUP8
00000eef: PUSH1 0x20
00000ef1: DUP3
00000ef2: DUP6
00000ef3: ADD
00000ef4: ADD
00000ef5: GT
00000ef6: ISZERO
00000ef7: PUSH2 0x0eff
00000efa: JUMPI
00000efb: PUSH1 0x00
00000efd: DUP1
00000efe: REVERT
00000eff: JUMPDEST
00000f00: PUSH1 0x20
00000f02: DUP4
00000f03: ADD
00000f04: SWAP5
00000f05: POP
00000f06: DUP1
00000f07: SWAP4
00000f08: POP
00000f09: POP
00000f0a: POP
00000f0b: POP
00000f0c: SWAP3
00000f0d: POP
00000f0e: SWAP3
00000f0f: POP
00000f10: SWAP3
00000f11: JUMP
00000f12: JUMPDEST
00000f13: PUSH1 0x00
00000f15: DUP1
00000f16: PUSH1 0x00
00000f18: DUP1
00000f19: PUSH1 0x00
00000f1b: DUP1
00000f1c: PUSH1 0x60
00000f1e: DUP8
00000f1f: DUP10
00000f20: SUB
00000f21: SLT
00000f22: ISZERO
00000f23: PUSH2 0x0f2b
00000f26: JUMPI
00000f27: PUSH1 0x00
00000f29: DUP1
00000f2a: REVERT
00000f2b: JUMPDEST
00000f2c: DUP7
00000f2d: CALLDATALOAD
00000f2e: PUSH8 0xffffffffffffffff
00000f37: DUP1
00000f38: DUP3
00000f39: GT
00000f3a: ISZERO
00000f3b: PUSH2 0x0f43
00000f3e: JUMPI
00000f3f: PUSH1 0x00
00000f41: DUP1
00000f42: REVERT
00000f43: JUMPDEST
00000f44: PUSH2 0x0f4f
00000f47: DUP11
00000f48: DUP4
00000f49: DUP12
00000f4a: ADD
00000f4b: PUSH2 0x0dc7
00000f4e: JUMP
00000f4f: JUMPDEST
00000f50: SWAP1
00000f51: SWAP9
00000f52: POP
00000f53: SWAP7
00000f54: POP
00000f55: PUSH1 0x20
00000f57: DUP10
00000f58: ADD
00000f59: CALLDATALOAD
00000f5a: SWAP2
00000f5b: POP
00000f5c: DUP1
00000f5d: DUP3
00000f5e: GT
00000f5f: ISZERO
00000f60: PUSH2 0x0f68
00000f63: JUMPI
00000f64: PUSH1 0x00
00000f66: DUP1
00000f67: REVERT
00000f68: JUMPDEST
00000f69: PUSH2 0x0f74
00000f6c: DUP11
00000f6d: DUP4
00000f6e: DUP12
00000f6f: ADD
00000f70: PUSH2 0x0dc7
00000f73: JUMP
00000f74: JUMPDEST
00000f75: SWAP1
00000f76: SWAP7
00000f77: POP
00000f78: SWAP5
00000f79: POP
00000f7a: PUSH1 0x40
00000f7c: DUP10
00000f7d: ADD
00000f7e: CALLDATALOAD
00000f7f: SWAP2
00000f80: POP
00000f81: DUP1
00000f82: DUP3
00000f83: GT
00000f84: ISZERO
00000f85: PUSH2 0x0f8d
00000f88: JUMPI
00000f89: PUSH1 0x00
00000f8b: DUP1
00000f8c: REVERT
00000f8d: JUMPDEST
00000f8e: POP
00000f8f: PUSH2 0x0f9a
00000f92: DUP10
00000f93: DUP3
00000f94: DUP11
00000f95: ADD
00000f96: PUSH2 0x0dc7
00000f99: JUMP
00000f9a: JUMPDEST
00000f9b: SWAP8
00000f9c: SWAP11
00000f9d: SWAP7
00000f9e: SWAP10
00000f9f: POP
00000fa0: SWAP5
00000fa1: SWAP8
00000fa2: POP
00000fa3: SWAP3
00000fa4: SWAP6
00000fa5: SWAP4
00000fa6: SWAP5
00000fa7: SWAP3
00000fa8: POP
00000fa9: POP
00000faa: POP
00000fab: JUMP
00000fac: JUMPDEST
00000fad: PUSH1 0x00
00000faf: PUSH1 0x20
00000fb1: DUP3
00000fb2: DUP5
00000fb3: SUB
00000fb4: SLT
00000fb5: ISZERO
00000fb6: PUSH2 0x0fbe
00000fb9: JUMPI
00000fba: PUSH1 0x00
00000fbc: DUP1
00000fbd: REVERT
00000fbe: JUMPDEST
00000fbf: POP
00000fc0: MLOAD
00000fc1: SWAP2
00000fc2: SWAP1
00000fc3: POP
00000fc4: JUMP
00000fc5: JUMPDEST
00000fc6: PUSH1 0x00
00000fc8: DUP1
00000fc9: PUSH1 0x00
00000fcb: PUSH1 0xa0
00000fcd: DUP5
00000fce: DUP7
00000fcf: SUB
00000fd0: SLT
00000fd1: ISZERO
00000fd2: PUSH2 0x0fda
00000fd5: JUMPI
00000fd6: PUSH1 0x00
00000fd8: DUP1
00000fd9: REVERT
00000fda: JUMPDEST
00000fdb: PUSH2 0x0fe4
00000fde: DUP6
00000fdf: DUP6
00000fe0: PUSH2 0x0e13
00000fe3: JUMP
00000fe4: JUMPDEST
00000fe5: SWAP3
00000fe6: POP
00000fe7: PUSH2 0x0ff3
00000fea: DUP6
00000feb: PUSH1 0x40
00000fed: DUP7
00000fee: ADD
00000fef: PUSH2 0x0e13
00000ff2: JUMP
00000ff3: JUMPDEST
00000ff4: SWAP2
00000ff5: POP
00000ff6: PUSH1 0x80
00000ff8: DUP5
00000ff9: ADD
00000ffa: CALLDATALOAD
00000ffb: PUSH4 0xffffffff
00001000: DUP2
00001001: AND
00001002: DUP2
00001003: EQ
00001004: PUSH2 0x100c
00001007: JUMPI
00001008: PUSH1 0x00
0000100a: DUP1
0000100b: REVERT
0000100c: JUMPDEST
0000100d: DUP1
0000100e: SWAP2
0000100f: POP
00001010: POP
00001011: SWAP3
00001012: POP
00001013: SWAP3
00001014: POP
00001015: SWAP3
00001016: JUMP
00001017: JUMPDEST
00001018: PUSH1 0x00
0000101a: PUSH1 0x40
0000101c: DUP3
0000101d: DUP5
0000101e: SUB
0000101f: SLT
00001020: ISZERO
00001021: PUSH2 0x1029
00001024: JUMPI
00001025: PUSH1 0x00
00001027: DUP1
00001028: REVERT
00001029: JUMPDEST
0000102a: PUSH1 0x40
0000102c: MLOAD
0000102d: PUSH1 0x40
0000102f: DUP2
00001030: ADD
00001031: DUP2
00001032: DUP2
00001033: LT
00001034: PUSH8 0xffffffffffffffff
0000103d: DUP3
0000103e: GT
0000103f: OR
00001040: ISZERO
00001041: PUSH2 0x105a
00001044: JUMPI
00001045: PUSH4 0x4e487b71
0000104a: PUSH1 0xe0
0000104c: SHL
0000104d: PUSH1 0x00
0000104f: MSTORE
00001050: PUSH1 0x41
00001052: PUSH1 0x04
00001054: MSTORE
00001055: PUSH1 0x24
00001057: PUSH1 0x00
00001059: REVERT
0000105a: JUMPDEST
0000105b: PUSH1 0x40
0000105d: MSTORE
0000105e: DUP3
0000105f: CALLDATALOAD
00001060: PUSH2 0x1068
00001063: DUP2
00001064: PUSH2 0x1310
00001067: JUMP
00001068: JUMPDEST
00001069: DUP2
0000106a: MSTORE
0000106b: PUSH1 0x20
0000106d: DUP4
0000106e: ADD
0000106f: CALLDATALOAD
00001070: PUSH2 0x1078
00001073: DUP2
00001074: PUSH2 0x1310
00001077: JUMP
00001078: JUMPDEST
00001079: PUSH1 0x20
0000107b: DUP3
0000107c: ADD
0000107d: MSTORE
0000107e: SWAP4
0000107f: SWAP3
00001080: POP
00001081: POP
00001082: POP
00001083: JUMP
00001084: JUMPDEST
00001085: PUSH1 0x00
00001087: PUSH1 0x20
00001089: DUP3
0000108a: DUP5
0000108b: SUB
0000108c: SLT
0000108d: ISZERO
0000108e: PUSH2 0x1096
00001091: JUMPI
00001092: PUSH1 0x00
00001094: DUP1
00001095: REVERT
00001096: JUMPDEST
00001097: POP
00001098: CALLDATALOAD
00001099: SWAP2
0000109a: SWAP1
0000109b: POP
0000109c: JUMP
0000109d: JUMPDEST
0000109e: PUSH1 0x00
000010a0: DUP1
000010a1: PUSH1 0x40
000010a3: DUP4
000010a4: DUP6
000010a5: SUB
000010a6: SLT
000010a7: ISZERO
000010a8: PUSH2 0x10b0
000010ab: JUMPI
000010ac: PUSH1 0x00
000010ae: DUP1
000010af: REVERT
000010b0: JUMPDEST
000010b1: POP
000010b2: POP
000010b3: DUP1
000010b4: CALLDATALOAD
000010b5: SWAP3
000010b6: PUSH1 0x20
000010b8: SWAP1
000010b9: SWAP2
000010ba: ADD
000010bb: CALLDATALOAD
000010bc: SWAP2
000010bd: POP
000010be: JUMP
000010bf: JUMPDEST
000010c0: PUSH1 0x00
000010c2: DUP1
000010c3: PUSH1 0x00
000010c5: DUP1
000010c6: PUSH1 0x80
000010c8: DUP6
000010c9: DUP8
000010ca: SUB
000010cb: SLT
000010cc: ISZERO
000010cd: PUSH2 0x10d5
000010d0: JUMPI
000010d1: PUSH1 0x00
000010d3: DUP1
000010d4: REVERT
000010d5: JUMPDEST
000010d6: POP
000010d7: POP
000010d8: DUP3
000010d9: CALLDATALOAD
000010da: SWAP5
000010db: PUSH1 0x20
000010dd: DUP5
000010de: ADD
000010df: CALLDATALOAD
000010e0: SWAP5
000010e1: POP
000010e2: PUSH1 0x40
000010e4: DUP5
000010e5: ADD
000010e6: CALLDATALOAD
000010e7: SWAP4
000010e8: PUSH1 0x60
000010ea: ADD
000010eb: CALLDATALOAD
000010ec: SWAP3
000010ed: POP
000010ee: SWAP1
000010ef: POP
000010f0: JUMP
000010f1: JUMPDEST
000010f2: PUSH1 0x00
000010f4: PUSH1 0x20
000010f6: DUP3
000010f7: DUP5
000010f8: SUB
000010f9: SLT
000010fa: ISZERO
000010fb: PUSH2 0x1103
000010fe: JUMPI
000010ff: PUSH1 0x00
00001101: DUP1
00001102: REVERT
00001103: JUMPDEST
00001104: DUP2
00001105: MLOAD
00001106: PUSH1 0xff
00001108: DUP2
00001109: AND
0000110a: DUP2
0000110b: EQ
0000110c: PUSH2 0x0e48
0000110f: JUMPI
00001110: PUSH1 0x00
00001112: DUP1
00001113: REVERT
00001114: JUMPDEST
00001115: DUP2
00001116: DUP4
00001117: DUP3
00001118: CALLDATACOPY
00001119: PUSH1 0x00
0000111b: SWAP2
0000111c: ADD
0000111d: SWAP1
0000111e: DUP2
0000111f: MSTORE
00001120: SWAP2
00001121: SWAP1
00001122: POP
00001123: JUMP
00001124: JUMPDEST
00001125: PUSH1 0x00
00001127: DUP1
00001128: DUP4
00001129: CALLDATALOAD
0000112a: PUSH1 0x1e
0000112c: NOT
0000112d: DUP5
0000112e: CALLDATASIZE
0000112f: SUB
00001130: ADD
00001131: DUP2
00001132: SLT
00001133: PUSH2 0x113b
00001136: JUMPI
00001137: PUSH1 0x00
00001139: DUP1
0000113a: REVERT
0000113b: JUMPDEST
0000113c: DUP4
0000113d: ADD
0000113e: DUP1
0000113f: CALLDATALOAD
00001140: SWAP2
00001141: POP
00001142: PUSH8 0xffffffffffffffff
0000114b: DUP3
0000114c: GT
0000114d: ISZERO
0000114e: PUSH2 0x1156
00001151: JUMPI
00001152: PUSH1 0x00
00001154: DUP1
00001155: REVERT
00001156: JUMPDEST
00001157: PUSH1 0x20
00001159: ADD
0000115a: SWAP2
0000115b: POP
0000115c: CALLDATASIZE
0000115d: DUP2
0000115e: SWAP1
0000115f: SUB
00001160: DUP3
00001161: SGT
00001162: ISZERO
00001163: PUSH2 0x0e0c
00001166: JUMPI
00001167: PUSH1 0x00
00001169: DUP1
0000116a: REVERT
0000116b: JUMPDEST
0000116c: PUSH1 0x00
0000116e: DUP3
0000116f: NOT
00001170: DUP3
00001171: GT
00001172: ISZERO
00001173: PUSH2 0x117e
00001176: JUMPI
00001177: PUSH2 0x117e
0000117a: PUSH2 0x12e4
0000117d: JUMP
0000117e: JUMPDEST
0000117f: POP
00001180: ADD
00001181: SWAP1
00001182: JUMP
00001183: JUMPDEST
00001184: PUSH1 0x00
00001186: DUP3
00001187: PUSH2 0x11a0
0000118a: JUMPI
0000118b: PUSH4 0x4e487b71
00001190: PUSH1 0xe0
00001192: SHL
00001193: PUSH1 0x00
00001195: MSTORE
00001196: PUSH1 0x12
00001198: PUSH1 0x04
0000119a: MSTORE
0000119b: PUSH1 0x24
0000119d: PUSH1 0x00
0000119f: REVERT
000011a0: JUMPDEST
000011a1: POP
000011a2: DIV
000011a3: SWAP1
000011a4: JUMP
000011a5: JUMPDEST
000011a6: PUSH1 0x01
000011a8: DUP2
000011a9: DUP2
000011aa: JUMPDEST
000011ab: DUP1
000011ac: DUP6
000011ad: GT
000011ae: ISZERO
000011af: PUSH2 0x11e0
000011b2: JUMPI
000011b3: DUP2
000011b4: PUSH1 0x00
000011b6: NOT
000011b7: DIV
000011b8: DUP3
000011b9: GT
000011ba: ISZERO
000011bb: PUSH2 0x11c6
000011be: JUMPI
000011bf: PUSH2 0x11c6
000011c2: PUSH2 0x12e4
000011c5: JUMP
000011c6: JUMPDEST
000011c7: DUP1
000011c8: DUP6
000011c9: AND
000011ca: ISZERO
000011cb: PUSH2 0x11d3
000011ce: JUMPI
000011cf: SWAP2
000011d0: DUP2
000011d1: MUL
000011d2: SWAP2
000011d3: JUMPDEST
000011d4: SWAP4
000011d5: DUP5
000011d6: SHR
000011d7: SWAP4
000011d8: SWAP1
000011d9: DUP1
000011da: MUL
000011db: SWAP1
000011dc: PUSH2 0x11aa
000011df: JUMP
000011e0: JUMPDEST
000011e1: POP
000011e2: SWAP3
000011e3: POP
000011e4: SWAP3
000011e5: SWAP1
000011e6: POP
000011e7: JUMP
000011e8: JUMPDEST
000011e9: PUSH1 0x00
000011eb: PUSH2 0x0e48
000011ee: PUSH1 0xff
000011f0: DUP5
000011f1: AND
000011f2: DUP4
000011f3: PUSH1 0x00
000011f5: DUP3
000011f6: PUSH2 0x1201
000011f9: JUMPI
000011fa: POP
000011fb: PUSH1 0x01
000011fd: PUSH2 0x0bf0
00001200: JUMP
00001201: JUMPDEST
00001202: DUP2
00001203: PUSH2 0x120e
00001206: JUMPI
00001207: POP
00001208: PUSH1 0x00
0000120a: PUSH2 0x0bf0
0000120d: JUMP
0000120e: JUMPDEST
0000120f: DUP2
00001210: PUSH1 0x01
00001212: DUP2
00001213: EQ
00001214: PUSH2 0x1224
00001217: JUMPI
00001218: PUSH1 0x02
0000121a: DUP2
0000121b: EQ
0000121c: PUSH2 0x122e
0000121f: JUMPI
00001220: PUSH2 0x124a
00001223: JUMP
00001224: JUMPDEST
00001225: PUSH1 0x01
00001227: SWAP2
00001228: POP
00001229: POP
0000122a: PUSH2 0x0bf0
0000122d: JUMP
0000122e: JUMPDEST
0000122f: PUSH1 0xff
00001231: DUP5
00001232: GT
00001233: ISZERO
00001234: PUSH2 0x123f
00001237: JUMPI
00001238: PUSH2 0x123f
0000123b: PUSH2 0x12e4
0000123e: JUMP
0000123f: JUMPDEST
00001240: POP
00001241: POP
00001242: PUSH1 0x01
00001244: DUP3
00001245: SHL
00001246: PUSH2 0x0bf0
00001249: JUMP
0000124a: JUMPDEST
0000124b: POP
0000124c: PUSH1 0x20
0000124e: DUP4
0000124f: LT
00001250: PUSH2 0x0133
00001253: DUP4
00001254: LT
00001255: AND
00001256: PUSH1 0x4e
00001258: DUP5
00001259: LT
0000125a: PUSH1 0x0b
0000125c: DUP5
0000125d: LT
0000125e: AND
0000125f: OR
00001260: ISZERO
00001261: PUSH2 0x126d
00001264: JUMPI
00001265: POP
00001266: DUP2
00001267: DUP2
00001268: EXP
00001269: PUSH2 0x0bf0
0000126c: JUMP
0000126d: JUMPDEST
0000126e: PUSH2 0x1277
00001271: DUP4
00001272: DUP4
00001273: PUSH2 0x11a5
00001276: JUMP
00001277: JUMPDEST
00001278: DUP1
00001279: PUSH1 0x00
0000127b: NOT
0000127c: DIV
0000127d: DUP3
0000127e: GT
0000127f: ISZERO
00001280: PUSH2 0x128b
00001283: JUMPI
00001284: PUSH2 0x128b
00001287: PUSH2 0x12e4
0000128a: JUMP
0000128b: JUMPDEST
0000128c: MUL
0000128d: SWAP4
0000128e: SWAP3
0000128f: POP
00001290: POP
00001291: POP
00001292: JUMP
00001293: JUMPDEST
00001294: PUSH1 0x00
00001296: DUP2
00001297: PUSH1 0x00
00001299: NOT
0000129a: DIV
0000129b: DUP4
0000129c: GT
0000129d: DUP3
0000129e: ISZERO
0000129f: ISZERO
000012a0: AND
000012a1: ISZERO
000012a2: PUSH2 0x12ad
000012a5: JUMPI
000012a6: PUSH2 0x12ad
000012a9: PUSH2 0x12e4
000012ac: JUMP
000012ad: JUMPDEST
000012ae: POP
000012af: MUL
000012b0: SWAP1
000012b1: JUMP
000012b2: JUMPDEST
000012b3: PUSH1 0x00
000012b5: DUP3
000012b6: DUP3
000012b7: LT
000012b8: ISZERO
000012b9: PUSH2 0x12c4
000012bc: JUMPI
000012bd: PUSH2 0x12c4
000012c0: PUSH2 0x12e4
000012c3: JUMP
000012c4: JUMPDEST
000012c5: POP
000012c6: SUB
000012c7: SWAP1
000012c8: JUMP
000012c9: JUMPDEST
000012ca: PUSH1 0x00
000012cc: PUSH1 0x00
000012ce: NOT
000012cf: DUP3
000012d0: EQ
000012d1: ISZERO
000012d2: PUSH2 0x12dd
000012d5: JUMPI
000012d6: PUSH2 0x12dd
000012d9: PUSH2 0x12e4
000012dc: JUMP
000012dd: JUMPDEST
000012de: POP
000012df: PUSH1 0x01
000012e1: ADD
000012e2: SWAP1
000012e3: JUMP
000012e4: JUMPDEST
000012e5: PUSH4 0x4e487b71
000012ea: PUSH1 0xe0
000012ec: SHL
000012ed: PUSH1 0x00
000012ef: MSTORE
000012f0: PUSH1 0x11
000012f2: PUSH1 0x04
000012f4: MSTORE
000012f5: PUSH1 0x24
000012f7: PUSH1 0x00
000012f9: REVERT
000012fa: JUMPDEST
000012fb: PUSH4 0x4e487b71
00001300: PUSH1 0xe0
00001302: SHL
00001303: PUSH1 0x00
00001305: MSTORE
00001306: PUSH1 0x32
00001308: PUSH1 0x04
0000130a: MSTORE
0000130b: PUSH1 0x24
0000130d: PUSH1 0x00
0000130f: REVERT
00001310: JUMPDEST
00001311: PUSH1 0x01
00001313: PUSH1 0x01
00001315: PUSH1 0xa0
00001317: SHL
00001318: SUB
00001319: DUP2
0000131a: AND
0000131b: DUP2
0000131c: EQ
0000131d: PUSH2 0x0939
00001320: JUMPI
00001321: PUSH1 0x00
00001323: DUP1
00001324: REVERT
00001325: INVALID
00001326: LOG2
00001327: PUSH5 0x6970667358
0000132d: UNKNOWN(0x22)
0000132e: SLT
0000132f: KECCAK256
00001330: DUP6
00001331: BLOBBASEFEE
00001332: DUP2
00001333: UNKNOWN(0xE7)
00001334: UNKNOWN(0xCF)
00001335: SWAP2
00001336: UNKNOWN(0xC0)
00001337: GT
00001338: UNKNOWN(0xD2)
00001339: UNKNOWN(0x28)
0000133a: EXTCODECOPY
0000133b: MLOAD
0000133c: RETURNDATACOPY
0000133d: UNKNOWN(0xC4)
0000133e: PC
0000133f: UNKNOWN(0xD6)
00001340: PUSH31

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xbc711521d17a7d48f97b394d2df22f151b749d1b5b31c57643ccb9b63233a7b3
call_targets: 0x0401b3e1f554b574da26482311dfb9414e382afa
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbc711521d17a7d48f97b394d2df22f151b749d1b5b31c57643ccb9b63233a7b3",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0401b3e1f554b574da26482311dfb9414e382afa"
    ],
    "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": "0xce5cae30",
            "selector": "0xce5cae30",
            "calldata_variants": [
                "0xce5cae30",
                "0xce5cae300000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe7af5c72",
            "selector": "0xe7af5c72",
            "calldata_variants": [
                "0xe7af5c72",
                "0xe7af5c720000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe84e01eb",
            "selector": "0xe84e01eb",
            "calldata_variants": [
                "0xe84e01eb",
                "0xe84e01eb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef51802c",
            "selector": "0xef51802c",
            "calldata_variants": [
                "0xef51802c",
                "0xef51802c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd228db7",
            "selector": "0xfd228db7",
            "calldata_variants": [
                "0xfd228db7",
                "0xfd228db70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x62e843a1",
            "selector": "0x62e843a1",
            "calldata_variants": [
                "0x62e843a1",
                "0x62e843a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa1a379aa",
            "selector": "0xa1a379aa",
            "calldata_variants": [
                "0xa1a379aa",
                "0xa1a379aa0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa98e0d65",
            "selector": "0xa98e0d65",
            "calldata_variants": [
                "0xa98e0d65",
                "0xa98e0d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1358,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2281,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2339,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}
high other detector SELFDESTRUCT reachable 65 no no
view
trace_id: 0xe1c4c72b706abc1fbe4521ea21854416595ede2c774eaec90957fcf66ac10418
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0xe1c4c72b706abc1fbe4521ea21854416595ede2c774eaec90957fcf66ac10418",
    "confirmed": false,
    "trace_mode": "structLogs",
    "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": "0xce5cae30",
            "selector": "0xce5cae30",
            "calldata_variants": [
                "0xce5cae30",
                "0xce5cae300000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe7af5c72",
            "selector": "0xe7af5c72",
            "calldata_variants": [
                "0xe7af5c72",
                "0xe7af5c720000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe84e01eb",
            "selector": "0xe84e01eb",
            "calldata_variants": [
                "0xe84e01eb",
                "0xe84e01eb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef51802c",
            "selector": "0xef51802c",
            "calldata_variants": [
                "0xef51802c",
                "0xef51802c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd228db7",
            "selector": "0xfd228db7",
            "calldata_variants": [
                "0xfd228db7",
                "0xfd228db70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x62e843a1",
            "selector": "0x62e843a1",
            "calldata_variants": [
                "0x62e843a1",
                "0x62e843a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa1a379aa",
            "selector": "0xa1a379aa",
            "calldata_variants": [
                "0xa1a379aa",
                "0xa1a379aa0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa98e0d65",
            "selector": "0xa98e0d65",
            "calldata_variants": [
                "0xa98e0d65",
                "0xa98e0d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [],
    "selfdestruct_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xbc711521d17a7d48f97b394d2df22f151b749d1b5b31c57643ccb9b63233a7b3
call_targets: 0x0401b3e1f554b574da26482311dfb9414e382afa
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbc711521d17a7d48f97b394d2df22f151b749d1b5b31c57643ccb9b63233a7b3",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0401b3e1f554b574da26482311dfb9414e382afa"
    ],
    "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": "0xce5cae30",
            "selector": "0xce5cae30",
            "calldata_variants": [
                "0xce5cae30",
                "0xce5cae300000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe7af5c72",
            "selector": "0xe7af5c72",
            "calldata_variants": [
                "0xe7af5c72",
                "0xe7af5c720000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe84e01eb",
            "selector": "0xe84e01eb",
            "calldata_variants": [
                "0xe84e01eb",
                "0xe84e01eb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef51802c",
            "selector": "0xef51802c",
            "calldata_variants": [
                "0xef51802c",
                "0xef51802c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd228db7",
            "selector": "0xfd228db7",
            "calldata_variants": [
                "0xfd228db7",
                "0xfd228db70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x62e843a1",
            "selector": "0x62e843a1",
            "calldata_variants": [
                "0x62e843a1",
                "0x62e843a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa1a379aa",
            "selector": "0xa1a379aa",
            "calldata_variants": [
                "0xa1a379aa",
                "0xa1a379aa0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa98e0d65",
            "selector": "0xa98e0d65",
            "calldata_variants": [
                "0xa98e0d65",
                "0xa98e0d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1358,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2281,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2339,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
medium access_control codex Privileged address can selfdestruct the contract 75 no
view
evidence_json
{
    "evidence": "Bytecode shows a slot0==caller check followed by SELFDESTRUCT: `5b6000546001600160a01b0316331461037a57600080fd5b6000546001600160a01b0316ff`.",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Remove SELFDESTRUCT or gate it behind a timelock/multisig; if intended, clearly disclose this admin capability to users.",
    "exploit_scenario": "If the address stored in slot 0 is compromised or malicious, it can invoke the function at 0x0363 to execute SELFDESTRUCT, permanently disabling the contract and sending all ETH to that address."
}
medium access_control codex Privileged address can perform arbitrary external calls with value 75 no
view
evidence_json
{
    "evidence": "Owner-checked CALL pattern: `5b6000546001600160a01b0316331461095357600080fd5b6000836001600160a01b0316348484604051610970929190611114565b60006040518083038185875af1...`.",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Limit this capability to a multisig/timelock or remove it if not strictly necessary; document the trust assumption.",
    "exploit_scenario": "A privileged function checks slot0==caller and then builds a low-level CALL using calldata/value, enabling the privileged address to call any target and move funds if compromised or malicious."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 7
}