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

Analysis Run

b842d834-085d-41aa-b331-087260eeb9d9

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 3:22 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30318 report.consolidate complete 1 / 1 3 months ago
74092 artifact.fetch complete 1 / 3 1 week ago
74093 tool.cast_disasm complete 1 / 3 1 week ago
74094 analysis.bundle complete 1 / 3 1 week ago
74095 capability.graph complete 1 / 3 1 week ago
74096 detector.run complete 1 / 3 1 week ago
74097 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Found a conditional initialization risk: the public initializer can assign privileged roles if a proxy is deployed without being initialized immediately.
View stderr
[codex:933862] OpenAI Codex v0.77.0 (research preview)
[codex:933862] --------
[codex:933862] workdir: /tmp/codex-multi-co39754h
[codex:933862] model: gpt-5.2-codex
[codex:933862] provider: openai
[codex:933862] approval: never
[codex:933862] sandbox: read-only
[codex:933862] reasoning effort: xhigh
[codex:933862] reasoning summaries: auto
[codex:933862] session id: 019b6584-b9d2-7822-af6a-2f719492f651
[codex:933862] --------
[codex:933862] user
[codex:933862] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:933862] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:933862] 
[codex:933862] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:933862] 
[codex:933862] Output MUST be valid JSON matching the provided schema.
[codex:933862] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:933862] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:933862] 
[codex:933862] Output constraints (IMPORTANT):
[codex:933862] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:933862] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:933862] mcp startup: no servers
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Searching for BYTECODE_BUNDLE.txt**
[codex:933862] exec
[codex:933862] /bin/bash -lc ls in /tmp/codex-multi-co39754h succeeded in 8ms:
[codex:933862] BYTECODE_BUNDLE.txt
[codex:933862] codex-output-schema.json
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Reading file contents**
[codex:933862] exec
[codex:933862] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-co39754h succeeded in 5ms:
[codex:933862] Runtime bytecode bundle for best-effort auditing.
[codex:933862] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:933862] 
[codex:933862] FILE: runtime_bytecode.hex
[codex:933862] 0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a217fddf1161006f578063a217fddf146103c2578063ca15c873146103d7578063d547741f146103f7578063e6930a2214610417578063eb14f53e14610437578063f2fde38b1461044a57600080fd5b8063715018a61461030457806377f050b0146103195780638129fc1c1461033b5780638da5cb5b146103505780639010d07c1461038257806391d14854146103a257600080fd5b806336568abe1161010857806336568abe1461025c5780633659cfe61461027c5780633bd8db241461029c5780634f1ef286146102bc57806352d1902d146102cf57806357a987a3146102e457600080fd5b806301ffc9a71461015b57806302cba7411461019057806305b1137b146101b2578063150b7a02146101c5578063248a9ca3146101fe5780632f2ff15d1461023c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611e5b565b61046a565b60405190151581526020015b60405180910390f35b34801561019c57600080fd5b506101b06101ab366004611e9a565b610495565b005b6101b06101c0366004611edb565b6104be565b3480156101d157600080fd5b506101e56101e0366004611faa565b6104e5565b6040516001600160e01b03199091168152602001610187565b34801561020a57600080fd5b5061022e610219366004612016565b600090815260fb602052604090206001015490565b604051908152602001610187565b34801561024857600080fd5b506101b061025736600461202f565b6104f6565b34801561026857600080fd5b506101b061027736600461202f565b61051b565b34801561028857600080fd5b506101b061029736600461205f565b61059e565b3480156102a857600080fd5b506101b06102b7366004611e9a565b61067e565b6101b06102ca36600461207c565b6106a1565b3480156102db57600080fd5b5061022e61076e565b3480156102f057600080fd5b506101b06102ff366004612118565b610821565b34801561031057600080fd5b506101b0610a4c565b34801561032557600080fd5b5061022e60008051602061255883398151915281565b34801561034757600080fd5b506101b0610a60565b34801561035c57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610187565b34801561038e57600080fd5b5061036a61039d3660046121b2565b610b83565b3480156103ae57600080fd5b5061017b6103bd36600461202f565b610ba3565b3480156103ce57600080fd5b5061022e600081565b3480156103e357600080fd5b5061022e6103f2366004612016565b610bce565b34801561040357600080fd5b506101b061041236600461202f565b610be6565b34801561042357600080fd5b506101b0610432366004612118565b610c0b565b6101b06104453660046121d4565b610e1a565b34801561045657600080fd5b506101b061046536600461205f565b610f93565b60006001600160e01b03198216635a05180f60e01b148061048f575061048f82611018565b92915050565b6000805160206125588339815191526104ad8161104d565b6104b8848484611057565b50505050565b6000805160206125588339815191526104d68161104d565b6104e0838361106b565b505050565b630a85bd0160e11b5b949350505050565b600082815260fb60205260409020600101546105118161104d565b6104e08383611075565b6001600160a01b03811633146105905760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61059a8282611098565b5050565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156105e75760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610630600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146106565760405162461bcd60e51b81526004016105879061228c565b61065f816110bb565b6040805160008082526020820190925261067b918391906110c3565b50565b6000805160206125588339815191526106968161104d565b6104b884848461123d565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156106ea5760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610733600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146107595760405162461bcd60e51b81526004016105879061228c565b610762826110bb565b61059a828260016110c3565b6000306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163161461080e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610587565b5060008051602061251183398151915290565b6000805160206125588339815191526108398161104d565b8584146108b85760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20746f6b656e732f706179656573206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b8382146109395760405162461bcd60e51b815260206004820152604360248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a207061796565732f746f6b656e496473206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610587565b836109b65760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20706179656573206c656e677468206d757374206265206774207a65726064820152606f60f81b608482015260a401610587565b60005b84811015610a4257610a308888838181106109d6576109d66122d8565b90506020020160208101906109eb919061205f565b8787848181106109fd576109fd6122d8565b9050602002016020810190610a12919061205f565b868685818110610a2457610a246122d8565b9050602002013561123d565b80610a3a81612304565b9150506109b9565b5050505050505050565b610a546112aa565b610a5e6000611304565b565b600054610100900460ff1615808015610a805750600054600160ff909116105b80610a9a5750303b158015610a9a575060005460ff166001145b610afd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610587565b6000805460ff191660011790558015610b20576000805461ff0019166101001790555b610b28611356565b610b30611385565b610b3b6000336113ac565b801561067b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600082815261012d60205260408120610b9c90836113b6565b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815261012d6020526040812061048f906113c2565b600082815260fb6020526040902060010154610c018161104d565b6104e08383611098565b600080516020612558833981519152610c238161104d565b858414610c9a576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20746f6b656e732f706179656573206c656e677468206d69736d617463686064820152608401610587565b838214610d195760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610d8e576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610a4257610e08888883818110610dae57610dae6122d8565b9050602002016020810190610dc3919061205f565b878784818110610dd557610dd56122d8565b9050602002016020810190610dea919061205f565b868685818110610dfc57610dfc6122d8565b90506020020135611057565b80610e1281612304565b915050610d91565b600080516020612558833981519152610e328161104d565b838214610eb15760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610f26576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610f8b57610f79868683818110610f4657610f466122d8565b9050602002016020810190610f5b919061205f565b858584818110610f6d57610f6d6122d8565b9050602002013561106b565b80610f8381612304565b915050610f29565b505050505050565b610f9b6112aa565b6001600160a01b0381166110005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610587565b61067b81611304565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b148061048f57506301ffc9a760e01b6001600160e01b031983161461048f565b61067b81336113cc565b6104e06001600160a01b0384168383611425565b61059a8282611477565b61107f8282611590565b600082815261012d602052604090206104e09082611616565b6110a2828261162b565b600082815261012d602052604090206104e09082611692565b61067b6112aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f6576104e0836116a7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112f57600080fd5b505afa92505050801561115f575060408051601f3d908101601f1916820190925261115c9181019061231f565b60015b6111c25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610587565b60008051602061251183398151915281146112315760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610587565b506104e0838383611743565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390528416906342842e0e90606401600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050505050565b6097546001600160a01b03163314610a5e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610587565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661137d5760405162461bcd60e51b815260040161058790612338565b610a5e611768565b600054610100900460ff16610a5e5760405162461bcd60e51b815260040161058790612338565b61059a8282611075565b6000610b9c8383611798565b600061048f825490565b6113d68282610ba3565b61059a576113e3816117c2565b6113ee8360206117d4565b6040516020016113ff9291906123af565b60408051601f198184030181529082905262461bcd60e51b825261058791600401612424565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104e0908490611970565b804710156114c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610587565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611514576040519150601f19603f3d011682016040523d82523d6000602084013e611519565b606091505b50509050806104e05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610587565b61159a8282610ba3565b61059a57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115d23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610b9c836001600160a01b038416611a42565b6116358282610ba3565b1561059a57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610b9c836001600160a01b038416611a91565b6001600160a01b0381163b6117145760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610587565b60008051602061251183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61174c83611b84565b6000825111806117595750805b156104e0576104b88383611bc4565b600054610100900460ff1661178f5760405162461bcd60e51b815260040161058790612338565b610a5e33611304565b60008260000182815481106117af576117af6122d8565b9060005260206000200154905092915050565b606061048f6001600160a01b03831660145b606060006117e3836002612457565b6117ee906002612476565b67ffffffffffffffff81111561180657611806611f07565b6040519080825280601f01601f191660200182016040528015611830576020820181803683370190505b509050600360fc1b8160008151811061184b5761184b6122d8565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061187a5761187a6122d8565b60200101906001600160f81b031916908160001a905350600061189e846002612457565b6118a9906001612476565b90505b6001811115611921576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106118dd576118dd6122d8565b1a60f81b8282815181106118f3576118f36122d8565b60200101906001600160f81b031916908160001a90535060049490941c9361191a8161248e565b90506118ac565b508315610b9c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610587565b60006119c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611cb89092919063ffffffff16565b8051909150156104e057808060200190518101906119e391906124a5565b6104e05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610587565b6000818152600183016020526040812054611a895750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561048f565b50600061048f565b60008181526001830160205260408120548015611b7a576000611ab56001836124c7565b8554909150600090611ac9906001906124c7565b9050818114611b2e576000866000018281548110611ae957611ae96122d8565b9060005260206000200154905080876000018481548110611b0c57611b0c6122d8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b3f57611b3f6124de565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061048f565b600091505061048f565b611b8d816116a7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611c2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610587565b600080846001600160a01b031684604051611c4791906124f4565b600060405180830381855af49150503d8060008114611c82576040519150601f19603f3d011682016040523d82523d6000602084013e611c87565b606091505b5091509150611caf828260405180606001604052806027815260200161253160279139611cc7565b95945050505050565b60606104ee8484600085611ce0565b60608315611cd6575081610b9c565b610b9c8383611dbb565b606082471015611d415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610587565b600080866001600160a01b03168587604051611d5d91906124f4565b60006040518083038185875af1925050503d8060008114611d9a576040519150601f19603f3d011682016040523d82523d6000602084013e611d9f565b606091505b5091509150611db087838387611de5565b979650505050505050565b815115611dcb5781518083602001fd5b8060405162461bcd60e51b81526004016105879190612424565b60608315611e51578251611e4a576001600160a01b0385163b611e4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610587565b50816104ee565b6104ee8383611dbb565b600060208284031215611e6d57600080fd5b81356001600160e01b031981168114610b9c57600080fd5b6001600160a01b038116811461067b57600080fd5b600080600060608486031215611eaf57600080fd5b8335611eba81611e85565b92506020840135611eca81611e85565b929592945050506040919091013590565b60008060408385031215611eee57600080fd5b8235611ef981611e85565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f2e57600080fd5b813567ffffffffffffffff80821115611f4957611f49611f07565b604051601f8301601f19908116603f01168101908282118183101715611f7157611f71611f07565b81604052838152866020858801011115611f8a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215611fc057600080fd5b8435611fcb81611e85565b93506020850135611fdb81611e85565b925060408501359150606085013567ffffffffffffffff811115611ffe57600080fd5b61200a87828801611f1d565b91505092959194509250565b60006020828403121561202857600080fd5b5035919050565b6000806040838503121561204257600080fd5b82359150602083013561205481611e85565b809150509250929050565b60006020828403121561207157600080fd5b8135610b9c81611e85565b6000806040838503121561208f57600080fd5b823561209a81611e85565b9150602083013567ffffffffffffffff8111156120b657600080fd5b6120c285828601611f1d565b9150509250929050565b60008083601f8401126120de57600080fd5b50813567ffffffffffffffff8111156120f657600080fd5b6020830191508360208260051b850101111561211157600080fd5b9250929050565b6000806000806000806060878903121561213157600080fd5b863567ffffffffffffffff8082111561214957600080fd5b6121558a838b016120cc565b9098509650602089013591508082111561216e57600080fd5b61217a8a838b016120cc565b9096509450604089013591508082111561219357600080fd5b506121a089828a016120cc565b979a9699509497509295939492505050565b600080604083850312156121c557600080fd5b50508035926020909101359150565b600080600080604085870312156121ea57600080fd5b843567ffffffffffffffff8082111561220257600080fd5b61220e888389016120cc565b9096509450602087013591508082111561222757600080fd5b50612234878288016120cc565b95989497509550505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612318576123186122ee565b5060010190565b60006020828403121561233157600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561239e578181015183820152602001612386565b838111156104b85750506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e7816017850160208801612383565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612418816028840160208801612383565b01602801949350505050565b6020815260008251806020840152612443816040850160208701612383565b601f01601f19169190910160400192915050565b6000816000190483118215151615612471576124716122ee565b500290565b60008219821115612489576124896122ee565b500190565b60008161249d5761249d6122ee565b506000190190565b6000602082840312156124b757600080fd5b81518015158114610b9c57600080fd5b6000828210156124d9576124d96122ee565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251612506818460208701612383565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65648ec07e268e32cae7f300b49ad34f20106d088445cb9d9b2d62cbd864638308b2a2646970667358221220a409bd9e9574da254aba6b9a5d70db75eb61aad8eecdc8c6bd43cd7caf29999764736f6c63430008090033
[codex:933862] 
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing UUPS upgradeable bytecode for vulnerabilities**
[codex:933862] thinking
[codex:933862] **Tracing internal function addresses**
[codex:933862] exec
[codex:933862] /bin/bash -lc 'which evm' in /tmp/codex-multi-co39754h exited 1 in 6ms:
[codex:933862] 
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Evaluating upgrade security in bytecode**
[codex:933862] 
[codex:933862] I'm inspecting the bytecode to verify if the upgrade functions like `upgradeTo` have proper access control by looking for `onlyOwner` checks and relevant revert strings. I plan to write a minimal Python disassembler to parse the bytecode, identify function entries, and confirm whether upgrade paths are properly protected from unauthorized calls. This approach balances thoroughness with the constraints of a no-network, read-only environment.
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:933862] # extract hex after runtime_bytecode
[codex:933862] m=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata)
[codex:933862] if not m:
[codex:933862]     print('no hex found'); exit()
[codex:933862] hexstr=m.group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={
[codex:933862]     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:933862]     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:933862]     0x20:'SHA3',
[codex:933862]     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:933862]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862]     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:933862]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:933862] }
[codex:933862] for i in range(1,33):
[codex:933862]     opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] # disassemble to list
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op, f'OP{op:02x}')
[codex:933862]     if 0x60 <= op <= 0x7f: # PUSH
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # helper to show around pc
[codex:933862] index={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:933862] 
[codex:933862] def show(start, count=50):
[codex:933862]     # start is pc
[codex:933862]     # find nearest index >= start
[codex:933862]     idx=0
[codex:933862]     for i,(pc,_,_) in enumerate(ops):
[codex:933862]         if pc>=start:
[codex:933862]             idx=i; break
[codex:933862]     for pc,name,data in ops[idx:idx+count]:
[codex:933862]         if data is None:
[codex:933862]             print(f'{pc:06x}: {name}')
[codex:933862]         else:
[codex:933862]             print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] 
[codex:933862] # Show relevant entrypoints
[codex:933862] for target in [0x027c,0x02bc,0x02cf,0x02e4,0x025c,0x029c]:
[codex:933862]     print('\\n=== entry',hex(target),'===')
[codex:933862]     show(target,40)
[codex:933862] 
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 38ms:
[codex:933862] 
[codex:933862] === entry 0x27c ===
[codex:933862] 00027c: JUMPDEST
[codex:933862] 00027d: CALLVALUE
[codex:933862] 00027e: DUP1
[codex:933862] 00027f: ISZERO
[codex:933862] 000280: PUSH2 0x0288
[codex:933862] 000283: JUMPI
[codex:933862] 000284: PUSH1 0x00
[codex:933862] 000286: DUP1
[codex:933862] 000287: REVERT
[codex:933862] 000288: JUMPDEST
[codex:933862] 000289: POP
[codex:933862] 00028a: PUSH2 0x01b0
[codex:933862] 00028d: PUSH2 0x0297
[codex:933862] 000290: CALLDATASIZE
[codex:933862] 000291: PUSH1 0x04
[codex:933862] 000293: PUSH2 0x205f
[codex:933862] 000296: JUMP
[codex:933862] 000297: JUMPDEST
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Inspecting internal functions via disassembly**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:933862] import re
[codex:933862] m=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata)
[codex:933862] hexstr=m.group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # build opcode map
[codex:933862] opnames={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:933862]     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:933862]     0x20:'SHA3',
[codex:933862]     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:933862]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862]     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:933862]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # helper to show range
[codex:933862] 
[codex:933862] def show(start, count=80):
[codex:933862]     # find index
[codex:933862]     idx=0
[codex:933862]     for i,(pc,_,_) in enumerate(ops):
[codex:933862]         if pc>=start:
[codex:933862]             idx=i; break
[codex:933862]     for pc,name,data in ops[idx:idx+count]:
[codex:933862]         if data is None:
[codex:933862]             print(f'{pc:06x}: {name}')
[codex:933862]         else:
[codex:933862]             print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] 
[codex:933862] for target in [0x051b,0x059e,0x067e,0x06a1,0x076e,0x0821,0x0a4c,0x0a60]:
[codex:933862]     print('\\n===',hex(target),'===')
[codex:933862]     show(target,90)
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 35ms:
[codex:933862] 
[codex:933862] === 0x51b ===
[codex:933862] 00051b: JUMPDEST
[codex:933862] 00051c: PUSH1 0x01
[codex:933862] 00051e: PUSH1 0x01
[codex:933862] 000520: PUSH1 0xa0
[codex:933862] 000522: SHL
[codex:933862] 000523: SUB
[codex:933862] 000524: DUP2
[codex:933862] 000525: AND
[codex:933862] 000526: CALLER
[codex:933862] 000527: EQ
[codex:933862] 000528: PUSH2 0x0590
[codex:933862] 00052b: JUMPI
[codex:933862] 00052c: PUSH1 0x40
[codex:933862] 00052e: MLOAD
[codex:933862] 00052f: PUSH3 0x461bcd
[codex:933862] 000533: PUSH1 0xe5
[codex:933862] 000535: SHL
[codex:933862] 000536: DUP2
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing upgrade function and selector mapping**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={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:933862]     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:933862]     0x20:'SHA3',
[codex:933862]     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:933862]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862]     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:933862]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # helper
[codex:933862] 
[codex:933862] def show_range(start,end):
[codex:933862]     for pc,name,data in ops:
[codex:933862]         if pc<start: continue
[codex:933862]         if pc>end: break
[codex:933862]         if data is None:
[codex:933862]             print(f'{pc:06x}: {name}')
[codex:933862]         else:
[codex:933862]             print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] 
[codex:933862] show_range(0x0630,0x067d)
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 34ms:
[codex:933862] 000630: JUMPDEST
[codex:933862] 000631: PUSH1 0x01
[codex:933862] 000633: PUSH1 0x01
[codex:933862] 000635: PUSH1 0xa0
[codex:933862] 000637: SHL
[codex:933862] 000638: SUB
[codex:933862] 000639: AND
[codex:933862] 00063a: EQ
[codex:933862] 00063b: PUSH2 0x0656
[codex:933862] 00063e: JUMPI
[codex:933862] 00063f: PUSH1 0x40
[codex:933862] 000641: MLOAD
[codex:933862] 000642: PUSH3 0x461bcd
[codex:933862] 000646: PUSH1 0xe5
[codex:933862] 000648: SHL
[codex:933862] 000649: DUP2
[codex:933862] 00064a: MSTORE
[codex:933862] 00064b: PUSH1 0x04
[codex:933862] 00064d: ADD
[codex:933862] 00064e: PUSH2 0x0587
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Investigating function addresses**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={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:933862] 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:933862] 0x20:'SHA3',
[codex:933862] 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:933862] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862] 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:933862] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # show around 0x1090-0x10f0, 0x10bb,0x10c3
[codex:933862] 
[codex:933862] def show(start, count=80):
[codex:933862]     # find index
[codex:933862]     idx=0
[codex:933862]     for i,(pc,_,_) in enumerate(ops):
[codex:933862]         if pc>=start:
[codex:933862]             idx=i; break
[codex:933862]     for pc,name,data in ops[idx:idx+count]:
[codex:933862]         if data is None:
[codex:933862]             print(f'{pc:06x}: {name}')
[codex:933862]         else:
[codex:933862]             print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] 
[codex:933862] print('=== around 0x1090 ===')
[codex:933862] show(0x1090,80)
[codex:933862] print('\\n=== around 0x10bb ===')
[codex:933862] show(0x10b0,80)
[codex:933862] print('\\n=== around 0x10c3 ===')
[codex:933862] show(0x10c0,80)
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 31ms:
[codex:933862] === around 0x1090 ===
[codex:933862] 001092: SWAP1
[codex:933862] 001093: DUP3
[codex:933862] 001094: PUSH2 0x1616
[codex:933862] 001097: JUMP
[codex:933862] 001098: JUMPDEST
[codex:933862] 001099: PUSH2 0x10a2
[codex:933862] 00109c: DUP3
[codex:933862] 00109d: DUP3
[codex:933862] 00109e: PUSH2 0x162b
[codex:933862] 0010a1: JUMP
[codex:933862] 0010a2: JUMPDEST
[codex:933862] 0010a3: PUSH1 0x00
[codex:933862] 0010a5: DUP3
[codex:933862] 0010a6: DUP2
[codex:933862] 0010a7: MSTORE
[codex:933862] 0010a8: PUSH2 0x012d
[codex:933862] 0010ab: PUSH1 0x20
[codex:933862] 0010ad: MSTORE
[codex:933862] 0010ae: PUSH1 0x40
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing upgrade and delegatecall security**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # disassemble with pc
[codex:933862] opnames={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:933862] 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:933862] 0x20:'SHA3',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:933862] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862] 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:933862] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # list delegatecall occurrences
[codex:933862] for i,(pc,name,data) in enumerate(ops):
[codex:933862]     if name=='DELEGATECALL':
[codex:933862]         print('DELEGATECALL at',hex(pc))
[codex:933862]         # show previous few ops
[codex:933862]         for pc2,name2,data2 in ops[max(0,i-8):i+2]:
[codex:933862]             if data2 is None:
[codex:933862]                 print(f'  {pc2:06x}: {name2}')
[codex:933862]             else:
[codex:933862]                 print(f'  {pc2:06x}: {name2} 0x{data2.hex()}')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 34ms:
[codex:933862] DELEGATECALL at 0x1c53
[codex:933862]   001c4a: PUSH1 0x40
[codex:933862]   001c4c: MLOAD
[codex:933862]   001c4d: DUP1
[codex:933862]   001c4e: DUP4
[codex:933862]   001c4f: SUB
[codex:933862]   001c50: DUP2
[codex:933862]   001c51: DUP6
[codex:933862]   001c52: GAS
[codex:933862]   001c53: DELEGATECALL
[codex:933862]   001c54: SWAP2
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Inspecting delegatecall usage**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={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:933862] 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:933862] 0x20:'SHA3',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:933862] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:933862] 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:933862] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # show around 0x1c20-0x1c90
[codex:933862] for pc,name,data in ops:
[codex:933862]     if pc<0x1c20: continue
[codex:933862]     if pc>0x1c90: break
[codex:933862]     if data is None:
[codex:933862]         print(f'{pc:06x}: {name}')
[codex:933862]     else:
[codex:933862]         print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 31ms:
[codex:933862] 001c20: PUSH1 0x64
[codex:933862] 001c22: DUP3
[codex:933862] 001c23: ADD
[codex:933862] 001c24: MSTORE
[codex:933862] 001c25: PUSH1 0x84
[codex:933862] 001c27: ADD
[codex:933862] 001c28: PUSH2 0x0587
[codex:933862] 001c2b: JUMP
[codex:933862] 001c2c: JUMPDEST
[codex:933862] 001c2d: PUSH1 0x00
[codex:933862] 001c2f: DUP1
[codex:933862] 001c30: DUP5
[codex:933862] 001c31: PUSH1 0x01
[codex:933862] 001c33: PUSH1 0x01
[codex:933862] 001c35: PUSH1 0xa0
[codex:933862] 001c37: SHL
[codex:933862] 001c38: SUB
[codex:933862] 001c39: AND
[codex:933862] 001c3a: DUP5
[codex:933862] 001c3b: PUSH1 0x40
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing access controls and initialization risks**
[codex:933862] 
[codex:933862] I'm carefully examining the bytecode to identify if upgrade functions like `upgradeToAndCall` are properly restricted and whether `initialize` functions can be improperly invoked. I see typical patterns without explicit owner checks on upgrade calls but enforced `onlyProxy` protections, and note the common risk around uninitialized proxies that could allow takeover if initialization is missed. Overall, I find no concrete vulnerabilities in upgrade or delegatecall patterns but highlight the known initialization risk as an operational consideration rather than a direct code flaw.
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # check for SELFDESTRUCT opcode 0xff
[codex:933862] print('SELFDESTRUCT count', sum(1 for b in code if b==0xff))
[codex:933862] # check for CALL opcode counts
[codex:933862] print('CALL', sum(1 for b in code if b==0xf1), 'DELEGATECALL', sum(1 for b in code if b==0xf4), 'STATICCALL', sum(1 for b in code if b==0xfa))
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 28ms:
[codex:933862] SELFDESTRUCT count 83
[codex:933862] CALL 4 DELEGATECALL 3 STATICCALL 2
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Searching for SELFDESTRUCT opcodes**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # disassemble
[codex:933862] opnames={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:933862] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] pc=0
[codex:933862] selfdestruct_pcs=[]
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op)
[codex:933862]     if name=='SELFDESTRUCT':
[codex:933862]         selfdestruct_pcs.append(pc)
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         pc+=1+(op-0x5f)
[codex:933862]     else:
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] print('selfdestruct opcodes', selfdestruct_pcs)
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 31ms:
[codex:933862] selfdestruct opcodes []
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Investigating CALL opcodes for reentrancy risks**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # disassemble
[codex:933862] opnames={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:933862] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # find CALL opcodes
[codex:933862] for i,(pc,name,data) in enumerate(ops):
[codex:933862]     if name=='CALL':
[codex:933862]         print('CALL at',hex(pc))
[codex:933862]         for pc2,name2,data2 in ops[max(0,i-10):i+3]:
[codex:933862]             if data2 is None:
[codex:933862]                 print(f'  {pc2:06x}: {name2}')
[codex:933862]             else:
[codex:933862]                 print(f'  {pc2:06x}: {name2} 0x{data2.hex()}')
[codex:933862]         print('---')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 39ms:
[codex:933862] CALL at 0x1290
[codex:933862]   001283: DUP1
[codex:933862]   001284: ISZERO
[codex:933862]   001285: PUSH2 0x128d
[codex:933862]   001288: JUMPI
[codex:933862]   001289: PUSH1 0x00
[codex:933862]   00128b: DUP1
[codex:933862]   00128c: REVERT
[codex:933862]   00128d: JUMPDEST
[codex:933862]   00128e: POP
[codex:933862]   00128f: GAS
[codex:933862]   001290: CALL
[codex:933862]   001291: ISZERO
[codex:933862]   001292: DUP1
[codex:933862] ---
[codex:933862] CALL at 0x14e4
[codex:933862]   0014d8: PUSH1 0x00
[codex:933862]   0014da: PUSH1 0x40
[codex:933862]   0014dc: MLOAD
[codex:933862]   0014dd: DUP1
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing CALL instructions**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # disassemble
[codex:933862] opnames={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:933862] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # show around 0x1260-0x12c0
[codex:933862] for pc,name,data in ops:
[codex:933862]     if pc<0x1260: continue
[codex:933862]     if pc>0x12c0: break
[codex:933862]     if data is None:
[codex:933862]         print(f'{pc:06x}: {name}')
[codex:933862]     else:
[codex:933862]         print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 36ms:
[codex:933862] 001260: MSTORE
[codex:933862] 001261: PUSH1 0x44
[codex:933862] 001263: DUP3
[codex:933862] 001264: ADD
[codex:933862] 001265: DUP4
[codex:933862] 001266: SWAP1
[codex:933862] 001267: MSTORE
[codex:933862] 001268: DUP5
[codex:933862] 001269: AND
[codex:933862] 00126a: SWAP1
[codex:933862] 00126b: PUSH4 0x42842e0e
[codex:933862] 001270: SWAP1
[codex:933862] 001271: PUSH1 0x64
[codex:933862] 001273: ADD
[codex:933862] 001274: PUSH1 0x00
[codex:933862] 001276: PUSH1 0x40
[codex:933862] 001278: MLOAD
[codex:933862] 001279: DUP1
[codex:933862] 00127a: DUP4
[codex:933862] 00127b: SUB
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing low-level contract calls and security**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # show around 0x1040-0x1080
[codex:933862] for pc,name,data in ops:
[codex:933862]     if pc<0x1040: continue
[codex:933862]     if pc>0x1080: break
[codex:933862]     if data is None:
[codex:933862]         print(f'{pc:06x}: {name}')
[codex:933862]     else:
[codex:933862]         print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 32ms:
[codex:933862] 001041: PUSH1 0xe0
[codex:933862] 001043: SHL
[codex:933862] 001044: SUB
[codex:933862] 001045: NOT
[codex:933862] 001046: DUP4
[codex:933862] 001047: AND
[codex:933862] 001048: EQ
[codex:933862] 001049: PUSH2 0x048f
[codex:933862] 00104c: JUMP
[codex:933862] 00104d: JUMPDEST
[codex:933862] 00104e: PUSH2 0x067b
[codex:933862] 001051: DUP2
[codex:933862] 001052: CALLER
[codex:933862] 001053: PUSH2 0x13cc
[codex:933862] 001056: JUMP
[codex:933862] 001057: JUMPDEST
[codex:933862] 001058: PUSH2 0x04e0
[codex:933862] 00105b: PUSH1 0x01
[codex:933862] 00105d: PUSH1 0x01
[codex:933862] 00105f: PUSH1 0xa0
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing upgrade and access control functions**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',Path('BYTECODE_BUNDLE.txt').read_text()).group(1)[2:]
[codex:933862] code=bytes.fromhex(hexstr)
[codex:933862] # opcode map
[codex:933862] opnames={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:933862] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:933862] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:933862] for i in range(1,17):
[codex:933862]     opnames[0x7f+i]=f'DUP{i}'
[codex:933862]     opnames[0x8f+i]=f'SWAP{i}'
[codex:933862] 
[codex:933862] ops=[]
[codex:933862] pc=0
[codex:933862] while pc<len(code):
[codex:933862]     op=code[pc]
[codex:933862]     name=opnames.get(op,f'OP{op:02x}')
[codex:933862]     if 0x60<=op<=0x7f:
[codex:933862]         n=op-0x5f
[codex:933862]         data=code[pc+1:pc+1+n]
[codex:933862]         ops.append((pc,name,data))
[codex:933862]         pc+=1+n
[codex:933862]     else:
[codex:933862]         ops.append((pc,name,None))
[codex:933862]         pc+=1
[codex:933862] 
[codex:933862] # show around 0x0afd-0x0b80
[codex:933862] for pc,name,data in ops:
[codex:933862]     if pc<0x0afd: continue
[codex:933862]     if pc>0x0b80: break
[codex:933862]     if data is None:
[codex:933862]         print(f'{pc:06x}: {name}')
[codex:933862]     else:
[codex:933862]         print(f'{pc:06x}: {name} 0x{data.hex()}')
[codex:933862] PY" in /tmp/codex-multi-co39754h succeeded in 30ms:
[codex:933862] 000afd: JUMPDEST
[codex:933862] 000afe: PUSH1 0x00
[codex:933862] 000b00: DUP1
[codex:933862] 000b01: SLOAD
[codex:933862] 000b02: PUSH1 0xff
[codex:933862] 000b04: NOT
[codex:933862] 000b05: AND
[codex:933862] 000b06: PUSH1 0x01
[codex:933862] 000b08: OR
[codex:933862] 000b09: SWAP1
[codex:933862] 000b0a: SSTORE
[codex:933862] 000b0b: DUP1
[codex:933862] 000b0c: ISZERO
[codex:933862] 000b0d: PUSH2 0x0b20
[codex:933862] 000b10: JUMPI
[codex:933862] 000b11: PUSH1 0x00
[codex:933862] 000b13: DUP1
[codex:933862] 000b14: SLOAD
[codex:933862] 000b15: PUSH2 0xff00
[codex:933862] 000b18: NOT
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing initialization ownership risks**
[codex:933862] exec
[codex:933862] /bin/bash -lc 'nl -ba BYTECODE_BUNDLE.txt' in /tmp/codex-multi-co39754h succeeded in 5ms:
[codex:933862]      1	Runtime bytecode bundle for best-effort auditing.
[codex:933862]      2	Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:933862]      3	
[codex:933862]      4	FILE: runtime_bytecode.hex
[codex:933862]      5	0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a217fddf1161006f578063a217fddf146103c2578063ca15c873146103d7578063d547741f146103f7578063e6930a2214610417578063eb14f53e14610437578063f2fde38b1461044a57600080fd5b8063715018a61461030457806377f050b0146103195780638129fc1c1461033b5780638da5cb5b146103505780639010d07c1461038257806391d14854146103a257600080fd5b806336568abe1161010857806336568abe1461025c5780633659cfe61461027c5780633bd8db241461029c5780634f1ef286146102bc57806352d1902d146102cf57806357a987a3146102e457600080fd5b806301ffc9a71461015b57806302cba7411461019057806305b1137b146101b2578063150b7a02146101c5578063248a9ca3146101fe5780632f2ff15d1461023c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611e5b565b61046a565b60405190151581526020015b60405180910390f35b34801561019c57600080fd5b506101b06101ab366004611e9a565b610495565b005b6101b06101c0366004611edb565b6104be565b3480156101d157600080fd5b506101e56101e0366004611faa565b6104e5565b6040516001600160e01b03199091168152602001610187565b34801561020a57600080fd5b5061022e610219366004612016565b600090815260fb602052604090206001015490565b604051908152602001610187565b34801561024857600080fd5b506101b061025736600461202f565b6104f6565b34801561026857600080fd5b506101b061027736600461202f565b61051b565b34801561028857600080fd5b506101b061029736600461205f565b61059e565b3480156102a857600080fd5b506101b06102b7366004611e9a565b61067e565b6101b06102ca36600461207c565b6106a1565b3480156102db57600080fd5b5061022e61076e565b3480156102f057600080fd5b506101b06102ff366004612118565b610821565b34801561031057600080fd5b506101b0610a4c565b34801561032557600080fd5b5061022e60008051602061255883398151915281565b34801561034757600080fd5b506101b0610a60565b34801561035c57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610187565b34801561038e57600080fd5b5061036a61039d3660046121b2565b610b83565b3480156103ae57600080fd5b5061017b6103bd36600461202f565b610ba3565b3480156103ce57600080fd5b5061022e600081565b3480156103e357600080fd5b5061022e6103f2366004612016565b610bce565b34801561040357600080fd5b506101b061041236600461202f565b610be6565b34801561042357600080fd5b506101b0610432366004612118565b610c0b565b6101b06104453660046121d4565b610e1a565b34801561045657600080fd5b506101b061046536600461205f565b610f93565b60006001600160e01b03198216635a05180f60e01b148061048f575061048f82611018565b92915050565b6000805160206125588339815191526104ad8161104d565b6104b8848484611057565b50505050565b6000805160206125588339815191526104d68161104d565b6104e0838361106b565b505050565b630a85bd0160e11b5b949350505050565b600082815260fb60205260409020600101546105118161104d565b6104e08383611075565b6001600160a01b03811633146105905760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61059a8282611098565b5050565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156105e75760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610630600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146106565760405162461bcd60e51b81526004016105879061228c565b61065f816110bb565b6040805160008082526020820190925261067b918391906110c3565b50565b6000805160206125588339815191526106968161104d565b6104b884848461123d565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156106ea5760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610733600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146107595760405162461bcd60e51b81526004016105879061228c565b610762826110bb565b61059a828260016110c3565b6000306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163161461080e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610587565b5060008051602061251183398151915290565b6000805160206125588339815191526108398161104d565b8584146108b85760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20746f6b656e732f706179656573206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b8382146109395760405162461bcd60e51b815260206004820152604360248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a207061796565732f746f6b656e496473206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610587565b836109b65760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20706179656573206c656e677468206d757374206265206774207a65726064820152606f60f81b608482015260a401610587565b60005b84811015610a4257610a308888838181106109d6576109d66122d8565b90506020020160208101906109eb919061205f565b8787848181106109fd576109fd6122d8565b9050602002016020810190610a12919061205f565b868685818110610a2457610a246122d8565b9050602002013561123d565b80610a3a81612304565b9150506109b9565b5050505050505050565b610a546112aa565b610a5e6000611304565b565b600054610100900460ff1615808015610a805750600054600160ff909116105b80610a9a5750303b158015610a9a575060005460ff166001145b610afd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610587565b6000805460ff191660011790558015610b20576000805461ff0019166101001790555b610b28611356565b610b30611385565b610b3b6000336113ac565b801561067b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600082815261012d60205260408120610b9c90836113b6565b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815261012d6020526040812061048f906113c2565b600082815260fb6020526040902060010154610c018161104d565b6104e08383611098565b600080516020612558833981519152610c238161104d565b858414610c9a576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20746f6b656e732f706179656573206c656e677468206d69736d617463686064820152608401610587565b838214610d195760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610d8e576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610a4257610e08888883818110610dae57610dae6122d8565b9050602002016020810190610dc3919061205f565b878784818110610dd557610dd56122d8565b9050602002016020810190610dea919061205f565b868685818110610dfc57610dfc6122d8565b90506020020135611057565b80610e1281612304565b915050610d91565b600080516020612558833981519152610e328161104d565b838214610eb15760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610f26576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610f8b57610f79868683818110610f4657610f466122d8565b9050602002016020810190610f5b919061205f565b858584818110610f6d57610f6d6122d8565b9050602002013561106b565b80610f8381612304565b915050610f29565b505050505050565b610f9b6112aa565b6001600160a01b0381166110005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610587565b61067b81611304565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b148061048f57506301ffc9a760e01b6001600160e01b031983161461048f565b61067b81336113cc565b6104e06001600160a01b0384168383611425565b61059a8282611477565b61107f8282611590565b600082815261012d602052604090206104e09082611616565b6110a2828261162b565b600082815261012d602052604090206104e09082611692565b61067b6112aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f6576104e0836116a7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112f57600080fd5b505afa92505050801561115f575060408051601f3d908101601f1916820190925261115c9181019061231f565b60015b6111c25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610587565b60008051602061251183398151915281146112315760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610587565b506104e0838383611743565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390528416906342842e0e90606401600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050505050565b6097546001600160a01b03163314610a5e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610587565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661137d5760405162461bcd60e51b815260040161058790612338565b610a5e611768565b600054610100900460ff16610a5e5760405162461bcd60e51b815260040161058790612338565b61059a8282611075565b6000610b9c8383611798565b600061048f825490565b6113d68282610ba3565b61059a576113e3816117c2565b6113ee8360206117d4565b6040516020016113ff9291906123af565b60408051601f198184030181529082905262461bcd60e51b825261058791600401612424565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104e0908490611970565b804710156114c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610587565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611514576040519150601f19603f3d011682016040523d82523d6000602084013e611519565b606091505b50509050806104e05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610587565b61159a8282610ba3565b61059a57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115d23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610b9c836001600160a01b038416611a42565b6116358282610ba3565b1561059a57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610b9c836001600160a01b038416611a91565b6001600160a01b0381163b6117145760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610587565b60008051602061251183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61174c83611b84565b6000825111806117595750805b156104e0576104b88383611bc4565b600054610100900460ff1661178f5760405162461bcd60e51b815260040161058790612338565b610a5e33611304565b60008260000182815481106117af576117af6122d8565b9060005260206000200154905092915050565b606061048f6001600160a01b03831660145b606060006117e3836002612457565b6117ee906002612476565b67ffffffffffffffff81111561180657611806611f07565b6040519080825280601f01601f191660200182016040528015611830576020820181803683370190505b509050600360fc1b8160008151811061184b5761184b6122d8565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061187a5761187a6122d8565b60200101906001600160f81b031916908160001a905350600061189e846002612457565b6118a9906001612476565b90505b6001811115611921576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106118dd576118dd6122d8565b1a60f81b8282815181106118f3576118f36122d8565b60200101906001600160f81b031916908160001a90535060049490941c9361191a8161248e565b90506118ac565b508315610b9c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610587565b60006119c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611cb89092919063ffffffff16565b8051909150156104e057808060200190518101906119e391906124a5565b6104e05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610587565b6000818152600183016020526040812054611a895750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561048f565b50600061048f565b60008181526001830160205260408120548015611b7a576000611ab56001836124c7565b8554909150600090611ac9906001906124c7565b9050818114611b2e576000866000018281548110611ae957611ae96122d8565b9060005260206000200154905080876000018481548110611b0c57611b0c6122d8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b3f57611b3f6124de565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061048f565b600091505061048f565b611b8d816116a7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611c2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610587565b600080846001600160a01b031684604051611c4791906124f4565b600060405180830381855af49150503d8060008114611c82576040519150601f19603f3d011682016040523d82523d6000602084013e611c87565b606091505b5091509150611caf828260405180606001604052806027815260200161253160279139611cc7565b95945050505050565b60606104ee8484600085611ce0565b60608315611cd6575081610b9c565b610b9c8383611dbb565b606082471015611d415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610587565b600080866001600160a01b03168587604051611d5d91906124f4565b60006040518083038185875af1925050503d8060008114611d9a576040519150601f19603f3d011682016040523d82523d6000602084013e611d9f565b606091505b5091509150611db087838387611de5565b979650505050505050565b815115611dcb5781518083602001fd5b8060405162461bcd60e51b81526004016105879190612424565b60608315611e51578251611e4a576001600160a01b0385163b611e4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610587565b50816104ee565b6104ee8383611dbb565b600060208284031215611e6d57600080fd5b81356001600160e01b031981168114610b9c57600080fd5b6001600160a01b038116811461067b57600080fd5b600080600060608486031215611eaf57600080fd5b8335611eba81611e85565b92506020840135611eca81611e85565b929592945050506040919091013590565b60008060408385031215611eee57600080fd5b8235611ef981611e85565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f2e57600080fd5b813567ffffffffffffffff80821115611f4957611f49611f07565b604051601f8301601f19908116603f01168101908282118183101715611f7157611f71611f07565b81604052838152866020858801011115611f8a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215611fc057600080fd5b8435611fcb81611e85565b93506020850135611fdb81611e85565b925060408501359150606085013567ffffffffffffffff811115611ffe57600080fd5b61200a87828801611f1d565b91505092959194509250565b60006020828403121561202857600080fd5b5035919050565b6000806040838503121561204257600080fd5b82359150602083013561205481611e85565b809150509250929050565b60006020828403121561207157600080fd5b8135610b9c81611e85565b6000806040838503121561208f57600080fd5b823561209a81611e85565b9150602083013567ffffffffffffffff8111156120b657600080fd5b6120c285828601611f1d565b9150509250929050565b60008083601f8401126120de57600080fd5b50813567ffffffffffffffff8111156120f657600080fd5b6020830191508360208260051b850101111561211157600080fd5b9250929050565b6000806000806000806060878903121561213157600080fd5b863567ffffffffffffffff8082111561214957600080fd5b6121558a838b016120cc565b9098509650602089013591508082111561216e57600080fd5b61217a8a838b016120cc565b9096509450604089013591508082111561219357600080fd5b506121a089828a016120cc565b979a9699509497509295939492505050565b600080604083850312156121c557600080fd5b50508035926020909101359150565b600080600080604085870312156121ea57600080fd5b843567ffffffffffffffff8082111561220257600080fd5b61220e888389016120cc565b9096509450602087013591508082111561222757600080fd5b50612234878288016120cc565b95989497509550505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612318576123186122ee565b5060010190565b60006020828403121561233157600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561239e578181015183820152602001612386565b838111156104b85750506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e7816017850160208801612383565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612418816028840160208801612383565b01602801949350505050565b6020815260008251806020840152612443816040850160208701612383565b601f01601f19169190910160400192915050565b6000816000190483118215151615612471576124716122ee565b500290565b60008219821115612489576124896122ee565b500190565b60008161249d5761249d6122ee565b506000190190565b6000602082840312156124b757600080fd5b81518015158114610b9c57600080fd5b6000828210156124d9576124d96122ee565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251612506818460208701612383565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65648ec07e268e32cae7f300b49ad34f20106d088445cb9d9b2d62cbd864638308b2a2646970667358221220a409bd9e9574da254aba6b9a5d70db75eb61aad8eecdc8c6bd43cd7caf29999764736f6c63430008090033
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing bytecode for vulnerabilities**
[codex:933862] exec
[codex:933862] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-co39754h succeeded in 5ms:
[codex:933862] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Evaluating initialization access risk**
[codex:933862] codex
[codex:933862] {"no_findings":false,"summary":"Found a conditional initialization risk: the public initializer can assign privileged roles if a proxy is deployed without being initialized immediately.","findings":[{"severity":"low","category":"auth","title":"Public initializer can be claimed if proxy is left uninitialized","exploit_scenario":"If a proxy is deployed without calling `initialize()` atomically, any account can call the public initializer (selector 0x8129fc1c) and become the owner/admin, gaining upgrade or role control.","recommendation":"Ensure initialization is executed in the deployment transaction (e.g., constructor or factory init call). Consider disabling initializers on the implementation to prevent accidental setup on the logic contract.","evidence":"Dispatch exposes selector 0x8129fc1c (`...8129fc1c1461033b...610a60...`). The initializer routine uses CALLER as an input (`...610b3b6000336113ac...`) without any access-control gate beyond the initializer guard, indicating msg.sender is used to set privileged state.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:933862] tokens used
[codex:933862] 85,322
[codex:933862] {"no_findings":false,"summary":"Found a conditional initialization risk: the public initializer can assign privileged roles if a proxy is deployed without being initialized immediately.","findings":[{"severity":"low","category":"auth","title":"Public initializer can be claimed if proxy is left uninitialized","exploit_scenario":"If a proxy is deployed without calling `initialize()` atomically, any account can call the public initializer (selector 0x8129fc1c) and become the owner/admin, gaining upgrade or role control.","recommendation":"Ensure initialization is executed in the deployment transaction (e.g., constructor or factory init call). Consider disabling initializers on the implementation to prevent accidental setup on the logic contract.","evidence":"Dispatch exposes selector 0x8129fc1c (`...8129fc1c1461033b...610a60...`). The initializer routine uses CALLER as an input (`...610b3b6000336113ac...`) without any access-control gate beyond the initializer guard, indicating msg.sender is used to set privileged state.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T15:22:04.066474+00:00",
        "returncode": 0
    },
    "summary": "Found a conditional initialization risk: the public initializer can assign privileged roles if a proxy is deployed without being initialized immediately.",
    "raw_final": {
        "summary": "Found a conditional initialization risk: the public initializer can assign privileged roles if a proxy is deployed without being initialized immediately.",
        "findings": [
            {
                "title": "Public initializer can be claimed if proxy is left uninitialized",
                "category": "auth",
                "evidence": "Dispatch exposes selector 0x8129fc1c (`...8129fc1c1461033b...610a60...`). The initializer routine uses CALLER as an input (`...610b3b6000336113ac...`) without any access-control gate beyond the initializer guard, indicating msg.sender is used to set privileged state.",
                "severity": "low",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Ensure initialization is executed in the deployment transaction (e.g., constructor or factory init call). Consider disabling initializers on the implementation to prevent accidental setup on the logic contract.",
                "exploit_scenario": "If a proxy is deployed without calling `initialize()` atomically, any account can call the public initializer (selector 0x8129fc1c) and become the owner/admin, gaining upgrade or role control."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
8
Total opcodes
5393
Flags
delegatecall_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x014f
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x715018a6
00000019: GT
0000001a: PUSH2 0x00b6
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xa217fddf
00000024: GT
00000025: PUSH2 0x006f
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa217fddf
0000002f: EQ
00000030: PUSH2 0x03c2
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xca15c873
0000003a: EQ
0000003b: PUSH2 0x03d7
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xd547741f
00000045: EQ
00000046: PUSH2 0x03f7
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe6930a22
00000050: EQ
00000051: PUSH2 0x0417
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xeb14f53e
0000005b: EQ
0000005c: PUSH2 0x0437
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xf2fde38b
00000066: EQ
00000067: PUSH2 0x044a
0000006a: JUMPI
0000006b: PUSH1 0x00
0000006d: DUP1
0000006e: REVERT
0000006f: JUMPDEST
00000070: DUP1
00000071: PUSH4 0x715018a6
00000076: EQ
00000077: PUSH2 0x0304
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x77f050b0
00000081: EQ
00000082: PUSH2 0x0319
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x8129fc1c
0000008c: EQ
0000008d: PUSH2 0x033b
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x8da5cb5b
00000097: EQ
00000098: PUSH2 0x0350
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0x9010d07c
000000a2: EQ
000000a3: PUSH2 0x0382
000000a6: JUMPI
000000a7: DUP1
000000a8: PUSH4 0x91d14854
000000ad: EQ
000000ae: PUSH2 0x03a2
000000b1: JUMPI
000000b2: PUSH1 0x00
000000b4: DUP1
000000b5: REVERT
000000b6: JUMPDEST
000000b7: DUP1
000000b8: PUSH4 0x36568abe
000000bd: GT
000000be: PUSH2 0x0108
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x36568abe
000000c8: EQ
000000c9: PUSH2 0x025c
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0x3659cfe6
000000d3: EQ
000000d4: PUSH2 0x027c
000000d7: JUMPI
000000d8: DUP1
000000d9: PUSH4 0x3bd8db24
000000de: EQ
000000df: PUSH2 0x029c
000000e2: JUMPI
000000e3: DUP1
000000e4: PUSH4 0x4f1ef286
000000e9: EQ
000000ea: PUSH2 0x02bc
000000ed: JUMPI
000000ee: DUP1
000000ef: PUSH4 0x52d1902d
000000f4: EQ
000000f5: PUSH2 0x02cf
000000f8: JUMPI
000000f9: DUP1
000000fa: PUSH4 0x57a987a3
000000ff: EQ
00000100: PUSH2 0x02e4
00000103: JUMPI
00000104: PUSH1 0x00
00000106: DUP1
00000107: REVERT
00000108: JUMPDEST
00000109: DUP1
0000010a: PUSH4 0x01ffc9a7
0000010f: EQ
00000110: PUSH2 0x015b
00000113: JUMPI
00000114: DUP1
00000115: PUSH4 0x02cba741
0000011a: EQ
0000011b: PUSH2 0x0190
0000011e: JUMPI
0000011f: DUP1
00000120: PUSH4 0x05b1137b
00000125: EQ
00000126: PUSH2 0x01b2
00000129: JUMPI
0000012a: DUP1
0000012b: PUSH4 0x150b7a02
00000130: EQ
00000131: PUSH2 0x01c5
00000134: JUMPI
00000135: DUP1
00000136: PUSH4 0x248a9ca3
0000013b: EQ
0000013c: PUSH2 0x01fe
0000013f: JUMPI
00000140: DUP1
00000141: PUSH4 0x2f2ff15d
00000146: EQ
00000147: PUSH2 0x023c
0000014a: JUMPI
0000014b: PUSH1 0x00
0000014d: DUP1
0000014e: REVERT
0000014f: JUMPDEST
00000150: CALLDATASIZE
00000151: PUSH2 0x0156
00000154: JUMPI
00000155: STOP
00000156: JUMPDEST
00000157: PUSH1 0x00
00000159: DUP1
0000015a: REVERT
0000015b: JUMPDEST
0000015c: CALLVALUE
0000015d: DUP1
0000015e: ISZERO
0000015f: PUSH2 0x0167
00000162: JUMPI
00000163: PUSH1 0x00
00000165: DUP1
00000166: REVERT
00000167: JUMPDEST
00000168: POP
00000169: PUSH2 0x017b
0000016c: PUSH2 0x0176
0000016f: CALLDATASIZE
00000170: PUSH1 0x04
00000172: PUSH2 0x1e5b
00000175: JUMP
00000176: JUMPDEST
00000177: PUSH2 0x046a
0000017a: JUMP
0000017b: JUMPDEST
0000017c: PUSH1 0x40
0000017e: MLOAD
0000017f: SWAP1
00000180: ISZERO
00000181: ISZERO
00000182: DUP2
00000183: MSTORE
00000184: PUSH1 0x20
00000186: ADD
00000187: JUMPDEST
00000188: PUSH1 0x40
0000018a: MLOAD
0000018b: DUP1
0000018c: SWAP2
0000018d: SUB
0000018e: SWAP1
0000018f: RETURN
00000190: JUMPDEST
00000191: CALLVALUE
00000192: DUP1
00000193: ISZERO
00000194: PUSH2 0x019c
00000197: JUMPI
00000198: PUSH1 0x00
0000019a: DUP1
0000019b: REVERT
0000019c: JUMPDEST
0000019d: POP
0000019e: PUSH2 0x01b0
000001a1: PUSH2 0x01ab
000001a4: CALLDATASIZE
000001a5: PUSH1 0x04
000001a7: PUSH2 0x1e9a
000001aa: JUMP
000001ab: JUMPDEST
000001ac: PUSH2 0x0495
000001af: JUMP
000001b0: JUMPDEST
000001b1: STOP
000001b2: JUMPDEST
000001b3: PUSH2 0x01b0
000001b6: PUSH2 0x01c0
000001b9: CALLDATASIZE
000001ba: PUSH1 0x04
000001bc: PUSH2 0x1edb
000001bf: JUMP
000001c0: JUMPDEST
000001c1: PUSH2 0x04be
000001c4: JUMP
000001c5: JUMPDEST
000001c6: CALLVALUE
000001c7: DUP1
000001c8: ISZERO
000001c9: PUSH2 0x01d1
000001cc: JUMPI
000001cd: PUSH1 0x00
000001cf: DUP1
000001d0: REVERT
000001d1: JUMPDEST
000001d2: POP
000001d3: PUSH2 0x01e5
000001d6: PUSH2 0x01e0
000001d9: CALLDATASIZE
000001da: PUSH1 0x04
000001dc: PUSH2 0x1faa
000001df: JUMP
000001e0: JUMPDEST
000001e1: PUSH2 0x04e5
000001e4: JUMP
000001e5: JUMPDEST
000001e6: PUSH1 0x40
000001e8: MLOAD
000001e9: PUSH1 0x01
000001eb: PUSH1 0x01
000001ed: PUSH1 0xe0
000001ef: SHL
000001f0: SUB
000001f1: NOT
000001f2: SWAP1
000001f3: SWAP2
000001f4: AND
000001f5: DUP2
000001f6: MSTORE
000001f7: PUSH1 0x20
000001f9: ADD
000001fa: PUSH2 0x0187
000001fd: JUMP
000001fe: JUMPDEST
000001ff: CALLVALUE
00000200: DUP1
00000201: ISZERO
00000202: PUSH2 0x020a
00000205: JUMPI
00000206: PUSH1 0x00
00000208: DUP1
00000209: REVERT
0000020a: JUMPDEST
0000020b: POP
0000020c: PUSH2 0x022e
0000020f: PUSH2 0x0219
00000212: CALLDATASIZE
00000213: PUSH1 0x04
00000215: PUSH2 0x2016
00000218: JUMP
00000219: JUMPDEST
0000021a: PUSH1 0x00
0000021c: SWAP1
0000021d: DUP2
0000021e: MSTORE
0000021f: PUSH1 0xfb
00000221: PUSH1 0x20
00000223: MSTORE
00000224: PUSH1 0x40
00000226: SWAP1
00000227: KECCAK256
00000228: PUSH1 0x01
0000022a: ADD
0000022b: SLOAD
0000022c: SWAP1
0000022d: JUMP
0000022e: JUMPDEST
0000022f: PUSH1 0x40
00000231: MLOAD
00000232: SWAP1
00000233: DUP2
00000234: MSTORE
00000235: PUSH1 0x20
00000237: ADD
00000238: PUSH2 0x0187
0000023b: JUMP
0000023c: JUMPDEST
0000023d: CALLVALUE
0000023e: DUP1
0000023f: ISZERO
00000240: PUSH2 0x0248
00000243: JUMPI
00000244: PUSH1 0x00
00000246: DUP1
00000247: REVERT
00000248: JUMPDEST
00000249: POP
0000024a: PUSH2 0x01b0
0000024d: PUSH2 0x0257
00000250: CALLDATASIZE
00000251: PUSH1 0x04
00000253: PUSH2 0x202f
00000256: JUMP
00000257: JUMPDEST
00000258: PUSH2 0x04f6
0000025b: JUMP
0000025c: JUMPDEST
0000025d: CALLVALUE
0000025e: DUP1
0000025f: ISZERO
00000260: PUSH2 0x0268
00000263: JUMPI
00000264: PUSH1 0x00
00000266: DUP1
00000267: REVERT
00000268: JUMPDEST
00000269: POP
0000026a: PUSH2 0x01b0
0000026d: PUSH2 0x0277
00000270: CALLDATASIZE
00000271: PUSH1 0x04
00000273: PUSH2 0x202f
00000276: JUMP
00000277: JUMPDEST
00000278: PUSH2 0x051b
0000027b: JUMP
0000027c: JUMPDEST
0000027d: CALLVALUE
0000027e: DUP1
0000027f: ISZERO
00000280: PUSH2 0x0288
00000283: JUMPI
00000284: PUSH1 0x00
00000286: DUP1
00000287: REVERT
00000288: JUMPDEST
00000289: POP
0000028a: PUSH2 0x01b0
0000028d: PUSH2 0x0297
00000290: CALLDATASIZE
00000291: PUSH1 0x04
00000293: PUSH2 0x205f
00000296: JUMP
00000297: JUMPDEST
00000298: PUSH2 0x059e
0000029b: JUMP
0000029c: JUMPDEST
0000029d: CALLVALUE
0000029e: DUP1
0000029f: ISZERO
000002a0: PUSH2 0x02a8
000002a3: JUMPI
000002a4: PUSH1 0x00
000002a6: DUP1
000002a7: REVERT
000002a8: JUMPDEST
000002a9: POP
000002aa: PUSH2 0x01b0
000002ad: PUSH2 0x02b7
000002b0: CALLDATASIZE
000002b1: PUSH1 0x04
000002b3: PUSH2 0x1e9a
000002b6: JUMP
000002b7: JUMPDEST
000002b8: PUSH2 0x067e
000002bb: JUMP
000002bc: JUMPDEST
000002bd: PUSH2 0x01b0
000002c0: PUSH2 0x02ca
000002c3: CALLDATASIZE
000002c4: PUSH1 0x04
000002c6: PUSH2 0x207c
000002c9: JUMP
000002ca: JUMPDEST
000002cb: PUSH2 0x06a1
000002ce: JUMP
000002cf: JUMPDEST
000002d0: CALLVALUE
000002d1: DUP1
000002d2: ISZERO
000002d3: PUSH2 0x02db
000002d6: JUMPI
000002d7: PUSH1 0x00
000002d9: DUP1
000002da: REVERT
000002db: JUMPDEST
000002dc: POP
000002dd: PUSH2 0x022e
000002e0: PUSH2 0x076e
000002e3: JUMP
000002e4: JUMPDEST
000002e5: CALLVALUE
000002e6: DUP1
000002e7: ISZERO
000002e8: PUSH2 0x02f0
000002eb: JUMPI
000002ec: PUSH1 0x00
000002ee: DUP1
000002ef: REVERT
000002f0: JUMPDEST
000002f1: POP
000002f2: PUSH2 0x01b0
000002f5: PUSH2 0x02ff
000002f8: CALLDATASIZE
000002f9: PUSH1 0x04
000002fb: PUSH2 0x2118
000002fe: JUMP
000002ff: JUMPDEST
00000300: PUSH2 0x0821
00000303: JUMP
00000304: JUMPDEST
00000305: CALLVALUE
00000306: DUP1
00000307: ISZERO
00000308: PUSH2 0x0310
0000030b: JUMPI
0000030c: PUSH1 0x00
0000030e: DUP1
0000030f: REVERT
00000310: JUMPDEST
00000311: POP
00000312: PUSH2 0x01b0
00000315: PUSH2 0x0a4c
00000318: JUMP
00000319: JUMPDEST
0000031a: CALLVALUE
0000031b: DUP1
0000031c: ISZERO
0000031d: PUSH2 0x0325
00000320: JUMPI
00000321: PUSH1 0x00
00000323: DUP1
00000324: REVERT
00000325: JUMPDEST
00000326: POP
00000327: PUSH2 0x022e
0000032a: PUSH1 0x00
0000032c: DUP1
0000032d: MLOAD
0000032e: PUSH1 0x20
00000330: PUSH2 0x2558
00000333: DUP4
00000334: CODECOPY
00000335: DUP2
00000336: MLOAD
00000337: SWAP2
00000338: MSTORE
00000339: DUP2
0000033a: JUMP
0000033b: JUMPDEST
0000033c: CALLVALUE
0000033d: DUP1
0000033e: ISZERO
0000033f: PUSH2 0x0347
00000342: JUMPI
00000343: PUSH1 0x00
00000345: DUP1
00000346: REVERT
00000347: JUMPDEST
00000348: POP
00000349: PUSH2 0x01b0
0000034c: PUSH2 0x0a60
0000034f: JUMP
00000350: JUMPDEST
00000351: CALLVALUE
00000352: DUP1
00000353: ISZERO
00000354: PUSH2 0x035c
00000357: JUMPI
00000358: PUSH1 0x00
0000035a: DUP1
0000035b: REVERT
0000035c: JUMPDEST
0000035d: POP
0000035e: PUSH1 0x97
00000360: SLOAD
00000361: PUSH1 0x01
00000363: PUSH1 0x01
00000365: PUSH1 0xa0
00000367: SHL
00000368: SUB
00000369: AND
0000036a: JUMPDEST
0000036b: PUSH1 0x40
0000036d: MLOAD
0000036e: PUSH1 0x01
00000370: PUSH1 0x01
00000372: PUSH1 0xa0
00000374: SHL
00000375: SUB
00000376: SWAP1
00000377: SWAP2
00000378: AND
00000379: DUP2
0000037a: MSTORE
0000037b: PUSH1 0x20
0000037d: ADD
0000037e: PUSH2 0x0187
00000381: JUMP
00000382: JUMPDEST
00000383: CALLVALUE
00000384: DUP1
00000385: ISZERO
00000386: PUSH2 0x038e
00000389: JUMPI
0000038a: PUSH1 0x00
0000038c: DUP1
0000038d: REVERT
0000038e: JUMPDEST
0000038f: POP
00000390: PUSH2 0x036a
00000393: PUSH2 0x039d
00000396: CALLDATASIZE
00000397: PUSH1 0x04
00000399: PUSH2 0x21b2
0000039c: JUMP
0000039d: JUMPDEST
0000039e: PUSH2 0x0b83
000003a1: JUMP
000003a2: JUMPDEST
000003a3: CALLVALUE
000003a4: DUP1
000003a5: ISZERO
000003a6: PUSH2 0x03ae
000003a9: JUMPI
000003aa: PUSH1 0x00
000003ac: DUP1
000003ad: REVERT
000003ae: JUMPDEST
000003af: POP
000003b0: PUSH2 0x017b
000003b3: PUSH2 0x03bd
000003b6: CALLDATASIZE
000003b7: PUSH1 0x04
000003b9: PUSH2 0x202f
000003bc: JUMP
000003bd: JUMPDEST
000003be: PUSH2 0x0ba3
000003c1: JUMP
000003c2: JUMPDEST
000003c3: CALLVALUE
000003c4: DUP1
000003c5: ISZERO
000003c6: PUSH2 0x03ce
000003c9: JUMPI
000003ca: PUSH1 0x00
000003cc: DUP1
000003cd: REVERT
000003ce: JUMPDEST
000003cf: POP
000003d0: PUSH2 0x022e
000003d3: PUSH1 0x00
000003d5: DUP2
000003d6: JUMP
000003d7: JUMPDEST
000003d8: CALLVALUE
000003d9: DUP1
000003da: ISZERO
000003db: PUSH2 0x03e3
000003de: JUMPI
000003df: PUSH1 0x00
000003e1: DUP1
000003e2: REVERT
000003e3: JUMPDEST
000003e4: POP
000003e5: PUSH2 0x022e
000003e8: PUSH2 0x03f2
000003eb: CALLDATASIZE
000003ec: PUSH1 0x04
000003ee: PUSH2 0x2016
000003f1: JUMP
000003f2: JUMPDEST
000003f3: PUSH2 0x0bce
000003f6: JUMP
000003f7: JUMPDEST
000003f8: CALLVALUE
000003f9: DUP1
000003fa: ISZERO
000003fb: PUSH2 0x0403
000003fe: JUMPI
000003ff: PUSH1 0x00
00000401: DUP1
00000402: REVERT
00000403: JUMPDEST
00000404: POP
00000405: PUSH2 0x01b0
00000408: PUSH2 0x0412
0000040b: CALLDATASIZE
0000040c: PUSH1 0x04
0000040e: PUSH2 0x202f
00000411: JUMP
00000412: JUMPDEST
00000413: PUSH2 0x0be6
00000416: JUMP
00000417: JUMPDEST
00000418: CALLVALUE
00000419: DUP1
0000041a: ISZERO
0000041b: PUSH2 0x0423
0000041e: JUMPI
0000041f: PUSH1 0x00
00000421: DUP1
00000422: REVERT
00000423: JUMPDEST
00000424: POP
00000425: PUSH2 0x01b0
00000428: PUSH2 0x0432
0000042b: CALLDATASIZE
0000042c: PUSH1 0x04
0000042e: PUSH2 0x2118
00000431: JUMP
00000432: JUMPDEST
00000433: PUSH2 0x0c0b
00000436: JUMP
00000437: JUMPDEST
00000438: PUSH2 0x01b0
0000043b: PUSH2 0x0445
0000043e: CALLDATASIZE
0000043f: PUSH1 0x04
00000441: PUSH2 0x21d4
00000444: JUMP
00000445: JUMPDEST
00000446: PUSH2 0x0e1a
00000449: JUMP
0000044a: JUMPDEST
0000044b: CALLVALUE
0000044c: DUP1
0000044d: ISZERO
0000044e: PUSH2 0x0456
00000451: JUMPI
00000452: PUSH1 0x00
00000454: DUP1
00000455: REVERT
00000456: JUMPDEST
00000457: POP
00000458: PUSH2 0x01b0
0000045b: PUSH2 0x0465
0000045e: CALLDATASIZE
0000045f: PUSH1 0x04
00000461: PUSH2 0x205f
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH2 0x0f93
00000469: JUMP
0000046a: JUMPDEST
0000046b: PUSH1 0x00
0000046d: PUSH1 0x01
0000046f: PUSH1 0x01
00000471: PUSH1 0xe0
00000473: SHL
00000474: SUB
00000475: NOT
00000476: DUP3
00000477: AND
00000478: PUSH4 0x5a05180f
0000047d: PUSH1 0xe0
0000047f: SHL
00000480: EQ
00000481: DUP1
00000482: PUSH2 0x048f
00000485: JUMPI
00000486: POP
00000487: PUSH2 0x048f
0000048a: DUP3
0000048b: PUSH2 0x1018
0000048e: JUMP
0000048f: JUMPDEST
00000490: SWAP3
00000491: SWAP2
00000492: POP
00000493: POP
00000494: JUMP
00000495: JUMPDEST
00000496: PUSH1 0x00
00000498: DUP1
00000499: MLOAD
0000049a: PUSH1 0x20
0000049c: PUSH2 0x2558
0000049f: DUP4
000004a0: CODECOPY
000004a1: DUP2
000004a2: MLOAD
000004a3: SWAP2
000004a4: MSTORE
000004a5: PUSH2 0x04ad
000004a8: DUP2
000004a9: PUSH2 0x104d
000004ac: JUMP
000004ad: JUMPDEST
000004ae: PUSH2 0x04b8
000004b1: DUP5
000004b2: DUP5
000004b3: DUP5
000004b4: PUSH2 0x1057
000004b7: JUMP
000004b8: JUMPDEST
000004b9: POP
000004ba: POP
000004bb: POP
000004bc: POP
000004bd: JUMP
000004be: JUMPDEST
000004bf: PUSH1 0x00
000004c1: DUP1
000004c2: MLOAD
000004c3: PUSH1 0x20
000004c5: PUSH2 0x2558
000004c8: DUP4
000004c9: CODECOPY
000004ca: DUP2
000004cb: MLOAD
000004cc: SWAP2
000004cd: MSTORE
000004ce: PUSH2 0x04d6
000004d1: DUP2
000004d2: PUSH2 0x104d
000004d5: JUMP
000004d6: JUMPDEST
000004d7: PUSH2 0x04e0
000004da: DUP4
000004db: DUP4
000004dc: PUSH2 0x106b
000004df: JUMP
000004e0: JUMPDEST
000004e1: POP
000004e2: POP
000004e3: POP
000004e4: JUMP
000004e5: JUMPDEST
000004e6: PUSH4 0x0a85bd01
000004eb: PUSH1 0xe1
000004ed: SHL
000004ee: JUMPDEST
000004ef: SWAP5
000004f0: SWAP4
000004f1: POP
000004f2: POP
000004f3: POP
000004f4: POP
000004f5: JUMP
000004f6: JUMPDEST
000004f7: PUSH1 0x00
000004f9: DUP3
000004fa: DUP2
000004fb: MSTORE
000004fc: PUSH1 0xfb
000004fe: PUSH1 0x20
00000500: MSTORE
00000501: PUSH1 0x40
00000503: SWAP1
00000504: KECCAK256
00000505: PUSH1 0x01
00000507: ADD
00000508: SLOAD
00000509: PUSH2 0x0511
0000050c: DUP2
0000050d: PUSH2 0x104d
00000510: JUMP
00000511: JUMPDEST
00000512: PUSH2 0x04e0
00000515: DUP4
00000516: DUP4
00000517: PUSH2 0x1075
0000051a: JUMP
0000051b: JUMPDEST
0000051c: PUSH1 0x01
0000051e: PUSH1 0x01
00000520: PUSH1 0xa0
00000522: SHL
00000523: SUB
00000524: DUP2
00000525: AND
00000526: CALLER
00000527: EQ
00000528: PUSH2 0x0590
0000052b: JUMPI
0000052c: PUSH1 0x40
0000052e: MLOAD
0000052f: PUSH3 0x461bcd
00000533: PUSH1 0xe5
00000535: SHL
00000536: DUP2
00000537: MSTORE
00000538: PUSH1 0x20
0000053a: PUSH1 0x04
0000053c: DUP3
0000053d: ADD
0000053e: MSTORE
0000053f: PUSH1 0x2f
00000541: PUSH1 0x24
00000543: DUP3
00000544: ADD
00000545: MSTORE
00000546: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365
00000567: PUSH1 0x44
00000569: DUP3
0000056a: ADD
0000056b: MSTORE
0000056c: PUSH15 0x103937b632b9903337b91039b2b633
0000057c: PUSH1 0x89
0000057e: SHL
0000057f: PUSH1 0x64
00000581: DUP3
00000582: ADD
00000583: MSTORE
00000584: PUSH1 0x84
00000586: ADD
00000587: JUMPDEST
00000588: PUSH1 0x40
0000058a: MLOAD
0000058b: DUP1
0000058c: SWAP2
0000058d: SUB
0000058e: SWAP1
0000058f: REVERT
00000590: JUMPDEST
00000591: PUSH2 0x059a
00000594: DUP3
00000595: DUP3
00000596: PUSH2 0x1098
00000599: JUMP
0000059a: JUMPDEST
0000059b: POP
0000059c: POP
0000059d: JUMP
0000059e: JUMPDEST
0000059f: ADDRESS
000005a0: PUSH1 0x01
000005a2: PUSH1 0x01
000005a4: PUSH1 0xa0
000005a6: SHL
000005a7: SUB
000005a8: PUSH32 0x00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
000005c9: AND
000005ca: EQ
000005cb: ISZERO
000005cc: PUSH2 0x05e7
000005cf: JUMPI
000005d0: PUSH1 0x40
000005d2: MLOAD
000005d3: PUSH3 0x461bcd
000005d7: PUSH1 0xe5
000005d9: SHL
000005da: DUP2
000005db: MSTORE
000005dc: PUSH1 0x04
000005de: ADD
000005df: PUSH2 0x0587
000005e2: SWAP1
000005e3: PUSH2 0x2240
000005e6: JUMP
000005e7: JUMPDEST
000005e8: PUSH32 0x00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
00000609: PUSH1 0x01
0000060b: PUSH1 0x01
0000060d: PUSH1 0xa0
0000060f: SHL
00000610: SUB
00000611: AND
00000612: PUSH2 0x0630
00000615: PUSH1 0x00
00000617: DUP1
00000618: MLOAD
00000619: PUSH1 0x20
0000061b: PUSH2 0x2511
0000061e: DUP4
0000061f: CODECOPY
00000620: DUP2
00000621: MLOAD
00000622: SWAP2
00000623: MSTORE
00000624: SLOAD
00000625: PUSH1 0x01
00000627: PUSH1 0x01
00000629: PUSH1 0xa0
0000062b: SHL
0000062c: SUB
0000062d: AND
0000062e: SWAP1
0000062f: JUMP
00000630: JUMPDEST
00000631: PUSH1 0x01
00000633: PUSH1 0x01
00000635: PUSH1 0xa0
00000637: SHL
00000638: SUB
00000639: AND
0000063a: EQ
0000063b: PUSH2 0x0656
0000063e: JUMPI
0000063f: PUSH1 0x40
00000641: MLOAD
00000642: PUSH3 0x461bcd
00000646: PUSH1 0xe5
00000648: SHL
00000649: DUP2
0000064a: MSTORE
0000064b: PUSH1 0x04
0000064d: ADD
0000064e: PUSH2 0x0587
00000651: SWAP1
00000652: PUSH2 0x228c
00000655: JUMP
00000656: JUMPDEST
00000657: PUSH2 0x065f
0000065a: DUP2
0000065b: PUSH2 0x10bb
0000065e: JUMP
0000065f: JUMPDEST
00000660: PUSH1 0x40
00000662: DUP1
00000663: MLOAD
00000664: PUSH1 0x00
00000666: DUP1
00000667: DUP3
00000668: MSTORE
00000669: PUSH1 0x20
0000066b: DUP3
0000066c: ADD
0000066d: SWAP1
0000066e: SWAP3
0000066f: MSTORE
00000670: PUSH2 0x067b
00000673: SWAP2
00000674: DUP4
00000675: SWAP2
00000676: SWAP1
00000677: PUSH2 0x10c3
0000067a: JUMP
0000067b: JUMPDEST
0000067c: POP
0000067d: JUMP
0000067e: JUMPDEST
0000067f: PUSH1 0x00
00000681: DUP1
00000682: MLOAD
00000683: PUSH1 0x20
00000685: PUSH2 0x2558
00000688: DUP4
00000689: CODECOPY
0000068a: DUP2
0000068b: MLOAD
0000068c: SWAP2
0000068d: MSTORE
0000068e: PUSH2 0x0696
00000691: DUP2
00000692: PUSH2 0x104d
00000695: JUMP
00000696: JUMPDEST
00000697: PUSH2 0x04b8
0000069a: DUP5
0000069b: DUP5
0000069c: DUP5
0000069d: PUSH2 0x123d
000006a0: JUMP
000006a1: JUMPDEST
000006a2: ADDRESS
000006a3: PUSH1 0x01
000006a5: PUSH1 0x01
000006a7: PUSH1 0xa0
000006a9: SHL
000006aa: SUB
000006ab: PUSH32 0x00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
000006cc: AND
000006cd: EQ
000006ce: ISZERO
000006cf: PUSH2 0x06ea
000006d2: JUMPI
000006d3: PUSH1 0x40
000006d5: MLOAD
000006d6: PUSH3 0x461bcd
000006da: PUSH1 0xe5
000006dc: SHL
000006dd: DUP2
000006de: MSTORE
000006df: PUSH1 0x04
000006e1: ADD
000006e2: PUSH2 0x0587
000006e5: SWAP1
000006e6: PUSH2 0x2240
000006e9: JUMP
000006ea: JUMPDEST
000006eb: PUSH32 0x00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
0000070c: PUSH1 0x01
0000070e: PUSH1 0x01
00000710: PUSH1 0xa0
00000712: SHL
00000713: SUB
00000714: AND
00000715: PUSH2 0x0733
00000718: PUSH1 0x00
0000071a: DUP1
0000071b: MLOAD
0000071c: PUSH1 0x20
0000071e: PUSH2 0x2511
00000721: DUP4
00000722: CODECOPY
00000723: DUP2
00000724: MLOAD
00000725: SWAP2
00000726: MSTORE
00000727: SLOAD
00000728: PUSH1 0x01
0000072a: PUSH1 0x01
0000072c: PUSH1 0xa0
0000072e: SHL
0000072f: SUB
00000730: AND
00000731: SWAP1
00000732: JUMP
00000733: JUMPDEST
00000734: PUSH1 0x01
00000736: PUSH1 0x01
00000738: PUSH1 0xa0
0000073a: SHL
0000073b: SUB
0000073c: AND
0000073d: EQ
0000073e: PUSH2 0x0759
00000741: JUMPI
00000742: PUSH1 0x40
00000744: MLOAD
00000745: PUSH3 0x461bcd
00000749: PUSH1 0xe5
0000074b: SHL
0000074c: DUP2
0000074d: MSTORE
0000074e: PUSH1 0x04
00000750: ADD
00000751: PUSH2 0x0587
00000754: SWAP1
00000755: PUSH2 0x228c
00000758: JUMP
00000759: JUMPDEST
0000075a: PUSH2 0x0762
0000075d: DUP3
0000075e: PUSH2 0x10bb
00000761: JUMP
00000762: JUMPDEST
00000763: PUSH2 0x059a
00000766: DUP3
00000767: DUP3
00000768: PUSH1 0x01
0000076a: PUSH2 0x10c3
0000076d: JUMP
0000076e: JUMPDEST
0000076f: PUSH1 0x00
00000771: ADDRESS
00000772: PUSH1 0x01
00000774: PUSH1 0x01
00000776: PUSH1 0xa0
00000778: SHL
00000779: SUB
0000077a: PUSH32 0x00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
0000079b: AND
0000079c: EQ
0000079d: PUSH2 0x080e
000007a0: JUMPI
000007a1: PUSH1 0x40
000007a3: MLOAD
000007a4: PUSH3 0x461bcd
000007a8: PUSH1 0xe5
000007aa: SHL
000007ab: DUP2
000007ac: MSTORE
000007ad: PUSH1 0x20
000007af: PUSH1 0x04
000007b1: DUP3
000007b2: ADD
000007b3: MSTORE
000007b4: PUSH1 0x38
000007b6: PUSH1 0x24
000007b8: DUP3
000007b9: ADD
000007ba: MSTORE
000007bb: PUSH32 0x555550535570677261646561626c653a206d757374206e6f742062652063616c
000007dc: PUSH1 0x44
000007de: DUP3
000007df: ADD
000007e0: MSTORE
000007e1: PUSH32 0x6c6564207468726f7567682064656c656761746563616c6c0000000000000000
00000802: PUSH1 0x64
00000804: DUP3
00000805: ADD
00000806: MSTORE
00000807: PUSH1 0x84
00000809: ADD
0000080a: PUSH2 0x0587
0000080d: JUMP
0000080e: JUMPDEST
0000080f: POP
00000810: PUSH1 0x00
00000812: DUP1
00000813: MLOAD
00000814: PUSH1 0x20
00000816: PUSH2 0x2511
00000819: DUP4
0000081a: CODECOPY
0000081b: DUP2
0000081c: MLOAD
0000081d: SWAP2
0000081e: MSTORE
0000081f: SWAP1
00000820: JUMP
00000821: JUMPDEST
00000822: PUSH1 0x00
00000824: DUP1
00000825: MLOAD
00000826: PUSH1 0x20
00000828: PUSH2 0x2558
0000082b: DUP4
0000082c: CODECOPY
0000082d: DUP2
0000082e: MLOAD
0000082f: SWAP2
00000830: MSTORE
00000831: PUSH2 0x0839
00000834: DUP2
00000835: PUSH2 0x104d
00000838: JUMP
00000839: JUMPDEST
0000083a: DUP6
0000083b: DUP5
0000083c: EQ
0000083d: PUSH2 0x08b8
00000840: JUMPI
00000841: PUSH1 0x40
00000843: MLOAD
00000844: PUSH3 0x461bcd
00000848: PUSH1 0xe5
0000084a: SHL
0000084b: DUP2
0000084c: MSTORE
0000084d: PUSH1 0x20
0000084f: PUSH1 0x04
00000851: DUP3
00000852: ADD
00000853: MSTORE
00000854: PUSH1 0x41
00000856: PUSH1 0x24
00000858: DUP3
00000859: ADD
0000085a: MSTORE
0000085b: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726337
0000087c: PUSH1 0x44
0000087e: DUP3
0000087f: ADD
00000880: MSTORE
00000881: PUSH32 0x32313a20746f6b656e732f706179656573206c656e677468206d69736d617463
000008a2: PUSH1 0x64
000008a4: DUP3
000008a5: ADD
000008a6: MSTORE
000008a7: PUSH1 0x0d
000008a9: PUSH1 0xfb
000008ab: SHL
000008ac: PUSH1 0x84
000008ae: DUP3
000008af: ADD
000008b0: MSTORE
000008b1: PUSH1 0xa4
000008b3: ADD
000008b4: PUSH2 0x0587
000008b7: JUMP
000008b8: JUMPDEST
000008b9: DUP4
000008ba: DUP3
000008bb: EQ
000008bc: PUSH2 0x0939
000008bf: JUMPI
000008c0: PUSH1 0x40
000008c2: MLOAD
000008c3: PUSH3 0x461bcd
000008c7: PUSH1 0xe5
000008c9: SHL
000008ca: DUP2
000008cb: MSTORE
000008cc: PUSH1 0x20
000008ce: PUSH1 0x04
000008d0: DUP3
000008d1: ADD
000008d2: MSTORE
000008d3: PUSH1 0x43
000008d5: PUSH1 0x24
000008d7: DUP3
000008d8: ADD
000008d9: MSTORE
000008da: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726337
000008fb: PUSH1 0x44
000008fd: DUP3
000008fe: ADD
000008ff: MSTORE
00000900: PUSH32 0x32313a207061796565732f746f6b656e496473206c656e677468206d69736d61
00000921: PUSH1 0x64
00000923: DUP3
00000924: ADD
00000925: MSTORE
00000926: PUSH3 0x0e8c6d
0000092a: PUSH1 0xeb
0000092c: SHL
0000092d: PUSH1 0x84
0000092f: DUP3
00000930: ADD
00000931: MSTORE
00000932: PUSH1 0xa4
00000934: ADD
00000935: PUSH2 0x0587
00000938: JUMP
00000939: JUMPDEST
0000093a: DUP4
0000093b: PUSH2 0x09b6
0000093e: JUMPI
0000093f: PUSH1 0x40
00000941: MLOAD
00000942: PUSH3 0x461bcd
00000946: PUSH1 0xe5
00000948: SHL
00000949: DUP2
0000094a: MSTORE
0000094b: PUSH1 0x20
0000094d: PUSH1 0x04
0000094f: DUP3
00000950: ADD
00000951: MSTORE
00000952: PUSH1 0x41
00000954: PUSH1 0x24
00000956: DUP3
00000957: ADD
00000958: MSTORE
00000959: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726337
0000097a: PUSH1 0x44
0000097c: DUP3
0000097d: ADD
0000097e: MSTORE
0000097f: PUSH32 0x32313a20706179656573206c656e677468206d757374206265206774207a6572
000009a0: PUSH1 0x64
000009a2: DUP3
000009a3: ADD
000009a4: MSTORE
000009a5: PUSH1 0x6f
000009a7: PUSH1 0xf8
000009a9: SHL
000009aa: PUSH1 0x84
000009ac: DUP3
000009ad: ADD
000009ae: MSTORE
000009af: PUSH1 0xa4
000009b1: ADD
000009b2: PUSH2 0x0587
000009b5: JUMP
000009b6: JUMPDEST
000009b7: PUSH1 0x00
000009b9: JUMPDEST
000009ba: DUP5
000009bb: DUP2
000009bc: LT
000009bd: ISZERO
000009be: PUSH2 0x0a42
000009c1: JUMPI
000009c2: PUSH2 0x0a30
000009c5: DUP9
000009c6: DUP9
000009c7: DUP4
000009c8: DUP2
000009c9: DUP2
000009ca: LT
000009cb: PUSH2 0x09d6
000009ce: JUMPI
000009cf: PUSH2 0x09d6
000009d2: PUSH2 0x22d8
000009d5: JUMP
000009d6: JUMPDEST
000009d7: SWAP1
000009d8: POP
000009d9: PUSH1 0x20
000009db: MUL
000009dc: ADD
000009dd: PUSH1 0x20
000009df: DUP2
000009e0: ADD
000009e1: SWAP1
000009e2: PUSH2 0x09eb
000009e5: SWAP2
000009e6: SWAP1
000009e7: PUSH2 0x205f
000009ea: JUMP
000009eb: JUMPDEST
000009ec: DUP8
000009ed: DUP8
000009ee: DUP5
000009ef: DUP2
000009f0: DUP2
000009f1: LT
000009f2: PUSH2 0x09fd
000009f5: JUMPI
000009f6: PUSH2 0x09fd
000009f9: PUSH2 0x22d8
000009fc: JUMP
000009fd: JUMPDEST
000009fe: SWAP1
000009ff: POP
00000a00: PUSH1 0x20
00000a02: MUL
00000a03: ADD
00000a04: PUSH1 0x20
00000a06: DUP2
00000a07: ADD
00000a08: SWAP1
00000a09: PUSH2 0x0a12
00000a0c: SWAP2
00000a0d: SWAP1
00000a0e: PUSH2 0x205f
00000a11: JUMP
00000a12: JUMPDEST
00000a13: DUP7
00000a14: DUP7
00000a15: DUP6
00000a16: DUP2
00000a17: DUP2
00000a18: LT
00000a19: PUSH2 0x0a24
00000a1c: JUMPI
00000a1d: PUSH2 0x0a24
00000a20: PUSH2 0x22d8
00000a23: JUMP
00000a24: JUMPDEST
00000a25: SWAP1
00000a26: POP
00000a27: PUSH1 0x20
00000a29: MUL
00000a2a: ADD
00000a2b: CALLDATALOAD
00000a2c: PUSH2 0x123d
00000a2f: JUMP
00000a30: JUMPDEST
00000a31: DUP1
00000a32: PUSH2 0x0a3a
00000a35: DUP2
00000a36: PUSH2 0x2304
00000a39: JUMP
00000a3a: JUMPDEST
00000a3b: SWAP2
00000a3c: POP
00000a3d: POP
00000a3e: PUSH2 0x09b9
00000a41: JUMP
00000a42: JUMPDEST
00000a43: POP
00000a44: POP
00000a45: POP
00000a46: POP
00000a47: POP
00000a48: POP
00000a49: POP
00000a4a: POP
00000a4b: JUMP
00000a4c: JUMPDEST
00000a4d: PUSH2 0x0a54
00000a50: PUSH2 0x12aa
00000a53: JUMP
00000a54: JUMPDEST
00000a55: PUSH2 0x0a5e
00000a58: PUSH1 0x00
00000a5a: PUSH2 0x1304
00000a5d: JUMP
00000a5e: JUMPDEST
00000a5f: JUMP
00000a60: JUMPDEST
00000a61: PUSH1 0x00
00000a63: SLOAD
00000a64: PUSH2 0x0100
00000a67: SWAP1
00000a68: DIV
00000a69: PUSH1 0xff
00000a6b: AND
00000a6c: ISZERO
00000a6d: DUP1
00000a6e: DUP1
00000a6f: ISZERO
00000a70: PUSH2 0x0a80
00000a73: JUMPI
00000a74: POP
00000a75: PUSH1 0x00
00000a77: SLOAD
00000a78: PUSH1 0x01
00000a7a: PUSH1 0xff
00000a7c: SWAP1
00000a7d: SWAP2
00000a7e: AND
00000a7f: LT
00000a80: JUMPDEST
00000a81: DUP1
00000a82: PUSH2 0x0a9a
00000a85: JUMPI
00000a86: POP
00000a87: ADDRESS
00000a88: EXTCODESIZE
00000a89: ISZERO
00000a8a: DUP1
00000a8b: ISZERO
00000a8c: PUSH2 0x0a9a
00000a8f: JUMPI
00000a90: POP
00000a91: PUSH1 0x00
00000a93: SLOAD
00000a94: PUSH1 0xff
00000a96: AND
00000a97: PUSH1 0x01
00000a99: EQ
00000a9a: JUMPDEST
00000a9b: PUSH2 0x0afd
00000a9e: JUMPI
00000a9f: PUSH1 0x40
00000aa1: MLOAD
00000aa2: PUSH3 0x461bcd
00000aa6: PUSH1 0xe5
00000aa8: SHL
00000aa9: DUP2
00000aaa: MSTORE
00000aab: PUSH1 0x20
00000aad: PUSH1 0x04
00000aaf: DUP3
00000ab0: ADD
00000ab1: MSTORE
00000ab2: PUSH1 0x2e
00000ab4: PUSH1 0x24
00000ab6: DUP3
00000ab7: ADD
00000ab8: MSTORE
00000ab9: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00000ada: PUSH1 0x44
00000adc: DUP3
00000add: ADD
00000ade: MSTORE
00000adf: PUSH14 0x191e481a5b9a5d1a585b1a5e9959
00000aee: PUSH1 0x92
00000af0: SHL
00000af1: PUSH1 0x64
00000af3: DUP3
00000af4: ADD
00000af5: MSTORE
00000af6: PUSH1 0x84
00000af8: ADD
00000af9: PUSH2 0x0587
00000afc: JUMP
00000afd: JUMPDEST
00000afe: PUSH1 0x00
00000b00: DUP1
00000b01: SLOAD
00000b02: PUSH1 0xff
00000b04: NOT
00000b05: AND
00000b06: PUSH1 0x01
00000b08: OR
00000b09: SWAP1
00000b0a: SSTORE
00000b0b: DUP1
00000b0c: ISZERO
00000b0d: PUSH2 0x0b20
00000b10: JUMPI
00000b11: PUSH1 0x00
00000b13: DUP1
00000b14: SLOAD
00000b15: PUSH2 0xff00
00000b18: NOT
00000b19: AND
00000b1a: PUSH2 0x0100
00000b1d: OR
00000b1e: SWAP1
00000b1f: SSTORE
00000b20: JUMPDEST
00000b21: PUSH2 0x0b28
00000b24: PUSH2 0x1356
00000b27: JUMP
00000b28: JUMPDEST
00000b29: PUSH2 0x0b30
00000b2c: PUSH2 0x1385
00000b2f: JUMP
00000b30: JUMPDEST
00000b31: PUSH2 0x0b3b
00000b34: PUSH1 0x00
00000b36: CALLER
00000b37: PUSH2 0x13ac
00000b3a: JUMP
00000b3b: JUMPDEST
00000b3c: DUP1
00000b3d: ISZERO
00000b3e: PUSH2 0x067b
00000b41: JUMPI
00000b42: PUSH1 0x00
00000b44: DUP1
00000b45: SLOAD
00000b46: PUSH2 0xff00
00000b49: NOT
00000b4a: AND
00000b4b: SWAP1
00000b4c: SSTORE
00000b4d: PUSH1 0x40
00000b4f: MLOAD
00000b50: PUSH1 0x01
00000b52: DUP2
00000b53: MSTORE
00000b54: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00000b75: SWAP1
00000b76: PUSH1 0x20
00000b78: ADD
00000b79: PUSH1 0x40
00000b7b: MLOAD
00000b7c: DUP1
00000b7d: SWAP2
00000b7e: SUB
00000b7f: SWAP1
00000b80: LOG1
00000b81: POP
00000b82: JUMP
00000b83: JUMPDEST
00000b84: PUSH1 0x00
00000b86: DUP3
00000b87: DUP2
00000b88: MSTORE
00000b89: PUSH2 0x012d
00000b8c: PUSH1 0x20
00000b8e: MSTORE
00000b8f: PUSH1 0x40
00000b91: DUP2
00000b92: KECCAK256
00000b93: PUSH2 0x0b9c
00000b96: SWAP1
00000b97: DUP4
00000b98: PUSH2 0x13b6
00000b9b: JUMP
00000b9c: JUMPDEST
00000b9d: SWAP4
00000b9e: SWAP3
00000b9f: POP
00000ba0: POP
00000ba1: POP
00000ba2: JUMP
00000ba3: JUMPDEST
00000ba4: PUSH1 0x00
00000ba6: SWAP2
00000ba7: DUP3
00000ba8: MSTORE
00000ba9: PUSH1 0xfb
00000bab: PUSH1 0x20
00000bad: SWAP1
00000bae: DUP2
00000baf: MSTORE
00000bb0: PUSH1 0x40
00000bb2: DUP1
00000bb3: DUP5
00000bb4: KECCAK256
00000bb5: PUSH1 0x01
00000bb7: PUSH1 0x01
00000bb9: PUSH1 0xa0
00000bbb: SHL
00000bbc: SUB
00000bbd: SWAP4
00000bbe: SWAP1
00000bbf: SWAP4
00000bc0: AND
00000bc1: DUP5
00000bc2: MSTORE
00000bc3: SWAP2
00000bc4: SWAP1
00000bc5: MSTORE
00000bc6: SWAP1
00000bc7: KECCAK256
00000bc8: SLOAD
00000bc9: PUSH1 0xff
00000bcb: AND
00000bcc: SWAP1
00000bcd: JUMP
00000bce: JUMPDEST
00000bcf: PUSH1 0x00
00000bd1: DUP2
00000bd2: DUP2
00000bd3: MSTORE
00000bd4: PUSH2 0x012d
00000bd7: PUSH1 0x20
00000bd9: MSTORE
00000bda: PUSH1 0x40
00000bdc: DUP2
00000bdd: KECCAK256
00000bde: PUSH2 0x048f
00000be1: SWAP1
00000be2: PUSH2 0x13c2
00000be5: JUMP
00000be6: JUMPDEST
00000be7: PUSH1 0x00
00000be9: DUP3
00000bea: DUP2
00000beb: MSTORE
00000bec: PUSH1 0xfb
00000bee: PUSH1 0x20
00000bf0: MSTORE
00000bf1: PUSH1 0x40
00000bf3: SWAP1
00000bf4: KECCAK256
00000bf5: PUSH1 0x01
00000bf7: ADD
00000bf8: SLOAD
00000bf9: PUSH2 0x0c01
00000bfc: DUP2
00000bfd: PUSH2 0x104d
00000c00: JUMP
00000c01: JUMPDEST
00000c02: PUSH2 0x04e0
00000c05: DUP4
00000c06: DUP4
00000c07: PUSH2 0x1098
00000c0a: JUMP
00000c0b: JUMPDEST
00000c0c: PUSH1 0x00
00000c0e: DUP1
00000c0f: MLOAD
00000c10: PUSH1 0x20
00000c12: PUSH2 0x2558
00000c15: DUP4
00000c16: CODECOPY
00000c17: DUP2
00000c18: MLOAD
00000c19: SWAP2
00000c1a: MSTORE
00000c1b: PUSH2 0x0c23
00000c1e: DUP2
00000c1f: PUSH2 0x104d
00000c22: JUMP
00000c23: JUMPDEST
00000c24: DUP6
00000c25: DUP5
00000c26: EQ
00000c27: PUSH2 0x0c9a
00000c2a: JUMPI
00000c2b: PUSH1 0x40
00000c2d: DUP1
00000c2e: MLOAD
00000c2f: PUSH3 0x461bcd
00000c33: PUSH1 0xe5
00000c35: SHL
00000c36: DUP2
00000c37: MSTORE
00000c38: PUSH1 0x20
00000c3a: PUSH1 0x04
00000c3c: DUP3
00000c3d: ADD
00000c3e: MSTORE
00000c3f: PUSH1 0x24
00000c41: DUP2
00000c42: ADD
00000c43: SWAP2
00000c44: SWAP1
00000c45: SWAP2
00000c46: MSTORE
00000c47: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726332
00000c68: PUSH1 0x44
00000c6a: DUP3
00000c6b: ADD
00000c6c: MSTORE
00000c6d: PUSH32 0x303a20746f6b656e732f706179656573206c656e677468206d69736d61746368
00000c8e: PUSH1 0x64
00000c90: DUP3
00000c91: ADD
00000c92: MSTORE
00000c93: PUSH1 0x84
00000c95: ADD
00000c96: PUSH2 0x0587
00000c99: JUMP
00000c9a: JUMPDEST
00000c9b: DUP4
00000c9c: DUP3
00000c9d: EQ
00000c9e: PUSH2 0x0d19
00000ca1: JUMPI
00000ca2: PUSH1 0x40
00000ca4: MLOAD
00000ca5: PUSH3 0x461bcd
00000ca9: PUSH1 0xe5
00000cab: SHL
00000cac: DUP2
00000cad: MSTORE
00000cae: PUSH1 0x20
00000cb0: PUSH1 0x04
00000cb2: DUP3
00000cb3: ADD
00000cb4: MSTORE
00000cb5: PUSH1 0x41
00000cb7: PUSH1 0x24
00000cb9: DUP3
00000cba: ADD
00000cbb: MSTORE
00000cbc: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726332
00000cdd: PUSH1 0x44
00000cdf: DUP3
00000ce0: ADD
00000ce1: MSTORE
00000ce2: PUSH32 0x303a207061796565732f616d6f756e7473206c656e677468206d69736d617463
00000d03: PUSH1 0x64
00000d05: DUP3
00000d06: ADD
00000d07: MSTORE
00000d08: PUSH1 0x0d
00000d0a: PUSH1 0xfb
00000d0c: SHL
00000d0d: PUSH1 0x84
00000d0f: DUP3
00000d10: ADD
00000d11: MSTORE
00000d12: PUSH1 0xa4
00000d14: ADD
00000d15: PUSH2 0x0587
00000d18: JUMP
00000d19: JUMPDEST
00000d1a: DUP4
00000d1b: PUSH2 0x0d8e
00000d1e: JUMPI
00000d1f: PUSH1 0x40
00000d21: DUP1
00000d22: MLOAD
00000d23: PUSH3 0x461bcd
00000d27: PUSH1 0xe5
00000d29: SHL
00000d2a: DUP2
00000d2b: MSTORE
00000d2c: PUSH1 0x20
00000d2e: PUSH1 0x04
00000d30: DUP3
00000d31: ADD
00000d32: MSTORE
00000d33: PUSH1 0x24
00000d35: DUP2
00000d36: ADD
00000d37: SWAP2
00000d38: SWAP1
00000d39: SWAP2
00000d3a: MSTORE
00000d3b: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245726332
00000d5c: PUSH1 0x44
00000d5e: DUP3
00000d5f: ADD
00000d60: MSTORE
00000d61: PUSH32 0x303a20706179656573206c656e677468206d757374206265206774207a65726f
00000d82: PUSH1 0x64
00000d84: DUP3
00000d85: ADD
00000d86: MSTORE
00000d87: PUSH1 0x84
00000d89: ADD
00000d8a: PUSH2 0x0587
00000d8d: JUMP
00000d8e: JUMPDEST
00000d8f: PUSH1 0x00
00000d91: JUMPDEST
00000d92: DUP5
00000d93: DUP2
00000d94: LT
00000d95: ISZERO
00000d96: PUSH2 0x0a42
00000d99: JUMPI
00000d9a: PUSH2 0x0e08
00000d9d: DUP9
00000d9e: DUP9
00000d9f: DUP4
00000da0: DUP2
00000da1: DUP2
00000da2: LT
00000da3: PUSH2 0x0dae
00000da6: JUMPI
00000da7: PUSH2 0x0dae
00000daa: PUSH2 0x22d8
00000dad: JUMP
00000dae: JUMPDEST
00000daf: SWAP1
00000db0: POP
00000db1: PUSH1 0x20
00000db3: MUL
00000db4: ADD
00000db5: PUSH1 0x20
00000db7: DUP2
00000db8: ADD
00000db9: SWAP1
00000dba: PUSH2 0x0dc3
00000dbd: SWAP2
00000dbe: SWAP1
00000dbf: PUSH2 0x205f
00000dc2: JUMP
00000dc3: JUMPDEST
00000dc4: DUP8
00000dc5: DUP8
00000dc6: DUP5
00000dc7: DUP2
00000dc8: DUP2
00000dc9: LT
00000dca: PUSH2 0x0dd5
00000dcd: JUMPI
00000dce: PUSH2 0x0dd5
00000dd1: PUSH2 0x22d8
00000dd4: JUMP
00000dd5: JUMPDEST
00000dd6: SWAP1
00000dd7: POP
00000dd8: PUSH1 0x20
00000dda: MUL
00000ddb: ADD
00000ddc: PUSH1 0x20
00000dde: DUP2
00000ddf: ADD
00000de0: SWAP1
00000de1: PUSH2 0x0dea
00000de4: SWAP2
00000de5: SWAP1
00000de6: PUSH2 0x205f
00000de9: JUMP
00000dea: JUMPDEST
00000deb: DUP7
00000dec: DUP7
00000ded: DUP6
00000dee: DUP2
00000def: DUP2
00000df0: LT
00000df1: PUSH2 0x0dfc
00000df4: JUMPI
00000df5: PUSH2 0x0dfc
00000df8: PUSH2 0x22d8
00000dfb: JUMP
00000dfc: JUMPDEST
00000dfd: SWAP1
00000dfe: POP
00000dff: PUSH1 0x20
00000e01: MUL
00000e02: ADD
00000e03: CALLDATALOAD
00000e04: PUSH2 0x1057
00000e07: JUMP
00000e08: JUMPDEST
00000e09: DUP1
00000e0a: PUSH2 0x0e12
00000e0d: DUP2
00000e0e: PUSH2 0x2304
00000e11: JUMP
00000e12: JUMPDEST
00000e13: SWAP2
00000e14: POP
00000e15: POP
00000e16: PUSH2 0x0d91
00000e19: JUMP
00000e1a: JUMPDEST
00000e1b: PUSH1 0x00
00000e1d: DUP1
00000e1e: MLOAD
00000e1f: PUSH1 0x20
00000e21: PUSH2 0x2558
00000e24: DUP4
00000e25: CODECOPY
00000e26: DUP2
00000e27: MLOAD
00000e28: SWAP2
00000e29: MSTORE
00000e2a: PUSH2 0x0e32
00000e2d: DUP2
00000e2e: PUSH2 0x104d
00000e31: JUMP
00000e32: JUMPDEST
00000e33: DUP4
00000e34: DUP3
00000e35: EQ
00000e36: PUSH2 0x0eb1
00000e39: JUMPI
00000e3a: PUSH1 0x40
00000e3c: MLOAD
00000e3d: PUSH3 0x461bcd
00000e41: PUSH1 0xe5
00000e43: SHL
00000e44: DUP2
00000e45: MSTORE
00000e46: PUSH1 0x20
00000e48: PUSH1 0x04
00000e4a: DUP3
00000e4b: ADD
00000e4c: MSTORE
00000e4d: PUSH1 0x41
00000e4f: PUSH1 0x24
00000e51: DUP3
00000e52: ADD
00000e53: MSTORE
00000e54: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245746865
00000e75: PUSH1 0x44
00000e77: DUP3
00000e78: ADD
00000e79: MSTORE
00000e7a: PUSH32 0x723a207061796565732f616d6f756e7473206c656e677468206d69736d617463
00000e9b: PUSH1 0x64
00000e9d: DUP3
00000e9e: ADD
00000e9f: MSTORE
00000ea0: PUSH1 0x0d
00000ea2: PUSH1 0xfb
00000ea4: SHL
00000ea5: PUSH1 0x84
00000ea7: DUP3
00000ea8: ADD
00000ea9: MSTORE
00000eaa: PUSH1 0xa4
00000eac: ADD
00000ead: PUSH2 0x0587
00000eb0: JUMP
00000eb1: JUMPDEST
00000eb2: DUP4
00000eb3: PUSH2 0x0f26
00000eb6: JUMPI
00000eb7: PUSH1 0x40
00000eb9: DUP1
00000eba: MLOAD
00000ebb: PUSH3 0x461bcd
00000ebf: PUSH1 0xe5
00000ec1: SHL
00000ec2: DUP2
00000ec3: MSTORE
00000ec4: PUSH1 0x20
00000ec6: PUSH1 0x04
00000ec8: DUP3
00000ec9: ADD
00000eca: MSTORE
00000ecb: PUSH1 0x24
00000ecd: DUP2
00000ece: ADD
00000ecf: SWAP2
00000ed0: SWAP1
00000ed1: SWAP2
00000ed2: MSTORE
00000ed3: PUSH32 0x4d756c74695472616e736665723a3a62617463685472616e7366657245746865
00000ef4: PUSH1 0x44
00000ef6: DUP3
00000ef7: ADD
00000ef8: MSTORE
00000ef9: PUSH32 0x723a20706179656573206c656e677468206d757374206265206774207a65726f
00000f1a: PUSH1 0x64
00000f1c: DUP3
00000f1d: ADD
00000f1e: MSTORE
00000f1f: PUSH1 0x84
00000f21: ADD
00000f22: PUSH2 0x0587
00000f25: JUMP
00000f26: JUMPDEST
00000f27: PUSH1 0x00
00000f29: JUMPDEST
00000f2a: DUP5
00000f2b: DUP2
00000f2c: LT
00000f2d: ISZERO
00000f2e: PUSH2 0x0f8b
00000f31: JUMPI
00000f32: PUSH2 0x0f79
00000f35: DUP7
00000f36: DUP7
00000f37: DUP4
00000f38: DUP2
00000f39: DUP2
00000f3a: LT
00000f3b: PUSH2 0x0f46
00000f3e: JUMPI
00000f3f: PUSH2 0x0f46
00000f42: PUSH2 0x22d8
00000f45: JUMP
00000f46: JUMPDEST
00000f47: SWAP1
00000f48: POP
00000f49: PUSH1 0x20
00000f4b: MUL
00000f4c: ADD
00000f4d: PUSH1 0x20
00000f4f: DUP2
00000f50: ADD
00000f51: SWAP1
00000f52: PUSH2 0x0f5b
00000f55: SWAP2
00000f56: SWAP1
00000f57: PUSH2 0x205f
00000f5a: JUMP
00000f5b: JUMPDEST
00000f5c: DUP6
00000f5d: DUP6
00000f5e: DUP5
00000f5f: DUP2
00000f60: DUP2
00000f61: LT
00000f62: PUSH2 0x0f6d
00000f65: JUMPI
00000f66: PUSH2 0x0f6d
00000f69: PUSH2 0x22d8
00000f6c: JUMP
00000f6d: JUMPDEST
00000f6e: SWAP1
00000f6f: POP
00000f70: PUSH1 0x20
00000f72: MUL
00000f73: ADD
00000f74: CALLDATALOAD
00000f75: PUSH2 0x106b
00000f78: JUMP
00000f79: JUMPDEST
00000f7a: DUP1
00000f7b: PUSH2 0x0f83
00000f7e: DUP2
00000f7f: PUSH2 0x2304
00000f82: JUMP
00000f83: JUMPDEST
00000f84: SWAP2
00000f85: POP
00000f86: POP
00000f87: PUSH2 0x0f29
00000f8a: JUMP
00000f8b: JUMPDEST
00000f8c: POP
00000f8d: POP
00000f8e: POP
00000f8f: POP
00000f90: POP
00000f91: POP
00000f92: JUMP
00000f93: JUMPDEST
00000f94: PUSH2 0x0f9b
00000f97: PUSH2 0x12aa
00000f9a: JUMP
00000f9b: JUMPDEST
00000f9c: PUSH1 0x01
00000f9e: PUSH1 0x01
00000fa0: PUSH1 0xa0
00000fa2: SHL
00000fa3: SUB
00000fa4: DUP2
00000fa5: AND
00000fa6: PUSH2 0x1000
00000fa9: JUMPI
00000faa: PUSH1 0x40
00000fac: MLOAD
00000fad: PUSH3 0x461bcd
00000fb1: PUSH1 0xe5
00000fb3: SHL
00000fb4: DUP2
00000fb5: MSTORE
00000fb6: PUSH1 0x20
00000fb8: PUSH1 0x04
00000fba: DUP3
00000fbb: ADD
00000fbc: MSTORE
00000fbd: PUSH1 0x26
00000fbf: PUSH1 0x24
00000fc1: DUP3
00000fc2: ADD
00000fc3: MSTORE
00000fc4: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00000fe5: PUSH1 0x44
00000fe7: DUP3
00000fe8: ADD
00000fe9: MSTORE
00000fea: PUSH6 0x646472657373
00000ff1: PUSH1 0xd0
00000ff3: SHL
00000ff4: PUSH1 0x64
00000ff6: DUP3
00000ff7: ADD
00000ff8: MSTORE
00000ff9: PUSH1 0x84
00000ffb: ADD
00000ffc: PUSH2 0x0587
00000fff: JUMP
00001000: JUMPDEST
00001001: PUSH2 0x067b
00001004: DUP2
00001005: PUSH2 0x1304
00001008: JUMP
00001009: JUMPDEST
0000100a: PUSH1 0x01
0000100c: PUSH1 0x01
0000100e: PUSH1 0xa0
00001010: SHL
00001011: SUB
00001012: AND
00001013: EXTCODESIZE
00001014: ISZERO
00001015: ISZERO
00001016: SWAP1
00001017: JUMP
00001018: JUMPDEST
00001019: PUSH1 0x00
0000101b: PUSH1 0x01
0000101d: PUSH1 0x01
0000101f: PUSH1 0xe0
00001021: SHL
00001022: SUB
00001023: NOT
00001024: DUP3
00001025: AND
00001026: PUSH4 0x7965db0b
0000102b: PUSH1 0xe0
0000102d: SHL
0000102e: EQ
0000102f: DUP1
00001030: PUSH2 0x048f
00001033: JUMPI
00001034: POP
00001035: PUSH4 0x01ffc9a7
0000103a: PUSH1 0xe0
0000103c: SHL
0000103d: PUSH1 0x01
0000103f: PUSH1 0x01
00001041: PUSH1 0xe0
00001043: SHL
00001044: SUB
00001045: NOT
00001046: DUP4
00001047: AND
00001048: EQ
00001049: PUSH2 0x048f
0000104c: JUMP
0000104d: JUMPDEST
0000104e: PUSH2 0x067b
00001051: DUP2
00001052: CALLER
00001053: PUSH2 0x13cc
00001056: JUMP
00001057: JUMPDEST
00001058: PUSH2 0x04e0
0000105b: PUSH1 0x01
0000105d: PUSH1 0x01
0000105f: PUSH1 0xa0
00001061: SHL
00001062: SUB
00001063: DUP5
00001064: AND
00001065: DUP4
00001066: DUP4
00001067: PUSH2 0x1425
0000106a: JUMP
0000106b: JUMPDEST
0000106c: PUSH2 0x059a
0000106f: DUP3
00001070: DUP3
00001071: PUSH2 0x1477
00001074: JUMP
00001075: JUMPDEST
00001076: PUSH2 0x107f
00001079: DUP3
0000107a: DUP3
0000107b: PUSH2 0x1590
0000107e: JUMP
0000107f: JUMPDEST
00001080: PUSH1 0x00
00001082: DUP3
00001083: DUP2
00001084: MSTORE
00001085: PUSH2 0x012d
00001088: PUSH1 0x20
0000108a: MSTORE
0000108b: PUSH1 0x40
0000108d: SWAP1
0000108e: KECCAK256
0000108f: PUSH2 0x04e0
00001092: SWAP1
00001093: DUP3
00001094: PUSH2 0x1616
00001097: JUMP
00001098: JUMPDEST
00001099: PUSH2 0x10a2
0000109c: DUP3
0000109d: DUP3
0000109e: PUSH2 0x162b
000010a1: JUMP
000010a2: JUMPDEST
000010a3: PUSH1 0x00
000010a5: DUP3
000010a6: DUP2
000010a7: MSTORE
000010a8: PUSH2 0x012d
000010ab: PUSH1 0x20
000010ad: MSTORE
000010ae: PUSH1 0x40
000010b0: SWAP1
000010b1: KECCAK256
000010b2: PUSH2 0x04e0
000010b5: SWAP1
000010b6: DUP3
000010b7: PUSH2 0x1692
000010ba: JUMP
000010bb: JUMPDEST
000010bc: PUSH2 0x067b
000010bf: PUSH2 0x12aa
000010c2: JUMP
000010c3: JUMPDEST
000010c4: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143
000010e5: SLOAD
000010e6: PUSH1 0xff
000010e8: AND
000010e9: ISZERO
000010ea: PUSH2 0x10f6
000010ed: JUMPI
000010ee: PUSH2 0x04e0
000010f1: DUP4
000010f2: PUSH2 0x16a7
000010f5: JUMP
000010f6: JUMPDEST
000010f7: DUP3
000010f8: PUSH1 0x01
000010fa: PUSH1 0x01
000010fc: PUSH1 0xa0
000010fe: SHL
000010ff: SUB
00001100: AND
00001101: PUSH4 0x52d1902d
00001106: PUSH1 0x40
00001108: MLOAD
00001109: DUP2
0000110a: PUSH4 0xffffffff
0000110f: AND
00001110: PUSH1 0xe0
00001112: SHL
00001113: DUP2
00001114: MSTORE
00001115: PUSH1 0x04
00001117: ADD
00001118: PUSH1 0x20
0000111a: PUSH1 0x40
0000111c: MLOAD
0000111d: DUP1
0000111e: DUP4
0000111f: SUB
00001120: DUP2
00001121: DUP7
00001122: DUP1
00001123: EXTCODESIZE
00001124: ISZERO
00001125: DUP1
00001126: ISZERO
00001127: PUSH2 0x112f
0000112a: JUMPI
0000112b: PUSH1 0x00
0000112d: DUP1
0000112e: REVERT
0000112f: JUMPDEST
00001130: POP
00001131: GAS
00001132: STATICCALL
00001133: SWAP3
00001134: POP
00001135: POP
00001136: POP
00001137: DUP1
00001138: ISZERO
00001139: PUSH2 0x115f
0000113c: JUMPI
0000113d: POP
0000113e: PUSH1 0x40
00001140: DUP1
00001141: MLOAD
00001142: PUSH1 0x1f
00001144: RETURNDATASIZE
00001145: SWAP1
00001146: DUP2
00001147: ADD
00001148: PUSH1 0x1f
0000114a: NOT
0000114b: AND
0000114c: DUP3
0000114d: ADD
0000114e: SWAP1
0000114f: SWAP3
00001150: MSTORE
00001151: PUSH2 0x115c
00001154: SWAP2
00001155: DUP2
00001156: ADD
00001157: SWAP1
00001158: PUSH2 0x231f
0000115b: JUMP
0000115c: JUMPDEST
0000115d: PUSH1 0x01
0000115f: JUMPDEST
00001160: PUSH2 0x11c2
00001163: JUMPI
00001164: PUSH1 0x40
00001166: MLOAD
00001167: PUSH3 0x461bcd
0000116b: PUSH1 0xe5
0000116d: SHL
0000116e: DUP2
0000116f: MSTORE
00001170: PUSH1 0x20
00001172: PUSH1 0x04
00001174: DUP3
00001175: ADD
00001176: MSTORE
00001177: PUSH1 0x2e
00001179: PUSH1 0x24
0000117b: DUP3
0000117c: ADD
0000117d: MSTORE
0000117e: PUSH32 0x45524331393637557067726164653a206e657720696d706c656d656e74617469
0000119f: PUSH1 0x44
000011a1: DUP3
000011a2: ADD
000011a3: MSTORE
000011a4: PUSH14 0x6f6e206973206e6f742055555053
000011b3: PUSH1 0x90
000011b5: SHL
000011b6: PUSH1 0x64
000011b8: DUP3
000011b9: ADD
000011ba: MSTORE
000011bb: PUSH1 0x84
000011bd: ADD
000011be: PUSH2 0x0587
000011c1: JUMP
000011c2: JUMPDEST
000011c3: PUSH1 0x00
000011c5: DUP1
000011c6: MLOAD
000011c7: PUSH1 0x20
000011c9: PUSH2 0x2511
000011cc: DUP4
000011cd: CODECOPY
000011ce: DUP2
000011cf: MLOAD
000011d0: SWAP2
000011d1: MSTORE
000011d2: DUP2
000011d3: EQ
000011d4: PUSH2 0x1231
000011d7: JUMPI
000011d8: PUSH1 0x40
000011da: MLOAD
000011db: PUSH3 0x461bcd
000011df: PUSH1 0xe5
000011e1: SHL
000011e2: DUP2
000011e3: MSTORE
000011e4: PUSH1 0x20
000011e6: PUSH1 0x04
000011e8: DUP3
000011e9: ADD
000011ea: MSTORE
000011eb: PUSH1 0x29
000011ed: PUSH1 0x24
000011ef: DUP3
000011f0: ADD
000011f1: MSTORE
000011f2: PUSH32 0x45524331393637557067726164653a20756e737570706f727465642070726f78
00001213: PUSH1 0x44
00001215: DUP3
00001216: ADD
00001217: MSTORE
00001218: PUSH9 0x1a58589b1955555251
00001222: PUSH1 0xba
00001224: SHL
00001225: PUSH1 0x64
00001227: DUP3
00001228: ADD
00001229: MSTORE
0000122a: PUSH1 0x84
0000122c: ADD
0000122d: PUSH2 0x0587
00001230: JUMP
00001231: JUMPDEST
00001232: POP
00001233: PUSH2 0x04e0
00001236: DUP4
00001237: DUP4
00001238: DUP4
00001239: PUSH2 0x1743
0000123c: JUMP
0000123d: JUMPDEST
0000123e: PUSH1 0x40
00001240: MLOAD
00001241: PUSH4 0x21421707
00001246: PUSH1 0xe1
00001248: SHL
00001249: DUP2
0000124a: MSTORE
0000124b: ADDRESS
0000124c: PUSH1 0x04
0000124e: DUP3
0000124f: ADD
00001250: MSTORE
00001251: PUSH1 0x01
00001253: PUSH1 0x01
00001255: PUSH1 0xa0
00001257: SHL
00001258: SUB
00001259: DUP4
0000125a: DUP2
0000125b: AND
0000125c: PUSH1 0x24
0000125e: DUP4
0000125f: ADD
00001260: MSTORE
00001261: PUSH1 0x44
00001263: DUP3
00001264: ADD
00001265: DUP4
00001266: SWAP1
00001267: MSTORE
00001268: DUP5
00001269: AND
0000126a: SWAP1
0000126b: PUSH4 0x42842e0e
00001270: SWAP1
00001271: PUSH1 0x64
00001273: ADD
00001274: PUSH1 0x00
00001276: PUSH1 0x40
00001278: MLOAD
00001279: DUP1
0000127a: DUP4
0000127b: SUB
0000127c: DUP2
0000127d: PUSH1 0x00
0000127f: DUP8
00001280: DUP1
00001281: EXTCODESIZE
00001282: ISZERO
00001283: DUP1
00001284: ISZERO
00001285: PUSH2 0x128d
00001288: JUMPI
00001289: PUSH1 0x00
0000128b: DUP1
0000128c: REVERT
0000128d: JUMPDEST
0000128e: POP
0000128f: GAS
00001290: CALL
00001291: ISZERO
00001292: DUP1
00001293: ISZERO
00001294: PUSH2 0x12a1
00001297: JUMPI
00001298: RETURNDATASIZE
00001299: PUSH1 0x00
0000129b: DUP1
0000129c: RETURNDATACOPY
0000129d: RETURNDATASIZE
0000129e: PUSH1 0x00
000012a0: REVERT
000012a1: JUMPDEST
000012a2: POP
000012a3: POP
000012a4: POP
000012a5: POP
000012a6: POP
000012a7: POP
000012a8: POP
000012a9: JUMP
000012aa: JUMPDEST
000012ab: PUSH1 0x97
000012ad: SLOAD
000012ae: PUSH1 0x01
000012b0: PUSH1 0x01
000012b2: PUSH1 0xa0
000012b4: SHL
000012b5: SUB
000012b6: AND
000012b7: CALLER
000012b8: EQ
000012b9: PUSH2 0x0a5e
000012bc: JUMPI
000012bd: PUSH1 0x40
000012bf: MLOAD
000012c0: PUSH3 0x461bcd
000012c4: PUSH1 0xe5
000012c6: SHL
000012c7: DUP2
000012c8: MSTORE
000012c9: PUSH1 0x20
000012cb: PUSH1 0x04
000012cd: DUP3
000012ce: ADD
000012cf: DUP2
000012d0: SWAP1
000012d1: MSTORE
000012d2: PUSH1 0x24
000012d4: DUP3
000012d5: ADD
000012d6: MSTORE
000012d7: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
000012f8: PUSH1 0x44
000012fa: DUP3
000012fb: ADD
000012fc: MSTORE
000012fd: PUSH1 0x64
000012ff: ADD
00001300: PUSH2 0x0587
00001303: JUMP
00001304: JUMPDEST
00001305: PUSH1 0x97
00001307: DUP1
00001308: SLOAD
00001309: PUSH1 0x01
0000130b: PUSH1 0x01
0000130d: PUSH1 0xa0
0000130f: SHL
00001310: SUB
00001311: DUP4
00001312: DUP2
00001313: AND
00001314: PUSH1 0x01
00001316: PUSH1 0x01
00001318: PUSH1 0xa0
0000131a: SHL
0000131b: SUB
0000131c: NOT
0000131d: DUP4
0000131e: AND
0000131f: DUP2
00001320: OR
00001321: SWAP1
00001322: SWAP4
00001323: SSTORE
00001324: PUSH1 0x40
00001326: MLOAD
00001327: SWAP2
00001328: AND
00001329: SWAP2
0000132a: SWAP1
0000132b: DUP3
0000132c: SWAP1
0000132d: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000134e: SWAP1
0000134f: PUSH1 0x00
00001351: SWAP1
00001352: LOG3
00001353: POP
00001354: POP
00001355: JUMP
00001356: JUMPDEST
00001357: PUSH1 0x00
00001359: SLOAD
0000135a: PUSH2 0x0100
0000135d: SWAP1
0000135e: DIV
0000135f: PUSH1 0xff
00001361: AND
00001362: PUSH2 0x137d
00001365: JUMPI
00001366: PUSH1 0x40
00001368: MLOAD
00001369: PUSH3 0x461bcd
0000136d: PUSH1 0xe5
0000136f: SHL
00001370: DUP2
00001371: MSTORE
00001372: PUSH1 0x04
00001374: ADD
00001375: PUSH2 0x0587
00001378: SWAP1
00001379: PUSH2 0x2338
0000137c: JUMP
0000137d: JUMPDEST
0000137e: PUSH2 0x0a5e
00001381: PUSH2 0x1768
00001384: JUMP
00001385: JUMPDEST
00001386: PUSH1 0x00
00001388: SLOAD
00001389: PUSH2 0x0100
0000138c: SWAP1
0000138d: DIV
0000138e: PUSH1 0xff
00001390: AND
00001391: PUSH2 0x0a5e
00001394: JUMPI
00001395: PUSH1 0x40
00001397: MLOAD
00001398: PUSH3 0x461bcd
0000139c: PUSH1 0xe5
0000139e: SHL
0000139f: DUP2
000013a0: MSTORE
000013a1: PUSH1 0x04
000013a3: ADD
000013a4: PUSH2 0x0587
000013a7: SWAP1
000013a8: PUSH2 0x2338
000013ab: JUMP
000013ac: JUMPDEST
000013ad: PUSH2 0x059a
000013b0: DUP3
000013b1: DUP3
000013b2: PUSH2 0x1075
000013b5: JUMP
000013b6: JUMPDEST
000013b7: PUSH1 0x00
000013b9: PUSH2 0x0b9c
000013bc: DUP4
000013bd: DUP4
000013be: PUSH2 0x1798
000013c1: JUMP
000013c2: JUMPDEST
000013c3: PUSH1 0x00
000013c5: PUSH2 0x048f
000013c8: DUP3
000013c9: SLOAD
000013ca: SWAP1
000013cb: JUMP
000013cc: JUMPDEST
000013cd: PUSH2 0x13d6
000013d0: DUP3
000013d1: DUP3
000013d2: PUSH2 0x0ba3
000013d5: JUMP
000013d6: JUMPDEST
000013d7: PUSH2 0x059a
000013da: JUMPI
000013db: PUSH2 0x13e3
000013de: DUP2
000013df: PUSH2 0x17c2
000013e2: JUMP
000013e3: JUMPDEST
000013e4: PUSH2 0x13ee
000013e7: DUP4
000013e8: PUSH1 0x20
000013ea: PUSH2 0x17d4
000013ed: JUMP
000013ee: JUMPDEST
000013ef: PUSH1 0x40
000013f1: MLOAD
000013f2: PUSH1 0x20
000013f4: ADD
000013f5: PUSH2 0x13ff
000013f8: SWAP3
000013f9: SWAP2
000013fa: SWAP1
000013fb: PUSH2 0x23af
000013fe: JUMP
000013ff: JUMPDEST
00001400: PUSH1 0x40
00001402: DUP1
00001403: MLOAD
00001404: PUSH1 0x1f
00001406: NOT
00001407: DUP2
00001408: DUP5
00001409: SUB
0000140a: ADD
0000140b: DUP2
0000140c: MSTORE
0000140d: SWAP1
0000140e: DUP3
0000140f: SWAP1
00001410: MSTORE
00001411: PUSH3 0x461bcd
00001415: PUSH1 0xe5
00001417: SHL
00001418: DUP3
00001419: MSTORE
0000141a: PUSH2 0x0587
0000141d: SWAP2
0000141e: PUSH1 0x04
00001420: ADD
00001421: PUSH2 0x2424
00001424: JUMP
00001425: JUMPDEST
00001426: PUSH1 0x40
00001428: DUP1
00001429: MLOAD
0000142a: PUSH1 0x01
0000142c: PUSH1 0x01
0000142e: PUSH1 0xa0
00001430: SHL
00001431: SUB
00001432: DUP5
00001433: AND
00001434: PUSH1 0x24
00001436: DUP3
00001437: ADD
00001438: MSTORE
00001439: PUSH1 0x44
0000143b: DUP1
0000143c: DUP3
0000143d: ADD
0000143e: DUP5
0000143f: SWAP1
00001440: MSTORE
00001441: DUP3
00001442: MLOAD
00001443: DUP1
00001444: DUP4
00001445: SUB
00001446: SWAP1
00001447: SWAP2
00001448: ADD
00001449: DUP2
0000144a: MSTORE
0000144b: PUSH1 0x64
0000144d: SWAP1
0000144e: SWAP2
0000144f: ADD
00001450: SWAP1
00001451: SWAP2
00001452: MSTORE
00001453: PUSH1 0x20
00001455: DUP2
00001456: ADD
00001457: DUP1
00001458: MLOAD
00001459: PUSH1 0x01
0000145b: PUSH1 0x01
0000145d: PUSH1 0xe0
0000145f: SHL
00001460: SUB
00001461: AND
00001462: PUSH4 0xa9059cbb
00001467: PUSH1 0xe0
00001469: SHL
0000146a: OR
0000146b: SWAP1
0000146c: MSTORE
0000146d: PUSH2 0x04e0
00001470: SWAP1
00001471: DUP5
00001472: SWAP1
00001473: PUSH2 0x1970
00001476: JUMP
00001477: JUMPDEST
00001478: DUP1
00001479: SELFBALANCE
0000147a: LT
0000147b: ISZERO
0000147c: PUSH2 0x14c7
0000147f: JUMPI
00001480: PUSH1 0x40
00001482: MLOAD
00001483: PUSH3 0x461bcd
00001487: PUSH1 0xe5
00001489: SHL
0000148a: DUP2
0000148b: MSTORE
0000148c: PUSH1 0x20
0000148e: PUSH1 0x04
00001490: DUP3
00001491: ADD
00001492: MSTORE
00001493: PUSH1 0x1d
00001495: PUSH1 0x24
00001497: DUP3
00001498: ADD
00001499: MSTORE
0000149a: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000
000014bb: PUSH1 0x44
000014bd: DUP3
000014be: ADD
000014bf: MSTORE
000014c0: PUSH1 0x64
000014c2: ADD
000014c3: PUSH2 0x0587
000014c6: JUMP
000014c7: JUMPDEST
000014c8: PUSH1 0x00
000014ca: DUP3
000014cb: PUSH1 0x01
000014cd: PUSH1 0x01
000014cf: PUSH1 0xa0
000014d1: SHL
000014d2: SUB
000014d3: AND
000014d4: DUP3
000014d5: PUSH1 0x40
000014d7: MLOAD
000014d8: PUSH1 0x00
000014da: PUSH1 0x40
000014dc: MLOAD
000014dd: DUP1
000014de: DUP4
000014df: SUB
000014e0: DUP2
000014e1: DUP6
000014e2: DUP8
000014e3: GAS
000014e4: CALL
000014e5: SWAP3
000014e6: POP
000014e7: POP
000014e8: POP
000014e9: RETURNDATASIZE
000014ea: DUP1
000014eb: PUSH1 0x00
000014ed: DUP2
000014ee: EQ
000014ef: PUSH2 0x1514
000014f2: JUMPI
000014f3: PUSH1 0x40
000014f5: MLOAD
000014f6: SWAP2
000014f7: POP
000014f8: PUSH1 0x1f
000014fa: NOT
000014fb: PUSH1 0x3f
000014fd: RETURNDATASIZE
000014fe: ADD
000014ff: AND
00001500: DUP3
00001501: ADD
00001502: PUSH1 0x40
00001504: MSTORE
00001505: RETURNDATASIZE
00001506: DUP3
00001507: MSTORE
00001508: RETURNDATASIZE
00001509: PUSH1 0x00
0000150b: PUSH1 0x20
0000150d: DUP5
0000150e: ADD
0000150f: RETURNDATACOPY
00001510: PUSH2 0x1519
00001513: JUMP
00001514: JUMPDEST
00001515: PUSH1 0x60
00001517: SWAP2
00001518: POP
00001519: JUMPDEST
0000151a: POP
0000151b: POP
0000151c: SWAP1
0000151d: POP
0000151e: DUP1
0000151f: PUSH2 0x04e0
00001522: JUMPI
00001523: PUSH1 0x40
00001525: MLOAD
00001526: PUSH3 0x461bcd
0000152a: PUSH1 0xe5
0000152c: SHL
0000152d: DUP2
0000152e: MSTORE
0000152f: PUSH1 0x20
00001531: PUSH1 0x04
00001533: DUP3
00001534: ADD
00001535: MSTORE
00001536: PUSH1 0x3a
00001538: PUSH1 0x24
0000153a: DUP3
0000153b: ADD
0000153c: MSTORE
0000153d: PUSH32 0x416464726573733a20756e61626c6520746f2073656e642076616c75652c2072
0000155e: PUSH1 0x44
00001560: DUP3
00001561: ADD
00001562: MSTORE
00001563: PUSH32 0x6563697069656e74206d61792068617665207265766572746564000000000000
00001584: PUSH1 0x64
00001586: DUP3
00001587: ADD
00001588: MSTORE
00001589: PUSH1 0x84
0000158b: ADD
0000158c: PUSH2 0x0587
0000158f: JUMP
00001590: JUMPDEST
00001591: PUSH2 0x159a
00001594: DUP3
00001595: DUP3
00001596: PUSH2 0x0ba3
00001599: JUMP
0000159a: JUMPDEST
0000159b: PUSH2 0x059a
0000159e: JUMPI
0000159f: PUSH1 0x00
000015a1: DUP3
000015a2: DUP2
000015a3: MSTORE
000015a4: PUSH1 0xfb
000015a6: PUSH1 0x20
000015a8: SWAP1
000015a9: DUP2
000015aa: MSTORE
000015ab: PUSH1 0x40
000015ad: DUP1
000015ae: DUP4
000015af: KECCAK256
000015b0: PUSH1 0x01
000015b2: PUSH1 0x01
000015b4: PUSH1 0xa0
000015b6: SHL
000015b7: SUB
000015b8: DUP6
000015b9: AND
000015ba: DUP5
000015bb: MSTORE
000015bc: SWAP1
000015bd: SWAP2
000015be: MSTORE
000015bf: SWAP1
000015c0: KECCAK256
000015c1: DUP1
000015c2: SLOAD
000015c3: PUSH1 0xff
000015c5: NOT
000015c6: AND
000015c7: PUSH1 0x01
000015c9: OR
000015ca: SWAP1
000015cb: SSTORE
000015cc: PUSH2 0x15d2
000015cf: CALLER
000015d0: SWAP1
000015d1: JUMP
000015d2: JUMPDEST
000015d3: PUSH1 0x01
000015d5: PUSH1 0x01
000015d7: PUSH1 0xa0
000015d9: SHL
000015da: SUB
000015db: AND
000015dc: DUP2
000015dd: PUSH1 0x01
000015df: PUSH1 0x01
000015e1: PUSH1 0xa0
000015e3: SHL
000015e4: SUB
000015e5: AND
000015e6: DUP4
000015e7: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d
00001608: PUSH1 0x40
0000160a: MLOAD
0000160b: PUSH1 0x40
0000160d: MLOAD
0000160e: DUP1
0000160f: SWAP2
00001610: SUB
00001611: SWAP1
00001612: LOG4
00001613: POP
00001614: POP
00001615: JUMP
00001616: JUMPDEST
00001617: PUSH1 0x00
00001619: PUSH2 0x0b9c
0000161c: DUP4
0000161d: PUSH1 0x01
0000161f: PUSH1 0x01
00001621: PUSH1 0xa0
00001623: SHL
00001624: SUB
00001625: DUP5
00001626: AND
00001627: PUSH2 0x1a42
0000162a: JUMP
0000162b: JUMPDEST
0000162c: PUSH2 0x1635
0000162f: DUP3
00001630: DUP3
00001631: PUSH2 0x0ba3
00001634: JUMP
00001635: JUMPDEST
00001636: ISZERO
00001637: PUSH2 0x059a
0000163a: JUMPI
0000163b: PUSH1 0x00
0000163d: DUP3
0000163e: DUP2
0000163f: MSTORE
00001640: PUSH1 0xfb
00001642: PUSH1 0x20
00001644: SWAP1
00001645: DUP2
00001646: MSTORE
00001647: PUSH1 0x40
00001649: DUP1
0000164a: DUP4
0000164b: KECCAK256
0000164c: PUSH1 0x01
0000164e: PUSH1 0x01
00001650: PUSH1 0xa0
00001652: SHL
00001653: SUB
00001654: DUP6
00001655: AND
00001656: DUP1
00001657: DUP6
00001658: MSTORE
00001659: SWAP3
0000165a: MSTORE
0000165b: DUP1
0000165c: DUP4
0000165d: KECCAK256
0000165e: DUP1
0000165f: SLOAD
00001660: PUSH1 0xff
00001662: NOT
00001663: AND
00001664: SWAP1
00001665: SSTORE
00001666: MLOAD
00001667: CALLER
00001668: SWAP3
00001669: DUP6
0000166a: SWAP2
0000166b: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b
0000168c: SWAP2
0000168d: SWAP1
0000168e: LOG4
0000168f: POP
00001690: POP
00001691: JUMP
00001692: JUMPDEST
00001693: PUSH1 0x00
00001695: PUSH2 0x0b9c
00001698: DUP4
00001699: PUSH1 0x01
0000169b: PUSH1 0x01
0000169d: PUSH1 0xa0
0000169f: SHL
000016a0: SUB
000016a1: DUP5
000016a2: AND
000016a3: PUSH2 0x1a91
000016a6: JUMP
000016a7: JUMPDEST
000016a8: PUSH1 0x01
000016aa: PUSH1 0x01
000016ac: PUSH1 0xa0
000016ae: SHL
000016af: SUB
000016b0: DUP2
000016b1: AND
000016b2: EXTCODESIZE
000016b3: PUSH2 0x1714
000016b6: JUMPI
000016b7: PUSH1 0x40
000016b9: MLOAD
000016ba: PUSH3 0x461bcd
000016be: PUSH1 0xe5
000016c0: SHL
000016c1: DUP2
000016c2: MSTORE
000016c3: PUSH1 0x20
000016c5: PUSH1 0x04
000016c7: DUP3
000016c8: ADD
000016c9: MSTORE
000016ca: PUSH1 0x2d
000016cc: PUSH1 0x24
000016ce: DUP3
000016cf: ADD
000016d0: MSTORE
000016d1: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e
000016f2: PUSH1 0x44
000016f4: DUP3
000016f5: ADD
000016f6: MSTORE
000016f7: PUSH13 0x1bdd08184818dbdb9d1c9858dd
00001705: PUSH1 0x9a
00001707: SHL
00001708: PUSH1 0x64
0000170a: DUP3
0000170b: ADD
0000170c: MSTORE
0000170d: PUSH1 0x84
0000170f: ADD
00001710: PUSH2 0x0587
00001713: JUMP
00001714: JUMPDEST
00001715: PUSH1 0x00
00001717: DUP1
00001718: MLOAD
00001719: PUSH1 0x20
0000171b: PUSH2 0x2511
0000171e: DUP4
0000171f: CODECOPY
00001720: DUP2
00001721: MLOAD
00001722: SWAP2
00001723: MSTORE
00001724: DUP1
00001725: SLOAD
00001726: PUSH1 0x01
00001728: PUSH1 0x01
0000172a: PUSH1 0xa0
0000172c: SHL
0000172d: SUB
0000172e: NOT
0000172f: AND
00001730: PUSH1 0x01
00001732: PUSH1 0x01
00001734: PUSH1 0xa0
00001736: SHL
00001737: SUB
00001738: SWAP3
00001739: SWAP1
0000173a: SWAP3
0000173b: AND
0000173c: SWAP2
0000173d: SWAP1
0000173e: SWAP2
0000173f: OR
00001740: SWAP1
00001741: SSTORE
00001742: JUMP
00001743: JUMPDEST
00001744: PUSH2 0x174c
00001747: DUP4
00001748: PUSH2 0x1b84
0000174b: JUMP
0000174c: JUMPDEST
0000174d: PUSH1 0x00
0000174f: DUP3
00001750: MLOAD
00001751: GT
00001752: DUP1
00001753: PUSH2 0x1759
00001756: JUMPI
00001757: POP
00001758: DUP1
00001759: JUMPDEST
0000175a: ISZERO
0000175b: PUSH2 0x04e0
0000175e: JUMPI
0000175f: PUSH2 0x04b8
00001762: DUP4
00001763: DUP4
00001764: PUSH2 0x1bc4
00001767: JUMP
00001768: JUMPDEST
00001769: PUSH1 0x00
0000176b: SLOAD
0000176c: PUSH2 0x0100
0000176f: SWAP1
00001770: DIV
00001771: PUSH1 0xff
00001773: AND
00001774: PUSH2 0x178f
00001777: JUMPI
00001778: PUSH1 0x40
0000177a: MLOAD
0000177b: PUSH3 0x461bcd
0000177f: PUSH1 0xe5
00001781: SHL
00001782: DUP2
00001783: MSTORE
00001784: PUSH1 0x04
00001786: ADD
00001787: PUSH2 0x0587
0000178a: SWAP1
0000178b: PUSH2 0x2338
0000178e: JUMP
0000178f: JUMPDEST
00001790: PUSH2 0x0a5e
00001793: CALLER
00001794: PUSH2 0x1304
00001797: JUMP
00001798: JUMPDEST
00001799: PUSH1 0x00
0000179b: DUP3
0000179c: PUSH1 0x00
0000179e: ADD
0000179f: DUP3
000017a0: DUP2
000017a1: SLOAD
000017a2: DUP2
000017a3: LT
000017a4: PUSH2 0x17af
000017a7: JUMPI
000017a8: PUSH2 0x17af
000017ab: PUSH2 0x22d8
000017ae: JUMP
000017af: JUMPDEST
000017b0: SWAP1
000017b1: PUSH1 0x00
000017b3: MSTORE
000017b4: PUSH1 0x20
000017b6: PUSH1 0x00
000017b8: KECCAK256
000017b9: ADD
000017ba: SLOAD
000017bb: SWAP1
000017bc: POP
000017bd: SWAP3
000017be: SWAP2
000017bf: POP
000017c0: POP
000017c1: JUMP
000017c2: JUMPDEST
000017c3: PUSH1 0x60
000017c5: PUSH2 0x048f
000017c8: PUSH1 0x01
000017ca: PUSH1 0x01
000017cc: PUSH1 0xa0
000017ce: SHL
000017cf: SUB
000017d0: DUP4
000017d1: AND
000017d2: PUSH1 0x14
000017d4: JUMPDEST
000017d5: PUSH1 0x60
000017d7: PUSH1 0x00
000017d9: PUSH2 0x17e3
000017dc: DUP4
000017dd: PUSH1 0x02
000017df: PUSH2 0x2457
000017e2: JUMP
000017e3: JUMPDEST
000017e4: PUSH2 0x17ee
000017e7: SWAP1
000017e8: PUSH1 0x02
000017ea: PUSH2 0x2476
000017ed: JUMP
000017ee: JUMPDEST
000017ef: PUSH8 0xffffffffffffffff
000017f8: DUP2
000017f9: GT
000017fa: ISZERO
000017fb: PUSH2 0x1806
000017fe: JUMPI
000017ff: PUSH2 0x1806
00001802: PUSH2 0x1f07
00001805: JUMP
00001806: JUMPDEST
00001807: PUSH1 0x40
00001809: MLOAD
0000180a: SWAP1
0000180b: DUP1
0000180c: DUP3
0000180d: MSTORE
0000180e: DUP1
0000180f: PUSH1 0x1f
00001811: ADD
00001812: PUSH1 0x1f
00001814: NOT
00001815: AND
00001816: PUSH1 0x20
00001818: ADD
00001819: DUP3
0000181a: ADD
0000181b: PUSH1 0x40
0000181d: MSTORE
0000181e: DUP1
0000181f: ISZERO
00001820: PUSH2 0x1830
00001823: JUMPI
00001824: PUSH1 0x20
00001826: DUP3
00001827: ADD
00001828: DUP2
00001829: DUP1
0000182a: CALLDATASIZE
0000182b: DUP4
0000182c: CALLDATACOPY
0000182d: ADD
0000182e: SWAP1
0000182f: POP
00001830: JUMPDEST
00001831: POP
00001832: SWAP1
00001833: POP
00001834: PUSH1 0x03
00001836: PUSH1 0xfc
00001838: SHL
00001839: DUP2
0000183a: PUSH1 0x00
0000183c: DUP2
0000183d: MLOAD
0000183e: DUP2
0000183f: LT
00001840: PUSH2 0x184b
00001843: JUMPI
00001844: PUSH2 0x184b
00001847: PUSH2 0x22d8
0000184a: JUMP
0000184b: JUMPDEST
0000184c: PUSH1 0x20
0000184e: ADD
0000184f: ADD
00001850: SWAP1
00001851: PUSH1 0x01
00001853: PUSH1 0x01
00001855: PUSH1 0xf8
00001857: SHL
00001858: SUB
00001859: NOT
0000185a: AND
0000185b: SWAP1
0000185c: DUP2
0000185d: PUSH1 0x00
0000185f: BYTE
00001860: SWAP1
00001861: MSTORE8
00001862: POP
00001863: PUSH1 0x0f
00001865: PUSH1 0xfb
00001867: SHL
00001868: DUP2
00001869: PUSH1 0x01
0000186b: DUP2
0000186c: MLOAD
0000186d: DUP2
0000186e: LT
0000186f: PUSH2 0x187a
00001872: JUMPI
00001873: PUSH2 0x187a
00001876: PUSH2 0x22d8
00001879: JUMP
0000187a: JUMPDEST
0000187b: PUSH1 0x20
0000187d: ADD
0000187e: ADD
0000187f: SWAP1
00001880: PUSH1 0x01
00001882: PUSH1 0x01
00001884: PUSH1 0xf8
00001886: SHL
00001887: SUB
00001888: NOT
00001889: AND
0000188a: SWAP1
0000188b: DUP2
0000188c: PUSH1 0x00
0000188e: BYTE
0000188f: SWAP1
00001890: MSTORE8
00001891: POP
00001892: PUSH1 0x00
00001894: PUSH2 0x189e
00001897: DUP5
00001898: PUSH1 0x02
0000189a: PUSH2 0x2457
0000189d: JUMP
0000189e: JUMPDEST
0000189f: PUSH2 0x18a9
000018a2: SWAP1
000018a3: PUSH1 0x01
000018a5: PUSH2 0x2476
000018a8: JUMP
000018a9: JUMPDEST
000018aa: SWAP1
000018ab: POP
000018ac: JUMPDEST
000018ad: PUSH1 0x01
000018af: DUP2
000018b0: GT
000018b1: ISZERO
000018b2: PUSH2 0x1921
000018b5: JUMPI
000018b6: PUSH16 0x181899199a1a9b1b9c1cb0b131b232b3
000018c7: PUSH1 0x81
000018c9: SHL
000018ca: DUP6
000018cb: PUSH1 0x0f
000018cd: AND
000018ce: PUSH1 0x10
000018d0: DUP2
000018d1: LT
000018d2: PUSH2 0x18dd
000018d5: JUMPI
000018d6: PUSH2 0x18dd
000018d9: PUSH2 0x22d8
000018dc: JUMP
000018dd: JUMPDEST
000018de: BYTE
000018df: PUSH1 0xf8
000018e1: SHL
000018e2: DUP3
000018e3: DUP3
000018e4: DUP2
000018e5: MLOAD
000018e6: DUP2
000018e7: LT
000018e8: PUSH2 0x18f3
000018eb: JUMPI
000018ec: PUSH2 0x18f3
000018ef: PUSH2 0x22d8
000018f2: JUMP
000018f3: JUMPDEST
000018f4: PUSH1 0x20
000018f6: ADD
000018f7: ADD
000018f8: SWAP1
000018f9: PUSH1 0x01
000018fb: PUSH1 0x01
000018fd: PUSH1 0xf8
000018ff: SHL
00001900: SUB
00001901: NOT
00001902: AND
00001903: SWAP1
00001904: DUP2
00001905: PUSH1 0x00
00001907: BYTE
00001908: SWAP1
00001909: MSTORE8
0000190a: POP
0000190b: PUSH1 0x04
0000190d: SWAP5
0000190e: SWAP1
0000190f: SWAP5
00001910: SHR
00001911: SWAP4
00001912: PUSH2 0x191a
00001915: DUP2
00001916: PUSH2 0x248e
00001919: JUMP
0000191a: JUMPDEST
0000191b: SWAP1
0000191c: POP
0000191d: PUSH2 0x18ac
00001920: JUMP
00001921: JUMPDEST
00001922: POP
00001923: DUP4
00001924: ISZERO
00001925: PUSH2 0x0b9c
00001928: JUMPI
00001929: PUSH1 0x40
0000192b: MLOAD
0000192c: PUSH3 0x461bcd
00001930: PUSH1 0xe5
00001932: SHL
00001933: DUP2
00001934: MSTORE
00001935: PUSH1 0x20
00001937: PUSH1 0x04
00001939: DUP3
0000193a: ADD
0000193b: DUP2
0000193c: SWAP1
0000193d: MSTORE
0000193e: PUSH1 0x24
00001940: DUP3
00001941: ADD
00001942: MSTORE
00001943: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74
00001964: PUSH1 0x44
00001966: DUP3
00001967: ADD
00001968: MSTORE
00001969: PUSH1 0x64
0000196b: ADD
0000196c: PUSH2 0x0587
0000196f: JUMP
00001970: JUMPDEST
00001971: PUSH1 0x00
00001973: PUSH2 0x19c5
00001976: DUP3
00001977: PUSH1 0x40
00001979: MLOAD
0000197a: DUP1
0000197b: PUSH1 0x40
0000197d: ADD
0000197e: PUSH1 0x40
00001980: MSTORE
00001981: DUP1
00001982: PUSH1 0x20
00001984: DUP2
00001985: MSTORE
00001986: PUSH1 0x20
00001988: ADD
00001989: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
000019aa: DUP2
000019ab: MSTORE
000019ac: POP
000019ad: DUP6
000019ae: PUSH1 0x01
000019b0: PUSH1 0x01
000019b2: PUSH1 0xa0
000019b4: SHL
000019b5: SUB
000019b6: AND
000019b7: PUSH2 0x1cb8
000019ba: SWAP1
000019bb: SWAP3
000019bc: SWAP2
000019bd: SWAP1
000019be: PUSH4 0xffffffff
000019c3: AND
000019c4: JUMP
000019c5: JUMPDEST
000019c6: DUP1
000019c7: MLOAD
000019c8: SWAP1
000019c9: SWAP2
000019ca: POP
000019cb: ISZERO
000019cc: PUSH2 0x04e0
000019cf: JUMPI
000019d0: DUP1
000019d1: DUP1
000019d2: PUSH1 0x20
000019d4: ADD
000019d5: SWAP1
000019d6: MLOAD
000019d7: DUP2
000019d8: ADD
000019d9: SWAP1
000019da: PUSH2 0x19e3
000019dd: SWAP2
000019de: SWAP1
000019df: PUSH2 0x24a5
000019e2: JUMP
000019e3: JUMPDEST
000019e4: PUSH2 0x04e0
000019e7: JUMPI
000019e8: PUSH1 0x40
000019ea: MLOAD
000019eb: PUSH3 0x461bcd
000019ef: PUSH1 0xe5
000019f1: SHL
000019f2: DUP2
000019f3: MSTORE
000019f4: PUSH1 0x20
000019f6: PUSH1 0x04
000019f8: DUP3
000019f9: ADD
000019fa: MSTORE
000019fb: PUSH1 0x2a
000019fd: PUSH1 0x24
000019ff: DUP3
00001a00: ADD
00001a01: MSTORE
00001a02: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00001a23: PUSH1 0x44
00001a25: DUP3
00001a26: ADD
00001a27: MSTORE
00001a28: PUSH10 0x1bdd081cdd58d8d95959
00001a33: PUSH1 0xb2
00001a35: SHL
00001a36: PUSH1 0x64
00001a38: DUP3
00001a39: ADD
00001a3a: MSTORE
00001a3b: PUSH1 0x84
00001a3d: ADD
00001a3e: PUSH2 0x0587
00001a41: JUMP
00001a42: JUMPDEST
00001a43: PUSH1 0x00
00001a45: DUP2
00001a46: DUP2
00001a47: MSTORE
00001a48: PUSH1 0x01
00001a4a: DUP4
00001a4b: ADD
00001a4c: PUSH1 0x20
00001a4e: MSTORE
00001a4f: PUSH1 0x40
00001a51: DUP2
00001a52: KECCAK256
00001a53: SLOAD
00001a54: PUSH2 0x1a89
00001a57: JUMPI
00001a58: POP
00001a59: DUP2
00001a5a: SLOAD
00001a5b: PUSH1 0x01
00001a5d: DUP2
00001a5e: DUP2
00001a5f: ADD
00001a60: DUP5
00001a61: SSTORE
00001a62: PUSH1 0x00
00001a64: DUP5
00001a65: DUP2
00001a66: MSTORE
00001a67: PUSH1 0x20
00001a69: DUP1
00001a6a: DUP3
00001a6b: KECCAK256
00001a6c: SWAP1
00001a6d: SWAP4
00001a6e: ADD
00001a6f: DUP5
00001a70: SWAP1
00001a71: SSTORE
00001a72: DUP5
00001a73: SLOAD
00001a74: DUP5
00001a75: DUP3
00001a76: MSTORE
00001a77: DUP3
00001a78: DUP7
00001a79: ADD
00001a7a: SWAP1
00001a7b: SWAP4
00001a7c: MSTORE
00001a7d: PUSH1 0x40
00001a7f: SWAP1
00001a80: KECCAK256
00001a81: SWAP2
00001a82: SWAP1
00001a83: SWAP2
00001a84: SSTORE
00001a85: PUSH2 0x048f
00001a88: JUMP
00001a89: JUMPDEST
00001a8a: POP
00001a8b: PUSH1 0x00
00001a8d: PUSH2 0x048f
00001a90: JUMP
00001a91: JUMPDEST
00001a92: PUSH1 0x00
00001a94: DUP2
00001a95: DUP2
00001a96: MSTORE
00001a97: PUSH1 0x01
00001a99: DUP4
00001a9a: ADD
00001a9b: PUSH1 0x20
00001a9d: MSTORE
00001a9e: PUSH1 0x40
00001aa0: DUP2
00001aa1: KECCAK256
00001aa2: SLOAD
00001aa3: DUP1
00001aa4: ISZERO
00001aa5: PUSH2 0x1b7a
00001aa8: JUMPI
00001aa9: PUSH1 0x00
00001aab: PUSH2 0x1ab5
00001aae: PUSH1 0x01
00001ab0: DUP4
00001ab1: PUSH2 0x24c7
00001ab4: JUMP
00001ab5: JUMPDEST
00001ab6: DUP6
00001ab7: SLOAD
00001ab8: SWAP1
00001ab9: SWAP2
00001aba: POP
00001abb: PUSH1 0x00
00001abd: SWAP1
00001abe: PUSH2 0x1ac9
00001ac1: SWAP1
00001ac2: PUSH1 0x01
00001ac4: SWAP1
00001ac5: PUSH2 0x24c7
00001ac8: JUMP
00001ac9: JUMPDEST
00001aca: SWAP1
00001acb: POP
00001acc: DUP2
00001acd: DUP2
00001ace: EQ
00001acf: PUSH2 0x1b2e
00001ad2: JUMPI
00001ad3: PUSH1 0x00
00001ad5: DUP7
00001ad6: PUSH1 0x00
00001ad8: ADD
00001ad9: DUP3
00001ada: DUP2
00001adb: SLOAD
00001adc: DUP2
00001add: LT
00001ade: PUSH2 0x1ae9
00001ae1: JUMPI
00001ae2: PUSH2 0x1ae9
00001ae5: PUSH2 0x22d8
00001ae8: JUMP
00001ae9: JUMPDEST
00001aea: SWAP1
00001aeb: PUSH1 0x00
00001aed: MSTORE
00001aee: PUSH1 0x20
00001af0: PUSH1 0x00
00001af2: KECCAK256
00001af3: ADD
00001af4: SLOAD
00001af5: SWAP1
00001af6: POP
00001af7: DUP1
00001af8: DUP8
00001af9: PUSH1 0x00
00001afb: ADD
00001afc: DUP5
00001afd: DUP2
00001afe: SLOAD
00001aff: DUP2
00001b00: LT
00001b01: PUSH2 0x1b0c
00001b04: JUMPI
00001b05: PUSH2 0x1b0c
00001b08: PUSH2 0x22d8
00001b0b: JUMP
00001b0c: JUMPDEST
00001b0d: PUSH1 0x00
00001b0f: SWAP2
00001b10: DUP3
00001b11: MSTORE
00001b12: PUSH1 0x20
00001b14: DUP1
00001b15: DUP4
00001b16: KECCAK256
00001b17: SWAP1
00001b18: SWAP2
00001b19: ADD
00001b1a: SWAP3
00001b1b: SWAP1
00001b1c: SWAP3
00001b1d: SSTORE
00001b1e: SWAP2
00001b1f: DUP3
00001b20: MSTORE
00001b21: PUSH1 0x01
00001b23: DUP9
00001b24: ADD
00001b25: SWAP1
00001b26: MSTORE
00001b27: PUSH1 0x40
00001b29: SWAP1
00001b2a: KECCAK256
00001b2b: DUP4
00001b2c: SWAP1
00001b2d: SSTORE
00001b2e: JUMPDEST
00001b2f: DUP6
00001b30: SLOAD
00001b31: DUP7
00001b32: SWAP1
00001b33: DUP1
00001b34: PUSH2 0x1b3f
00001b37: JUMPI
00001b38: PUSH2 0x1b3f
00001b3b: PUSH2 0x24de
00001b3e: JUMP
00001b3f: JUMPDEST
00001b40: PUSH1 0x01
00001b42: SWAP1
00001b43: SUB
00001b44: DUP2
00001b45: DUP2
00001b46: SWAP1
00001b47: PUSH1 0x00
00001b49: MSTORE
00001b4a: PUSH1 0x20
00001b4c: PUSH1 0x00
00001b4e: KECCAK256
00001b4f: ADD
00001b50: PUSH1 0x00
00001b52: SWAP1
00001b53: SSTORE
00001b54: SWAP1
00001b55: SSTORE
00001b56: DUP6
00001b57: PUSH1 0x01
00001b59: ADD
00001b5a: PUSH1 0x00
00001b5c: DUP7
00001b5d: DUP2
00001b5e: MSTORE
00001b5f: PUSH1 0x20
00001b61: ADD
00001b62: SWAP1
00001b63: DUP2
00001b64: MSTORE
00001b65: PUSH1 0x20
00001b67: ADD
00001b68: PUSH1 0x00
00001b6a: KECCAK256
00001b6b: PUSH1 0x00
00001b6d: SWAP1
00001b6e: SSTORE
00001b6f: PUSH1 0x01
00001b71: SWAP4
00001b72: POP
00001b73: POP
00001b74: POP
00001b75: POP
00001b76: PUSH2 0x048f
00001b79: JUMP
00001b7a: JUMPDEST
00001b7b: PUSH1 0x00
00001b7d: SWAP2
00001b7e: POP
00001b7f: POP
00001b80: PUSH2 0x048f
00001b83: JUMP
00001b84: JUMPDEST
00001b85: PUSH2 0x1b8d
00001b88: DUP2
00001b89: PUSH2 0x16a7
00001b8c: JUMP
00001b8d: JUMPDEST
00001b8e: PUSH1 0x40
00001b90: MLOAD
00001b91: PUSH1 0x01
00001b93: PUSH1 0x01
00001b95: PUSH1 0xa0
00001b97: SHL
00001b98: SUB
00001b99: DUP3
00001b9a: AND
00001b9b: SWAP1
00001b9c: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
00001bbd: SWAP1
00001bbe: PUSH1 0x00
00001bc0: SWAP1
00001bc1: LOG2
00001bc2: POP
00001bc3: JUMP
00001bc4: JUMPDEST
00001bc5: PUSH1 0x60
00001bc7: PUSH1 0x01
00001bc9: PUSH1 0x01
00001bcb: PUSH1 0xa0
00001bcd: SHL
00001bce: SUB
00001bcf: DUP4
00001bd0: AND
00001bd1: EXTCODESIZE
00001bd2: PUSH2 0x1c2c
00001bd5: JUMPI
00001bd6: PUSH1 0x40
00001bd8: MLOAD
00001bd9: PUSH3 0x461bcd
00001bdd: PUSH1 0xe5
00001bdf: SHL
00001be0: DUP2
00001be1: MSTORE
00001be2: PUSH1 0x20
00001be4: PUSH1 0x04
00001be6: DUP3
00001be7: ADD
00001be8: MSTORE
00001be9: PUSH1 0x26
00001beb: PUSH1 0x24
00001bed: DUP3
00001bee: ADD
00001bef: MSTORE
00001bf0: PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f
00001c11: PUSH1 0x44
00001c13: DUP3
00001c14: ADD
00001c15: MSTORE
00001c16: PUSH6 0x1b9d1c9858dd
00001c1d: PUSH1 0xd2
00001c1f: SHL
00001c20: PUSH1 0x64
00001c22: DUP3
00001c23: ADD
00001c24: MSTORE
00001c25: PUSH1 0x84
00001c27: ADD
00001c28: PUSH2 0x0587
00001c2b: JUMP
00001c2c: JUMPDEST
00001c2d: PUSH1 0x00
00001c2f: DUP1
00001c30: DUP5
00001c31: PUSH1 0x01
00001c33: PUSH1 0x01
00001c35: PUSH1 0xa0
00001c37: SHL
00001c38: SUB
00001c39: AND
00001c3a: DUP5
00001c3b: PUSH1 0x40
00001c3d: MLOAD
00001c3e: PUSH2 0x1c47
00001c41: SWAP2
00001c42: SWAP1
00001c43: PUSH2 0x24f4
00001c46: JUMP
00001c47: JUMPDEST
00001c48: PUSH1 0x00
00001c4a: PUSH1 0x40
00001c4c: MLOAD
00001c4d: DUP1
00001c4e: DUP4
00001c4f: SUB
00001c50: DUP2
00001c51: DUP6
00001c52: GAS
00001c53: DELEGATECALL
00001c54: SWAP2
00001c55: POP
00001c56: POP
00001c57: RETURNDATASIZE
00001c58: DUP1
00001c59: PUSH1 0x00
00001c5b: DUP2
00001c5c: EQ
00001c5d: PUSH2 0x1c82
00001c60: JUMPI
00001c61: PUSH1 0x40
00001c63: MLOAD
00001c64: SWAP2
00001c65: POP
00001c66: PUSH1 0x1f
00001c68: NOT
00001c69: PUSH1 0x3f
00001c6b: RETURNDATASIZE
00001c6c: ADD
00001c6d: AND
00001c6e: DUP3
00001c6f: ADD
00001c70: PUSH1 0x40
00001c72: MSTORE
00001c73: RETURNDATASIZE
00001c74: DUP3
00001c75: MSTORE
00001c76: RETURNDATASIZE
00001c77: PUSH1 0x00
00001c79: PUSH1 0x20
00001c7b: DUP5
00001c7c: ADD
00001c7d: RETURNDATACOPY
00001c7e: PUSH2 0x1c87
00001c81: JUMP
00001c82: JUMPDEST
00001c83: PUSH1 0x60
00001c85: SWAP2
00001c86: POP
00001c87: JUMPDEST
00001c88: POP
00001c89: SWAP2
00001c8a: POP
00001c8b: SWAP2
00001c8c: POP
00001c8d: PUSH2 0x1caf
00001c90: DUP3
00001c91: DUP3
00001c92: PUSH1 0x40
00001c94: MLOAD
00001c95: DUP1
00001c96: PUSH1 0x60
00001c98: ADD
00001c99: PUSH1 0x40
00001c9b: MSTORE
00001c9c: DUP1
00001c9d: PUSH1 0x27
00001c9f: DUP2
00001ca0: MSTORE
00001ca1: PUSH1 0x20
00001ca3: ADD
00001ca4: PUSH2 0x2531
00001ca7: PUSH1 0x27
00001ca9: SWAP2
00001caa: CODECOPY
00001cab: PUSH2 0x1cc7
00001cae: JUMP
00001caf: JUMPDEST
00001cb0: SWAP6
00001cb1: SWAP5
00001cb2: POP
00001cb3: POP
00001cb4: POP
00001cb5: POP
00001cb6: POP
00001cb7: JUMP
00001cb8: JUMPDEST
00001cb9: PUSH1 0x60
00001cbb: PUSH2 0x04ee
00001cbe: DUP5
00001cbf: DUP5
00001cc0: PUSH1 0x00
00001cc2: DUP6
00001cc3: PUSH2 0x1ce0
00001cc6: JUMP
00001cc7: JUMPDEST
00001cc8: PUSH1 0x60
00001cca: DUP4
00001ccb: ISZERO
00001ccc: PUSH2 0x1cd6
00001ccf: JUMPI
00001cd0: POP
00001cd1: DUP2
00001cd2: PUSH2 0x0b9c
00001cd5: JUMP
00001cd6: JUMPDEST
00001cd7: PUSH2 0x0b9c
00001cda: DUP4
00001cdb: DUP4
00001cdc: PUSH2 0x1dbb
00001cdf: JUMP
00001ce0: JUMPDEST
00001ce1: PUSH1 0x60
00001ce3: DUP3
00001ce4: SELFBALANCE
00001ce5: LT
00001ce6: ISZERO
00001ce7: PUSH2 0x1d41
00001cea: JUMPI
00001ceb: PUSH1 0x40
00001ced: MLOAD
00001cee: PUSH3 0x461bcd
00001cf2: PUSH1 0xe5
00001cf4: SHL
00001cf5: DUP2
00001cf6: MSTORE
00001cf7: PUSH1 0x20
00001cf9: PUSH1 0x04
00001cfb: DUP3
00001cfc: ADD
00001cfd: MSTORE
00001cfe: PUSH1 0x26
00001d00: PUSH1 0x24
00001d02: DUP3
00001d03: ADD
00001d04: MSTORE
00001d05: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00001d26: PUSH1 0x44
00001d28: DUP3
00001d29: ADD
00001d2a: MSTORE
00001d2b: PUSH6 0x1c8818d85b1b
00001d32: PUSH1 0xd2
00001d34: SHL
00001d35: PUSH1 0x64
00001d37: DUP3
00001d38: ADD
00001d39: MSTORE
00001d3a: PUSH1 0x84
00001d3c: ADD
00001d3d: PUSH2 0x0587
00001d40: JUMP
00001d41: JUMPDEST
00001d42: PUSH1 0x00
00001d44: DUP1
00001d45: DUP7
00001d46: PUSH1 0x01
00001d48: PUSH1 0x01
00001d4a: PUSH1 0xa0
00001d4c: SHL
00001d4d: SUB
00001d4e: AND
00001d4f: DUP6
00001d50: DUP8
00001d51: PUSH1 0x40
00001d53: MLOAD
00001d54: PUSH2 0x1d5d
00001d57: SWAP2
00001d58: SWAP1
00001d59: PUSH2 0x24f4
00001d5c: JUMP
00001d5d: JUMPDEST
00001d5e: PUSH1 0x00
00001d60: PUSH1 0x40
00001d62: MLOAD
00001d63: DUP1
00001d64: DUP4
00001d65: SUB
00001d66: DUP2
00001d67: DUP6
00001d68: DUP8
00001d69: GAS
00001d6a: CALL
00001d6b: SWAP3
00001d6c: POP
00001d6d: POP
00001d6e: POP
00001d6f: RETURNDATASIZE
00001d70: DUP1
00001d71: PUSH1 0x00
00001d73: DUP2
00001d74: EQ
00001d75: PUSH2 0x1d9a
00001d78: JUMPI
00001d79: PUSH1 0x40
00001d7b: MLOAD
00001d7c: SWAP2
00001d7d: POP
00001d7e: PUSH1 0x1f
00001d80: NOT
00001d81: PUSH1 0x3f
00001d83: RETURNDATASIZE
00001d84: ADD
00001d85: AND
00001d86: DUP3
00001d87: ADD
00001d88: PUSH1 0x40
00001d8a: MSTORE
00001d8b: RETURNDATASIZE
00001d8c: DUP3
00001d8d: MSTORE
00001d8e: RETURNDATASIZE
00001d8f: PUSH1 0x00
00001d91: PUSH1 0x20
00001d93: DUP5
00001d94: ADD
00001d95: RETURNDATACOPY
00001d96: PUSH2 0x1d9f
00001d99: JUMP
00001d9a: JUMPDEST
00001d9b: PUSH1 0x60
00001d9d: SWAP2
00001d9e: POP
00001d9f: JUMPDEST
00001da0: POP
00001da1: SWAP2
00001da2: POP
00001da3: SWAP2
00001da4: POP
00001da5: PUSH2 0x1db0
00001da8: DUP8
00001da9: DUP4
00001daa: DUP4
00001dab: DUP8
00001dac: PUSH2 0x1de5
00001daf: JUMP
00001db0: JUMPDEST
00001db1: SWAP8
00001db2: SWAP7
00001db3: POP
00001db4: POP
00001db5: POP
00001db6: POP
00001db7: POP
00001db8: POP
00001db9: POP
00001dba: JUMP
00001dbb: JUMPDEST
00001dbc: DUP2
00001dbd: MLOAD
00001dbe: ISZERO
00001dbf: PUSH2 0x1dcb
00001dc2: JUMPI
00001dc3: DUP2
00001dc4: MLOAD
00001dc5: DUP1
00001dc6: DUP4
00001dc7: PUSH1 0x20
00001dc9: ADD
00001dca: REVERT
00001dcb: JUMPDEST
00001dcc: DUP1
00001dcd: PUSH1 0x40
00001dcf: MLOAD
00001dd0: PUSH3 0x461bcd
00001dd4: PUSH1 0xe5
00001dd6: SHL
00001dd7: DUP2
00001dd8: MSTORE
00001dd9: PUSH1 0x04
00001ddb: ADD
00001ddc: PUSH2 0x0587
00001ddf: SWAP2
00001de0: SWAP1
00001de1: PUSH2 0x2424
00001de4: JUMP
00001de5: JUMPDEST
00001de6: PUSH1 0x60
00001de8: DUP4
00001de9: ISZERO
00001dea: PUSH2 0x1e51
00001ded: JUMPI
00001dee: DUP3
00001def: MLOAD
00001df0: PUSH2 0x1e4a
00001df3: JUMPI
00001df4: PUSH1 0x01
00001df6: PUSH1 0x01
00001df8: PUSH1 0xa0
00001dfa: SHL
00001dfb: SUB
00001dfc: DUP6
00001dfd: AND
00001dfe: EXTCODESIZE
00001dff: PUSH2 0x1e4a
00001e02: JUMPI
00001e03: PUSH1 0x40
00001e05: MLOAD
00001e06: PUSH3 0x461bcd
00001e0a: PUSH1 0xe5
00001e0c: SHL
00001e0d: DUP2
00001e0e: MSTORE
00001e0f: PUSH1 0x20
00001e11: PUSH1 0x04
00001e13: DUP3
00001e14: ADD
00001e15: MSTORE
00001e16: PUSH1 0x1d
00001e18: PUSH1 0x24
00001e1a: DUP3
00001e1b: ADD
00001e1c: MSTORE
00001e1d: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001e3e: PUSH1 0x44
00001e40: DUP3
00001e41: ADD
00001e42: MSTORE
00001e43: PUSH1 0x64
00001e45: ADD
00001e46: PUSH2 0x0587
00001e49: JUMP
00001e4a: JUMPDEST
00001e4b: POP
00001e4c: DUP2
00001e4d: PUSH2 0x04ee
00001e50: JUMP
00001e51: JUMPDEST
00001e52: PUSH2 0x04ee
00001e55: DUP4
00001e56: DUP4
00001e57: PUSH2 0x1dbb
00001e5a: JUMP
00001e5b: JUMPDEST
00001e5c: PUSH1 0x00
00001e5e: PUSH1 0x20
00001e60: DUP3
00001e61: DUP5
00001e62: SUB
00001e63: SLT
00001e64: ISZERO
00001e65: PUSH2 0x1e6d
00001e68: JUMPI
00001e69: PUSH1 0x00
00001e6b: DUP1
00001e6c: REVERT
00001e6d: JUMPDEST
00001e6e: DUP2
00001e6f: CALLDATALOAD
00001e70: PUSH1 0x01
00001e72: PUSH1 0x01
00001e74: PUSH1 0xe0
00001e76: SHL
00001e77: SUB
00001e78: NOT
00001e79: DUP2
00001e7a: AND
00001e7b: DUP2
00001e7c: EQ
00001e7d: PUSH2 0x0b9c
00001e80: JUMPI
00001e81: PUSH1 0x00
00001e83: DUP1
00001e84: REVERT
00001e85: JUMPDEST
00001e86: PUSH1 0x01
00001e88: PUSH1 0x01
00001e8a: PUSH1 0xa0
00001e8c: SHL
00001e8d: SUB
00001e8e: DUP2
00001e8f: AND
00001e90: DUP2
00001e91: EQ
00001e92: PUSH2 0x067b
00001e95: JUMPI
00001e96: PUSH1 0x00
00001e98: DUP1
00001e99: REVERT
00001e9a: JUMPDEST
00001e9b: PUSH1 0x00
00001e9d: DUP1
00001e9e: PUSH1 0x00
00001ea0: PUSH1 0x60
00001ea2: DUP5
00001ea3: DUP7
00001ea4: SUB
00001ea5: SLT
00001ea6: ISZERO
00001ea7: PUSH2 0x1eaf
00001eaa: JUMPI
00001eab: PUSH1 0x00
00001ead: DUP1
00001eae: REVERT
00001eaf: JUMPDEST
00001eb0: DUP4
00001eb1: CALLDATALOAD
00001eb2: PUSH2 0x1eba
00001eb5: DUP2
00001eb6: PUSH2 0x1e85
00001eb9: JUMP
00001eba: JUMPDEST
00001ebb: SWAP3
00001ebc: POP
00001ebd: PUSH1 0x20
00001ebf: DUP5
00001ec0: ADD
00001ec1: CALLDATALOAD
00001ec2: PUSH2 0x1eca
00001ec5: DUP2
00001ec6: PUSH2 0x1e85
00001ec9: JUMP
00001eca: JUMPDEST
00001ecb: SWAP3
00001ecc: SWAP6
00001ecd: SWAP3
00001ece: SWAP5
00001ecf: POP
00001ed0: POP
00001ed1: POP
00001ed2: PUSH1 0x40
00001ed4: SWAP2
00001ed5: SWAP1
00001ed6: SWAP2
00001ed7: ADD
00001ed8: CALLDATALOAD
00001ed9: SWAP1
00001eda: JUMP
00001edb: JUMPDEST
00001edc: PUSH1 0x00
00001ede: DUP1
00001edf: PUSH1 0x40
00001ee1: DUP4
00001ee2: DUP6
00001ee3: SUB
00001ee4: SLT
00001ee5: ISZERO
00001ee6: PUSH2 0x1eee
00001ee9: JUMPI
00001eea: PUSH1 0x00
00001eec: DUP1
00001eed: REVERT
00001eee: JUMPDEST
00001eef: DUP3
00001ef0: CALLDATALOAD
00001ef1: PUSH2 0x1ef9
00001ef4: DUP2
00001ef5: PUSH2 0x1e85
00001ef8: JUMP
00001ef9: JUMPDEST
00001efa: SWAP5
00001efb: PUSH1 0x20
00001efd: SWAP4
00001efe: SWAP1
00001eff: SWAP4
00001f00: ADD
00001f01: CALLDATALOAD
00001f02: SWAP4
00001f03: POP
00001f04: POP
00001f05: POP
00001f06: JUMP
00001f07: JUMPDEST
00001f08: PUSH4 0x4e487b71
00001f0d: PUSH1 0xe0
00001f0f: SHL
00001f10: PUSH1 0x00
00001f12: MSTORE
00001f13: PUSH1 0x41
00001f15: PUSH1 0x04
00001f17: MSTORE
00001f18: PUSH1 0x24
00001f1a: PUSH1 0x00
00001f1c: REVERT
00001f1d: JUMPDEST
00001f1e: PUSH1 0x00
00001f20: DUP3
00001f21: PUSH1 0x1f
00001f23: DUP4
00001f24: ADD
00001f25: SLT
00001f26: PUSH2 0x1f2e
00001f29: JUMPI
00001f2a: PUSH1 0x00
00001f2c: DUP1
00001f2d: REVERT
00001f2e: JUMPDEST
00001f2f: DUP2
00001f30: CALLDATALOAD
00001f31: PUSH8 0xffffffffffffffff
00001f3a: DUP1
00001f3b: DUP3
00001f3c: GT
00001f3d: ISZERO
00001f3e: PUSH2 0x1f49
00001f41: JUMPI
00001f42: PUSH2 0x1f49
00001f45: PUSH2 0x1f07
00001f48: JUMP
00001f49: JUMPDEST
00001f4a: PUSH1 0x40
00001f4c: MLOAD
00001f4d: PUSH1 0x1f
00001f4f: DUP4
00001f50: ADD
00001f51: PUSH1 0x1f
00001f53: NOT
00001f54: SWAP1
00001f55: DUP2
00001f56: AND
00001f57: PUSH1 0x3f
00001f59: ADD
00001f5a: AND
00001f5b: DUP2
00001f5c: ADD
00001f5d: SWAP1
00001f5e: DUP3
00001f5f: DUP3
00001f60: GT
00001f61: DUP2
00001f62: DUP4
00001f63: LT
00001f64: OR
00001f65: ISZERO
00001f66: PUSH2 0x1f71
00001f69: JUMPI
00001f6a: PUSH2 0x1f71
00001f6d: PUSH2 0x1f07
00001f70: JUMP
00001f71: JUMPDEST
00001f72: DUP2
00001f73: PUSH1 0x40
00001f75: MSTORE
00001f76: DUP4
00001f77: DUP2
00001f78: MSTORE
00001f79: DUP7
00001f7a: PUSH1 0x20
00001f7c: DUP6
00001f7d: DUP9
00001f7e: ADD
00001f7f: ADD
00001f80: GT
00001f81: ISZERO
00001f82: PUSH2 0x1f8a
00001f85: JUMPI
00001f86: PUSH1 0x00
00001f88: DUP1
00001f89: REVERT
00001f8a: JUMPDEST
00001f8b: DUP4
00001f8c: PUSH1 0x20
00001f8e: DUP8
00001f8f: ADD
00001f90: PUSH1 0x20
00001f92: DUP4
00001f93: ADD
00001f94: CALLDATACOPY
00001f95: PUSH1 0x00
00001f97: PUSH1 0x20
00001f99: DUP6
00001f9a: DUP4
00001f9b: ADD
00001f9c: ADD
00001f9d: MSTORE
00001f9e: DUP1
00001f9f: SWAP5
00001fa0: POP
00001fa1: POP
00001fa2: POP
00001fa3: POP
00001fa4: POP
00001fa5: SWAP3
00001fa6: SWAP2
00001fa7: POP
00001fa8: POP
00001fa9: JUMP
00001faa: JUMPDEST
00001fab: PUSH1 0x00
00001fad: DUP1
00001fae: PUSH1 0x00
00001fb0: DUP1
00001fb1: PUSH1 0x80
00001fb3: DUP6
00001fb4: DUP8
00001fb5: SUB
00001fb6: SLT
00001fb7: ISZERO
00001fb8: PUSH2 0x1fc0
00001fbb: JUMPI
00001fbc: PUSH1 0x00
00001fbe: DUP1
00001fbf: REVERT
00001fc0: JUMPDEST
00001fc1: DUP5
00001fc2: CALLDATALOAD
00001fc3: PUSH2 0x1fcb
00001fc6: DUP2
00001fc7: PUSH2 0x1e85
00001fca: JUMP
00001fcb: JUMPDEST
00001fcc: SWAP4
00001fcd: POP
00001fce: PUSH1 0x20
00001fd0: DUP6
00001fd1: ADD
00001fd2: CALLDATALOAD
00001fd3: PUSH2 0x1fdb
00001fd6: DUP2
00001fd7: PUSH2 0x1e85
00001fda: JUMP
00001fdb: JUMPDEST
00001fdc: SWAP3
00001fdd: POP
00001fde: PUSH1 0x40
00001fe0: DUP6
00001fe1: ADD
00001fe2: CALLDATALOAD
00001fe3: SWAP2
00001fe4: POP
00001fe5: PUSH1 0x60
00001fe7: DUP6
00001fe8: ADD
00001fe9: CALLDATALOAD
00001fea: PUSH8 0xffffffffffffffff
00001ff3: DUP2
00001ff4: GT
00001ff5: ISZERO
00001ff6: PUSH2 0x1ffe
00001ff9: JUMPI
00001ffa: PUSH1 0x00
00001ffc: DUP1
00001ffd: REVERT
00001ffe: JUMPDEST
00001fff: PUSH2 0x200a
00002002: DUP8
00002003: DUP3
00002004: DUP9
00002005: ADD
00002006: PUSH2 0x1f1d
00002009: JUMP
0000200a: JUMPDEST
0000200b: SWAP2
0000200c: POP
0000200d: POP
0000200e: SWAP3
0000200f: SWAP6
00002010: SWAP2
00002011: SWAP5
00002012: POP
00002013: SWAP3
00002014: POP
00002015: JUMP
00002016: JUMPDEST
00002017: PUSH1 0x00
00002019: PUSH1 0x20
0000201b: DUP3
0000201c: DUP5
0000201d: SUB
0000201e: SLT
0000201f: ISZERO
00002020: PUSH2 0x2028
00002023: JUMPI
00002024: PUSH1 0x00
00002026: DUP1
00002027: REVERT
00002028: JUMPDEST
00002029: POP
0000202a: CALLDATALOAD
0000202b: SWAP2
0000202c: SWAP1
0000202d: POP
0000202e: JUMP
0000202f: JUMPDEST
00002030: PUSH1 0x00
00002032: DUP1
00002033: PUSH1 0x40
00002035: DUP4
00002036: DUP6
00002037: SUB
00002038: SLT
00002039: ISZERO
0000203a: PUSH2 0x2042
0000203d: JUMPI
0000203e: PUSH1 0x00
00002040: DUP1
00002041: REVERT
00002042: JUMPDEST
00002043: DUP3
00002044: CALLDATALOAD
00002045: SWAP2
00002046: POP
00002047: PUSH1 0x20
00002049: DUP4
0000204a: ADD
0000204b: CALLDATALOAD
0000204c: PUSH2 0x2054
0000204f: DUP2
00002050: PUSH2 0x1e85
00002053: JUMP
00002054: JUMPDEST
00002055: DUP1
00002056: SWAP2
00002057: POP
00002058: POP
00002059: SWAP3
0000205a: POP
0000205b: SWAP3
0000205c: SWAP1
0000205d: POP
0000205e: JUMP
0000205f: JUMPDEST
00002060: PUSH1 0x00
00002062: PUSH1 0x20
00002064: DUP3
00002065: DUP5
00002066: SUB
00002067: SLT
00002068: ISZERO
00002069: PUSH2 0x2071
0000206c: JUMPI
0000206d: PUSH1 0x00
0000206f: DUP1
00002070: REVERT
00002071: JUMPDEST
00002072: DUP2
00002073: CALLDATALOAD
00002074: PUSH2 0x0b9c
00002077: DUP2
00002078: PUSH2 0x1e85
0000207b: JUMP
0000207c: JUMPDEST
0000207d: PUSH1 0x00
0000207f: DUP1
00002080: PUSH1 0x40
00002082: DUP4
00002083: DUP6
00002084: SUB
00002085: SLT
00002086: ISZERO
00002087: PUSH2 0x208f
0000208a: JUMPI
0000208b: PUSH1 0x00
0000208d: DUP1
0000208e: REVERT
0000208f: JUMPDEST
00002090: DUP3
00002091: CALLDATALOAD
00002092: PUSH2 0x209a
00002095: DUP2
00002096: PUSH2 0x1e85
00002099: JUMP
0000209a: JUMPDEST
0000209b: SWAP2
0000209c: POP
0000209d: PUSH1 0x20
0000209f: DUP4
000020a0: ADD
000020a1: CALLDATALOAD
000020a2: PUSH8 0xffffffffffffffff
000020ab: DUP2
000020ac: GT
000020ad: ISZERO
000020ae: PUSH2 0x20b6
000020b1: JUMPI
000020b2: PUSH1 0x00
000020b4: DUP1
000020b5: REVERT
000020b6: JUMPDEST
000020b7: PUSH2 0x20c2
000020ba: DUP6
000020bb: DUP3
000020bc: DUP7
000020bd: ADD
000020be: PUSH2 0x1f1d
000020c1: JUMP
000020c2: JUMPDEST
000020c3: SWAP2
000020c4: POP
000020c5: POP
000020c6: SWAP3
000020c7: POP
000020c8: SWAP3
000020c9: SWAP1
000020ca: POP
000020cb: JUMP
000020cc: JUMPDEST
000020cd: PUSH1 0x00
000020cf: DUP1
000020d0: DUP4
000020d1: PUSH1 0x1f
000020d3: DUP5
000020d4: ADD
000020d5: SLT
000020d6: PUSH2 0x20de
000020d9: JUMPI
000020da: PUSH1 0x00
000020dc: DUP1
000020dd: REVERT
000020de: JUMPDEST
000020df: POP
000020e0: DUP2
000020e1: CALLDATALOAD
000020e2: PUSH8 0xffffffffffffffff
000020eb: DUP2
000020ec: GT
000020ed: ISZERO
000020ee: PUSH2 0x20f6
000020f1: JUMPI
000020f2: PUSH1 0x00
000020f4: DUP1
000020f5: REVERT
000020f6: JUMPDEST
000020f7: PUSH1 0x20
000020f9: DUP4
000020fa: ADD
000020fb: SWAP2
000020fc: POP
000020fd: DUP4
000020fe: PUSH1 0x20
00002100: DUP3
00002101: PUSH1 0x05
00002103: SHL
00002104: DUP6
00002105: ADD
00002106: ADD
00002107: GT
00002108: ISZERO
00002109: PUSH2 0x2111
0000210c: JUMPI
0000210d: PUSH1 0x00
0000210f: DUP1
00002110: REVERT
00002111: JUMPDEST
00002112: SWAP3
00002113: POP
00002114: SWAP3
00002115: SWAP1
00002116: POP
00002117: JUMP
00002118: JUMPDEST
00002119: PUSH1 0x00
0000211b: DUP1
0000211c: PUSH1 0x00
0000211e: DUP1
0000211f: PUSH1 0x00
00002121: DUP1
00002122: PUSH1 0x60
00002124: DUP8
00002125: DUP10
00002126: SUB
00002127: SLT
00002128: ISZERO
00002129: PUSH2 0x2131
0000212c: JUMPI
0000212d: PUSH1 0x00
0000212f: DUP1
00002130: REVERT
00002131: JUMPDEST
00002132: DUP7
00002133: CALLDATALOAD
00002134: PUSH8 0xffffffffffffffff
0000213d: DUP1
0000213e: DUP3
0000213f: GT
00002140: ISZERO
00002141: PUSH2 0x2149
00002144: JUMPI
00002145: PUSH1 0x00
00002147: DUP1
00002148: REVERT
00002149: JUMPDEST
0000214a: PUSH2 0x2155
0000214d: DUP11
0000214e: DUP4
0000214f: DUP12
00002150: ADD
00002151: PUSH2 0x20cc
00002154: JUMP
00002155: JUMPDEST
00002156: SWAP1
00002157: SWAP9
00002158: POP
00002159: SWAP7
0000215a: POP
0000215b: PUSH1 0x20
0000215d: DUP10
0000215e: ADD
0000215f: CALLDATALOAD
00002160: SWAP2
00002161: POP
00002162: DUP1
00002163: DUP3
00002164: GT
00002165: ISZERO
00002166: PUSH2 0x216e
00002169: JUMPI
0000216a: PUSH1 0x00
0000216c: DUP1
0000216d: REVERT
0000216e: JUMPDEST
0000216f: PUSH2 0x217a
00002172: DUP11
00002173: DUP4
00002174: DUP12
00002175: ADD
00002176: PUSH2 0x20cc
00002179: JUMP
0000217a: JUMPDEST
0000217b: SWAP1
0000217c: SWAP7
0000217d: POP
0000217e: SWAP5
0000217f: POP
00002180: PUSH1 0x40
00002182: DUP10
00002183: ADD
00002184: CALLDATALOAD
00002185: SWAP2
00002186: POP
00002187: DUP1
00002188: DUP3
00002189: GT
0000218a: ISZERO
0000218b: PUSH2 0x2193
0000218e: JUMPI
0000218f: PUSH1 0x00
00002191: DUP1
00002192: REVERT
00002193: JUMPDEST
00002194: POP
00002195: PUSH2 0x21a0
00002198: DUP10
00002199: DUP3
0000219a: DUP11
0000219b: ADD
0000219c: PUSH2 0x20cc
0000219f: JUMP
000021a0: JUMPDEST
000021a1: SWAP8
000021a2: SWAP11
000021a3: SWAP7
000021a4: SWAP10
000021a5: POP
000021a6: SWAP5
000021a7: SWAP8
000021a8: POP
000021a9: SWAP3
000021aa: SWAP6
000021ab: SWAP4
000021ac: SWAP5
000021ad: SWAP3
000021ae: POP
000021af: POP
000021b0: POP
000021b1: JUMP
000021b2: JUMPDEST
000021b3: PUSH1 0x00
000021b5: DUP1
000021b6: PUSH1 0x40
000021b8: DUP4
000021b9: DUP6
000021ba: SUB
000021bb: SLT
000021bc: ISZERO
000021bd: PUSH2 0x21c5
000021c0: JUMPI
000021c1: PUSH1 0x00
000021c3: DUP1
000021c4: REVERT
000021c5: JUMPDEST
000021c6: POP
000021c7: POP
000021c8: DUP1
000021c9: CALLDATALOAD
000021ca: SWAP3
000021cb: PUSH1 0x20
000021cd: SWAP1
000021ce: SWAP2
000021cf: ADD
000021d0: CALLDATALOAD
000021d1: SWAP2
000021d2: POP
000021d3: JUMP
000021d4: JUMPDEST
000021d5: PUSH1 0x00
000021d7: DUP1
000021d8: PUSH1 0x00
000021da: DUP1
000021db: PUSH1 0x40
000021dd: DUP6
000021de: DUP8
000021df: SUB
000021e0: SLT
000021e1: ISZERO
000021e2: PUSH2 0x21ea
000021e5: JUMPI
000021e6: PUSH1 0x00
000021e8: DUP1
000021e9: REVERT
000021ea: JUMPDEST
000021eb: DUP5
000021ec: CALLDATALOAD
000021ed: PUSH8 0xffffffffffffffff
000021f6: DUP1
000021f7: DUP3
000021f8: GT
000021f9: ISZERO
000021fa: PUSH2 0x2202
000021fd: JUMPI
000021fe: PUSH1 0x00
00002200: DUP1
00002201: REVERT
00002202: JUMPDEST
00002203: PUSH2 0x220e
00002206: DUP9
00002207: DUP4
00002208: DUP10
00002209: ADD
0000220a: PUSH2 0x20cc
0000220d: JUMP
0000220e: JUMPDEST
0000220f: SWAP1
00002210: SWAP7
00002211: POP
00002212: SWAP5
00002213: POP
00002214: PUSH1 0x20
00002216: DUP8
00002217: ADD
00002218: CALLDATALOAD
00002219: SWAP2
0000221a: POP
0000221b: DUP1
0000221c: DUP3
0000221d: GT
0000221e: ISZERO
0000221f: PUSH2 0x2227
00002222: JUMPI
00002223: PUSH1 0x00
00002225: DUP1
00002226: REVERT
00002227: JUMPDEST
00002228: POP
00002229: PUSH2 0x2234
0000222c: DUP8
0000222d: DUP3
0000222e: DUP9
0000222f: ADD
00002230: PUSH2 0x20cc
00002233: JUMP
00002234: JUMPDEST
00002235: SWAP6
00002236: SWAP9
00002237: SWAP5
00002238: SWAP8
00002239: POP
0000223a: SWAP6
0000223b: POP
0000223c: POP
0000223d: POP
0000223e: POP
0000223f: JUMP
00002240: JUMPDEST
00002241: PUSH1 0x20
00002243: DUP1
00002244: DUP3
00002245: MSTORE
00002246: PUSH1 0x2c
00002248: SWAP1
00002249: DUP3
0000224a: ADD
0000224b: MSTORE
0000224c: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
0000226d: PUSH1 0x40
0000226f: DUP3
00002270: ADD
00002271: MSTORE
00002272: PUSH12 0x19195b1959d85d1958d85b1b
0000227f: PUSH1 0xa2
00002281: SHL
00002282: PUSH1 0x60
00002284: DUP3
00002285: ADD
00002286: MSTORE
00002287: PUSH1 0x80
00002289: ADD
0000228a: SWAP1
0000228b: JUMP
0000228c: JUMPDEST
0000228d: PUSH1 0x20
0000228f: DUP1
00002290: DUP3
00002291: MSTORE
00002292: PUSH1 0x2c
00002294: SWAP1
00002295: DUP3
00002296: ADD
00002297: MSTORE
00002298: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
000022b9: PUSH1 0x40
000022bb: DUP3
000022bc: ADD
000022bd: MSTORE
000022be: PUSH12 0x6163746976652070726f7879
000022cb: PUSH1 0xa0
000022cd: SHL
000022ce: PUSH1 0x60
000022d0: DUP3
000022d1: ADD
000022d2: MSTORE
000022d3: PUSH1 0x80
000022d5: ADD
000022d6: SWAP1
000022d7: JUMP
000022d8: JUMPDEST
000022d9: PUSH4 0x4e487b71
000022de: PUSH1 0xe0
000022e0: SHL
000022e1: PUSH1 0x00
000022e3: MSTORE
000022e4: PUSH1 0x32
000022e6: PUSH1 0x04
000022e8: MSTORE
000022e9: PUSH1 0x24
000022eb: PUSH1 0x00
000022ed: REVERT
000022ee: JUMPDEST
000022ef: PUSH4 0x4e487b71
000022f4: PUSH1 0xe0
000022f6: SHL
000022f7: PUSH1 0x00
000022f9: MSTORE
000022fa: PUSH1 0x11
000022fc: PUSH1 0x04
000022fe: MSTORE
000022ff: PUSH1 0x24
00002301: PUSH1 0x00
00002303: REVERT
00002304: JUMPDEST
00002305: PUSH1 0x00
00002307: PUSH1 0x00
00002309: NOT
0000230a: DUP3
0000230b: EQ
0000230c: ISZERO
0000230d: PUSH2 0x2318
00002310: JUMPI
00002311: PUSH2 0x2318
00002314: PUSH2 0x22ee
00002317: JUMP
00002318: JUMPDEST
00002319: POP
0000231a: PUSH1 0x01
0000231c: ADD
0000231d: SWAP1
0000231e: JUMP
0000231f: JUMPDEST
00002320: PUSH1 0x00
00002322: PUSH1 0x20
00002324: DUP3
00002325: DUP5
00002326: SUB
00002327: SLT
00002328: ISZERO
00002329: PUSH2 0x2331
0000232c: JUMPI
0000232d: PUSH1 0x00
0000232f: DUP1
00002330: REVERT
00002331: JUMPDEST
00002332: POP
00002333: MLOAD
00002334: SWAP2
00002335: SWAP1
00002336: POP
00002337: JUMP
00002338: JUMPDEST
00002339: PUSH1 0x20
0000233b: DUP1
0000233c: DUP3
0000233d: MSTORE
0000233e: PUSH1 0x2b
00002340: SWAP1
00002341: DUP3
00002342: ADD
00002343: MSTORE
00002344: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00002365: PUSH1 0x40
00002367: DUP3
00002368: ADD
00002369: MSTORE
0000236a: PUSH11 0x6e697469616c697a696e67
00002376: PUSH1 0xa8
00002378: SHL
00002379: PUSH1 0x60
0000237b: DUP3
0000237c: ADD
0000237d: MSTORE
0000237e: PUSH1 0x80
00002380: ADD
00002381: SWAP1
00002382: JUMP
00002383: JUMPDEST
00002384: PUSH1 0x00
00002386: JUMPDEST
00002387: DUP4
00002388: DUP2
00002389: LT
0000238a: ISZERO
0000238b: PUSH2 0x239e
0000238e: JUMPI
0000238f: DUP2
00002390: DUP2
00002391: ADD
00002392: MLOAD
00002393: DUP4
00002394: DUP3
00002395: ADD
00002396: MSTORE
00002397: PUSH1 0x20
00002399: ADD
0000239a: PUSH2 0x2386
0000239d: JUMP
0000239e: JUMPDEST
0000239f: DUP4
000023a0: DUP2
000023a1: GT
000023a2: ISZERO
000023a3: PUSH2 0x04b8
000023a6: JUMPI
000023a7: POP
000023a8: POP
000023a9: PUSH1 0x00
000023ab: SWAP2
000023ac: ADD
000023ad: MSTORE
000023ae: JUMP
000023af: JUMPDEST
000023b0: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000
000023d1: DUP2
000023d2: MSTORE
000023d3: PUSH1 0x00
000023d5: DUP4
000023d6: MLOAD
000023d7: PUSH2 0x23e7
000023da: DUP2
000023db: PUSH1 0x17
000023dd: DUP6
000023de: ADD
000023df: PUSH1 0x20
000023e1: DUP9
000023e2: ADD
000023e3: PUSH2 0x2383
000023e6: JUMP
000023e7: JUMPDEST
000023e8: PUSH17 0x01034b99036b4b9b9b4b733903937b6329
000023fa: PUSH1 0x7d
000023fc: SHL
000023fd: PUSH1 0x17
000023ff: SWAP2
00002400: DUP5
00002401: ADD
00002402: SWAP2
00002403: DUP3
00002404: ADD
00002405: MSTORE
00002406: DUP4
00002407: MLOAD
00002408: PUSH2 0x2418
0000240b: DUP2
0000240c: PUSH1 0x28
0000240e: DUP5
0000240f: ADD
00002410: PUSH1 0x20
00002412: DUP9
00002413: ADD
00002414: PUSH2 0x2383
00002417: JUMP
00002418: JUMPDEST
00002419: ADD
0000241a: PUSH1 0x28
0000241c: ADD
0000241d: SWAP5
0000241e: SWAP4
0000241f: POP
00002420: POP
00002421: POP
00002422: POP
00002423: JUMP
00002424: JUMPDEST
00002425: PUSH1 0x20
00002427: DUP2
00002428: MSTORE
00002429: PUSH1 0x00
0000242b: DUP3
0000242c: MLOAD
0000242d: DUP1
0000242e: PUSH1 0x20
00002430: DUP5
00002431: ADD
00002432: MSTORE
00002433: PUSH2 0x2443
00002436: DUP2
00002437: PUSH1 0x40
00002439: DUP6
0000243a: ADD
0000243b: PUSH1 0x20
0000243d: DUP8
0000243e: ADD
0000243f: PUSH2 0x2383
00002442: JUMP
00002443: JUMPDEST
00002444: PUSH1 0x1f
00002446: ADD
00002447: PUSH1 0x1f
00002449: NOT
0000244a: AND
0000244b: SWAP2
0000244c: SWAP1
0000244d: SWAP2
0000244e: ADD
0000244f: PUSH1 0x40
00002451: ADD
00002452: SWAP3
00002453: SWAP2
00002454: POP
00002455: POP
00002456: JUMP
00002457: JUMPDEST
00002458: PUSH1 0x00
0000245a: DUP2
0000245b: PUSH1 0x00
0000245d: NOT
0000245e: DIV
0000245f: DUP4
00002460: GT
00002461: DUP3
00002462: ISZERO
00002463: ISZERO
00002464: AND
00002465: ISZERO
00002466: PUSH2 0x2471
00002469: JUMPI
0000246a: PUSH2 0x2471
0000246d: PUSH2 0x22ee
00002470: JUMP
00002471: JUMPDEST
00002472: POP
00002473: MUL
00002474: SWAP1
00002475: JUMP
00002476: JUMPDEST
00002477: PUSH1 0x00
00002479: DUP3
0000247a: NOT
0000247b: DUP3
0000247c: GT
0000247d: ISZERO
0000247e: PUSH2 0x2489
00002481: JUMPI
00002482: PUSH2 0x2489
00002485: PUSH2 0x22ee
00002488: JUMP
00002489: JUMPDEST
0000248a: POP
0000248b: ADD
0000248c: SWAP1
0000248d: JUMP
0000248e: JUMPDEST
0000248f: PUSH1 0x00
00002491: DUP2
00002492: PUSH2 0x249d
00002495: JUMPI
00002496: PUSH2 0x249d
00002499: PUSH2 0x22ee
0000249c: JUMP
0000249d: JUMPDEST
0000249e: POP
0000249f: PUSH1 0x00
000024a1: NOT
000024a2: ADD
000024a3: SWAP1
000024a4: JUMP
000024a5: JUMPDEST
000024a6: PUSH1 0x00
000024a8: PUSH1 0x20
000024aa: DUP3
000024ab: DUP5
000024ac: SUB
000024ad: SLT
000024ae: ISZERO
000024af: PUSH2 0x24b7
000024b2: JUMPI
000024b3: PUSH1 0x00
000024b5: DUP1
000024b6: REVERT
000024b7: JUMPDEST
000024b8: DUP2
000024b9: MLOAD
000024ba: DUP1
000024bb: ISZERO
000024bc: ISZERO
000024bd: DUP2
000024be: EQ
000024bf: PUSH2 0x0b9c
000024c2: JUMPI
000024c3: PUSH1 0x00
000024c5: DUP1
000024c6: REVERT
000024c7: JUMPDEST
000024c8: PUSH1 0x00
000024ca: DUP3
000024cb: DUP3
000024cc: LT
000024cd: ISZERO
000024ce: PUSH2 0x24d9
000024d1: JUMPI
000024d2: PUSH2 0x24d9
000024d5: PUSH2 0x22ee
000024d8: JUMP
000024d9: JUMPDEST
000024da: POP
000024db: SUB
000024dc: SWAP1
000024dd: JUMP
000024de: JUMPDEST
000024df: PUSH4 0x4e487b71
000024e4: PUSH1 0xe0
000024e6: SHL
000024e7: PUSH1 0x00
000024e9: MSTORE
000024ea: PUSH1 0x31
000024ec: PUSH1 0x04
000024ee: MSTORE
000024ef: PUSH1 0x24
000024f1: PUSH1 0x00
000024f3: REVERT
000024f4: JUMPDEST
000024f5: PUSH1 0x00
000024f7: DUP3
000024f8: MLOAD
000024f9: PUSH2 0x2506
000024fc: DUP2
000024fd: DUP5
000024fe: PUSH1 0x20
00002500: DUP8
00002501: ADD
00002502: PUSH2 0x2383
00002505: JUMP
00002506: JUMPDEST
00002507: SWAP2
00002508: SWAP1
00002509: SWAP2
0000250a: ADD
0000250b: SWAP3
0000250c: SWAP2
0000250d: POP
0000250e: POP
0000250f: JUMP
00002510: INVALID
00002511: CALLDATASIZE
00002512: ADDMOD
00002513: SWAP5
00002514: LOG1
00002515: EXTCODESIZE
00002516: LOG1
00002517: LOG3
00002518: UNKNOWN(0x21)
00002519: MOD
0000251a: PUSH8 0xc828492db98dca3e
00002523: KECCAK256
00002524: PUSH23 0xcc3735a920a3ca505d382bbc416464726573733a206c6f
0000253c: PUSH24 0x2d6c6576656c2064656c65676174652063616c6c20666169
00002555: PUSH13 0x65648ec07e268e32cae7f300b4
00002563: SWAP11
00002564: UNKNOWN(0xD3)
00002565: UNKNOWN(0x4F)
00002566: KECCAK256
00002567: LT
00002568: PUSH14 0x088445cb9d9b2d62cbd864638308
00002577: UNKNOWN(0xB2)
00002578: LOG2
00002579: PUSH5 0x6970667358
0000257f: UNKNOWN(0x22)
00002580: SLT
00002581: KECCAK256
00002582: LOG4
00002583: MULMOD
00002584: UNKNOWN(0xBD)
00002585: SWAP15
00002586: SWAP6
00002587: PUSH21 0xda254aba6b9a5d70db75eb61aad8eecdc8c6bd43cd
0000259d: PUSH29

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x83ee8d8fabaa643ad2d67d55dc294048d4107ffb800cdf15a7261878e3b67d2d
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x83ee8d8fabaa643ad2d67d55dc294048d4107ffb800cdf15a7261878e3b67d2d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 7251,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b
call_targets: 0x74ae836d6f949118b4e4d0af79924edd0d6fd163
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x74ae836d6f949118b4e4d0af79924edd0d6fd163"
    ],
    "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": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4752,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5348,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7530,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b
call_targets: 0x74ae836d6f949118b4e4d0af79924edd0d6fd163
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x74ae836d6f949118b4e4d0af79924edd0d6fd163"
    ],
    "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": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4752,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5348,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7530,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
low auth codex Public initializer can be claimed if proxy is left uninitialized 65 no
view
evidence_json
{
    "evidence": "Dispatch exposes selector 0x8129fc1c (`...8129fc1c1461033b...610a60...`). The initializer routine uses CALLER as an input (`...610b3b6000336113ac...`) without any access-control gate beyond the initializer guard, indicating msg.sender is used to set privileged state.",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Ensure initialization is executed in the deployment transaction (e.g., constructor or factory init call). Consider disabling initializers on the implementation to prevent accidental setup on the logic contract.",
    "exploit_scenario": "If a proxy is deployed without calling `initialize()` atomically, any account can call the public initializer (selector 0x8129fc1c) and become the owner/admin, gaining upgrade or role control."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 8
}