a00b8f65-ff29-4863-90bb-f4d751fa0dc1
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30937 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 94633 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 94634 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 94635 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 94636 | capability.graph | complete | 1 / 3 | 1 week ago |
| 94637 | detector.run | complete | 1 / 3 | 1 week ago |
| 94638 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1272807] OpenAI Codex v0.77.0 (research preview)
[codex:1272807] --------
[codex:1272807] workdir: /tmp/codex-multi-55zbk_ab
[codex:1272807] model: gpt-5.2-codex
[codex:1272807] provider: openai
[codex:1272807] approval: never
[codex:1272807] sandbox: read-only
[codex:1272807] reasoning effort: xhigh
[codex:1272807] reasoning summaries: auto
[codex:1272807] session id: 019b7659-e1f1-7c81-8cf1-43a4c00eacbc
[codex:1272807] --------
[codex:1272807] user
[codex:1272807] 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:1272807]
[codex:1272807] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1272807]
[codex:1272807] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1272807] - Gas inefficiency, code quality, or best practices
[codex:1272807] - Theoretical vulnerabilities without a clear extraction path
[codex:1272807] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1272807] - Issues requiring social engineering or off-chain coordination
[codex:1272807]
[codex:1272807] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1272807] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1272807] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1272807] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1272807] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1272807] - External calls before state updates (reentrancy)
[codex:1272807] - SELFDESTRUCT with controllable beneficiary
[codex:1272807] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1272807]
[codex:1272807] For each finding, you MUST explain:
[codex:1272807] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1272807] 2. The concrete sequence of transactions to extract value
[codex:1272807] 3. Why you believe this is exploitable (not just suspicious)
[codex:1272807]
[codex:1272807] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1272807] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1272807]
[codex:1272807] Output MUST be valid JSON matching the provided schema.
[codex:1272807] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1272807] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1272807] mcp startup: no servers
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Reading BYTECODE_BUNDLE.txt**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc ls in /tmp/codex-multi-55zbk_ab succeeded in 6ms:
[codex:1272807] BYTECODE_BUNDLE.txt
[codex:1272807] codex-output-schema.json
[codex:1272807] exec
[codex:1272807] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-55zbk_ab succeeded in 5ms:
[codex:1272807] Runtime bytecode bundle for best-effort auditing.
[codex:1272807] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1272807]
[codex:1272807] FILE: runtime_bytecode.hex
[codex:1272807] 0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301ffc9a7146102c95780631be1c18f146102c4578063248a9ca3146102bf57806325356bc7146102ba5780632f2ff15d146102b557806333b5b0b5146102b057806336568abe146102ab5780633f4ba83a146102a657806341d5e516146102a15780634de165c31461029c5780634f1ef2861461029757806351cdc60a1461029257806352d1902d1461028d578063551512de146102885780635c975abb146102835780635cd8a76b1461027e57806360f525ed14610279578063807496a8146102745780638129fc1c1461026f5780638456cb591461026a578063853418ab1461026557806386c0c701146102605780638d9594081461025b5780639010d07c1461025657806391d148541461025157806392cda7911461024c578063963bf6bd1461024757806398a1b39714610242578063a217fddf1461023d578063a3246ad314610238578063a5de361914610233578063ad3cb1cc1461022e578063affe39c114610229578063b0f479a114610224578063c0d786551461021f578063c21fdc8f1461021a578063ca15c87314610215578063d391014b14610210578063d547741f1461020b578063d70e1ede14610206578063e673df8a14610201578063f2fde38b146101fc5763ffa1ad740361000e57611815565b6117b8565b611713565b6116ec565b6116b5565b61168e565b611658565b6115b3565b611550565b61151c565b611477565b611419565b611374565b6112f4565b611298565b61125e565b61122a565b6111cb565b61116d565b61111c565b6110b9565b61105c565b611033565b610fc2565b610eb7565b610e8a565b610e27565b610d5a565b610d2c565b610ceb565b610c94565b610c60565b610af6565b6109ed565b61093a565b610890565b61083e565b6107ff565b6107b9565b61045c565b6103f5565b61034e565b346103395760203660031901126103395760043563ffffffff60e01b811680910361033957635a05180f60e01b811490811561030e575b506040519015158152602090f35b637965db0b60e01b811491508115610328575b505f610300565b6301ffc9a760e01b1490505f610321565b5f80fd5b6001600160a01b0381160361033957565b346103395760603660031901126103395760043561036b8161033d565b60243580151581036103395760443590610383611b5e565b6001600160a01b038316156103e657156103d2576103b5610018926103a6610a93565b60018152926020840152611830565b9060206001918051151560ff801986541691161784550151910155565b5060016103df5f92611830565b8281550155005b63c4c4d4e160e01b5f5260045ffd5b34610339576020366003190112610339576004355f525f5160206129955f395f51905f526020526020600160405f200154604051908152f35b9181601f840112156103395782359167ffffffffffffffff8311610339576020838186019501011161033957565b3461033957610100366003190112610339576024356004356044356104808161033d565b606435906084356104908161033d565b60a4359460c4359160e43567ffffffffffffffff8111610339576104b890369060040161042e565b906104c1611c78565b6104c9611cd4565b6104d1611d0c565b6104da86611830565b805460ff161561079d57600101548088116107865750906104ff91858489898c611d51565b604080516001600160a01b038716602082019081529181018890526060810195909552909361053b81608081015b03601f198101835282610a6c565b5190205f5160206129355f395f51905f52546001600160a01b031693906105628584611f56565b948261056d85611fbf565b156106df5750505f5160206129355f395f51905f52546105a390610597906001600160a01b031681565b6001600160a01b031690565b90813b156103395760405163fed2939760e01b8152600481018a9052602481018690526001600160a01b0385166044820152606481018490526084810191909152915f91839160a4918391905af180156106da576106c0575b505b5f5160206129355f395f51905f525461062a906001600160a01b0316936106258584611f56565b6118b2565b968088106106a95750604080516001600160a01b039586168152602081019690965290841690850152606084019590955260808301949094529290921660a0830152907fb269ea1bfae777182ecbadeb1aceea31445e58d011800aef22f18c98bf3137ff9060c090a261001860015f5160206129d55f395f51905f5255565b632b90f88960e01b5f52600488905260245260445ffd5b806106ce5f6106d493610a6c565b80610886565b5f6105fc565b611885565b6106f2916001600160a01b038616611fe7565b5f5160206129355f395f51905f525461071590610597906001600160a01b031681565b90813b156103395760405163fed2939760e01b8152600481018a9052602481018690526001600160a01b0385166044820152606481019390935260848301525f90829060a490829084905af180156106da57610772575b506105fe565b806106ce5f61078093610a6c565b5f61076c565b63f76aa3d760e01b5f52600488905260245260445ffd5b63d334e6bd60e01b5f526001600160a01b03871660045260245ffd5b34610339576040366003190112610339576004356024356107d98161033d565b6107e1611b5e565b81156107f057610018916121fc565b63078ea36760e21b5f5260045ffd5b346103395760203660031901126103395760406108266004356108218161033d565b611830565b600160ff825416910154825191151582526020820152f35b346103395760403660031901126103395760043560243561085e8161033d565b336001600160a01b038216036108775761001891612299565b63334bd91960e11b5f5260045ffd5b5f91031261033957565b34610339575f366003190112610339576108a8611b5e565b5f5160206129b55f395f51905f525460ff8116156108ff5760ff19165f5160206129b55f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b6060906003190112610339576004356109268161033d565b90602435906044356109378161033d565b90565b34610339576109483661090e565b91610951611bba565b6001600160a01b0383169182156103e6575f516020612a355f395f51905f52546001600160a01b03168084036109d657507f64336c2c468e7484a74b9f0ef79fe767455ab9373c75d9578d2415770f9f516c936109ae918361230a565b604080513381526001600160a01b0390931660208401528201526060810191909152608090a1005b839063f37d38f360e01b5f5260045260245260445ffd5b346103395761012036600319011261033957604435602435600435610a118361033d565b606435608435610a208161033d565b60a43560c4359160e43593610104359767ffffffffffffffff891161033957610a5061001899369060040161042e565b9890976118bf565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610a8e57604052565b610a58565b60405190610aa2604083610a6c565b565b67ffffffffffffffff8111610a8e57601f01601f191660200190565b929192610acc82610aa4565b91610ada6040519384610a6c565b829481845281830111610339578281602093845f960137010152565b604036600319011261033957600435610b0e8161033d565b60243567ffffffffffffffff8111610339573660238201121561033957610b3f903690602481600401359101610ac0565b906001600160a01b037f0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf8816308114908115610c3e575b50610c2f57610b82611c29565b6040516352d1902d60e01b8152916020836004816001600160a01b0386165afa5f9381610bfe575b50610bcb57634c9c8ce360e01b5f526001600160a01b03821660045260245ffd5b905f5160206129555f395f51905f528303610bea576100189250612615565b632a87526960e21b5f52600483905260245ffd5b610c2191945060203d602011610c28575b610c198183610a6c565b810190611f47565b925f610baa565b503d610c0f565b63703e46dd60e11b5f5260045ffd5b5f5160206129555f395f51905f52546001600160a01b0316141590505f610b75565b34610339575f366003190112610339575f5160206129355f395f51905f52546040516001600160a01b039091168152602090f35b34610339575f366003190112610339577f0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf886001600160a01b03163003610c2f5760206040515f5160206129555f395f51905f528152f35b3461033957610cf93661090e565b90610d02611b5e565b6001600160a01b038216156103e657610018928161230a579050610d263082611f56565b9061230a565b34610339575f36600319011261033957602060ff5f5160206129b55f395f51905f5254166040519015158152f35b34610339575f366003190112610339575f516020612a155f395f51905f525460ff8160401c168015610e12575b610e035767ffffffffffffffff19166002175f516020612a155f395f51905f5255610db0611a44565b610dc76103e85f5160206129155f395f51905f5255565b610dcf611a71565b604051600281527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081015b0390a1005b63f92ee8a960e01b5f5260045ffd5b50600267ffffffffffffffff82161015610d87565b3461033957602036600319011261033957600435610e448161033d565b610e4c611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f516020612a355f395f51905f525416175f516020612a355f395f51905f52555f80f35b3461033957602036600319011261033957600435610ea6611bba565b5f5160206129155f395f51905f5255005b34610339575f366003190112610339575f516020612a155f395f51905f525467ffffffffffffffff610ef960ff604084901c16159267ffffffffffffffff1690565b1680159081610fba575b6001149081610fb0575b159081610fa7575b50610e035780610f4c600167ffffffffffffffff195f516020612a155f395f51905f525416175f516020612a155f395f51905f5255565b610f9a575b610f59611a98565b610f5f57005b610f67611a71565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2908060208101610dfe565b610fa2611a44565b610f51565b9050155f610f15565b303b159150610f0d565b829150610f03565b34610339575f36600319011261033957610fda611bba565b610fe2611d0c565b600160ff195f5160206129b55f395f51905f525416175f5160206129b55f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610339575f3660031901126103395760205f5160206129155f395f51905f5254604051908152f35b346103395760203660031901126103395760043567ffffffffffffffff8111610339573660238201121561033957806004013567ffffffffffffffff8111610339573660248260051b840101116103395760246100189201611b23565b34610339576020366003190112610339576004356110d68161033d565b6110de611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f5160206129355f395f51905f525416175f5160206129355f395f51905f52555f80f35b34610339576040366003190112610339576020611154600435602435905f525f5160206128f55f395f51905f52835260405f206126e2565b905460405160039290921b1c6001600160a01b03168152f35b3461033957604036600319011261033957602060ff6111bf6024356004356111948261033d565b5f525f5160206129955f395f51905f52845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461033957602036600319011261033957602061122060043560ff6001918060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052161b60405f205416151590565b6040519015158152f35b34610339575f366003190112610339575f516020612a355f395f51905f52546040516001600160a01b039091168152602090f35b34610339575f3660031901126103395760206040517f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c8152f35b34610339575f3660031901126103395760206040515f8152f35b60206040818301928281528451809452019201905f5b8181106112d55750505090565b82516001600160a01b03168452602093840193909201916001016112c8565b34610339576020366003190112610339576004355f525f5160206128f55f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b81811061135e5761135a8561134e81870382610a6c565b604051918291826112b2565b0390f35b8254845260209093019260019283019201611337565b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e0780548083525f91825291928301917f45560313361b5a38ee0e8c7f279a68bf043f9cb947ebdcce8948183ec1f0e38c915b8181106114035761135a8561134e81870382610a6c565b82548452602090930192600192830192016113ec565b34610339575f3660031901126103395760408051906114388183610a6c565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd4480548083525f91825291928301917f61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca915b8181106115065761135a8561134e81870382610a6c565b82548452602090930192600192830192016114ef565b34610339575f366003190112610339575f5160206129f55f395f51905f52546040516001600160a01b039091168152602090f35b346103395760203660031901126103395760043561156d8161033d565b611575611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f5160206129f55f395f51905f525416175f5160206129f55f395f51905f52555f80f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517fcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c745080548083525f91825291928301917f6235272e13bbfead3f9c15da48c9b51dac727bff8adcf3c32351386f89222b06915b8181106116425761135a8561134e81870382610a6c565b825484526020909301926001928301920161162b565b34610339576020366003190112610339576004355f525f5160206128f55f395f51905f52602052602060405f2054604051908152f35b34610339575f3660031901126103395760206040515f5160206129755f395f51905f528152f35b34610339576040366003190112610339576004356024356116d58161033d565b6116dd611b5e565b81156107f05761001891612299565b34610339575f3660031901126103395760206040515f5160206128d55f395f51905f528152f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f019d3d0c2386ec3a05bb7001d2bbf079e6fe7bfbe6e95c923cb544f16e2385d980548083525f91825291928301917f4d49d3f1622cef4a4245a42dc22c778f6b2708ebc8f710caa71f99728be94f24915b8181106117a25761135a8561134e81870382610a6c565b825484526020909301926001928301920161178b565b34610339576020366003190112610339576004356117d58161033d565b6117dd611c29565b6001600160a01b03811680156103e6573314611806576117fc906120b7565b506100183361223e565b630f97879560e11b5f5260045ffd5b34610339575f36600319011261033957602060405160028152f35b6001600160a01b03165f9081527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c616020526040902090565b916118819183549060031b91821b915f19901b19161790565b9055565b6040513d5f823e3d90fd5b5f1981019190821161189e57565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161189e57565b97909394999891959692966118d2611c78565b6118da611cd4565b6118e2611d0c565b6118f56118ee87611830565b5460ff1690565b15611a28575f5160206129355f395f51905f525461191d90610597906001600160a01b031681565b803b1561033957604051635d7208c360e01b8152600481018790526001600160a01b0389166024820152604481018a905230606482015260848101959095525f90859060a490829084905af19384156106da5761198394611a14575b508588888b611d51565b968088106106a957505f5160206129355f395f51905f5254604080516001600160a01b0395861681526020810196909652928416928501929092526060840196909652608083019590955290931660a084015290917f85054a8fd86129e0a5aea9ca073abf083e3e702f5244a605506568a3013760299060c090a2610aa260015f5160206129d55f395f51905f5255565b806106ce5f611a2293610a6c565b5f611979565b63d334e6bd60e01b5f526001600160a01b03861660045260245ffd5b600160401b60ff60401b195f516020612a155f395f51905f525416175f516020612a155f395f51905f5255565b60ff60401b195f516020612a155f395f51905f5254165f516020612a155f395f51905f5255565b611aa06126b7565b611aa86126b7565b611ab06126b7565b611ab86126b7565b60ff195f5160206129b55f395f51905f5254165f5160206129b55f395f51905f5255611ae26126b7565b611aea6126b7565b60015f5160206129d55f395f51905f5255611b04336120b7565b50611b0e33612112565b506103e85f5160206129155f395f51905f5255565b91611b2c611b5e565b5f5b82811015611b5857600190611b518160051b860135611b4c8161033d565b612187565b5001611b2e565b50915050565b335f9081527f78e571b7bf30584d955e1c6444a2b5147087edf9f00485d94993a04d370525ea602052604090205460ff1615611b9657565b63e2517d3f60e01b5f52336004525f5160206129755f395f51905f5260245260445ffd5b335f9081527f5dfc6369ede8c1331430c00b581919993675ec010140508e8a499d5c8bfbd937602052604090205460ff1615611bf257565b63e2517d3f60e01b5f52336004527f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c60245260445ffd5b335f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615611c6157565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f5ec2739e5d83ac0ee57f9f9a8bc0de261073ceffe84d59692a58d0a7bbee3e32602052604090205460ff1615611cb057565b63e2517d3f60e01b5f52336004525f5160206128d55f395f51905f5260245260445ffd5b60025f5160206129d55f395f51905f525414611cfd5760025f5160206129d55f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f5160206129b55f395f51905f525416611d2457565b63d93c066560e01b5f5260045ffd5b8115611d3d570490565b634e487b7160e01b5f52601260045260245ffd5b90919596949342811115611f315750611da08160ff6001918060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052161b60405f205416151590565b611f1f57611e49611e579392611def611e51938060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052600160ff60405f2092161b8154179055565b611e42611dfc3083611f56565b99611e073087611f56565b97611e1184611fbf565b15611ee757611e3c8b915b5f5160206129f55f395f51905f52546001600160a01b0316933691610ac0565b91612412565b3090611f56565b913090611f56565b956118b2565b9383851115611e795763060a35db60e11b5f526004849052602485905260445ffd5b909192808510611ea8575b50611e909293506118b2565b8015611e995790565b63861c9e8560e01b5f5260045ffd5b611eb285826118b2565b611eca5f5160206129155f395f51905f525483611d33565b1015611e84576341257fa160e11b5f52600485905260245260445ffd5b5f5160206129f55f395f51905f52545f91611e3c91611f1a908e906001600160a01b03166001600160a01b038916611fe7565b611e1c565b6337106bcb60e21b5f5260045260245ffd5b634b2d84db60e01b5f524260045260245260445ffd5b90816020910312610339575190565b611f5f81611fbf565b15611f6957503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa9081156106da575f91611fa6575b5090565b610937915060203d602011610c2857610c198183610a6c565b6001600160a01b031680156103e65773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60405163095ea7b360e01b60208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90612026606486610a6c565b84519082855af15f51903d8161208b575b501590505b61204557505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044840152610aa29261208690612080816064810161052d565b82612439565b612439565b151590506120ab575061203c6001600160a01b0382163b15155b5f612037565b600161203c91146120a5565b6120c1815f612491565b90816120cb575090565b5f80525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd4461270b565b612129815f5160206129755f395f51905f52612491565b9081612133575090565b5f5160206129755f395f51905f525f525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e0761270b565b61219e815f5160206128d55f395f51905f52612491565b90816121a8575090565b5f5160206128d55f395f51905f525f525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167fcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c745061270b565b6122068282612491565b918261221157505090565b5f9182525f5160206128f55f395f51905f526020526040909120611fa2916001600160a01b03169061270b565b612248815f612539565b9081612252575090565b5f80525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd446127b0565b6122a38282612539565b91826122ae57505090565b5f9182525f5160206128f55f395f51905f526020526040909120611fa2916001600160a01b0316906127b0565b3d15612305573d906122ec82610aa4565b916122fa6040519384610a6c565b82523d5f602084013e565b606090565b91819261231681611fbf565b1561234f57505f918291829182916001600160a01b03165af16123376122db565b50156123405790565b630c08bcb960e21b5f5260045ffd5b6040516370a0823160e01b81523060048201526001600160a01b03919091169391925090602082602481875afa9182156106da575f926123ef575b506123969192846125d9565b6040516370a0823160e01b815230600482015291602090839060249082905afa9081156106da57610937925f926123ce575b506118b2565b6123e891925060203d602011610c2857610c198183610a6c565b905f6123c8565b612396925061240c9060203d602011610c2857610c198183610a6c565b9161238a565b915f928392602083519301915af16124286122db565b90156124315750565b602081519101fd5b905f602091828151910182855af115611885575f513d61248857506001600160a01b0381163b155b6124685750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415612461565b5f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16612533575f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b5f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615612533575f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152610aa291612086606483610a6c565b90813b15612696575f5160206129555f395f51905f5280546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a280511561267e5761267b9161285e565b50565b50503461268757565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b60ff5f516020612a155f395f51905f525460401c16156126d357565b631afcd79f60e31b5f5260045ffd5b80548210156126f7575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f1461276e578054600160401b811015610a8e5761275b6127458260018794018555846126e2565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b8054801561279c575f19019061278b82826126e2565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b906001820190805f528160205260405f2054918215155f14612856575f19830183811161189e5784612809946127fc926127eb5f9854611890565b9081810361280f575b505050612775565b905f5260205260405f2090565b55600190565b61283f6128399161283061282661284d95886126e2565b90549060031b1c90565b928391876126e2565b90611868565b85905f5260205260405f2090565b555f80806127f4565b505050505f90565b5f8061093793602081519101845af46128756122db565b919061289a575080511561288b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806128cb575b6128ab575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156128a356fe39ba2c7e84b6d94350b0167bb3d872a8c3c981ee0b9746fbaa23ef1d87c8e2fcc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c6216e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c60360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4202dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5ef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5fa2646970667358221220e7f5f84fbe1f7a6d9ffca7a56dfa46b0d5987218ee74e5d1044fa0cd80adc3f764736f6c634300081c0033
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing bytecode for exploitable profit paths**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807]
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text()
[codex:1272807] # extract hex after 0x
[codex:1272807] m=re.search(r'0x([0-9a-fA-F]+)', text)
[codex:1272807] if not m:
[codex:1272807] print('no hex found')
[codex:1272807] raise SystemExit
[codex:1272807] hexstr=m.group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] # EVM opcodes map for PUSHn lengths
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] ops=[]
[codex:1272807]
[codex:1272807] i=0
[codex:1272807] while i<len(code):
[codex:1272807] op=code[i]
[codex:1272807] start=i
[codex:1272807] i+=1
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]
[codex:1272807] i+=n
[codex:1272807] ops.append((start, op, data))
[codex:1272807] else:
[codex:1272807] ops.append((start, op, b''))
[codex:1272807]
[codex:1272807] # find opcodes of interest
[codex:1272807] interest={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf0:'CREATE',0xf5:'CREATE2',0xff:'SELFDESTRUCT',0xfa:'STATICCALL'}
[codex:1272807]
[codex:1272807] for off,op,data in ops:
[codex:1272807] if op in interest:
[codex:1272807] print(f\"{off:06x} {interest[op]}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 37ms:
[codex:1272807] 0005f1 CALL
[codex:1272807] 000761 CALL
[codex:1272807] 000ba2 STATICCALL
[codex:1272807] 001969 CALL
[codex:1272807] 001f94 STATICCALL
[codex:1272807] 00202d CALL
[codex:1272807] 00232f CALL
[codex:1272807] 00237c STATICCALL
[codex:1272807] 0023b6 STATICCALL
[codex:1272807] 002420 CALL
[codex:1272807] 002447 CALL
[codex:1272807] 00286d DELEGATECALL
[codex:1272807] 002942 STATICCALL
[codex:1272807] 002980 CREATE2
[codex:1272807] 002a60 CREATE2
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing CALL instructions for risks**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807]
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text()
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] # opcode names
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] ops=[]
[codex:1272807]
[codex:1272807] i=0
[codex:1272807] while i<len(code):
[codex:1272807] op=code[i]; start=i; i+=1
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] ops.append((start,op,data))
[codex:1272807] else:
[codex:1272807] ops.append((start,op,b''))
[codex:1272807]
[codex:1272807] # index by offset
[codex:1272807] op_by_off={off:(op,data) for off,op,data in ops}
[codex:1272807] # also create list of offsets
[codex:1272807] offsets=[off for off,_,_ in ops]
[codex:1272807]
[codex:1272807] interest=[0xf1,0xf4,0xf0,0xf5,0xfa,0xff]
[codex:1272807]
[codex:1272807] for off,op,data in ops:
[codex:1272807] if op in interest:
[codex:1272807] idx=offsets.index(off)
[codex:1272807] print('\\n',f'-- around {off:06x} {opnames[op]} --')
[codex:1272807] for j in range(max(0, idx-10), min(len(ops), idx+11)):
[codex:1272807] o_off,o_op,o_data=ops[j]
[codex:1272807] name=opnames.get(o_op,hex(o_op))
[codex:1272807] if o_op in push_op:
[codex:1272807] print(f\"{o_off:06x}: {name} 0x{o_data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{o_off:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 34ms:
[codex:1272807]
[codex:1272807] -- around 0005f1 CALL --
[codex:1272807] 0005e6: 0x5f
[codex:1272807] 0005e7: SWAP2
[codex:1272807] 0005e8: DUP4
[codex:1272807] 0005e9: SWAP2
[codex:1272807] 0005ea: PUSH1 0xa4
[codex:1272807] 0005ec: SWAP2
[codex:1272807] 0005ed: DUP4
[codex:1272807] 0005ee: SWAP2
[codex:1272807] 0005ef: SWAP1
[codex:1272807] 0005f0: GAS
[codex:1272807] 0005f1: CALL
[codex:1272807] 0005f2: DUP1
[codex:1272807] 0005f3: ISZERO
[codex:1272807] 0005f4: PUSH2 0x06da
[codex:1272807] 0005f7: JUMPI
[codex:1272807] 0005f8: PUSH2 0x06c0
[codex:1272807] 0005fb: JUMPI
[codex:1272807] 0005fc: JUMPDEST
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Examining unusual opcode sequences**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] i=0
[codex:1272807] ops=[]
[codex:1272807] while i<len(code):
[codex:1272807] op=code[i]; start=i; i+=1
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] ops.append((start,op,data))
[codex:1272807] else:
[codex:1272807] ops.append((start,op,b''))
[codex:1272807]
[codex:1272807] # get region
[codex:1272807] start=0x2820; end=0x2895
[codex:1272807] for off,op,data in ops:
[codex:1272807] if start <= off <= end:
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] print(f\"{off:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{off:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 37ms:
[codex:1272807] 002820: SWAP6
[codex:1272807] 002821: DUP9
[codex:1272807] 002822: PUSH2 0x26e2
[codex:1272807] 002825: JUMP
[codex:1272807] 002826: JUMPDEST
[codex:1272807] 002827: SWAP1
[codex:1272807] 002828: SLOAD
[codex:1272807] 002829: SWAP1
[codex:1272807] 00282a: PUSH1 0x03
[codex:1272807] 00282c: SHL
[codex:1272807] 00282d: SHR
[codex:1272807] 00282e: SWAP1
[codex:1272807] 00282f: JUMP
[codex:1272807] 002830: JUMPDEST
[codex:1272807] 002831: SWAP3
[codex:1272807] 002832: DUP4
[codex:1272807] 002833: SWAP2
[codex:1272807] 002834: DUP8
[codex:1272807] 002835: PUSH2 0x26e2
[codex:1272807] 002838: JUMP
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing delegatecall and function selectors for upgradeability**
[codex:1272807]
[codex:1272807] I'm inspecting bytecode patterns around delegatecalls and jumps to identify proxy or upgradeable contract behavior. There’s evidence of EIP-1967 slot constants and UUPS upgradeable selectors like `proxiableUUID()` and `upgradeToAndCall()`, suggesting the contract supports upgradeability. I'm parsing dispatch selectors to try mapping them to known interfaces and looking for potential access control or arbitrary call vulnerabilities.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from eth_hash.auto import keccak
[codex:1272807]
[codex:1272807] sigs=[
[codex:1272807] 'proxiableUUID()',
[codex:1272807] 'upgradeTo(address)',
[codex:1272807] 'upgradeToAndCall(address,bytes)',
[codex:1272807] 'implementation()',
[codex:1272807] 'admin()',
[codex:1272807] 'changeAdmin(address)',
[codex:1272807] 'owner()',
[codex:1272807] 'renounceOwnership()',
[codex:1272807] 'pause()',
[codex:1272807] 'unpause()',
[codex:1272807] 'multicall(bytes[])',
[codex:1272807] 'initialize()',
[codex:1272807] 'initialize(address)',
[codex:1272807] 'initialize(address,address)',
[codex:1272807] 'withdraw(address,uint256)',
[codex:1272807] 'withdraw()',
[codex:1272807] 'execute(address,uint256,bytes)',
[codex:1272807] 'execute(address,bytes)',
[codex:1272807] 'supportsInterface(bytes4)',
[codex:1272807] 'getRoleAdmin(bytes32)',
[codex:1272807] 'grantRole(bytes32,address)',
[codex:1272807] 'revokeRole(bytes32,address)',
[codex:1272807] 'renounceRole(bytes32,address)',
[codex:1272807] 'hasRole(bytes32,address)',
[codex:1272807] 'getRoleMember(bytes32,uint256)',
[codex:1272807] 'getRoleMemberCount(bytes32)',
[codex:1272807] ]
[codex:1272807] for sig in sigs:
[codex:1272807] selector=keccak(sig.encode())[:4].hex()
[codex:1272807] print(sig, selector)
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 90ms:
[codex:1272807] proxiableUUID() 52d1902d
[codex:1272807] upgradeTo(address) 3659cfe6
[codex:1272807] upgradeToAndCall(address,bytes) 4f1ef286
[codex:1272807] implementation() 5c60da1b
[codex:1272807] admin() f851a440
[codex:1272807] changeAdmin(address) 8f283970
[codex:1272807] owner() 8da5cb5b
[codex:1272807] renounceOwnership() 715018a6
[codex:1272807] pause() 8456cb59
[codex:1272807] unpause() 3f4ba83a
[codex:1272807] multicall(bytes[]) ac9650d8
[codex:1272807] initialize() 8129fc1c
[codex:1272807] initialize(address) c4d66de8
[codex:1272807] initialize(address,address) 485cc955
[codex:1272807] withdraw(address,uint256) f3fef3a3
[codex:1272807] withdraw() 3ccfd60b
[codex:1272807] execute(address,uint256,bytes) b61d27f6
[codex:1272807] execute(address,bytes) 1cff79cd
[codex:1272807] supportsInterface(bytes4) 01ffc9a7
[codex:1272807] getRoleAdmin(bytes32) 248a9ca3
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing contract function selectors and access controls**
[codex:1272807]
[codex:1272807] I'm mapping known AccessControl, Pausable, UUPS, and initializer function selectors to identify the contract's features, then planning to statically analyze bytecode dispatch logic to locate the initialize and upgradeToAndCall functions. I'll check if these critical upgrade and initialization functions are properly access controlled to assess potential vulnerabilities. Parsing the dispatch table from bytecode will help me find function entry points for deeper inspection.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] # scan for pattern PUSH4 <sel> EQ PUSH2 <dest> JUMPI (0x63 sel 0x14 0x61 dest 0x57)
[codex:1272807] # we will also accept PUSH2 dest maybe 0x60? But usually push2.
[codex:1272807]
[codex:1272807] res=[]
[codex:1272807] i=0
[codex:1272807] while i < len(code)-9:
[codex:1272807] if code[i]==0x63 and code[i+5]==0x14 and code[i+6]==0x61 and code[i+9]==0x57:
[codex:1272807] sel = code[i+1:i+5].hex()
[codex:1272807] dest = int.from_bytes(code[i+7:i+9],'big')
[codex:1272807] res.append((sel,dest,i))
[codex:1272807] i += 10
[codex:1272807] else:
[codex:1272807] i += 1
[codex:1272807]
[codex:1272807] print('found', len(res))
[codex:1272807] for sel,dest,off in res:
[codex:1272807] print(sel, hex(dest))
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 29ms:
[codex:1272807] found 42
[codex:1272807] 01ffc9a7 0x2c9
[codex:1272807] 1be1c18f 0x2c4
[codex:1272807] 248a9ca3 0x2bf
[codex:1272807] 25356bc7 0x2ba
[codex:1272807] 2f2ff15d 0x2b5
[codex:1272807] 33b5b0b5 0x2b0
[codex:1272807] 36568abe 0x2ab
[codex:1272807] 3f4ba83a 0x2a6
[codex:1272807] 41d5e516 0x2a1
[codex:1272807] 4de165c3 0x29c
[codex:1272807] 4f1ef286 0x297
[codex:1272807] 51cdc60a 0x292
[codex:1272807] 52d1902d 0x28d
[codex:1272807] 551512de 0x288
[codex:1272807] 5c975abb 0x283
[codex:1272807] 5cd8a76b 0x27e
[codex:1272807] 60f525ed 0x279
[codex:1272807] 807496a8 0x274
[codex:1272807] 8129fc1c 0x26f
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Mapping function selectors and offsets**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] # disassemble region
[codex:1272807] start=0x0297; end=0x0400
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 40ms:
[codex:1272807] 000297: JUMPDEST
[codex:1272807] 000298: PUSH2 0x0af6
[codex:1272807] 00029b: JUMP
[codex:1272807] 00029c: JUMPDEST
[codex:1272807] 00029d: PUSH2 0x09ed
[codex:1272807] 0002a0: JUMP
[codex:1272807] 0002a1: JUMPDEST
[codex:1272807] 0002a2: PUSH2 0x093a
[codex:1272807] 0002a5: JUMP
[codex:1272807] 0002a6: JUMPDEST
[codex:1272807] 0002a7: PUSH2 0x0890
[codex:1272807] 0002aa: JUMP
[codex:1272807] 0002ab: JUMPDEST
[codex:1272807] 0002ac: PUSH2 0x083e
[codex:1272807] 0002af: JUMP
[codex:1272807] 0002b0: JUMPDEST
[codex:1272807] 0002b1: PUSH2 0x07ff
[codex:1272807] 0002b4: JUMP
[codex:1272807] 0002b5: JUMPDEST
[codex:1272807] 0002b6: PUSH2 0x07b9
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Tracing upgradeToAndCall jump**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x0af6; end=0x0c80
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 28ms:
[codex:1272807] 000af6: JUMPDEST
[codex:1272807] 000af7: PUSH1 0x40
[codex:1272807] 000af9: CALLDATASIZE
[codex:1272807] 000afa: PUSH1 0x03
[codex:1272807] 000afc: NOT
[codex:1272807] 000afd: ADD
[codex:1272807] 000afe: SLT
[codex:1272807] 000aff: PUSH2 0x0339
[codex:1272807] 000b02: JUMPI
[codex:1272807] 000b03: PUSH1 0x04
[codex:1272807] 000b05: CALLDATALOAD
[codex:1272807] 000b06: PUSH2 0x0b0e
[codex:1272807] 000b09: DUP2
[codex:1272807] 000b0a: PUSH2 0x033d
[codex:1272807] 000b0d: JUMP
[codex:1272807] 000b0e: JUMPDEST
[codex:1272807] 000b0f: PUSH1 0x24
[codex:1272807] 000b11: CALLDATALOAD
[codex:1272807] 000b12: PUSH8 0xffffffffffffffff
[codex:1272807] 000b1b: DUP2
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing UUPS delegatecall checks and role constants**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] constants=[]
[codex:1272807]
[codex:1272807] i=0
[codex:1272807] while i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] if n==32:
[codex:1272807] constants.append(data.hex())
[codex:1272807]
[codex:1272807] # unique
[codex:1272807] uniq=[]
[codex:1272807] for c in constants:
[codex:1272807] if c not in uniq:
[codex:1272807] uniq.append(c)
[codex:1272807]
[codex:1272807] print('PUSH32 count', len(constants), 'unique', len(uniq))
[codex:1272807] for c in uniq:
[codex:1272807] print(c)
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 29ms:
[codex:1272807] PUSH32 count 34 unique 25
[codex:1272807] b269ea1bfae777182ecbadeb1aceea31445e58d011800aef22f18c98bf3137ff
[codex:1272807] 5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
[codex:1272807] 64336c2c468e7484a74b9f0ef79fe767455ab9373c75d9578d2415770f9f516c
[codex:1272807] 0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf88
[codex:1272807] c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
[codex:1272807] 62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
[codex:1272807] 16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d
[codex:1272807] 523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c
[codex:1272807] 7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e07
[codex:1272807] 45560313361b5a38ee0e8c7f279a68bf043f9cb947ebdcce8948183ec1f0e38c
[codex:1272807] 615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44
[codex:1272807] 61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca
[codex:1272807] cce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c7450
[codex:1272807] 6235272e13bbfead3f9c15da48c9b51dac727bff8adcf3c32351386f89222b06
[codex:1272807] 019d3d0c2386ec3a05bb7001d2bbf079e6fe7bfbe6e95c923cb544f16e2385d9
[codex:1272807] 4d49d3f1622cef4a4245a42dc22c778f6b2708ebc8f710caa71f99728be94f24
[codex:1272807] 16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c61
[codex:1272807] 85054a8fd86129e0a5aea9ca073abf083e3e702f5244a605506568a301376029
[codex:1272807] 78e571b7bf30584d955e1c6444a2b5147087edf9f00485d94993a04d370525ea
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing role and event constants usage**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from eth_hash.auto import keccak
[codex:1272807]
[codex:1272807] sigs=[
[codex:1272807] 'executeCall(address,uint256,bytes)',
[codex:1272807] 'execute(address,uint256,bytes)',
[codex:1272807] 'execute(address,bytes)',
[codex:1272807] 'call(address,uint256,bytes)',
[codex:1272807] 'call(address,bytes)',
[codex:1272807] 'multicall(bytes[])',
[codex:1272807] 'owner()',
[codex:1272807] 'getImplementation()',
[codex:1272807] 'implementation()',
[codex:1272807] 'upgradeTo(address)',
[codex:1272807] 'upgradeToAndCall(address,bytes)',
[codex:1272807] 'initialize(address,address,address)',
[codex:1272807] 'initialize(address,address,address,address)',
[codex:1272807] 'initialize(address,address)',
[codex:1272807] 'setBaseURI(string)',
[codex:1272807] 'setURI(string)',
[codex:1272807] 'setContractURI(string)',
[codex:1272807] 'contractURI()',
[codex:1272807] 'baseURI()',
[codex:1272807] 'mint(address,uint256)',
[codex:1272807] 'mint(address,uint256,bytes)',
[codex:1272807] 'burn(uint256)',
[codex:1272807] 'burn(address,uint256)',
[codex:1272807] 'burn(address,uint256,uint256)',
[codex:1272807] 'claim(address,uint256)',
[codex:1272807] 'claim(address,uint256,bytes)',
[codex:1272807] 'withdrawERC20(address,uint256)',
[codex:1272807] 'withdraw(address,uint256)',
[codex:1272807] 'withdraw(address)',
[codex:1272807] 'withdraw()',
[codex:1272807] 'withdrawETH(address,uint256)',
[codex:1272807] 'withdrawETH(address)',
[codex:1272807] 'setOwner(address)',
[codex:1272807] 'setAdmin(address)',
[codex:1272807] 'setRoleAdmin(bytes32,bytes32)',
[codex:1272807] 'grantRole(bytes32,address)',
[codex:1272807] 'revokeRole(bytes32,address)',
[codex:1272807] 'renounceRole(bytes32,address)',
[codex:1272807] 'hasRole(bytes32,address)',
[codex:1272807] 'getRoleMember(bytes32,uint256)',
[codex:1272807] 'getRoleMemberCount(bytes32)',
[codex:1272807] 'supportsInterface(bytes4)',
[codex:1272807] 'pause()',
[codex:1272807] 'unpause()',
[codex:1272807] 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
[codex:1272807] 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
[codex:1272807] 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
[codex:1272807] 'permit(address,address,uint256,uint256,bytes)',
[codex:1272807] 'permit(address,address,uint256,uint256,bytes32,bytes32)',
[codex:1272807] 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
[codex:1272807] 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
[codex:1272807] ]
[codex:1272807]
[codex:1272807] sigs = list(dict.fromkeys(sigs))
[codex:1272807] for sig in sigs:
[codex:1272807] selector=keccak(sig.encode())[:4].hex()
[codex:1272807] print(sig, selector)
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 81ms:
[codex:1272807] executeCall(address,uint256,bytes) 9e5d4c49
[codex:1272807] execute(address,uint256,bytes) b61d27f6
[codex:1272807] execute(address,bytes) 1cff79cd
[codex:1272807] call(address,uint256,bytes) 6dbf2fa0
[codex:1272807] call(address,bytes) 1b8b921d
[codex:1272807] multicall(bytes[]) ac9650d8
[codex:1272807] owner() 8da5cb5b
[codex:1272807] getImplementation() aaf10f42
[codex:1272807] implementation() 5c60da1b
[codex:1272807] upgradeTo(address) 3659cfe6
[codex:1272807] upgradeToAndCall(address,bytes) 4f1ef286
[codex:1272807] initialize(address,address,address) c0c53b8b
[codex:1272807] initialize(address,address,address,address) f8c8765e
[codex:1272807] initialize(address,address) 485cc955
[codex:1272807] setBaseURI(string) 55f804b3
[codex:1272807] setURI(string) 02fe5305
[codex:1272807] setContractURI(string) 938e3d7b
[codex:1272807] contractURI() e8a3d485
[codex:1272807] baseURI() 6c0360eb
[codex:1272807] mint(address,uint256) 40c10f19
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Checking TimelockController selectors**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from eth_hash.auto import keccak
[codex:1272807] sigs=[
[codex:1272807] 'getMinDelay()',
[codex:1272807] 'updateDelay(uint256)',
[codex:1272807] 'schedule(bytes32,address,uint256,bytes,bytes32,bytes32,uint256)',
[codex:1272807] 'scheduleBatch(bytes32[],address[],uint256[],bytes[],bytes32,bytes32,uint256)',
[codex:1272807] 'execute(bytes32,address,uint256,bytes,bytes32,bytes32)',
[codex:1272807] 'executeBatch(bytes32[],address[],uint256[],bytes[],bytes32,bytes32)',
[codex:1272807] 'cancel(bytes32)',
[codex:1272807] 'isOperation(bytes32)',
[codex:1272807] 'isOperationPending(bytes32)',
[codex:1272807] 'isOperationReady(bytes32)',
[codex:1272807] 'isOperationDone(bytes32)',
[codex:1272807] 'getTimestamp(bytes32)',
[codex:1272807] 'getOperationState(bytes32)',
[codex:1272807] 'hashOperation(address,uint256,bytes,bytes32,bytes32)',
[codex:1272807] 'hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)',
[codex:1272807] ]
[codex:1272807] for sig in sigs:
[codex:1272807] selector=keccak(sig.encode())[:4].hex()
[codex:1272807] print(sig, selector)
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 74ms:
[codex:1272807] getMinDelay() f27a0c92
[codex:1272807] updateDelay(uint256) 64d62353
[codex:1272807] schedule(bytes32,address,uint256,bytes,bytes32,bytes32,uint256) 6dd5317e
[codex:1272807] scheduleBatch(bytes32[],address[],uint256[],bytes[],bytes32,bytes32,uint256) d720edd2
[codex:1272807] execute(bytes32,address,uint256,bytes,bytes32,bytes32) e9a15279
[codex:1272807] executeBatch(bytes32[],address[],uint256[],bytes[],bytes32,bytes32) 9b324815
[codex:1272807] cancel(bytes32) c4d252f5
[codex:1272807] isOperation(bytes32) 31d50750
[codex:1272807] isOperationPending(bytes32) 584b153e
[codex:1272807] isOperationReady(bytes32) 13bc9f20
[codex:1272807] isOperationDone(bytes32) 2ab0f529
[codex:1272807] getTimestamp(bytes32) d45c4435
[codex:1272807] getOperationState(bytes32) 7958004c
[codex:1272807] hashOperation(address,uint256,bytes,bytes32,bytes32) 8065657f
[codex:1272807] hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32) b1c5f427
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing contract selectors and upgrade authorization**
[codex:1272807]
[codex:1272807] I'm examining the contract's selectors and error signatures to identify its components, focusing on AccessControlEnumerable and UUPS upgrade patterns from OpenZeppelin v5. I want to verify if upgrade functions are protected by role checks like `onlyRole(UPGRADER_ROLE)`, so I'll look for role constants and traces of the `_authorizeUpgrade` call in the bytecode.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from eth_hash.auto import keccak
[codex:1272807] roles=['DEFAULT_ADMIN_ROLE','PAUSER_ROLE','MINTER_ROLE','UPGRADER_ROLE','ADMIN_ROLE','MANAGER_ROLE','OPERATOR_ROLE','TREASURER_ROLE','SIGNER_ROLE','METADATA_ROLE','URI_SETTER_ROLE','IMPLEMENTER_ROLE']
[codex:1272807] for r in roles:
[codex:1272807] print(r, keccak(r.encode()).hex())
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 71ms:
[codex:1272807] DEFAULT_ADMIN_ROLE 1effbbff9c66c5e59634f24fe842750c60d18891155c32dd155fc2d661a4c86d
[codex:1272807] PAUSER_ROLE 65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a
[codex:1272807] MINTER_ROLE 9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
[codex:1272807] UPGRADER_ROLE 189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3
[codex:1272807] ADMIN_ROLE a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775
[codex:1272807] MANAGER_ROLE 241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08
[codex:1272807] OPERATOR_ROLE 97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929
[codex:1272807] TREASURER_ROLE 3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07
[codex:1272807] SIGNER_ROLE e2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70
[codex:1272807] METADATA_ROLE 6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f80
[codex:1272807] URI_SETTER_ROLE 7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c
[codex:1272807] IMPLEMENTER_ROLE 0544b597c94b62539f947e0a382ab936d2bfe023dc69194caa5a7c70598bdf36
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing role constants and call functions**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x045c; end=0x07ff
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 34ms:
[codex:1272807] 00045c: JUMPDEST
[codex:1272807] 00045d: CALLVALUE
[codex:1272807] 00045e: PUSH2 0x0339
[codex:1272807] 000461: JUMPI
[codex:1272807] 000462: PUSH2 0x0100
[codex:1272807] 000465: CALLDATASIZE
[codex:1272807] 000466: PUSH1 0x03
[codex:1272807] 000468: NOT
[codex:1272807] 000469: ADD
[codex:1272807] 00046a: SLT
[codex:1272807] 00046b: PUSH2 0x0339
[codex:1272807] 00046e: JUMPI
[codex:1272807] 00046f: PUSH1 0x24
[codex:1272807] 000471: CALLDATALOAD
[codex:1272807] 000472: PUSH1 0x04
[codex:1272807] 000474: CALLDATALOAD
[codex:1272807] 000475: PUSH1 0x44
[codex:1272807] 000477: CALLDATALOAD
[codex:1272807] 000478: PUSH2 0x0480
[codex:1272807] 00047b: DUP2
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing external calls and access control checks**
[codex:1272807]
[codex:1272807] I'm inspecting a large function that makes external calls with potentially zero ETH value because of PUSH0. I'm carefully decoding the call stack arguments to confirm this. I’m also investigating if the `grantRole` function properly enforces access control by checking the `onlyRole` modifier and related role validation, tracking jump destinations to understand whether any access vulnerabilities exist. This is turning into a deeper dive to ensure no unprotected calls or role grants slip through.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x1b50; end=0x1c20
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 30ms:
[codex:1272807] 001b50: JUMP
[codex:1272807] 001b51: JUMPDEST
[codex:1272807] 001b52: POP
[codex:1272807] 001b53: ADD
[codex:1272807] 001b54: PUSH2 0x1b2e
[codex:1272807] 001b57: JUMP
[codex:1272807] 001b58: JUMPDEST
[codex:1272807] 001b59: POP
[codex:1272807] 001b5a: SWAP2
[codex:1272807] 001b5b: POP
[codex:1272807] 001b5c: POP
[codex:1272807] 001b5d: JUMP
[codex:1272807] 001b5e: JUMPDEST
[codex:1272807] 001b5f: CALLER
[codex:1272807] 001b60: PUSH0
[codex:1272807] 001b61: SWAP1
[codex:1272807] 001b62: DUP2
[codex:1272807] 001b63: MSTORE
[codex:1272807] 001b64: PUSH32 0x78e571b7bf30584d955e1c6444a2b5147087edf9f00485d94993a04d370525ea
[codex:1272807] 001b85: PUSH1 0x20
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing role-based access checks and function selectors**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x01fc; end=0x0248
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 29ms:
[codex:1272807] 0001fc: JUMPDEST
[codex:1272807] 0001fd: PUSH2 0x17b8
[codex:1272807] 000200: JUMP
[codex:1272807] 000201: JUMPDEST
[codex:1272807] 000202: PUSH2 0x1713
[codex:1272807] 000205: JUMP
[codex:1272807] 000206: JUMPDEST
[codex:1272807] 000207: PUSH2 0x16ec
[codex:1272807] 00020a: JUMP
[codex:1272807] 00020b: JUMPDEST
[codex:1272807] 00020c: PUSH2 0x16b5
[codex:1272807] 00020f: JUMP
[codex:1272807] 000210: JUMPDEST
[codex:1272807] 000211: PUSH2 0x168e
[codex:1272807] 000214: JUMP
[codex:1272807] 000215: JUMPDEST
[codex:1272807] 000216: PUSH2 0x1658
[codex:1272807] 000219: JUMP
[codex:1272807] 00021a: JUMPDEST
[codex:1272807] 00021b: PUSH2 0x15b3
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing dispatch jump table**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x17b8; end=0x1840
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 29ms:
[codex:1272807] 0017b8: JUMPDEST
[codex:1272807] 0017b9: CALLVALUE
[codex:1272807] 0017ba: PUSH2 0x0339
[codex:1272807] 0017bd: JUMPI
[codex:1272807] 0017be: PUSH1 0x20
[codex:1272807] 0017c0: CALLDATASIZE
[codex:1272807] 0017c1: PUSH1 0x03
[codex:1272807] 0017c3: NOT
[codex:1272807] 0017c4: ADD
[codex:1272807] 0017c5: SLT
[codex:1272807] 0017c6: PUSH2 0x0339
[codex:1272807] 0017c9: JUMPI
[codex:1272807] 0017ca: PUSH1 0x04
[codex:1272807] 0017cc: CALLDATALOAD
[codex:1272807] 0017cd: PUSH2 0x17d5
[codex:1272807] 0017d0: DUP2
[codex:1272807] 0017d1: PUSH2 0x033d
[codex:1272807] 0017d4: JUMP
[codex:1272807] 0017d5: JUMPDEST
[codex:1272807] 0017d6: PUSH2 0x17dd
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing ownership check function**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x1c20; end=0x1c80
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 33ms:
[codex:1272807] 001c20: PUSH15 0x0c60245260445ffd5b335f9081527f
[codex:1272807] 001c30: 0xb7
[codex:1272807] 001c31: 0xdb
[codex:1272807] 001c32: 0x2d
[codex:1272807] 001c33: 0xd0
[codex:1272807] 001c34: DUP16
[codex:1272807] 001c35: 0xcb
[codex:1272807] 001c36: PUSH3 0xd0c9e0
[codex:1272807] 001c3a: DUP13
[codex:1272807] 001c3b: MLOAD
[codex:1272807] 001c3c: SWAP5
[codex:1272807] 001c3d: SHR
[codex:1272807] 001c3e: 0xae
[codex:1272807] 001c3f: MSTORE8
[codex:1272807] 001c40: 0xc2
[codex:1272807] 001c41: PUSH8 0x786a0b75803fb796
[codex:1272807] 001c4a: MULMOD
[codex:1272807] 001c4b: MUL
[codex:1272807] 001c4c: 0xfc
[codex:1272807] 001c4d: DUP15
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Re-aligning disassembly to JUMPDEST**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] opnames={
[codex:1272807] 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:1272807] 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:1272807] 0x20:'SHA3',
[codex:1272807] 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:1272807] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1272807] 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:1272807] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1272807] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1272807] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1272807] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1272807] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1272807] 0x5f:'PUSH0'
[codex:1272807] }
[codex:1272807]
[codex:1272807] push_op = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1272807]
[codex:1272807] start=0x1c29; end=0x1c80
[codex:1272807]
[codex:1272807] i=start
[codex:1272807] while i<end and i<len(code):
[codex:1272807] op=code[i]; i+=1
[codex:1272807] name=opnames.get(op,hex(op))
[codex:1272807] if op in push_op:
[codex:1272807] n=push_op[op]
[codex:1272807] data=code[i:i+n]; i+=n
[codex:1272807] print(f\"{i-n-1:06x}: {name} 0x{data.hex()}\")
[codex:1272807] else:
[codex:1272807] print(f\"{i-1:06x}: {name}\")
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 29ms:
[codex:1272807] 001c29: JUMPDEST
[codex:1272807] 001c2a: CALLER
[codex:1272807] 001c2b: PUSH0
[codex:1272807] 001c2c: SWAP1
[codex:1272807] 001c2d: DUP2
[codex:1272807] 001c2e: MSTORE
[codex:1272807] 001c2f: PUSH32 0xb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d
[codex:1272807] 001c50: PUSH1 0x20
[codex:1272807] 001c52: MSTORE
[codex:1272807] 001c53: PUSH1 0x40
[codex:1272807] 001c55: SWAP1
[codex:1272807] 001c56: SHA3
[codex:1272807] 001c57: SLOAD
[codex:1272807] 001c58: PUSH1 0xff
[codex:1272807] 001c5a: AND
[codex:1272807] 001c5b: ISZERO
[codex:1272807] 001c5c: PUSH2 0x1c61
[codex:1272807] 001c5f: JUMPI
[codex:1272807] 001c60: JUMP
[codex:1272807] 001c61: JUMPDEST
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing transferOwnership and role checks**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from eth_hash.auto import keccak
[codex:1272807] errors=['OwnableUnauthorizedAccount(address)','OwnableInvalidOwner(address)','OwnableInvalidOwner()','OwnableUnauthorizedAccount()','AccessControlUnauthorizedAccount(address,bytes32)','AccessControlBadConfirmation()','AccessControlInvalidRole(bytes32)']
[codex:1272807] for e in errors:
[codex:1272807] print(e, keccak(e.encode()).hex()[:8])
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 74ms:
[codex:1272807] OwnableUnauthorizedAccount(address) 118cdaa7
[codex:1272807] OwnableInvalidOwner(address) 1e4fbdf7
[codex:1272807] OwnableInvalidOwner() 8ff8cfbc
[codex:1272807] OwnableUnauthorizedAccount() 12b0c500
[codex:1272807] AccessControlUnauthorizedAccount(address,bytes32) e2517d3f
[codex:1272807] AccessControlBadConfirmation() 6697b232
[codex:1272807] AccessControlInvalidRole(bytes32) d117d081
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing upgrade function and access controls**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] push2=0x61
[codex:1272807]
[codex:1272807] targets={0x1b5e:'onlyRole1',0x1bba:'onlyRole2',0x1c29:'onlyRole3',0x1c78:'onlyRole4',0x1cfd:'??',0x1d0c:'??'}
[codex:1272807]
[codex:1272807] for i in range(len(code)-2):
[codex:1272807] if code[i]==push2:
[codex:1272807] val=int.from_bytes(code[i+1:i+3],'big')
[codex:1272807] if val in targets:
[codex:1272807] print(hex(i), 'push2', hex(val), targets[val])
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 28ms:
[codex:1272807] 0x37f push2 0x1b5e onlyRole1
[codex:1272807] 0x4bd push2 0x1c78 onlyRole4
[codex:1272807] 0x4cd push2 0x1d0c ??
[codex:1272807] 0x7dd push2 0x1b5e onlyRole1
[codex:1272807] 0x8a4 push2 0x1b5e onlyRole1
[codex:1272807] 0x94d push2 0x1bba onlyRole2
[codex:1272807] 0xb7e push2 0x1c29 onlyRole3
[codex:1272807] 0xcfe push2 0x1b5e onlyRole1
[codex:1272807] 0xe48 push2 0x1b5e onlyRole1
[codex:1272807] 0xea2 push2 0x1bba onlyRole2
[codex:1272807] 0xfd6 push2 0x1bba onlyRole2
[codex:1272807] 0xfde push2 0x1d0c ??
[codex:1272807] 0x10da push2 0x1b5e onlyRole1
[codex:1272807] 0x1571 push2 0x1b5e onlyRole1
[codex:1272807] 0x16d9 push2 0x1b5e onlyRole1
[codex:1272807] 0x17d9 push2 0x1c29 onlyRole3
[codex:1272807] 0x18ce push2 0x1c78 onlyRole4
[codex:1272807] 0x18de push2 0x1d0c ??
[codex:1272807] 0x1b28 push2 0x1b5e onlyRole1
[codex:1272807] 0x1ce7 push2 0x1cfd ??
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing role checks and call value security**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import re
[codex:1272807] text=Path('/tmp/codex-multi-55zbk_ab/BYTECODE_BUNDLE.txt').read_text();
[codex:1272807] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:1272807] code=bytes.fromhex(hexstr)
[codex:1272807]
[codex:1272807] # find SELFBALANCE opcode 0x47
[codex:1272807] for i,b in enumerate(code):
[codex:1272807] if b==0x47:
[codex:1272807] print(hex(i))
[codex:1272807] PY" in /tmp/codex-multi-55zbk_ab succeeded in 31ms:
[codex:1272807] 0x147
[codex:1272807] 0x1c5
[codex:1272807] 0xc1f
[codex:1272807] 0x101f
[codex:1272807] 0x13af
[codex:1272807] 0x13df
[codex:1272807] 0x2176
[codex:1272807] 0x25bb
[codex:1272807] 0x25cd
[codex:1272807]
[codex:1272807] thinking
[codex:1272807] **Analyzing bytecode for exploit paths**
[codex:1272807]
[codex:1272807] I'm carefully checking CALL instructions for SELFBALANCE or user-controlled value to spot exploits, reviewing AccessControl and upgrade functions for vulnerabilities, but overall find standard patterns and no concrete profit path or exploit from the bytecode alone, so I'll report no findings with a concise summary.
[codex:1272807] codex
[codex:1272807] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the bytecode alone; observed standard AccessControl/UUPS patterns with role checks and no unprotected value-transfer/delegatecall/selfdestruct flows.","findings":[]}
[codex:1272807] tokens used
[codex:1272807] 97,818
[codex:1272807] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the bytecode alone; observed standard AccessControl/UUPS patterns with role checks and no unprotected value-transfer/delegatecall/selfdestruct flows.","findings":[]}
{
"codex": {
"ran_at": "2025-12-31T21:49:23.819712+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path identified from the bytecode alone; observed standard AccessControl/UUPS patterns with role checks and no unprotected value-transfer/delegatecall/selfdestruct flows.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path identified from the bytecode alone; observed standard AccessControl/UUPS patterns with role checks and no unprotected value-transfer/delegatecall/selfdestruct flows.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: ISZERO 0000000a: PUSH2 0x001a 0000000d: JUMPI 0000000e: JUMPDEST 0000000f: CALLDATASIZE 00000010: ISZERO 00000011: PUSH2 0x0018 00000014: JUMPI 00000015: PUSH0 00000016: DUP1 00000017: REVERT 00000018: JUMPDEST 00000019: STOP 0000001a: JUMPDEST 0000001b: PUSH0 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x01ffc9a7 00000026: EQ 00000027: PUSH2 0x02c9 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0x1be1c18f 00000031: EQ 00000032: PUSH2 0x02c4 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0x248a9ca3 0000003c: EQ 0000003d: PUSH2 0x02bf 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0x25356bc7 00000047: EQ 00000048: PUSH2 0x02ba 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0x2f2ff15d 00000052: EQ 00000053: PUSH2 0x02b5 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0x33b5b0b5 0000005d: EQ 0000005e: PUSH2 0x02b0 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0x36568abe 00000068: EQ 00000069: PUSH2 0x02ab 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0x3f4ba83a 00000073: EQ 00000074: PUSH2 0x02a6 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0x41d5e516 0000007e: EQ 0000007f: PUSH2 0x02a1 00000082: JUMPI 00000083: DUP1 00000084: PUSH4 0x4de165c3 00000089: EQ 0000008a: PUSH2 0x029c 0000008d: JUMPI 0000008e: DUP1 0000008f: PUSH4 0x4f1ef286 00000094: EQ 00000095: PUSH2 0x0297 00000098: JUMPI 00000099: DUP1 0000009a: PUSH4 0x51cdc60a 0000009f: EQ 000000a0: PUSH2 0x0292 000000a3: JUMPI 000000a4: DUP1 000000a5: PUSH4 0x52d1902d 000000aa: EQ 000000ab: PUSH2 0x028d 000000ae: JUMPI 000000af: DUP1 000000b0: PUSH4 0x551512de 000000b5: EQ 000000b6: PUSH2 0x0288 000000b9: JUMPI 000000ba: DUP1 000000bb: PUSH4 0x5c975abb 000000c0: EQ 000000c1: PUSH2 0x0283 000000c4: JUMPI 000000c5: DUP1 000000c6: PUSH4 0x5cd8a76b 000000cb: EQ 000000cc: PUSH2 0x027e 000000cf: JUMPI 000000d0: DUP1 000000d1: PUSH4 0x60f525ed 000000d6: EQ 000000d7: PUSH2 0x0279 000000da: JUMPI 000000db: DUP1 000000dc: PUSH4 0x807496a8 000000e1: EQ 000000e2: PUSH2 0x0274 000000e5: JUMPI 000000e6: DUP1 000000e7: PUSH4 0x8129fc1c 000000ec: EQ 000000ed: PUSH2 0x026f 000000f0: JUMPI 000000f1: DUP1 000000f2: PUSH4 0x8456cb59 000000f7: EQ 000000f8: PUSH2 0x026a 000000fb: JUMPI 000000fc: DUP1 000000fd: PUSH4 0x853418ab 00000102: EQ 00000103: PUSH2 0x0265 00000106: JUMPI 00000107: DUP1 00000108: PUSH4 0x86c0c701 0000010d: EQ 0000010e: PUSH2 0x0260 00000111: JUMPI 00000112: DUP1 00000113: PUSH4 0x8d959408 00000118: EQ 00000119: PUSH2 0x025b 0000011c: JUMPI 0000011d: DUP1 0000011e: PUSH4 0x9010d07c 00000123: EQ 00000124: PUSH2 0x0256 00000127: JUMPI 00000128: DUP1 00000129: PUSH4 0x91d14854 0000012e: EQ 0000012f: PUSH2 0x0251 00000132: JUMPI 00000133: DUP1 00000134: PUSH4 0x92cda791 00000139: EQ 0000013a: PUSH2 0x024c 0000013d: JUMPI 0000013e: DUP1 0000013f: PUSH4 0x963bf6bd 00000144: EQ 00000145: PUSH2 0x0247 00000148: JUMPI 00000149: DUP1 0000014a: PUSH4 0x98a1b397 0000014f: EQ 00000150: PUSH2 0x0242 00000153: JUMPI 00000154: DUP1 00000155: PUSH4 0xa217fddf 0000015a: EQ 0000015b: PUSH2 0x023d 0000015e: JUMPI 0000015f: DUP1 00000160: PUSH4 0xa3246ad3 00000165: EQ 00000166: PUSH2 0x0238 00000169: JUMPI 0000016a: DUP1 0000016b: PUSH4 0xa5de3619 00000170: EQ 00000171: PUSH2 0x0233 00000174: JUMPI 00000175: DUP1 00000176: PUSH4 0xad3cb1cc 0000017b: EQ 0000017c: PUSH2 0x022e 0000017f: JUMPI 00000180: DUP1 00000181: PUSH4 0xaffe39c1 00000186: EQ 00000187: PUSH2 0x0229 0000018a: JUMPI 0000018b: DUP1 0000018c: PUSH4 0xb0f479a1 00000191: EQ 00000192: PUSH2 0x0224 00000195: JUMPI 00000196: DUP1 00000197: PUSH4 0xc0d78655 0000019c: EQ 0000019d: PUSH2 0x021f 000001a0: JUMPI 000001a1: DUP1 000001a2: PUSH4 0xc21fdc8f 000001a7: EQ 000001a8: PUSH2 0x021a 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0xca15c873 000001b2: EQ 000001b3: PUSH2 0x0215 000001b6: JUMPI 000001b7: DUP1 000001b8: PUSH4 0xd391014b 000001bd: EQ 000001be: PUSH2 0x0210 000001c1: JUMPI 000001c2: DUP1 000001c3: PUSH4 0xd547741f 000001c8: EQ 000001c9: PUSH2 0x020b 000001cc: JUMPI 000001cd: DUP1 000001ce: PUSH4 0xd70e1ede 000001d3: EQ 000001d4: PUSH2 0x0206 000001d7: JUMPI 000001d8: DUP1 000001d9: PUSH4 0xe673df8a 000001de: EQ 000001df: PUSH2 0x0201 000001e2: JUMPI 000001e3: DUP1 000001e4: PUSH4 0xf2fde38b 000001e9: EQ 000001ea: PUSH2 0x01fc 000001ed: JUMPI 000001ee: PUSH4 0xffa1ad74 000001f3: SUB 000001f4: PUSH2 0x000e 000001f7: JUMPI 000001f8: PUSH2 0x1815 000001fb: JUMP 000001fc: JUMPDEST 000001fd: PUSH2 0x17b8 00000200: JUMP 00000201: JUMPDEST 00000202: PUSH2 0x1713 00000205: JUMP 00000206: JUMPDEST 00000207: PUSH2 0x16ec 0000020a: JUMP 0000020b: JUMPDEST 0000020c: PUSH2 0x16b5 0000020f: JUMP 00000210: JUMPDEST 00000211: PUSH2 0x168e 00000214: JUMP 00000215: JUMPDEST 00000216: PUSH2 0x1658 00000219: JUMP 0000021a: JUMPDEST 0000021b: PUSH2 0x15b3 0000021e: JUMP 0000021f: JUMPDEST 00000220: PUSH2 0x1550 00000223: JUMP 00000224: JUMPDEST 00000225: PUSH2 0x151c 00000228: JUMP 00000229: JUMPDEST 0000022a: PUSH2 0x1477 0000022d: JUMP 0000022e: JUMPDEST 0000022f: PUSH2 0x1419 00000232: JUMP 00000233: JUMPDEST 00000234: PUSH2 0x1374 00000237: JUMP 00000238: JUMPDEST 00000239: PUSH2 0x12f4 0000023c: JUMP 0000023d: JUMPDEST 0000023e: PUSH2 0x1298 00000241: JUMP 00000242: JUMPDEST 00000243: PUSH2 0x125e 00000246: JUMP 00000247: JUMPDEST 00000248: PUSH2 0x122a 0000024b: JUMP 0000024c: JUMPDEST 0000024d: PUSH2 0x11cb 00000250: JUMP 00000251: JUMPDEST 00000252: PUSH2 0x116d 00000255: JUMP 00000256: JUMPDEST 00000257: PUSH2 0x111c 0000025a: JUMP 0000025b: JUMPDEST 0000025c: PUSH2 0x10b9 0000025f: JUMP 00000260: JUMPDEST 00000261: PUSH2 0x105c 00000264: JUMP 00000265: JUMPDEST 00000266: PUSH2 0x1033 00000269: JUMP 0000026a: JUMPDEST 0000026b: PUSH2 0x0fc2 0000026e: JUMP 0000026f: JUMPDEST 00000270: PUSH2 0x0eb7 00000273: JUMP 00000274: JUMPDEST 00000275: PUSH2 0x0e8a 00000278: JUMP 00000279: JUMPDEST 0000027a: PUSH2 0x0e27 0000027d: JUMP 0000027e: JUMPDEST 0000027f: PUSH2 0x0d5a 00000282: JUMP 00000283: JUMPDEST 00000284: PUSH2 0x0d2c 00000287: JUMP 00000288: JUMPDEST 00000289: PUSH2 0x0ceb 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH2 0x0c94 00000291: JUMP 00000292: JUMPDEST 00000293: PUSH2 0x0c60 00000296: JUMP 00000297: JUMPDEST 00000298: PUSH2 0x0af6 0000029b: JUMP 0000029c: JUMPDEST 0000029d: PUSH2 0x09ed 000002a0: JUMP 000002a1: JUMPDEST 000002a2: PUSH2 0x093a 000002a5: JUMP 000002a6: JUMPDEST 000002a7: PUSH2 0x0890 000002aa: JUMP 000002ab: JUMPDEST 000002ac: PUSH2 0x083e 000002af: JUMP 000002b0: JUMPDEST 000002b1: PUSH2 0x07ff 000002b4: JUMP 000002b5: JUMPDEST 000002b6: PUSH2 0x07b9 000002b9: JUMP 000002ba: JUMPDEST 000002bb: PUSH2 0x045c 000002be: JUMP 000002bf: JUMPDEST 000002c0: PUSH2 0x03f5 000002c3: JUMP 000002c4: JUMPDEST 000002c5: PUSH2 0x034e 000002c8: JUMP 000002c9: JUMPDEST 000002ca: CALLVALUE 000002cb: PUSH2 0x0339 000002ce: JUMPI 000002cf: PUSH1 0x20 000002d1: CALLDATASIZE 000002d2: PUSH1 0x03 000002d4: NOT 000002d5: ADD 000002d6: SLT 000002d7: PUSH2 0x0339 000002da: JUMPI 000002db: PUSH1 0x04 000002dd: CALLDATALOAD 000002de: PUSH4 0xffffffff 000002e3: PUSH1 0xe0 000002e5: SHL 000002e6: DUP2 000002e7: AND 000002e8: DUP1 000002e9: SWAP2 000002ea: SUB 000002eb: PUSH2 0x0339 000002ee: JUMPI 000002ef: PUSH4 0x5a05180f 000002f4: PUSH1 0xe0 000002f6: SHL 000002f7: DUP2 000002f8: EQ 000002f9: SWAP1 000002fa: DUP2 000002fb: ISZERO 000002fc: PUSH2 0x030e 000002ff: JUMPI 00000300: JUMPDEST 00000301: POP 00000302: PUSH1 0x40 00000304: MLOAD 00000305: SWAP1 00000306: ISZERO 00000307: ISZERO 00000308: DUP2 00000309: MSTORE 0000030a: PUSH1 0x20 0000030c: SWAP1 0000030d: RETURN 0000030e: JUMPDEST 0000030f: PUSH4 0x7965db0b 00000314: PUSH1 0xe0 00000316: SHL 00000317: DUP2 00000318: EQ 00000319: SWAP2 0000031a: POP 0000031b: DUP2 0000031c: ISZERO 0000031d: PUSH2 0x0328 00000320: JUMPI 00000321: JUMPDEST 00000322: POP 00000323: PUSH0 00000324: PUSH2 0x0300 00000327: JUMP 00000328: JUMPDEST 00000329: PUSH4 0x01ffc9a7 0000032e: PUSH1 0xe0 00000330: SHL 00000331: EQ 00000332: SWAP1 00000333: POP 00000334: PUSH0 00000335: PUSH2 0x0321 00000338: JUMP 00000339: JUMPDEST 0000033a: PUSH0 0000033b: DUP1 0000033c: REVERT 0000033d: JUMPDEST 0000033e: PUSH1 0x01 00000340: PUSH1 0x01 00000342: PUSH1 0xa0 00000344: SHL 00000345: SUB 00000346: DUP2 00000347: AND 00000348: SUB 00000349: PUSH2 0x0339 0000034c: JUMPI 0000034d: JUMP 0000034e: JUMPDEST 0000034f: CALLVALUE 00000350: PUSH2 0x0339 00000353: JUMPI 00000354: PUSH1 0x60 00000356: CALLDATASIZE 00000357: PUSH1 0x03 00000359: NOT 0000035a: ADD 0000035b: SLT 0000035c: PUSH2 0x0339 0000035f: JUMPI 00000360: PUSH1 0x04 00000362: CALLDATALOAD 00000363: PUSH2 0x036b 00000366: DUP2 00000367: PUSH2 0x033d 0000036a: JUMP 0000036b: JUMPDEST 0000036c: PUSH1 0x24 0000036e: CALLDATALOAD 0000036f: DUP1 00000370: ISZERO 00000371: ISZERO 00000372: DUP2 00000373: SUB 00000374: PUSH2 0x0339 00000377: JUMPI 00000378: PUSH1 0x44 0000037a: CALLDATALOAD 0000037b: SWAP1 0000037c: PUSH2 0x0383 0000037f: PUSH2 0x1b5e 00000382: JUMP 00000383: JUMPDEST 00000384: PUSH1 0x01 00000386: PUSH1 0x01 00000388: PUSH1 0xa0 0000038a: SHL 0000038b: SUB 0000038c: DUP4 0000038d: AND 0000038e: ISZERO 0000038f: PUSH2 0x03e6 00000392: JUMPI 00000393: ISZERO 00000394: PUSH2 0x03d2 00000397: JUMPI 00000398: PUSH2 0x03b5 0000039b: PUSH2 0x0018 0000039e: SWAP3 0000039f: PUSH2 0x03a6 000003a2: PUSH2 0x0a93 000003a5: JUMP 000003a6: JUMPDEST 000003a7: PUSH1 0x01 000003a9: DUP2 000003aa: MSTORE 000003ab: SWAP3 000003ac: PUSH1 0x20 000003ae: DUP5 000003af: ADD 000003b0: MSTORE 000003b1: PUSH2 0x1830 000003b4: JUMP 000003b5: JUMPDEST 000003b6: SWAP1 000003b7: PUSH1 0x20 000003b9: PUSH1 0x01 000003bb: SWAP2 000003bc: DUP1 000003bd: MLOAD 000003be: ISZERO 000003bf: ISZERO 000003c0: PUSH1 0xff 000003c2: DUP1 000003c3: NOT 000003c4: DUP7 000003c5: SLOAD 000003c6: AND 000003c7: SWAP2 000003c8: AND 000003c9: OR 000003ca: DUP5 000003cb: SSTORE 000003cc: ADD 000003cd: MLOAD 000003ce: SWAP2 000003cf: ADD 000003d0: SSTORE 000003d1: JUMP 000003d2: JUMPDEST 000003d3: POP 000003d4: PUSH1 0x01 000003d6: PUSH2 0x03df 000003d9: PUSH0 000003da: SWAP3 000003db: PUSH2 0x1830 000003de: JUMP 000003df: JUMPDEST 000003e0: DUP3 000003e1: DUP2 000003e2: SSTORE 000003e3: ADD 000003e4: SSTORE 000003e5: STOP 000003e6: JUMPDEST 000003e7: PUSH4 0xc4c4d4e1 000003ec: PUSH1 0xe0 000003ee: SHL 000003ef: PUSH0 000003f0: MSTORE 000003f1: PUSH1 0x04 000003f3: PUSH0 000003f4: REVERT 000003f5: JUMPDEST 000003f6: CALLVALUE 000003f7: PUSH2 0x0339 000003fa: JUMPI 000003fb: PUSH1 0x20 000003fd: CALLDATASIZE 000003fe: PUSH1 0x03 00000400: NOT 00000401: ADD 00000402: SLT 00000403: PUSH2 0x0339 00000406: JUMPI 00000407: PUSH1 0x04 00000409: CALLDATALOAD 0000040a: PUSH0 0000040b: MSTORE 0000040c: PUSH0 0000040d: MLOAD 0000040e: PUSH1 0x20 00000410: PUSH2 0x2995 00000413: PUSH0 00000414: CODECOPY 00000415: PUSH0 00000416: MLOAD 00000417: SWAP1 00000418: PUSH0 00000419: MSTORE 0000041a: PUSH1 0x20 0000041c: MSTORE 0000041d: PUSH1 0x20 0000041f: PUSH1 0x01 00000421: PUSH1 0x40 00000423: PUSH0 00000424: KECCAK256 00000425: ADD 00000426: SLOAD 00000427: PUSH1 0x40 00000429: MLOAD 0000042a: SWAP1 0000042b: DUP2 0000042c: MSTORE 0000042d: RETURN 0000042e: JUMPDEST 0000042f: SWAP2 00000430: DUP2 00000431: PUSH1 0x1f 00000433: DUP5 00000434: ADD 00000435: SLT 00000436: ISZERO 00000437: PUSH2 0x0339 0000043a: JUMPI 0000043b: DUP3 0000043c: CALLDATALOAD 0000043d: SWAP2 0000043e: PUSH8 0xffffffffffffffff 00000447: DUP4 00000448: GT 00000449: PUSH2 0x0339 0000044c: JUMPI 0000044d: PUSH1 0x20 0000044f: DUP4 00000450: DUP2 00000451: DUP7 00000452: ADD 00000453: SWAP6 00000454: ADD 00000455: ADD 00000456: GT 00000457: PUSH2 0x0339 0000045a: JUMPI 0000045b: JUMP 0000045c: JUMPDEST 0000045d: CALLVALUE 0000045e: PUSH2 0x0339 00000461: JUMPI 00000462: PUSH2 0x0100 00000465: CALLDATASIZE 00000466: PUSH1 0x03 00000468: NOT 00000469: ADD 0000046a: SLT 0000046b: PUSH2 0x0339 0000046e: JUMPI 0000046f: PUSH1 0x24 00000471: CALLDATALOAD 00000472: PUSH1 0x04 00000474: CALLDATALOAD 00000475: PUSH1 0x44 00000477: CALLDATALOAD 00000478: PUSH2 0x0480 0000047b: DUP2 0000047c: PUSH2 0x033d 0000047f: JUMP 00000480: JUMPDEST 00000481: PUSH1 0x64 00000483: CALLDATALOAD 00000484: SWAP1 00000485: PUSH1 0x84 00000487: CALLDATALOAD 00000488: PUSH2 0x0490 0000048b: DUP2 0000048c: PUSH2 0x033d 0000048f: JUMP 00000490: JUMPDEST 00000491: PUSH1 0xa4 00000493: CALLDATALOAD 00000494: SWAP5 00000495: PUSH1 0xc4 00000497: CALLDATALOAD 00000498: SWAP2 00000499: PUSH1 0xe4 0000049b: CALLDATALOAD 0000049c: PUSH8 0xffffffffffffffff 000004a5: DUP2 000004a6: GT 000004a7: PUSH2 0x0339 000004aa: JUMPI 000004ab: PUSH2 0x04b8 000004ae: SWAP1 000004af: CALLDATASIZE 000004b0: SWAP1 000004b1: PUSH1 0x04 000004b3: ADD 000004b4: PUSH2 0x042e 000004b7: JUMP 000004b8: JUMPDEST 000004b9: SWAP1 000004ba: PUSH2 0x04c1 000004bd: PUSH2 0x1c78 000004c0: JUMP 000004c1: JUMPDEST 000004c2: PUSH2 0x04c9 000004c5: PUSH2 0x1cd4 000004c8: JUMP 000004c9: JUMPDEST 000004ca: PUSH2 0x04d1 000004cd: PUSH2 0x1d0c 000004d0: JUMP 000004d1: JUMPDEST 000004d2: PUSH2 0x04da 000004d5: DUP7 000004d6: PUSH2 0x1830 000004d9: JUMP 000004da: JUMPDEST 000004db: DUP1 000004dc: SLOAD 000004dd: PUSH1 0xff 000004df: AND 000004e0: ISZERO 000004e1: PUSH2 0x079d 000004e4: JUMPI 000004e5: PUSH1 0x01 000004e7: ADD 000004e8: SLOAD 000004e9: DUP1 000004ea: DUP9 000004eb: GT 000004ec: PUSH2 0x0786 000004ef: JUMPI 000004f0: POP 000004f1: SWAP1 000004f2: PUSH2 0x04ff 000004f5: SWAP2 000004f6: DUP6 000004f7: DUP5 000004f8: DUP10 000004f9: DUP10 000004fa: DUP13 000004fb: PUSH2 0x1d51 000004fe: JUMP 000004ff: JUMPDEST 00000500: PUSH1 0x40 00000502: DUP1 00000503: MLOAD 00000504: PUSH1 0x01 00000506: PUSH1 0x01 00000508: PUSH1 0xa0 0000050a: SHL 0000050b: SUB 0000050c: DUP8 0000050d: AND 0000050e: PUSH1 0x20 00000510: DUP3 00000511: ADD 00000512: SWAP1 00000513: DUP2 00000514: MSTORE 00000515: SWAP2 00000516: DUP2 00000517: ADD 00000518: DUP9 00000519: SWAP1 0000051a: MSTORE 0000051b: PUSH1 0x60 0000051d: DUP2 0000051e: ADD 0000051f: SWAP6 00000520: SWAP1 00000521: SWAP6 00000522: MSTORE 00000523: SWAP1 00000524: SWAP4 00000525: PUSH2 0x053b 00000528: DUP2 00000529: PUSH1 0x80 0000052b: DUP2 0000052c: ADD 0000052d: JUMPDEST 0000052e: SUB 0000052f: PUSH1 0x1f 00000531: NOT 00000532: DUP2 00000533: ADD 00000534: DUP4 00000535: MSTORE 00000536: DUP3 00000537: PUSH2 0x0a6c 0000053a: JUMP 0000053b: JUMPDEST 0000053c: MLOAD 0000053d: SWAP1 0000053e: KECCAK256 0000053f: PUSH0 00000540: MLOAD 00000541: PUSH1 0x20 00000543: PUSH2 0x2935 00000546: PUSH0 00000547: CODECOPY 00000548: PUSH0 00000549: MLOAD 0000054a: SWAP1 0000054b: PUSH0 0000054c: MSTORE 0000054d: SLOAD 0000054e: PUSH1 0x01 00000550: PUSH1 0x01 00000552: PUSH1 0xa0 00000554: SHL 00000555: SUB 00000556: AND 00000557: SWAP4 00000558: SWAP1 00000559: PUSH2 0x0562 0000055c: DUP6 0000055d: DUP5 0000055e: PUSH2 0x1f56 00000561: JUMP 00000562: JUMPDEST 00000563: SWAP5 00000564: DUP3 00000565: PUSH2 0x056d 00000568: DUP6 00000569: PUSH2 0x1fbf 0000056c: JUMP 0000056d: JUMPDEST 0000056e: ISZERO 0000056f: PUSH2 0x06df 00000572: JUMPI 00000573: POP 00000574: POP 00000575: PUSH0 00000576: MLOAD 00000577: PUSH1 0x20 00000579: PUSH2 0x2935 0000057c: PUSH0 0000057d: CODECOPY 0000057e: PUSH0 0000057f: MLOAD 00000580: SWAP1 00000581: PUSH0 00000582: MSTORE 00000583: SLOAD 00000584: PUSH2 0x05a3 00000587: SWAP1 00000588: PUSH2 0x0597 0000058b: SWAP1 0000058c: PUSH1 0x01 0000058e: PUSH1 0x01 00000590: PUSH1 0xa0 00000592: SHL 00000593: SUB 00000594: AND 00000595: DUP2 00000596: JUMP 00000597: JUMPDEST 00000598: PUSH1 0x01 0000059a: PUSH1 0x01 0000059c: PUSH1 0xa0 0000059e: SHL 0000059f: SUB 000005a0: AND 000005a1: SWAP1 000005a2: JUMP 000005a3: JUMPDEST 000005a4: SWAP1 000005a5: DUP2 000005a6: EXTCODESIZE 000005a7: ISZERO 000005a8: PUSH2 0x0339 000005ab: JUMPI 000005ac: PUSH1 0x40 000005ae: MLOAD 000005af: PUSH4 0xfed29397 000005b4: PUSH1 0xe0 000005b6: SHL 000005b7: DUP2 000005b8: MSTORE 000005b9: PUSH1 0x04 000005bb: DUP2 000005bc: ADD 000005bd: DUP11 000005be: SWAP1 000005bf: MSTORE 000005c0: PUSH1 0x24 000005c2: DUP2 000005c3: ADD 000005c4: DUP7 000005c5: SWAP1 000005c6: MSTORE 000005c7: PUSH1 0x01 000005c9: PUSH1 0x01 000005cb: PUSH1 0xa0 000005cd: SHL 000005ce: SUB 000005cf: DUP6 000005d0: AND 000005d1: PUSH1 0x44 000005d3: DUP3 000005d4: ADD 000005d5: MSTORE 000005d6: PUSH1 0x64 000005d8: DUP2 000005d9: ADD 000005da: DUP5 000005db: SWAP1 000005dc: MSTORE 000005dd: PUSH1 0x84 000005df: DUP2 000005e0: ADD 000005e1: SWAP2 000005e2: SWAP1 000005e3: SWAP2 000005e4: MSTORE 000005e5: SWAP2 000005e6: PUSH0 000005e7: SWAP2 000005e8: DUP4 000005e9: SWAP2 000005ea: PUSH1 0xa4 000005ec: SWAP2 000005ed: DUP4 000005ee: SWAP2 000005ef: SWAP1 000005f0: GAS 000005f1: CALL 000005f2: DUP1 000005f3: ISZERO 000005f4: PUSH2 0x06da 000005f7: JUMPI 000005f8: PUSH2 0x06c0 000005fb: JUMPI 000005fc: JUMPDEST 000005fd: POP 000005fe: JUMPDEST 000005ff: PUSH0 00000600: MLOAD 00000601: PUSH1 0x20 00000603: PUSH2 0x2935 00000606: PUSH0 00000607: CODECOPY 00000608: PUSH0 00000609: MLOAD 0000060a: SWAP1 0000060b: PUSH0 0000060c: MSTORE 0000060d: SLOAD 0000060e: PUSH2 0x062a 00000611: SWAP1 00000612: PUSH1 0x01 00000614: PUSH1 0x01 00000616: PUSH1 0xa0 00000618: SHL 00000619: SUB 0000061a: AND 0000061b: SWAP4 0000061c: PUSH2 0x0625 0000061f: DUP6 00000620: DUP5 00000621: PUSH2 0x1f56 00000624: JUMP 00000625: JUMPDEST 00000626: PUSH2 0x18b2 00000629: JUMP 0000062a: JUMPDEST 0000062b: SWAP7 0000062c: DUP1 0000062d: DUP9 0000062e: LT 0000062f: PUSH2 0x06a9 00000632: JUMPI 00000633: POP 00000634: PUSH1 0x40 00000636: DUP1 00000637: MLOAD 00000638: PUSH1 0x01 0000063a: PUSH1 0x01 0000063c: PUSH1 0xa0 0000063e: SHL 0000063f: SUB 00000640: SWAP6 00000641: DUP7 00000642: AND 00000643: DUP2 00000644: MSTORE 00000645: PUSH1 0x20 00000647: DUP2 00000648: ADD 00000649: SWAP7 0000064a: SWAP1 0000064b: SWAP7 0000064c: MSTORE 0000064d: SWAP1 0000064e: DUP5 0000064f: AND 00000650: SWAP1 00000651: DUP6 00000652: ADD 00000653: MSTORE 00000654: PUSH1 0x60 00000656: DUP5 00000657: ADD 00000658: SWAP6 00000659: SWAP1 0000065a: SWAP6 0000065b: MSTORE 0000065c: PUSH1 0x80 0000065e: DUP4 0000065f: ADD 00000660: SWAP5 00000661: SWAP1 00000662: SWAP5 00000663: MSTORE 00000664: SWAP3 00000665: SWAP1 00000666: SWAP3 00000667: AND 00000668: PUSH1 0xa0 0000066a: DUP4 0000066b: ADD 0000066c: MSTORE 0000066d: SWAP1 0000066e: PUSH32 0xb269ea1bfae777182ecbadeb1aceea31445e58d011800aef22f18c98bf3137ff 0000068f: SWAP1 00000690: PUSH1 0xc0 00000692: SWAP1 00000693: LOG2 00000694: PUSH2 0x0018 00000697: PUSH1 0x01 00000699: PUSH0 0000069a: MLOAD 0000069b: PUSH1 0x20 0000069d: PUSH2 0x29d5 000006a0: PUSH0 000006a1: CODECOPY 000006a2: PUSH0 000006a3: MLOAD 000006a4: SWAP1 000006a5: PUSH0 000006a6: MSTORE 000006a7: SSTORE 000006a8: JUMP 000006a9: JUMPDEST 000006aa: PUSH4 0x2b90f889 000006af: PUSH1 0xe0 000006b1: SHL 000006b2: PUSH0 000006b3: MSTORE 000006b4: PUSH1 0x04 000006b6: DUP9 000006b7: SWAP1 000006b8: MSTORE 000006b9: PUSH1 0x24 000006bb: MSTORE 000006bc: PUSH1 0x44 000006be: PUSH0 000006bf: REVERT 000006c0: JUMPDEST 000006c1: DUP1 000006c2: PUSH2 0x06ce 000006c5: PUSH0 000006c6: PUSH2 0x06d4 000006c9: SWAP4 000006ca: PUSH2 0x0a6c 000006cd: JUMP 000006ce: JUMPDEST 000006cf: DUP1 000006d0: PUSH2 0x0886 000006d3: JUMP 000006d4: JUMPDEST 000006d5: PUSH0 000006d6: PUSH2 0x05fc 000006d9: JUMP 000006da: JUMPDEST 000006db: PUSH2 0x1885 000006de: JUMP 000006df: JUMPDEST 000006e0: PUSH2 0x06f2 000006e3: SWAP2 000006e4: PUSH1 0x01 000006e6: PUSH1 0x01 000006e8: PUSH1 0xa0 000006ea: SHL 000006eb: SUB 000006ec: DUP7 000006ed: AND 000006ee: PUSH2 0x1fe7 000006f1: JUMP 000006f2: JUMPDEST 000006f3: PUSH0 000006f4: MLOAD 000006f5: PUSH1 0x20 000006f7: PUSH2 0x2935 000006fa: PUSH0 000006fb: CODECOPY 000006fc: PUSH0 000006fd: MLOAD 000006fe: SWAP1 000006ff: PUSH0 00000700: MSTORE 00000701: SLOAD 00000702: PUSH2 0x0715 00000705: SWAP1 00000706: PUSH2 0x0597 00000709: SWAP1 0000070a: PUSH1 0x01 0000070c: PUSH1 0x01 0000070e: PUSH1 0xa0 00000710: SHL 00000711: SUB 00000712: AND 00000713: DUP2 00000714: JUMP 00000715: JUMPDEST 00000716: SWAP1 00000717: DUP2 00000718: EXTCODESIZE 00000719: ISZERO 0000071a: PUSH2 0x0339 0000071d: JUMPI 0000071e: PUSH1 0x40 00000720: MLOAD 00000721: PUSH4 0xfed29397 00000726: PUSH1 0xe0 00000728: SHL 00000729: DUP2 0000072a: MSTORE 0000072b: PUSH1 0x04 0000072d: DUP2 0000072e: ADD 0000072f: DUP11 00000730: SWAP1 00000731: MSTORE 00000732: PUSH1 0x24 00000734: DUP2 00000735: ADD 00000736: DUP7 00000737: SWAP1 00000738: MSTORE 00000739: PUSH1 0x01 0000073b: PUSH1 0x01 0000073d: PUSH1 0xa0 0000073f: SHL 00000740: SUB 00000741: DUP6 00000742: AND 00000743: PUSH1 0x44 00000745: DUP3 00000746: ADD 00000747: MSTORE 00000748: PUSH1 0x64 0000074a: DUP2 0000074b: ADD 0000074c: SWAP4 0000074d: SWAP1 0000074e: SWAP4 0000074f: MSTORE 00000750: PUSH1 0x84 00000752: DUP4 00000753: ADD 00000754: MSTORE 00000755: PUSH0 00000756: SWAP1 00000757: DUP3 00000758: SWAP1 00000759: PUSH1 0xa4 0000075b: SWAP1 0000075c: DUP3 0000075d: SWAP1 0000075e: DUP5 0000075f: SWAP1 00000760: GAS 00000761: CALL 00000762: DUP1 00000763: ISZERO 00000764: PUSH2 0x06da 00000767: JUMPI 00000768: PUSH2 0x0772 0000076b: JUMPI 0000076c: JUMPDEST 0000076d: POP 0000076e: PUSH2 0x05fe 00000771: JUMP 00000772: JUMPDEST 00000773: DUP1 00000774: PUSH2 0x06ce 00000777: PUSH0 00000778: PUSH2 0x0780 0000077b: SWAP4 0000077c: PUSH2 0x0a6c 0000077f: JUMP 00000780: JUMPDEST 00000781: PUSH0 00000782: PUSH2 0x076c 00000785: JUMP 00000786: JUMPDEST 00000787: PUSH4 0xf76aa3d7 0000078c: PUSH1 0xe0 0000078e: SHL 0000078f: PUSH0 00000790: MSTORE 00000791: PUSH1 0x04 00000793: DUP9 00000794: SWAP1 00000795: MSTORE 00000796: PUSH1 0x24 00000798: MSTORE 00000799: PUSH1 0x44 0000079b: PUSH0 0000079c: REVERT 0000079d: JUMPDEST 0000079e: PUSH4 0xd334e6bd 000007a3: PUSH1 0xe0 000007a5: SHL 000007a6: PUSH0 000007a7: MSTORE 000007a8: PUSH1 0x01 000007aa: PUSH1 0x01 000007ac: PUSH1 0xa0 000007ae: SHL 000007af: SUB 000007b0: DUP8 000007b1: AND 000007b2: PUSH1 0x04 000007b4: MSTORE 000007b5: PUSH1 0x24 000007b7: PUSH0 000007b8: REVERT 000007b9: JUMPDEST 000007ba: CALLVALUE 000007bb: PUSH2 0x0339 000007be: JUMPI 000007bf: PUSH1 0x40 000007c1: CALLDATASIZE 000007c2: PUSH1 0x03 000007c4: NOT 000007c5: ADD 000007c6: SLT 000007c7: PUSH2 0x0339 000007ca: JUMPI 000007cb: PUSH1 0x04 000007cd: CALLDATALOAD 000007ce: PUSH1 0x24 000007d0: CALLDATALOAD 000007d1: PUSH2 0x07d9 000007d4: DUP2 000007d5: PUSH2 0x033d 000007d8: JUMP 000007d9: JUMPDEST 000007da: PUSH2 0x07e1 000007dd: PUSH2 0x1b5e 000007e0: JUMP 000007e1: JUMPDEST 000007e2: DUP2 000007e3: ISZERO 000007e4: PUSH2 0x07f0 000007e7: JUMPI 000007e8: PUSH2 0x0018 000007eb: SWAP2 000007ec: PUSH2 0x21fc 000007ef: JUMP 000007f0: JUMPDEST 000007f1: PUSH4 0x078ea367 000007f6: PUSH1 0xe2 000007f8: SHL 000007f9: PUSH0 000007fa: MSTORE 000007fb: PUSH1 0x04 000007fd: PUSH0 000007fe: REVERT 000007ff: JUMPDEST 00000800: CALLVALUE 00000801: PUSH2 0x0339 00000804: JUMPI 00000805: PUSH1 0x20 00000807: CALLDATASIZE 00000808: PUSH1 0x03 0000080a: NOT 0000080b: ADD 0000080c: SLT 0000080d: PUSH2 0x0339 00000810: JUMPI 00000811: PUSH1 0x40 00000813: PUSH2 0x0826 00000816: PUSH1 0x04 00000818: CALLDATALOAD 00000819: PUSH2 0x0821 0000081c: DUP2 0000081d: PUSH2 0x033d 00000820: JUMP 00000821: JUMPDEST 00000822: PUSH2 0x1830 00000825: JUMP 00000826: JUMPDEST 00000827: PUSH1 0x01 00000829: PUSH1 0xff 0000082b: DUP3 0000082c: SLOAD 0000082d: AND 0000082e: SWAP2 0000082f: ADD 00000830: SLOAD 00000831: DUP3 00000832: MLOAD 00000833: SWAP2 00000834: ISZERO 00000835: ISZERO 00000836: DUP3 00000837: MSTORE 00000838: PUSH1 0x20 0000083a: DUP3 0000083b: ADD 0000083c: MSTORE 0000083d: RETURN 0000083e: JUMPDEST 0000083f: CALLVALUE 00000840: PUSH2 0x0339 00000843: JUMPI 00000844: PUSH1 0x40 00000846: CALLDATASIZE 00000847: PUSH1 0x03 00000849: NOT 0000084a: ADD 0000084b: SLT 0000084c: PUSH2 0x0339 0000084f: JUMPI 00000850: PUSH1 0x04 00000852: CALLDATALOAD 00000853: PUSH1 0x24 00000855: CALLDATALOAD 00000856: PUSH2 0x085e 00000859: DUP2 0000085a: PUSH2 0x033d 0000085d: JUMP 0000085e: JUMPDEST 0000085f: CALLER 00000860: PUSH1 0x01 00000862: PUSH1 0x01 00000864: PUSH1 0xa0 00000866: SHL 00000867: SUB 00000868: DUP3 00000869: AND 0000086a: SUB 0000086b: PUSH2 0x0877 0000086e: JUMPI 0000086f: PUSH2 0x0018 00000872: SWAP2 00000873: PUSH2 0x2299 00000876: JUMP 00000877: JUMPDEST 00000878: PUSH4 0x334bd919 0000087d: PUSH1 0xe1 0000087f: SHL 00000880: PUSH0 00000881: MSTORE 00000882: PUSH1 0x04 00000884: PUSH0 00000885: REVERT 00000886: JUMPDEST 00000887: PUSH0 00000888: SWAP2 00000889: SUB 0000088a: SLT 0000088b: PUSH2 0x0339 0000088e: JUMPI 0000088f: JUMP 00000890: JUMPDEST 00000891: CALLVALUE 00000892: PUSH2 0x0339 00000895: JUMPI 00000896: PUSH0 00000897: CALLDATASIZE 00000898: PUSH1 0x03 0000089a: NOT 0000089b: ADD 0000089c: SLT 0000089d: PUSH2 0x0339 000008a0: JUMPI 000008a1: PUSH2 0x08a8 000008a4: PUSH2 0x1b5e 000008a7: JUMP 000008a8: JUMPDEST 000008a9: PUSH0 000008aa: MLOAD 000008ab: PUSH1 0x20 000008ad: PUSH2 0x29b5 000008b0: PUSH0 000008b1: CODECOPY 000008b2: PUSH0 000008b3: MLOAD 000008b4: SWAP1 000008b5: PUSH0 000008b6: MSTORE 000008b7: SLOAD 000008b8: PUSH1 0xff 000008ba: DUP2 000008bb: AND 000008bc: ISZERO 000008bd: PUSH2 0x08ff 000008c0: JUMPI 000008c1: PUSH1 0xff 000008c3: NOT 000008c4: AND 000008c5: PUSH0 000008c6: MLOAD 000008c7: PUSH1 0x20 000008c9: PUSH2 0x29b5 000008cc: PUSH0 000008cd: CODECOPY 000008ce: PUSH0 000008cf: MLOAD 000008d0: SWAP1 000008d1: PUSH0 000008d2: MSTORE 000008d3: SSTORE 000008d4: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa 000008f5: PUSH1 0x20 000008f7: PUSH1 0x40 000008f9: MLOAD 000008fa: CALLER 000008fb: DUP2 000008fc: MSTORE 000008fd: LOG1 000008fe: STOP 000008ff: JUMPDEST 00000900: PUSH4 0x8dfc202b 00000905: PUSH1 0xe0 00000907: SHL 00000908: PUSH0 00000909: MSTORE 0000090a: PUSH1 0x04 0000090c: PUSH0 0000090d: REVERT 0000090e: JUMPDEST 0000090f: PUSH1 0x60 00000911: SWAP1 00000912: PUSH1 0x03 00000914: NOT 00000915: ADD 00000916: SLT 00000917: PUSH2 0x0339 0000091a: JUMPI 0000091b: PUSH1 0x04 0000091d: CALLDATALOAD 0000091e: PUSH2 0x0926 00000921: DUP2 00000922: PUSH2 0x033d 00000925: JUMP 00000926: JUMPDEST 00000927: SWAP1 00000928: PUSH1 0x24 0000092a: CALLDATALOAD 0000092b: SWAP1 0000092c: PUSH1 0x44 0000092e: CALLDATALOAD 0000092f: PUSH2 0x0937 00000932: DUP2 00000933: PUSH2 0x033d 00000936: JUMP 00000937: JUMPDEST 00000938: SWAP1 00000939: JUMP 0000093a: JUMPDEST 0000093b: CALLVALUE 0000093c: PUSH2 0x0339 0000093f: JUMPI 00000940: PUSH2 0x0948 00000943: CALLDATASIZE 00000944: PUSH2 0x090e 00000947: JUMP 00000948: JUMPDEST 00000949: SWAP2 0000094a: PUSH2 0x0951 0000094d: PUSH2 0x1bba 00000950: JUMP 00000951: JUMPDEST 00000952: PUSH1 0x01 00000954: PUSH1 0x01 00000956: PUSH1 0xa0 00000958: SHL 00000959: SUB 0000095a: DUP4 0000095b: AND 0000095c: SWAP2 0000095d: DUP3 0000095e: ISZERO 0000095f: PUSH2 0x03e6 00000962: JUMPI 00000963: PUSH0 00000964: MLOAD 00000965: PUSH1 0x20 00000967: PUSH2 0x2a35 0000096a: PUSH0 0000096b: CODECOPY 0000096c: PUSH0 0000096d: MLOAD 0000096e: SWAP1 0000096f: PUSH0 00000970: MSTORE 00000971: SLOAD 00000972: PUSH1 0x01 00000974: PUSH1 0x01 00000976: PUSH1 0xa0 00000978: SHL 00000979: SUB 0000097a: AND 0000097b: DUP1 0000097c: DUP5 0000097d: SUB 0000097e: PUSH2 0x09d6 00000981: JUMPI 00000982: POP 00000983: PUSH32 0x64336c2c468e7484a74b9f0ef79fe767455ab9373c75d9578d2415770f9f516c 000009a4: SWAP4 000009a5: PUSH2 0x09ae 000009a8: SWAP2 000009a9: DUP4 000009aa: PUSH2 0x230a 000009ad: JUMP 000009ae: JUMPDEST 000009af: PUSH1 0x40 000009b1: DUP1 000009b2: MLOAD 000009b3: CALLER 000009b4: DUP2 000009b5: MSTORE 000009b6: PUSH1 0x01 000009b8: PUSH1 0x01 000009ba: PUSH1 0xa0 000009bc: SHL 000009bd: SUB 000009be: SWAP1 000009bf: SWAP4 000009c0: AND 000009c1: PUSH1 0x20 000009c3: DUP5 000009c4: ADD 000009c5: MSTORE 000009c6: DUP3 000009c7: ADD 000009c8: MSTORE 000009c9: PUSH1 0x60 000009cb: DUP2 000009cc: ADD 000009cd: SWAP2 000009ce: SWAP1 000009cf: SWAP2 000009d0: MSTORE 000009d1: PUSH1 0x80 000009d3: SWAP1 000009d4: LOG1 000009d5: STOP 000009d6: JUMPDEST 000009d7: DUP4 000009d8: SWAP1 000009d9: PUSH4 0xf37d38f3 000009de: PUSH1 0xe0 000009e0: SHL 000009e1: PUSH0 000009e2: MSTORE 000009e3: PUSH1 0x04 000009e5: MSTORE 000009e6: PUSH1 0x24 000009e8: MSTORE 000009e9: PUSH1 0x44 000009eb: PUSH0 000009ec: REVERT 000009ed: JUMPDEST 000009ee: CALLVALUE 000009ef: PUSH2 0x0339 000009f2: JUMPI 000009f3: PUSH2 0x0120 000009f6: CALLDATASIZE 000009f7: PUSH1 0x03 000009f9: NOT 000009fa: ADD 000009fb: SLT 000009fc: PUSH2 0x0339 000009ff: JUMPI 00000a00: PUSH1 0x44 00000a02: CALLDATALOAD 00000a03: PUSH1 0x24 00000a05: CALLDATALOAD 00000a06: PUSH1 0x04 00000a08: CALLDATALOAD 00000a09: PUSH2 0x0a11 00000a0c: DUP4 00000a0d: PUSH2 0x033d 00000a10: JUMP 00000a11: JUMPDEST 00000a12: PUSH1 0x64 00000a14: CALLDATALOAD 00000a15: PUSH1 0x84 00000a17: CALLDATALOAD 00000a18: PUSH2 0x0a20 00000a1b: DUP2 00000a1c: PUSH2 0x033d 00000a1f: JUMP 00000a20: JUMPDEST 00000a21: PUSH1 0xa4 00000a23: CALLDATALOAD 00000a24: PUSH1 0xc4 00000a26: CALLDATALOAD 00000a27: SWAP2 00000a28: PUSH1 0xe4 00000a2a: CALLDATALOAD 00000a2b: SWAP4 00000a2c: PUSH2 0x0104 00000a2f: CALLDATALOAD 00000a30: SWAP8 00000a31: PUSH8 0xffffffffffffffff 00000a3a: DUP10 00000a3b: GT 00000a3c: PUSH2 0x0339 00000a3f: JUMPI 00000a40: PUSH2 0x0a50 00000a43: PUSH2 0x0018 00000a46: SWAP10 00000a47: CALLDATASIZE 00000a48: SWAP1 00000a49: PUSH1 0x04 00000a4b: ADD 00000a4c: PUSH2 0x042e 00000a4f: JUMP 00000a50: JUMPDEST 00000a51: SWAP9 00000a52: SWAP1 00000a53: SWAP8 00000a54: PUSH2 0x18bf 00000a57: JUMP 00000a58: JUMPDEST 00000a59: PUSH4 0x4e487b71 00000a5e: PUSH1 0xe0 00000a60: SHL 00000a61: PUSH0 00000a62: MSTORE 00000a63: PUSH1 0x41 00000a65: PUSH1 0x04 00000a67: MSTORE 00000a68: PUSH1 0x24 00000a6a: PUSH0 00000a6b: REVERT 00000a6c: JUMPDEST 00000a6d: SWAP1 00000a6e: PUSH1 0x1f 00000a70: DUP1 00000a71: NOT 00000a72: SWAP2 00000a73: ADD 00000a74: AND 00000a75: DUP2 00000a76: ADD 00000a77: SWAP1 00000a78: DUP2 00000a79: LT 00000a7a: PUSH8 0xffffffffffffffff 00000a83: DUP3 00000a84: GT 00000a85: OR 00000a86: PUSH2 0x0a8e 00000a89: JUMPI 00000a8a: PUSH1 0x40 00000a8c: MSTORE 00000a8d: JUMP 00000a8e: JUMPDEST 00000a8f: PUSH2 0x0a58 00000a92: JUMP 00000a93: JUMPDEST 00000a94: PUSH1 0x40 00000a96: MLOAD 00000a97: SWAP1 00000a98: PUSH2 0x0aa2 00000a9b: PUSH1 0x40 00000a9d: DUP4 00000a9e: PUSH2 0x0a6c 00000aa1: JUMP 00000aa2: JUMPDEST 00000aa3: JUMP 00000aa4: JUMPDEST 00000aa5: PUSH8 0xffffffffffffffff 00000aae: DUP2 00000aaf: GT 00000ab0: PUSH2 0x0a8e 00000ab3: JUMPI 00000ab4: PUSH1 0x1f 00000ab6: ADD 00000ab7: PUSH1 0x1f 00000ab9: NOT 00000aba: AND 00000abb: PUSH1 0x20 00000abd: ADD 00000abe: SWAP1 00000abf: JUMP 00000ac0: JUMPDEST 00000ac1: SWAP3 00000ac2: SWAP2 00000ac3: SWAP3 00000ac4: PUSH2 0x0acc 00000ac7: DUP3 00000ac8: PUSH2 0x0aa4 00000acb: JUMP 00000acc: JUMPDEST 00000acd: SWAP2 00000ace: PUSH2 0x0ada 00000ad1: PUSH1 0x40 00000ad3: MLOAD 00000ad4: SWAP4 00000ad5: DUP5 00000ad6: PUSH2 0x0a6c 00000ad9: JUMP 00000ada: JUMPDEST 00000adb: DUP3 00000adc: SWAP5 00000add: DUP2 00000ade: DUP5 00000adf: MSTORE 00000ae0: DUP2 00000ae1: DUP4 00000ae2: ADD 00000ae3: GT 00000ae4: PUSH2 0x0339 00000ae7: JUMPI 00000ae8: DUP3 00000ae9: DUP2 00000aea: PUSH1 0x20 00000aec: SWAP4 00000aed: DUP5 00000aee: PUSH0 00000aef: SWAP7 00000af0: ADD 00000af1: CALLDATACOPY 00000af2: ADD 00000af3: ADD 00000af4: MSTORE 00000af5: JUMP 00000af6: JUMPDEST 00000af7: PUSH1 0x40 00000af9: CALLDATASIZE 00000afa: PUSH1 0x03 00000afc: NOT 00000afd: ADD 00000afe: SLT 00000aff: PUSH2 0x0339 00000b02: JUMPI 00000b03: PUSH1 0x04 00000b05: CALLDATALOAD 00000b06: PUSH2 0x0b0e 00000b09: DUP2 00000b0a: PUSH2 0x033d 00000b0d: JUMP 00000b0e: JUMPDEST 00000b0f: PUSH1 0x24 00000b11: CALLDATALOAD 00000b12: PUSH8 0xffffffffffffffff 00000b1b: DUP2 00000b1c: GT 00000b1d: PUSH2 0x0339 00000b20: JUMPI 00000b21: CALLDATASIZE 00000b22: PUSH1 0x23 00000b24: DUP3 00000b25: ADD 00000b26: SLT 00000b27: ISZERO 00000b28: PUSH2 0x0339 00000b2b: JUMPI 00000b2c: PUSH2 0x0b3f 00000b2f: SWAP1 00000b30: CALLDATASIZE 00000b31: SWAP1 00000b32: PUSH1 0x24 00000b34: DUP2 00000b35: PUSH1 0x04 00000b37: ADD 00000b38: CALLDATALOAD 00000b39: SWAP2 00000b3a: ADD 00000b3b: PUSH2 0x0ac0 00000b3e: JUMP 00000b3f: JUMPDEST 00000b40: SWAP1 00000b41: PUSH1 0x01 00000b43: PUSH1 0x01 00000b45: PUSH1 0xa0 00000b47: SHL 00000b48: SUB 00000b49: PUSH32 0x0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf88 00000b6a: AND 00000b6b: ADDRESS 00000b6c: DUP2 00000b6d: EQ 00000b6e: SWAP1 00000b6f: DUP2 00000b70: ISZERO 00000b71: PUSH2 0x0c3e 00000b74: JUMPI 00000b75: JUMPDEST 00000b76: POP 00000b77: PUSH2 0x0c2f 00000b7a: JUMPI 00000b7b: PUSH2 0x0b82 00000b7e: PUSH2 0x1c29 00000b81: JUMP 00000b82: JUMPDEST 00000b83: PUSH1 0x40 00000b85: MLOAD 00000b86: PUSH4 0x52d1902d 00000b8b: PUSH1 0xe0 00000b8d: SHL 00000b8e: DUP2 00000b8f: MSTORE 00000b90: SWAP2 00000b91: PUSH1 0x20 00000b93: DUP4 00000b94: PUSH1 0x04 00000b96: DUP2 00000b97: PUSH1 0x01 00000b99: PUSH1 0x01 00000b9b: PUSH1 0xa0 00000b9d: SHL 00000b9e: SUB 00000b9f: DUP7 00000ba0: AND 00000ba1: GAS 00000ba2: STATICCALL 00000ba3: PUSH0 00000ba4: SWAP4 00000ba5: DUP2 00000ba6: PUSH2 0x0bfe 00000ba9: JUMPI 00000baa: JUMPDEST 00000bab: POP 00000bac: PUSH2 0x0bcb 00000baf: JUMPI 00000bb0: PUSH4 0x4c9c8ce3 00000bb5: PUSH1 0xe0 00000bb7: SHL 00000bb8: PUSH0 00000bb9: MSTORE 00000bba: PUSH1 0x01 00000bbc: PUSH1 0x01 00000bbe: PUSH1 0xa0 00000bc0: SHL 00000bc1: SUB 00000bc2: DUP3 00000bc3: AND 00000bc4: PUSH1 0x04 00000bc6: MSTORE 00000bc7: PUSH1 0x24 00000bc9: PUSH0 00000bca: REVERT 00000bcb: JUMPDEST 00000bcc: SWAP1 00000bcd: PUSH0 00000bce: MLOAD 00000bcf: PUSH1 0x20 00000bd1: PUSH2 0x2955 00000bd4: PUSH0 00000bd5: CODECOPY 00000bd6: PUSH0 00000bd7: MLOAD 00000bd8: SWAP1 00000bd9: PUSH0 00000bda: MSTORE 00000bdb: DUP4 00000bdc: SUB 00000bdd: PUSH2 0x0bea 00000be0: JUMPI 00000be1: PUSH2 0x0018 00000be4: SWAP3 00000be5: POP 00000be6: PUSH2 0x2615 00000be9: JUMP 00000bea: JUMPDEST 00000beb: PUSH4 0x2a875269 00000bf0: PUSH1 0xe2 00000bf2: SHL 00000bf3: PUSH0 00000bf4: MSTORE 00000bf5: PUSH1 0x04 00000bf7: DUP4 00000bf8: SWAP1 00000bf9: MSTORE 00000bfa: PUSH1 0x24 00000bfc: PUSH0 00000bfd: REVERT 00000bfe: JUMPDEST 00000bff: PUSH2 0x0c21 00000c02: SWAP2 00000c03: SWAP5 00000c04: POP 00000c05: PUSH1 0x20 00000c07: RETURNDATASIZE 00000c08: PUSH1 0x20 00000c0a: GT 00000c0b: PUSH2 0x0c28 00000c0e: JUMPI 00000c0f: JUMPDEST 00000c10: PUSH2 0x0c19 00000c13: DUP2 00000c14: DUP4 00000c15: PUSH2 0x0a6c 00000c18: JUMP 00000c19: JUMPDEST 00000c1a: DUP2 00000c1b: ADD 00000c1c: SWAP1 00000c1d: PUSH2 0x1f47 00000c20: JUMP 00000c21: JUMPDEST 00000c22: SWAP3 00000c23: PUSH0 00000c24: PUSH2 0x0baa 00000c27: JUMP 00000c28: JUMPDEST 00000c29: POP 00000c2a: RETURNDATASIZE 00000c2b: PUSH2 0x0c0f 00000c2e: JUMP 00000c2f: JUMPDEST 00000c30: PUSH4 0x703e46dd 00000c35: PUSH1 0xe1 00000c37: SHL 00000c38: PUSH0 00000c39: MSTORE 00000c3a: PUSH1 0x04 00000c3c: PUSH0 00000c3d: REVERT 00000c3e: JUMPDEST 00000c3f: PUSH0 00000c40: MLOAD 00000c41: PUSH1 0x20 00000c43: PUSH2 0x2955 00000c46: PUSH0 00000c47: CODECOPY 00000c48: PUSH0 00000c49: MLOAD 00000c4a: SWAP1 00000c4b: PUSH0 00000c4c: MSTORE 00000c4d: SLOAD 00000c4e: PUSH1 0x01 00000c50: PUSH1 0x01 00000c52: PUSH1 0xa0 00000c54: SHL 00000c55: SUB 00000c56: AND 00000c57: EQ 00000c58: ISZERO 00000c59: SWAP1 00000c5a: POP 00000c5b: PUSH0 00000c5c: PUSH2 0x0b75 00000c5f: JUMP 00000c60: JUMPDEST 00000c61: CALLVALUE 00000c62: PUSH2 0x0339 00000c65: JUMPI 00000c66: PUSH0 00000c67: CALLDATASIZE 00000c68: PUSH1 0x03 00000c6a: NOT 00000c6b: ADD 00000c6c: SLT 00000c6d: PUSH2 0x0339 00000c70: JUMPI 00000c71: PUSH0 00000c72: MLOAD 00000c73: PUSH1 0x20 00000c75: PUSH2 0x2935 00000c78: PUSH0 00000c79: CODECOPY 00000c7a: PUSH0 00000c7b: MLOAD 00000c7c: SWAP1 00000c7d: PUSH0 00000c7e: MSTORE 00000c7f: SLOAD 00000c80: PUSH1 0x40 00000c82: MLOAD 00000c83: PUSH1 0x01 00000c85: PUSH1 0x01 00000c87: PUSH1 0xa0 00000c89: SHL 00000c8a: SUB 00000c8b: SWAP1 00000c8c: SWAP2 00000c8d: AND 00000c8e: DUP2 00000c8f: MSTORE 00000c90: PUSH1 0x20 00000c92: SWAP1 00000c93: RETURN 00000c94: JUMPDEST 00000c95: CALLVALUE 00000c96: PUSH2 0x0339 00000c99: JUMPI 00000c9a: PUSH0 00000c9b: CALLDATASIZE 00000c9c: PUSH1 0x03 00000c9e: NOT 00000c9f: ADD 00000ca0: SLT 00000ca1: PUSH2 0x0339 00000ca4: JUMPI 00000ca5: PUSH32 0x0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf88 00000cc6: PUSH1 0x01 00000cc8: PUSH1 0x01 00000cca: PUSH1 0xa0 00000ccc: SHL 00000ccd: SUB 00000cce: AND 00000ccf: ADDRESS 00000cd0: SUB 00000cd1: PUSH2 0x0c2f 00000cd4: JUMPI 00000cd5: PUSH1 0x20 00000cd7: PUSH1 0x40 00000cd9: MLOAD 00000cda: PUSH0 00000cdb: MLOAD 00000cdc: PUSH1 0x20 00000cde: PUSH2 0x2955 00000ce1: PUSH0 00000ce2: CODECOPY 00000ce3: PUSH0 00000ce4: MLOAD 00000ce5: SWAP1 00000ce6: PUSH0 00000ce7: MSTORE 00000ce8: DUP2 00000ce9: MSTORE 00000cea: RETURN 00000ceb: JUMPDEST 00000cec: CALLVALUE 00000ced: PUSH2 0x0339 00000cf0: JUMPI 00000cf1: PUSH2 0x0cf9 00000cf4: CALLDATASIZE 00000cf5: PUSH2 0x090e 00000cf8: JUMP 00000cf9: JUMPDEST 00000cfa: SWAP1 00000cfb: PUSH2 0x0d02 00000cfe: PUSH2 0x1b5e 00000d01: JUMP 00000d02: JUMPDEST 00000d03: PUSH1 0x01 00000d05: PUSH1 0x01 00000d07: PUSH1 0xa0 00000d09: SHL 00000d0a: SUB 00000d0b: DUP3 00000d0c: AND 00000d0d: ISZERO 00000d0e: PUSH2 0x03e6 00000d11: JUMPI 00000d12: PUSH2 0x0018 00000d15: SWAP3 00000d16: DUP2 00000d17: PUSH2 0x230a 00000d1a: JUMPI 00000d1b: SWAP1 00000d1c: POP 00000d1d: PUSH2 0x0d26 00000d20: ADDRESS 00000d21: DUP3 00000d22: PUSH2 0x1f56 00000d25: JUMP 00000d26: JUMPDEST 00000d27: SWAP1 00000d28: PUSH2 0x230a 00000d2b: JUMP 00000d2c: JUMPDEST 00000d2d: CALLVALUE 00000d2e: PUSH2 0x0339 00000d31: JUMPI 00000d32: PUSH0 00000d33: CALLDATASIZE 00000d34: PUSH1 0x03 00000d36: NOT 00000d37: ADD 00000d38: SLT 00000d39: PUSH2 0x0339 00000d3c: JUMPI 00000d3d: PUSH1 0x20 00000d3f: PUSH1 0xff 00000d41: PUSH0 00000d42: MLOAD 00000d43: PUSH1 0x20 00000d45: PUSH2 0x29b5 00000d48: PUSH0 00000d49: CODECOPY 00000d4a: PUSH0 00000d4b: MLOAD 00000d4c: SWAP1 00000d4d: PUSH0 00000d4e: MSTORE 00000d4f: SLOAD 00000d50: AND 00000d51: PUSH1 0x40 00000d53: MLOAD 00000d54: SWAP1 00000d55: ISZERO 00000d56: ISZERO 00000d57: DUP2 00000d58: MSTORE 00000d59: RETURN 00000d5a: JUMPDEST 00000d5b: CALLVALUE 00000d5c: PUSH2 0x0339 00000d5f: JUMPI 00000d60: PUSH0 00000d61: CALLDATASIZE 00000d62: PUSH1 0x03 00000d64: NOT 00000d65: ADD 00000d66: SLT 00000d67: PUSH2 0x0339 00000d6a: JUMPI 00000d6b: PUSH0 00000d6c: MLOAD 00000d6d: PUSH1 0x20 00000d6f: PUSH2 0x2a15 00000d72: PUSH0 00000d73: CODECOPY 00000d74: PUSH0 00000d75: MLOAD 00000d76: SWAP1 00000d77: PUSH0 00000d78: MSTORE 00000d79: SLOAD 00000d7a: PUSH1 0xff 00000d7c: DUP2 00000d7d: PUSH1 0x40 00000d7f: SHR 00000d80: AND 00000d81: DUP1 00000d82: ISZERO 00000d83: PUSH2 0x0e12 00000d86: JUMPI 00000d87: JUMPDEST 00000d88: PUSH2 0x0e03 00000d8b: JUMPI 00000d8c: PUSH8 0xffffffffffffffff 00000d95: NOT 00000d96: AND 00000d97: PUSH1 0x02 00000d99: OR 00000d9a: PUSH0 00000d9b: MLOAD 00000d9c: PUSH1 0x20 00000d9e: PUSH2 0x2a15 00000da1: PUSH0 00000da2: CODECOPY 00000da3: PUSH0 00000da4: MLOAD 00000da5: SWAP1 00000da6: PUSH0 00000da7: MSTORE 00000da8: SSTORE 00000da9: PUSH2 0x0db0 00000dac: PUSH2 0x1a44 00000daf: JUMP 00000db0: JUMPDEST 00000db1: PUSH2 0x0dc7 00000db4: PUSH2 0x03e8 00000db7: PUSH0 00000db8: MLOAD 00000db9: PUSH1 0x20 00000dbb: PUSH2 0x2915 00000dbe: PUSH0 00000dbf: CODECOPY 00000dc0: PUSH0 00000dc1: MLOAD 00000dc2: SWAP1 00000dc3: PUSH0 00000dc4: MSTORE 00000dc5: SSTORE 00000dc6: JUMP 00000dc7: JUMPDEST 00000dc8: PUSH2 0x0dcf 00000dcb: PUSH2 0x1a71 00000dce: JUMP 00000dcf: JUMPDEST 00000dd0: PUSH1 0x40 00000dd2: MLOAD 00000dd3: PUSH1 0x02 00000dd5: DUP2 00000dd6: MSTORE 00000dd7: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 00000df8: SWAP1 00000df9: DUP1 00000dfa: PUSH1 0x20 00000dfc: DUP2 00000dfd: ADD 00000dfe: JUMPDEST 00000dff: SUB 00000e00: SWAP1 00000e01: LOG1 00000e02: STOP 00000e03: JUMPDEST 00000e04: PUSH4 0xf92ee8a9 00000e09: PUSH1 0xe0 00000e0b: SHL 00000e0c: PUSH0 00000e0d: MSTORE 00000e0e: PUSH1 0x04 00000e10: PUSH0 00000e11: REVERT 00000e12: JUMPDEST 00000e13: POP 00000e14: PUSH1 0x02 00000e16: PUSH8 0xffffffffffffffff 00000e1f: DUP3 00000e20: AND 00000e21: LT 00000e22: ISZERO 00000e23: PUSH2 0x0d87 00000e26: JUMP 00000e27: JUMPDEST 00000e28: CALLVALUE 00000e29: PUSH2 0x0339 00000e2c: JUMPI 00000e2d: PUSH1 0x20 00000e2f: CALLDATASIZE 00000e30: PUSH1 0x03 00000e32: NOT 00000e33: ADD 00000e34: SLT 00000e35: PUSH2 0x0339 00000e38: JUMPI 00000e39: PUSH1 0x04 00000e3b: CALLDATALOAD 00000e3c: PUSH2 0x0e44 00000e3f: DUP2 00000e40: PUSH2 0x033d 00000e43: JUMP 00000e44: JUMPDEST 00000e45: PUSH2 0x0e4c 00000e48: PUSH2 0x1b5e 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: PUSH1 0x01 00000e4f: PUSH1 0x01 00000e51: PUSH1 0xa0 00000e53: SHL 00000e54: SUB 00000e55: AND 00000e56: DUP1 00000e57: ISZERO 00000e58: PUSH2 0x03e6 00000e5b: JUMPI 00000e5c: PUSH1 0x01 00000e5e: PUSH1 0x01 00000e60: PUSH1 0x60 00000e62: SHL 00000e63: SUB 00000e64: PUSH1 0xa0 00000e66: SHL 00000e67: PUSH0 00000e68: MLOAD 00000e69: PUSH1 0x20 00000e6b: PUSH2 0x2a35 00000e6e: PUSH0 00000e6f: CODECOPY 00000e70: PUSH0 00000e71: MLOAD 00000e72: SWAP1 00000e73: PUSH0 00000e74: MSTORE 00000e75: SLOAD 00000e76: AND 00000e77: OR 00000e78: PUSH0 00000e79: MLOAD 00000e7a: PUSH1 0x20 00000e7c: PUSH2 0x2a35 00000e7f: PUSH0 00000e80: CODECOPY 00000e81: PUSH0 00000e82: MLOAD 00000e83: SWAP1 00000e84: PUSH0 00000e85: MSTORE 00000e86: SSTORE 00000e87: PUSH0 00000e88: DUP1 00000e89: RETURN 00000e8a: JUMPDEST 00000e8b: CALLVALUE 00000e8c: PUSH2 0x0339 00000e8f: JUMPI 00000e90: PUSH1 0x20 00000e92: CALLDATASIZE 00000e93: PUSH1 0x03 00000e95: NOT 00000e96: ADD 00000e97: SLT 00000e98: PUSH2 0x0339 00000e9b: JUMPI 00000e9c: PUSH1 0x04 00000e9e: CALLDATALOAD 00000e9f: PUSH2 0x0ea6 00000ea2: PUSH2 0x1bba 00000ea5: JUMP 00000ea6: JUMPDEST 00000ea7: PUSH0 00000ea8: MLOAD 00000ea9: PUSH1 0x20 00000eab: PUSH2 0x2915 00000eae: PUSH0 00000eaf: CODECOPY 00000eb0: PUSH0 00000eb1: MLOAD 00000eb2: SWAP1 00000eb3: PUSH0 00000eb4: MSTORE 00000eb5: SSTORE 00000eb6: STOP 00000eb7: JUMPDEST 00000eb8: CALLVALUE 00000eb9: PUSH2 0x0339 00000ebc: JUMPI 00000ebd: PUSH0 00000ebe: CALLDATASIZE 00000ebf: PUSH1 0x03 00000ec1: NOT 00000ec2: ADD 00000ec3: SLT 00000ec4: PUSH2 0x0339 00000ec7: JUMPI 00000ec8: PUSH0 00000ec9: MLOAD 00000eca: PUSH1 0x20 00000ecc: PUSH2 0x2a15 00000ecf: PUSH0 00000ed0: CODECOPY 00000ed1: PUSH0 00000ed2: MLOAD 00000ed3: SWAP1 00000ed4: PUSH0 00000ed5: MSTORE 00000ed6: SLOAD 00000ed7: PUSH8 0xffffffffffffffff 00000ee0: PUSH2 0x0ef9 00000ee3: PUSH1 0xff 00000ee5: PUSH1 0x40 00000ee7: DUP5 00000ee8: SWAP1 00000ee9: SHR 00000eea: AND 00000eeb: ISZERO 00000eec: SWAP3 00000eed: PUSH8 0xffffffffffffffff 00000ef6: AND 00000ef7: SWAP1 00000ef8: JUMP 00000ef9: JUMPDEST 00000efa: AND 00000efb: DUP1 00000efc: ISZERO 00000efd: SWAP1 00000efe: DUP2 00000eff: PUSH2 0x0fba 00000f02: JUMPI 00000f03: JUMPDEST 00000f04: PUSH1 0x01 00000f06: EQ 00000f07: SWAP1 00000f08: DUP2 00000f09: PUSH2 0x0fb0 00000f0c: JUMPI 00000f0d: JUMPDEST 00000f0e: ISZERO 00000f0f: SWAP1 00000f10: DUP2 00000f11: PUSH2 0x0fa7 00000f14: JUMPI 00000f15: JUMPDEST 00000f16: POP 00000f17: PUSH2 0x0e03 00000f1a: JUMPI 00000f1b: DUP1 00000f1c: PUSH2 0x0f4c 00000f1f: PUSH1 0x01 00000f21: PUSH8 0xffffffffffffffff 00000f2a: NOT 00000f2b: PUSH0 00000f2c: MLOAD 00000f2d: PUSH1 0x20 00000f2f: PUSH2 0x2a15 00000f32: PUSH0 00000f33: CODECOPY 00000f34: PUSH0 00000f35: MLOAD 00000f36: SWAP1 00000f37: PUSH0 00000f38: MSTORE 00000f39: SLOAD 00000f3a: AND 00000f3b: OR 00000f3c: PUSH0 00000f3d: MLOAD 00000f3e: PUSH1 0x20 00000f40: PUSH2 0x2a15 00000f43: PUSH0 00000f44: CODECOPY 00000f45: PUSH0 00000f46: MLOAD 00000f47: SWAP1 00000f48: PUSH0 00000f49: MSTORE 00000f4a: SSTORE 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: PUSH2 0x0f9a 00000f50: JUMPI 00000f51: JUMPDEST 00000f52: PUSH2 0x0f59 00000f55: PUSH2 0x1a98 00000f58: JUMP 00000f59: JUMPDEST 00000f5a: PUSH2 0x0f5f 00000f5d: JUMPI 00000f5e: STOP 00000f5f: JUMPDEST 00000f60: PUSH2 0x0f67 00000f63: PUSH2 0x1a71 00000f66: JUMP 00000f67: JUMPDEST 00000f68: PUSH1 0x40 00000f6a: MLOAD 00000f6b: PUSH1 0x01 00000f6d: DUP2 00000f6e: MSTORE 00000f6f: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 00000f90: SWAP1 00000f91: DUP1 00000f92: PUSH1 0x20 00000f94: DUP2 00000f95: ADD 00000f96: PUSH2 0x0dfe 00000f99: JUMP 00000f9a: JUMPDEST 00000f9b: PUSH2 0x0fa2 00000f9e: PUSH2 0x1a44 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH2 0x0f51 00000fa6: JUMP 00000fa7: JUMPDEST 00000fa8: SWAP1 00000fa9: POP 00000faa: ISZERO 00000fab: PUSH0 00000fac: PUSH2 0x0f15 00000faf: JUMP 00000fb0: JUMPDEST 00000fb1: ADDRESS 00000fb2: EXTCODESIZE 00000fb3: ISZERO 00000fb4: SWAP2 00000fb5: POP 00000fb6: PUSH2 0x0f0d 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: DUP3 00000fbc: SWAP2 00000fbd: POP 00000fbe: PUSH2 0x0f03 00000fc1: JUMP 00000fc2: JUMPDEST 00000fc3: CALLVALUE 00000fc4: PUSH2 0x0339 00000fc7: JUMPI 00000fc8: PUSH0 00000fc9: CALLDATASIZE 00000fca: PUSH1 0x03 00000fcc: NOT 00000fcd: ADD 00000fce: SLT 00000fcf: PUSH2 0x0339 00000fd2: JUMPI 00000fd3: PUSH2 0x0fda 00000fd6: PUSH2 0x1bba 00000fd9: JUMP 00000fda: JUMPDEST 00000fdb: PUSH2 0x0fe2 00000fde: PUSH2 0x1d0c 00000fe1: JUMP 00000fe2: JUMPDEST 00000fe3: PUSH1 0x01 00000fe5: PUSH1 0xff 00000fe7: NOT 00000fe8: PUSH0 00000fe9: MLOAD 00000fea: PUSH1 0x20 00000fec: PUSH2 0x29b5 00000fef: PUSH0 00000ff0: CODECOPY 00000ff1: PUSH0 00000ff2: MLOAD 00000ff3: SWAP1 00000ff4: PUSH0 00000ff5: MSTORE 00000ff6: SLOAD 00000ff7: AND 00000ff8: OR 00000ff9: PUSH0 00000ffa: MLOAD 00000ffb: PUSH1 0x20 00000ffd: PUSH2 0x29b5 00001000: PUSH0 00001001: CODECOPY 00001002: PUSH0 00001003: MLOAD 00001004: SWAP1 00001005: PUSH0 00001006: MSTORE 00001007: SSTORE 00001008: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 00001029: PUSH1 0x20 0000102b: PUSH1 0x40 0000102d: MLOAD 0000102e: CALLER 0000102f: DUP2 00001030: MSTORE 00001031: LOG1 00001032: STOP 00001033: JUMPDEST 00001034: CALLVALUE 00001035: PUSH2 0x0339 00001038: JUMPI 00001039: PUSH0 0000103a: CALLDATASIZE 0000103b: PUSH1 0x03 0000103d: NOT 0000103e: ADD 0000103f: SLT 00001040: PUSH2 0x0339 00001043: JUMPI 00001044: PUSH1 0x20 00001046: PUSH0 00001047: MLOAD 00001048: PUSH1 0x20 0000104a: PUSH2 0x2915 0000104d: PUSH0 0000104e: CODECOPY 0000104f: PUSH0 00001050: MLOAD 00001051: SWAP1 00001052: PUSH0 00001053: MSTORE 00001054: SLOAD 00001055: PUSH1 0x40 00001057: MLOAD 00001058: SWAP1 00001059: DUP2 0000105a: MSTORE 0000105b: RETURN 0000105c: JUMPDEST 0000105d: CALLVALUE 0000105e: PUSH2 0x0339 00001061: JUMPI 00001062: PUSH1 0x20 00001064: CALLDATASIZE 00001065: PUSH1 0x03 00001067: NOT 00001068: ADD 00001069: SLT 0000106a: PUSH2 0x0339 0000106d: JUMPI 0000106e: PUSH1 0x04 00001070: CALLDATALOAD 00001071: PUSH8 0xffffffffffffffff 0000107a: DUP2 0000107b: GT 0000107c: PUSH2 0x0339 0000107f: JUMPI 00001080: CALLDATASIZE 00001081: PUSH1 0x23 00001083: DUP3 00001084: ADD 00001085: SLT 00001086: ISZERO 00001087: PUSH2 0x0339 0000108a: JUMPI 0000108b: DUP1 0000108c: PUSH1 0x04 0000108e: ADD 0000108f: CALLDATALOAD 00001090: PUSH8 0xffffffffffffffff 00001099: DUP2 0000109a: GT 0000109b: PUSH2 0x0339 0000109e: JUMPI 0000109f: CALLDATASIZE 000010a0: PUSH1 0x24 000010a2: DUP3 000010a3: PUSH1 0x05 000010a5: SHL 000010a6: DUP5 000010a7: ADD 000010a8: ADD 000010a9: GT 000010aa: PUSH2 0x0339 000010ad: JUMPI 000010ae: PUSH1 0x24 000010b0: PUSH2 0x0018 000010b3: SWAP3 000010b4: ADD 000010b5: PUSH2 0x1b23 000010b8: JUMP 000010b9: JUMPDEST 000010ba: CALLVALUE 000010bb: PUSH2 0x0339 000010be: JUMPI 000010bf: PUSH1 0x20 000010c1: CALLDATASIZE 000010c2: PUSH1 0x03 000010c4: NOT 000010c5: ADD 000010c6: SLT 000010c7: PUSH2 0x0339 000010ca: JUMPI 000010cb: PUSH1 0x04 000010cd: CALLDATALOAD 000010ce: PUSH2 0x10d6 000010d1: DUP2 000010d2: PUSH2 0x033d 000010d5: JUMP 000010d6: JUMPDEST 000010d7: PUSH2 0x10de 000010da: PUSH2 0x1b5e 000010dd: JUMP 000010de: JUMPDEST 000010df: PUSH1 0x01 000010e1: PUSH1 0x01 000010e3: PUSH1 0xa0 000010e5: SHL 000010e6: SUB 000010e7: AND 000010e8: DUP1 000010e9: ISZERO 000010ea: PUSH2 0x03e6 000010ed: JUMPI 000010ee: PUSH1 0x01 000010f0: PUSH1 0x01 000010f2: PUSH1 0x60 000010f4: SHL 000010f5: SUB 000010f6: PUSH1 0xa0 000010f8: SHL 000010f9: PUSH0 000010fa: MLOAD 000010fb: PUSH1 0x20 000010fd: PUSH2 0x2935 00001100: PUSH0 00001101: CODECOPY 00001102: PUSH0 00001103: MLOAD 00001104: SWAP1 00001105: PUSH0 00001106: MSTORE 00001107: SLOAD 00001108: AND 00001109: OR 0000110a: PUSH0 0000110b: MLOAD 0000110c: PUSH1 0x20 0000110e: PUSH2 0x2935 00001111: PUSH0 00001112: CODECOPY 00001113: PUSH0 00001114: MLOAD 00001115: SWAP1 00001116: PUSH0 00001117: MSTORE 00001118: SSTORE 00001119: PUSH0 0000111a: DUP1 0000111b: RETURN 0000111c: JUMPDEST 0000111d: CALLVALUE 0000111e: PUSH2 0x0339 00001121: JUMPI 00001122: PUSH1 0x40 00001124: CALLDATASIZE 00001125: PUSH1 0x03 00001127: NOT 00001128: ADD 00001129: SLT 0000112a: PUSH2 0x0339 0000112d: JUMPI 0000112e: PUSH1 0x20 00001130: PUSH2 0x1154 00001133: PUSH1 0x04 00001135: CALLDATALOAD 00001136: PUSH1 0x24 00001138: CALLDATALOAD 00001139: SWAP1 0000113a: PUSH0 0000113b: MSTORE 0000113c: PUSH0 0000113d: MLOAD 0000113e: PUSH1 0x20 00001140: PUSH2 0x28f5 00001143: PUSH0 00001144: CODECOPY 00001145: PUSH0 00001146: MLOAD 00001147: SWAP1 00001148: PUSH0 00001149: MSTORE 0000114a: DUP4 0000114b: MSTORE 0000114c: PUSH1 0x40 0000114e: PUSH0 0000114f: KECCAK256 00001150: PUSH2 0x26e2 00001153: JUMP 00001154: JUMPDEST 00001155: SWAP1 00001156: SLOAD 00001157: PUSH1 0x40 00001159: MLOAD 0000115a: PUSH1 0x03 0000115c: SWAP3 0000115d: SWAP1 0000115e: SWAP3 0000115f: SHL 00001160: SHR 00001161: PUSH1 0x01 00001163: PUSH1 0x01 00001165: PUSH1 0xa0 00001167: SHL 00001168: SUB 00001169: AND 0000116a: DUP2 0000116b: MSTORE 0000116c: RETURN 0000116d: JUMPDEST 0000116e: CALLVALUE 0000116f: PUSH2 0x0339 00001172: JUMPI 00001173: PUSH1 0x40 00001175: CALLDATASIZE 00001176: PUSH1 0x03 00001178: NOT 00001179: ADD 0000117a: SLT 0000117b: PUSH2 0x0339 0000117e: JUMPI 0000117f: PUSH1 0x20 00001181: PUSH1 0xff 00001183: PUSH2 0x11bf 00001186: PUSH1 0x24 00001188: CALLDATALOAD 00001189: PUSH1 0x04 0000118b: CALLDATALOAD 0000118c: PUSH2 0x1194 0000118f: DUP3 00001190: PUSH2 0x033d 00001193: JUMP 00001194: JUMPDEST 00001195: PUSH0 00001196: MSTORE 00001197: PUSH0 00001198: MLOAD 00001199: PUSH1 0x20 0000119b: PUSH2 0x2995 0000119e: PUSH0 0000119f: CODECOPY 000011a0: PUSH0 000011a1: MLOAD 000011a2: SWAP1 000011a3: PUSH0 000011a4: MSTORE 000011a5: DUP5 000011a6: MSTORE 000011a7: PUSH1 0x40 000011a9: PUSH0 000011aa: KECCAK256 000011ab: SWAP1 000011ac: PUSH1 0x01 000011ae: DUP1 000011af: PUSH1 0xa0 000011b1: SHL 000011b2: SUB 000011b3: AND 000011b4: PUSH0 000011b5: MSTORE 000011b6: PUSH1 0x20 000011b8: MSTORE 000011b9: PUSH1 0x40 000011bb: PUSH0 000011bc: KECCAK256 000011bd: SWAP1 000011be: JUMP 000011bf: JUMPDEST 000011c0: SLOAD 000011c1: AND 000011c2: PUSH1 0x40 000011c4: MLOAD 000011c5: SWAP1 000011c6: ISZERO 000011c7: ISZERO 000011c8: DUP2 000011c9: MSTORE 000011ca: RETURN 000011cb: JUMPDEST 000011cc: CALLVALUE 000011cd: PUSH2 0x0339 000011d0: JUMPI 000011d1: PUSH1 0x20 000011d3: CALLDATASIZE 000011d4: PUSH1 0x03 000011d6: NOT 000011d7: ADD 000011d8: SLT 000011d9: PUSH2 0x0339 000011dc: JUMPI 000011dd: PUSH1 0x20 000011df: PUSH2 0x1220 000011e2: PUSH1 0x04 000011e4: CALLDATALOAD 000011e5: PUSH1 0xff 000011e7: PUSH1 0x01 000011e9: SWAP2 000011ea: DUP1 000011eb: PUSH1 0x08 000011ed: SHR 000011ee: PUSH0 000011ef: MSTORE 000011f0: PUSH32 0x16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d 00001211: PUSH1 0x20 00001213: MSTORE 00001214: AND 00001215: SHL 00001216: PUSH1 0x40 00001218: PUSH0 00001219: KECCAK256 0000121a: SLOAD 0000121b: AND 0000121c: ISZERO 0000121d: ISZERO 0000121e: SWAP1 0000121f: JUMP 00001220: JUMPDEST 00001221: PUSH1 0x40 00001223: MLOAD 00001224: SWAP1 00001225: ISZERO 00001226: ISZERO 00001227: DUP2 00001228: MSTORE 00001229: RETURN 0000122a: JUMPDEST 0000122b: CALLVALUE 0000122c: PUSH2 0x0339 0000122f: JUMPI 00001230: PUSH0 00001231: CALLDATASIZE 00001232: PUSH1 0x03 00001234: NOT 00001235: ADD 00001236: SLT 00001237: PUSH2 0x0339 0000123a: JUMPI 0000123b: PUSH0 0000123c: MLOAD 0000123d: PUSH1 0x20 0000123f: PUSH2 0x2a35 00001242: PUSH0 00001243: CODECOPY 00001244: PUSH0 00001245: MLOAD 00001246: SWAP1 00001247: PUSH0 00001248: MSTORE 00001249: SLOAD 0000124a: PUSH1 0x40 0000124c: MLOAD 0000124d: PUSH1 0x01 0000124f: PUSH1 0x01 00001251: PUSH1 0xa0 00001253: SHL 00001254: SUB 00001255: SWAP1 00001256: SWAP2 00001257: AND 00001258: DUP2 00001259: MSTORE 0000125a: PUSH1 0x20 0000125c: SWAP1 0000125d: RETURN 0000125e: JUMPDEST 0000125f: CALLVALUE 00001260: PUSH2 0x0339 00001263: JUMPI 00001264: PUSH0 00001265: CALLDATASIZE 00001266: PUSH1 0x03 00001268: NOT 00001269: ADD 0000126a: SLT 0000126b: PUSH2 0x0339 0000126e: JUMPI 0000126f: PUSH1 0x20 00001271: PUSH1 0x40 00001273: MLOAD 00001274: PUSH32 0x523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c 00001295: DUP2 00001296: MSTORE 00001297: RETURN 00001298: JUMPDEST 00001299: CALLVALUE 0000129a: PUSH2 0x0339 0000129d: JUMPI 0000129e: PUSH0 0000129f: CALLDATASIZE 000012a0: PUSH1 0x03 000012a2: NOT 000012a3: ADD 000012a4: SLT 000012a5: PUSH2 0x0339 000012a8: JUMPI 000012a9: PUSH1 0x20 000012ab: PUSH1 0x40 000012ad: MLOAD 000012ae: PUSH0 000012af: DUP2 000012b0: MSTORE 000012b1: RETURN 000012b2: JUMPDEST 000012b3: PUSH1 0x20 000012b5: PUSH1 0x40 000012b7: DUP2 000012b8: DUP4 000012b9: ADD 000012ba: SWAP3 000012bb: DUP3 000012bc: DUP2 000012bd: MSTORE 000012be: DUP5 000012bf: MLOAD 000012c0: DUP1 000012c1: SWAP5 000012c2: MSTORE 000012c3: ADD 000012c4: SWAP3 000012c5: ADD 000012c6: SWAP1 000012c7: PUSH0 000012c8: JUMPDEST 000012c9: DUP2 000012ca: DUP2 000012cb: LT 000012cc: PUSH2 0x12d5 000012cf: JUMPI 000012d0: POP 000012d1: POP 000012d2: POP 000012d3: SWAP1 000012d4: JUMP 000012d5: JUMPDEST 000012d6: DUP3 000012d7: MLOAD 000012d8: PUSH1 0x01 000012da: PUSH1 0x01 000012dc: PUSH1 0xa0 000012de: SHL 000012df: SUB 000012e0: AND 000012e1: DUP5 000012e2: MSTORE 000012e3: PUSH1 0x20 000012e5: SWAP4 000012e6: DUP5 000012e7: ADD 000012e8: SWAP4 000012e9: SWAP1 000012ea: SWAP3 000012eb: ADD 000012ec: SWAP2 000012ed: PUSH1 0x01 000012ef: ADD 000012f0: PUSH2 0x12c8 000012f3: JUMP 000012f4: JUMPDEST 000012f5: CALLVALUE 000012f6: PUSH2 0x0339 000012f9: JUMPI 000012fa: PUSH1 0x20 000012fc: CALLDATASIZE 000012fd: PUSH1 0x03 000012ff: NOT 00001300: ADD 00001301: SLT 00001302: PUSH2 0x0339 00001305: JUMPI 00001306: PUSH1 0x04 00001308: CALLDATALOAD 00001309: PUSH0 0000130a: MSTORE 0000130b: PUSH0 0000130c: MLOAD 0000130d: PUSH1 0x20 0000130f: PUSH2 0x28f5 00001312: PUSH0 00001313: CODECOPY 00001314: PUSH0 00001315: MLOAD 00001316: SWAP1 00001317: PUSH0 00001318: MSTORE 00001319: PUSH1 0x20 0000131b: MSTORE 0000131c: PUSH1 0x40 0000131e: PUSH0 0000131f: KECCAK256 00001320: PUSH1 0x40 00001322: MLOAD 00001323: SWAP1 00001324: DUP2 00001325: PUSH1 0x20 00001327: DUP3 00001328: SLOAD 00001329: SWAP2 0000132a: DUP3 0000132b: DUP2 0000132c: MSTORE 0000132d: ADD 0000132e: SWAP2 0000132f: PUSH0 00001330: MSTORE 00001331: PUSH1 0x20 00001333: PUSH0 00001334: KECCAK256 00001335: SWAP1 00001336: PUSH0 00001337: JUMPDEST 00001338: DUP2 00001339: DUP2 0000133a: LT 0000133b: PUSH2 0x135e 0000133e: JUMPI 0000133f: PUSH2 0x135a 00001342: DUP6 00001343: PUSH2 0x134e 00001346: DUP2 00001347: DUP8 00001348: SUB 00001349: DUP3 0000134a: PUSH2 0x0a6c 0000134d: JUMP 0000134e: JUMPDEST 0000134f: PUSH1 0x40 00001351: MLOAD 00001352: SWAP2 00001353: DUP3 00001354: SWAP2 00001355: DUP3 00001356: PUSH2 0x12b2 00001359: JUMP 0000135a: JUMPDEST 0000135b: SUB 0000135c: SWAP1 0000135d: RETURN 0000135e: JUMPDEST 0000135f: DUP3 00001360: SLOAD 00001361: DUP5 00001362: MSTORE 00001363: PUSH1 0x20 00001365: SWAP1 00001366: SWAP4 00001367: ADD 00001368: SWAP3 00001369: PUSH1 0x01 0000136b: SWAP3 0000136c: DUP4 0000136d: ADD 0000136e: SWAP3 0000136f: ADD 00001370: PUSH2 0x1337 00001373: JUMP 00001374: JUMPDEST 00001375: CALLVALUE 00001376: PUSH2 0x0339 00001379: JUMPI 0000137a: PUSH0 0000137b: CALLDATASIZE 0000137c: PUSH1 0x03 0000137e: NOT 0000137f: ADD 00001380: SLT 00001381: PUSH2 0x0339 00001384: JUMPI 00001385: PUSH0 00001386: MLOAD 00001387: PUSH1 0x20 00001389: PUSH2 0x28f5 0000138c: PUSH0 0000138d: CODECOPY 0000138e: PUSH0 0000138f: MLOAD 00001390: SWAP1 00001391: PUSH0 00001392: MSTORE 00001393: PUSH1 0x20 00001395: SWAP1 00001396: DUP2 00001397: MSTORE 00001398: PUSH1 0x40 0000139a: MLOAD 0000139b: PUSH32 0x7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e07 000013bc: DUP1 000013bd: SLOAD 000013be: DUP1 000013bf: DUP4 000013c0: MSTORE 000013c1: PUSH0 000013c2: SWAP2 000013c3: DUP3 000013c4: MSTORE 000013c5: SWAP2 000013c6: SWAP3 000013c7: DUP4 000013c8: ADD 000013c9: SWAP2 000013ca: PUSH32 0x45560313361b5a38ee0e8c7f279a68bf043f9cb947ebdcce8948183ec1f0e38c 000013eb: SWAP2 000013ec: JUMPDEST 000013ed: DUP2 000013ee: DUP2 000013ef: LT 000013f0: PUSH2 0x1403 000013f3: JUMPI 000013f4: PUSH2 0x135a 000013f7: DUP6 000013f8: PUSH2 0x134e 000013fb: DUP2 000013fc: DUP8 000013fd: SUB 000013fe: DUP3 000013ff: PUSH2 0x0a6c 00001402: JUMP 00001403: JUMPDEST 00001404: DUP3 00001405: SLOAD 00001406: DUP5 00001407: MSTORE 00001408: PUSH1 0x20 0000140a: SWAP1 0000140b: SWAP4 0000140c: ADD 0000140d: SWAP3 0000140e: PUSH1 0x01 00001410: SWAP3 00001411: DUP4 00001412: ADD 00001413: SWAP3 00001414: ADD 00001415: PUSH2 0x13ec 00001418: JUMP 00001419: JUMPDEST 0000141a: CALLVALUE 0000141b: PUSH2 0x0339 0000141e: JUMPI 0000141f: PUSH0 00001420: CALLDATASIZE 00001421: PUSH1 0x03 00001423: NOT 00001424: ADD 00001425: SLT 00001426: PUSH2 0x0339 00001429: JUMPI 0000142a: PUSH1 0x40 0000142c: DUP1 0000142d: MLOAD 0000142e: SWAP1 0000142f: PUSH2 0x1438 00001432: DUP2 00001433: DUP4 00001434: PUSH2 0x0a6c 00001437: JUMP 00001438: JUMPDEST 00001439: PUSH1 0x05 0000143b: DUP3 0000143c: MSTORE 0000143d: PUSH1 0x20 0000143f: DUP3 00001440: ADD 00001441: SWAP2 00001442: PUSH5 0x0352e302e3 00001448: PUSH1 0xdc 0000144a: SHL 0000144b: DUP4 0000144c: MSTORE 0000144d: DUP2 0000144e: MLOAD 0000144f: SWAP3 00001450: DUP4 00001451: SWAP2 00001452: PUSH1 0x20 00001454: DUP4 00001455: MSTORE 00001456: MLOAD 00001457: DUP1 00001458: SWAP2 00001459: DUP2 0000145a: PUSH1 0x20 0000145c: DUP6 0000145d: ADD 0000145e: MSTORE 0000145f: DUP5 00001460: DUP5 00001461: ADD 00001462: MCOPY 00001463: PUSH0 00001464: DUP3 00001465: DUP3 00001466: ADD 00001467: DUP5 00001468: ADD 00001469: MSTORE 0000146a: PUSH1 0x1f 0000146c: ADD 0000146d: PUSH1 0x1f 0000146f: NOT 00001470: AND 00001471: DUP2 00001472: ADD 00001473: SUB 00001474: ADD 00001475: SWAP1 00001476: RETURN 00001477: JUMPDEST 00001478: CALLVALUE 00001479: PUSH2 0x0339 0000147c: JUMPI 0000147d: PUSH0 0000147e: CALLDATASIZE 0000147f: PUSH1 0x03 00001481: NOT 00001482: ADD 00001483: SLT 00001484: PUSH2 0x0339 00001487: JUMPI 00001488: PUSH0 00001489: MLOAD 0000148a: PUSH1 0x20 0000148c: PUSH2 0x28f5 0000148f: PUSH0 00001490: CODECOPY 00001491: PUSH0 00001492: MLOAD 00001493: SWAP1 00001494: PUSH0 00001495: MSTORE 00001496: PUSH1 0x20 00001498: SWAP1 00001499: DUP2 0000149a: MSTORE 0000149b: PUSH1 0x40 0000149d: MLOAD 0000149e: PUSH32 0x615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44 000014bf: DUP1 000014c0: SLOAD 000014c1: DUP1 000014c2: DUP4 000014c3: MSTORE 000014c4: PUSH0 000014c5: SWAP2 000014c6: DUP3 000014c7: MSTORE 000014c8: SWAP2 000014c9: SWAP3 000014ca: DUP4 000014cb: ADD 000014cc: SWAP2 000014cd: PUSH32 0x61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca 000014ee: SWAP2 000014ef: JUMPDEST 000014f0: DUP2 000014f1: DUP2 000014f2: LT 000014f3: PUSH2 0x1506 000014f6: JUMPI 000014f7: PUSH2 0x135a 000014fa: DUP6 000014fb: PUSH2 0x134e 000014fe: DUP2 000014ff: DUP8 00001500: SUB 00001501: DUP3 00001502: PUSH2 0x0a6c 00001505: JUMP 00001506: JUMPDEST 00001507: DUP3 00001508: SLOAD 00001509: DUP5 0000150a: MSTORE 0000150b: PUSH1 0x20 0000150d: SWAP1 0000150e: SWAP4 0000150f: ADD 00001510: SWAP3 00001511: PUSH1 0x01 00001513: SWAP3 00001514: DUP4 00001515: ADD 00001516: SWAP3 00001517: ADD 00001518: PUSH2 0x14ef 0000151b: JUMP 0000151c: JUMPDEST 0000151d: CALLVALUE 0000151e: PUSH2 0x0339 00001521: JUMPI 00001522: PUSH0 00001523: CALLDATASIZE 00001524: PUSH1 0x03 00001526: NOT 00001527: ADD 00001528: SLT 00001529: PUSH2 0x0339 0000152c: JUMPI 0000152d: PUSH0 0000152e: MLOAD 0000152f: PUSH1 0x20 00001531: PUSH2 0x29f5 00001534: PUSH0 00001535: CODECOPY 00001536: PUSH0 00001537: MLOAD 00001538: SWAP1 00001539: PUSH0 0000153a: MSTORE 0000153b: SLOAD 0000153c: PUSH1 0x40 0000153e: MLOAD 0000153f: PUSH1 0x01 00001541: PUSH1 0x01 00001543: PUSH1 0xa0 00001545: SHL 00001546: SUB 00001547: SWAP1 00001548: SWAP2 00001549: AND 0000154a: DUP2 0000154b: MSTORE 0000154c: PUSH1 0x20 0000154e: SWAP1 0000154f: RETURN 00001550: JUMPDEST 00001551: CALLVALUE 00001552: PUSH2 0x0339 00001555: JUMPI 00001556: PUSH1 0x20 00001558: CALLDATASIZE 00001559: PUSH1 0x03 0000155b: NOT 0000155c: ADD 0000155d: SLT 0000155e: PUSH2 0x0339 00001561: JUMPI 00001562: PUSH1 0x04 00001564: CALLDATALOAD 00001565: PUSH2 0x156d 00001568: DUP2 00001569: PUSH2 0x033d 0000156c: JUMP 0000156d: JUMPDEST 0000156e: PUSH2 0x1575 00001571: PUSH2 0x1b5e 00001574: JUMP 00001575: JUMPDEST 00001576: PUSH1 0x01 00001578: PUSH1 0x01 0000157a: PUSH1 0xa0 0000157c: SHL 0000157d: SUB 0000157e: AND 0000157f: DUP1 00001580: ISZERO 00001581: PUSH2 0x03e6 00001584: JUMPI 00001585: PUSH1 0x01 00001587: PUSH1 0x01 00001589: PUSH1 0x60 0000158b: SHL 0000158c: SUB 0000158d: PUSH1 0xa0 0000158f: SHL 00001590: PUSH0 00001591: MLOAD 00001592: PUSH1 0x20 00001594: PUSH2 0x29f5 00001597: PUSH0 00001598: CODECOPY 00001599: PUSH0 0000159a: MLOAD 0000159b: SWAP1 0000159c: PUSH0 0000159d: MSTORE 0000159e: SLOAD 0000159f: AND 000015a0: OR 000015a1: PUSH0 000015a2: MLOAD 000015a3: PUSH1 0x20 000015a5: PUSH2 0x29f5 000015a8: PUSH0 000015a9: CODECOPY 000015aa: PUSH0 000015ab: MLOAD 000015ac: SWAP1 000015ad: PUSH0 000015ae: MSTORE 000015af: SSTORE 000015b0: PUSH0 000015b1: DUP1 000015b2: RETURN 000015b3: JUMPDEST 000015b4: CALLVALUE 000015b5: PUSH2 0x0339 000015b8: JUMPI 000015b9: PUSH0 000015ba: CALLDATASIZE 000015bb: PUSH1 0x03 000015bd: NOT 000015be: ADD 000015bf: SLT 000015c0: PUSH2 0x0339 000015c3: JUMPI 000015c4: PUSH0 000015c5: MLOAD 000015c6: PUSH1 0x20 000015c8: PUSH2 0x28f5 000015cb: PUSH0 000015cc: CODECOPY 000015cd: PUSH0 000015ce: MLOAD 000015cf: SWAP1 000015d0: PUSH0 000015d1: MSTORE 000015d2: PUSH1 0x20 000015d4: SWAP1 000015d5: DUP2 000015d6: MSTORE 000015d7: PUSH1 0x40 000015d9: MLOAD 000015da: PUSH32 0xcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c7450 000015fb: DUP1 000015fc: SLOAD 000015fd: DUP1 000015fe: DUP4 000015ff: MSTORE 00001600: PUSH0 00001601: SWAP2 00001602: DUP3 00001603: MSTORE 00001604: SWAP2 00001605: SWAP3 00001606: DUP4 00001607: ADD 00001608: SWAP2 00001609: PUSH32 0x6235272e13bbfead3f9c15da48c9b51dac727bff8adcf3c32351386f89222b06 0000162a: SWAP2 0000162b: JUMPDEST 0000162c: DUP2 0000162d: DUP2 0000162e: LT 0000162f: PUSH2 0x1642 00001632: JUMPI 00001633: PUSH2 0x135a 00001636: DUP6 00001637: PUSH2 0x134e 0000163a: DUP2 0000163b: DUP8 0000163c: SUB 0000163d: DUP3 0000163e: PUSH2 0x0a6c 00001641: JUMP 00001642: JUMPDEST 00001643: DUP3 00001644: SLOAD 00001645: DUP5 00001646: MSTORE 00001647: PUSH1 0x20 00001649: SWAP1 0000164a: SWAP4 0000164b: ADD 0000164c: SWAP3 0000164d: PUSH1 0x01 0000164f: SWAP3 00001650: DUP4 00001651: ADD 00001652: SWAP3 00001653: ADD 00001654: PUSH2 0x162b 00001657: JUMP 00001658: JUMPDEST 00001659: CALLVALUE 0000165a: PUSH2 0x0339 0000165d: JUMPI 0000165e: PUSH1 0x20 00001660: CALLDATASIZE 00001661: PUSH1 0x03 00001663: NOT 00001664: ADD 00001665: SLT 00001666: PUSH2 0x0339 00001669: JUMPI 0000166a: PUSH1 0x04 0000166c: CALLDATALOAD 0000166d: PUSH0 0000166e: MSTORE 0000166f: PUSH0 00001670: MLOAD 00001671: PUSH1 0x20 00001673: PUSH2 0x28f5 00001676: PUSH0 00001677: CODECOPY 00001678: PUSH0 00001679: MLOAD 0000167a: SWAP1 0000167b: PUSH0 0000167c: MSTORE 0000167d: PUSH1 0x20 0000167f: MSTORE 00001680: PUSH1 0x20 00001682: PUSH1 0x40 00001684: PUSH0 00001685: KECCAK256 00001686: SLOAD 00001687: PUSH1 0x40 00001689: MLOAD 0000168a: SWAP1 0000168b: DUP2 0000168c: MSTORE 0000168d: RETURN 0000168e: JUMPDEST 0000168f: CALLVALUE 00001690: PUSH2 0x0339 00001693: JUMPI 00001694: PUSH0 00001695: CALLDATASIZE 00001696: PUSH1 0x03 00001698: NOT 00001699: ADD 0000169a: SLT 0000169b: PUSH2 0x0339 0000169e: JUMPI 0000169f: PUSH1 0x20 000016a1: PUSH1 0x40 000016a3: MLOAD 000016a4: PUSH0 000016a5: MLOAD 000016a6: PUSH1 0x20 000016a8: PUSH2 0x2975 000016ab: PUSH0 000016ac: CODECOPY 000016ad: PUSH0 000016ae: MLOAD 000016af: SWAP1 000016b0: PUSH0 000016b1: MSTORE 000016b2: DUP2 000016b3: MSTORE 000016b4: RETURN 000016b5: JUMPDEST 000016b6: CALLVALUE 000016b7: PUSH2 0x0339 000016ba: JUMPI 000016bb: PUSH1 0x40 000016bd: CALLDATASIZE 000016be: PUSH1 0x03 000016c0: NOT 000016c1: ADD 000016c2: SLT 000016c3: PUSH2 0x0339 000016c6: JUMPI 000016c7: PUSH1 0x04 000016c9: CALLDATALOAD 000016ca: PUSH1 0x24 000016cc: CALLDATALOAD 000016cd: PUSH2 0x16d5 000016d0: DUP2 000016d1: PUSH2 0x033d 000016d4: JUMP 000016d5: JUMPDEST 000016d6: PUSH2 0x16dd 000016d9: PUSH2 0x1b5e 000016dc: JUMP 000016dd: JUMPDEST 000016de: DUP2 000016df: ISZERO 000016e0: PUSH2 0x07f0 000016e3: JUMPI 000016e4: PUSH2 0x0018 000016e7: SWAP2 000016e8: PUSH2 0x2299 000016eb: JUMP 000016ec: JUMPDEST 000016ed: CALLVALUE 000016ee: PUSH2 0x0339 000016f1: JUMPI 000016f2: PUSH0 000016f3: CALLDATASIZE 000016f4: PUSH1 0x03 000016f6: NOT 000016f7: ADD 000016f8: SLT 000016f9: PUSH2 0x0339 000016fc: JUMPI 000016fd: PUSH1 0x20 000016ff: PUSH1 0x40 00001701: MLOAD 00001702: PUSH0 00001703: MLOAD 00001704: PUSH1 0x20 00001706: PUSH2 0x28d5 00001709: PUSH0 0000170a: CODECOPY 0000170b: PUSH0 0000170c: MLOAD 0000170d: SWAP1 0000170e: PUSH0 0000170f: MSTORE 00001710: DUP2 00001711: MSTORE 00001712: RETURN 00001713: JUMPDEST 00001714: CALLVALUE 00001715: PUSH2 0x0339 00001718: JUMPI 00001719: PUSH0 0000171a: CALLDATASIZE 0000171b: PUSH1 0x03 0000171d: NOT 0000171e: ADD 0000171f: SLT 00001720: PUSH2 0x0339 00001723: JUMPI 00001724: PUSH0 00001725: MLOAD 00001726: PUSH1 0x20 00001728: PUSH2 0x28f5 0000172b: PUSH0 0000172c: CODECOPY 0000172d: PUSH0 0000172e: MLOAD 0000172f: SWAP1 00001730: PUSH0 00001731: MSTORE 00001732: PUSH1 0x20 00001734: SWAP1 00001735: DUP2 00001736: MSTORE 00001737: PUSH1 0x40 00001739: MLOAD 0000173a: PUSH32 0x019d3d0c2386ec3a05bb7001d2bbf079e6fe7bfbe6e95c923cb544f16e2385d9 0000175b: DUP1 0000175c: SLOAD 0000175d: DUP1 0000175e: DUP4 0000175f: MSTORE 00001760: PUSH0 00001761: SWAP2 00001762: DUP3 00001763: MSTORE 00001764: SWAP2 00001765: SWAP3 00001766: DUP4 00001767: ADD 00001768: SWAP2 00001769: PUSH32 0x4d49d3f1622cef4a4245a42dc22c778f6b2708ebc8f710caa71f99728be94f24 0000178a: SWAP2 0000178b: JUMPDEST 0000178c: DUP2 0000178d: DUP2 0000178e: LT 0000178f: PUSH2 0x17a2 00001792: JUMPI 00001793: PUSH2 0x135a 00001796: DUP6 00001797: PUSH2 0x134e 0000179a: DUP2 0000179b: DUP8 0000179c: SUB 0000179d: DUP3 0000179e: PUSH2 0x0a6c 000017a1: JUMP 000017a2: JUMPDEST 000017a3: DUP3 000017a4: SLOAD 000017a5: DUP5 000017a6: MSTORE 000017a7: PUSH1 0x20 000017a9: SWAP1 000017aa: SWAP4 000017ab: ADD 000017ac: SWAP3 000017ad: PUSH1 0x01 000017af: SWAP3 000017b0: DUP4 000017b1: ADD 000017b2: SWAP3 000017b3: ADD 000017b4: PUSH2 0x178b 000017b7: JUMP 000017b8: JUMPDEST 000017b9: CALLVALUE 000017ba: PUSH2 0x0339 000017bd: JUMPI 000017be: PUSH1 0x20 000017c0: CALLDATASIZE 000017c1: PUSH1 0x03 000017c3: NOT 000017c4: ADD 000017c5: SLT 000017c6: PUSH2 0x0339 000017c9: JUMPI 000017ca: PUSH1 0x04 000017cc: CALLDATALOAD 000017cd: PUSH2 0x17d5 000017d0: DUP2 000017d1: PUSH2 0x033d 000017d4: JUMP 000017d5: JUMPDEST 000017d6: PUSH2 0x17dd 000017d9: PUSH2 0x1c29 000017dc: JUMP 000017dd: JUMPDEST 000017de: PUSH1 0x01 000017e0: PUSH1 0x01 000017e2: PUSH1 0xa0 000017e4: SHL 000017e5: SUB 000017e6: DUP2 000017e7: AND 000017e8: DUP1 000017e9: ISZERO 000017ea: PUSH2 0x03e6 000017ed: JUMPI 000017ee: CALLER 000017ef: EQ 000017f0: PUSH2 0x1806 000017f3: JUMPI 000017f4: PUSH2 0x17fc 000017f7: SWAP1 000017f8: PUSH2 0x20b7 000017fb: JUMP 000017fc: JUMPDEST 000017fd: POP 000017fe: PUSH2 0x0018 00001801: CALLER 00001802: PUSH2 0x223e 00001805: JUMP 00001806: JUMPDEST 00001807: PUSH4 0x0f978795 0000180c: PUSH1 0xe1 0000180e: SHL 0000180f: PUSH0 00001810: MSTORE 00001811: PUSH1 0x04 00001813: PUSH0 00001814: REVERT 00001815: JUMPDEST 00001816: CALLVALUE 00001817: PUSH2 0x0339 0000181a: JUMPI 0000181b: PUSH0 0000181c: CALLDATASIZE 0000181d: PUSH1 0x03 0000181f: NOT 00001820: ADD 00001821: SLT 00001822: PUSH2 0x0339 00001825: JUMPI 00001826: PUSH1 0x20 00001828: PUSH1 0x40 0000182a: MLOAD 0000182b: PUSH1 0x02 0000182d: DUP2 0000182e: MSTORE 0000182f: RETURN 00001830: JUMPDEST 00001831: PUSH1 0x01 00001833: PUSH1 0x01 00001835: PUSH1 0xa0 00001837: SHL 00001838: SUB 00001839: AND 0000183a: PUSH0 0000183b: SWAP1 0000183c: DUP2 0000183d: MSTORE 0000183e: PUSH32 0x16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c61 0000185f: PUSH1 0x20 00001861: MSTORE 00001862: PUSH1 0x40 00001864: SWAP1 00001865: KECCAK256 00001866: SWAP1 00001867: JUMP 00001868: JUMPDEST 00001869: SWAP2 0000186a: PUSH2 0x1881 0000186d: SWAP2 0000186e: DUP4 0000186f: SLOAD 00001870: SWAP1 00001871: PUSH1 0x03 00001873: SHL 00001874: SWAP2 00001875: DUP3 00001876: SHL 00001877: SWAP2 00001878: PUSH0 00001879: NOT 0000187a: SWAP1 0000187b: SHL 0000187c: NOT 0000187d: AND 0000187e: OR 0000187f: SWAP1 00001880: JUMP 00001881: JUMPDEST 00001882: SWAP1 00001883: SSTORE 00001884: JUMP 00001885: JUMPDEST 00001886: PUSH1 0x40 00001888: MLOAD 00001889: RETURNDATASIZE 0000188a: PUSH0 0000188b: DUP3 0000188c: RETURNDATACOPY 0000188d: RETURNDATASIZE 0000188e: SWAP1 0000188f: REVERT 00001890: JUMPDEST 00001891: PUSH0 00001892: NOT 00001893: DUP2 00001894: ADD 00001895: SWAP2 00001896: SWAP1 00001897: DUP3 00001898: GT 00001899: PUSH2 0x189e 0000189c: JUMPI 0000189d: JUMP 0000189e: JUMPDEST 0000189f: PUSH4 0x4e487b71 000018a4: PUSH1 0xe0 000018a6: SHL 000018a7: PUSH0 000018a8: MSTORE 000018a9: PUSH1 0x11 000018ab: PUSH1 0x04 000018ad: MSTORE 000018ae: PUSH1 0x24 000018b0: PUSH0 000018b1: REVERT 000018b2: JUMPDEST 000018b3: SWAP2 000018b4: SWAP1 000018b5: DUP3 000018b6: SUB 000018b7: SWAP2 000018b8: DUP3 000018b9: GT 000018ba: PUSH2 0x189e 000018bd: JUMPI 000018be: JUMP 000018bf: JUMPDEST 000018c0: SWAP8 000018c1: SWAP1 000018c2: SWAP4 000018c3: SWAP5 000018c4: SWAP10 000018c5: SWAP9 000018c6: SWAP2 000018c7: SWAP6 000018c8: SWAP7 000018c9: SWAP3 000018ca: SWAP7 000018cb: PUSH2 0x18d2 000018ce: PUSH2 0x1c78 000018d1: JUMP 000018d2: JUMPDEST 000018d3: PUSH2 0x18da 000018d6: PUSH2 0x1cd4 000018d9: JUMP 000018da: JUMPDEST 000018db: PUSH2 0x18e2 000018de: PUSH2 0x1d0c 000018e1: JUMP 000018e2: JUMPDEST 000018e3: PUSH2 0x18f5 000018e6: PUSH2 0x18ee 000018e9: DUP8 000018ea: PUSH2 0x1830 000018ed: JUMP 000018ee: JUMPDEST 000018ef: SLOAD 000018f0: PUSH1 0xff 000018f2: AND 000018f3: SWAP1 000018f4: JUMP 000018f5: JUMPDEST 000018f6: ISZERO 000018f7: PUSH2 0x1a28 000018fa: JUMPI 000018fb: PUSH0 000018fc: MLOAD 000018fd: PUSH1 0x20 000018ff: PUSH2 0x2935 00001902: PUSH0 00001903: CODECOPY 00001904: PUSH0 00001905: MLOAD 00001906: SWAP1 00001907: PUSH0 00001908: MSTORE 00001909: SLOAD 0000190a: PUSH2 0x191d 0000190d: SWAP1 0000190e: PUSH2 0x0597 00001911: SWAP1 00001912: PUSH1 0x01 00001914: PUSH1 0x01 00001916: PUSH1 0xa0 00001918: SHL 00001919: SUB 0000191a: AND 0000191b: DUP2 0000191c: JUMP 0000191d: JUMPDEST 0000191e: DUP1 0000191f: EXTCODESIZE 00001920: ISZERO 00001921: PUSH2 0x0339 00001924: JUMPI 00001925: PUSH1 0x40 00001927: MLOAD 00001928: PUSH4 0x5d7208c3 0000192d: PUSH1 0xe0 0000192f: SHL 00001930: DUP2 00001931: MSTORE 00001932: PUSH1 0x04 00001934: DUP2 00001935: ADD 00001936: DUP8 00001937: SWAP1 00001938: MSTORE 00001939: PUSH1 0x01 0000193b: PUSH1 0x01 0000193d: PUSH1 0xa0 0000193f: SHL 00001940: SUB 00001941: DUP10 00001942: AND 00001943: PUSH1 0x24 00001945: DUP3 00001946: ADD 00001947: MSTORE 00001948: PUSH1 0x44 0000194a: DUP2 0000194b: ADD 0000194c: DUP11 0000194d: SWAP1 0000194e: MSTORE 0000194f: ADDRESS 00001950: PUSH1 0x64 00001952: DUP3 00001953: ADD 00001954: MSTORE 00001955: PUSH1 0x84 00001957: DUP2 00001958: ADD 00001959: SWAP6 0000195a: SWAP1 0000195b: SWAP6 0000195c: MSTORE 0000195d: PUSH0 0000195e: SWAP1 0000195f: DUP6 00001960: SWAP1 00001961: PUSH1 0xa4 00001963: SWAP1 00001964: DUP3 00001965: SWAP1 00001966: DUP5 00001967: SWAP1 00001968: GAS 00001969: CALL 0000196a: SWAP4 0000196b: DUP5 0000196c: ISZERO 0000196d: PUSH2 0x06da 00001970: JUMPI 00001971: PUSH2 0x1983 00001974: SWAP5 00001975: PUSH2 0x1a14 00001978: JUMPI 00001979: JUMPDEST 0000197a: POP 0000197b: DUP6 0000197c: DUP9 0000197d: DUP9 0000197e: DUP12 0000197f: PUSH2 0x1d51 00001982: JUMP 00001983: JUMPDEST 00001984: SWAP7 00001985: DUP1 00001986: DUP9 00001987: LT 00001988: PUSH2 0x06a9 0000198b: JUMPI 0000198c: POP 0000198d: PUSH0 0000198e: MLOAD 0000198f: PUSH1 0x20 00001991: PUSH2 0x2935 00001994: PUSH0 00001995: CODECOPY 00001996: PUSH0 00001997: MLOAD 00001998: SWAP1 00001999: PUSH0 0000199a: MSTORE 0000199b: SLOAD 0000199c: PUSH1 0x40 0000199e: DUP1 0000199f: MLOAD 000019a0: PUSH1 0x01 000019a2: PUSH1 0x01 000019a4: PUSH1 0xa0 000019a6: SHL 000019a7: SUB 000019a8: SWAP6 000019a9: DUP7 000019aa: AND 000019ab: DUP2 000019ac: MSTORE 000019ad: PUSH1 0x20 000019af: DUP2 000019b0: ADD 000019b1: SWAP7 000019b2: SWAP1 000019b3: SWAP7 000019b4: MSTORE 000019b5: SWAP3 000019b6: DUP5 000019b7: AND 000019b8: SWAP3 000019b9: DUP6 000019ba: ADD 000019bb: SWAP3 000019bc: SWAP1 000019bd: SWAP3 000019be: MSTORE 000019bf: PUSH1 0x60 000019c1: DUP5 000019c2: ADD 000019c3: SWAP7 000019c4: SWAP1 000019c5: SWAP7 000019c6: MSTORE 000019c7: PUSH1 0x80 000019c9: DUP4 000019ca: ADD 000019cb: SWAP6 000019cc: SWAP1 000019cd: SWAP6 000019ce: MSTORE 000019cf: SWAP1 000019d0: SWAP4 000019d1: AND 000019d2: PUSH1 0xa0 000019d4: DUP5 000019d5: ADD 000019d6: MSTORE 000019d7: SWAP1 000019d8: SWAP2 000019d9: PUSH32 0x85054a8fd86129e0a5aea9ca073abf083e3e702f5244a605506568a301376029 000019fa: SWAP1 000019fb: PUSH1 0xc0 000019fd: SWAP1 000019fe: LOG2 000019ff: PUSH2 0x0aa2 00001a02: PUSH1 0x01 00001a04: PUSH0 00001a05: MLOAD 00001a06: PUSH1 0x20 00001a08: PUSH2 0x29d5 00001a0b: PUSH0 00001a0c: CODECOPY 00001a0d: PUSH0 00001a0e: MLOAD 00001a0f: SWAP1 00001a10: PUSH0 00001a11: MSTORE 00001a12: SSTORE 00001a13: JUMP 00001a14: JUMPDEST 00001a15: DUP1 00001a16: PUSH2 0x06ce 00001a19: PUSH0 00001a1a: PUSH2 0x1a22 00001a1d: SWAP4 00001a1e: PUSH2 0x0a6c 00001a21: JUMP 00001a22: JUMPDEST 00001a23: PUSH0 00001a24: PUSH2 0x1979 00001a27: JUMP 00001a28: JUMPDEST 00001a29: PUSH4 0xd334e6bd 00001a2e: PUSH1 0xe0 00001a30: SHL 00001a31: PUSH0 00001a32: MSTORE 00001a33: PUSH1 0x01 00001a35: PUSH1 0x01 00001a37: PUSH1 0xa0 00001a39: SHL 00001a3a: SUB 00001a3b: DUP7 00001a3c: AND 00001a3d: PUSH1 0x04 00001a3f: MSTORE 00001a40: PUSH1 0x24 00001a42: PUSH0 00001a43: REVERT 00001a44: JUMPDEST 00001a45: PUSH1 0x01 00001a47: PUSH1 0x40 00001a49: SHL 00001a4a: PUSH1 0xff 00001a4c: PUSH1 0x40 00001a4e: SHL 00001a4f: NOT 00001a50: PUSH0 00001a51: MLOAD 00001a52: PUSH1 0x20 00001a54: PUSH2 0x2a15 00001a57: PUSH0 00001a58: CODECOPY 00001a59: PUSH0 00001a5a: MLOAD 00001a5b: SWAP1 00001a5c: PUSH0 00001a5d: MSTORE 00001a5e: SLOAD 00001a5f: AND 00001a60: OR 00001a61: PUSH0 00001a62: MLOAD 00001a63: PUSH1 0x20 00001a65: PUSH2 0x2a15 00001a68: PUSH0 00001a69: CODECOPY 00001a6a: PUSH0 00001a6b: MLOAD 00001a6c: SWAP1 00001a6d: PUSH0 00001a6e: MSTORE 00001a6f: SSTORE 00001a70: JUMP 00001a71: JUMPDEST 00001a72: PUSH1 0xff 00001a74: PUSH1 0x40 00001a76: SHL 00001a77: NOT 00001a78: PUSH0 00001a79: MLOAD 00001a7a: PUSH1 0x20 00001a7c: PUSH2 0x2a15 00001a7f: PUSH0 00001a80: CODECOPY 00001a81: PUSH0 00001a82: MLOAD 00001a83: SWAP1 00001a84: PUSH0 00001a85: MSTORE 00001a86: SLOAD 00001a87: AND 00001a88: PUSH0 00001a89: MLOAD 00001a8a: PUSH1 0x20 00001a8c: PUSH2 0x2a15 00001a8f: PUSH0 00001a90: CODECOPY 00001a91: PUSH0 00001a92: MLOAD 00001a93: SWAP1 00001a94: PUSH0 00001a95: MSTORE 00001a96: SSTORE 00001a97: JUMP 00001a98: JUMPDEST 00001a99: PUSH2 0x1aa0 00001a9c: PUSH2 0x26b7 00001a9f: JUMP 00001aa0: JUMPDEST 00001aa1: PUSH2 0x1aa8 00001aa4: PUSH2 0x26b7 00001aa7: JUMP 00001aa8: JUMPDEST 00001aa9: PUSH2 0x1ab0 00001aac: PUSH2 0x26b7 00001aaf: JUMP 00001ab0: JUMPDEST 00001ab1: PUSH2 0x1ab8 00001ab4: PUSH2 0x26b7 00001ab7: JUMP 00001ab8: JUMPDEST 00001ab9: PUSH1 0xff 00001abb: NOT 00001abc: PUSH0 00001abd: MLOAD 00001abe: PUSH1 0x20 00001ac0: PUSH2 0x29b5 00001ac3: PUSH0 00001ac4: CODECOPY 00001ac5: PUSH0 00001ac6: MLOAD 00001ac7: SWAP1 00001ac8: PUSH0 00001ac9: MSTORE 00001aca: SLOAD 00001acb: AND 00001acc: PUSH0 00001acd: MLOAD 00001ace: PUSH1 0x20 00001ad0: PUSH2 0x29b5 00001ad3: PUSH0 00001ad4: CODECOPY 00001ad5: PUSH0 00001ad6: MLOAD 00001ad7: SWAP1 00001ad8: PUSH0 00001ad9: MSTORE 00001ada: SSTORE 00001adb: PUSH2 0x1ae2 00001ade: PUSH2 0x26b7 00001ae1: JUMP 00001ae2: JUMPDEST 00001ae3: PUSH2 0x1aea 00001ae6: PUSH2 0x26b7 00001ae9: JUMP 00001aea: JUMPDEST 00001aeb: PUSH1 0x01 00001aed: PUSH0 00001aee: MLOAD 00001aef: PUSH1 0x20 00001af1: PUSH2 0x29d5 00001af4: PUSH0 00001af5: CODECOPY 00001af6: PUSH0 00001af7: MLOAD 00001af8: SWAP1 00001af9: PUSH0 00001afa: MSTORE 00001afb: SSTORE 00001afc: PUSH2 0x1b04 00001aff: CALLER 00001b00: PUSH2 0x20b7 00001b03: JUMP 00001b04: JUMPDEST 00001b05: POP 00001b06: PUSH2 0x1b0e 00001b09: CALLER 00001b0a: PUSH2 0x2112 00001b0d: JUMP 00001b0e: JUMPDEST 00001b0f: POP 00001b10: PUSH2 0x03e8 00001b13: PUSH0 00001b14: MLOAD 00001b15: PUSH1 0x20 00001b17: PUSH2 0x2915 00001b1a: PUSH0 00001b1b: CODECOPY 00001b1c: PUSH0 00001b1d: MLOAD 00001b1e: SWAP1 00001b1f: PUSH0 00001b20: MSTORE 00001b21: SSTORE 00001b22: JUMP 00001b23: JUMPDEST 00001b24: SWAP2 00001b25: PUSH2 0x1b2c 00001b28: PUSH2 0x1b5e 00001b2b: JUMP 00001b2c: JUMPDEST 00001b2d: PUSH0 00001b2e: JUMPDEST 00001b2f: DUP3 00001b30: DUP2 00001b31: LT 00001b32: ISZERO 00001b33: PUSH2 0x1b58 00001b36: JUMPI 00001b37: PUSH1 0x01 00001b39: SWAP1 00001b3a: PUSH2 0x1b51 00001b3d: DUP2 00001b3e: PUSH1 0x05 00001b40: SHL 00001b41: DUP7 00001b42: ADD 00001b43: CALLDATALOAD 00001b44: PUSH2 0x1b4c 00001b47: DUP2 00001b48: PUSH2 0x033d 00001b4b: JUMP 00001b4c: JUMPDEST 00001b4d: PUSH2 0x2187 00001b50: JUMP 00001b51: JUMPDEST 00001b52: POP 00001b53: ADD 00001b54: PUSH2 0x1b2e 00001b57: JUMP 00001b58: JUMPDEST 00001b59: POP 00001b5a: SWAP2 00001b5b: POP 00001b5c: POP 00001b5d: JUMP 00001b5e: JUMPDEST 00001b5f: CALLER 00001b60: PUSH0 00001b61: SWAP1 00001b62: DUP2 00001b63: MSTORE 00001b64: PUSH32 0x78e571b7bf30584d955e1c6444a2b5147087edf9f00485d94993a04d370525ea 00001b85: PUSH1 0x20 00001b87: MSTORE 00001b88: PUSH1 0x40 00001b8a: SWAP1 00001b8b: KECCAK256 00001b8c: SLOAD 00001b8d: PUSH1 0xff 00001b8f: AND 00001b90: ISZERO 00001b91: PUSH2 0x1b96 00001b94: JUMPI 00001b95: JUMP 00001b96: JUMPDEST 00001b97: PUSH4 0xe2517d3f 00001b9c: PUSH1 0xe0 00001b9e: SHL 00001b9f: PUSH0 00001ba0: MSTORE 00001ba1: CALLER 00001ba2: PUSH1 0x04 00001ba4: MSTORE 00001ba5: PUSH0 00001ba6: MLOAD 00001ba7: PUSH1 0x20 00001ba9: PUSH2 0x2975 00001bac: PUSH0 00001bad: CODECOPY 00001bae: PUSH0 00001baf: MLOAD 00001bb0: SWAP1 00001bb1: PUSH0 00001bb2: MSTORE 00001bb3: PUSH1 0x24 00001bb5: MSTORE 00001bb6: PUSH1 0x44 00001bb8: PUSH0 00001bb9: REVERT 00001bba: JUMPDEST 00001bbb: CALLER 00001bbc: PUSH0 00001bbd: SWAP1 00001bbe: DUP2 00001bbf: MSTORE 00001bc0: PUSH32 0x5dfc6369ede8c1331430c00b581919993675ec010140508e8a499d5c8bfbd937 00001be1: PUSH1 0x20 00001be3: MSTORE 00001be4: PUSH1 0x40 00001be6: SWAP1 00001be7: KECCAK256 00001be8: SLOAD 00001be9: PUSH1 0xff 00001beb: AND 00001bec: ISZERO 00001bed: PUSH2 0x1bf2 00001bf0: JUMPI 00001bf1: JUMP 00001bf2: JUMPDEST 00001bf3: PUSH4 0xe2517d3f 00001bf8: PUSH1 0xe0 00001bfa: SHL 00001bfb: PUSH0 00001bfc: MSTORE 00001bfd: CALLER 00001bfe: PUSH1 0x04 00001c00: MSTORE 00001c01: PUSH32 0x523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c 00001c22: PUSH1 0x24 00001c24: MSTORE 00001c25: PUSH1 0x44 00001c27: PUSH0 00001c28: REVERT 00001c29: JUMPDEST 00001c2a: CALLER 00001c2b: PUSH0 00001c2c: SWAP1 00001c2d: DUP2 00001c2e: MSTORE 00001c2f: PUSH32 0xb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d 00001c50: PUSH1 0x20 00001c52: MSTORE 00001c53: PUSH1 0x40 00001c55: SWAP1 00001c56: KECCAK256 00001c57: SLOAD 00001c58: PUSH1 0xff 00001c5a: AND 00001c5b: ISZERO 00001c5c: PUSH2 0x1c61 00001c5f: JUMPI 00001c60: JUMP 00001c61: JUMPDEST 00001c62: PUSH4 0xe2517d3f 00001c67: PUSH1 0xe0 00001c69: SHL 00001c6a: PUSH0 00001c6b: MSTORE 00001c6c: CALLER 00001c6d: PUSH1 0x04 00001c6f: MSTORE 00001c70: PUSH0 00001c71: PUSH1 0x24 00001c73: MSTORE 00001c74: PUSH1 0x44 00001c76: PUSH0 00001c77: REVERT 00001c78: JUMPDEST 00001c79: CALLER 00001c7a: PUSH0 00001c7b: SWAP1 00001c7c: DUP2 00001c7d: MSTORE 00001c7e: PUSH32 0x5ec2739e5d83ac0ee57f9f9a8bc0de261073ceffe84d59692a58d0a7bbee3e32 00001c9f: PUSH1 0x20 00001ca1: MSTORE 00001ca2: PUSH1 0x40 00001ca4: SWAP1 00001ca5: KECCAK256 00001ca6: SLOAD 00001ca7: PUSH1 0xff 00001ca9: AND 00001caa: ISZERO 00001cab: PUSH2 0x1cb0 00001cae: JUMPI 00001caf: JUMP 00001cb0: JUMPDEST 00001cb1: PUSH4 0xe2517d3f 00001cb6: PUSH1 0xe0 00001cb8: SHL 00001cb9: PUSH0 00001cba: MSTORE 00001cbb: CALLER 00001cbc: PUSH1 0x04 00001cbe: MSTORE 00001cbf: PUSH0 00001cc0: MLOAD 00001cc1: PUSH1 0x20 00001cc3: PUSH2 0x28d5 00001cc6: PUSH0 00001cc7: CODECOPY 00001cc8: PUSH0 00001cc9: MLOAD 00001cca: SWAP1 00001ccb: PUSH0 00001ccc: MSTORE 00001ccd: PUSH1 0x24 00001ccf: MSTORE 00001cd0: PUSH1 0x44 00001cd2: PUSH0 00001cd3: REVERT 00001cd4: JUMPDEST 00001cd5: PUSH1 0x02 00001cd7: PUSH0 00001cd8: MLOAD 00001cd9: PUSH1 0x20 00001cdb: PUSH2 0x29d5 00001cde: PUSH0 00001cdf: CODECOPY 00001ce0: PUSH0 00001ce1: MLOAD 00001ce2: SWAP1 00001ce3: PUSH0 00001ce4: MSTORE 00001ce5: SLOAD 00001ce6: EQ 00001ce7: PUSH2 0x1cfd 00001cea: JUMPI 00001ceb: PUSH1 0x02 00001ced: PUSH0 00001cee: MLOAD 00001cef: PUSH1 0x20 00001cf1: PUSH2 0x29d5 00001cf4: PUSH0 00001cf5: CODECOPY 00001cf6: PUSH0 00001cf7: MLOAD 00001cf8: SWAP1 00001cf9: PUSH0 00001cfa: MSTORE 00001cfb: SSTORE 00001cfc: JUMP 00001cfd: JUMPDEST 00001cfe: PUSH4 0x3ee5aeb5 00001d03: PUSH1 0xe0 00001d05: SHL 00001d06: PUSH0 00001d07: MSTORE 00001d08: PUSH1 0x04 00001d0a: PUSH0 00001d0b: REVERT 00001d0c: JUMPDEST 00001d0d: PUSH1 0xff 00001d0f: PUSH0 00001d10: MLOAD 00001d11: PUSH1 0x20 00001d13: PUSH2 0x29b5 00001d16: PUSH0 00001d17: CODECOPY 00001d18: PUSH0 00001d19: MLOAD 00001d1a: SWAP1 00001d1b: PUSH0 00001d1c: MSTORE 00001d1d: SLOAD 00001d1e: AND 00001d1f: PUSH2 0x1d24 00001d22: JUMPI 00001d23: JUMP 00001d24: JUMPDEST 00001d25: PUSH4 0xd93c0665 00001d2a: PUSH1 0xe0 00001d2c: SHL 00001d2d: PUSH0 00001d2e: MSTORE 00001d2f: PUSH1 0x04 00001d31: PUSH0 00001d32: REVERT 00001d33: JUMPDEST 00001d34: DUP2 00001d35: ISZERO 00001d36: PUSH2 0x1d3d 00001d39: JUMPI 00001d3a: DIV 00001d3b: SWAP1 00001d3c: JUMP 00001d3d: JUMPDEST 00001d3e: PUSH4 0x4e487b71 00001d43: PUSH1 0xe0 00001d45: SHL 00001d46: PUSH0 00001d47: MSTORE 00001d48: PUSH1 0x12 00001d4a: PUSH1 0x04 00001d4c: MSTORE 00001d4d: PUSH1 0x24 00001d4f: PUSH0 00001d50: REVERT 00001d51: JUMPDEST 00001d52: SWAP1 00001d53: SWAP2 00001d54: SWAP6 00001d55: SWAP7 00001d56: SWAP5 00001d57: SWAP4 00001d58: TIMESTAMP 00001d59: DUP2 00001d5a: GT 00001d5b: ISZERO 00001d5c: PUSH2 0x1f31 00001d5f: JUMPI 00001d60: POP 00001d61: PUSH2 0x1da0 00001d64: DUP2 00001d65: PUSH1 0xff 00001d67: PUSH1 0x01 00001d69: SWAP2 00001d6a: DUP1 00001d6b: PUSH1 0x08 00001d6d: SHR 00001d6e: PUSH0 00001d6f: MSTORE 00001d70: PUSH32 0x16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d 00001d91: PUSH1 0x20 00001d93: MSTORE 00001d94: AND 00001d95: SHL 00001d96: PUSH1 0x40 00001d98: PUSH0 00001d99: KECCAK256 00001d9a: SLOAD 00001d9b: AND 00001d9c: ISZERO 00001d9d: ISZERO 00001d9e: SWAP1 00001d9f: JUMP 00001da0: JUMPDEST 00001da1: PUSH2 0x1f1f 00001da4: JUMPI 00001da5: PUSH2 0x1e49 00001da8: PUSH2 0x1e57 00001dab: SWAP4 00001dac: SWAP3 00001dad: PUSH2 0x1def 00001db0: PUSH2 0x1e51 00001db3: SWAP4 00001db4: DUP1 00001db5: PUSH1 0x08 00001db7: SHR 00001db8: PUSH0 00001db9: MSTORE 00001dba: PUSH32 0x16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d 00001ddb: PUSH1 0x20 00001ddd: MSTORE 00001dde: PUSH1 0x01 00001de0: PUSH1 0xff 00001de2: PUSH1 0x40 00001de4: PUSH0 00001de5: KECCAK256 00001de6: SWAP3 00001de7: AND 00001de8: SHL 00001de9: DUP2 00001dea: SLOAD 00001deb: OR 00001dec: SWAP1 00001ded: SSTORE 00001dee: JUMP 00001def: JUMPDEST 00001df0: PUSH2 0x1e42 00001df3: PUSH2 0x1dfc 00001df6: ADDRESS 00001df7: DUP4 00001df8: PUSH2 0x1f56 00001dfb: JUMP 00001dfc: JUMPDEST 00001dfd: SWAP10 00001dfe: PUSH2 0x1e07 00001e01: ADDRESS 00001e02: DUP8 00001e03: PUSH2 0x1f56 00001e06: JUMP 00001e07: JUMPDEST 00001e08: SWAP8 00001e09: PUSH2 0x1e11 00001e0c: DUP5 00001e0d: PUSH2 0x1fbf 00001e10: JUMP 00001e11: JUMPDEST 00001e12: ISZERO 00001e13: PUSH2 0x1ee7 00001e16: JUMPI 00001e17: PUSH2 0x1e3c 00001e1a: DUP12 00001e1b: SWAP2 00001e1c: JUMPDEST 00001e1d: PUSH0 00001e1e: MLOAD 00001e1f: PUSH1 0x20 00001e21: PUSH2 0x29f5 00001e24: PUSH0 00001e25: CODECOPY 00001e26: PUSH0 00001e27: MLOAD 00001e28: SWAP1 00001e29: PUSH0 00001e2a: MSTORE 00001e2b: SLOAD 00001e2c: PUSH1 0x01 00001e2e: PUSH1 0x01 00001e30: PUSH1 0xa0 00001e32: SHL 00001e33: SUB 00001e34: AND 00001e35: SWAP4 00001e36: CALLDATASIZE 00001e37: SWAP2 00001e38: PUSH2 0x0ac0 00001e3b: JUMP 00001e3c: JUMPDEST 00001e3d: SWAP2 00001e3e: PUSH2 0x2412 00001e41: JUMP 00001e42: JUMPDEST 00001e43: ADDRESS 00001e44: SWAP1 00001e45: PUSH2 0x1f56 00001e48: JUMP 00001e49: JUMPDEST 00001e4a: SWAP2 00001e4b: ADDRESS 00001e4c: SWAP1 00001e4d: PUSH2 0x1f56 00001e50: JUMP 00001e51: JUMPDEST 00001e52: SWAP6 00001e53: PUSH2 0x18b2 00001e56: JUMP 00001e57: JUMPDEST 00001e58: SWAP4 00001e59: DUP4 00001e5a: DUP6 00001e5b: GT 00001e5c: ISZERO 00001e5d: PUSH2 0x1e79 00001e60: JUMPI 00001e61: PUSH4 0x060a35db 00001e66: PUSH1 0xe1 00001e68: SHL 00001e69: PUSH0 00001e6a: MSTORE 00001e6b: PUSH1 0x04 00001e6d: DUP5 00001e6e: SWAP1 00001e6f: MSTORE 00001e70: PUSH1 0x24 00001e72: DUP6 00001e73: SWAP1 00001e74: MSTORE 00001e75: PUSH1 0x44 00001e77: PUSH0 00001e78: REVERT 00001e79: JUMPDEST 00001e7a: SWAP1 00001e7b: SWAP2 00001e7c: SWAP3 00001e7d: DUP1 00001e7e: DUP6 00001e7f: LT 00001e80: PUSH2 0x1ea8 00001e83: JUMPI 00001e84: JUMPDEST 00001e85: POP 00001e86: PUSH2 0x1e90 00001e89: SWAP3 00001e8a: SWAP4 00001e8b: POP 00001e8c: PUSH2 0x18b2 00001e8f: JUMP 00001e90: JUMPDEST 00001e91: DUP1 00001e92: ISZERO 00001e93: PUSH2 0x1e99 00001e96: JUMPI 00001e97: SWAP1 00001e98: JUMP 00001e99: JUMPDEST 00001e9a: PUSH4 0x861c9e85 00001e9f: PUSH1 0xe0 00001ea1: SHL 00001ea2: PUSH0 00001ea3: MSTORE 00001ea4: PUSH1 0x04 00001ea6: PUSH0 00001ea7: REVERT 00001ea8: JUMPDEST 00001ea9: PUSH2 0x1eb2 00001eac: DUP6 00001ead: DUP3 00001eae: PUSH2 0x18b2 00001eb1: JUMP 00001eb2: JUMPDEST 00001eb3: PUSH2 0x1eca 00001eb6: PUSH0 00001eb7: MLOAD 00001eb8: PUSH1 0x20 00001eba: PUSH2 0x2915 00001ebd: PUSH0 00001ebe: CODECOPY 00001ebf: PUSH0 00001ec0: MLOAD 00001ec1: SWAP1 00001ec2: PUSH0 00001ec3: MSTORE 00001ec4: SLOAD 00001ec5: DUP4 00001ec6: PUSH2 0x1d33 00001ec9: JUMP 00001eca: JUMPDEST 00001ecb: LT 00001ecc: ISZERO 00001ecd: PUSH2 0x1e84 00001ed0: JUMPI 00001ed1: PUSH4 0x41257fa1 00001ed6: PUSH1 0xe1 00001ed8: SHL 00001ed9: PUSH0 00001eda: MSTORE 00001edb: PUSH1 0x04 00001edd: DUP6 00001ede: SWAP1 00001edf: MSTORE 00001ee0: PUSH1 0x24 00001ee2: MSTORE 00001ee3: PUSH1 0x44 00001ee5: PUSH0 00001ee6: REVERT 00001ee7: JUMPDEST 00001ee8: PUSH0 00001ee9: MLOAD 00001eea: PUSH1 0x20 00001eec: PUSH2 0x29f5 00001eef: PUSH0 00001ef0: CODECOPY 00001ef1: PUSH0 00001ef2: MLOAD 00001ef3: SWAP1 00001ef4: PUSH0 00001ef5: MSTORE 00001ef6: SLOAD 00001ef7: PUSH0 00001ef8: SWAP2 00001ef9: PUSH2 0x1e3c 00001efc: SWAP2 00001efd: PUSH2 0x1f1a 00001f00: SWAP1 00001f01: DUP15 00001f02: SWAP1 00001f03: PUSH1 0x01 00001f05: PUSH1 0x01 00001f07: PUSH1 0xa0 00001f09: SHL 00001f0a: SUB 00001f0b: AND 00001f0c: PUSH1 0x01 00001f0e: PUSH1 0x01 00001f10: PUSH1 0xa0 00001f12: SHL 00001f13: SUB 00001f14: DUP10 00001f15: AND 00001f16: PUSH2 0x1fe7 00001f19: JUMP 00001f1a: JUMPDEST 00001f1b: PUSH2 0x1e1c 00001f1e: JUMP 00001f1f: JUMPDEST 00001f20: PUSH4 0x37106bcb 00001f25: PUSH1 0xe2 00001f27: SHL 00001f28: PUSH0 00001f29: MSTORE 00001f2a: PUSH1 0x04 00001f2c: MSTORE 00001f2d: PUSH1 0x24 00001f2f: PUSH0 00001f30: REVERT 00001f31: JUMPDEST 00001f32: PUSH4 0x4b2d84db 00001f37: PUSH1 0xe0 00001f39: SHL 00001f3a: PUSH0 00001f3b: MSTORE 00001f3c: TIMESTAMP 00001f3d: PUSH1 0x04 00001f3f: MSTORE 00001f40: PUSH1 0x24 00001f42: MSTORE 00001f43: PUSH1 0x44 00001f45: PUSH0 00001f46: REVERT 00001f47: JUMPDEST 00001f48: SWAP1 00001f49: DUP2 00001f4a: PUSH1 0x20 00001f4c: SWAP2 00001f4d: SUB 00001f4e: SLT 00001f4f: PUSH2 0x0339 00001f52: JUMPI 00001f53: MLOAD 00001f54: SWAP1 00001f55: JUMP 00001f56: JUMPDEST 00001f57: PUSH2 0x1f5f 00001f5a: DUP2 00001f5b: PUSH2 0x1fbf 00001f5e: JUMP 00001f5f: JUMPDEST 00001f60: ISZERO 00001f61: PUSH2 0x1f69 00001f64: JUMPI 00001f65: POP 00001f66: BALANCE 00001f67: SWAP1 00001f68: JUMP 00001f69: JUMPDEST 00001f6a: PUSH1 0x40 00001f6c: MLOAD 00001f6d: PUSH4 0x70a08231 00001f72: PUSH1 0xe0 00001f74: SHL 00001f75: DUP2 00001f76: MSTORE 00001f77: PUSH1 0x01 00001f79: PUSH1 0x01 00001f7b: PUSH1 0xa0 00001f7d: SHL 00001f7e: SUB 00001f7f: SWAP3 00001f80: DUP4 00001f81: AND 00001f82: PUSH1 0x04 00001f84: DUP3 00001f85: ADD 00001f86: MSTORE 00001f87: SWAP2 00001f88: PUSH1 0x20 00001f8a: SWAP2 00001f8b: DUP4 00001f8c: SWAP2 00001f8d: PUSH1 0x24 00001f8f: SWAP2 00001f90: DUP4 00001f91: SWAP2 00001f92: AND 00001f93: GAS 00001f94: STATICCALL 00001f95: SWAP1 00001f96: DUP2 00001f97: ISZERO 00001f98: PUSH2 0x06da 00001f9b: JUMPI 00001f9c: PUSH0 00001f9d: SWAP2 00001f9e: PUSH2 0x1fa6 00001fa1: JUMPI 00001fa2: JUMPDEST 00001fa3: POP 00001fa4: SWAP1 00001fa5: JUMP 00001fa6: JUMPDEST 00001fa7: PUSH2 0x0937 00001faa: SWAP2 00001fab: POP 00001fac: PUSH1 0x20 00001fae: RETURNDATASIZE 00001faf: PUSH1 0x20 00001fb1: GT 00001fb2: PUSH2 0x0c28 00001fb5: JUMPI 00001fb6: PUSH2 0x0c19 00001fb9: DUP2 00001fba: DUP4 00001fbb: PUSH2 0x0a6c 00001fbe: JUMP 00001fbf: JUMPDEST 00001fc0: PUSH1 0x01 00001fc2: PUSH1 0x01 00001fc4: PUSH1 0xa0 00001fc6: SHL 00001fc7: SUB 00001fc8: AND 00001fc9: DUP1 00001fca: ISZERO 00001fcb: PUSH2 0x03e6 00001fce: JUMPI 00001fcf: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 00001fe4: EQ 00001fe5: SWAP1 00001fe6: JUMP 00001fe7: JUMPDEST 00001fe8: PUSH1 0x40 00001fea: MLOAD 00001feb: PUSH4 0x095ea7b3 00001ff0: PUSH1 0xe0 00001ff2: SHL 00001ff3: PUSH1 0x20 00001ff5: DUP1 00001ff6: DUP4 00001ff7: ADD 00001ff8: SWAP2 00001ff9: DUP3 00001ffa: MSTORE 00001ffb: PUSH1 0x01 00001ffd: PUSH1 0x01 00001fff: PUSH1 0xa0 00002001: SHL 00002002: SUB 00002003: DUP6 00002004: AND 00002005: PUSH1 0x24 00002007: DUP5 00002008: ADD 00002009: MSTORE 0000200a: PUSH1 0x44 0000200c: DUP1 0000200d: DUP5 0000200e: ADD 0000200f: SWAP7 00002010: SWAP1 00002011: SWAP7 00002012: MSTORE 00002013: SWAP5 00002014: DUP3 00002015: MSTORE 00002016: SWAP3 00002017: SWAP4 00002018: SWAP1 00002019: SWAP3 0000201a: PUSH0 0000201b: SWAP1 0000201c: PUSH2 0x2026 0000201f: PUSH1 0x64 00002021: DUP7 00002022: PUSH2 0x0a6c 00002025: JUMP 00002026: JUMPDEST 00002027: DUP5 00002028: MLOAD 00002029: SWAP1 0000202a: DUP3 0000202b: DUP6 0000202c: GAS 0000202d: CALL 0000202e: PUSH0 0000202f: MLOAD 00002030: SWAP1 00002031: RETURNDATASIZE 00002032: DUP2 00002033: PUSH2 0x208b 00002036: JUMPI 00002037: JUMPDEST 00002038: POP 00002039: ISZERO 0000203a: SWAP1 0000203b: POP 0000203c: JUMPDEST 0000203d: PUSH2 0x2045 00002040: JUMPI 00002041: POP 00002042: POP 00002043: POP 00002044: JUMP 00002045: JUMPDEST 00002046: PUSH1 0x40 00002048: MLOAD 00002049: PUSH4 0x095ea7b3 0000204e: PUSH1 0xe0 00002050: SHL 00002051: PUSH1 0x20 00002053: DUP3 00002054: ADD 00002055: MSTORE 00002056: PUSH1 0x01 00002058: PUSH1 0x01 0000205a: PUSH1 0xa0 0000205c: SHL 0000205d: SUB 0000205e: SWAP1 0000205f: SWAP4 00002060: AND 00002061: PUSH1 0x24 00002063: DUP5 00002064: ADD 00002065: MSTORE 00002066: PUSH0 00002067: PUSH1 0x44 00002069: DUP5 0000206a: ADD 0000206b: MSTORE 0000206c: PUSH2 0x0aa2 0000206f: SWAP3 00002070: PUSH2 0x2086 00002073: SWAP1 00002074: PUSH2 0x2080 00002077: DUP2 00002078: PUSH1 0x64 0000207a: DUP2 0000207b: ADD 0000207c: PUSH2 0x052d 0000207f: JUMP 00002080: JUMPDEST 00002081: DUP3 00002082: PUSH2 0x2439 00002085: JUMP 00002086: JUMPDEST 00002087: PUSH2 0x2439 0000208a: JUMP 0000208b: JUMPDEST 0000208c: ISZERO 0000208d: ISZERO 0000208e: SWAP1 0000208f: POP 00002090: PUSH2 0x20ab 00002093: JUMPI 00002094: POP 00002095: PUSH2 0x203c 00002098: PUSH1 0x01 0000209a: PUSH1 0x01 0000209c: PUSH1 0xa0 0000209e: SHL 0000209f: SUB 000020a0: DUP3 000020a1: AND 000020a2: EXTCODESIZE 000020a3: ISZERO 000020a4: ISZERO 000020a5: JUMPDEST 000020a6: PUSH0 000020a7: PUSH2 0x2037 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x01 000020ae: PUSH2 0x203c 000020b1: SWAP2 000020b2: EQ 000020b3: PUSH2 0x20a5 000020b6: JUMP 000020b7: JUMPDEST 000020b8: PUSH2 0x20c1 000020bb: DUP2 000020bc: PUSH0 000020bd: PUSH2 0x2491 000020c0: JUMP 000020c1: JUMPDEST 000020c2: SWAP1 000020c3: DUP2 000020c4: PUSH2 0x20cb 000020c7: JUMPI 000020c8: POP 000020c9: SWAP1 000020ca: JUMP 000020cb: JUMPDEST 000020cc: PUSH0 000020cd: DUP1 000020ce: MSTORE 000020cf: PUSH0 000020d0: MLOAD 000020d1: PUSH1 0x20 000020d3: PUSH2 0x28f5 000020d6: PUSH0 000020d7: CODECOPY 000020d8: PUSH0 000020d9: MLOAD 000020da: SWAP1 000020db: PUSH0 000020dc: MSTORE 000020dd: PUSH1 0x20 000020df: MSTORE 000020e0: PUSH2 0x1fa2 000020e3: SWAP1 000020e4: PUSH1 0x01 000020e6: PUSH1 0x01 000020e8: PUSH1 0xa0 000020ea: SHL 000020eb: SUB 000020ec: AND 000020ed: PUSH32 0x615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44 0000210e: PUSH2 0x270b 00002111: JUMP 00002112: JUMPDEST 00002113: PUSH2 0x2129 00002116: DUP2 00002117: PUSH0 00002118: MLOAD 00002119: PUSH1 0x20 0000211b: PUSH2 0x2975 0000211e: PUSH0 0000211f: CODECOPY 00002120: PUSH0 00002121: MLOAD 00002122: SWAP1 00002123: PUSH0 00002124: MSTORE 00002125: PUSH2 0x2491 00002128: JUMP 00002129: JUMPDEST 0000212a: SWAP1 0000212b: DUP2 0000212c: PUSH2 0x2133 0000212f: JUMPI 00002130: POP 00002131: SWAP1 00002132: JUMP 00002133: JUMPDEST 00002134: PUSH0 00002135: MLOAD 00002136: PUSH1 0x20 00002138: PUSH2 0x2975 0000213b: PUSH0 0000213c: CODECOPY 0000213d: PUSH0 0000213e: MLOAD 0000213f: SWAP1 00002140: PUSH0 00002141: MSTORE 00002142: PUSH0 00002143: MSTORE 00002144: PUSH0 00002145: MLOAD 00002146: PUSH1 0x20 00002148: PUSH2 0x28f5 0000214b: PUSH0 0000214c: CODECOPY 0000214d: PUSH0 0000214e: MLOAD 0000214f: SWAP1 00002150: PUSH0 00002151: MSTORE 00002152: PUSH1 0x20 00002154: MSTORE 00002155: PUSH2 0x1fa2 00002158: SWAP1 00002159: PUSH1 0x01 0000215b: PUSH1 0x01 0000215d: PUSH1 0xa0 0000215f: SHL 00002160: SUB 00002161: AND 00002162: PUSH32 0x7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e07 00002183: PUSH2 0x270b 00002186: JUMP 00002187: JUMPDEST 00002188: PUSH2 0x219e 0000218b: DUP2 0000218c: PUSH0 0000218d: MLOAD 0000218e: PUSH1 0x20 00002190: PUSH2 0x28d5 00002193: PUSH0 00002194: CODECOPY 00002195: PUSH0 00002196: MLOAD 00002197: SWAP1 00002198: PUSH0 00002199: MSTORE 0000219a: PUSH2 0x2491 0000219d: JUMP 0000219e: JUMPDEST 0000219f: SWAP1 000021a0: DUP2 000021a1: PUSH2 0x21a8 000021a4: JUMPI 000021a5: POP 000021a6: SWAP1 000021a7: JUMP 000021a8: JUMPDEST 000021a9: PUSH0 000021aa: MLOAD 000021ab: PUSH1 0x20 000021ad: PUSH2 0x28d5 000021b0: PUSH0 000021b1: CODECOPY 000021b2: PUSH0 000021b3: MLOAD 000021b4: SWAP1 000021b5: PUSH0 000021b6: MSTORE 000021b7: PUSH0 000021b8: MSTORE 000021b9: PUSH0 000021ba: MLOAD 000021bb: PUSH1 0x20 000021bd: PUSH2 0x28f5 000021c0: PUSH0 000021c1: CODECOPY 000021c2: PUSH0 000021c3: MLOAD 000021c4: SWAP1 000021c5: PUSH0 000021c6: MSTORE 000021c7: PUSH1 0x20 000021c9: MSTORE 000021ca: PUSH2 0x1fa2 000021cd: SWAP1 000021ce: PUSH1 0x01 000021d0: PUSH1 0x01 000021d2: PUSH1 0xa0 000021d4: SHL 000021d5: SUB 000021d6: AND 000021d7: PUSH32 0xcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c7450 000021f8: PUSH2 0x270b 000021fb: JUMP 000021fc: JUMPDEST 000021fd: PUSH2 0x2206 00002200: DUP3 00002201: DUP3 00002202: PUSH2 0x2491 00002205: JUMP 00002206: JUMPDEST 00002207: SWAP2 00002208: DUP3 00002209: PUSH2 0x2211 0000220c: JUMPI 0000220d: POP 0000220e: POP 0000220f: SWAP1 00002210: JUMP 00002211: JUMPDEST 00002212: PUSH0 00002213: SWAP2 00002214: DUP3 00002215: MSTORE 00002216: PUSH0 00002217: MLOAD 00002218: PUSH1 0x20 0000221a: PUSH2 0x28f5 0000221d: PUSH0 0000221e: CODECOPY 0000221f: PUSH0 00002220: MLOAD 00002221: SWAP1 00002222: PUSH0 00002223: MSTORE 00002224: PUSH1 0x20 00002226: MSTORE 00002227: PUSH1 0x40 00002229: SWAP1 0000222a: SWAP2 0000222b: KECCAK256 0000222c: PUSH2 0x1fa2 0000222f: SWAP2 00002230: PUSH1 0x01 00002232: PUSH1 0x01 00002234: PUSH1 0xa0 00002236: SHL 00002237: SUB 00002238: AND 00002239: SWAP1 0000223a: PUSH2 0x270b 0000223d: JUMP 0000223e: JUMPDEST 0000223f: PUSH2 0x2248 00002242: DUP2 00002243: PUSH0 00002244: PUSH2 0x2539 00002247: JUMP 00002248: JUMPDEST 00002249: SWAP1 0000224a: DUP2 0000224b: PUSH2 0x2252 0000224e: JUMPI 0000224f: POP 00002250: SWAP1 00002251: JUMP 00002252: JUMPDEST 00002253: PUSH0 00002254: DUP1 00002255: MSTORE 00002256: PUSH0 00002257: MLOAD 00002258: PUSH1 0x20 0000225a: PUSH2 0x28f5 0000225d: PUSH0 0000225e: CODECOPY 0000225f: PUSH0 00002260: MLOAD 00002261: SWAP1 00002262: PUSH0 00002263: MSTORE 00002264: PUSH1 0x20 00002266: MSTORE 00002267: PUSH2 0x1fa2 0000226a: SWAP1 0000226b: PUSH1 0x01 0000226d: PUSH1 0x01 0000226f: PUSH1 0xa0 00002271: SHL 00002272: SUB 00002273: AND 00002274: PUSH32 0x615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44 00002295: PUSH2 0x27b0 00002298: JUMP 00002299: JUMPDEST 0000229a: PUSH2 0x22a3 0000229d: DUP3 0000229e: DUP3 0000229f: PUSH2 0x2539 000022a2: JUMP 000022a3: JUMPDEST 000022a4: SWAP2 000022a5: DUP3 000022a6: PUSH2 0x22ae 000022a9: JUMPI 000022aa: POP 000022ab: POP 000022ac: SWAP1 000022ad: JUMP 000022ae: JUMPDEST 000022af: PUSH0 000022b0: SWAP2 000022b1: DUP3 000022b2: MSTORE 000022b3: PUSH0 000022b4: MLOAD 000022b5: PUSH1 0x20 000022b7: PUSH2 0x28f5 000022ba: PUSH0 000022bb: CODECOPY 000022bc: PUSH0 000022bd: MLOAD 000022be: SWAP1 000022bf: PUSH0 000022c0: MSTORE 000022c1: PUSH1 0x20 000022c3: MSTORE 000022c4: PUSH1 0x40 000022c6: SWAP1 000022c7: SWAP2 000022c8: KECCAK256 000022c9: PUSH2 0x1fa2 000022cc: SWAP2 000022cd: PUSH1 0x01 000022cf: PUSH1 0x01 000022d1: PUSH1 0xa0 000022d3: SHL 000022d4: SUB 000022d5: AND 000022d6: SWAP1 000022d7: PUSH2 0x27b0 000022da: JUMP 000022db: JUMPDEST 000022dc: RETURNDATASIZE 000022dd: ISZERO 000022de: PUSH2 0x2305 000022e1: JUMPI 000022e2: RETURNDATASIZE 000022e3: SWAP1 000022e4: PUSH2 0x22ec 000022e7: DUP3 000022e8: PUSH2 0x0aa4 000022eb: JUMP 000022ec: JUMPDEST 000022ed: SWAP2 000022ee: PUSH2 0x22fa 000022f1: PUSH1 0x40 000022f3: MLOAD 000022f4: SWAP4 000022f5: DUP5 000022f6: PUSH2 0x0a6c 000022f9: JUMP 000022fa: JUMPDEST 000022fb: DUP3 000022fc: MSTORE 000022fd: RETURNDATASIZE 000022fe: PUSH0 000022ff: PUSH1 0x20 00002301: DUP5 00002302: ADD 00002303: RETURNDATACOPY 00002304: JUMP 00002305: JUMPDEST 00002306: PUSH1 0x60 00002308: SWAP1 00002309: JUMP 0000230a: JUMPDEST 0000230b: SWAP2 0000230c: DUP2 0000230d: SWAP3 0000230e: PUSH2 0x2316 00002311: DUP2 00002312: PUSH2 0x1fbf 00002315: JUMP 00002316: JUMPDEST 00002317: ISZERO 00002318: PUSH2 0x234f 0000231b: JUMPI 0000231c: POP 0000231d: PUSH0 0000231e: SWAP2 0000231f: DUP3 00002320: SWAP2 00002321: DUP3 00002322: SWAP2 00002323: DUP3 00002324: SWAP2 00002325: PUSH1 0x01 00002327: PUSH1 0x01 00002329: PUSH1 0xa0 0000232b: SHL 0000232c: SUB 0000232d: AND 0000232e: GAS 0000232f: CALL 00002330: PUSH2 0x2337 00002333: PUSH2 0x22db 00002336: JUMP 00002337: JUMPDEST 00002338: POP 00002339: ISZERO 0000233a: PUSH2 0x2340 0000233d: JUMPI 0000233e: SWAP1 0000233f: JUMP 00002340: JUMPDEST 00002341: PUSH4 0x0c08bcb9 00002346: PUSH1 0xe2 00002348: SHL 00002349: PUSH0 0000234a: MSTORE 0000234b: PUSH1 0x04 0000234d: PUSH0 0000234e: REVERT 0000234f: JUMPDEST 00002350: PUSH1 0x40 00002352: MLOAD 00002353: PUSH4 0x70a08231 00002358: PUSH1 0xe0 0000235a: SHL 0000235b: DUP2 0000235c: MSTORE 0000235d: ADDRESS 0000235e: PUSH1 0x04 00002360: DUP3 00002361: ADD 00002362: MSTORE 00002363: PUSH1 0x01 00002365: PUSH1 0x01 00002367: PUSH1 0xa0 00002369: SHL 0000236a: SUB 0000236b: SWAP2 0000236c: SWAP1 0000236d: SWAP2 0000236e: AND 0000236f: SWAP4 00002370: SWAP2 00002371: SWAP3 00002372: POP 00002373: SWAP1 00002374: PUSH1 0x20 00002376: DUP3 00002377: PUSH1 0x24 00002379: DUP2 0000237a: DUP8 0000237b: GAS 0000237c: STATICCALL 0000237d: SWAP2 0000237e: DUP3 0000237f: ISZERO 00002380: PUSH2 0x06da 00002383: JUMPI 00002384: PUSH0 00002385: SWAP3 00002386: PUSH2 0x23ef 00002389: JUMPI 0000238a: JUMPDEST 0000238b: POP 0000238c: PUSH2 0x2396 0000238f: SWAP2 00002390: SWAP3 00002391: DUP5 00002392: PUSH2 0x25d9 00002395: JUMP 00002396: JUMPDEST 00002397: PUSH1 0x40 00002399: MLOAD 0000239a: PUSH4 0x70a08231 0000239f: PUSH1 0xe0 000023a1: SHL 000023a2: DUP2 000023a3: MSTORE 000023a4: ADDRESS 000023a5: PUSH1 0x04 000023a7: DUP3 000023a8: ADD 000023a9: MSTORE 000023aa: SWAP2 000023ab: PUSH1 0x20 000023ad: SWAP1 000023ae: DUP4 000023af: SWAP1 000023b0: PUSH1 0x24 000023b2: SWAP1 000023b3: DUP3 000023b4: SWAP1 000023b5: GAS 000023b6: STATICCALL 000023b7: SWAP1 000023b8: DUP2 000023b9: ISZERO 000023ba: PUSH2 0x06da 000023bd: JUMPI 000023be: PUSH2 0x0937 000023c1: SWAP3 000023c2: PUSH0 000023c3: SWAP3 000023c4: PUSH2 0x23ce 000023c7: JUMPI 000023c8: JUMPDEST 000023c9: POP 000023ca: PUSH2 0x18b2 000023cd: JUMP 000023ce: JUMPDEST 000023cf: PUSH2 0x23e8 000023d2: SWAP2 000023d3: SWAP3 000023d4: POP 000023d5: PUSH1 0x20 000023d7: RETURNDATASIZE 000023d8: PUSH1 0x20 000023da: GT 000023db: PUSH2 0x0c28 000023de: JUMPI 000023df: PUSH2 0x0c19 000023e2: DUP2 000023e3: DUP4 000023e4: PUSH2 0x0a6c 000023e7: JUMP 000023e8: JUMPDEST 000023e9: SWAP1 000023ea: PUSH0 000023eb: PUSH2 0x23c8 000023ee: JUMP 000023ef: JUMPDEST 000023f0: PUSH2 0x2396 000023f3: SWAP3 000023f4: POP 000023f5: PUSH2 0x240c 000023f8: SWAP1 000023f9: PUSH1 0x20 000023fb: RETURNDATASIZE 000023fc: PUSH1 0x20 000023fe: GT 000023ff: PUSH2 0x0c28 00002402: JUMPI 00002403: PUSH2 0x0c19 00002406: DUP2 00002407: DUP4 00002408: PUSH2 0x0a6c 0000240b: JUMP 0000240c: JUMPDEST 0000240d: SWAP2 0000240e: PUSH2 0x238a 00002411: JUMP 00002412: JUMPDEST 00002413: SWAP2 00002414: PUSH0 00002415: SWAP3 00002416: DUP4 00002417: SWAP3 00002418: PUSH1 0x20 0000241a: DUP4 0000241b: MLOAD 0000241c: SWAP4 0000241d: ADD 0000241e: SWAP2 0000241f: GAS 00002420: CALL 00002421: PUSH2 0x2428 00002424: PUSH2 0x22db 00002427: JUMP 00002428: JUMPDEST 00002429: SWAP1 0000242a: ISZERO 0000242b: PUSH2 0x2431 0000242e: JUMPI 0000242f: POP 00002430: JUMP 00002431: JUMPDEST 00002432: PUSH1 0x20 00002434: DUP2 00002435: MLOAD 00002436: SWAP2 00002437: ADD 00002438: REVERT 00002439: JUMPDEST 0000243a: SWAP1 0000243b: PUSH0 0000243c: PUSH1 0x20 0000243e: SWAP2 0000243f: DUP3 00002440: DUP2 00002441: MLOAD 00002442: SWAP2 00002443: ADD 00002444: DUP3 00002445: DUP6 00002446: GAS 00002447: CALL 00002448: ISZERO 00002449: PUSH2 0x1885 0000244c: JUMPI 0000244d: PUSH0 0000244e: MLOAD 0000244f: RETURNDATASIZE 00002450: PUSH2 0x2488 00002453: JUMPI 00002454: POP 00002455: PUSH1 0x01 00002457: PUSH1 0x01 00002459: PUSH1 0xa0 0000245b: SHL 0000245c: SUB 0000245d: DUP2 0000245e: AND 0000245f: EXTCODESIZE 00002460: ISZERO 00002461: JUMPDEST 00002462: PUSH2 0x2468 00002465: JUMPI 00002466: POP 00002467: JUMP 00002468: JUMPDEST 00002469: PUSH4 0x5274afe7 0000246e: PUSH1 0xe0 00002470: SHL 00002471: PUSH0 00002472: SWAP1 00002473: DUP2 00002474: MSTORE 00002475: PUSH1 0x01 00002477: PUSH1 0x01 00002479: PUSH1 0xa0 0000247b: SHL 0000247c: SUB 0000247d: SWAP2 0000247e: SWAP1 0000247f: SWAP2 00002480: AND 00002481: PUSH1 0x04 00002483: MSTORE 00002484: PUSH1 0x24 00002486: SWAP1 00002487: REVERT 00002488: JUMPDEST 00002489: PUSH1 0x01 0000248b: EQ 0000248c: ISZERO 0000248d: PUSH2 0x2461 00002490: JUMP 00002491: JUMPDEST 00002492: PUSH0 00002493: DUP2 00002494: DUP2 00002495: MSTORE 00002496: PUSH0 00002497: MLOAD 00002498: PUSH1 0x20 0000249a: PUSH2 0x2995 0000249d: PUSH0 0000249e: CODECOPY 0000249f: PUSH0 000024a0: MLOAD 000024a1: SWAP1 000024a2: PUSH0 000024a3: MSTORE 000024a4: PUSH1 0x20 000024a6: SWAP1 000024a7: DUP2 000024a8: MSTORE 000024a9: PUSH1 0x40 000024ab: DUP1 000024ac: DUP4 000024ad: KECCAK256 000024ae: PUSH1 0x01 000024b0: PUSH1 0x01 000024b2: PUSH1 0xa0 000024b4: SHL 000024b5: SUB 000024b6: DUP7 000024b7: AND 000024b8: DUP5 000024b9: MSTORE 000024ba: SWAP1 000024bb: SWAP2 000024bc: MSTORE 000024bd: SWAP1 000024be: KECCAK256 000024bf: SLOAD 000024c0: PUSH1 0xff 000024c2: AND 000024c3: PUSH2 0x2533 000024c6: JUMPI 000024c7: PUSH0 000024c8: DUP2 000024c9: DUP2 000024ca: MSTORE 000024cb: PUSH0 000024cc: MLOAD 000024cd: PUSH1 0x20 000024cf: PUSH2 0x2995 000024d2: PUSH0 000024d3: CODECOPY 000024d4: PUSH0 000024d5: MLOAD 000024d6: SWAP1 000024d7: PUSH0 000024d8: MSTORE 000024d9: PUSH1 0x20 000024db: SWAP1 000024dc: DUP2 000024dd: MSTORE 000024de: PUSH1 0x40 000024e0: DUP1 000024e1: DUP4 000024e2: KECCAK256 000024e3: PUSH1 0x01 000024e5: PUSH1 0x01 000024e7: PUSH1 0xa0 000024e9: SHL 000024ea: SUB 000024eb: DUP7 000024ec: AND 000024ed: DUP5 000024ee: MSTORE 000024ef: SWAP1 000024f0: SWAP2 000024f1: MSTORE 000024f2: SWAP1 000024f3: KECCAK256 000024f4: DUP1 000024f5: SLOAD 000024f6: PUSH1 0xff 000024f8: NOT 000024f9: AND 000024fa: PUSH1 0x01 000024fc: OR 000024fd: SWAP1 000024fe: SSTORE 000024ff: CALLER 00002500: SWAP2 00002501: PUSH1 0x01 00002503: PUSH1 0x01 00002505: PUSH1 0xa0 00002507: SHL 00002508: SUB 00002509: AND 0000250a: SWAP1 0000250b: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 0000252c: PUSH0 0000252d: DUP1 0000252e: LOG4 0000252f: PUSH1 0x01 00002531: SWAP1 00002532: JUMP 00002533: JUMPDEST 00002534: POP 00002535: POP 00002536: PUSH0 00002537: SWAP1 00002538: JUMP 00002539: JUMPDEST 0000253a: PUSH0 0000253b: DUP2 0000253c: DUP2 0000253d: MSTORE 0000253e: PUSH0 0000253f: MLOAD 00002540: PUSH1 0x20 00002542: PUSH2 0x2995 00002545: PUSH0 00002546: CODECOPY 00002547: PUSH0 00002548: MLOAD 00002549: SWAP1 0000254a: PUSH0 0000254b: MSTORE 0000254c: PUSH1 0x20 0000254e: SWAP1 0000254f: DUP2 00002550: MSTORE 00002551: PUSH1 0x40 00002553: DUP1 00002554: DUP4 00002555: KECCAK256 00002556: PUSH1 0x01 00002558: PUSH1 0x01 0000255a: PUSH1 0xa0 0000255c: SHL 0000255d: SUB 0000255e: DUP7 0000255f: AND 00002560: DUP5 00002561: MSTORE 00002562: SWAP1 00002563: SWAP2 00002564: MSTORE 00002565: SWAP1 00002566: KECCAK256 00002567: SLOAD 00002568: PUSH1 0xff 0000256a: AND 0000256b: ISZERO 0000256c: PUSH2 0x2533 0000256f: JUMPI 00002570: PUSH0 00002571: DUP2 00002572: DUP2 00002573: MSTORE 00002574: PUSH0 00002575: MLOAD 00002576: PUSH1 0x20 00002578: PUSH2 0x2995 0000257b: PUSH0 0000257c: CODECOPY 0000257d: PUSH0 0000257e: MLOAD 0000257f: SWAP1 00002580: PUSH0 00002581: MSTORE 00002582: PUSH1 0x20 00002584: SWAP1 00002585: DUP2 00002586: MSTORE 00002587: PUSH1 0x40 00002589: DUP1 0000258a: DUP4 0000258b: KECCAK256 0000258c: PUSH1 0x01 0000258e: PUSH1 0x01 00002590: PUSH1 0xa0 00002592: SHL 00002593: SUB 00002594: DUP7 00002595: AND 00002596: DUP5 00002597: MSTORE 00002598: SWAP1 00002599: SWAP2 0000259a: MSTORE 0000259b: SWAP1 0000259c: KECCAK256 0000259d: DUP1 0000259e: SLOAD 0000259f: PUSH1 0xff 000025a1: NOT 000025a2: AND 000025a3: SWAP1 000025a4: SSTORE 000025a5: CALLER 000025a6: SWAP2 000025a7: PUSH1 0x01 000025a9: PUSH1 0x01 000025ab: PUSH1 0xa0 000025ad: SHL 000025ae: SUB 000025af: AND 000025b0: SWAP1 000025b1: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 000025d2: PUSH0 000025d3: DUP1 000025d4: LOG4 000025d5: PUSH1 0x01 000025d7: SWAP1 000025d8: JUMP 000025d9: JUMPDEST 000025da: PUSH1 0x40 000025dc: MLOAD 000025dd: PUSH4 0xa9059cbb 000025e2: PUSH1 0xe0 000025e4: SHL 000025e5: PUSH1 0x20 000025e7: DUP3 000025e8: ADD 000025e9: MSTORE 000025ea: PUSH1 0x01 000025ec: PUSH1 0x01 000025ee: PUSH1 0xa0 000025f0: SHL 000025f1: SUB 000025f2: SWAP3 000025f3: SWAP1 000025f4: SWAP3 000025f5: AND 000025f6: PUSH1 0x24 000025f8: DUP4 000025f9: ADD 000025fa: MSTORE 000025fb: PUSH1 0x44 000025fd: DUP1 000025fe: DUP4 000025ff: ADD 00002600: SWAP4 00002601: SWAP1 00002602: SWAP4 00002603: MSTORE 00002604: SWAP2 00002605: DUP2 00002606: MSTORE 00002607: PUSH2 0x0aa2 0000260a: SWAP2 0000260b: PUSH2 0x2086 0000260e: PUSH1 0x64 00002610: DUP4 00002611: PUSH2 0x0a6c 00002614: JUMP 00002615: JUMPDEST 00002616: SWAP1 00002617: DUP2 00002618: EXTCODESIZE 00002619: ISZERO 0000261a: PUSH2 0x2696 0000261d: JUMPI 0000261e: PUSH0 0000261f: MLOAD 00002620: PUSH1 0x20 00002622: PUSH2 0x2955 00002625: PUSH0 00002626: CODECOPY 00002627: PUSH0 00002628: MLOAD 00002629: SWAP1 0000262a: PUSH0 0000262b: MSTORE 0000262c: DUP1 0000262d: SLOAD 0000262e: PUSH1 0x01 00002630: PUSH1 0x01 00002632: PUSH1 0xa0 00002634: SHL 00002635: SUB 00002636: NOT 00002637: AND 00002638: PUSH1 0x01 0000263a: PUSH1 0x01 0000263c: PUSH1 0xa0 0000263e: SHL 0000263f: SUB 00002640: DUP5 00002641: AND 00002642: SWAP1 00002643: DUP2 00002644: OR 00002645: SWAP1 00002646: SWAP2 00002647: SSTORE 00002648: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 00002669: PUSH0 0000266a: DUP1 0000266b: LOG2 0000266c: DUP1 0000266d: MLOAD 0000266e: ISZERO 0000266f: PUSH2 0x267e 00002672: JUMPI 00002673: PUSH2 0x267b 00002676: SWAP2 00002677: PUSH2 0x285e 0000267a: JUMP 0000267b: JUMPDEST 0000267c: POP 0000267d: JUMP 0000267e: JUMPDEST 0000267f: POP 00002680: POP 00002681: CALLVALUE 00002682: PUSH2 0x2687 00002685: JUMPI 00002686: JUMP 00002687: JUMPDEST 00002688: PUSH4 0xb398979f 0000268d: PUSH1 0xe0 0000268f: SHL 00002690: PUSH0 00002691: MSTORE 00002692: PUSH1 0x04 00002694: PUSH0 00002695: REVERT 00002696: JUMPDEST 00002697: POP 00002698: PUSH4 0x4c9c8ce3 0000269d: PUSH1 0xe0 0000269f: SHL 000026a0: PUSH0 000026a1: SWAP1 000026a2: DUP2 000026a3: MSTORE 000026a4: PUSH1 0x01 000026a6: PUSH1 0x01 000026a8: PUSH1 0xa0 000026aa: SHL 000026ab: SUB 000026ac: SWAP2 000026ad: SWAP1 000026ae: SWAP2 000026af: AND 000026b0: PUSH1 0x04 000026b2: MSTORE 000026b3: PUSH1 0x24 000026b5: SWAP1 000026b6: REVERT 000026b7: JUMPDEST 000026b8: PUSH1 0xff 000026ba: PUSH0 000026bb: MLOAD 000026bc: PUSH1 0x20 000026be: PUSH2 0x2a15 000026c1: PUSH0 000026c2: CODECOPY 000026c3: PUSH0 000026c4: MLOAD 000026c5: SWAP1 000026c6: PUSH0 000026c7: MSTORE 000026c8: SLOAD 000026c9: PUSH1 0x40 000026cb: SHR 000026cc: AND 000026cd: ISZERO 000026ce: PUSH2 0x26d3 000026d1: JUMPI 000026d2: JUMP 000026d3: JUMPDEST 000026d4: PUSH4 0x1afcd79f 000026d9: PUSH1 0xe3 000026db: SHL 000026dc: PUSH0 000026dd: MSTORE 000026de: PUSH1 0x04 000026e0: PUSH0 000026e1: REVERT 000026e2: JUMPDEST 000026e3: DUP1 000026e4: SLOAD 000026e5: DUP3 000026e6: LT 000026e7: ISZERO 000026e8: PUSH2 0x26f7 000026eb: JUMPI 000026ec: PUSH0 000026ed: MSTORE 000026ee: PUSH1 0x20 000026f0: PUSH0 000026f1: KECCAK256 000026f2: ADD 000026f3: SWAP1 000026f4: PUSH0 000026f5: SWAP1 000026f6: JUMP 000026f7: JUMPDEST 000026f8: PUSH4 0x4e487b71 000026fd: PUSH1 0xe0 000026ff: SHL 00002700: PUSH0 00002701: MSTORE 00002702: PUSH1 0x32 00002704: PUSH1 0x04 00002706: MSTORE 00002707: PUSH1 0x24 00002709: PUSH0 0000270a: REVERT 0000270b: JUMPDEST 0000270c: PUSH1 0x01 0000270e: DUP2 0000270f: ADD 00002710: SWAP1 00002711: DUP3 00002712: PUSH0 00002713: MSTORE 00002714: DUP2 00002715: PUSH1 0x20 00002717: MSTORE 00002718: PUSH1 0x40 0000271a: PUSH0 0000271b: KECCAK256 0000271c: SLOAD 0000271d: ISZERO 0000271e: PUSH0 0000271f: EQ 00002720: PUSH2 0x276e 00002723: JUMPI 00002724: DUP1 00002725: SLOAD 00002726: PUSH1 0x01 00002728: PUSH1 0x40 0000272a: SHL 0000272b: DUP2 0000272c: LT 0000272d: ISZERO 0000272e: PUSH2 0x0a8e 00002731: JUMPI 00002732: PUSH2 0x275b 00002735: PUSH2 0x2745 00002738: DUP3 00002739: PUSH1 0x01 0000273b: DUP8 0000273c: SWAP5 0000273d: ADD 0000273e: DUP6 0000273f: SSTORE 00002740: DUP5 00002741: PUSH2 0x26e2 00002744: JUMP 00002745: JUMPDEST 00002746: DUP2 00002747: SWAP4 00002748: SWAP2 00002749: SLOAD 0000274a: SWAP1 0000274b: PUSH1 0x03 0000274d: SHL 0000274e: SWAP2 0000274f: DUP3 00002750: SHL 00002751: SWAP2 00002752: PUSH0 00002753: NOT 00002754: SWAP1 00002755: SHL 00002756: NOT 00002757: AND 00002758: OR 00002759: SWAP1 0000275a: JUMP 0000275b: JUMPDEST 0000275c: SWAP1 0000275d: SSTORE 0000275e: SLOAD 0000275f: SWAP2 00002760: PUSH0 00002761: MSTORE 00002762: PUSH1 0x20 00002764: MSTORE 00002765: PUSH1 0x40 00002767: PUSH0 00002768: KECCAK256 00002769: SSTORE 0000276a: PUSH1 0x01 0000276c: SWAP1 0000276d: JUMP 0000276e: JUMPDEST 0000276f: POP 00002770: POP 00002771: POP 00002772: PUSH0 00002773: SWAP1 00002774: JUMP 00002775: JUMPDEST 00002776: DUP1 00002777: SLOAD 00002778: DUP1 00002779: ISZERO 0000277a: PUSH2 0x279c 0000277d: JUMPI 0000277e: PUSH0 0000277f: NOT 00002780: ADD 00002781: SWAP1 00002782: PUSH2 0x278b 00002785: DUP3 00002786: DUP3 00002787: PUSH2 0x26e2 0000278a: JUMP 0000278b: JUMPDEST 0000278c: DUP2 0000278d: SLOAD 0000278e: SWAP1 0000278f: PUSH0 00002790: NOT 00002791: SWAP1 00002792: PUSH1 0x03 00002794: SHL 00002795: SHL 00002796: NOT 00002797: AND 00002798: SWAP1 00002799: SSTORE 0000279a: SSTORE 0000279b: JUMP 0000279c: JUMPDEST 0000279d: PUSH4 0x4e487b71 000027a2: PUSH1 0xe0 000027a4: SHL 000027a5: PUSH0 000027a6: MSTORE 000027a7: PUSH1 0x31 000027a9: PUSH1 0x04 000027ab: MSTORE 000027ac: PUSH1 0x24 000027ae: PUSH0 000027af: REVERT 000027b0: JUMPDEST 000027b1: SWAP1 000027b2: PUSH1 0x01 000027b4: DUP3 000027b5: ADD 000027b6: SWAP1 000027b7: DUP1 000027b8: PUSH0 000027b9: MSTORE 000027ba: DUP2 000027bb: PUSH1 0x20 000027bd: MSTORE 000027be: PUSH1 0x40 000027c0: PUSH0 000027c1: KECCAK256 000027c2: SLOAD 000027c3: SWAP2 000027c4: DUP3 000027c5: ISZERO 000027c6: ISZERO 000027c7: PUSH0 000027c8: EQ 000027c9: PUSH2 0x2856 000027cc: JUMPI 000027cd: PUSH0 000027ce: NOT 000027cf: DUP4 000027d0: ADD 000027d1: DUP4 000027d2: DUP2 000027d3: GT 000027d4: PUSH2 0x189e 000027d7: JUMPI 000027d8: DUP5 000027d9: PUSH2 0x2809 000027dc: SWAP5 000027dd: PUSH2 0x27fc 000027e0: SWAP3 000027e1: PUSH2 0x27eb 000027e4: PUSH0 000027e5: SWAP9 000027e6: SLOAD 000027e7: PUSH2 0x1890 000027ea: JUMP 000027eb: JUMPDEST 000027ec: SWAP1 000027ed: DUP2 000027ee: DUP2 000027ef: SUB 000027f0: PUSH2 0x280f 000027f3: JUMPI 000027f4: JUMPDEST 000027f5: POP 000027f6: POP 000027f7: POP 000027f8: PUSH2 0x2775 000027fb: JUMP 000027fc: JUMPDEST 000027fd: SWAP1 000027fe: PUSH0 000027ff: MSTORE 00002800: PUSH1 0x20 00002802: MSTORE 00002803: PUSH1 0x40 00002805: PUSH0 00002806: KECCAK256 00002807: SWAP1 00002808: JUMP 00002809: JUMPDEST 0000280a: SSTORE 0000280b: PUSH1 0x01 0000280d: SWAP1 0000280e: JUMP 0000280f: JUMPDEST 00002810: PUSH2 0x283f 00002813: PUSH2 0x2839 00002816: SWAP2 00002817: PUSH2 0x2830 0000281a: PUSH2 0x2826 0000281d: PUSH2 0x284d 00002820: SWAP6 00002821: DUP9 00002822: PUSH2 0x26e2 00002825: JUMP 00002826: JUMPDEST 00002827: SWAP1 00002828: SLOAD 00002829: SWAP1 0000282a: PUSH1 0x03 0000282c: SHL 0000282d: SHR 0000282e: SWAP1 0000282f: JUMP 00002830: JUMPDEST 00002831: SWAP3 00002832: DUP4 00002833: SWAP2 00002834: DUP8 00002835: PUSH2 0x26e2 00002838: JUMP 00002839: JUMPDEST 0000283a: SWAP1 0000283b: PUSH2 0x1868 0000283e: JUMP 0000283f: JUMPDEST 00002840: DUP6 00002841: SWAP1 00002842: PUSH0 00002843: MSTORE 00002844: PUSH1 0x20 00002846: MSTORE 00002847: PUSH1 0x40 00002849: PUSH0 0000284a: KECCAK256 0000284b: SWAP1 0000284c: JUMP 0000284d: JUMPDEST 0000284e: SSTORE 0000284f: PUSH0 00002850: DUP1 00002851: DUP1 00002852: PUSH2 0x27f4 00002855: JUMP 00002856: JUMPDEST 00002857: POP 00002858: POP 00002859: POP 0000285a: POP 0000285b: PUSH0 0000285c: SWAP1 0000285d: JUMP 0000285e: JUMPDEST 0000285f: PUSH0 00002860: DUP1 00002861: PUSH2 0x0937 00002864: SWAP4 00002865: PUSH1 0x20 00002867: DUP2 00002868: MLOAD 00002869: SWAP2 0000286a: ADD 0000286b: DUP5 0000286c: GAS 0000286d: DELEGATECALL 0000286e: PUSH2 0x2875 00002871: PUSH2 0x22db 00002874: JUMP 00002875: JUMPDEST 00002876: SWAP2 00002877: SWAP1 00002878: PUSH2 0x289a 0000287b: JUMPI 0000287c: POP 0000287d: DUP1 0000287e: MLOAD 0000287f: ISZERO 00002880: PUSH2 0x288b 00002883: JUMPI 00002884: DUP1 00002885: MLOAD 00002886: SWAP1 00002887: PUSH1 0x20 00002889: ADD 0000288a: REVERT 0000288b: JUMPDEST 0000288c: PUSH4 0xd6bda275 00002891: PUSH1 0xe0 00002893: SHL 00002894: PUSH0 00002895: MSTORE 00002896: PUSH1 0x04 00002898: PUSH0 00002899: REVERT 0000289a: JUMPDEST 0000289b: DUP2 0000289c: MLOAD 0000289d: ISZERO 0000289e: DUP1 0000289f: PUSH2 0x28cb 000028a2: JUMPI 000028a3: JUMPDEST 000028a4: PUSH2 0x28ab 000028a7: JUMPI 000028a8: POP 000028a9: SWAP1 000028aa: JUMP 000028ab: JUMPDEST 000028ac: PUSH4 0x9996b315 000028b1: PUSH1 0xe0 000028b3: SHL 000028b4: PUSH0 000028b5: SWAP1 000028b6: DUP2 000028b7: MSTORE 000028b8: PUSH1 0x01 000028ba: PUSH1 0x01 000028bc: PUSH1 0xa0 000028be: SHL 000028bf: SUB 000028c0: SWAP2 000028c1: SWAP1 000028c2: SWAP2 000028c3: AND 000028c4: PUSH1 0x04 000028c6: MSTORE 000028c7: PUSH1 0x24 000028c9: SWAP1 000028ca: REVERT 000028cb: JUMPDEST 000028cc: POP 000028cd: DUP1 000028ce: EXTCODESIZE 000028cf: ISZERO 000028d0: PUSH2 0x28a3 000028d3: JUMP 000028d4: INVALID 000028d5: CODECOPY 000028d6: UNKNOWN(0xBA) 000028d7: UNKNOWN(0x2C) 000028d8: PUSH31 0x84b6d94350b0167bb3d872a8c3c981ee0b9746fbaa23ef1d87c8e2fcc1f6fe 000028f8: UNKNOWN(0x24) 000028f9: PUSH3 0x1ce81e 000028fd: UNKNOWN(0xC5) 000028fe: DUP3 000028ff: PUSH29 0xaf0253cadb74709b061630e6b55e8237170593200016e84c2dbfa53b4a 0000291d: PUSH19 0x03d35619fa215428efef7afd02210aec0dbc6e 00002931: JUMPDEST 00002932: PUSH12 0x8c6216e84c2dbfa53b4a7203 0000293f: UNKNOWN(0xD3) 00002940: JUMP 00002941: NOT 00002942: STATICCALL 00002943: UNKNOWN(0x21) 00002944: SLOAD 00002945: UNKNOWN(0x28) 00002946: UNKNOWN(0xEF) 00002947: UNKNOWN(0xEF) 00002948: PUSH27 0xfd02210aec0dbc6e5b6b8c60360894a13ba1a3210667c828492db9 00002964: DUP14 00002965: UNKNOWN(0xCA) 00002966: RETURNDATACOPY 00002967: KECCAK256 00002968: PUSH23 0xcc3735a920a3ca505d382bbcdf8b4c520ffe197c5343c6 00002980: CREATE2 00002981: UNKNOWN(0xAE) 00002982: UNKNOWN(0xC5) 00002983: SWAP6 00002984: PUSH17 0x151ef9a492f2c624fd45ddde6135ec4202 00002996: UNKNOWN(0xDD) 00002997: PUSH28 0xc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268 000029b4: STOP 000029b5: UNKNOWN(0xCD) 000029b6: MCOPY 000029b7: UNKNOWN(0xD1) 000029b8: TLOAD 000029b9: PUSH15 0x187e77e9aee88184c21f4f2182ab58 000029c9: UNKNOWN(0x27) 000029ca: UNKNOWN(0xCB) 000029cb: EXTCODESIZE 000029cc: PUSH31 0x07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817 000029ec: UNKNOWN(0xE2) 000029ed: BASEFEE 000029ee: PUSH14 0x003becc55f0016e84c2dbfa53b4a 000029fd: PUSH19 0x03d35619fa215428efef7afd02210aec0dbc6e 00002a11: JUMPDEST 00002a12: PUSH12 0x8c5ef0c57e16840df040f150 00002a1f: DUP9 00002a20: UNKNOWN(0xDC) 00002a21: UNKNOWN(0x2F) 00002a22: DUP2 00002a23: INVALID 00002a24: CODECOPY 00002a25: SHR 00002a26: CODECOPY 00002a27: UNKNOWN(0x23) 00002a28: UNKNOWN(0xBE) 00002a29: UNKNOWN(0xC7) 00002a2a: RETURNDATACOPY 00002a2b: UNKNOWN(0x23) 00002a2c: UNKNOWN(0xA9) 00002a2d: PUSH7 0x2efc9c229c6a00 00002a35: AND 00002a36: UNKNOWN(0xE8) 00002a37: UNKNOWN(0x4C) 00002a38: UNKNOWN(0x2D) 00002a39: UNKNOWN(0xBF) 00002a3a: UNKNOWN(0xA5) 00002a3b: EXTCODESIZE 00002a3c: BLOBBASEFEE 00002a3d: PUSH19 0x03d35619fa215428efef7afd02210aec0dbc6e 00002a51: JUMPDEST 00002a52: PUSH12 0x8c5fa2646970667358221220 00002a5f: UNKNOWN(0xE7) 00002a60: CREATE2 00002a61: UNKNOWN(0xF8) 00002a62: UNKNOWN(0x4F) 00002a63: UNKNOWN(0xBE) 00002a64: UNKNOWN(0x1F) 00002a65: PUSH27 0x6d9ffca7a56dfa46b0d5987218ee74e5d1044fa0cd80adc3f76473 00002a81: PUSH16
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x676c324a8c5026df5b2293fc548d84f744f966aa6b54e3732dd8268faa8d8319
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x676c324a8c5026df5b2293fc548d84f744f966aa6b54e3732dd8268faa8d8319",
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1be1c18f",
"selector": "0x1be1c18f",
"calldata_variants": [
"0x1be1c18f",
"0x1be1c18f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x25356bc7",
"selector": "0x25356bc7",
"calldata_variants": [
"0x25356bc7",
"0x25356bc70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33b5b0b5",
"selector": "0x33b5b0b5",
"calldata_variants": [
"0x33b5b0b5",
"0x33b5b0b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3f4ba83a",
"selector": "0x3f4ba83a",
"calldata_variants": [
"0x3f4ba83a",
"0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10349,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x62dcca98d8c05cab99d22c5417d92cc3aad7d49d17b5ba6dbdd8cf8871600172
call_targets:
0x6c2708dca4d553998b2c86724ec24312456baf88
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x62dcca98d8c05cab99d22c5417d92cc3aad7d49d17b5ba6dbdd8cf8871600172",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6c2708dca4d553998b2c86724ec24312456baf88"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1be1c18f",
"selector": "0x1be1c18f",
"calldata_variants": [
"0x1be1c18f",
"0x1be1c18f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x25356bc7",
"selector": "0x25356bc7",
"calldata_variants": [
"0x25356bc7",
"0x25356bc70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33b5b0b5",
"selector": "0x33b5b0b5",
"calldata_variants": [
"0x33b5b0b5",
"0x33b5b0b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3f4ba83a",
"selector": "0x3f4ba83a",
"calldata_variants": [
"0x3f4ba83a",
"0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1521,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1889,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6505,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x62dcca98d8c05cab99d22c5417d92cc3aad7d49d17b5ba6dbdd8cf8871600172
call_targets:
0x6c2708dca4d553998b2c86724ec24312456baf88
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x62dcca98d8c05cab99d22c5417d92cc3aad7d49d17b5ba6dbdd8cf8871600172",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6c2708dca4d553998b2c86724ec24312456baf88"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1be1c18f",
"selector": "0x1be1c18f",
"calldata_variants": [
"0x1be1c18f",
"0x1be1c18f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x25356bc7",
"selector": "0x25356bc7",
"calldata_variants": [
"0x25356bc7",
"0x25356bc70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33b5b0b5",
"selector": "0x33b5b0b5",
"calldata_variants": [
"0x33b5b0b5",
"0x33b5b0b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3f4ba83a",
"selector": "0x3f4ba83a",
"calldata_variants": [
"0x3f4ba83a",
"0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1521,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1889,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6505,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xedf4f67af3733b4cf9352aae5f562e1d2c30b8e7d92f13e80fe68793ffadb2a4
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xedf4f67af3733b4cf9352aae5f562e1d2c30b8e7d92f13e80fe68793ffadb2a4",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1be1c18f",
"selector": "0x1be1c18f",
"calldata_variants": [
"0x1be1c18f",
"0x1be1c18f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x25356bc7",
"selector": "0x25356bc7",
"calldata_variants": [
"0x25356bc7",
"0x25356bc70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33b5b0b5",
"selector": "0x33b5b0b5",
"calldata_variants": [
"0x33b5b0b5",
"0x33b5b0b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3f4ba83a",
"selector": "0x3f4ba83a",
"calldata_variants": [
"0x3f4ba83a",
"0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 11
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|