d295e25c-e0df-4ff8-a962-da094f11ac94
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 7
}
|