b842d834-085d-41aa-b331-087260eeb9d9
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 8
}
|