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

Analysis Run

999e3afe-a5dc-4634-9a7f-d62e0bd75fe1

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 8:24 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30576 report.consolidate complete 1 / 1 3 months ago
104315 artifact.fetch complete 1 / 3 1 week ago
104316 tool.cast_disasm complete 1 / 3 1 week ago
104317 analysis.bundle complete 1 / 3 1 week ago
104318 capability.graph complete 1 / 3 1 week ago
104319 detector.run complete 1 / 3 1 week ago
104320 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, bytecode-evident vulnerabilities identified from the runtime bytecode alone; limited confidence due to lack of verified source and high-level context (upgradeability and external-call paths could not be fully assessed).
View stderr
[codex:1272807] OpenAI Codex v0.77.0 (research preview)
[codex:1272807] --------
[codex:1272807] workdir: /tmp/codex-multi-9s2ko_zr
[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: 019b6bc2-c602-7932-8b61-12c71142be8b
[codex:1272807] --------
[codex:1272807] user
[codex:1272807] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1272807] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1272807] 
[codex:1272807] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1272807] 
[codex:1272807] Output MUST be valid JSON matching the provided schema.
[codex:1272807] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1272807] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1272807] 
[codex:1272807] Output constraints (IMPORTANT):
[codex:1272807] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1272807] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1272807] mcp startup: no servers
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc ls in /tmp/codex-multi-9s2ko_zr succeeded in 5ms:
[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-9s2ko_zr 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 vulnerabilities**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc 'rg -n "5af4|f4" BYTECODE_BUNDLE.txt' in /tmp/codex-multi-9s2ko_zr succeeded in 8ms:
[codex:1272807] 5:0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301ffc9a7146102c95780631be1c18f146102c4578063248a9ca3146102bf57806325356bc7146102ba5780632f2ff15d146102b557806333b5b0b5146102b057806336568abe146102ab5780633f4ba83a146102a657806341d5e516146102a15780634de165c31461029c5780634f1ef2861461029757806351cdc60a1461029257806352d1902d1461028d578063551512de146102885780635c975abb146102835780635cd8a76b1461027e57806360f525ed14610279578063807496a8146102745780638129fc1c1461026f5780638456cb591461026a578063853418ab1461026557806386c0c701146102605780638d9594081461025b5780639010d07c1461025657806391d148541461025157806392cda7911461024c578063963bf6bd1461024757806398a1b39714610242578063a217fddf1461023d578063a3246ad314610238578063a5de361914610233578063ad3cb1cc1461022e578063affe39c114610229578063b0f479a114610224578063c0d786551461021f578063c21fdc8f1461021a578063ca15c87314610215578063d391014b14610210578063d547741f1461020b578063d70e1ede14610206578063e673df8a14610201578063f2fde38b146101fc5763ffa1ad740361000e57611815565b6117b8565b611713565b6116ec565b6116b5565b61168e565b611658565b6115b3565b611550565b61151c565b611477565b611419565b611374565b6112f4565b611298565b61125e565b61122a565b6111cb565b61116d565b61111c565b6110b9565b61105c565b611033565b610fc2565b610eb7565b610e8a565b610e27565b610d5a565b610d2c565b610ceb565b610c94565b610c60565b610af6565b6109ed565b61093a565b610890565b61083e565b6107ff565b6107b9565b61045c565b6103f5565b61034e565b346103395760203660031901126103395760043563ffffffff60e01b811680910361033957635a05180f60e01b811490811561030e575b506040519015158152602090f35b637965db0b60e01b811491508115610328575b505f610300565b6301ffc9a760e01b1490505f610321565b5f80fd5b6001600160a01b0381160361033957565b346103395760603660031901126103395760043561036b8161033d565b60243580151581036103395760443590610383611b5e565b6001600160a01b038316156103e657156103d2576103b5610018926103a6610a93565b60018152926020840152611830565b9060206001918051151560ff801986541691161784550151910155565b5060016103df5f92611830565b8281550155005b63c4c4d4e160e01b5f5260045ffd5b34610339576020366003190112610339576004355f525f5160206129955f395f51905f526020526020600160405f200154604051908152f35b9181601f840112156103395782359167ffffffffffffffff8311610339576020838186019501011161033957565b3461033957610100366003190112610339576024356004356044356104808161033d565b606435906084356104908161033d565b60a4359460c4359160e43567ffffffffffffffff8111610339576104b890369060040161042e565b906104c1611c78565b6104c9611cd4565b6104d1611d0c565b6104da86611830565b805460ff161561079d57600101548088116107865750906104ff91858489898c611d51565b604080516001600160a01b038716602082019081529181018890526060810195909552909361053b81608081015b03601f198101835282610a6c565b5190205f5160206129355f395f51905f52546001600160a01b031693906105628584611f56565b948261056d85611fbf565b156106df5750505f5160206129355f395f51905f52546105a390610597906001600160a01b031681565b6001600160a01b031690565b90813b156103395760405163fed2939760e01b8152600481018a9052602481018690526001600160a01b0385166044820152606481018490526084810191909152915f91839160a4918391905af180156106da576106c0575b505b5f5160206129355f395f51905f525461062a906001600160a01b0316936106258584611f56565b6118b2565b968088106106a95750604080516001600160a01b039586168152602081019690965290841690850152606084019590955260808301949094529290921660a0830152907fb269ea1bfae777182ecbadeb1aceea31445e58d011800aef22f18c98bf3137ff9060c090a261001860015f5160206129d55f395f51905f5255565b632b90f88960e01b5f52600488905260245260445ffd5b806106ce5f6106d493610a6c565b80610886565b5f6105fc565b611885565b6106f2916001600160a01b038616611fe7565b5f5160206129355f395f51905f525461071590610597906001600160a01b031681565b90813b156103395760405163fed2939760e01b8152600481018a9052602481018690526001600160a01b0385166044820152606481019390935260848301525f90829060a490829084905af180156106da57610772575b506105fe565b806106ce5f61078093610a6c565b5f61076c565b63f76aa3d760e01b5f52600488905260245260445ffd5b63d334e6bd60e01b5f526001600160a01b03871660045260245ffd5b34610339576040366003190112610339576004356024356107d98161033d565b6107e1611b5e565b81156107f057610018916121fc565b63078ea36760e21b5f5260045ffd5b346103395760203660031901126103395760406108266004356108218161033d565b611830565b600160ff825416910154825191151582526020820152f35b346103395760403660031901126103395760043560243561085e8161033d565b336001600160a01b038216036108775761001891612299565b63334bd91960e11b5f5260045ffd5b5f91031261033957565b34610339575f366003190112610339576108a8611b5e565b5f5160206129b55f395f51905f525460ff8116156108ff5760ff19165f5160206129b55f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b6060906003190112610339576004356109268161033d565b90602435906044356109378161033d565b90565b34610339576109483661090e565b91610951611bba565b6001600160a01b0383169182156103e6575f516020612a355f395f51905f52546001600160a01b03168084036109d657507f64336c2c468e7484a74b9f0ef79fe767455ab9373c75d9578d2415770f9f516c936109ae918361230a565b604080513381526001600160a01b0390931660208401528201526060810191909152608090a1005b839063f37d38f360e01b5f5260045260245260445ffd5b346103395761012036600319011261033957604435602435600435610a118361033d565b606435608435610a208161033d565b60a43560c4359160e43593610104359767ffffffffffffffff891161033957610a5061001899369060040161042e565b9890976118bf565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610a8e57604052565b610a58565b60405190610aa2604083610a6c565b565b67ffffffffffffffff8111610a8e57601f01601f191660200190565b929192610acc82610aa4565b91610ada6040519384610a6c565b829481845281830111610339578281602093845f960137010152565b604036600319011261033957600435610b0e8161033d565b60243567ffffffffffffffff8111610339573660238201121561033957610b3f903690602481600401359101610ac0565b906001600160a01b037f0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf8816308114908115610c3e575b50610c2f57610b82611c29565b6040516352d1902d60e01b8152916020836004816001600160a01b0386165afa5f9381610bfe575b50610bcb57634c9c8ce360e01b5f526001600160a01b03821660045260245ffd5b905f5160206129555f395f51905f528303610bea576100189250612615565b632a87526960e21b5f52600483905260245ffd5b610c2191945060203d602011610c28575b610c198183610a6c565b810190611f47565b925f610baa565b503d610c0f565b63703e46dd60e11b5f5260045ffd5b5f5160206129555f395f51905f52546001600160a01b0316141590505f610b75565b34610339575f366003190112610339575f5160206129355f395f51905f52546040516001600160a01b039091168152602090f35b34610339575f366003190112610339577f0000000000000000000000006c2708dca4d553998b2c86724ec24312456baf886001600160a01b03163003610c2f5760206040515f5160206129555f395f51905f528152f35b3461033957610cf93661090e565b90610d02611b5e565b6001600160a01b038216156103e657610018928161230a579050610d263082611f56565b9061230a565b34610339575f36600319011261033957602060ff5f5160206129b55f395f51905f5254166040519015158152f35b34610339575f366003190112610339575f516020612a155f395f51905f525460ff8160401c168015610e12575b610e035767ffffffffffffffff19166002175f516020612a155f395f51905f5255610db0611a44565b610dc76103e85f5160206129155f395f51905f5255565b610dcf611a71565b604051600281527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081015b0390a1005b63f92ee8a960e01b5f5260045ffd5b50600267ffffffffffffffff82161015610d87565b3461033957602036600319011261033957600435610e448161033d565b610e4c611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f516020612a355f395f51905f525416175f516020612a355f395f51905f52555f80f35b3461033957602036600319011261033957600435610ea6611bba565b5f5160206129155f395f51905f5255005b34610339575f366003190112610339575f516020612a155f395f51905f525467ffffffffffffffff610ef960ff604084901c16159267ffffffffffffffff1690565b1680159081610fba575b6001149081610fb0575b159081610fa7575b50610e035780610f4c600167ffffffffffffffff195f516020612a155f395f51905f525416175f516020612a155f395f51905f5255565b610f9a575b610f59611a98565b610f5f57005b610f67611a71565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2908060208101610dfe565b610fa2611a44565b610f51565b9050155f610f15565b303b159150610f0d565b829150610f03565b34610339575f36600319011261033957610fda611bba565b610fe2611d0c565b600160ff195f5160206129b55f395f51905f525416175f5160206129b55f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610339575f3660031901126103395760205f5160206129155f395f51905f5254604051908152f35b346103395760203660031901126103395760043567ffffffffffffffff8111610339573660238201121561033957806004013567ffffffffffffffff8111610339573660248260051b840101116103395760246100189201611b23565b34610339576020366003190112610339576004356110d68161033d565b6110de611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f5160206129355f395f51905f525416175f5160206129355f395f51905f52555f80f35b34610339576040366003190112610339576020611154600435602435905f525f5160206128f55f395f51905f52835260405f206126e2565b905460405160039290921b1c6001600160a01b03168152f35b3461033957604036600319011261033957602060ff6111bf6024356004356111948261033d565b5f525f5160206129955f395f51905f52845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461033957602036600319011261033957602061122060043560ff6001918060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052161b60405f205416151590565b6040519015158152f35b34610339575f366003190112610339575f516020612a355f395f51905f52546040516001600160a01b039091168152602090f35b34610339575f3660031901126103395760206040517f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c8152f35b34610339575f3660031901126103395760206040515f8152f35b60206040818301928281528451809452019201905f5b8181106112d55750505090565b82516001600160a01b03168452602093840193909201916001016112c8565b34610339576020366003190112610339576004355f525f5160206128f55f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b81811061135e5761135a8561134e81870382610a6c565b604051918291826112b2565b0390f35b8254845260209093019260019283019201611337565b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e0780548083525f91825291928301917f45560313361b5a38ee0e8c7f279a68bf043f9cb947ebdcce8948183ec1f0e38c915b8181106114035761135a8561134e81870382610a6c565b82548452602090930192600192830192016113ec565b34610339575f3660031901126103395760408051906114388183610a6c565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd4480548083525f91825291928301917f61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca915b8181106115065761135a8561134e81870382610a6c565b82548452602090930192600192830192016114ef565b34610339575f366003190112610339575f5160206129f55f395f51905f52546040516001600160a01b039091168152602090f35b346103395760203660031901126103395760043561156d8161033d565b611575611b5e565b6001600160a01b031680156103e6576001600160601b0360a01b5f5160206129f55f395f51905f525416175f5160206129f55f395f51905f52555f80f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517fcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c745080548083525f91825291928301917f6235272e13bbfead3f9c15da48c9b51dac727bff8adcf3c32351386f89222b06915b8181106116425761135a8561134e81870382610a6c565b825484526020909301926001928301920161162b565b34610339576020366003190112610339576004355f525f5160206128f55f395f51905f52602052602060405f2054604051908152f35b34610339575f3660031901126103395760206040515f5160206129755f395f51905f528152f35b34610339576040366003190112610339576004356024356116d58161033d565b6116dd611b5e565b81156107f05761001891612299565b34610339575f3660031901126103395760206040515f5160206128d55f395f51905f528152f35b34610339575f366003190112610339575f5160206128f55f395f51905f5260209081526040517f019d3d0c2386ec3a05bb7001d2bbf079e6fe7bfbe6e95c923cb544f16e2385d980548083525f91825291928301917f4d49d3f1622cef4a4245a42dc22c778f6b2708ebc8f710caa71f99728be94f24915b8181106117a25761135a8561134e81870382610a6c565b825484526020909301926001928301920161178b565b34610339576020366003190112610339576004356117d58161033d565b6117dd611c29565b6001600160a01b03811680156103e6573314611806576117fc906120b7565b506100183361223e565b630f97879560e11b5f5260045ffd5b34610339575f36600319011261033957602060405160028152f35b6001600160a01b03165f9081527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c616020526040902090565b916118819183549060031b91821b915f19901b19161790565b9055565b6040513d5f823e3d90fd5b5f1981019190821161189e57565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161189e57565b97909394999891959692966118d2611c78565b6118da611cd4565b6118e2611d0c565b6118f56118ee87611830565b5460ff1690565b15611a28575f5160206129355f395f51905f525461191d90610597906001600160a01b031681565b803b1561033957604051635d7208c360e01b8152600481018790526001600160a01b0389166024820152604481018a905230606482015260848101959095525f90859060a490829084905af19384156106da5761198394611a14575b508588888b611d51565b968088106106a957505f5160206129355f395f51905f5254604080516001600160a01b0395861681526020810196909652928416928501929092526060840196909652608083019590955290931660a084015290917f85054a8fd86129e0a5aea9ca073abf083e3e702f5244a605506568a3013760299060c090a2610aa260015f5160206129d55f395f51905f5255565b806106ce5f611a2293610a6c565b5f611979565b63d334e6bd60e01b5f526001600160a01b03861660045260245ffd5b600160401b60ff60401b195f516020612a155f395f51905f525416175f516020612a155f395f51905f5255565b60ff60401b195f516020612a155f395f51905f5254165f516020612a155f395f51905f5255565b611aa06126b7565b611aa86126b7565b611ab06126b7565b611ab86126b7565b60ff195f5160206129b55f395f51905f5254165f5160206129b55f395f51905f5255611ae26126b7565b611aea6126b7565b60015f5160206129d55f395f51905f5255611b04336120b7565b50611b0e33612112565b506103e85f5160206129155f395f51905f5255565b91611b2c611b5e565b5f5b82811015611b5857600190611b518160051b860135611b4c8161033d565b612187565b5001611b2e565b50915050565b335f9081527f78e571b7bf30584d955e1c6444a2b5147087edf9f00485d94993a04d370525ea602052604090205460ff1615611b9657565b63e2517d3f60e01b5f52336004525f5160206129755f395f51905f5260245260445ffd5b335f9081527f5dfc6369ede8c1331430c00b581919993675ec010140508e8a499d5c8bfbd937602052604090205460ff1615611bf257565b63e2517d3f60e01b5f52336004527f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c60245260445ffd5b335f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615611c6157565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f5ec2739e5d83ac0ee57f9f9a8bc0de261073ceffe84d59692a58d0a7bbee3e32602052604090205460ff1615611cb057565b63e2517d3f60e01b5f52336004525f5160206128d55f395f51905f5260245260445ffd5b60025f5160206129d55f395f51905f525414611cfd5760025f5160206129d55f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f5160206129b55f395f51905f525416611d2457565b63d93c066560e01b5f5260045ffd5b8115611d3d570490565b634e487b7160e01b5f52601260045260245ffd5b90919596949342811115611f315750611da08160ff6001918060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052161b60405f205416151590565b611f1f57611e49611e579392611def611e51938060081c5f527f16e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5d602052600160ff60405f2092161b8154179055565b611e42611dfc3083611f56565b99611e073087611f56565b97611e1184611fbf565b15611ee757611e3c8b915b5f5160206129f55f395f51905f52546001600160a01b0316933691610ac0565b91612412565b3090611f56565b913090611f56565b956118b2565b9383851115611e795763060a35db60e11b5f526004849052602485905260445ffd5b909192808510611ea8575b50611e909293506118b2565b8015611e995790565b63861c9e8560e01b5f5260045ffd5b611eb285826118b2565b611eca5f5160206129155f395f51905f525483611d33565b1015611e84576341257fa160e11b5f52600485905260245260445ffd5b5f5160206129f55f395f51905f52545f91611e3c91611f1a908e906001600160a01b03166001600160a01b038916611fe7565b611e1c565b6337106bcb60e21b5f5260045260245ffd5b634b2d84db60e01b5f524260045260245260445ffd5b90816020910312610339575190565b611f5f81611fbf565b15611f6957503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa9081156106da575f91611fa6575b5090565b610937915060203d602011610c2857610c198183610a6c565b6001600160a01b031680156103e65773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60405163095ea7b360e01b60208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90612026606486610a6c565b84519082855af15f51903d8161208b575b501590505b61204557505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044840152610aa29261208690612080816064810161052d565b82612439565b612439565b151590506120ab575061203c6001600160a01b0382163b15155b5f612037565b600161203c91146120a5565b6120c1815f612491565b90816120cb575090565b5f80525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd4461270b565b612129815f5160206129755f395f51905f52612491565b9081612133575090565b5f5160206129755f395f51905f525f525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f7373abf07576b601f64b36d74d862c7ba4181047674cccb39b488c1eee141e0761270b565b61219e815f5160206128d55f395f51905f52612491565b90816121a8575090565b5f5160206128d55f395f51905f525f525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167fcce5cadda4dca873250efd56882ba972f6be8519e5afa32ce3bf6829be0c745061270b565b6122068282612491565b918261221157505090565b5f9182525f5160206128f55f395f51905f526020526040909120611fa2916001600160a01b03169061270b565b612248815f612539565b9081612252575090565b5f80525f5160206128f55f395f51905f52602052611fa2906001600160a01b03167f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd446127b0565b6122a38282612539565b91826122ae57505090565b5f9182525f5160206128f55f395f51905f526020526040909120611fa2916001600160a01b0316906127b0565b3d15612305573d906122ec82610aa4565b916122fa6040519384610a6c565b82523d5f602084013e565b606090565b91819261231681611fbf565b1561234f57505f918291829182916001600160a01b03165af16123376122db565b50156123405790565b630c08bcb960e21b5f5260045ffd5b6040516370a0823160e01b81523060048201526001600160a01b03919091169391925090602082602481875afa9182156106da575f926123ef575b506123969192846125d9565b6040516370a0823160e01b815230600482015291602090839060249082905afa9081156106da57610937925f926123ce575b506118b2565b6123e891925060203d602011610c2857610c198183610a6c565b905f6123c8565b612396925061240c9060203d602011610c2857610c198183610a6c565b9161238a565b915f928392602083519301915af16124286122db565b90156124315750565b602081519101fd5b905f602091828151910182855af115611885575f513d61248857506001600160a01b0381163b155b6124685750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415612461565b5f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16612533575f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b5f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615612533575f8181525f5160206129955f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152610aa291612086606483610a6c565b90813b15612696575f5160206129555f395f51905f5280546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a280511561267e5761267b9161285e565b50565b50503461268757565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b60ff5f516020612a155f395f51905f525460401c16156126d357565b631afcd79f60e31b5f5260045ffd5b80548210156126f7575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f1461276e578054600160401b811015610a8e5761275b6127458260018794018555846126e2565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b8054801561279c575f19019061278b82826126e2565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b906001820190805f528160205260405f2054918215155f14612856575f19830183811161189e5784612809946127fc926127eb5f9854611890565b9081810361280f575b505050612775565b905f5260205260405f2090565b55600190565b61283f6128399161283061282661284d95886126e2565b90549060031b1c90565b928391876126e2565b90611868565b85905f5260205260405f2090565b555f80806127f4565b505050505f90565b5f8061093793602081519101845af46128756122db565b919061289a575080511561288b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806128cb575b6128ab575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156128a356fe39ba2c7e84b6d94350b0167bb3d872a8c3c981ee0b9746fbaa23ef1d87c8e2fcc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c6216e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c60360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4202dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5ef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0016e84c2dbfa53b4a7203d35619fa215428efef7afd02210aec0dbc6e5b6b8c5fa2646970667358221220e7f5f84fbe1f7a6d9ffca7a56dfa46b0d5987218ee74e5d1044fa0cd80adc3f764736f6c634300081c0033
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Planning opcode disassembly script**
[codex:1272807] 
[codex:1272807] I'm thinking about building a Python script to parse EVM bytecode into opcodes so I can accurately detect instructions like delegatecall, selfdestruct, and callcode. Just searching hex isn't reliable since some bytes are data from PUSH instructions. By decoding sequentially and tracking push lengths, I can spot suspicious opcodes’ positions and maybe infer proxy patterns or upgradeability risks with more context. This approach should help flag concrete flags without overclaiming vulnerabilities.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] import re
[codex:1272807] from pathlib import Path
[codex:1272807] code = Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines()
[codex:1272807] hexline = None
[codex:1272807] for line in code:
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline = line.strip()
[codex:1272807]         break
[codex:1272807] if not hexline:
[codex:1272807]     raise SystemExit('no hex')
[codex:1272807] hexstr = hexline[2:]
[codex:1272807] # ensure even length
[codex:1272807] if len(hexstr)%2:
[codex:1272807]     print('odd length')
[codex:1272807] 
[codex:1272807] data = bytes.fromhex(hexstr)
[codex:1272807] # disassemble and record opcode positions
[codex:1272807] opnames = {}
[codex:1272807] # create simple opcode name map for a few
[codex:1272807] for i in range(256):
[codex:1272807]     opnames[i] = None
[codex:1272807] # fill push
[codex:1272807] for i in range(1,33):
[codex:1272807]     opnames[0x5f + i] = f'PUSH{i}'
[codex:1272807] # name some
[codex:1272807] names = {
[codex:1272807] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 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] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1272807] }
[codex:1272807] for k,v in names.items():
[codex:1272807]     opnames[k]=v
[codex:1272807] 
[codex:1272807] positions = {0xf4:[],0xff:[],0xf0:[],0xf5:[],0xf2:[],0xf1:[],0xfa:[]}
[codex:1272807] 
[codex:1272807] pc=0
[codex:1272807] while pc < len(data):
[codex:1272807]     op = data[pc]
[codex:1272807]     if op in positions:
[codex:1272807]         positions[op].append(pc)
[codex:1272807]     if 0x60 <= op <= 0x7f:
[codex:1272807]         push_len = op-0x5f
[codex:1272807]         pc += 1+push_len
[codex:1272807]     else:
[codex:1272807]         pc += 1
[codex:1272807] 
[codex:1272807] print('len',len(data))
[codex:1272807] for op,pcs in positions.items():
[codex:1272807]     print(hex(op), opnames[op], len(pcs), pcs[:10])
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 33ms:
[codex:1272807] len 10890
[codex:1272807] 0xf4 DELEGATECALL 1 [10349]
[codex:1272807] 0xff SELFDESTRUCT 0 []
[codex:1272807] 0xf0 CREATE 0 []
[codex:1272807] 0xf5 CREATE2 2 [10624, 10848]
[codex:1272807] 0xf2 CALLCODE 0 []
[codex:1272807] 0xf1 CALL 7 [1521, 1889, 6505, 8237, 9007, 9248, 9287]
[codex:1272807] 0xfa STATICCALL 5 [2978, 8084, 9084, 9142, 10562]
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing delegatecall usage for upgradeability risks**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] import textwrap
[codex:1272807] hexline = None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline = line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code = bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] def disasm(start, end):
[codex:1272807]     pc = start
[codex:1272807]     out = []
[codex:1272807]     while pc < end:
[codex:1272807]         op = code[pc]
[codex:1272807]         name = None
[codex:1272807]         if 0x60 <= op <= 0x7f:
[codex:1272807]             l = op-0x5f
[codex:1272807]             data = code[pc+1:pc+1+l]
[codex:1272807]             name = f'PUSH{l} 0x{data.hex()}'
[codex:1272807]             out.append(f'{pc:05d}: {name}')
[codex:1272807]             pc += 1+l
[codex:1272807]             continue
[codex:1272807]         names = {
[codex:1272807]             0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807]             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]             0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1272807]         }
[codex:1272807]         name = names.get(op, f'OP{op:02x}')
[codex:1272807]         out.append(f'{pc:05d}: {name}')
[codex:1272807]         pc += 1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] # show around delegatecall
[codex:1272807] pc = 10349
[codex:1272807] start = pc-40
[codex:1272807] end = pc+40
[codex:1272807] for line in disasm(start, end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 30ms:
[codex:1272807] 10309: SHA3
[codex:1272807] 10310: MSTORE
[codex:1272807] 10311: PUSH1 0x40
[codex:1272807] 10313: OP5f
[codex:1272807] 10314: SHA3
[codex:1272807] 10315: OP90
[codex:1272807] 10316: JUMP
[codex:1272807] 10317: JUMPDEST
[codex:1272807] 10318: SSTORE
[codex:1272807] 10319: OP5f
[codex:1272807] 10320: OP80
[codex:1272807] 10321: OP80
[codex:1272807] 10322: PUSH2 0x27f4
[codex:1272807] 10325: JUMP
[codex:1272807] 10326: JUMPDEST
[codex:1272807] 10327: POP
[codex:1272807] 10328: POP
[codex:1272807] 10329: POP
[codex:1272807] 10330: POP
[codex:1272807] 10331: OP5f
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Updating opcode mappings for disassembler**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] 
[codex:1272807] hexline = None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline = line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code = bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names = {
[codex:1272807]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807]     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',0x5f:'PUSH0',
[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] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] pc=10349
[codex:1272807] start=pc-60
[codex:1272807] end=pc+60
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 30ms:
[codex:1272807] 10289: SWAP3
[codex:1272807] 10290: DUP4
[codex:1272807] 10291: SWAP2
[codex:1272807] 10292: DUP8
[codex:1272807] 10293: PUSH2 0x26e2
[codex:1272807] 10296: JUMP
[codex:1272807] 10297: JUMPDEST
[codex:1272807] 10298: SWAP1
[codex:1272807] 10299: PUSH2 0x1868
[codex:1272807] 10302: JUMP
[codex:1272807] 10303: JUMPDEST
[codex:1272807] 10304: DUP6
[codex:1272807] 10305: SWAP1
[codex:1272807] 10306: PUSH0
[codex:1272807] 10307: MSTORE
[codex:1272807] 10308: PUSH1 0x20
[codex:1272807] 10310: MSTORE
[codex:1272807] 10311: PUSH1 0x40
[codex:1272807] 10313: PUSH0
[codex:1272807] 10314: SHA3
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing delegatecall usage and potential risks**
[codex:1272807] 
[codex:1272807] I'm inspecting a delegatecall around bytecode offset 10349, trying to determine if its target address could be user-controlled, which would be risky. This delegatecall seems part of a utility function, possibly from a library, so I want to see if external functions pass user input to it. I'm also looking for related patterns like CREATE2 usage, access control errors, hardcoded addresses, and opcode ORIGIN to assess any security implications.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] # simple disasm with push handling to locate ORIGIN opcodes
[codex:1272807] pcs=[]
[codex:1272807] pc=0
[codex:1272807] while pc<len(code):
[codex:1272807]     op=code[pc]
[codex:1272807]     if op==0x32:
[codex:1272807]         pcs.append(pc)
[codex:1272807]     if 0x60<=op<=0x7f:
[codex:1272807]         pc+=1+(op-0x5f)
[codex:1272807]     else:
[codex:1272807]         pc+=1
[codex:1272807] print('ORIGIN count',len(pcs), 'first', pcs[:10])
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 30ms:
[codex:1272807] ORIGIN count 0 first []
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Evaluating delegatecall usage in bytecode**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={
[codex:1272807] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 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',0x5f:'PUSH0',
[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] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] # show bigger window
[codex:1272807] start=10240
[codex:1272807] end=10420
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 26ms:
[codex:1272807] 10240: PUSH1 0x20
[codex:1272807] 10242: MSTORE
[codex:1272807] 10243: PUSH1 0x40
[codex:1272807] 10245: PUSH0
[codex:1272807] 10246: SHA3
[codex:1272807] 10247: SWAP1
[codex:1272807] 10248: JUMP
[codex:1272807] 10249: JUMPDEST
[codex:1272807] 10250: SSTORE
[codex:1272807] 10251: PUSH1 0x01
[codex:1272807] 10253: SWAP1
[codex:1272807] 10254: JUMP
[codex:1272807] 10255: JUMPDEST
[codex:1272807] 10256: PUSH2 0x283f
[codex:1272807] 10259: PUSH2 0x2839
[codex:1272807] 10262: SWAP2
[codex:1272807] 10263: PUSH2 0x2830
[codex:1272807] 10266: PUSH2 0x2826
[codex:1272807] 10269: PUSH2 0x284d
[codex:1272807] 10272: SWAP6
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing delegatecall and upgradeability patterns**
[codex:1272807] 
[codex:1272807] I'm piecing together the delegatecall usage and function selectors to identify the contract's upgradeability scheme—finding signs of UUPS proxies, AccessControl, and Ownable patterns while scrutinizing potential risks like unprotected upgrade functions or uninitialized implementations. This involves mapping selectors, checking call targets, and inferring if external access to delegatecall could be a vulnerability.
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={
[codex:1272807] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 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',0x5f:'PUSH0',
[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] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] # inspect around first CALL at pc 1521
[codex:1272807] pc=1521
[codex:1272807] start=pc-40
[codex:1272807] end=pc+40
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 32ms:
[codex:1272807] 01481: PUSH1 0x01
[codex:1272807] 01483: PUSH1 0xa0
[codex:1272807] 01485: SHL
[codex:1272807] 01486: SUB
[codex:1272807] 01487: DUP6
[codex:1272807] 01488: AND
[codex:1272807] 01489: PUSH1 0x44
[codex:1272807] 01491: DUP3
[codex:1272807] 01492: ADD
[codex:1272807] 01493: MSTORE
[codex:1272807] 01494: PUSH1 0x64
[codex:1272807] 01496: DUP2
[codex:1272807] 01497: ADD
[codex:1272807] 01498: DUP5
[codex:1272807] 01499: SWAP1
[codex:1272807] 01500: MSTORE
[codex:1272807] 01501: PUSH1 0x84
[codex:1272807] 01503: DUP2
[codex:1272807] 01504: ADD
[codex:1272807] 01505: SWAP2
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing upgradeToAndCall function dispatch**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={
[codex:1272807] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 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',0x5f:'PUSH0',
[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] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] # disassemble around 0x0297
[codex:1272807] start=0x0280
[codex:1272807] end=0x0310
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 27ms:
[codex:1272807] 00640: OP0d
[codex:1272807] 00641: GAS
[codex:1272807] 00642: JUMP
[codex:1272807] 00643: JUMPDEST
[codex:1272807] 00644: PUSH2 0x0d2c
[codex:1272807] 00647: JUMP
[codex:1272807] 00648: JUMPDEST
[codex:1272807] 00649: PUSH2 0x0ceb
[codex:1272807] 00652: JUMP
[codex:1272807] 00653: JUMPDEST
[codex:1272807] 00654: PUSH2 0x0c94
[codex:1272807] 00657: JUMP
[codex:1272807] 00658: JUMPDEST
[codex:1272807] 00659: PUSH2 0x0c60
[codex:1272807] 00662: JUMP
[codex:1272807] 00663: JUMPDEST
[codex:1272807] 00664: PUSH2 0x0af6
[codex:1272807] 00667: JUMP
[codex:1272807] 00668: JUMPDEST
[codex:1272807] 00669: PUSH2 0x09ed
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing dispatcher disassembly details**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1272807] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] start=0x0290
[codex:1272807] end=0x02c0
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 29ms:
[codex:1272807] 00656: SWAP5
[codex:1272807] 00657: JUMP
[codex:1272807] 00658: JUMPDEST
[codex:1272807] 00659: PUSH2 0x0c60
[codex:1272807] 00662: JUMP
[codex:1272807] 00663: JUMPDEST
[codex:1272807] 00664: PUSH2 0x0af6
[codex:1272807] 00667: JUMP
[codex:1272807] 00668: JUMPDEST
[codex:1272807] 00669: PUSH2 0x09ed
[codex:1272807] 00672: JUMP
[codex:1272807] 00673: JUMPDEST
[codex:1272807] 00674: PUSH2 0x093a
[codex:1272807] 00677: JUMP
[codex:1272807] 00678: JUMPDEST
[codex:1272807] 00679: PUSH2 0x0890
[codex:1272807] 00682: JUMP
[codex:1272807] 00683: JUMPDEST
[codex:1272807] 00684: PUSH2 0x083e
[codex:1272807] 00687: JUMP
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing JUMPDEST address discrepancy**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] start=0x0280
[codex:1272807] end=0x02b0
[codex:1272807] print(code[start:end].hex())
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 26ms:
[codex:1272807] 0d5a565b610d2c565b610ceb565b610c94565b610c60565b610af6565b6109ed565b61093a565b610890565b61083e56
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing jump table structure**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] # simple parser to find jumpdest stubs
[codex:1272807] stubs=[]
[codex:1272807] pc=0
[codex:1272807] while pc < len(code):
[codex:1272807]     op=code[pc]
[codex:1272807]     if op==0x5b:  # JUMPDEST
[codex:1272807]         # check pattern: JUMPDEST PUSH2 addr JUMP
[codex:1272807]         # Ensure enough bytes
[codex:1272807]         if pc+4 < len(code) and code[pc+1]==0x61 and code[pc+4]==0x56:
[codex:1272807]             addr=int.from_bytes(code[pc+2:pc+4],'big')
[codex:1272807]             stubs.append((pc,addr))
[codex:1272807]         pc+=1
[codex:1272807]     elif 0x60 <= op <= 0x7f:
[codex:1272807]         pc+=1+(op-0x5f)
[codex:1272807]     else:
[codex:1272807]         pc+=1
[codex:1272807] 
[codex:1272807] # filter stubs in early region
[codex:1272807] stubs_early=[s for s in stubs if s[0] < 0x400]
[codex:1272807] print('stub count',len(stubs_early))
[codex:1272807] for pc,addr in stubs_early[:50]:
[codex:1272807]     print(hex(pc), '->', hex(addr))
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 27ms:
[codex:1272807] stub count 41
[codex:1272807] 0x1fc -> 0x17b8
[codex:1272807] 0x201 -> 0x1713
[codex:1272807] 0x206 -> 0x16ec
[codex:1272807] 0x20b -> 0x16b5
[codex:1272807] 0x210 -> 0x168e
[codex:1272807] 0x215 -> 0x1658
[codex:1272807] 0x21a -> 0x15b3
[codex:1272807] 0x21f -> 0x1550
[codex:1272807] 0x224 -> 0x151c
[codex:1272807] 0x229 -> 0x1477
[codex:1272807] 0x22e -> 0x1419
[codex:1272807] 0x233 -> 0x1374
[codex:1272807] 0x238 -> 0x12f4
[codex:1272807] 0x23d -> 0x1298
[codex:1272807] 0x242 -> 0x125e
[codex:1272807] 0x247 -> 0x122a
[codex:1272807] 0x24c -> 0x11cb
[codex:1272807] 0x251 -> 0x116d
[codex:1272807] 0x256 -> 0x111c
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Inspecting function at 0x0af6**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1272807] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] start=0x0af6
[codex:1272807] end=0x0c00
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 27ms:
[codex:1272807] 02806: JUMPDEST
[codex:1272807] 02807: PUSH1 0x40
[codex:1272807] 02809: CALLDATASIZE
[codex:1272807] 02810: PUSH1 0x03
[codex:1272807] 02812: NOT
[codex:1272807] 02813: ADD
[codex:1272807] 02814: SLT
[codex:1272807] 02815: PUSH2 0x0339
[codex:1272807] 02818: JUMPI
[codex:1272807] 02819: PUSH1 0x04
[codex:1272807] 02821: CALLDATALOAD
[codex:1272807] 02822: PUSH2 0x0b0e
[codex:1272807] 02825: DUP2
[codex:1272807] 02826: PUSH2 0x033d
[codex:1272807] 02829: JUMP
[codex:1272807] 02830: JUMPDEST
[codex:1272807] 02831: PUSH1 0x24
[codex:1272807] 02833: CALLDATALOAD
[codex:1272807] 02834: PUSH8 0xffffffffffffffff
[codex:1272807] 02843: DUP2
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Analyzing UUPS proxy call checks**
[codex:1272807] exec
[codex:1272807] /bin/bash -lc "python - <<'PY'
[codex:1272807] from pathlib import Path
[codex:1272807] hexline=None
[codex:1272807] for line in Path('/tmp/codex-multi-9s2ko_zr/BYTECODE_BUNDLE.txt').read_text().splitlines():
[codex:1272807]     if line.startswith('0x'):
[codex:1272807]         hexline=line.strip()[2:]
[codex:1272807]         break
[codex:1272807] code=bytes.fromhex(hexline)
[codex:1272807] 
[codex:1272807] names={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:1272807] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1272807] for i in range(1,33):
[codex:1272807]     names[0x5f+i]=f'PUSH{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x7f+i]=f'DUP{i}'
[codex:1272807] for i in range(1,17):
[codex:1272807]     names[0x8f+i]=f'SWAP{i}'
[codex:1272807] for i in range(0,5):
[codex:1272807]     names[0xa0+i]=f'LOG{i}'
[codex:1272807] 
[codex:1272807] def disasm(start,end):
[codex:1272807]     pc=start
[codex:1272807]     out=[]
[codex:1272807]     while pc<end:
[codex:1272807]         op=code[pc]
[codex:1272807]         if 0x60<=op<=0x7f:
[codex:1272807]             l=op-0x5f
[codex:1272807]             data=code[pc+1:pc+1+l]
[codex:1272807]             out.append(f'{pc:05d}: PUSH{l} 0x{data.hex()}')
[codex:1272807]             pc+=1+l
[codex:1272807]             continue
[codex:1272807]         out.append(f'{pc:05d}: {names.get(op, f\"OP{op:02x}\")}')
[codex:1272807]         pc+=1
[codex:1272807]     return out
[codex:1272807] 
[codex:1272807] start=0x0c1f
[codex:1272807] end=0x0c80
[codex:1272807] for line in disasm(start,end):
[codex:1272807]     print(line)
[codex:1272807] PY" in /tmp/codex-multi-9s2ko_zr succeeded in 26ms:
[codex:1272807] 03103: SELFBALANCE
[codex:1272807] 03104: JUMP
[codex:1272807] 03105: JUMPDEST
[codex:1272807] 03106: SWAP3
[codex:1272807] 03107: PUSH0
[codex:1272807] 03108: PUSH2 0x0baa
[codex:1272807] 03111: JUMP
[codex:1272807] 03112: JUMPDEST
[codex:1272807] 03113: POP
[codex:1272807] 03114: RETURNDATASIZE
[codex:1272807] 03115: PUSH2 0x0c0f
[codex:1272807] 03118: JUMP
[codex:1272807] 03119: JUMPDEST
[codex:1272807] 03120: PUSH4 0x703e46dd
[codex:1272807] 03125: PUSH1 0xe1
[codex:1272807] 03127: SHL
[codex:1272807] 03128: PUSH0
[codex:1272807] 03129: MSTORE
[codex:1272807] 03130: PUSH1 0x04
[codex:1272807] 03132: PUSH0
[codex:1272807] 
[codex:1272807] thinking
[codex:1272807] **Summarizing bytecode security analysis**
[codex:1272807] 
[codex:1272807] I'm weighing the complexity of the upgrade and access control logic from the bytecode and leaning toward reporting no concrete vulnerabilities since protections like onlyProxy checks appear present. Given the user’s schema and directive to avoid hallucinations, I’ll produce a JSON with no findings and include a cautious summary noting bytecode-only limits and residual risks.
[codex:1272807] codex
[codex:1272807] {"no_findings":true,"summary":"No concrete, bytecode-evident vulnerabilities identified from the runtime bytecode alone; limited confidence due to lack of verified source and high-level context (upgradeability and external-call paths could not be fully assessed).","findings":[]}
[codex:1272807] tokens used
[codex:1272807] 72,014
[codex:1272807] {"no_findings":true,"summary":"No concrete, bytecode-evident vulnerabilities identified from the runtime bytecode alone; limited confidence due to lack of verified source and high-level context (upgradeability and external-call paths could not be fully assessed).","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T20:24:48.381258+00:00",
        "returncode": 0
    },
    "summary": "No concrete, bytecode-evident vulnerabilities identified from the runtime bytecode alone; limited confidence due to lack of verified source and high-level context (upgradeability and external-call paths could not be fully assessed).",
    "raw_final": {
        "summary": "No concrete, bytecode-evident vulnerabilities identified from the runtime bytecode alone; limited confidence due to lack of verified source and high-level context (upgradeability and external-call paths could not be fully assessed).",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
2
CALL-family (heavy)
12
EXT*/BALANCE
11
Total opcodes
6589
Flags
delegatecall_present create_opcodes_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 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
view
trace_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
view
trace_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
view
trace_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
view
evidence_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
view
evidence_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
view
evidence_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
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 12
}