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

Analysis Run

c62b530f-1288-4973-af08-bb71f59f0465

complete
Chain ID
1
Address
Block Number
Created
Wed, Dec 31, 2025 7:00 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30890 report.consolidate complete 1 / 1 3 months ago
94351 artifact.fetch complete 1 / 3 1 week ago
94352 tool.cast_disasm complete 1 / 3 1 week ago
94353 analysis.bundle complete 1 / 3 1 week ago
94354 capability.graph complete 1 / 3 1 week ago
94355 detector.run complete 1 / 3 1 week ago
94356 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete exploitable value-extraction path identified in the runtime bytecode; observable value-transfer and upgrade flows appear gated by role/owner checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT patterns were found.
View stderr
[codex:933862] OpenAI Codex v0.77.0 (research preview)
[codex:933862] --------
[codex:933862] workdir: /tmp/codex-multi-g8wac9zh
[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: 019b75bb-e495-7611-b02d-134e9c5972a3
[codex:933862] --------
[codex:933862] user
[codex:933862] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:933862] 
[codex:933862] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:933862] 
[codex:933862] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:933862] - Gas inefficiency, code quality, or best practices
[codex:933862] - Theoretical vulnerabilities without a clear extraction path
[codex:933862] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:933862] - Issues requiring social engineering or off-chain coordination
[codex:933862] 
[codex:933862] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:933862] - CALL/DELEGATECALL with controllable destination or calldata
[codex:933862] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:933862] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:933862] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:933862] - External calls before state updates (reentrancy)
[codex:933862] - SELFDESTRUCT with controllable beneficiary
[codex:933862] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:933862] 
[codex:933862] For each finding, you MUST explain:
[codex:933862] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:933862] 2. The concrete sequence of transactions to extract value
[codex:933862] 3. Why you believe this is exploitable (not just suspicious)
[codex:933862] 
[codex:933862] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:933862] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:933862] 
[codex:933862] Output MUST be valid JSON matching the provided schema.
[codex:933862] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:933862] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:933862] mcp startup: no servers
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Deciding how to read BYTECODE_BUNDLE.txt**
[codex:933862] exec
[codex:933862] /bin/bash -lc ls in /tmp/codex-multi-g8wac9zh succeeded in 5ms:
[codex:933862] BYTECODE_BUNDLE.txt
[codex:933862] codex-output-schema.json
[codex:933862] exec
[codex:933862] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-g8wac9zh 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] **Examining contract bytecode and selectors for vulnerabilities**
[codex:933862] thinking
[codex:933862] **Mapping multi-transfer functions and access checks**
[codex:933862] 
[codex:933862] I'm sorting out which functions correspond to each multi-transfer selector and probing bytecode for access control, especially checking if batch transfers restrict calls by role or owner. I'm also identifying if ERC20 transfers use `transfer` or `transferFrom` to see if anyone can drain contract-held tokens.
[codex:933862] exec
[codex:933862] /bin/bash -lc 'rg -n "23b872dd|a9059cbb" BYTECODE_BUNDLE.txt' in /tmp/codex-multi-g8wac9zh succeeded in 7ms:
[codex:933862] 5:0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a217fddf1161006f578063a217fddf146103c2578063ca15c873146103d7578063d547741f146103f7578063e6930a2214610417578063eb14f53e14610437578063f2fde38b1461044a57600080fd5b8063715018a61461030457806377f050b0146103195780638129fc1c1461033b5780638da5cb5b146103505780639010d07c1461038257806391d14854146103a257600080fd5b806336568abe1161010857806336568abe1461025c5780633659cfe61461027c5780633bd8db241461029c5780634f1ef286146102bc57806352d1902d146102cf57806357a987a3146102e457600080fd5b806301ffc9a71461015b57806302cba7411461019057806305b1137b146101b2578063150b7a02146101c5578063248a9ca3146101fe5780632f2ff15d1461023c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611e5b565b61046a565b60405190151581526020015b60405180910390f35b34801561019c57600080fd5b506101b06101ab366004611e9a565b610495565b005b6101b06101c0366004611edb565b6104be565b3480156101d157600080fd5b506101e56101e0366004611faa565b6104e5565b6040516001600160e01b03199091168152602001610187565b34801561020a57600080fd5b5061022e610219366004612016565b600090815260fb602052604090206001015490565b604051908152602001610187565b34801561024857600080fd5b506101b061025736600461202f565b6104f6565b34801561026857600080fd5b506101b061027736600461202f565b61051b565b34801561028857600080fd5b506101b061029736600461205f565b61059e565b3480156102a857600080fd5b506101b06102b7366004611e9a565b61067e565b6101b06102ca36600461207c565b6106a1565b3480156102db57600080fd5b5061022e61076e565b3480156102f057600080fd5b506101b06102ff366004612118565b610821565b34801561031057600080fd5b506101b0610a4c565b34801561032557600080fd5b5061022e60008051602061255883398151915281565b34801561034757600080fd5b506101b0610a60565b34801561035c57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610187565b34801561038e57600080fd5b5061036a61039d3660046121b2565b610b83565b3480156103ae57600080fd5b5061017b6103bd36600461202f565b610ba3565b3480156103ce57600080fd5b5061022e600081565b3480156103e357600080fd5b5061022e6103f2366004612016565b610bce565b34801561040357600080fd5b506101b061041236600461202f565b610be6565b34801561042357600080fd5b506101b0610432366004612118565b610c0b565b6101b06104453660046121d4565b610e1a565b34801561045657600080fd5b506101b061046536600461205f565b610f93565b60006001600160e01b03198216635a05180f60e01b148061048f575061048f82611018565b92915050565b6000805160206125588339815191526104ad8161104d565b6104b8848484611057565b50505050565b6000805160206125588339815191526104d68161104d565b6104e0838361106b565b505050565b630a85bd0160e11b5b949350505050565b600082815260fb60205260409020600101546105118161104d565b6104e08383611075565b6001600160a01b03811633146105905760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61059a8282611098565b5050565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156105e75760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610630600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146106565760405162461bcd60e51b81526004016105879061228c565b61065f816110bb565b6040805160008082526020820190925261067b918391906110c3565b50565b6000805160206125588339815191526106968161104d565b6104b884848461123d565b306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1631614156106ea5760405162461bcd60e51b815260040161058790612240565b7f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd1636001600160a01b0316610733600080516020612511833981519152546001600160a01b031690565b6001600160a01b0316146107595760405162461bcd60e51b81526004016105879061228c565b610762826110bb565b61059a828260016110c3565b6000306001600160a01b037f00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163161461080e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610587565b5060008051602061251183398151915290565b6000805160206125588339815191526108398161104d565b8584146108b85760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20746f6b656e732f706179656573206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b8382146109395760405162461bcd60e51b815260206004820152604360248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a207061796565732f746f6b656e496473206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610587565b836109b65760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633760448201527f32313a20706179656573206c656e677468206d757374206265206774207a65726064820152606f60f81b608482015260a401610587565b60005b84811015610a4257610a308888838181106109d6576109d66122d8565b90506020020160208101906109eb919061205f565b8787848181106109fd576109fd6122d8565b9050602002016020810190610a12919061205f565b868685818110610a2457610a246122d8565b9050602002013561123d565b80610a3a81612304565b9150506109b9565b5050505050505050565b610a546112aa565b610a5e6000611304565b565b600054610100900460ff1615808015610a805750600054600160ff909116105b80610a9a5750303b158015610a9a575060005460ff166001145b610afd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610587565b6000805460ff191660011790558015610b20576000805461ff0019166101001790555b610b28611356565b610b30611385565b610b3b6000336113ac565b801561067b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600082815261012d60205260408120610b9c90836113b6565b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815261012d6020526040812061048f906113c2565b600082815260fb6020526040902060010154610c018161104d565b6104e08383611098565b600080516020612558833981519152610c238161104d565b858414610c9a576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20746f6b656e732f706179656573206c656e677468206d69736d617463686064820152608401610587565b838214610d195760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610d8e576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724572633260448201527f303a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610a4257610e08888883818110610dae57610dae6122d8565b9050602002016020810190610dc3919061205f565b878784818110610dd557610dd56122d8565b9050602002016020810190610dea919061205f565b868685818110610dfc57610dfc6122d8565b90506020020135611057565b80610e1281612304565b915050610d91565b600080516020612558833981519152610e328161104d565b838214610eb15760405162461bcd60e51b815260206004820152604160248201527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a207061796565732f616d6f756e7473206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610587565b83610f26576040805162461bcd60e51b81526020600482015260248101919091527f4d756c74695472616e736665723a3a62617463685472616e736665724574686560448201527f723a20706179656573206c656e677468206d757374206265206774207a65726f6064820152608401610587565b60005b84811015610f8b57610f79868683818110610f4657610f466122d8565b9050602002016020810190610f5b919061205f565b858584818110610f6d57610f6d6122d8565b9050602002013561106b565b80610f8381612304565b915050610f29565b505050505050565b610f9b6112aa565b6001600160a01b0381166110005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610587565b61067b81611304565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b148061048f57506301ffc9a760e01b6001600160e01b031983161461048f565b61067b81336113cc565b6104e06001600160a01b0384168383611425565b61059a8282611477565b61107f8282611590565b600082815261012d602052604090206104e09082611616565b6110a2828261162b565b600082815261012d602052604090206104e09082611692565b61067b6112aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f6576104e0836116a7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112f57600080fd5b505afa92505050801561115f575060408051601f3d908101601f1916820190925261115c9181019061231f565b60015b6111c25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610587565b60008051602061251183398151915281146112315760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610587565b506104e0838383611743565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390528416906342842e0e90606401600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b50505050505050565b6097546001600160a01b03163314610a5e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610587565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661137d5760405162461bcd60e51b815260040161058790612338565b610a5e611768565b600054610100900460ff16610a5e5760405162461bcd60e51b815260040161058790612338565b61059a8282611075565b6000610b9c8383611798565b600061048f825490565b6113d68282610ba3565b61059a576113e3816117c2565b6113ee8360206117d4565b6040516020016113ff9291906123af565b60408051601f198184030181529082905262461bcd60e51b825261058791600401612424565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104e0908490611970565b804710156114c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610587565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611514576040519150601f19603f3d011682016040523d82523d6000602084013e611519565b606091505b50509050806104e05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610587565b61159a8282610ba3565b61059a57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115d23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610b9c836001600160a01b038416611a42565b6116358282610ba3565b1561059a57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610b9c836001600160a01b038416611a91565b6001600160a01b0381163b6117145760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610587565b60008051602061251183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61174c83611b84565b6000825111806117595750805b156104e0576104b88383611bc4565b600054610100900460ff1661178f5760405162461bcd60e51b815260040161058790612338565b610a5e33611304565b60008260000182815481106117af576117af6122d8565b9060005260206000200154905092915050565b606061048f6001600160a01b03831660145b606060006117e3836002612457565b6117ee906002612476565b67ffffffffffffffff81111561180657611806611f07565b6040519080825280601f01601f191660200182016040528015611830576020820181803683370190505b509050600360fc1b8160008151811061184b5761184b6122d8565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061187a5761187a6122d8565b60200101906001600160f81b031916908160001a905350600061189e846002612457565b6118a9906001612476565b90505b6001811115611921576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106118dd576118dd6122d8565b1a60f81b8282815181106118f3576118f36122d8565b60200101906001600160f81b031916908160001a90535060049490941c9361191a8161248e565b90506118ac565b508315610b9c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610587565b60006119c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611cb89092919063ffffffff16565b8051909150156104e057808060200190518101906119e391906124a5565b6104e05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610587565b6000818152600183016020526040812054611a895750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561048f565b50600061048f565b60008181526001830160205260408120548015611b7a576000611ab56001836124c7565b8554909150600090611ac9906001906124c7565b9050818114611b2e576000866000018281548110611ae957611ae96122d8565b9060005260206000200154905080876000018481548110611b0c57611b0c6122d8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b3f57611b3f6124de565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061048f565b600091505061048f565b611b8d816116a7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611c2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610587565b600080846001600160a01b031684604051611c4791906124f4565b600060405180830381855af49150503d8060008114611c82576040519150601f19603f3d011682016040523d82523d6000602084013e611c87565b606091505b5091509150611caf828260405180606001604052806027815260200161253160279139611cc7565b95945050505050565b60606104ee8484600085611ce0565b60608315611cd6575081610b9c565b610b9c8383611dbb565b606082471015611d415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610587565b600080866001600160a01b03168587604051611d5d91906124f4565b60006040518083038185875af1925050503d8060008114611d9a576040519150601f19603f3d011682016040523d82523d6000602084013e611d9f565b606091505b5091509150611db087838387611de5565b979650505050505050565b815115611dcb5781518083602001fd5b8060405162461bcd60e51b81526004016105879190612424565b60608315611e51578251611e4a576001600160a01b0385163b611e4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610587565b50816104ee565b6104ee8383611dbb565b600060208284031215611e6d57600080fd5b81356001600160e01b031981168114610b9c57600080fd5b6001600160a01b038116811461067b57600080fd5b600080600060608486031215611eaf57600080fd5b8335611eba81611e85565b92506020840135611eca81611e85565b929592945050506040919091013590565b60008060408385031215611eee57600080fd5b8235611ef981611e85565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f2e57600080fd5b813567ffffffffffffffff80821115611f4957611f49611f07565b604051601f8301601f19908116603f01168101908282118183101715611f7157611f71611f07565b81604052838152866020858801011115611f8a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215611fc057600080fd5b8435611fcb81611e85565b93506020850135611fdb81611e85565b925060408501359150606085013567ffffffffffffffff811115611ffe57600080fd5b61200a87828801611f1d565b91505092959194509250565b60006020828403121561202857600080fd5b5035919050565b6000806040838503121561204257600080fd5b82359150602083013561205481611e85565b809150509250929050565b60006020828403121561207157600080fd5b8135610b9c81611e85565b6000806040838503121561208f57600080fd5b823561209a81611e85565b9150602083013567ffffffffffffffff8111156120b657600080fd5b6120c285828601611f1d565b9150509250929050565b60008083601f8401126120de57600080fd5b50813567ffffffffffffffff8111156120f657600080fd5b6020830191508360208260051b850101111561211157600080fd5b9250929050565b6000806000806000806060878903121561213157600080fd5b863567ffffffffffffffff8082111561214957600080fd5b6121558a838b016120cc565b9098509650602089013591508082111561216e57600080fd5b61217a8a838b016120cc565b9096509450604089013591508082111561219357600080fd5b506121a089828a016120cc565b979a9699509497509295939492505050565b600080604083850312156121c557600080fd5b50508035926020909101359150565b600080600080604085870312156121ea57600080fd5b843567ffffffffffffffff8082111561220257600080fd5b61220e888389016120cc565b9096509450602087013591508082111561222757600080fd5b50612234878288016120cc565b95989497509550505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612318576123186122ee565b5060010190565b60006020828403121561233157600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561239e578181015183820152602001612386565b838111156104b85750506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e7816017850160208801612383565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612418816028840160208801612383565b01602801949350505050565b6020815260008251806020840152612443816040850160208701612383565b601f01601f19169190910160400192915050565b6000816000190483118215151615612471576124716122ee565b500290565b60008219821115612489576124896122ee565b500190565b60008161249d5761249d6122ee565b506000190190565b6000602082840312156124b757600080fd5b81518015158114610b9c57600080fd5b6000828210156124d9576124d96122ee565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251612506818460208701612383565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65648ec07e268e32cae7f300b49ad34f20106d088445cb9d9b2d62cbd864638308b2a2646970667358221220a409bd9e9574da254aba6b9a5d70db75eb61aad8eecdc8c6bd43cd7caf29999764736f6c63430008090033
[codex:933862] 
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing token transfer functions and access controls**
[codex:933862] thinking
[codex:933862] **Investigating function selectors and access checks**
[codex:933862] 
[codex:933862] I’m mapping batchTransfer functions for ERC20, ERC721, and Ether by their selectors and error messages to clarify which is which. Now I’m carefully examining whether these batch functions call access-control methods like onlyOwner or onlyRole by scanning for calls to those internal checks early in their code. Since the bytecode uses internal calls (like 6112aa or 6113d6) to enforce access, I’m tracking those to verify protection. I’m also guessing some functions like 61104d could be _msgSender or getRoleAdmin but want to disassemble the bytecode around these addresses for better insight. To get precise understanding, I plan to script a basic disassembler to parse the raw hex and decode opcodes around these critical offsets. This should help me confirm access control logic or possible missing protections.
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexdata = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata = hexdata[2:]
[codex:933862] code = bytes.fromhex(hexdata)
[codex:933862] # simple disassembler
[codex:933862] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] # fill rest
[codex:933862] mn = {
[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(0x80,0x90):
[codex:933862]     mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0):
[codex:933862]     mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5):
[codex:933862]     mn[i]=f'LOG{i-0xa0}'
[codex:933862] 
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] # function to disassemble around offsets
[codex:933862] 
[codex:933862] def disasm(start, count=200):
[codex:933862]     i=start
[codex:933862]     out=[]
[codex:933862]     c=0
[codex:933862]     while i < len(code) and c < count:
[codex:933862]         op = code[i]
[codex:933862]         name = mn.get(op, f'OP{op:02x}')
[codex:933862]         if 0x60 <= op <= 0x7f:
[codex:933862]             n = op-0x5f
[codex:933862]             data = code[i+1:i+1+n]
[codex:933862]             out.append((i, name, data.hex()))
[codex:933862]             i += 1+n
[codex:933862]         else:
[codex:933862]             out.append((i, name, ''))
[codex:933862]             i += 1
[codex:933862]         c += 1
[codex:933862]     return out
[codex:933862] 
[codex:933862] # print entry around 0x821 etc
[codex:933862] for off in [0x821,0x0c0b,0x0e1a,0x104d,0x123d,0x13d6,0x12aa]:
[codex:933862]     print('\\n==',hex(off))
[codex:933862]     for o,name,data in disasm(off,80):
[codex:933862]         if data:
[codex:933862]             print(f'{o:04x}: {name} {data}')
[codex:933862]         else:
[codex:933862]             print(f'{o:04x}: {name}')
[codex:933862] 
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 48ms:
[codex:933862] 
[codex:933862] == 0x821
[codex:933862] 0821: JUMPDEST
[codex:933862] 0822: PUSH1 00
[codex:933862] 0824: DUP1
[codex:933862] 0825: MLOAD
[codex:933862] 0826: PUSH1 20
[codex:933862] 0828: PUSH2 2558
[codex:933862] 082b: DUP4
[codex:933862] 082c: CODECOPY
[codex:933862] 082d: DUP2
[codex:933862] 082e: MLOAD
[codex:933862] 082f: SWAP2
[codex:933862] 0830: MSTORE
[codex:933862] 0831: PUSH2 0839
[codex:933862] 0834: DUP2
[codex:933862] 0835: PUSH2 104d
[codex:933862] 0838: JUMP
[codex:933862] 0839: JUMPDEST
[codex:933862] 083a: DUP6
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Examining disassembly control flow**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] import re
[codex:933862] from pathlib import Path
[codex:933862] hexdata = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata = hexdata[2:]
[codex:933862] code = bytes.fromhex(hexdata)
[codex:933862] # disassembler
[codex:933862] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn = {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',
[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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=120):
[codex:933862]     i=start; out=[]
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op, f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; out.append((i,name,data.hex())); i+=1+n
[codex:933862]         else:
[codex:933862]             out.append((i,name,'')); i+=1
[codex:933862]     return out
[codex:933862] 
[codex:933862] for off in [0x13b0,0x13cc,0x13f0,0x1425,0x1477,0x1590,0x1616,0x162b,0x1692,0x1743,0x1798,0x17c2,0x17d4]:
[codex:933862]     print('\\n==',hex(off))
[codex:933862]     for o,name,data in disasm(off,60):
[codex:933862]         print(f'{o:04x}: {name} {data}' if data else f'{o:04x}: {name}')
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 28ms:
[codex:933862] 
[codex:933862] == 0x13b0
[codex:933862] 13b0: DUP3
[codex:933862] 13b1: DUP3
[codex:933862] 13b2: PUSH2 1075
[codex:933862] 13b5: JUMP
[codex:933862] 13b6: JUMPDEST
[codex:933862] 13b7: PUSH1 00
[codex:933862] 13b9: PUSH2 0b9c
[codex:933862] 13bc: DUP4
[codex:933862] 13bd: DUP4
[codex:933862] 13be: PUSH2 1798
[codex:933862] 13c1: JUMP
[codex:933862] 13c2: JUMPDEST
[codex:933862] 13c3: PUSH1 00
[codex:933862] 13c5: PUSH2 048f
[codex:933862] 13c8: DUP3
[codex:933862] 13c9: SLOAD
[codex:933862] 13ca: SWAP1
[codex:933862] 13cb: JUMP
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing role check logic in disassembly**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata = hexdata[2:]
[codex:933862] code = bytes.fromhex(hexdata)
[codex:933862] # disasm function
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op, f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x067b')
[codex:933862] disasm(0x067b,60)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ==0x067b
[codex:933862] 067b: JUMPDEST
[codex:933862] 067c: POP
[codex:933862] 067d: JUMP
[codex:933862] 067e: JUMPDEST
[codex:933862] 067f: PUSH1 00
[codex:933862] 0681: DUP1
[codex:933862] 0682: MLOAD
[codex:933862] 0683: PUSH1 20
[codex:933862] 0685: PUSH2 2558
[codex:933862] 0688: DUP4
[codex:933862] 0689: CODECOPY
[codex:933862] 068a: DUP2
[codex:933862] 068b: MLOAD
[codex:933862] 068c: SWAP2
[codex:933862] 068d: MSTORE
[codex:933862] 068e: PUSH2 0696
[codex:933862] 0691: DUP2
[codex:933862] 0692: PUSH2 104d
[codex:933862] 0695: JUMP
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing jump destinations and role checks**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata = hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=50):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x0580')
[codex:933862] disasm(0x0580,60)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 28ms:
[codex:933862] ==0x0580
[codex:933862] 0580: PUSH5 8201526084
[codex:933862] 0586: ADD
[codex:933862] 0587: JUMPDEST
[codex:933862] 0588: PUSH1 40
[codex:933862] 058a: MLOAD
[codex:933862] 058b: DUP1
[codex:933862] 058c: SWAP2
[codex:933862] 058d: SUB
[codex:933862] 058e: SWAP1
[codex:933862] 058f: REVERT
[codex:933862] 0590: JUMPDEST
[codex:933862] 0591: PUSH2 059a
[codex:933862] 0594: DUP3
[codex:933862] 0595: DUP3
[codex:933862] 0596: PUSH2 1098
[codex:933862] 0599: JUMP
[codex:933862] 059a: JUMPDEST
[codex:933862] 059b: POP
[codex:933862] 059c: POP
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing role-based access pattern in bytecode**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata = hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=120):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x0a60')
[codex:933862] disasm(0x0a60,140)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ==0x0a60
[codex:933862] 0a60: JUMPDEST
[codex:933862] 0a61: PUSH1 00
[codex:933862] 0a63: SLOAD
[codex:933862] 0a64: PUSH2 0100
[codex:933862] 0a67: SWAP1
[codex:933862] 0a68: DIV
[codex:933862] 0a69: PUSH1 ff
[codex:933862] 0a6b: AND
[codex:933862] 0a6c: ISZERO
[codex:933862] 0a6d: DUP1
[codex:933862] 0a6e: DUP1
[codex:933862] 0a6f: ISZERO
[codex:933862] 0a70: PUSH2 0a80
[codex:933862] 0a73: JUMPI
[codex:933862] 0a74: POP
[codex:933862] 0a75: PUSH1 00
[codex:933862] 0a77: SLOAD
[codex:933862] 0a78: PUSH1 01
[codex:933862] 0a7a: PUSH1 ff
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing initializer role assignments**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] for off in [0x1356,0x1385,0x13ac]:
[codex:933862]     print('\\n==',hex(off))
[codex:933862]     disasm(off,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] 
[codex:933862] == 0x1356
[codex:933862] 1356: JUMPDEST
[codex:933862] 1357: PUSH1 00
[codex:933862] 1359: SLOAD
[codex:933862] 135a: PUSH2 0100
[codex:933862] 135d: SWAP1
[codex:933862] 135e: DIV
[codex:933862] 135f: PUSH1 ff
[codex:933862] 1361: AND
[codex:933862] 1362: PUSH2 137d
[codex:933862] 1365: JUMPI
[codex:933862] 1366: PUSH1 40
[codex:933862] 1368: MLOAD
[codex:933862] 1369: PUSH3 461bcd
[codex:933862] 136d: PUSH1 e5
[codex:933862] 136f: SHL
[codex:933862] 1370: DUP2
[codex:933862] 1371: MSTORE
[codex:933862] 1372: PUSH1 04
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing initializer and role granting functions**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x1075')
[codex:933862] disasm(0x1075,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ==0x1075
[codex:933862] 1075: JUMPDEST
[codex:933862] 1076: PUSH2 107f
[codex:933862] 1079: DUP3
[codex:933862] 107a: DUP3
[codex:933862] 107b: PUSH2 1590
[codex:933862] 107e: JUMP
[codex:933862] 107f: JUMPDEST
[codex:933862] 1080: PUSH1 00
[codex:933862] 1082: DUP3
[codex:933862] 1083: DUP2
[codex:933862] 1084: MSTORE
[codex:933862] 1085: PUSH2 012d
[codex:933862] 1088: PUSH1 20
[codex:933862] 108a: MSTORE
[codex:933862] 108b: PUSH1 40
[codex:933862] 108d: SWAP1
[codex:933862] 108e: SHA3
[codex:933862] 108f: PUSH2 04e0
[codex:933862] 1092: SWAP1
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Investigating role constants in bytecode**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # read 32 bytes at offset 0x2558
[codex:933862] start=0x2558
[codex:933862] const=code[start:start+32]
[codex:933862] print(const.hex())
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 32ms:
[codex:933862] 8ec07e268e32cae7f300b49ad34f20106d088445cb9d9b2d62cbd864638308b2
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Investigating role constant usage**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # find PUSH2 0x2558 occurrences
[codex:933862] matches=[]
[codex:933862] for i in range(len(code)-2):
[codex:933862]     if code[i]==0x61 and code[i+1]==0x25 and code[i+2]==0x58:
[codex:933862]         matches.append(i)
[codex:933862] print(matches)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] [816, 1180, 1221, 1669, 2088, 3090, 3617]
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing function selector offsets**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disassembler
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] positions=[]
[codex:933862] for i in range(len(code)-2):
[codex:933862]     if code[i]==0x61 and code[i+1]==0x25 and code[i+2]==0x58:
[codex:933862]         positions.append(i)
[codex:933862] 
[codex:933862] # helper to disasm few instructions before each
[codex:933862] 
[codex:933862] def disasm(start, count=8):
[codex:933862]     i=start
[codex:933862]     out=[]
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; out.append(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             out.append(f'{i:04x}: {name}'); i+=1
[codex:933862]     return out
[codex:933862] 
[codex:933862] for pos in positions:
[codex:933862]     print('pos',hex(pos))
[codex:933862]     for line in disasm(pos-6,12):
[codex:933862]         print(' ',line)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 32ms:
[codex:933862] pos 0x330
[codex:933862]   032a: PUSH1 00
[codex:933862]   032c: DUP1
[codex:933862]   032d: MLOAD
[codex:933862]   032e: PUSH1 20
[codex:933862]   0330: PUSH2 2558
[codex:933862]   0333: DUP4
[codex:933862]   0334: CODECOPY
[codex:933862]   0335: DUP2
[codex:933862]   0336: MLOAD
[codex:933862]   0337: SWAP2
[codex:933862]   0338: MSTORE
[codex:933862]   0339: DUP2
[codex:933862] pos 0x49c
[codex:933862]   0496: PUSH1 00
[codex:933862]   0498: DUP1
[codex:933862]   0499: MLOAD
[codex:933862]   049a: PUSH1 20
[codex:933862]   049c: PUSH2 2558
[codex:933862]   049f: DUP4
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing role constants and access controls**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x0270')
[codex:933862] disasm(0x0270,100)
[codex:933862] print('\\n==0x02bc')
[codex:933862] disasm(0x02bc,100)
[codex:933862] print('\\n==0x02cf')
[codex:933862] disasm(0x02cf,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 30ms:
[codex:933862] ==0x0270
[codex:933862] 0270: CALLDATASIZE
[codex:933862] 0271: PUSH1 04
[codex:933862] 0273: PUSH2 202f
[codex:933862] 0276: JUMP
[codex:933862] 0277: JUMPDEST
[codex:933862] 0278: PUSH2 051b
[codex:933862] 027b: JUMP
[codex:933862] 027c: JUMPDEST
[codex:933862] 027d: CALLVALUE
[codex:933862] 027e: DUP1
[codex:933862] 027f: ISZERO
[codex:933862] 0280: PUSH2 0288
[codex:933862] 0283: JUMPI
[codex:933862] 0284: PUSH1 00
[codex:933862] 0286: DUP1
[codex:933862] 0287: REVERT
[codex:933862] 0288: JUMPDEST
[codex:933862] 0289: POP
[codex:933862] 028a: PUSH2 01b0
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing role and ownership logic**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x1768')
[codex:933862] disasm(0x1768,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 28ms:
[codex:933862] ==0x1768
[codex:933862] 1768: JUMPDEST
[codex:933862] 1769: PUSH1 00
[codex:933862] 176b: SLOAD
[codex:933862] 176c: PUSH2 0100
[codex:933862] 176f: SWAP1
[codex:933862] 1770: DIV
[codex:933862] 1771: PUSH1 ff
[codex:933862] 1773: AND
[codex:933862] 1774: PUSH2 178f
[codex:933862] 1777: JUMPI
[codex:933862] 1778: PUSH1 40
[codex:933862] 177a: MLOAD
[codex:933862] 177b: PUSH3 461bcd
[codex:933862] 177f: PUSH1 e5
[codex:933862] 1781: SHL
[codex:933862] 1782: DUP2
[codex:933862] 1783: MSTORE
[codex:933862] 1784: PUSH1 04
[codex:933862] 1786: ADD
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing access controls and upgrade functions**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=120):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x051b')
[codex:933862] disasm(0x051b,120)
[codex:933862] print('\\n==0x059e')
[codex:933862] disasm(0x059e,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 28ms:
[codex:933862] ==0x051b
[codex:933862] 051b: JUMPDEST
[codex:933862] 051c: PUSH1 01
[codex:933862] 051e: PUSH1 01
[codex:933862] 0520: PUSH1 a0
[codex:933862] 0522: SHL
[codex:933862] 0523: SUB
[codex:933862] 0524: DUP2
[codex:933862] 0525: AND
[codex:933862] 0526: CALLER
[codex:933862] 0527: EQ
[codex:933862] 0528: PUSH2 0590
[codex:933862] 052b: JUMPI
[codex:933862] 052c: PUSH1 40
[codex:933862] 052e: MLOAD
[codex:933862] 052f: PUSH3 461bcd
[codex:933862] 0533: PUSH1 e5
[codex:933862] 0535: SHL
[codex:933862] 0536: DUP2
[codex:933862] 0537: MSTORE
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing function selectors and roles**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x04f6')
[codex:933862] disasm(0x04f6,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ==0x04f6
[codex:933862] 04f6: JUMPDEST
[codex:933862] 04f7: PUSH1 00
[codex:933862] 04f9: DUP3
[codex:933862] 04fa: DUP2
[codex:933862] 04fb: MSTORE
[codex:933862] 04fc: PUSH1 fb
[codex:933862] 04fe: PUSH1 20
[codex:933862] 0500: MSTORE
[codex:933862] 0501: PUSH1 40
[codex:933862] 0503: SWAP1
[codex:933862] 0504: SHA3
[codex:933862] 0505: PUSH1 01
[codex:933862] 0507: ADD
[codex:933862] 0508: SLOAD
[codex:933862] 0509: PUSH2 0511
[codex:933862] 050c: DUP2
[codex:933862] 050d: PUSH2 104d
[codex:933862] 0510: JUMP
[codex:933862] 0511: JUMPDEST
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing role management functions and selectors**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=120):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x06a1')
[codex:933862] disasm(0x06a1,120)
[codex:933862] print('\\n==0x076e')
[codex:933862] disasm(0x076e,100)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 26ms:
[codex:933862] ==0x06a1
[codex:933862] 06a1: JUMPDEST
[codex:933862] 06a2: ADDRESS
[codex:933862] 06a3: PUSH1 01
[codex:933862] 06a5: PUSH1 01
[codex:933862] 06a7: PUSH1 a0
[codex:933862] 06a9: SHL
[codex:933862] 06aa: SUB
[codex:933862] 06ab: PUSH32 00000000000000000000000074ae836d6f949118b4e4d0af79924edd0d6fd163
[codex:933862] 06cc: AND
[codex:933862] 06cd: EQ
[codex:933862] 06ce: ISZERO
[codex:933862] 06cf: PUSH2 06ea
[codex:933862] 06d2: JUMPI
[codex:933862] 06d3: PUSH1 40
[codex:933862] 06d5: MLOAD
[codex:933862] 06d6: PUSH3 461bcd
[codex:933862] 06da: PUSH1 e5
[codex:933862] 06dc: SHL
[codex:933862] 06dd: DUP2
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing upgrade and transfer functions**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] import hashlib
[codex:933862] sig='safeTransferFrom(address,address,uint256)'
[codex:933862] selector=hashlib.sha3_256(sig.encode()).hexdigest()[:8]
[codex:933862] print(selector)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 23ms:
[codex:933862] 3453ba4a
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing contract role and upgrade security**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] positions=[i for i,b in enumerate(code) if b==0xf4]
[codex:933862] print('DELEGATECALL positions', [hex(p) for p in positions])
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 29ms:
[codex:933862] DELEGATECALL positions ['0x1c45', '0x1c53', '0x1d5b']
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Investigating delegatecall usage**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x1c30')
[codex:933862] disasm(0x1c30,100)
[codex:933862] print('\\n==0x1d50')
[codex:933862] disasm(0x1d50,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ==0x1c30
[codex:933862] 1c30: DUP5
[codex:933862] 1c31: PUSH1 01
[codex:933862] 1c33: PUSH1 01
[codex:933862] 1c35: PUSH1 a0
[codex:933862] 1c37: SHL
[codex:933862] 1c38: SUB
[codex:933862] 1c39: AND
[codex:933862] 1c3a: DUP5
[codex:933862] 1c3b: PUSH1 40
[codex:933862] 1c3d: MLOAD
[codex:933862] 1c3e: PUSH2 1c47
[codex:933862] 1c41: SWAP2
[codex:933862] 1c42: SWAP1
[codex:933862] 1c43: PUSH2 24f4
[codex:933862] 1c46: JUMP
[codex:933862] 1c47: JUMPDEST
[codex:933862] 1c48: PUSH1 00
[codex:933862] 1c4a: PUSH1 40
[codex:933862] 1c4c: MLOAD
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing delegatecall and approval risks**
[codex:933862] exec
[codex:933862] /bin/bash -lc 'rg -n "095ea7b3|a22cb465" BYTECODE_BUNDLE.txt' in /tmp/codex-multi-g8wac9zh exited 1 in 7ms:
[codex:933862] 
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Examining token transfer protections**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # find PUSH2 1425 sequences (0x61 0x14 0x25)
[codex:933862] positions=[i for i in range(len(code)-2) if code[i]==0x61 and code[i+1]==0x14 and code[i+2]==0x25]
[codex:933862] print([hex(p) for p in positions])
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 27ms:
[codex:933862] ['0x1067']
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing internal function calls**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=60):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x104d')
[codex:933862] disasm(0x104d,40)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 28ms:
[codex:933862] ==0x104d
[codex:933862] 104d: JUMPDEST
[codex:933862] 104e: PUSH2 067b
[codex:933862] 1051: DUP2
[codex:933862] 1052: CALLER
[codex:933862] 1053: PUSH2 13cc
[codex:933862] 1056: JUMP
[codex:933862] 1057: JUMPDEST
[codex:933862] 1058: PUSH2 04e0
[codex:933862] 105b: PUSH1 01
[codex:933862] 105d: PUSH1 01
[codex:933862] 105f: PUSH1 a0
[codex:933862] 1061: SHL
[codex:933862] 1062: SUB
[codex:933862] 1063: DUP5
[codex:933862] 1064: AND
[codex:933862] 1065: DUP4
[codex:933862] 1066: DUP4
[codex:933862] 1067: PUSH2 1425
[codex:933862] 106a: JUMP
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Analyzing modifier and internal function control flow**
[codex:933862] exec
[codex:933862] /bin/bash -lc "python3 - <<'PY'
[codex:933862] from pathlib import Path
[codex:933862] hexdata=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip().splitlines()[0].strip()
[codex:933862] if hexdata.startswith('0x'): hexdata=hexdata[2:]
[codex:933862] code=bytes.fromhex(hexdata)
[codex:933862] # disasm helper
[codex:933862] opcodes={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:933862] mn={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(0x80,0x90): mn[i]=f'DUP{i-0x7f}'
[codex:933862] for i in range(0x90,0xa0): mn[i]=f'SWAP{i-0x8f}'
[codex:933862] for i in range(0xa0,0xa5): mn[i]=f'LOG{i-0xa0}'
[codex:933862] mn.update(opcodes)
[codex:933862] 
[codex:933862] def disasm(start, count=80):
[codex:933862]     i=start
[codex:933862]     for _ in range(count):
[codex:933862]         if i>=len(code): break
[codex:933862]         op=code[i]; name=mn.get(op,f'OP{op:02x}')
[codex:933862]         if 0x60<=op<=0x7f:
[codex:933862]             n=op-0x5f; data=code[i+1:i+1+n]; print(f'{i:04x}: {name} {data.hex()}'); i+=1+n
[codex:933862]         else:
[codex:933862]             print(f'{i:04x}: {name}'); i+=1
[codex:933862] 
[codex:933862] print('==0x04be')
[codex:933862] disasm(0x04be,80)
[codex:933862] PY" in /tmp/codex-multi-g8wac9zh succeeded in 30ms:
[codex:933862] ==0x04be
[codex:933862] 04be: JUMPDEST
[codex:933862] 04bf: PUSH1 00
[codex:933862] 04c1: DUP1
[codex:933862] 04c2: MLOAD
[codex:933862] 04c3: PUSH1 20
[codex:933862] 04c5: PUSH2 2558
[codex:933862] 04c8: DUP4
[codex:933862] 04c9: CODECOPY
[codex:933862] 04ca: DUP2
[codex:933862] 04cb: MLOAD
[codex:933862] 04cc: SWAP2
[codex:933862] 04cd: MSTORE
[codex:933862] 04ce: PUSH2 04d6
[codex:933862] 04d1: DUP2
[codex:933862] 04d2: PUSH2 104d
[codex:933862] 04d5: JUMP
[codex:933862] 04d6: JUMPDEST
[codex:933862] 04d7: PUSH2 04e0
[codex:933862] 04da: DUP4
[codex:933862] 
[codex:933862] thinking
[codex:933862] **Finalizing security analysis summary**
[codex:933862] codex
[codex:933862] {"no_findings":true,"summary":"No concrete exploitable value-extraction path identified in the runtime bytecode; observable value-transfer and upgrade flows appear gated by role/owner checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT patterns were found.","findings":[]}
[codex:933862] tokens used
[codex:933862] 122,087
[codex:933862] {"no_findings":true,"summary":"No concrete exploitable value-extraction path identified in the runtime bytecode; observable value-transfer and upgrade flows appear gated by role/owner checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT patterns were found.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-31T19:00:35.930886+00:00",
        "returncode": 0
    },
    "summary": "No concrete exploitable value-extraction path identified in the runtime bytecode; observable value-transfer and upgrade flows appear gated by role/owner checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT patterns were found.",
    "raw_final": {
        "summary": "No concrete exploitable value-extraction path identified in the runtime bytecode; observable value-transfer and upgrade flows appear gated by role/owner checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT patterns were found.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x83ee8d8fabaa643ad2d67d55dc294048d4107ffb800cdf15a7261878e3b67d2d
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x83ee8d8fabaa643ad2d67d55dc294048d4107ffb800cdf15a7261878e3b67d2d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 7251,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b
call_targets: 0x74ae836d6f949118b4e4d0af79924edd0d6fd163
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x74ae836d6f949118b4e4d0af79924edd0d6fd163"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4752,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5348,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7530,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b
call_targets: 0x74ae836d6f949118b4e4d0af79924edd0d6fd163
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbef2e5d40b9d0a8c4eb6074213418d8daf6efc981d2e9f5326a3a7d69230545b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x74ae836d6f949118b4e4d0af79924edd0d6fd163"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xa217fddf",
            "selector": "0xa217fddf",
            "calldata_variants": [
                "0xa217fddf",
                "0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca15c873",
            "selector": "0xca15c873",
            "calldata_variants": [
                "0xca15c873",
                "0xca15c8730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe6930a22",
            "selector": "0xe6930a22",
            "calldata_variants": [
                "0xe6930a22",
                "0xe6930a220000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb14f53e",
            "selector": "0xeb14f53e",
            "calldata_variants": [
                "0xeb14f53e",
                "0xeb14f53e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x77f050b0",
            "selector": "0x77f050b0",
            "calldata_variants": [
                "0x77f050b0",
                "0x77f050b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4752,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5348,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7530,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 8
}