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

Analysis Run

a831cc82-3332-44dc-a8fb-dcf51c8ffe78

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 2:03 AM
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
Present
Best current signal
Whitelisted caller can selfdestruct the contract
crit 0 high 0 direct contract
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
30263 report.consolidate complete 1 / 1 3 months ago
73762 artifact.fetch complete 1 / 3 1 week ago
73763 tool.cast_disasm complete 1 / 3 1 week ago
73764 analysis.bundle complete 1 / 3 1 week ago
73765 capability.graph complete 1 / 3 1 week ago
73766 detector.run complete 1 / 3 1 week ago
73767 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Identified a privileged SELFDESTRUCT path gated by a hardcoded caller allowlist.
View stderr
[codex:554559] OpenAI Codex v0.77.0 (research preview)
[codex:554559] --------
[codex:554559] workdir: /tmp/codex-multi-0tr2yh_g
[codex:554559] model: gpt-5.2-codex
[codex:554559] provider: openai
[codex:554559] approval: never
[codex:554559] sandbox: read-only
[codex:554559] reasoning effort: xhigh
[codex:554559] reasoning summaries: auto
[codex:554559] session id: 019b62a6-b12c-7023-8f27-ee57d0015ad9
[codex:554559] --------
[codex:554559] user
[codex:554559] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:554559] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:554559] 
[codex:554559] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:554559] 
[codex:554559] Output MUST be valid JSON matching the provided schema.
[codex:554559] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:554559] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:554559] 
[codex:554559] Output constraints (IMPORTANT):
[codex:554559] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:554559] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:554559] mcp startup: no servers
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:554559] exec
[codex:554559] /bin/bash -lc ls in /tmp/codex-multi-0tr2yh_g succeeded in 6ms:
[codex:554559] BYTECODE_BUNDLE.txt
[codex:554559] codex-output-schema.json
[codex:554559] exec
[codex:554559] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-0tr2yh_g succeeded in 5ms:
[codex:554559] Runtime bytecode bundle for best-effort auditing.
[codex:554559] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:554559] 
[codex:554559] FILE: runtime_bytecode.hex
[codex:554559] 0x6080604052600436106100955760003560e01c80639d118770116100595780639d11877014610345578063a7b8e68814610365578063d292572314610378578063d69ea74d1461038b578063fa461e33146103b457610114565b806310c117ab146102d757806323a69e75146102ea5780632768b07e1461030a5780635c19a95c1461031d5780637c04575b1461033057610114565b36610114573360008051602061291e833981519152146101125760008051602061291e8339815191526001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156100f857600080fd5b505af115801561010c573d6000803e3d6000fd5b50505050505b005b61011c6103d4565b60008060405160016000823780519250600a600182375190506001600160b01b03198116156101bd57426101516001436123d2565b4060405160200161016c929190918252602082015260400190565b604051602081830303815290604052805190602001206001600160b01b031916816001600160b01b031916146101bd5760405162461bcd60e51b81526004016101b4906123eb565b60405180910390fd5b600160f91b6001600160f81b03198316908111159015806101eb5750600360f81b6001600160f81b03198416145b156101f957610112816104c7565b600560f81b6001600160f81b031984161161027157610217816105c5565b600160f91b6001600160f81b0319841614806102405750600560f81b6001600160f81b03198416145b156101125760405141903480156108fc02916000818181858888f19350505050158015610112573d6000803e3d6000fd5b6001600160f81b03198316600360f91b0361028e57610112610697565b610296610912565b6001600160f81b03198316600160fb1b036101125760405141903480156108fc02916000818181858888f19350505050158015610112573d6000803e3d6000fd5b6101126102e5366004612485565b610b66565b3480156102f657600080fd5b506101126103053660046124eb565b610c7a565b610112610318366004612485565b610c88565b61011261032b36600461253e565b610e24565b34801561033c57600080fd5b50610112610e5e565b34801561035157600080fd5b50610112610360366004612559565b610e71565b610112610373366004612584565b610f7c565b610112610386366004612606565b6110a9565b61039e61039936600461265a565b6112ae565b6040516103ab91906126ec565b60405180910390f35b3480156103c057600080fd5b506101126103cf3660046124eb565b6113c0565b6104c573a6ae57b1da8238cd149bc718c40578e4620b752c33148061040c57507326ce7c1976c5eec83ea6ac22d83cb341b08850af33145b8061042a575073b58555fcba6479fced7de1485eb054943a09af7b33145b80610448575073b7ab1de5b259a880c4bb5451bdbe6f80f379853833145b806104665750734f80b2cd1f550f81581c15f690bdd623f3824c8633145b806104845750735b5001c4f80f33ec93b891062ed2e1d0acc05bb633145b806104a257507352b86a86e4d764e8275391c436127e60340a0e6a33145b806104c057507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac833145b6113ce565b565b600080600080600080604051603b600b8237600c8103519650601481015160f81c60021b601582015160e01c80821b945050506019810151955060398101519450603a81015191505061052560008051602061291e83398151915290565b925086156105505761054b6104c0878585896001600160f81b03198a1615156000611476565b6105bc565b6000806040516016604682378051601490910151909250905086610586868a876001600160f81b03198b161515600088886114bc565b10156105b95760405162461bcd60e51b8152602060048201526002602482015261463160f01b60448201526064016101b4565b50505b50505050505050565b6000806000806000604051604e600b8237600c81035195506008810151945060288101519350604881015160f81c60021b604982015160e01c80821b94505050604d8101519150508515610635576106306104c0858786866001600160f81b03198716156000611476565b61068f565b6000806040516003605982378051600190910151909250905061068c846106858989896001600160f81b0319891615156000736015551cd911ff4685072e2793f56c841e3ab66160611b896114bc565b10156113ce565b50505b505050505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d820151166020880152603d81015160f81c60021b603e82015160e01c80821b60808b015250506042810151604088015260628101519250608281015191506083810151935060858101516060890152608781015160808801526001600160a01b03609b820151166060880152506107de60008051602061291e83398151915290565b6001600160a01b0316604088015250821561083157806107fe87876115a1565b10156106305760405162461bcd60e51b8152602060048201526002602482015261533160f01b60448201526064016101b4565b85602001511561088f5761085986600001518760400151886080015185888a60000151611476565b61088a5760405162461bcd60e51b8152602060048201526002602482015261299960f11b60448201526064016101b4565b6108f0565b816108bd876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114bc565b10156108f05760405162461bcd60e51b8152602060048201526002602482015261533360f01b60448201526064016101b4565b61068f6104c0866000015187602001518860400151858a60a001516000611476565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d8201511660408901526001600160a01b03603182015116602088015260518101516080890152607181015193506091810151604088015260b181015160f81c60021b60b282015160e01c80821b9450505060b6810151915060998101516060890152609b810151608088015250610a5960008051602061291e83398151915290565b6001600160a01b03166060870152508215610aac5780610a7987876115a1565b10156106305760405162461bcd60e51b8152602060048201526002602482015261453160f01b60448201526064016101b4565b856020015115610b0557610ad486600001518760400151886080015185888a60000151611476565b61088a5760405162461bcd60e51b8152602060048201526002602482015261229960f11b60448201526064016101b4565b81610b33876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114bc565b10156108f05760405162461bcd60e51b8152602060048201526002602482015261453360f01b60448201526064016101b4565b610b6e611748565b610b7b60208201826126ff565b6001600160b01b03191615610c075742610b966001436123d2565b40604051602001610bb1929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610be0908301836126ff565b6001600160b01b03191614610c075760405162461bcd60e51b81526004016101b4906123eb565b604051633095c05760e01b81526001600160a01b03851690633095c05790610c359086908690600401612752565b600060405180830381600087803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b50505050610c7481602001356117a2565b50505050565b610c74848484846001611909565b610c90611748565b610c9d60208201826126ff565b6001600160b01b03191615610d295742610cb86001436123d2565b40604051602001610cd3929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610d02908301836126ff565b6001600160b01b03191614610d295760405162461bcd60e51b81526004016101b4906123eb565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d99919061276e565b9050610db860008051602061291e833981519152868460200135611d5d565b604051633095c05760e01b81526001600160a01b03861690633095c05790610de69087908790600401612752565b600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b5050506000919091555050505050565b610e2c6103d4565b6040516024360380602483376000808284865af43d9150816000843e808015610e53578284f35b8284fd5b5050505050565b610e66611e87565b600160008190558055565b610e796103d4565b8015610f7957604051632e1a7d4d60e01b81526004810182905260008051602061291e83398151915290632e1a7d4d90602401600060405180830381600087803b158015610ec657600080fd5b505af1158015610eda573d6000803e3d6000fd5b5050604080516000808252602082019283905293503392508491610efe919061279d565b60006040518083038185875af1925050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f775760405162461bcd60e51b815260206004820152600360248201526244455360e81b60448201526064016101b4565b505b33ff5b610f84611e87565b610f9160208601866126ff565b6001600160b01b0319161561101d5742610fac6001436123d2565b40604051602001610fc7929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610ff6908701876126ff565b6001600160b01b0319161461101d5760405162461bcd60e51b81526004016101b4906123eb565b61102d604086016020870161253e565b6001600160a01b031663dcb698ab34868686866040518663ffffffff1660e01b815260040161105f94939291906127b9565b6000604051808303818588803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b505050505061109e8560400135611fd0565b505060018055505050565b6110b1611e87565b341580156110c157506001546001145b6110f35760405162461bcd60e51b81526020600482015260036024820152622b2b2b60e91b60448201526064016101b4565b61110060208401846126ff565b6001600160b01b0319161561118c574261111b6001436123d2565b40604051602001611136929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690611165908501856126ff565b6001600160b01b0319161461118c5760405162461bcd60e51b81526004016101b4906123eb565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa1580156111d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fc919061276e565b90506040840135156112345761123460008051602061291e83398151915261122a604087016020880161253e565b8660400135611d5d565b611244604085016020860161253e565b6001600160a01b03166307a1018e84846040518363ffffffff1660e01b8152600401611271929190612752565b600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50505060019190915550505050565b60606112b8611e87565b83156112d7576112d760008051602061291e8339815191528686611d5d565b600080866001600160a01b03163486866040516112f59291906127eb565b60006040518083038185875af1925050503d8060008114611332576040519150601f19603f3d011682016040523d82523d6000602084013e611337565b606091505b5091509150816113b6576044815110156113835760405162461bcd60e51b815260206004820152600d60248201526c1cda5b195b9d081c995d995c9d609a1b60448201526064016101b4565b6004810190508080602001905181019061139d91906127fb565b60405162461bcd60e51b81526004016101b491906126ec565b9695505050505050565b610c74848484846000611909565b806114735760408051630570923880825263ae1247208201909252600090826020820163ae1247008036833701905050905060005b61140e83600161289d565b811015610c745761141f81436123d2565b6040805191406020830152016040516020818303038152906040528051906020012060001c828281518110611456576114566128b0565b60209081029190910101528061146b816128c6565b915050611403565b50565b60006114838688876120fd565b156114af5782156114a25761149b846000898561214a565b90506113b6565b61149b600085898561214a565b5060009695505050505050565b600060606000806114cc8b6121b3565b915091508015611522576040516001600160f01b0319861660208201526001600160601b0319871660228201526001600160f81b0319831660368201526037016040516020818303038152906040529250611566565b6040516001600160f01b0319861660208201526001600160601b0319808816602283015260608d901b166036820152604a0160405160208183030381529060405292505b6000806115768c8a8c8e896121f2565b91509150896115855781611587565b805b611590906128df565b9d9c50505050505050505050505050565b600060606000806115b585602001516121b3565b9150915080156116665760208087015187516040808a01516080808c01516060808e0151928d01518d820151955197151560f81b988801989098526001600160601b031995811b8616602188015292831b8516603587015260498601526001600160f01b031960f091821b8116606987015295901b909416606b84015290921b909116606d8201526001600160f81b031983166081820152608201604051602081830303815290604052925061170b565b60208087015187516040808a01516080808c01516060808e0151928d01518d8201518e8a0151965198151560f81b998901999099526001600160601b031996821b8716602189015293811b8616603588015260498701919091526001600160f01b031960f092831b811660698801529290911b909116606b85015293841b8216606d84015290921b909116608182015260950160405160208183030381529060405292505b505060008061172a856000015160008760a001518860400151876121f2565b915091508460a0015161173d578161173f565b805b6113b6906128df565b6104c573fac983fce7ef3cee8ffb2ceb967e1b2362aada003314806117805750730811fd1808e14f0b93f0514313965a5f142c553933145b806104c0575073681535922425a4264b3670d9430afc6dc4de103e33146113ce565b34156117d65760405141903480156108fc02916000818181858888f193505050501580156117d4573d6000803e3d6000fd5b505b60005468056bc75e2d6310000081116118175760405162461bcd60e51b81526020600482015260036024820152624c4f5760e81b60448201526064016101b4565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611887919061276e565b90508261189434836123d2565b116118c65760405162461bcd60e51b8152602060048201526002602482015261282360f11b60448201526064016101b4565b816118d134836123d2565b116119045760405162461bcd60e51b81526020600482015260036024820152622829a360e91b60448201526064016101b4565b505050565b6119116122ca565b60008513806119205750600084135b6119515760405162461bcd60e51b8152602060048201526002602482015261043360f41b60448201526064016101b4565b81601681116119875760405162461bcd60e51b8152602060048201526002602482015261433960f01b60448201526064016101b4565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152602a821160008080808085611a0057604051602a6084823761ffff601e820351169250600a810351935088601781146119f157600a82015195506119f9565b601682015192505b5050611a7c565b604051607560848237601f81035188526001600160a01b03600b8203511660208901526001600160a01b036009820151166040890152602981015160608901526049810151608089015261ffff602d820151169250604181015193508860628114611a715760558201519550611a79565b606182015192505b50505b6001600160a01b038416611a9c5760008051602061291e83398151915293505b600080846001600160a01b0316866001600160a01b031610611abf578486611ac2565b85855b915091508a611ae8577307e610c722b66148d8c6b92967c99cd1ba8c7e6160621b611b01565b7341ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c960601b5b604080516001600160a01b03808616602083015284169181019190915262ffffff86166060820152608001604051602081830303815290604052805190602001208c611b6d577fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54611b8f565b7f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e25b6040516001600160f81b031960208201526001600160601b03199093166021840152603583019190915260558201526075016040516020818303038152906040528051906020012060001c965050505050506000808b13611bf05789611bf2565b8a5b9050336001600160a01b03841614611c315760405162461bcd60e51b81526020600482015260026024820152613a2960f01b60448201526064016101b4565b8315611d1457845115611ca657611c7085602001518660400151876060015184866001600160a01b03168a604001516001600160a01b03161188611476565b611ca15760405162461bcd60e51b8152602060048201526002602482015261219960f11b60448201526064016101b4565b611d50565b80611ce1866040015187602001518860600151866001600160a01b03168a604001516001600160a01b031610888860601b8c608001516114bc565b1015611ca15760405162461bcd60e51b8152602060048201526002602482015261433360f01b60448201526064016101b4565b611d1f8284836120fd565b611d505760405162461bcd60e51b815260206004820152600260248201526110cd60f21b60448201526064016101b4565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611db9919061279d565b6000604051808303816000865af19150503d8060008114611df6576040519150601f19603f3d011682016040523d82523d6000602084013e611dfb565b606091505b5091509150818015611e25575080511580611e25575080806020019051810190611e2591906128fb565b610e575760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016101b4565b6104c573a6ae57b1da8238cd149bc718c40578e4620b752c331480611ebf57507326ce7c1976c5eec83ea6ac22d83cb341b08850af33145b80611edd575073b58555fcba6479fced7de1485eb054943a09af7b33145b80611efb575073b7ab1de5b259a880c4bb5451bdbe6f80f379853833145b80611f195750734f80b2cd1f550f81581c15f690bdd623f3824c8633145b80611f375750735b5001c4f80f33ec93b891062ed2e1d0acc05bb633145b80611f5557507352b86a86e4d764e8275391c436127e60340a0e6a33145b80611f7357507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac833145b80611f91575073fac983fce7ef3cee8ffb2ceb967e1b2362aada0033145b806117805750730811fd1808e14f0b93f0514313965a5f142c55393314806104c0575073681535922425a4264b3670d9430afc6dc4de103e33146113ce565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612040919061276e565b90503481116120765760405162461bcd60e51b815260206004820152600260248201526127a360f11b60448201526064016101b4565b61208034826123d2565b6001549091508082116120bb5760405162461bcd60e51b81526020600482015260036024820152622829a360e91b60448201526064016101b4565b60006120c782846123d2565b9050838111610c745760405162461bcd60e51b8152602060048201526002602482015261282360f11b60448201526064016101b4565b60008160000361210f57506001612143565b60405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526020816044836000895af19051935090505b9392505050565b600060405163022c0d9f60e01b815285600482015284602482015282600081146121795783604483015261218f565b6e3b3cc22af3ae1eac0440bcee416b4060448301525b50608060648201526000608482015260208160a4836000885af19695505050505050565b60008073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038416016121e75750600092600192509050565b506000928392509050565b6000806000856122165773fffd8963efd1fc6a506488495d951d5263988d2561221d565b6401000276a45b9050604051630251596160e31b8152876000811461224057886004830152612256565b6e3b3cc22af3ae1eac0440bcee416b4060048301525b5086602482015285604482015281606482015260a0608482015284518060a483015260005b8181101561229857602081880181015160c485840101520161227b565b506040828260c4018460008e5af19050806122b257600080fd5b50805193506020810151925050509550959350505050565b73b58555fcba6479fced7de1485eb054943a09af7b3214806122ff575073b7ab1de5b259a880c4bb5451bdbe6f80f379853832145b8061231d5750734f80b2cd1f550f81581c15f690bdd623f3824c8632145b8061233b5750735b5001c4f80f33ec93b891062ed2e1d0acc05bb632145b80612359575073a6ae57b1da8238cd149bc718c40578e4620b752c32145b8061237757507326ce7c1976c5eec83ea6ac22d83cb341b08850af32145b8061239557507352b86a86e4d764e8275391c436127e60340a0e6a32145b806123b357507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac832145b6104c557600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156123e5576123e56123bc565b92915050565b60208082526003908201526211111160ea1b604082015260600190565b80356001600160a01b038116811461241f57600080fd5b919050565b60008083601f84011261243657600080fd5b50813567ffffffffffffffff81111561244e57600080fd5b60208301915083602082850101111561246657600080fd5b9250929050565b60006040828403121561247f57600080fd5b50919050565b6000806000806080858703121561249b57600080fd5b6124a485612408565b9350602085013567ffffffffffffffff8111156124c057600080fd5b6124cc87828801612424565b90945092506124e09050866040870161246d565b905092959194509250565b6000806000806060858703121561250157600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561252657600080fd5b61253287828801612424565b95989497509550505050565b60006020828403121561255057600080fd5b61214382612408565b60006020828403121561256b57600080fd5b5035919050565b60006060828403121561247f57600080fd5b600080600080600060a0868803121561259c57600080fd5b6125a68787612572565b9450606086013567ffffffffffffffff808211156125c357600080fd5b6125cf89838a01612424565b909650945060808801359150808211156125e857600080fd5b506125f588828901612424565b969995985093965092949392505050565b60008060006080848603121561261b57600080fd5b6126258585612572565b9250606084013567ffffffffffffffff81111561264157600080fd5b61264d86828701612424565b9497909650939450505050565b6000806000806060858703121561267057600080fd5b61267985612408565b935060208501359250604085013567ffffffffffffffff81111561252657600080fd5b60005b838110156126b757818101518382015260200161269f565b50506000910152565b600081518084526126d881602086016020860161269c565b601f01601f19169290920160200192915050565b60208152600061214360208301846126c0565b60006020828403121561271157600080fd5b81356001600160b01b03198116811461214357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000612766602083018486612729565b949350505050565b60006020828403121561278057600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600082516127af81846020870161269c565b9190910192915050565b6040815260006127cd604083018688612729565b82810360208401526127e0818587612729565b979650505050505050565b8183823760009101908152919050565b60006020828403121561280d57600080fd5b815167ffffffffffffffff8082111561282557600080fd5b818401915084601f83011261283957600080fd5b81518181111561284b5761284b612787565b604051601f8201601f19908116603f0116810190838211818310171561287357612873612787565b8160405282815287602084870101111561288c57600080fd5b6127e083602083016020880161269c565b808201808211156123e5576123e56123bc565b634e487b7160e01b600052603260045260246000fd5b6000600182016128d8576128d86123bc565b5060010190565b6000600160ff1b82016128f4576128f46123bc565b5060000390565b60006020828403121561290d57600080fd5b8151801515811461214357600080fdfe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a26469706673582212208d561e0fe331ae5fff679df5a3e8dfeb4aa22ef9fce6aa6bd87abf72baf8010364736f6c63430008130033
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Extracting JSON schema structure**
[codex:554559] exec
[codex:554559] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-0tr2yh_g succeeded in 5ms:
[codex:554559] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing bytecode for vulnerabilities**
[codex:554559] exec
[codex:554559] /bin/bash -lc 'nl -ba BYTECODE_BUNDLE.txt' in /tmp/codex-multi-0tr2yh_g succeeded in 5ms:
[codex:554559]      1	Runtime bytecode bundle for best-effort auditing.
[codex:554559]      2	Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:554559]      3	
[codex:554559]      4	FILE: runtime_bytecode.hex
[codex:554559]      5	0x6080604052600436106100955760003560e01c80639d118770116100595780639d11877014610345578063a7b8e68814610365578063d292572314610378578063d69ea74d1461038b578063fa461e33146103b457610114565b806310c117ab146102d757806323a69e75146102ea5780632768b07e1461030a5780635c19a95c1461031d5780637c04575b1461033057610114565b36610114573360008051602061291e833981519152146101125760008051602061291e8339815191526001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156100f857600080fd5b505af115801561010c573d6000803e3d6000fd5b50505050505b005b61011c6103d4565b60008060405160016000823780519250600a600182375190506001600160b01b03198116156101bd57426101516001436123d2565b4060405160200161016c929190918252602082015260400190565b604051602081830303815290604052805190602001206001600160b01b031916816001600160b01b031916146101bd5760405162461bcd60e51b81526004016101b4906123eb565b60405180910390fd5b600160f91b6001600160f81b03198316908111159015806101eb5750600360f81b6001600160f81b03198416145b156101f957610112816104c7565b600560f81b6001600160f81b031984161161027157610217816105c5565b600160f91b6001600160f81b0319841614806102405750600560f81b6001600160f81b03198416145b156101125760405141903480156108fc02916000818181858888f19350505050158015610112573d6000803e3d6000fd5b6001600160f81b03198316600360f91b0361028e57610112610697565b610296610912565b6001600160f81b03198316600160fb1b036101125760405141903480156108fc02916000818181858888f19350505050158015610112573d6000803e3d6000fd5b6101126102e5366004612485565b610b66565b3480156102f657600080fd5b506101126103053660046124eb565b610c7a565b610112610318366004612485565b610c88565b61011261032b36600461253e565b610e24565b34801561033c57600080fd5b50610112610e5e565b34801561035157600080fd5b50610112610360366004612559565b610e71565b610112610373366004612584565b610f7c565b610112610386366004612606565b6110a9565b61039e61039936600461265a565b6112ae565b6040516103ab91906126ec565b60405180910390f35b3480156103c057600080fd5b506101126103cf3660046124eb565b6113c0565b6104c573a6ae57b1da8238cd149bc718c40578e4620b752c33148061040c57507326ce7c1976c5eec83ea6ac22d83cb341b08850af33145b8061042a575073b58555fcba6479fced7de1485eb054943a09af7b33145b80610448575073b7ab1de5b259a880c4bb5451bdbe6f80f379853833145b806104665750734f80b2cd1f550f81581c15f690bdd623f3824c8633145b806104845750735b5001c4f80f33ec93b891062ed2e1d0acc05bb633145b806104a257507352b86a86e4d764e8275391c436127e60340a0e6a33145b806104c057507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac833145b6113ce565b565b600080600080600080604051603b600b8237600c8103519650601481015160f81c60021b601582015160e01c80821b945050506019810151955060398101519450603a81015191505061052560008051602061291e83398151915290565b925086156105505761054b6104c0878585896001600160f81b03198a1615156000611476565b6105bc565b6000806040516016604682378051601490910151909250905086610586868a876001600160f81b03198b161515600088886114bc565b10156105b95760405162461bcd60e51b8152602060048201526002602482015261463160f01b60448201526064016101b4565b50505b50505050505050565b6000806000806000604051604e600b8237600c81035195506008810151945060288101519350604881015160f81c60021b604982015160e01c80821b94505050604d8101519150508515610635576106306104c0858786866001600160f81b03198716156000611476565b61068f565b6000806040516003605982378051600190910151909250905061068c846106858989896001600160f81b0319891615156000736015551cd911ff4685072e2793f56c841e3ab66160611b896114bc565b10156113ce565b50505b505050505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d820151166020880152603d81015160f81c60021b603e82015160e01c80821b60808b015250506042810151604088015260628101519250608281015191506083810151935060858101516060890152608781015160808801526001600160a01b03609b820151166060880152506107de60008051602061291e83398151915290565b6001600160a01b0316604088015250821561083157806107fe87876115a1565b10156106305760405162461bcd60e51b8152602060048201526002602482015261533160f01b60448201526064016101b4565b85602001511561088f5761085986600001518760400151886080015185888a60000151611476565b61088a5760405162461bcd60e51b8152602060048201526002602482015261299960f11b60448201526064016101b4565b6108f0565b816108bd876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114bc565b10156108f05760405162461bcd60e51b8152602060048201526002602482015261533360f01b60448201526064016101b4565b61068f6104c0866000015187602001518860400151858a60a001516000611476565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d8201511660408901526001600160a01b03603182015116602088015260518101516080890152607181015193506091810151604088015260b181015160f81c60021b60b282015160e01c80821b9450505060b6810151915060998101516060890152609b810151608088015250610a5960008051602061291e83398151915290565b6001600160a01b03166060870152508215610aac5780610a7987876115a1565b10156106305760405162461bcd60e51b8152602060048201526002602482015261453160f01b60448201526064016101b4565b856020015115610b0557610ad486600001518760400151886080015185888a60000151611476565b61088a5760405162461bcd60e51b8152602060048201526002602482015261229960f11b60448201526064016101b4565b81610b33876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114bc565b10156108f05760405162461bcd60e51b8152602060048201526002602482015261453360f01b60448201526064016101b4565b610b6e611748565b610b7b60208201826126ff565b6001600160b01b03191615610c075742610b966001436123d2565b40604051602001610bb1929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610be0908301836126ff565b6001600160b01b03191614610c075760405162461bcd60e51b81526004016101b4906123eb565b604051633095c05760e01b81526001600160a01b03851690633095c05790610c359086908690600401612752565b600060405180830381600087803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b50505050610c7481602001356117a2565b50505050565b610c74848484846001611909565b610c90611748565b610c9d60208201826126ff565b6001600160b01b03191615610d295742610cb86001436123d2565b40604051602001610cd3929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610d02908301836126ff565b6001600160b01b03191614610d295760405162461bcd60e51b81526004016101b4906123eb565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d99919061276e565b9050610db860008051602061291e833981519152868460200135611d5d565b604051633095c05760e01b81526001600160a01b03861690633095c05790610de69087908790600401612752565b600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b5050506000919091555050505050565b610e2c6103d4565b6040516024360380602483376000808284865af43d9150816000843e808015610e53578284f35b8284fd5b5050505050565b610e66611e87565b600160008190558055565b610e796103d4565b8015610f7957604051632e1a7d4d60e01b81526004810182905260008051602061291e83398151915290632e1a7d4d90602401600060405180830381600087803b158015610ec657600080fd5b505af1158015610eda573d6000803e3d6000fd5b5050604080516000808252602082019283905293503392508491610efe919061279d565b60006040518083038185875af1925050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f775760405162461bcd60e51b815260206004820152600360248201526244455360e81b60448201526064016101b4565b505b33ff5b610f84611e87565b610f9160208601866126ff565b6001600160b01b0319161561101d5742610fac6001436123d2565b40604051602001610fc7929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610ff6908701876126ff565b6001600160b01b0319161461101d5760405162461bcd60e51b81526004016101b4906123eb565b61102d604086016020870161253e565b6001600160a01b031663dcb698ab34868686866040518663ffffffff1660e01b815260040161105f94939291906127b9565b6000604051808303818588803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b505050505061109e8560400135611fd0565b505060018055505050565b6110b1611e87565b341580156110c157506001546001145b6110f35760405162461bcd60e51b81526020600482015260036024820152622b2b2b60e91b60448201526064016101b4565b61110060208401846126ff565b6001600160b01b0319161561118c574261111b6001436123d2565b40604051602001611136929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690611165908501856126ff565b6001600160b01b0319161461118c5760405162461bcd60e51b81526004016101b4906123eb565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa1580156111d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fc919061276e565b90506040840135156112345761123460008051602061291e83398151915261122a604087016020880161253e565b8660400135611d5d565b611244604085016020860161253e565b6001600160a01b03166307a1018e84846040518363ffffffff1660e01b8152600401611271929190612752565b600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50505060019190915550505050565b60606112b8611e87565b83156112d7576112d760008051602061291e8339815191528686611d5d565b600080866001600160a01b03163486866040516112f59291906127eb565b60006040518083038185875af1925050503d8060008114611332576040519150601f19603f3d011682016040523d82523d6000602084013e611337565b606091505b5091509150816113b6576044815110156113835760405162461bcd60e51b815260206004820152600d60248201526c1cda5b195b9d081c995d995c9d609a1b60448201526064016101b4565b6004810190508080602001905181019061139d91906127fb565b60405162461bcd60e51b81526004016101b491906126ec565b9695505050505050565b610c74848484846000611909565b806114735760408051630570923880825263ae1247208201909252600090826020820163ae1247008036833701905050905060005b61140e83600161289d565b811015610c745761141f81436123d2565b6040805191406020830152016040516020818303038152906040528051906020012060001c828281518110611456576114566128b0565b60209081029190910101528061146b816128c6565b915050611403565b50565b60006114838688876120fd565b156114af5782156114a25761149b846000898561214a565b90506113b6565b61149b600085898561214a565b5060009695505050505050565b600060606000806114cc8b6121b3565b915091508015611522576040516001600160f01b0319861660208201526001600160601b0319871660228201526001600160f81b0319831660368201526037016040516020818303038152906040529250611566565b6040516001600160f01b0319861660208201526001600160601b0319808816602283015260608d901b166036820152604a0160405160208183030381529060405292505b6000806115768c8a8c8e896121f2565b91509150896115855781611587565b805b611590906128df565b9d9c50505050505050505050505050565b600060606000806115b585602001516121b3565b9150915080156116665760208087015187516040808a01516080808c01516060808e0151928d01518d820151955197151560f81b988801989098526001600160601b031995811b8616602188015292831b8516603587015260498601526001600160f01b031960f091821b8116606987015295901b909416606b84015290921b909116606d8201526001600160f81b031983166081820152608201604051602081830303815290604052925061170b565b60208087015187516040808a01516080808c01516060808e0151928d01518d8201518e8a0151965198151560f81b998901999099526001600160601b031996821b8716602189015293811b8616603588015260498701919091526001600160f01b031960f092831b811660698801529290911b909116606b85015293841b8216606d84015290921b909116608182015260950160405160208183030381529060405292505b505060008061172a856000015160008760a001518860400151876121f2565b915091508460a0015161173d578161173f565b805b6113b6906128df565b6104c573fac983fce7ef3cee8ffb2ceb967e1b2362aada003314806117805750730811fd1808e14f0b93f0514313965a5f142c553933145b806104c0575073681535922425a4264b3670d9430afc6dc4de103e33146113ce565b34156117d65760405141903480156108fc02916000818181858888f193505050501580156117d4573d6000803e3d6000fd5b505b60005468056bc75e2d6310000081116118175760405162461bcd60e51b81526020600482015260036024820152624c4f5760e81b60448201526064016101b4565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611887919061276e565b90508261189434836123d2565b116118c65760405162461bcd60e51b8152602060048201526002602482015261282360f11b60448201526064016101b4565b816118d134836123d2565b116119045760405162461bcd60e51b81526020600482015260036024820152622829a360e91b60448201526064016101b4565b505050565b6119116122ca565b60008513806119205750600084135b6119515760405162461bcd60e51b8152602060048201526002602482015261043360f41b60448201526064016101b4565b81601681116119875760405162461bcd60e51b8152602060048201526002602482015261433960f01b60448201526064016101b4565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152602a821160008080808085611a0057604051602a6084823761ffff601e820351169250600a810351935088601781146119f157600a82015195506119f9565b601682015192505b5050611a7c565b604051607560848237601f81035188526001600160a01b03600b8203511660208901526001600160a01b036009820151166040890152602981015160608901526049810151608089015261ffff602d820151169250604181015193508860628114611a715760558201519550611a79565b606182015192505b50505b6001600160a01b038416611a9c5760008051602061291e83398151915293505b600080846001600160a01b0316866001600160a01b031610611abf578486611ac2565b85855b915091508a611ae8577307e610c722b66148d8c6b92967c99cd1ba8c7e6160621b611b01565b7341ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c960601b5b604080516001600160a01b03808616602083015284169181019190915262ffffff86166060820152608001604051602081830303815290604052805190602001208c611b6d577fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54611b8f565b7f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e25b6040516001600160f81b031960208201526001600160601b03199093166021840152603583019190915260558201526075016040516020818303038152906040528051906020012060001c965050505050506000808b13611bf05789611bf2565b8a5b9050336001600160a01b03841614611c315760405162461bcd60e51b81526020600482015260026024820152613a2960f01b60448201526064016101b4565b8315611d1457845115611ca657611c7085602001518660400151876060015184866001600160a01b03168a604001516001600160a01b03161188611476565b611ca15760405162461bcd60e51b8152602060048201526002602482015261219960f11b60448201526064016101b4565b611d50565b80611ce1866040015187602001518860600151866001600160a01b03168a604001516001600160a01b031610888860601b8c608001516114bc565b1015611ca15760405162461bcd60e51b8152602060048201526002602482015261433360f01b60448201526064016101b4565b611d1f8284836120fd565b611d505760405162461bcd60e51b815260206004820152600260248201526110cd60f21b60448201526064016101b4565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611db9919061279d565b6000604051808303816000865af19150503d8060008114611df6576040519150601f19603f3d011682016040523d82523d6000602084013e611dfb565b606091505b5091509150818015611e25575080511580611e25575080806020019051810190611e2591906128fb565b610e575760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016101b4565b6104c573a6ae57b1da8238cd149bc718c40578e4620b752c331480611ebf57507326ce7c1976c5eec83ea6ac22d83cb341b08850af33145b80611edd575073b58555fcba6479fced7de1485eb054943a09af7b33145b80611efb575073b7ab1de5b259a880c4bb5451bdbe6f80f379853833145b80611f195750734f80b2cd1f550f81581c15f690bdd623f3824c8633145b80611f375750735b5001c4f80f33ec93b891062ed2e1d0acc05bb633145b80611f5557507352b86a86e4d764e8275391c436127e60340a0e6a33145b80611f7357507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac833145b80611f91575073fac983fce7ef3cee8ffb2ceb967e1b2362aada0033145b806117805750730811fd1808e14f0b93f0514313965a5f142c55393314806104c0575073681535922425a4264b3670d9430afc6dc4de103e33146113ce565b6040516370a0823160e01b815230600482015260009060008051602061291e833981519152906370a0823190602401602060405180830381865afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612040919061276e565b90503481116120765760405162461bcd60e51b815260206004820152600260248201526127a360f11b60448201526064016101b4565b61208034826123d2565b6001549091508082116120bb5760405162461bcd60e51b81526020600482015260036024820152622829a360e91b60448201526064016101b4565b60006120c782846123d2565b9050838111610c745760405162461bcd60e51b8152602060048201526002602482015261282360f11b60448201526064016101b4565b60008160000361210f57506001612143565b60405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526020816044836000895af19051935090505b9392505050565b600060405163022c0d9f60e01b815285600482015284602482015282600081146121795783604483015261218f565b6e3b3cc22af3ae1eac0440bcee416b4060448301525b50608060648201526000608482015260208160a4836000885af19695505050505050565b60008073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038416016121e75750600092600192509050565b506000928392509050565b6000806000856122165773fffd8963efd1fc6a506488495d951d5263988d2561221d565b6401000276a45b9050604051630251596160e31b8152876000811461224057886004830152612256565b6e3b3cc22af3ae1eac0440bcee416b4060048301525b5086602482015285604482015281606482015260a0608482015284518060a483015260005b8181101561229857602081880181015160c485840101520161227b565b506040828260c4018460008e5af19050806122b257600080fd5b50805193506020810151925050509550959350505050565b73b58555fcba6479fced7de1485eb054943a09af7b3214806122ff575073b7ab1de5b259a880c4bb5451bdbe6f80f379853832145b8061231d5750734f80b2cd1f550f81581c15f690bdd623f3824c8632145b8061233b5750735b5001c4f80f33ec93b891062ed2e1d0acc05bb632145b80612359575073a6ae57b1da8238cd149bc718c40578e4620b752c32145b8061237757507326ce7c1976c5eec83ea6ac22d83cb341b08850af32145b8061239557507352b86a86e4d764e8275391c436127e60340a0e6a32145b806123b357507341d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac832145b6104c557600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156123e5576123e56123bc565b92915050565b60208082526003908201526211111160ea1b604082015260600190565b80356001600160a01b038116811461241f57600080fd5b919050565b60008083601f84011261243657600080fd5b50813567ffffffffffffffff81111561244e57600080fd5b60208301915083602082850101111561246657600080fd5b9250929050565b60006040828403121561247f57600080fd5b50919050565b6000806000806080858703121561249b57600080fd5b6124a485612408565b9350602085013567ffffffffffffffff8111156124c057600080fd5b6124cc87828801612424565b90945092506124e09050866040870161246d565b905092959194509250565b6000806000806060858703121561250157600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561252657600080fd5b61253287828801612424565b95989497509550505050565b60006020828403121561255057600080fd5b61214382612408565b60006020828403121561256b57600080fd5b5035919050565b60006060828403121561247f57600080fd5b600080600080600060a0868803121561259c57600080fd5b6125a68787612572565b9450606086013567ffffffffffffffff808211156125c357600080fd5b6125cf89838a01612424565b909650945060808801359150808211156125e857600080fd5b506125f588828901612424565b969995985093965092949392505050565b60008060006080848603121561261b57600080fd5b6126258585612572565b9250606084013567ffffffffffffffff81111561264157600080fd5b61264d86828701612424565b9497909650939450505050565b6000806000806060858703121561267057600080fd5b61267985612408565b935060208501359250604085013567ffffffffffffffff81111561252657600080fd5b60005b838110156126b757818101518382015260200161269f565b50506000910152565b600081518084526126d881602086016020860161269c565b601f01601f19169290920160200192915050565b60208152600061214360208301846126c0565b60006020828403121561271157600080fd5b81356001600160b01b03198116811461214357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000612766602083018486612729565b949350505050565b60006020828403121561278057600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600082516127af81846020870161269c565b9190910192915050565b6040815260006127cd604083018688612729565b82810360208401526127e0818587612729565b979650505050505050565b8183823760009101908152919050565b60006020828403121561280d57600080fd5b815167ffffffffffffffff8082111561282557600080fd5b818401915084601f83011261283957600080fd5b81518181111561284b5761284b612787565b604051601f8201601f19908116603f0116810190838211818310171561287357612873612787565b8160405282815287602084870101111561288c57600080fd5b6127e083602083016020880161269c565b808201808211156123e5576123e56123bc565b634e487b7160e01b600052603260045260246000fd5b6000600182016128d8576128d86123bc565b5060010190565b6000600160ff1b82016128f4576128f46123bc565b5060000390565b60006020828403121561290d57600080fd5b8151801515811461214357600080fdfe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a26469706673582212208d561e0fe331ae5fff679df5a3e8dfeb4aa22ef9fce6aa6bd87abf72baf8010364736f6c63430008130033
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing BYTECODE_BUNDLE line 5**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] from binascii import unhexlify
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt','r') as f:
[codex:554559]     data=f.read()
[codex:554559] # extract hex after 0x
[codex:554559] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:554559] hexstr=m.group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] # simple disassembler
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:554559]     0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] # find offset of opcode 0xff preceded by 0x33? We'll list selfdestruct locations.
[codex:554559] selfdestruct_offsets=[]
[codex:554559] for i,b in enumerate(code):
[codex:554559]     if b==0xff:
[codex:554559]         selfdestruct_offsets.append(i)
[codex:554559] print('SELFDESTRUCT offsets', selfdestruct_offsets)
[codex:554559] 
[codex:554559] # disassemble around 0x1e87 (decimal)
[codex:554559] start=0x1e60
[codex:554559] end=0x1ed0
[codex:554559] 
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 29ms:
[codex:554559] SELFDESTRUCT offsets [211, 212, 213, 214, 1647, 2937, 3038, 3227, 3328, 3963, 3983, 4084, 4166, 4167, 4168, 4169, 4350, 4451, 4698, 4699, 4700, 4701, 6604, 6605, 6732, 6733, 6891, 6944, 6945, 6946, 8702, 8933, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9389, 9390, 9391, 9392, 9393, 9394, 9395, 9396, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9647, 9648, 9649, 9650, 9651, 9652, 9653, 9654, 9774, 9775, 9776, 9777, 9778, 9779, 9780, 9781, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9872, 10257, 10258, 10259, 10260, 10261, 10262, 10263, 10264, 10469, 10576]
[codex:554559] 1e60: PUSH19 0x3a20747260448201526c185b9cd9995c881998
[codex:554559] 1e74: GAS
[codex:554559] 1e75: JUMPDEST
[codex:554559] 1e76: NOT
[codex:554559] 1e77: MSIZE
[codex:554559] 1e78: PUSH1 0x9a
[codex:554559] 1e7a: SHL
[codex:554559] 1e7b: PUSH1 0x64
[codex:554559] 1e7d: DUP3
[codex:554559] 1e7e: ADD
[codex:554559] 1e7f: MSTORE
[codex:554559] 1e80: PUSH1 0x84
[codex:554559] 1e82: ADD
[codex:554559] 1e83: PUSH2 0x01b4
[codex:554559] 1e86: JUMP
[codex:554559] 1e87: JUMPDEST
[codex:554559] 1e88: PUSH2 0x04c5
[codex:554559] 1e8b: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
[codex:554559] 1ea0: CALLER
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing and locating SELFDESTRUCT opcodes**
[codex:554559] 
[codex:554559] I'm examining the disassembly to distinguish actual SELFDESTRUCT instructions from 0xff bytes that may appear as push data. Since the code snippet and offsets are ambiguous, I'll improve the Python disassembler to parse the complete bytecode, identify real opcodes with their precise offsets, and isolate genuine SELFDESTRUCT calls for better clarity.
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:554559]     0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] # disassemble and record actual SELFDESTRUCT opcodes
[codex:554559] pc=0
[codex:554559] selfdestructs=[]
[codex:554559] while pc < len(code):
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         pc+=1+n
[codex:554559]         continue
[codex:554559]     if op==0xff:
[codex:554559]         selfdestructs.append(pc)
[codex:554559]     pc+=1
[codex:554559] 
[codex:554559] print('Actual SELFDESTRUCT opcode offsets:', selfdestructs)
[codex:554559] 
[codex:554559] # show around first selfdestruct
[codex:554559] for off in selfdestructs[:5]:
[codex:554559]     start=max(0, off-10)
[codex:554559]     end=min(len(code), off+10)
[codex:554559]     print('\\nAround', hex(off))
[codex:554559]     # print simple disasm
[codex:554559]     pc=start
[codex:554559]     while pc<end:
[codex:554559]         op=code[pc]
[codex:554559]         name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]         if 0x60<=op<=0x7f:
[codex:554559]             n=op-0x5f
[codex:554559]             data=code[pc+1:pc+1+n]
[codex:554559]             print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]             pc+=1+n
[codex:554559]         else:
[codex:554559]             print(f'{pc:04x}: {name}')
[codex:554559]             pc+=1
[codex:554559] 
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 28ms:
[codex:554559] Actual SELFDESTRUCT opcode offsets: [3963]
[codex:554559] 
[codex:554559] Around 0xf7b
[codex:554559] 0f71: PUSH5 0x016101b456
[codex:554559] 0f77: JUMPDEST
[codex:554559] 0f78: POP
[codex:554559] 0f79: JUMPDEST
[codex:554559] 0f7a: CALLER
[codex:554559] 0f7b: SELFDESTRUCT
[codex:554559] 0f7c: JUMPDEST
[codex:554559] 0f7d: PUSH2 0x0f84
[codex:554559] 0f80: PUSH2 0x1e87
[codex:554559] 0f83: JUMP
[codex:554559] 0f84: JUMPDEST
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing selfdestruct jump paths**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x0f40
[codex:554559] end=0x0f90
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 24ms:
[codex:554559] 0f40: JUMPDEST
[codex:554559] 0f41: POP
[codex:554559] 0f42: POP
[codex:554559] 0f43: SWAP1
[codex:554559] 0f44: POP
[codex:554559] 0f45: DUP1
[codex:554559] 0f46: PUSH2 0x0f77
[codex:554559] 0f49: JUMPI
[codex:554559] 0f4a: PUSH1 0x40
[codex:554559] 0f4c: MLOAD
[codex:554559] 0f4d: PUSH3 0x461bcd
[codex:554559] 0f51: PUSH1 0xe5
[codex:554559] 0f53: SHL
[codex:554559] 0f54: DUP2
[codex:554559] 0f55: MSTORE
[codex:554559] 0f56: PUSH1 0x20
[codex:554559] 0f58: PUSH1 0x04
[codex:554559] 0f5a: DUP3
[codex:554559] 0f5b: ADD
[codex:554559] 0f5c: MSTORE
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing revert and selfdestruct conditions**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x0ec0
[codex:554559] end=0x0f40
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 23ms:
[codex:554559] 0ec0: OPc6
[codex:554559] 0ec1: JUMPI
[codex:554559] 0ec2: PUSH1 0x00
[codex:554559] 0ec4: DUP1
[codex:554559] 0ec5: REVERT
[codex:554559] 0ec6: JUMPDEST
[codex:554559] 0ec7: POP
[codex:554559] 0ec8: GAS
[codex:554559] 0ec9: CALL
[codex:554559] 0eca: ISZERO
[codex:554559] 0ecb: DUP1
[codex:554559] 0ecc: ISZERO
[codex:554559] 0ecd: PUSH2 0x0eda
[codex:554559] 0ed0: JUMPI
[codex:554559] 0ed1: RETURNDATASIZE
[codex:554559] 0ed2: PUSH1 0x00
[codex:554559] 0ed4: DUP1
[codex:554559] 0ed5: RETURNDATACOPY
[codex:554559] 0ed6: RETURNDATASIZE
[codex:554559] 0ed7: PUSH1 0x00
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing selfdestruct condition in disassembly**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x2c0
[codex:554559] end=0x3d0
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 27ms:
[codex:554559] 02c0: DUP9
[codex:554559] 02c1: CALL
[codex:554559] 02c2: SWAP4
[codex:554559] 02c3: POP
[codex:554559] 02c4: POP
[codex:554559] 02c5: POP
[codex:554559] 02c6: POP
[codex:554559] 02c7: ISZERO
[codex:554559] 02c8: DUP1
[codex:554559] 02c9: ISZERO
[codex:554559] 02ca: PUSH2 0x0112
[codex:554559] 02cd: JUMPI
[codex:554559] 02ce: RETURNDATASIZE
[codex:554559] 02cf: PUSH1 0x00
[codex:554559] 02d1: DUP1
[codex:554559] 02d2: RETURNDATACOPY
[codex:554559] 02d3: RETURNDATASIZE
[codex:554559] 02d4: PUSH1 0x00
[codex:554559] 02d6: REVERT
[codex:554559] 02d7: JUMPDEST
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing selfdestruct access control**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x1e87
[codex:554559] end=0x1f40
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 23ms:
[codex:554559] 1e87: JUMPDEST
[codex:554559] 1e88: PUSH2 0x04c5
[codex:554559] 1e8b: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
[codex:554559] 1ea0: CALLER
[codex:554559] 1ea1: EQ
[codex:554559] 1ea2: DUP1
[codex:554559] 1ea3: PUSH2 0x1ebf
[codex:554559] 1ea6: JUMPI
[codex:554559] 1ea7: POP
[codex:554559] 1ea8: PUSH20 0x26ce7c1976c5eec83ea6ac22d83cb341b08850af
[codex:554559] 1ebd: CALLER
[codex:554559] 1ebe: EQ
[codex:554559] 1ebf: JUMPDEST
[codex:554559] 1ec0: DUP1
[codex:554559] 1ec1: PUSH2 0x1edd
[codex:554559] 1ec4: JUMPI
[codex:554559] 1ec5: POP
[codex:554559] 1ec6: PUSH20 0xb58555fcba6479fced7de1485eb054943a09af7b
[codex:554559] 1edb: CALLER
[codex:554559] 1edc: EQ
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Continuing to review check completion**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x1f3e
[codex:554559] end=0x1fb0
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 25ms:
[codex:554559] 1f3e: PUSH20 0x52b86a86e4d764e8275391c436127e60340a0e6a
[codex:554559] 1f53: CALLER
[codex:554559] 1f54: EQ
[codex:554559] 1f55: JUMPDEST
[codex:554559] 1f56: DUP1
[codex:554559] 1f57: PUSH2 0x1f73
[codex:554559] 1f5a: JUMPI
[codex:554559] 1f5b: POP
[codex:554559] 1f5c: PUSH20 0x41d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac8
[codex:554559] 1f71: CALLER
[codex:554559] 1f72: EQ
[codex:554559] 1f73: JUMPDEST
[codex:554559] 1f74: DUP1
[codex:554559] 1f75: PUSH2 0x1f91
[codex:554559] 1f78: JUMPI
[codex:554559] 1f79: POP
[codex:554559] 1f7a: PUSH20 0xfac983fce7ef3cee8ffb2ceb967e1b2362aada00
[codex:554559] 1f8f: CALLER
[codex:554559] 1f90: EQ
[codex:554559] 1f91: JUMPDEST
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Continuing process**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x1fac
[codex:554559] end=0x2000
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 25ms:
[codex:554559] 1fac: CODECOPY
[codex:554559] 1fad: CALLER
[codex:554559] 1fae: EQ
[codex:554559] 1faf: DUP1
[codex:554559] 1fb0: PUSH2 0x04c0
[codex:554559] 1fb3: JUMPI
[codex:554559] 1fb4: POP
[codex:554559] 1fb5: PUSH20 0x681535922425a4264b3670d9430afc6dc4de103e
[codex:554559] 1fca: CALLER
[codex:554559] 1fcb: EQ
[codex:554559] 1fcc: PUSH2 0x13ce
[codex:554559] 1fcf: JUMP
[codex:554559] 1fd0: JUMPDEST
[codex:554559] 1fd1: PUSH1 0x40
[codex:554559] 1fd3: MLOAD
[codex:554559] 1fd4: PUSH4 0x70a08231
[codex:554559] 1fd9: PUSH1 0xe0
[codex:554559] 1fdb: SHL
[codex:554559] 1fdc: DUP2
[codex:554559] 1fdd: MSTORE
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Investigating CODECOPY instruction placement**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x1760
[codex:554559] end=0x17c0
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 24ms:
[codex:554559] 1760: STOP
[codex:554559] 1761: CALLER
[codex:554559] 1762: EQ
[codex:554559] 1763: DUP1
[codex:554559] 1764: PUSH2 0x1780
[codex:554559] 1767: JUMPI
[codex:554559] 1768: POP
[codex:554559] 1769: PUSH20 0x0811fd1808e14f0b93f0514313965a5f142c5539
[codex:554559] 177e: CALLER
[codex:554559] 177f: EQ
[codex:554559] 1780: JUMPDEST
[codex:554559] 1781: DUP1
[codex:554559] 1782: PUSH2 0x04c0
[codex:554559] 1785: JUMPI
[codex:554559] 1786: POP
[codex:554559] 1787: PUSH20 0x681535922425a4264b3670d9430afc6dc4de103e
[codex:554559] 179c: CALLER
[codex:554559] 179d: EQ
[codex:554559] 179e: PUSH2 0x13ce
[codex:554559] 17a1: JUMP
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing whitelist-controlled selfdestruct and delegatecall risks**
[codex:554559] 
[codex:554559] I'm piecing together how a hardcoded allowlist gates a selfdestruct function, posing a centralization risk since any whitelisted address can destroy the contract without timelock. I'm also tracking a delegatecall pattern in a fallback function to see if it might open injection vulnerabilities, planning to verify the storage-return function at 0x3d4 next.
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x3d4
[codex:554559] end=0x4f0
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 24ms:
[codex:554559] 03d4: JUMPDEST
[codex:554559] 03d5: PUSH2 0x04c5
[codex:554559] 03d8: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
[codex:554559] 03ed: CALLER
[codex:554559] 03ee: EQ
[codex:554559] 03ef: DUP1
[codex:554559] 03f0: PUSH2 0x040c
[codex:554559] 03f3: JUMPI
[codex:554559] 03f4: POP
[codex:554559] 03f5: PUSH20 0x26ce7c1976c5eec83ea6ac22d83cb341b08850af
[codex:554559] 040a: CALLER
[codex:554559] 040b: EQ
[codex:554559] 040c: JUMPDEST
[codex:554559] 040d: DUP1
[codex:554559] 040e: PUSH2 0x042a
[codex:554559] 0411: JUMPI
[codex:554559] 0412: POP
[codex:554559] 0413: PUSH20 0xb58555fcba6479fced7de1485eb054943a09af7b
[codex:554559] 0428: CALLER
[codex:554559] 0429: EQ
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing whitelist check control flow**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x13b0
[codex:554559] end=0x13f0
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 23ms:
[codex:554559] 13b0: SWAP2
[codex:554559] 13b1: SWAP1
[codex:554559] 13b2: PUSH2 0x26ec
[codex:554559] 13b5: JUMP
[codex:554559] 13b6: JUMPDEST
[codex:554559] 13b7: SWAP7
[codex:554559] 13b8: SWAP6
[codex:554559] 13b9: POP
[codex:554559] 13ba: POP
[codex:554559] 13bb: POP
[codex:554559] 13bc: POP
[codex:554559] 13bd: POP
[codex:554559] 13be: POP
[codex:554559] 13bf: JUMP
[codex:554559] 13c0: JUMPDEST
[codex:554559] 13c1: PUSH2 0x0c74
[codex:554559] 13c4: DUP5
[codex:554559] 13c5: DUP5
[codex:554559] 13c6: DUP5
[codex:554559] 13c7: DUP5
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing selfdestruct and whitelist logic**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x1460
[codex:554559] end=0x1488
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 25ms:
[codex:554559] 1460: ADD
[codex:554559] 1461: MSTORE
[codex:554559] 1462: DUP1
[codex:554559] 1463: PUSH2 0x146b
[codex:554559] 1466: DUP2
[codex:554559] 1467: PUSH2 0x28c6
[codex:554559] 146a: JUMP
[codex:554559] 146b: JUMPDEST
[codex:554559] 146c: SWAP2
[codex:554559] 146d: POP
[codex:554559] 146e: POP
[codex:554559] 146f: PUSH2 0x1403
[codex:554559] 1472: JUMP
[codex:554559] 1473: JUMPDEST
[codex:554559] 1474: POP
[codex:554559] 1475: JUMP
[codex:554559] 1476: JUMPDEST
[codex:554559] 1477: PUSH1 0x00
[codex:554559] 1479: PUSH2 0x1483
[codex:554559] 147c: DUP7
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing require and selfdestruct usage**
[codex:554559] 
[codex:554559] I'm piecing together that a require check enforces whitelist access for the selfdestruct function, indicating only certain addresses can call it. The presence of selfdestruct flagged as a high-severity risk due to its permanent nature, though it's possibly intended as a kill switch or upgrade. I’m also spotting a delegatecall function gated by the whitelist, hinting at a controlled proxy pattern I want to investigate further.
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x0e10
[codex:554559] end=0x0e60
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 23ms:
[codex:554559] 0e10: RETURNDATASIZE
[codex:554559] 0e11: PUSH1 0x00
[codex:554559] 0e13: REVERT
[codex:554559] 0e14: JUMPDEST
[codex:554559] 0e15: POP
[codex:554559] 0e16: POP
[codex:554559] 0e17: POP
[codex:554559] 0e18: PUSH1 0x00
[codex:554559] 0e1a: SWAP2
[codex:554559] 0e1b: SWAP1
[codex:554559] 0e1c: SWAP2
[codex:554559] 0e1d: SSTORE
[codex:554559] 0e1e: POP
[codex:554559] 0e1f: POP
[codex:554559] 0e20: POP
[codex:554559] 0e21: POP
[codex:554559] 0e22: POP
[codex:554559] 0e23: JUMP
[codex:554559] 0e24: JUMPDEST
[codex:554559] 0e25: PUSH2 0x0e2c
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Analyzing delegatecall setup and risks**
[codex:554559] exec
[codex:554559] /bin/bash -lc "python - <<'PY'
[codex:554559] import re
[codex:554559] 
[codex:554559] with open('/tmp/codex-multi-0tr2yh_g/BYTECODE_BUNDLE.txt') as f:
[codex:554559]     data=f.read()
[codex:554559] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:554559] code=bytes.fromhex(hexstr)
[codex:554559] 
[codex:554559] opcodes={
[codex:554559]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:554559]     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:554559]     0x20:'SHA3',
[codex:554559]     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:554559]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:554559]     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:554559]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:554559]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:554559]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:554559]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:554559]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:554559] }
[codex:554559] 
[codex:554559] start=0x2520
[codex:554559] end=0x2580
[codex:554559] pc=start
[codex:554559] while pc<end:
[codex:554559]     op=code[pc]
[codex:554559]     name=opcodes.get(op, f'OP{op:02x}')
[codex:554559]     if 0x60<=op<=0x7f:
[codex:554559]         n=op-0x5f
[codex:554559]         data=code[pc+1:pc+1+n]
[codex:554559]         print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:554559]         pc+=1+n
[codex:554559]     else:
[codex:554559]         print(f'{pc:04x}: {name}')
[codex:554559]         pc+=1
[codex:554559] PY" in /tmp/codex-multi-0tr2yh_g succeeded in 23ms:
[codex:554559] 2520: OP26
[codex:554559] 2521: JUMPI
[codex:554559] 2522: PUSH1 0x00
[codex:554559] 2524: DUP1
[codex:554559] 2525: REVERT
[codex:554559] 2526: JUMPDEST
[codex:554559] 2527: PUSH2 0x2532
[codex:554559] 252a: DUP8
[codex:554559] 252b: DUP3
[codex:554559] 252c: DUP9
[codex:554559] 252d: ADD
[codex:554559] 252e: PUSH2 0x2424
[codex:554559] 2531: JUMP
[codex:554559] 2532: JUMPDEST
[codex:554559] 2533: SWAP6
[codex:554559] 2534: SWAP9
[codex:554559] 2535: SWAP5
[codex:554559] 2536: SWAP8
[codex:554559] 2537: POP
[codex:554559] 2538: SWAP6
[codex:554559] 
[codex:554559] thinking
[codex:554559] **Summarizing privileged selfdestruct risk**
[codex:554559] 
[codex:554559] I'm assessing the bytecode for a privileged selfdestruct path gated by a hardcoded whitelist of addresses embedded in the bytecode, which can destroy the contract and drain ETH. I’m preparing a JSON finding detailing severity, category, evidence with hex patterns and address samples, and recommended mitigations, carefully avoiding overclaims and sticking to verified bytecode observations.
[codex:554559] codex
[codex:554559] {"no_findings":false,"summary":"Identified a privileged SELFDESTRUCT path gated by a hardcoded caller allowlist.","findings":[{"severity":"high","category":"access_control","title":"Whitelisted caller can selfdestruct the contract","exploit_scenario":"A caller that matches one of the hardcoded allowlist addresses invokes the externally exposed function (selector `a7b8e688`). The call path reaches `CALLER SELFDESTRUCT`, permanently destroying the contract and sending any ETH balance to the caller, disabling all contract functionality thereafter.","recommendation":"Remove the SELFDESTRUCT path or gate it behind a single, explicitly controlled owner with a timelock/multisig. If it is intended, document the kill switch and ensure allowlisted addresses are non-upgradeable and tightly controlled.","evidence":"Dispatch table exposes selector `a7b8e688` (`...63a7b8e68814610365...`) and the runtime contains a `CALLER SELFDESTRUCT` sequence (`...5b33ff...`). The call path is gated only by a hardcoded caller allowlist (chain of `PUSH20 <addr> CALLER EQ`, e.g., `73a6ae57b1da8238cd149bc718c40578e4620b752c3314...`).","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:554559] tokens used
[codex:554559] 147,394
[codex:554559] {"no_findings":false,"summary":"Identified a privileged SELFDESTRUCT path gated by a hardcoded caller allowlist.","findings":[{"severity":"high","category":"access_control","title":"Whitelisted caller can selfdestruct the contract","exploit_scenario":"A caller that matches one of the hardcoded allowlist addresses invokes the externally exposed function (selector `a7b8e688`). The call path reaches `CALLER SELFDESTRUCT`, permanently destroying the contract and sending any ETH balance to the caller, disabling all contract functionality thereafter.","recommendation":"Remove the SELFDESTRUCT path or gate it behind a single, explicitly controlled owner with a timelock/multisig. If it is intended, document the kill switch and ensure allowlisted addresses are non-upgradeable and tightly controlled.","evidence":"Dispatch table exposes selector `a7b8e688` (`...63a7b8e68814610365...`) and the runtime contains a `CALLER SELFDESTRUCT` sequence (`...5b33ff...`). The call path is gated only by a hardcoded caller allowlist (chain of `PUSH20 <addr> CALLER EQ`, e.g., `73a6ae57b1da8238cd149bc718c40578e4620b752c3314...`).","locations":["BYTECODE_BUNDLE.txt:5"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T02:03:03.185536+00:00",
        "returncode": 0
    },
    "summary": "Identified a privileged SELFDESTRUCT path gated by a hardcoded caller allowlist.",
    "raw_final": {
        "summary": "Identified a privileged SELFDESTRUCT path gated by a hardcoded caller allowlist.",
        "findings": [
            {
                "title": "Whitelisted caller can selfdestruct the contract",
                "category": "access_control",
                "evidence": "Dispatch table exposes selector `a7b8e688` (`...63a7b8e68814610365...`) and the runtime contains a `CALLER SELFDESTRUCT` sequence (`...5b33ff...`). The call path is gated only by a hardcoded caller allowlist (chain of `PUSH20 <addr> CALLER EQ`, e.g., `73a6ae57b1da8238cd149bc718c40578e4620b752c3314...`).",
                "severity": "high",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Remove the SELFDESTRUCT path or gate it behind a single, explicitly controlled owner with a timelock/multisig. If it is intended, document the kill switch and ensure allowlisted addresses are non-upgradeable and tightly controlled.",
                "exploit_scenario": "A caller that matches one of the hardcoded allowlist addresses invokes the externally exposed function (selector `a7b8e688`). The call path reaches `CALLER SELFDESTRUCT`, permanently destroying the contract and sending any ETH balance to the caller, disabling all contract functionality thereafter."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
1
CREATE2
1
CALL-family (heavy)
19
EXT*/BALANCE
7
Total opcodes
7012
Flags
delegatecall_present selfdestruct_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: PUSH2 0x0095
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x9d118770
00000019: GT
0000001a: PUSH2 0x0059
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x9d118770
00000024: EQ
00000025: PUSH2 0x0345
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa7b8e688
0000002f: EQ
00000030: PUSH2 0x0365
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd2925723
0000003a: EQ
0000003b: PUSH2 0x0378
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xd69ea74d
00000045: EQ
00000046: PUSH2 0x038b
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfa461e33
00000050: EQ
00000051: PUSH2 0x03b4
00000054: JUMPI
00000055: PUSH2 0x0114
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0x10c117ab
00000060: EQ
00000061: PUSH2 0x02d7
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x23a69e75
0000006b: EQ
0000006c: PUSH2 0x02ea
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x2768b07e
00000076: EQ
00000077: PUSH2 0x030a
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x5c19a95c
00000081: EQ
00000082: PUSH2 0x031d
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x7c04575b
0000008c: EQ
0000008d: PUSH2 0x0330
00000090: JUMPI
00000091: PUSH2 0x0114
00000094: JUMP
00000095: JUMPDEST
00000096: CALLDATASIZE
00000097: PUSH2 0x0114
0000009a: JUMPI
0000009b: CALLER
0000009c: PUSH1 0x00
0000009e: DUP1
0000009f: MLOAD
000000a0: PUSH1 0x20
000000a2: PUSH2 0x291e
000000a5: DUP4
000000a6: CODECOPY
000000a7: DUP2
000000a8: MLOAD
000000a9: SWAP2
000000aa: MSTORE
000000ab: EQ
000000ac: PUSH2 0x0112
000000af: JUMPI
000000b0: PUSH1 0x00
000000b2: DUP1
000000b3: MLOAD
000000b4: PUSH1 0x20
000000b6: PUSH2 0x291e
000000b9: DUP4
000000ba: CODECOPY
000000bb: DUP2
000000bc: MLOAD
000000bd: SWAP2
000000be: MSTORE
000000bf: PUSH1 0x01
000000c1: PUSH1 0x01
000000c3: PUSH1 0xa0
000000c5: SHL
000000c6: SUB
000000c7: AND
000000c8: PUSH4 0xd0e30db0
000000cd: CALLVALUE
000000ce: PUSH1 0x40
000000d0: MLOAD
000000d1: DUP3
000000d2: PUSH4 0xffffffff
000000d7: AND
000000d8: PUSH1 0xe0
000000da: SHL
000000db: DUP2
000000dc: MSTORE
000000dd: PUSH1 0x04
000000df: ADD
000000e0: PUSH1 0x00
000000e2: PUSH1 0x40
000000e4: MLOAD
000000e5: DUP1
000000e6: DUP4
000000e7: SUB
000000e8: DUP2
000000e9: DUP6
000000ea: DUP9
000000eb: DUP1
000000ec: EXTCODESIZE
000000ed: ISZERO
000000ee: DUP1
000000ef: ISZERO
000000f0: PUSH2 0x00f8
000000f3: JUMPI
000000f4: PUSH1 0x00
000000f6: DUP1
000000f7: REVERT
000000f8: JUMPDEST
000000f9: POP
000000fa: GAS
000000fb: CALL
000000fc: ISZERO
000000fd: DUP1
000000fe: ISZERO
000000ff: PUSH2 0x010c
00000102: JUMPI
00000103: RETURNDATASIZE
00000104: PUSH1 0x00
00000106: DUP1
00000107: RETURNDATACOPY
00000108: RETURNDATASIZE
00000109: PUSH1 0x00
0000010b: REVERT
0000010c: JUMPDEST
0000010d: POP
0000010e: POP
0000010f: POP
00000110: POP
00000111: POP
00000112: JUMPDEST
00000113: STOP
00000114: JUMPDEST
00000115: PUSH2 0x011c
00000118: PUSH2 0x03d4
0000011b: JUMP
0000011c: JUMPDEST
0000011d: PUSH1 0x00
0000011f: DUP1
00000120: PUSH1 0x40
00000122: MLOAD
00000123: PUSH1 0x01
00000125: PUSH1 0x00
00000127: DUP3
00000128: CALLDATACOPY
00000129: DUP1
0000012a: MLOAD
0000012b: SWAP3
0000012c: POP
0000012d: PUSH1 0x0a
0000012f: PUSH1 0x01
00000131: DUP3
00000132: CALLDATACOPY
00000133: MLOAD
00000134: SWAP1
00000135: POP
00000136: PUSH1 0x01
00000138: PUSH1 0x01
0000013a: PUSH1 0xb0
0000013c: SHL
0000013d: SUB
0000013e: NOT
0000013f: DUP2
00000140: AND
00000141: ISZERO
00000142: PUSH2 0x01bd
00000145: JUMPI
00000146: TIMESTAMP
00000147: PUSH2 0x0151
0000014a: PUSH1 0x01
0000014c: NUMBER
0000014d: PUSH2 0x23d2
00000150: JUMP
00000151: JUMPDEST
00000152: BLOCKHASH
00000153: PUSH1 0x40
00000155: MLOAD
00000156: PUSH1 0x20
00000158: ADD
00000159: PUSH2 0x016c
0000015c: SWAP3
0000015d: SWAP2
0000015e: SWAP1
0000015f: SWAP2
00000160: DUP3
00000161: MSTORE
00000162: PUSH1 0x20
00000164: DUP3
00000165: ADD
00000166: MSTORE
00000167: PUSH1 0x40
00000169: ADD
0000016a: SWAP1
0000016b: JUMP
0000016c: JUMPDEST
0000016d: PUSH1 0x40
0000016f: MLOAD
00000170: PUSH1 0x20
00000172: DUP2
00000173: DUP4
00000174: SUB
00000175: SUB
00000176: DUP2
00000177: MSTORE
00000178: SWAP1
00000179: PUSH1 0x40
0000017b: MSTORE
0000017c: DUP1
0000017d: MLOAD
0000017e: SWAP1
0000017f: PUSH1 0x20
00000181: ADD
00000182: KECCAK256
00000183: PUSH1 0x01
00000185: PUSH1 0x01
00000187: PUSH1 0xb0
00000189: SHL
0000018a: SUB
0000018b: NOT
0000018c: AND
0000018d: DUP2
0000018e: PUSH1 0x01
00000190: PUSH1 0x01
00000192: PUSH1 0xb0
00000194: SHL
00000195: SUB
00000196: NOT
00000197: AND
00000198: EQ
00000199: PUSH2 0x01bd
0000019c: JUMPI
0000019d: PUSH1 0x40
0000019f: MLOAD
000001a0: PUSH3 0x461bcd
000001a4: PUSH1 0xe5
000001a6: SHL
000001a7: DUP2
000001a8: MSTORE
000001a9: PUSH1 0x04
000001ab: ADD
000001ac: PUSH2 0x01b4
000001af: SWAP1
000001b0: PUSH2 0x23eb
000001b3: JUMP
000001b4: JUMPDEST
000001b5: PUSH1 0x40
000001b7: MLOAD
000001b8: DUP1
000001b9: SWAP2
000001ba: SUB
000001bb: SWAP1
000001bc: REVERT
000001bd: JUMPDEST
000001be: PUSH1 0x01
000001c0: PUSH1 0xf9
000001c2: SHL
000001c3: PUSH1 0x01
000001c5: PUSH1 0x01
000001c7: PUSH1 0xf8
000001c9: SHL
000001ca: SUB
000001cb: NOT
000001cc: DUP4
000001cd: AND
000001ce: SWAP1
000001cf: DUP2
000001d0: GT
000001d1: ISZERO
000001d2: SWAP1
000001d3: ISZERO
000001d4: DUP1
000001d5: PUSH2 0x01eb
000001d8: JUMPI
000001d9: POP
000001da: PUSH1 0x03
000001dc: PUSH1 0xf8
000001de: SHL
000001df: PUSH1 0x01
000001e1: PUSH1 0x01
000001e3: PUSH1 0xf8
000001e5: SHL
000001e6: SUB
000001e7: NOT
000001e8: DUP5
000001e9: AND
000001ea: EQ
000001eb: JUMPDEST
000001ec: ISZERO
000001ed: PUSH2 0x01f9
000001f0: JUMPI
000001f1: PUSH2 0x0112
000001f4: DUP2
000001f5: PUSH2 0x04c7
000001f8: JUMP
000001f9: JUMPDEST
000001fa: PUSH1 0x05
000001fc: PUSH1 0xf8
000001fe: SHL
000001ff: PUSH1 0x01
00000201: PUSH1 0x01
00000203: PUSH1 0xf8
00000205: SHL
00000206: SUB
00000207: NOT
00000208: DUP5
00000209: AND
0000020a: GT
0000020b: PUSH2 0x0271
0000020e: JUMPI
0000020f: PUSH2 0x0217
00000212: DUP2
00000213: PUSH2 0x05c5
00000216: JUMP
00000217: JUMPDEST
00000218: PUSH1 0x01
0000021a: PUSH1 0xf9
0000021c: SHL
0000021d: PUSH1 0x01
0000021f: PUSH1 0x01
00000221: PUSH1 0xf8
00000223: SHL
00000224: SUB
00000225: NOT
00000226: DUP5
00000227: AND
00000228: EQ
00000229: DUP1
0000022a: PUSH2 0x0240
0000022d: JUMPI
0000022e: POP
0000022f: PUSH1 0x05
00000231: PUSH1 0xf8
00000233: SHL
00000234: PUSH1 0x01
00000236: PUSH1 0x01
00000238: PUSH1 0xf8
0000023a: SHL
0000023b: SUB
0000023c: NOT
0000023d: DUP5
0000023e: AND
0000023f: EQ
00000240: JUMPDEST
00000241: ISZERO
00000242: PUSH2 0x0112
00000245: JUMPI
00000246: PUSH1 0x40
00000248: MLOAD
00000249: COINBASE
0000024a: SWAP1
0000024b: CALLVALUE
0000024c: DUP1
0000024d: ISZERO
0000024e: PUSH2 0x08fc
00000251: MUL
00000252: SWAP2
00000253: PUSH1 0x00
00000255: DUP2
00000256: DUP2
00000257: DUP2
00000258: DUP6
00000259: DUP9
0000025a: DUP9
0000025b: CALL
0000025c: SWAP4
0000025d: POP
0000025e: POP
0000025f: POP
00000260: POP
00000261: ISZERO
00000262: DUP1
00000263: ISZERO
00000264: PUSH2 0x0112
00000267: JUMPI
00000268: RETURNDATASIZE
00000269: PUSH1 0x00
0000026b: DUP1
0000026c: RETURNDATACOPY
0000026d: RETURNDATASIZE
0000026e: PUSH1 0x00
00000270: REVERT
00000271: JUMPDEST
00000272: PUSH1 0x01
00000274: PUSH1 0x01
00000276: PUSH1 0xf8
00000278: SHL
00000279: SUB
0000027a: NOT
0000027b: DUP4
0000027c: AND
0000027d: PUSH1 0x03
0000027f: PUSH1 0xf9
00000281: SHL
00000282: SUB
00000283: PUSH2 0x028e
00000286: JUMPI
00000287: PUSH2 0x0112
0000028a: PUSH2 0x0697
0000028d: JUMP
0000028e: JUMPDEST
0000028f: PUSH2 0x0296
00000292: PUSH2 0x0912
00000295: JUMP
00000296: JUMPDEST
00000297: PUSH1 0x01
00000299: PUSH1 0x01
0000029b: PUSH1 0xf8
0000029d: SHL
0000029e: SUB
0000029f: NOT
000002a0: DUP4
000002a1: AND
000002a2: PUSH1 0x01
000002a4: PUSH1 0xfb
000002a6: SHL
000002a7: SUB
000002a8: PUSH2 0x0112
000002ab: JUMPI
000002ac: PUSH1 0x40
000002ae: MLOAD
000002af: COINBASE
000002b0: SWAP1
000002b1: CALLVALUE
000002b2: DUP1
000002b3: ISZERO
000002b4: PUSH2 0x08fc
000002b7: MUL
000002b8: SWAP2
000002b9: PUSH1 0x00
000002bb: DUP2
000002bc: DUP2
000002bd: DUP2
000002be: DUP6
000002bf: DUP9
000002c0: DUP9
000002c1: CALL
000002c2: SWAP4
000002c3: POP
000002c4: POP
000002c5: POP
000002c6: POP
000002c7: ISZERO
000002c8: DUP1
000002c9: ISZERO
000002ca: PUSH2 0x0112
000002cd: JUMPI
000002ce: RETURNDATASIZE
000002cf: PUSH1 0x00
000002d1: DUP1
000002d2: RETURNDATACOPY
000002d3: RETURNDATASIZE
000002d4: PUSH1 0x00
000002d6: REVERT
000002d7: JUMPDEST
000002d8: PUSH2 0x0112
000002db: PUSH2 0x02e5
000002de: CALLDATASIZE
000002df: PUSH1 0x04
000002e1: PUSH2 0x2485
000002e4: JUMP
000002e5: JUMPDEST
000002e6: PUSH2 0x0b66
000002e9: JUMP
000002ea: JUMPDEST
000002eb: CALLVALUE
000002ec: DUP1
000002ed: ISZERO
000002ee: PUSH2 0x02f6
000002f1: JUMPI
000002f2: PUSH1 0x00
000002f4: DUP1
000002f5: REVERT
000002f6: JUMPDEST
000002f7: POP
000002f8: PUSH2 0x0112
000002fb: PUSH2 0x0305
000002fe: CALLDATASIZE
000002ff: PUSH1 0x04
00000301: PUSH2 0x24eb
00000304: JUMP
00000305: JUMPDEST
00000306: PUSH2 0x0c7a
00000309: JUMP
0000030a: JUMPDEST
0000030b: PUSH2 0x0112
0000030e: PUSH2 0x0318
00000311: CALLDATASIZE
00000312: PUSH1 0x04
00000314: PUSH2 0x2485
00000317: JUMP
00000318: JUMPDEST
00000319: PUSH2 0x0c88
0000031c: JUMP
0000031d: JUMPDEST
0000031e: PUSH2 0x0112
00000321: PUSH2 0x032b
00000324: CALLDATASIZE
00000325: PUSH1 0x04
00000327: PUSH2 0x253e
0000032a: JUMP
0000032b: JUMPDEST
0000032c: PUSH2 0x0e24
0000032f: JUMP
00000330: JUMPDEST
00000331: CALLVALUE
00000332: DUP1
00000333: ISZERO
00000334: PUSH2 0x033c
00000337: JUMPI
00000338: PUSH1 0x00
0000033a: DUP1
0000033b: REVERT
0000033c: JUMPDEST
0000033d: POP
0000033e: PUSH2 0x0112
00000341: PUSH2 0x0e5e
00000344: JUMP
00000345: JUMPDEST
00000346: CALLVALUE
00000347: DUP1
00000348: ISZERO
00000349: PUSH2 0x0351
0000034c: JUMPI
0000034d: PUSH1 0x00
0000034f: DUP1
00000350: REVERT
00000351: JUMPDEST
00000352: POP
00000353: PUSH2 0x0112
00000356: PUSH2 0x0360
00000359: CALLDATASIZE
0000035a: PUSH1 0x04
0000035c: PUSH2 0x2559
0000035f: JUMP
00000360: JUMPDEST
00000361: PUSH2 0x0e71
00000364: JUMP
00000365: JUMPDEST
00000366: PUSH2 0x0112
00000369: PUSH2 0x0373
0000036c: CALLDATASIZE
0000036d: PUSH1 0x04
0000036f: PUSH2 0x2584
00000372: JUMP
00000373: JUMPDEST
00000374: PUSH2 0x0f7c
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH2 0x0112
0000037c: PUSH2 0x0386
0000037f: CALLDATASIZE
00000380: PUSH1 0x04
00000382: PUSH2 0x2606
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH2 0x10a9
0000038a: JUMP
0000038b: JUMPDEST
0000038c: PUSH2 0x039e
0000038f: PUSH2 0x0399
00000392: CALLDATASIZE
00000393: PUSH1 0x04
00000395: PUSH2 0x265a
00000398: JUMP
00000399: JUMPDEST
0000039a: PUSH2 0x12ae
0000039d: JUMP
0000039e: JUMPDEST
0000039f: PUSH1 0x40
000003a1: MLOAD
000003a2: PUSH2 0x03ab
000003a5: SWAP2
000003a6: SWAP1
000003a7: PUSH2 0x26ec
000003aa: JUMP
000003ab: JUMPDEST
000003ac: PUSH1 0x40
000003ae: MLOAD
000003af: DUP1
000003b0: SWAP2
000003b1: SUB
000003b2: SWAP1
000003b3: RETURN
000003b4: JUMPDEST
000003b5: CALLVALUE
000003b6: DUP1
000003b7: ISZERO
000003b8: PUSH2 0x03c0
000003bb: JUMPI
000003bc: PUSH1 0x00
000003be: DUP1
000003bf: REVERT
000003c0: JUMPDEST
000003c1: POP
000003c2: PUSH2 0x0112
000003c5: PUSH2 0x03cf
000003c8: CALLDATASIZE
000003c9: PUSH1 0x04
000003cb: PUSH2 0x24eb
000003ce: JUMP
000003cf: JUMPDEST
000003d0: PUSH2 0x13c0
000003d3: JUMP
000003d4: JUMPDEST
000003d5: PUSH2 0x04c5
000003d8: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
000003ed: CALLER
000003ee: EQ
000003ef: DUP1
000003f0: PUSH2 0x040c
000003f3: JUMPI
000003f4: POP
000003f5: PUSH20 0x26ce7c1976c5eec83ea6ac22d83cb341b08850af
0000040a: CALLER
0000040b: EQ
0000040c: JUMPDEST
0000040d: DUP1
0000040e: PUSH2 0x042a
00000411: JUMPI
00000412: POP
00000413: PUSH20 0xb58555fcba6479fced7de1485eb054943a09af7b
00000428: CALLER
00000429: EQ
0000042a: JUMPDEST
0000042b: DUP1
0000042c: PUSH2 0x0448
0000042f: JUMPI
00000430: POP
00000431: PUSH20 0xb7ab1de5b259a880c4bb5451bdbe6f80f3798538
00000446: CALLER
00000447: EQ
00000448: JUMPDEST
00000449: DUP1
0000044a: PUSH2 0x0466
0000044d: JUMPI
0000044e: POP
0000044f: PUSH20 0x4f80b2cd1f550f81581c15f690bdd623f3824c86
00000464: CALLER
00000465: EQ
00000466: JUMPDEST
00000467: DUP1
00000468: PUSH2 0x0484
0000046b: JUMPI
0000046c: POP
0000046d: PUSH20 0x5b5001c4f80f33ec93b891062ed2e1d0acc05bb6
00000482: CALLER
00000483: EQ
00000484: JUMPDEST
00000485: DUP1
00000486: PUSH2 0x04a2
00000489: JUMPI
0000048a: POP
0000048b: PUSH20 0x52b86a86e4d764e8275391c436127e60340a0e6a
000004a0: CALLER
000004a1: EQ
000004a2: JUMPDEST
000004a3: DUP1
000004a4: PUSH2 0x04c0
000004a7: JUMPI
000004a8: POP
000004a9: PUSH20 0x41d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac8
000004be: CALLER
000004bf: EQ
000004c0: JUMPDEST
000004c1: PUSH2 0x13ce
000004c4: JUMP
000004c5: JUMPDEST
000004c6: JUMP
000004c7: JUMPDEST
000004c8: PUSH1 0x00
000004ca: DUP1
000004cb: PUSH1 0x00
000004cd: DUP1
000004ce: PUSH1 0x00
000004d0: DUP1
000004d1: PUSH1 0x40
000004d3: MLOAD
000004d4: PUSH1 0x3b
000004d6: PUSH1 0x0b
000004d8: DUP3
000004d9: CALLDATACOPY
000004da: PUSH1 0x0c
000004dc: DUP2
000004dd: SUB
000004de: MLOAD
000004df: SWAP7
000004e0: POP
000004e1: PUSH1 0x14
000004e3: DUP2
000004e4: ADD
000004e5: MLOAD
000004e6: PUSH1 0xf8
000004e8: SHR
000004e9: PUSH1 0x02
000004eb: SHL
000004ec: PUSH1 0x15
000004ee: DUP3
000004ef: ADD
000004f0: MLOAD
000004f1: PUSH1 0xe0
000004f3: SHR
000004f4: DUP1
000004f5: DUP3
000004f6: SHL
000004f7: SWAP5
000004f8: POP
000004f9: POP
000004fa: POP
000004fb: PUSH1 0x19
000004fd: DUP2
000004fe: ADD
000004ff: MLOAD
00000500: SWAP6
00000501: POP
00000502: PUSH1 0x39
00000504: DUP2
00000505: ADD
00000506: MLOAD
00000507: SWAP5
00000508: POP
00000509: PUSH1 0x3a
0000050b: DUP2
0000050c: ADD
0000050d: MLOAD
0000050e: SWAP2
0000050f: POP
00000510: POP
00000511: PUSH2 0x0525
00000514: PUSH1 0x00
00000516: DUP1
00000517: MLOAD
00000518: PUSH1 0x20
0000051a: PUSH2 0x291e
0000051d: DUP4
0000051e: CODECOPY
0000051f: DUP2
00000520: MLOAD
00000521: SWAP2
00000522: MSTORE
00000523: SWAP1
00000524: JUMP
00000525: JUMPDEST
00000526: SWAP3
00000527: POP
00000528: DUP7
00000529: ISZERO
0000052a: PUSH2 0x0550
0000052d: JUMPI
0000052e: PUSH2 0x054b
00000531: PUSH2 0x04c0
00000534: DUP8
00000535: DUP6
00000536: DUP6
00000537: DUP10
00000538: PUSH1 0x01
0000053a: PUSH1 0x01
0000053c: PUSH1 0xf8
0000053e: SHL
0000053f: SUB
00000540: NOT
00000541: DUP11
00000542: AND
00000543: ISZERO
00000544: ISZERO
00000545: PUSH1 0x00
00000547: PUSH2 0x1476
0000054a: JUMP
0000054b: JUMPDEST
0000054c: PUSH2 0x05bc
0000054f: JUMP
00000550: JUMPDEST
00000551: PUSH1 0x00
00000553: DUP1
00000554: PUSH1 0x40
00000556: MLOAD
00000557: PUSH1 0x16
00000559: PUSH1 0x46
0000055b: DUP3
0000055c: CALLDATACOPY
0000055d: DUP1
0000055e: MLOAD
0000055f: PUSH1 0x14
00000561: SWAP1
00000562: SWAP2
00000563: ADD
00000564: MLOAD
00000565: SWAP1
00000566: SWAP3
00000567: POP
00000568: SWAP1
00000569: POP
0000056a: DUP7
0000056b: PUSH2 0x0586
0000056e: DUP7
0000056f: DUP11
00000570: DUP8
00000571: PUSH1 0x01
00000573: PUSH1 0x01
00000575: PUSH1 0xf8
00000577: SHL
00000578: SUB
00000579: NOT
0000057a: DUP12
0000057b: AND
0000057c: ISZERO
0000057d: ISZERO
0000057e: PUSH1 0x00
00000580: DUP9
00000581: DUP9
00000582: PUSH2 0x14bc
00000585: JUMP
00000586: JUMPDEST
00000587: LT
00000588: ISZERO
00000589: PUSH2 0x05b9
0000058c: JUMPI
0000058d: PUSH1 0x40
0000058f: MLOAD
00000590: PUSH3 0x461bcd
00000594: PUSH1 0xe5
00000596: SHL
00000597: DUP2
00000598: MSTORE
00000599: PUSH1 0x20
0000059b: PUSH1 0x04
0000059d: DUP3
0000059e: ADD
0000059f: MSTORE
000005a0: PUSH1 0x02
000005a2: PUSH1 0x24
000005a4: DUP3
000005a5: ADD
000005a6: MSTORE
000005a7: PUSH2 0x4631
000005aa: PUSH1 0xf0
000005ac: SHL
000005ad: PUSH1 0x44
000005af: DUP3
000005b0: ADD
000005b1: MSTORE
000005b2: PUSH1 0x64
000005b4: ADD
000005b5: PUSH2 0x01b4
000005b8: JUMP
000005b9: JUMPDEST
000005ba: POP
000005bb: POP
000005bc: JUMPDEST
000005bd: POP
000005be: POP
000005bf: POP
000005c0: POP
000005c1: POP
000005c2: POP
000005c3: POP
000005c4: JUMP
000005c5: JUMPDEST
000005c6: PUSH1 0x00
000005c8: DUP1
000005c9: PUSH1 0x00
000005cb: DUP1
000005cc: PUSH1 0x00
000005ce: PUSH1 0x40
000005d0: MLOAD
000005d1: PUSH1 0x4e
000005d3: PUSH1 0x0b
000005d5: DUP3
000005d6: CALLDATACOPY
000005d7: PUSH1 0x0c
000005d9: DUP2
000005da: SUB
000005db: MLOAD
000005dc: SWAP6
000005dd: POP
000005de: PUSH1 0x08
000005e0: DUP2
000005e1: ADD
000005e2: MLOAD
000005e3: SWAP5
000005e4: POP
000005e5: PUSH1 0x28
000005e7: DUP2
000005e8: ADD
000005e9: MLOAD
000005ea: SWAP4
000005eb: POP
000005ec: PUSH1 0x48
000005ee: DUP2
000005ef: ADD
000005f0: MLOAD
000005f1: PUSH1 0xf8
000005f3: SHR
000005f4: PUSH1 0x02
000005f6: SHL
000005f7: PUSH1 0x49
000005f9: DUP3
000005fa: ADD
000005fb: MLOAD
000005fc: PUSH1 0xe0
000005fe: SHR
000005ff: DUP1
00000600: DUP3
00000601: SHL
00000602: SWAP5
00000603: POP
00000604: POP
00000605: POP
00000606: PUSH1 0x4d
00000608: DUP2
00000609: ADD
0000060a: MLOAD
0000060b: SWAP2
0000060c: POP
0000060d: POP
0000060e: DUP6
0000060f: ISZERO
00000610: PUSH2 0x0635
00000613: JUMPI
00000614: PUSH2 0x0630
00000617: PUSH2 0x04c0
0000061a: DUP6
0000061b: DUP8
0000061c: DUP7
0000061d: DUP7
0000061e: PUSH1 0x01
00000620: PUSH1 0x01
00000622: PUSH1 0xf8
00000624: SHL
00000625: SUB
00000626: NOT
00000627: DUP8
00000628: AND
00000629: ISZERO
0000062a: PUSH1 0x00
0000062c: PUSH2 0x1476
0000062f: JUMP
00000630: JUMPDEST
00000631: PUSH2 0x068f
00000634: JUMP
00000635: JUMPDEST
00000636: PUSH1 0x00
00000638: DUP1
00000639: PUSH1 0x40
0000063b: MLOAD
0000063c: PUSH1 0x03
0000063e: PUSH1 0x59
00000640: DUP3
00000641: CALLDATACOPY
00000642: DUP1
00000643: MLOAD
00000644: PUSH1 0x01
00000646: SWAP1
00000647: SWAP2
00000648: ADD
00000649: MLOAD
0000064a: SWAP1
0000064b: SWAP3
0000064c: POP
0000064d: SWAP1
0000064e: POP
0000064f: PUSH2 0x068c
00000652: DUP5
00000653: PUSH2 0x0685
00000656: DUP10
00000657: DUP10
00000658: DUP10
00000659: PUSH1 0x01
0000065b: PUSH1 0x01
0000065d: PUSH1 0xf8
0000065f: SHL
00000660: SUB
00000661: NOT
00000662: DUP10
00000663: AND
00000664: ISZERO
00000665: ISZERO
00000666: PUSH1 0x00
00000668: PUSH20 0x6015551cd911ff4685072e2793f56c841e3ab661
0000067d: PUSH1 0x61
0000067f: SHL
00000680: DUP10
00000681: PUSH2 0x14bc
00000684: JUMP
00000685: JUMPDEST
00000686: LT
00000687: ISZERO
00000688: PUSH2 0x13ce
0000068b: JUMP
0000068c: JUMPDEST
0000068d: POP
0000068e: POP
0000068f: JUMPDEST
00000690: POP
00000691: POP
00000692: POP
00000693: POP
00000694: POP
00000695: POP
00000696: JUMP
00000697: JUMPDEST
00000698: PUSH1 0x40
0000069a: DUP1
0000069b: MLOAD
0000069c: PUSH1 0xa0
0000069e: DUP2
0000069f: ADD
000006a0: DUP3
000006a1: MSTORE
000006a2: PUSH1 0x00
000006a4: DUP1
000006a5: DUP3
000006a6: MSTORE
000006a7: PUSH1 0x20
000006a9: DUP3
000006aa: ADD
000006ab: DUP2
000006ac: SWAP1
000006ad: MSTORE
000006ae: SWAP2
000006af: DUP2
000006b0: ADD
000006b1: DUP3
000006b2: SWAP1
000006b3: MSTORE
000006b4: PUSH1 0x60
000006b6: DUP2
000006b7: ADD
000006b8: DUP3
000006b9: SWAP1
000006ba: MSTORE
000006bb: PUSH1 0x80
000006bd: DUP2
000006be: ADD
000006bf: SWAP2
000006c0: SWAP1
000006c1: SWAP2
000006c2: MSTORE
000006c3: PUSH1 0x40
000006c5: DUP1
000006c6: MLOAD
000006c7: PUSH1 0xc0
000006c9: DUP2
000006ca: ADD
000006cb: DUP3
000006cc: MSTORE
000006cd: PUSH1 0x00
000006cf: DUP1
000006d0: DUP3
000006d1: MSTORE
000006d2: PUSH1 0x20
000006d4: DUP3
000006d5: ADD
000006d6: DUP2
000006d7: SWAP1
000006d8: MSTORE
000006d9: SWAP2
000006da: DUP2
000006db: ADD
000006dc: DUP3
000006dd: SWAP1
000006de: MSTORE
000006df: PUSH1 0x60
000006e1: DUP2
000006e2: ADD
000006e3: DUP3
000006e4: SWAP1
000006e5: MSTORE
000006e6: PUSH1 0x80
000006e8: DUP2
000006e9: ADD
000006ea: DUP3
000006eb: SWAP1
000006ec: MSTORE
000006ed: PUSH1 0xa0
000006ef: DUP2
000006f0: ADD
000006f1: SWAP2
000006f2: SWAP1
000006f3: SWAP2
000006f4: MSTORE
000006f5: PUSH1 0x00
000006f7: DUP1
000006f8: PUSH1 0x00
000006fa: DUP1
000006fb: PUSH1 0x00
000006fd: PUSH1 0x40
000006ff: MLOAD
00000700: PUSH1 0xbb
00000702: PUSH1 0x0b
00000704: DUP3
00000705: CALLDATACOPY
00000706: DUP1
00000707: MLOAD
00000708: PUSH1 0xf8
0000070a: SHR
0000070b: PUSH1 0x02
0000070d: PUSH1 0x01
0000070f: DUP3
00000710: XOR
00000711: MOD
00000712: PUSH1 0x20
00000714: DUP11
00000715: ADD
00000716: MSTORE
00000717: PUSH1 0x01
00000719: DUP2
0000071a: PUSH1 0x01
0000071c: SHR
0000071d: AND
0000071e: SWAP6
0000071f: POP
00000720: PUSH1 0x01
00000722: DUP2
00000723: PUSH1 0x02
00000725: SHR
00000726: AND
00000727: SWAP7
00000728: POP
00000729: DUP1
0000072a: PUSH1 0x03
0000072c: SHR
0000072d: PUSH1 0xa0
0000072f: DUP10
00000730: ADD
00000731: MSTORE
00000732: POP
00000733: PUSH1 0x01
00000735: PUSH1 0x01
00000737: PUSH1 0xa0
00000739: SHL
0000073a: SUB
0000073b: PUSH1 0x0b
0000073d: DUP3
0000073e: SUB
0000073f: MLOAD
00000740: AND
00000741: DUP9
00000742: MSTORE
00000743: PUSH1 0x01
00000745: PUSH1 0x01
00000747: PUSH1 0xa0
00000749: SHL
0000074a: SUB
0000074b: PUSH1 0x09
0000074d: DUP3
0000074e: ADD
0000074f: MLOAD
00000750: AND
00000751: DUP8
00000752: MSTORE
00000753: PUSH1 0x01
00000755: PUSH1 0x01
00000757: PUSH1 0xa0
00000759: SHL
0000075a: SUB
0000075b: PUSH1 0x1d
0000075d: DUP3
0000075e: ADD
0000075f: MLOAD
00000760: AND
00000761: PUSH1 0x20
00000763: DUP9
00000764: ADD
00000765: MSTORE
00000766: PUSH1 0x3d
00000768: DUP2
00000769: ADD
0000076a: MLOAD
0000076b: PUSH1 0xf8
0000076d: SHR
0000076e: PUSH1 0x02
00000770: SHL
00000771: PUSH1 0x3e
00000773: DUP3
00000774: ADD
00000775: MLOAD
00000776: PUSH1 0xe0
00000778: SHR
00000779: DUP1
0000077a: DUP3
0000077b: SHL
0000077c: PUSH1 0x80
0000077e: DUP12
0000077f: ADD
00000780: MSTORE
00000781: POP
00000782: POP
00000783: PUSH1 0x42
00000785: DUP2
00000786: ADD
00000787: MLOAD
00000788: PUSH1 0x40
0000078a: DUP9
0000078b: ADD
0000078c: MSTORE
0000078d: PUSH1 0x62
0000078f: DUP2
00000790: ADD
00000791: MLOAD
00000792: SWAP3
00000793: POP
00000794: PUSH1 0x82
00000796: DUP2
00000797: ADD
00000798: MLOAD
00000799: SWAP2
0000079a: POP
0000079b: PUSH1 0x83
0000079d: DUP2
0000079e: ADD
0000079f: MLOAD
000007a0: SWAP4
000007a1: POP
000007a2: PUSH1 0x85
000007a4: DUP2
000007a5: ADD
000007a6: MLOAD
000007a7: PUSH1 0x60
000007a9: DUP10
000007aa: ADD
000007ab: MSTORE
000007ac: PUSH1 0x87
000007ae: DUP2
000007af: ADD
000007b0: MLOAD
000007b1: PUSH1 0x80
000007b3: DUP9
000007b4: ADD
000007b5: MSTORE
000007b6: PUSH1 0x01
000007b8: PUSH1 0x01
000007ba: PUSH1 0xa0
000007bc: SHL
000007bd: SUB
000007be: PUSH1 0x9b
000007c0: DUP3
000007c1: ADD
000007c2: MLOAD
000007c3: AND
000007c4: PUSH1 0x60
000007c6: DUP9
000007c7: ADD
000007c8: MSTORE
000007c9: POP
000007ca: PUSH2 0x07de
000007cd: PUSH1 0x00
000007cf: DUP1
000007d0: MLOAD
000007d1: PUSH1 0x20
000007d3: PUSH2 0x291e
000007d6: DUP4
000007d7: CODECOPY
000007d8: DUP2
000007d9: MLOAD
000007da: SWAP2
000007db: MSTORE
000007dc: SWAP1
000007dd: JUMP
000007de: JUMPDEST
000007df: PUSH1 0x01
000007e1: PUSH1 0x01
000007e3: PUSH1 0xa0
000007e5: SHL
000007e6: SUB
000007e7: AND
000007e8: PUSH1 0x40
000007ea: DUP9
000007eb: ADD
000007ec: MSTORE
000007ed: POP
000007ee: DUP3
000007ef: ISZERO
000007f0: PUSH2 0x0831
000007f3: JUMPI
000007f4: DUP1
000007f5: PUSH2 0x07fe
000007f8: DUP8
000007f9: DUP8
000007fa: PUSH2 0x15a1
000007fd: JUMP
000007fe: JUMPDEST
000007ff: LT
00000800: ISZERO
00000801: PUSH2 0x0630
00000804: JUMPI
00000805: PUSH1 0x40
00000807: MLOAD
00000808: PUSH3 0x461bcd
0000080c: PUSH1 0xe5
0000080e: SHL
0000080f: DUP2
00000810: MSTORE
00000811: PUSH1 0x20
00000813: PUSH1 0x04
00000815: DUP3
00000816: ADD
00000817: MSTORE
00000818: PUSH1 0x02
0000081a: PUSH1 0x24
0000081c: DUP3
0000081d: ADD
0000081e: MSTORE
0000081f: PUSH2 0x5331
00000822: PUSH1 0xf0
00000824: SHL
00000825: PUSH1 0x44
00000827: DUP3
00000828: ADD
00000829: MSTORE
0000082a: PUSH1 0x64
0000082c: ADD
0000082d: PUSH2 0x01b4
00000830: JUMP
00000831: JUMPDEST
00000832: DUP6
00000833: PUSH1 0x20
00000835: ADD
00000836: MLOAD
00000837: ISZERO
00000838: PUSH2 0x088f
0000083b: JUMPI
0000083c: PUSH2 0x0859
0000083f: DUP7
00000840: PUSH1 0x00
00000842: ADD
00000843: MLOAD
00000844: DUP8
00000845: PUSH1 0x40
00000847: ADD
00000848: MLOAD
00000849: DUP9
0000084a: PUSH1 0x80
0000084c: ADD
0000084d: MLOAD
0000084e: DUP6
0000084f: DUP9
00000850: DUP11
00000851: PUSH1 0x00
00000853: ADD
00000854: MLOAD
00000855: PUSH2 0x1476
00000858: JUMP
00000859: JUMPDEST
0000085a: PUSH2 0x088a
0000085d: JUMPI
0000085e: PUSH1 0x40
00000860: MLOAD
00000861: PUSH3 0x461bcd
00000865: PUSH1 0xe5
00000867: SHL
00000868: DUP2
00000869: MSTORE
0000086a: PUSH1 0x20
0000086c: PUSH1 0x04
0000086e: DUP3
0000086f: ADD
00000870: MSTORE
00000871: PUSH1 0x02
00000873: PUSH1 0x24
00000875: DUP3
00000876: ADD
00000877: MSTORE
00000878: PUSH2 0x2999
0000087b: PUSH1 0xf1
0000087d: SHL
0000087e: PUSH1 0x44
00000880: DUP3
00000881: ADD
00000882: MSTORE
00000883: PUSH1 0x64
00000885: ADD
00000886: PUSH2 0x01b4
00000889: JUMP
0000088a: JUMPDEST
0000088b: PUSH2 0x08f0
0000088e: JUMP
0000088f: JUMPDEST
00000890: DUP2
00000891: PUSH2 0x08bd
00000894: DUP8
00000895: PUSH1 0x40
00000897: ADD
00000898: MLOAD
00000899: DUP9
0000089a: PUSH1 0x00
0000089c: ADD
0000089d: MLOAD
0000089e: DUP10
0000089f: PUSH1 0x80
000008a1: ADD
000008a2: MLOAD
000008a3: DUP9
000008a4: DUP11
000008a5: PUSH1 0x00
000008a7: ADD
000008a8: MLOAD
000008a9: DUP12
000008aa: PUSH1 0x20
000008ac: ADD
000008ad: MLOAD
000008ae: PUSH1 0x60
000008b0: SHL
000008b1: DUP14
000008b2: PUSH1 0x60
000008b4: ADD
000008b5: MLOAD
000008b6: PUSH1 0xf0
000008b8: SHL
000008b9: PUSH2 0x14bc
000008bc: JUMP
000008bd: JUMPDEST
000008be: LT
000008bf: ISZERO
000008c0: PUSH2 0x08f0
000008c3: JUMPI
000008c4: PUSH1 0x40
000008c6: MLOAD
000008c7: PUSH3 0x461bcd
000008cb: PUSH1 0xe5
000008cd: SHL
000008ce: DUP2
000008cf: MSTORE
000008d0: PUSH1 0x20
000008d2: PUSH1 0x04
000008d4: DUP3
000008d5: ADD
000008d6: MSTORE
000008d7: PUSH1 0x02
000008d9: PUSH1 0x24
000008db: DUP3
000008dc: ADD
000008dd: MSTORE
000008de: PUSH2 0x5333
000008e1: PUSH1 0xf0
000008e3: SHL
000008e4: PUSH1 0x44
000008e6: DUP3
000008e7: ADD
000008e8: MSTORE
000008e9: PUSH1 0x64
000008eb: ADD
000008ec: PUSH2 0x01b4
000008ef: JUMP
000008f0: JUMPDEST
000008f1: PUSH2 0x068f
000008f4: PUSH2 0x04c0
000008f7: DUP7
000008f8: PUSH1 0x00
000008fa: ADD
000008fb: MLOAD
000008fc: DUP8
000008fd: PUSH1 0x20
000008ff: ADD
00000900: MLOAD
00000901: DUP9
00000902: PUSH1 0x40
00000904: ADD
00000905: MLOAD
00000906: DUP6
00000907: DUP11
00000908: PUSH1 0xa0
0000090a: ADD
0000090b: MLOAD
0000090c: PUSH1 0x00
0000090e: PUSH2 0x1476
00000911: JUMP
00000912: JUMPDEST
00000913: PUSH1 0x40
00000915: DUP1
00000916: MLOAD
00000917: PUSH1 0xa0
00000919: DUP2
0000091a: ADD
0000091b: DUP3
0000091c: MSTORE
0000091d: PUSH1 0x00
0000091f: DUP1
00000920: DUP3
00000921: MSTORE
00000922: PUSH1 0x20
00000924: DUP3
00000925: ADD
00000926: DUP2
00000927: SWAP1
00000928: MSTORE
00000929: SWAP2
0000092a: DUP2
0000092b: ADD
0000092c: DUP3
0000092d: SWAP1
0000092e: MSTORE
0000092f: PUSH1 0x60
00000931: DUP2
00000932: ADD
00000933: DUP3
00000934: SWAP1
00000935: MSTORE
00000936: PUSH1 0x80
00000938: DUP2
00000939: ADD
0000093a: SWAP2
0000093b: SWAP1
0000093c: SWAP2
0000093d: MSTORE
0000093e: PUSH1 0x40
00000940: DUP1
00000941: MLOAD
00000942: PUSH1 0xc0
00000944: DUP2
00000945: ADD
00000946: DUP3
00000947: MSTORE
00000948: PUSH1 0x00
0000094a: DUP1
0000094b: DUP3
0000094c: MSTORE
0000094d: PUSH1 0x20
0000094f: DUP3
00000950: ADD
00000951: DUP2
00000952: SWAP1
00000953: MSTORE
00000954: SWAP2
00000955: DUP2
00000956: ADD
00000957: DUP3
00000958: SWAP1
00000959: MSTORE
0000095a: PUSH1 0x60
0000095c: DUP2
0000095d: ADD
0000095e: DUP3
0000095f: SWAP1
00000960: MSTORE
00000961: PUSH1 0x80
00000963: DUP2
00000964: ADD
00000965: DUP3
00000966: SWAP1
00000967: MSTORE
00000968: PUSH1 0xa0
0000096a: DUP2
0000096b: ADD
0000096c: SWAP2
0000096d: SWAP1
0000096e: SWAP2
0000096f: MSTORE
00000970: PUSH1 0x00
00000972: DUP1
00000973: PUSH1 0x00
00000975: DUP1
00000976: PUSH1 0x00
00000978: PUSH1 0x40
0000097a: MLOAD
0000097b: PUSH1 0xbb
0000097d: PUSH1 0x0b
0000097f: DUP3
00000980: CALLDATACOPY
00000981: DUP1
00000982: MLOAD
00000983: PUSH1 0xf8
00000985: SHR
00000986: PUSH1 0x02
00000988: PUSH1 0x01
0000098a: DUP3
0000098b: XOR
0000098c: MOD
0000098d: PUSH1 0x20
0000098f: DUP11
00000990: ADD
00000991: MSTORE
00000992: PUSH1 0x01
00000994: DUP2
00000995: PUSH1 0x01
00000997: SHR
00000998: AND
00000999: SWAP6
0000099a: POP
0000099b: PUSH1 0x01
0000099d: DUP2
0000099e: PUSH1 0x02
000009a0: SHR
000009a1: AND
000009a2: SWAP7
000009a3: POP
000009a4: DUP1
000009a5: PUSH1 0x03
000009a7: SHR
000009a8: PUSH1 0xa0
000009aa: DUP10
000009ab: ADD
000009ac: MSTORE
000009ad: POP
000009ae: PUSH1 0x01
000009b0: PUSH1 0x01
000009b2: PUSH1 0xa0
000009b4: SHL
000009b5: SUB
000009b6: PUSH1 0x0b
000009b8: DUP3
000009b9: SUB
000009ba: MLOAD
000009bb: AND
000009bc: DUP9
000009bd: MSTORE
000009be: PUSH1 0x01
000009c0: PUSH1 0x01
000009c2: PUSH1 0xa0
000009c4: SHL
000009c5: SUB
000009c6: PUSH1 0x09
000009c8: DUP3
000009c9: ADD
000009ca: MLOAD
000009cb: AND
000009cc: DUP8
000009cd: MSTORE
000009ce: PUSH1 0x01
000009d0: PUSH1 0x01
000009d2: PUSH1 0xa0
000009d4: SHL
000009d5: SUB
000009d6: PUSH1 0x1d
000009d8: DUP3
000009d9: ADD
000009da: MLOAD
000009db: AND
000009dc: PUSH1 0x40
000009de: DUP10
000009df: ADD
000009e0: MSTORE
000009e1: PUSH1 0x01
000009e3: PUSH1 0x01
000009e5: PUSH1 0xa0
000009e7: SHL
000009e8: SUB
000009e9: PUSH1 0x31
000009eb: DUP3
000009ec: ADD
000009ed: MLOAD
000009ee: AND
000009ef: PUSH1 0x20
000009f1: DUP9
000009f2: ADD
000009f3: MSTORE
000009f4: PUSH1 0x51
000009f6: DUP2
000009f7: ADD
000009f8: MLOAD
000009f9: PUSH1 0x80
000009fb: DUP10
000009fc: ADD
000009fd: MSTORE
000009fe: PUSH1 0x71
00000a00: DUP2
00000a01: ADD
00000a02: MLOAD
00000a03: SWAP4
00000a04: POP
00000a05: PUSH1 0x91
00000a07: DUP2
00000a08: ADD
00000a09: MLOAD
00000a0a: PUSH1 0x40
00000a0c: DUP9
00000a0d: ADD
00000a0e: MSTORE
00000a0f: PUSH1 0xb1
00000a11: DUP2
00000a12: ADD
00000a13: MLOAD
00000a14: PUSH1 0xf8
00000a16: SHR
00000a17: PUSH1 0x02
00000a19: SHL
00000a1a: PUSH1 0xb2
00000a1c: DUP3
00000a1d: ADD
00000a1e: MLOAD
00000a1f: PUSH1 0xe0
00000a21: SHR
00000a22: DUP1
00000a23: DUP3
00000a24: SHL
00000a25: SWAP5
00000a26: POP
00000a27: POP
00000a28: POP
00000a29: PUSH1 0xb6
00000a2b: DUP2
00000a2c: ADD
00000a2d: MLOAD
00000a2e: SWAP2
00000a2f: POP
00000a30: PUSH1 0x99
00000a32: DUP2
00000a33: ADD
00000a34: MLOAD
00000a35: PUSH1 0x60
00000a37: DUP10
00000a38: ADD
00000a39: MSTORE
00000a3a: PUSH1 0x9b
00000a3c: DUP2
00000a3d: ADD
00000a3e: MLOAD
00000a3f: PUSH1 0x80
00000a41: DUP9
00000a42: ADD
00000a43: MSTORE
00000a44: POP
00000a45: PUSH2 0x0a59
00000a48: PUSH1 0x00
00000a4a: DUP1
00000a4b: MLOAD
00000a4c: PUSH1 0x20
00000a4e: PUSH2 0x291e
00000a51: DUP4
00000a52: CODECOPY
00000a53: DUP2
00000a54: MLOAD
00000a55: SWAP2
00000a56: MSTORE
00000a57: SWAP1
00000a58: JUMP
00000a59: JUMPDEST
00000a5a: PUSH1 0x01
00000a5c: PUSH1 0x01
00000a5e: PUSH1 0xa0
00000a60: SHL
00000a61: SUB
00000a62: AND
00000a63: PUSH1 0x60
00000a65: DUP8
00000a66: ADD
00000a67: MSTORE
00000a68: POP
00000a69: DUP3
00000a6a: ISZERO
00000a6b: PUSH2 0x0aac
00000a6e: JUMPI
00000a6f: DUP1
00000a70: PUSH2 0x0a79
00000a73: DUP8
00000a74: DUP8
00000a75: PUSH2 0x15a1
00000a78: JUMP
00000a79: JUMPDEST
00000a7a: LT
00000a7b: ISZERO
00000a7c: PUSH2 0x0630
00000a7f: JUMPI
00000a80: PUSH1 0x40
00000a82: MLOAD
00000a83: PUSH3 0x461bcd
00000a87: PUSH1 0xe5
00000a89: SHL
00000a8a: DUP2
00000a8b: MSTORE
00000a8c: PUSH1 0x20
00000a8e: PUSH1 0x04
00000a90: DUP3
00000a91: ADD
00000a92: MSTORE
00000a93: PUSH1 0x02
00000a95: PUSH1 0x24
00000a97: DUP3
00000a98: ADD
00000a99: MSTORE
00000a9a: PUSH2 0x4531
00000a9d: PUSH1 0xf0
00000a9f: SHL
00000aa0: PUSH1 0x44
00000aa2: DUP3
00000aa3: ADD
00000aa4: MSTORE
00000aa5: PUSH1 0x64
00000aa7: ADD
00000aa8: PUSH2 0x01b4
00000aab: JUMP
00000aac: JUMPDEST
00000aad: DUP6
00000aae: PUSH1 0x20
00000ab0: ADD
00000ab1: MLOAD
00000ab2: ISZERO
00000ab3: PUSH2 0x0b05
00000ab6: JUMPI
00000ab7: PUSH2 0x0ad4
00000aba: DUP7
00000abb: PUSH1 0x00
00000abd: ADD
00000abe: MLOAD
00000abf: DUP8
00000ac0: PUSH1 0x40
00000ac2: ADD
00000ac3: MLOAD
00000ac4: DUP9
00000ac5: PUSH1 0x80
00000ac7: ADD
00000ac8: MLOAD
00000ac9: DUP6
00000aca: DUP9
00000acb: DUP11
00000acc: PUSH1 0x00
00000ace: ADD
00000acf: MLOAD
00000ad0: PUSH2 0x1476
00000ad3: JUMP
00000ad4: JUMPDEST
00000ad5: PUSH2 0x088a
00000ad8: JUMPI
00000ad9: PUSH1 0x40
00000adb: MLOAD
00000adc: PUSH3 0x461bcd
00000ae0: PUSH1 0xe5
00000ae2: SHL
00000ae3: DUP2
00000ae4: MSTORE
00000ae5: PUSH1 0x20
00000ae7: PUSH1 0x04
00000ae9: DUP3
00000aea: ADD
00000aeb: MSTORE
00000aec: PUSH1 0x02
00000aee: PUSH1 0x24
00000af0: DUP3
00000af1: ADD
00000af2: MSTORE
00000af3: PUSH2 0x2299
00000af6: PUSH1 0xf1
00000af8: SHL
00000af9: PUSH1 0x44
00000afb: DUP3
00000afc: ADD
00000afd: MSTORE
00000afe: PUSH1 0x64
00000b00: ADD
00000b01: PUSH2 0x01b4
00000b04: JUMP
00000b05: JUMPDEST
00000b06: DUP2
00000b07: PUSH2 0x0b33
00000b0a: DUP8
00000b0b: PUSH1 0x40
00000b0d: ADD
00000b0e: MLOAD
00000b0f: DUP9
00000b10: PUSH1 0x00
00000b12: ADD
00000b13: MLOAD
00000b14: DUP10
00000b15: PUSH1 0x80
00000b17: ADD
00000b18: MLOAD
00000b19: DUP9
00000b1a: DUP11
00000b1b: PUSH1 0x00
00000b1d: ADD
00000b1e: MLOAD
00000b1f: DUP12
00000b20: PUSH1 0x20
00000b22: ADD
00000b23: MLOAD
00000b24: PUSH1 0x60
00000b26: SHL
00000b27: DUP14
00000b28: PUSH1 0x60
00000b2a: ADD
00000b2b: MLOAD
00000b2c: PUSH1 0xf0
00000b2e: SHL
00000b2f: PUSH2 0x14bc
00000b32: JUMP
00000b33: JUMPDEST
00000b34: LT
00000b35: ISZERO
00000b36: PUSH2 0x08f0
00000b39: JUMPI
00000b3a: PUSH1 0x40
00000b3c: MLOAD
00000b3d: PUSH3 0x461bcd
00000b41: PUSH1 0xe5
00000b43: SHL
00000b44: DUP2
00000b45: MSTORE
00000b46: PUSH1 0x20
00000b48: PUSH1 0x04
00000b4a: DUP3
00000b4b: ADD
00000b4c: MSTORE
00000b4d: PUSH1 0x02
00000b4f: PUSH1 0x24
00000b51: DUP3
00000b52: ADD
00000b53: MSTORE
00000b54: PUSH2 0x4533
00000b57: PUSH1 0xf0
00000b59: SHL
00000b5a: PUSH1 0x44
00000b5c: DUP3
00000b5d: ADD
00000b5e: MSTORE
00000b5f: PUSH1 0x64
00000b61: ADD
00000b62: PUSH2 0x01b4
00000b65: JUMP
00000b66: JUMPDEST
00000b67: PUSH2 0x0b6e
00000b6a: PUSH2 0x1748
00000b6d: JUMP
00000b6e: JUMPDEST
00000b6f: PUSH2 0x0b7b
00000b72: PUSH1 0x20
00000b74: DUP3
00000b75: ADD
00000b76: DUP3
00000b77: PUSH2 0x26ff
00000b7a: JUMP
00000b7b: JUMPDEST
00000b7c: PUSH1 0x01
00000b7e: PUSH1 0x01
00000b80: PUSH1 0xb0
00000b82: SHL
00000b83: SUB
00000b84: NOT
00000b85: AND
00000b86: ISZERO
00000b87: PUSH2 0x0c07
00000b8a: JUMPI
00000b8b: TIMESTAMP
00000b8c: PUSH2 0x0b96
00000b8f: PUSH1 0x01
00000b91: NUMBER
00000b92: PUSH2 0x23d2
00000b95: JUMP
00000b96: JUMPDEST
00000b97: BLOCKHASH
00000b98: PUSH1 0x40
00000b9a: MLOAD
00000b9b: PUSH1 0x20
00000b9d: ADD
00000b9e: PUSH2 0x0bb1
00000ba1: SWAP3
00000ba2: SWAP2
00000ba3: SWAP1
00000ba4: SWAP2
00000ba5: DUP3
00000ba6: MSTORE
00000ba7: PUSH1 0x20
00000ba9: DUP3
00000baa: ADD
00000bab: MSTORE
00000bac: PUSH1 0x40
00000bae: ADD
00000baf: SWAP1
00000bb0: JUMP
00000bb1: JUMPDEST
00000bb2: PUSH1 0x40
00000bb4: DUP1
00000bb5: MLOAD
00000bb6: PUSH1 0x1f
00000bb8: NOT
00000bb9: DUP2
00000bba: DUP5
00000bbb: SUB
00000bbc: ADD
00000bbd: DUP2
00000bbe: MSTORE
00000bbf: SWAP2
00000bc0: SWAP1
00000bc1: MSTORE
00000bc2: DUP1
00000bc3: MLOAD
00000bc4: PUSH1 0x20
00000bc6: SWAP2
00000bc7: DUP3
00000bc8: ADD
00000bc9: KECCAK256
00000bca: PUSH1 0x01
00000bcc: PUSH1 0x01
00000bce: PUSH1 0xb0
00000bd0: SHL
00000bd1: SUB
00000bd2: NOT
00000bd3: AND
00000bd4: SWAP1
00000bd5: PUSH2 0x0be0
00000bd8: SWAP1
00000bd9: DUP4
00000bda: ADD
00000bdb: DUP4
00000bdc: PUSH2 0x26ff
00000bdf: JUMP
00000be0: JUMPDEST
00000be1: PUSH1 0x01
00000be3: PUSH1 0x01
00000be5: PUSH1 0xb0
00000be7: SHL
00000be8: SUB
00000be9: NOT
00000bea: AND
00000beb: EQ
00000bec: PUSH2 0x0c07
00000bef: JUMPI
00000bf0: PUSH1 0x40
00000bf2: MLOAD
00000bf3: PUSH3 0x461bcd
00000bf7: PUSH1 0xe5
00000bf9: SHL
00000bfa: DUP2
00000bfb: MSTORE
00000bfc: PUSH1 0x04
00000bfe: ADD
00000bff: PUSH2 0x01b4
00000c02: SWAP1
00000c03: PUSH2 0x23eb
00000c06: JUMP
00000c07: JUMPDEST
00000c08: PUSH1 0x40
00000c0a: MLOAD
00000c0b: PUSH4 0x3095c057
00000c10: PUSH1 0xe0
00000c12: SHL
00000c13: DUP2
00000c14: MSTORE
00000c15: PUSH1 0x01
00000c17: PUSH1 0x01
00000c19: PUSH1 0xa0
00000c1b: SHL
00000c1c: SUB
00000c1d: DUP6
00000c1e: AND
00000c1f: SWAP1
00000c20: PUSH4 0x3095c057
00000c25: SWAP1
00000c26: PUSH2 0x0c35
00000c29: SWAP1
00000c2a: DUP7
00000c2b: SWAP1
00000c2c: DUP7
00000c2d: SWAP1
00000c2e: PUSH1 0x04
00000c30: ADD
00000c31: PUSH2 0x2752
00000c34: JUMP
00000c35: JUMPDEST
00000c36: PUSH1 0x00
00000c38: PUSH1 0x40
00000c3a: MLOAD
00000c3b: DUP1
00000c3c: DUP4
00000c3d: SUB
00000c3e: DUP2
00000c3f: PUSH1 0x00
00000c41: DUP8
00000c42: DUP1
00000c43: EXTCODESIZE
00000c44: ISZERO
00000c45: DUP1
00000c46: ISZERO
00000c47: PUSH2 0x0c4f
00000c4a: JUMPI
00000c4b: PUSH1 0x00
00000c4d: DUP1
00000c4e: REVERT
00000c4f: JUMPDEST
00000c50: POP
00000c51: GAS
00000c52: CALL
00000c53: ISZERO
00000c54: DUP1
00000c55: ISZERO
00000c56: PUSH2 0x0c63
00000c59: JUMPI
00000c5a: RETURNDATASIZE
00000c5b: PUSH1 0x00
00000c5d: DUP1
00000c5e: RETURNDATACOPY
00000c5f: RETURNDATASIZE
00000c60: PUSH1 0x00
00000c62: REVERT
00000c63: JUMPDEST
00000c64: POP
00000c65: POP
00000c66: POP
00000c67: POP
00000c68: PUSH2 0x0c74
00000c6b: DUP2
00000c6c: PUSH1 0x20
00000c6e: ADD
00000c6f: CALLDATALOAD
00000c70: PUSH2 0x17a2
00000c73: JUMP
00000c74: JUMPDEST
00000c75: POP
00000c76: POP
00000c77: POP
00000c78: POP
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: PUSH2 0x0c74
00000c7e: DUP5
00000c7f: DUP5
00000c80: DUP5
00000c81: DUP5
00000c82: PUSH1 0x01
00000c84: PUSH2 0x1909
00000c87: JUMP
00000c88: JUMPDEST
00000c89: PUSH2 0x0c90
00000c8c: PUSH2 0x1748
00000c8f: JUMP
00000c90: JUMPDEST
00000c91: PUSH2 0x0c9d
00000c94: PUSH1 0x20
00000c96: DUP3
00000c97: ADD
00000c98: DUP3
00000c99: PUSH2 0x26ff
00000c9c: JUMP
00000c9d: JUMPDEST
00000c9e: PUSH1 0x01
00000ca0: PUSH1 0x01
00000ca2: PUSH1 0xb0
00000ca4: SHL
00000ca5: SUB
00000ca6: NOT
00000ca7: AND
00000ca8: ISZERO
00000ca9: PUSH2 0x0d29
00000cac: JUMPI
00000cad: TIMESTAMP
00000cae: PUSH2 0x0cb8
00000cb1: PUSH1 0x01
00000cb3: NUMBER
00000cb4: PUSH2 0x23d2
00000cb7: JUMP
00000cb8: JUMPDEST
00000cb9: BLOCKHASH
00000cba: PUSH1 0x40
00000cbc: MLOAD
00000cbd: PUSH1 0x20
00000cbf: ADD
00000cc0: PUSH2 0x0cd3
00000cc3: SWAP3
00000cc4: SWAP2
00000cc5: SWAP1
00000cc6: SWAP2
00000cc7: DUP3
00000cc8: MSTORE
00000cc9: PUSH1 0x20
00000ccb: DUP3
00000ccc: ADD
00000ccd: MSTORE
00000cce: PUSH1 0x40
00000cd0: ADD
00000cd1: SWAP1
00000cd2: JUMP
00000cd3: JUMPDEST
00000cd4: PUSH1 0x40
00000cd6: DUP1
00000cd7: MLOAD
00000cd8: PUSH1 0x1f
00000cda: NOT
00000cdb: DUP2
00000cdc: DUP5
00000cdd: SUB
00000cde: ADD
00000cdf: DUP2
00000ce0: MSTORE
00000ce1: SWAP2
00000ce2: SWAP1
00000ce3: MSTORE
00000ce4: DUP1
00000ce5: MLOAD
00000ce6: PUSH1 0x20
00000ce8: SWAP2
00000ce9: DUP3
00000cea: ADD
00000ceb: KECCAK256
00000cec: PUSH1 0x01
00000cee: PUSH1 0x01
00000cf0: PUSH1 0xb0
00000cf2: SHL
00000cf3: SUB
00000cf4: NOT
00000cf5: AND
00000cf6: SWAP1
00000cf7: PUSH2 0x0d02
00000cfa: SWAP1
00000cfb: DUP4
00000cfc: ADD
00000cfd: DUP4
00000cfe: PUSH2 0x26ff
00000d01: JUMP
00000d02: JUMPDEST
00000d03: PUSH1 0x01
00000d05: PUSH1 0x01
00000d07: PUSH1 0xb0
00000d09: SHL
00000d0a: SUB
00000d0b: NOT
00000d0c: AND
00000d0d: EQ
00000d0e: PUSH2 0x0d29
00000d11: JUMPI
00000d12: PUSH1 0x40
00000d14: MLOAD
00000d15: PUSH3 0x461bcd
00000d19: PUSH1 0xe5
00000d1b: SHL
00000d1c: DUP2
00000d1d: MSTORE
00000d1e: PUSH1 0x04
00000d20: ADD
00000d21: PUSH2 0x01b4
00000d24: SWAP1
00000d25: PUSH2 0x23eb
00000d28: JUMP
00000d29: JUMPDEST
00000d2a: PUSH1 0x40
00000d2c: MLOAD
00000d2d: PUSH4 0x70a08231
00000d32: PUSH1 0xe0
00000d34: SHL
00000d35: DUP2
00000d36: MSTORE
00000d37: ADDRESS
00000d38: PUSH1 0x04
00000d3a: DUP3
00000d3b: ADD
00000d3c: MSTORE
00000d3d: PUSH1 0x00
00000d3f: SWAP1
00000d40: PUSH1 0x00
00000d42: DUP1
00000d43: MLOAD
00000d44: PUSH1 0x20
00000d46: PUSH2 0x291e
00000d49: DUP4
00000d4a: CODECOPY
00000d4b: DUP2
00000d4c: MLOAD
00000d4d: SWAP2
00000d4e: MSTORE
00000d4f: SWAP1
00000d50: PUSH4 0x70a08231
00000d55: SWAP1
00000d56: PUSH1 0x24
00000d58: ADD
00000d59: PUSH1 0x20
00000d5b: PUSH1 0x40
00000d5d: MLOAD
00000d5e: DUP1
00000d5f: DUP4
00000d60: SUB
00000d61: DUP2
00000d62: DUP7
00000d63: GAS
00000d64: STATICCALL
00000d65: ISZERO
00000d66: DUP1
00000d67: ISZERO
00000d68: PUSH2 0x0d75
00000d6b: JUMPI
00000d6c: RETURNDATASIZE
00000d6d: PUSH1 0x00
00000d6f: DUP1
00000d70: RETURNDATACOPY
00000d71: RETURNDATASIZE
00000d72: PUSH1 0x00
00000d74: REVERT
00000d75: JUMPDEST
00000d76: POP
00000d77: POP
00000d78: POP
00000d79: POP
00000d7a: PUSH1 0x40
00000d7c: MLOAD
00000d7d: RETURNDATASIZE
00000d7e: PUSH1 0x1f
00000d80: NOT
00000d81: PUSH1 0x1f
00000d83: DUP3
00000d84: ADD
00000d85: AND
00000d86: DUP3
00000d87: ADD
00000d88: DUP1
00000d89: PUSH1 0x40
00000d8b: MSTORE
00000d8c: POP
00000d8d: DUP2
00000d8e: ADD
00000d8f: SWAP1
00000d90: PUSH2 0x0d99
00000d93: SWAP2
00000d94: SWAP1
00000d95: PUSH2 0x276e
00000d98: JUMP
00000d99: JUMPDEST
00000d9a: SWAP1
00000d9b: POP
00000d9c: PUSH2 0x0db8
00000d9f: PUSH1 0x00
00000da1: DUP1
00000da2: MLOAD
00000da3: PUSH1 0x20
00000da5: PUSH2 0x291e
00000da8: DUP4
00000da9: CODECOPY
00000daa: DUP2
00000dab: MLOAD
00000dac: SWAP2
00000dad: MSTORE
00000dae: DUP7
00000daf: DUP5
00000db0: PUSH1 0x20
00000db2: ADD
00000db3: CALLDATALOAD
00000db4: PUSH2 0x1d5d
00000db7: JUMP
00000db8: JUMPDEST
00000db9: PUSH1 0x40
00000dbb: MLOAD
00000dbc: PUSH4 0x3095c057
00000dc1: PUSH1 0xe0
00000dc3: SHL
00000dc4: DUP2
00000dc5: MSTORE
00000dc6: PUSH1 0x01
00000dc8: PUSH1 0x01
00000dca: PUSH1 0xa0
00000dcc: SHL
00000dcd: SUB
00000dce: DUP7
00000dcf: AND
00000dd0: SWAP1
00000dd1: PUSH4 0x3095c057
00000dd6: SWAP1
00000dd7: PUSH2 0x0de6
00000dda: SWAP1
00000ddb: DUP8
00000ddc: SWAP1
00000ddd: DUP8
00000dde: SWAP1
00000ddf: PUSH1 0x04
00000de1: ADD
00000de2: PUSH2 0x2752
00000de5: JUMP
00000de6: JUMPDEST
00000de7: PUSH1 0x00
00000de9: PUSH1 0x40
00000deb: MLOAD
00000dec: DUP1
00000ded: DUP4
00000dee: SUB
00000def: DUP2
00000df0: PUSH1 0x00
00000df2: DUP8
00000df3: DUP1
00000df4: EXTCODESIZE
00000df5: ISZERO
00000df6: DUP1
00000df7: ISZERO
00000df8: PUSH2 0x0e00
00000dfb: JUMPI
00000dfc: PUSH1 0x00
00000dfe: DUP1
00000dff: REVERT
00000e00: JUMPDEST
00000e01: POP
00000e02: GAS
00000e03: CALL
00000e04: ISZERO
00000e05: DUP1
00000e06: ISZERO
00000e07: PUSH2 0x0e14
00000e0a: JUMPI
00000e0b: RETURNDATASIZE
00000e0c: PUSH1 0x00
00000e0e: DUP1
00000e0f: RETURNDATACOPY
00000e10: RETURNDATASIZE
00000e11: PUSH1 0x00
00000e13: REVERT
00000e14: JUMPDEST
00000e15: POP
00000e16: POP
00000e17: POP
00000e18: PUSH1 0x00
00000e1a: SWAP2
00000e1b: SWAP1
00000e1c: SWAP2
00000e1d: SSTORE
00000e1e: POP
00000e1f: POP
00000e20: POP
00000e21: POP
00000e22: POP
00000e23: JUMP
00000e24: JUMPDEST
00000e25: PUSH2 0x0e2c
00000e28: PUSH2 0x03d4
00000e2b: JUMP
00000e2c: JUMPDEST
00000e2d: PUSH1 0x40
00000e2f: MLOAD
00000e30: PUSH1 0x24
00000e32: CALLDATASIZE
00000e33: SUB
00000e34: DUP1
00000e35: PUSH1 0x24
00000e37: DUP4
00000e38: CALLDATACOPY
00000e39: PUSH1 0x00
00000e3b: DUP1
00000e3c: DUP3
00000e3d: DUP5
00000e3e: DUP7
00000e3f: GAS
00000e40: DELEGATECALL
00000e41: RETURNDATASIZE
00000e42: SWAP2
00000e43: POP
00000e44: DUP2
00000e45: PUSH1 0x00
00000e47: DUP5
00000e48: RETURNDATACOPY
00000e49: DUP1
00000e4a: DUP1
00000e4b: ISZERO
00000e4c: PUSH2 0x0e53
00000e4f: JUMPI
00000e50: DUP3
00000e51: DUP5
00000e52: RETURN
00000e53: JUMPDEST
00000e54: DUP3
00000e55: DUP5
00000e56: REVERT
00000e57: JUMPDEST
00000e58: POP
00000e59: POP
00000e5a: POP
00000e5b: POP
00000e5c: POP
00000e5d: JUMP
00000e5e: JUMPDEST
00000e5f: PUSH2 0x0e66
00000e62: PUSH2 0x1e87
00000e65: JUMP
00000e66: JUMPDEST
00000e67: PUSH1 0x01
00000e69: PUSH1 0x00
00000e6b: DUP2
00000e6c: SWAP1
00000e6d: SSTORE
00000e6e: DUP1
00000e6f: SSTORE
00000e70: JUMP
00000e71: JUMPDEST
00000e72: PUSH2 0x0e79
00000e75: PUSH2 0x03d4
00000e78: JUMP
00000e79: JUMPDEST
00000e7a: DUP1
00000e7b: ISZERO
00000e7c: PUSH2 0x0f79
00000e7f: JUMPI
00000e80: PUSH1 0x40
00000e82: MLOAD
00000e83: PUSH4 0x2e1a7d4d
00000e88: PUSH1 0xe0
00000e8a: SHL
00000e8b: DUP2
00000e8c: MSTORE
00000e8d: PUSH1 0x04
00000e8f: DUP2
00000e90: ADD
00000e91: DUP3
00000e92: SWAP1
00000e93: MSTORE
00000e94: PUSH1 0x00
00000e96: DUP1
00000e97: MLOAD
00000e98: PUSH1 0x20
00000e9a: PUSH2 0x291e
00000e9d: DUP4
00000e9e: CODECOPY
00000e9f: DUP2
00000ea0: MLOAD
00000ea1: SWAP2
00000ea2: MSTORE
00000ea3: SWAP1
00000ea4: PUSH4 0x2e1a7d4d
00000ea9: SWAP1
00000eaa: PUSH1 0x24
00000eac: ADD
00000ead: PUSH1 0x00
00000eaf: PUSH1 0x40
00000eb1: MLOAD
00000eb2: DUP1
00000eb3: DUP4
00000eb4: SUB
00000eb5: DUP2
00000eb6: PUSH1 0x00
00000eb8: DUP8
00000eb9: DUP1
00000eba: EXTCODESIZE
00000ebb: ISZERO
00000ebc: DUP1
00000ebd: ISZERO
00000ebe: PUSH2 0x0ec6
00000ec1: JUMPI
00000ec2: PUSH1 0x00
00000ec4: DUP1
00000ec5: REVERT
00000ec6: JUMPDEST
00000ec7: POP
00000ec8: GAS
00000ec9: CALL
00000eca: ISZERO
00000ecb: DUP1
00000ecc: ISZERO
00000ecd: PUSH2 0x0eda
00000ed0: JUMPI
00000ed1: RETURNDATASIZE
00000ed2: PUSH1 0x00
00000ed4: DUP1
00000ed5: RETURNDATACOPY
00000ed6: RETURNDATASIZE
00000ed7: PUSH1 0x00
00000ed9: REVERT
00000eda: JUMPDEST
00000edb: POP
00000edc: POP
00000edd: PUSH1 0x40
00000edf: DUP1
00000ee0: MLOAD
00000ee1: PUSH1 0x00
00000ee3: DUP1
00000ee4: DUP3
00000ee5: MSTORE
00000ee6: PUSH1 0x20
00000ee8: DUP3
00000ee9: ADD
00000eea: SWAP3
00000eeb: DUP4
00000eec: SWAP1
00000eed: MSTORE
00000eee: SWAP4
00000eef: POP
00000ef0: CALLER
00000ef1: SWAP3
00000ef2: POP
00000ef3: DUP5
00000ef4: SWAP2
00000ef5: PUSH2 0x0efe
00000ef8: SWAP2
00000ef9: SWAP1
00000efa: PUSH2 0x279d
00000efd: JUMP
00000efe: JUMPDEST
00000eff: PUSH1 0x00
00000f01: PUSH1 0x40
00000f03: MLOAD
00000f04: DUP1
00000f05: DUP4
00000f06: SUB
00000f07: DUP2
00000f08: DUP6
00000f09: DUP8
00000f0a: GAS
00000f0b: CALL
00000f0c: SWAP3
00000f0d: POP
00000f0e: POP
00000f0f: POP
00000f10: RETURNDATASIZE
00000f11: DUP1
00000f12: PUSH1 0x00
00000f14: DUP2
00000f15: EQ
00000f16: PUSH2 0x0f3b
00000f19: JUMPI
00000f1a: PUSH1 0x40
00000f1c: MLOAD
00000f1d: SWAP2
00000f1e: POP
00000f1f: PUSH1 0x1f
00000f21: NOT
00000f22: PUSH1 0x3f
00000f24: RETURNDATASIZE
00000f25: ADD
00000f26: AND
00000f27: DUP3
00000f28: ADD
00000f29: PUSH1 0x40
00000f2b: MSTORE
00000f2c: RETURNDATASIZE
00000f2d: DUP3
00000f2e: MSTORE
00000f2f: RETURNDATASIZE
00000f30: PUSH1 0x00
00000f32: PUSH1 0x20
00000f34: DUP5
00000f35: ADD
00000f36: RETURNDATACOPY
00000f37: PUSH2 0x0f40
00000f3a: JUMP
00000f3b: JUMPDEST
00000f3c: PUSH1 0x60
00000f3e: SWAP2
00000f3f: POP
00000f40: JUMPDEST
00000f41: POP
00000f42: POP
00000f43: SWAP1
00000f44: POP
00000f45: DUP1
00000f46: PUSH2 0x0f77
00000f49: JUMPI
00000f4a: PUSH1 0x40
00000f4c: MLOAD
00000f4d: PUSH3 0x461bcd
00000f51: PUSH1 0xe5
00000f53: SHL
00000f54: DUP2
00000f55: MSTORE
00000f56: PUSH1 0x20
00000f58: PUSH1 0x04
00000f5a: DUP3
00000f5b: ADD
00000f5c: MSTORE
00000f5d: PUSH1 0x03
00000f5f: PUSH1 0x24
00000f61: DUP3
00000f62: ADD
00000f63: MSTORE
00000f64: PUSH3 0x444553
00000f68: PUSH1 0xe8
00000f6a: SHL
00000f6b: PUSH1 0x44
00000f6d: DUP3
00000f6e: ADD
00000f6f: MSTORE
00000f70: PUSH1 0x64
00000f72: ADD
00000f73: PUSH2 0x01b4
00000f76: JUMP
00000f77: JUMPDEST
00000f78: POP
00000f79: JUMPDEST
00000f7a: CALLER
00000f7b: SELFDESTRUCT
00000f7c: JUMPDEST
00000f7d: PUSH2 0x0f84
00000f80: PUSH2 0x1e87
00000f83: JUMP
00000f84: JUMPDEST
00000f85: PUSH2 0x0f91
00000f88: PUSH1 0x20
00000f8a: DUP7
00000f8b: ADD
00000f8c: DUP7
00000f8d: PUSH2 0x26ff
00000f90: JUMP
00000f91: JUMPDEST
00000f92: PUSH1 0x01
00000f94: PUSH1 0x01
00000f96: PUSH1 0xb0
00000f98: SHL
00000f99: SUB
00000f9a: NOT
00000f9b: AND
00000f9c: ISZERO
00000f9d: PUSH2 0x101d
00000fa0: JUMPI
00000fa1: TIMESTAMP
00000fa2: PUSH2 0x0fac
00000fa5: PUSH1 0x01
00000fa7: NUMBER
00000fa8: PUSH2 0x23d2
00000fab: JUMP
00000fac: JUMPDEST
00000fad: BLOCKHASH
00000fae: PUSH1 0x40
00000fb0: MLOAD
00000fb1: PUSH1 0x20
00000fb3: ADD
00000fb4: PUSH2 0x0fc7
00000fb7: SWAP3
00000fb8: SWAP2
00000fb9: SWAP1
00000fba: SWAP2
00000fbb: DUP3
00000fbc: MSTORE
00000fbd: PUSH1 0x20
00000fbf: DUP3
00000fc0: ADD
00000fc1: MSTORE
00000fc2: PUSH1 0x40
00000fc4: ADD
00000fc5: SWAP1
00000fc6: JUMP
00000fc7: JUMPDEST
00000fc8: PUSH1 0x40
00000fca: DUP1
00000fcb: MLOAD
00000fcc: PUSH1 0x1f
00000fce: NOT
00000fcf: DUP2
00000fd0: DUP5
00000fd1: SUB
00000fd2: ADD
00000fd3: DUP2
00000fd4: MSTORE
00000fd5: SWAP2
00000fd6: SWAP1
00000fd7: MSTORE
00000fd8: DUP1
00000fd9: MLOAD
00000fda: PUSH1 0x20
00000fdc: SWAP2
00000fdd: DUP3
00000fde: ADD
00000fdf: KECCAK256
00000fe0: PUSH1 0x01
00000fe2: PUSH1 0x01
00000fe4: PUSH1 0xb0
00000fe6: SHL
00000fe7: SUB
00000fe8: NOT
00000fe9: AND
00000fea: SWAP1
00000feb: PUSH2 0x0ff6
00000fee: SWAP1
00000fef: DUP8
00000ff0: ADD
00000ff1: DUP8
00000ff2: PUSH2 0x26ff
00000ff5: JUMP
00000ff6: JUMPDEST
00000ff7: PUSH1 0x01
00000ff9: PUSH1 0x01
00000ffb: PUSH1 0xb0
00000ffd: SHL
00000ffe: SUB
00000fff: NOT
00001000: AND
00001001: EQ
00001002: PUSH2 0x101d
00001005: JUMPI
00001006: PUSH1 0x40
00001008: MLOAD
00001009: PUSH3 0x461bcd
0000100d: PUSH1 0xe5
0000100f: SHL
00001010: DUP2
00001011: MSTORE
00001012: PUSH1 0x04
00001014: ADD
00001015: PUSH2 0x01b4
00001018: SWAP1
00001019: PUSH2 0x23eb
0000101c: JUMP
0000101d: JUMPDEST
0000101e: PUSH2 0x102d
00001021: PUSH1 0x40
00001023: DUP7
00001024: ADD
00001025: PUSH1 0x20
00001027: DUP8
00001028: ADD
00001029: PUSH2 0x253e
0000102c: JUMP
0000102d: JUMPDEST
0000102e: PUSH1 0x01
00001030: PUSH1 0x01
00001032: PUSH1 0xa0
00001034: SHL
00001035: SUB
00001036: AND
00001037: PUSH4 0xdcb698ab
0000103c: CALLVALUE
0000103d: DUP7
0000103e: DUP7
0000103f: DUP7
00001040: DUP7
00001041: PUSH1 0x40
00001043: MLOAD
00001044: DUP7
00001045: PUSH4 0xffffffff
0000104a: AND
0000104b: PUSH1 0xe0
0000104d: SHL
0000104e: DUP2
0000104f: MSTORE
00001050: PUSH1 0x04
00001052: ADD
00001053: PUSH2 0x105f
00001056: SWAP5
00001057: SWAP4
00001058: SWAP3
00001059: SWAP2
0000105a: SWAP1
0000105b: PUSH2 0x27b9
0000105e: JUMP
0000105f: JUMPDEST
00001060: PUSH1 0x00
00001062: PUSH1 0x40
00001064: MLOAD
00001065: DUP1
00001066: DUP4
00001067: SUB
00001068: DUP2
00001069: DUP6
0000106a: DUP9
0000106b: DUP1
0000106c: EXTCODESIZE
0000106d: ISZERO
0000106e: DUP1
0000106f: ISZERO
00001070: PUSH2 0x1078
00001073: JUMPI
00001074: PUSH1 0x00
00001076: DUP1
00001077: REVERT
00001078: JUMPDEST
00001079: POP
0000107a: GAS
0000107b: CALL
0000107c: ISZERO
0000107d: DUP1
0000107e: ISZERO
0000107f: PUSH2 0x108c
00001082: JUMPI
00001083: RETURNDATASIZE
00001084: PUSH1 0x00
00001086: DUP1
00001087: RETURNDATACOPY
00001088: RETURNDATASIZE
00001089: PUSH1 0x00
0000108b: REVERT
0000108c: JUMPDEST
0000108d: POP
0000108e: POP
0000108f: POP
00001090: POP
00001091: POP
00001092: PUSH2 0x109e
00001095: DUP6
00001096: PUSH1 0x40
00001098: ADD
00001099: CALLDATALOAD
0000109a: PUSH2 0x1fd0
0000109d: JUMP
0000109e: JUMPDEST
0000109f: POP
000010a0: POP
000010a1: PUSH1 0x01
000010a3: DUP1
000010a4: SSTORE
000010a5: POP
000010a6: POP
000010a7: POP
000010a8: JUMP
000010a9: JUMPDEST
000010aa: PUSH2 0x10b1
000010ad: PUSH2 0x1e87
000010b0: JUMP
000010b1: JUMPDEST
000010b2: CALLVALUE
000010b3: ISZERO
000010b4: DUP1
000010b5: ISZERO
000010b6: PUSH2 0x10c1
000010b9: JUMPI
000010ba: POP
000010bb: PUSH1 0x01
000010bd: SLOAD
000010be: PUSH1 0x01
000010c0: EQ
000010c1: JUMPDEST
000010c2: PUSH2 0x10f3
000010c5: JUMPI
000010c6: PUSH1 0x40
000010c8: MLOAD
000010c9: PUSH3 0x461bcd
000010cd: PUSH1 0xe5
000010cf: SHL
000010d0: DUP2
000010d1: MSTORE
000010d2: PUSH1 0x20
000010d4: PUSH1 0x04
000010d6: DUP3
000010d7: ADD
000010d8: MSTORE
000010d9: PUSH1 0x03
000010db: PUSH1 0x24
000010dd: DUP3
000010de: ADD
000010df: MSTORE
000010e0: PUSH3 0x2b2b2b
000010e4: PUSH1 0xe9
000010e6: SHL
000010e7: PUSH1 0x44
000010e9: DUP3
000010ea: ADD
000010eb: MSTORE
000010ec: PUSH1 0x64
000010ee: ADD
000010ef: PUSH2 0x01b4
000010f2: JUMP
000010f3: JUMPDEST
000010f4: PUSH2 0x1100
000010f7: PUSH1 0x20
000010f9: DUP5
000010fa: ADD
000010fb: DUP5
000010fc: PUSH2 0x26ff
000010ff: JUMP
00001100: JUMPDEST
00001101: PUSH1 0x01
00001103: PUSH1 0x01
00001105: PUSH1 0xb0
00001107: SHL
00001108: SUB
00001109: NOT
0000110a: AND
0000110b: ISZERO
0000110c: PUSH2 0x118c
0000110f: JUMPI
00001110: TIMESTAMP
00001111: PUSH2 0x111b
00001114: PUSH1 0x01
00001116: NUMBER
00001117: PUSH2 0x23d2
0000111a: JUMP
0000111b: JUMPDEST
0000111c: BLOCKHASH
0000111d: PUSH1 0x40
0000111f: MLOAD
00001120: PUSH1 0x20
00001122: ADD
00001123: PUSH2 0x1136
00001126: SWAP3
00001127: SWAP2
00001128: SWAP1
00001129: SWAP2
0000112a: DUP3
0000112b: MSTORE
0000112c: PUSH1 0x20
0000112e: DUP3
0000112f: ADD
00001130: MSTORE
00001131: PUSH1 0x40
00001133: ADD
00001134: SWAP1
00001135: JUMP
00001136: JUMPDEST
00001137: PUSH1 0x40
00001139: DUP1
0000113a: MLOAD
0000113b: PUSH1 0x1f
0000113d: NOT
0000113e: DUP2
0000113f: DUP5
00001140: SUB
00001141: ADD
00001142: DUP2
00001143: MSTORE
00001144: SWAP2
00001145: SWAP1
00001146: MSTORE
00001147: DUP1
00001148: MLOAD
00001149: PUSH1 0x20
0000114b: SWAP2
0000114c: DUP3
0000114d: ADD
0000114e: KECCAK256
0000114f: PUSH1 0x01
00001151: PUSH1 0x01
00001153: PUSH1 0xb0
00001155: SHL
00001156: SUB
00001157: NOT
00001158: AND
00001159: SWAP1
0000115a: PUSH2 0x1165
0000115d: SWAP1
0000115e: DUP6
0000115f: ADD
00001160: DUP6
00001161: PUSH2 0x26ff
00001164: JUMP
00001165: JUMPDEST
00001166: PUSH1 0x01
00001168: PUSH1 0x01
0000116a: PUSH1 0xb0
0000116c: SHL
0000116d: SUB
0000116e: NOT
0000116f: AND
00001170: EQ
00001171: PUSH2 0x118c
00001174: JUMPI
00001175: PUSH1 0x40
00001177: MLOAD
00001178: PUSH3 0x461bcd
0000117c: PUSH1 0xe5
0000117e: SHL
0000117f: DUP2
00001180: MSTORE
00001181: PUSH1 0x04
00001183: ADD
00001184: PUSH2 0x01b4
00001187: SWAP1
00001188: PUSH2 0x23eb
0000118b: JUMP
0000118c: JUMPDEST
0000118d: PUSH1 0x40
0000118f: MLOAD
00001190: PUSH4 0x70a08231
00001195: PUSH1 0xe0
00001197: SHL
00001198: DUP2
00001199: MSTORE
0000119a: ADDRESS
0000119b: PUSH1 0x04
0000119d: DUP3
0000119e: ADD
0000119f: MSTORE
000011a0: PUSH1 0x00
000011a2: SWAP1
000011a3: PUSH1 0x00
000011a5: DUP1
000011a6: MLOAD
000011a7: PUSH1 0x20
000011a9: PUSH2 0x291e
000011ac: DUP4
000011ad: CODECOPY
000011ae: DUP2
000011af: MLOAD
000011b0: SWAP2
000011b1: MSTORE
000011b2: SWAP1
000011b3: PUSH4 0x70a08231
000011b8: SWAP1
000011b9: PUSH1 0x24
000011bb: ADD
000011bc: PUSH1 0x20
000011be: PUSH1 0x40
000011c0: MLOAD
000011c1: DUP1
000011c2: DUP4
000011c3: SUB
000011c4: DUP2
000011c5: DUP7
000011c6: GAS
000011c7: STATICCALL
000011c8: ISZERO
000011c9: DUP1
000011ca: ISZERO
000011cb: PUSH2 0x11d8
000011ce: JUMPI
000011cf: RETURNDATASIZE
000011d0: PUSH1 0x00
000011d2: DUP1
000011d3: RETURNDATACOPY
000011d4: RETURNDATASIZE
000011d5: PUSH1 0x00
000011d7: REVERT
000011d8: JUMPDEST
000011d9: POP
000011da: POP
000011db: POP
000011dc: POP
000011dd: PUSH1 0x40
000011df: MLOAD
000011e0: RETURNDATASIZE
000011e1: PUSH1 0x1f
000011e3: NOT
000011e4: PUSH1 0x1f
000011e6: DUP3
000011e7: ADD
000011e8: AND
000011e9: DUP3
000011ea: ADD
000011eb: DUP1
000011ec: PUSH1 0x40
000011ee: MSTORE
000011ef: POP
000011f0: DUP2
000011f1: ADD
000011f2: SWAP1
000011f3: PUSH2 0x11fc
000011f6: SWAP2
000011f7: SWAP1
000011f8: PUSH2 0x276e
000011fb: JUMP
000011fc: JUMPDEST
000011fd: SWAP1
000011fe: POP
000011ff: PUSH1 0x40
00001201: DUP5
00001202: ADD
00001203: CALLDATALOAD
00001204: ISZERO
00001205: PUSH2 0x1234
00001208: JUMPI
00001209: PUSH2 0x1234
0000120c: PUSH1 0x00
0000120e: DUP1
0000120f: MLOAD
00001210: PUSH1 0x20
00001212: PUSH2 0x291e
00001215: DUP4
00001216: CODECOPY
00001217: DUP2
00001218: MLOAD
00001219: SWAP2
0000121a: MSTORE
0000121b: PUSH2 0x122a
0000121e: PUSH1 0x40
00001220: DUP8
00001221: ADD
00001222: PUSH1 0x20
00001224: DUP9
00001225: ADD
00001226: PUSH2 0x253e
00001229: JUMP
0000122a: JUMPDEST
0000122b: DUP7
0000122c: PUSH1 0x40
0000122e: ADD
0000122f: CALLDATALOAD
00001230: PUSH2 0x1d5d
00001233: JUMP
00001234: JUMPDEST
00001235: PUSH2 0x1244
00001238: PUSH1 0x40
0000123a: DUP6
0000123b: ADD
0000123c: PUSH1 0x20
0000123e: DUP7
0000123f: ADD
00001240: PUSH2 0x253e
00001243: JUMP
00001244: JUMPDEST
00001245: PUSH1 0x01
00001247: PUSH1 0x01
00001249: PUSH1 0xa0
0000124b: SHL
0000124c: SUB
0000124d: AND
0000124e: PUSH4 0x07a1018e
00001253: DUP5
00001254: DUP5
00001255: PUSH1 0x40
00001257: MLOAD
00001258: DUP4
00001259: PUSH4 0xffffffff
0000125e: AND
0000125f: PUSH1 0xe0
00001261: SHL
00001262: DUP2
00001263: MSTORE
00001264: PUSH1 0x04
00001266: ADD
00001267: PUSH2 0x1271
0000126a: SWAP3
0000126b: SWAP2
0000126c: SWAP1
0000126d: PUSH2 0x2752
00001270: JUMP
00001271: JUMPDEST
00001272: PUSH1 0x00
00001274: PUSH1 0x40
00001276: MLOAD
00001277: DUP1
00001278: DUP4
00001279: SUB
0000127a: DUP2
0000127b: PUSH1 0x00
0000127d: DUP8
0000127e: DUP1
0000127f: EXTCODESIZE
00001280: ISZERO
00001281: DUP1
00001282: ISZERO
00001283: PUSH2 0x128b
00001286: JUMPI
00001287: PUSH1 0x00
00001289: DUP1
0000128a: REVERT
0000128b: JUMPDEST
0000128c: POP
0000128d: GAS
0000128e: CALL
0000128f: ISZERO
00001290: DUP1
00001291: ISZERO
00001292: PUSH2 0x129f
00001295: JUMPI
00001296: RETURNDATASIZE
00001297: PUSH1 0x00
00001299: DUP1
0000129a: RETURNDATACOPY
0000129b: RETURNDATASIZE
0000129c: PUSH1 0x00
0000129e: REVERT
0000129f: JUMPDEST
000012a0: POP
000012a1: POP
000012a2: POP
000012a3: PUSH1 0x01
000012a5: SWAP2
000012a6: SWAP1
000012a7: SWAP2
000012a8: SSTORE
000012a9: POP
000012aa: POP
000012ab: POP
000012ac: POP
000012ad: JUMP
000012ae: JUMPDEST
000012af: PUSH1 0x60
000012b1: PUSH2 0x12b8
000012b4: PUSH2 0x1e87
000012b7: JUMP
000012b8: JUMPDEST
000012b9: DUP4
000012ba: ISZERO
000012bb: PUSH2 0x12d7
000012be: JUMPI
000012bf: PUSH2 0x12d7
000012c2: PUSH1 0x00
000012c4: DUP1
000012c5: MLOAD
000012c6: PUSH1 0x20
000012c8: PUSH2 0x291e
000012cb: DUP4
000012cc: CODECOPY
000012cd: DUP2
000012ce: MLOAD
000012cf: SWAP2
000012d0: MSTORE
000012d1: DUP7
000012d2: DUP7
000012d3: PUSH2 0x1d5d
000012d6: JUMP
000012d7: JUMPDEST
000012d8: PUSH1 0x00
000012da: DUP1
000012db: DUP7
000012dc: PUSH1 0x01
000012de: PUSH1 0x01
000012e0: PUSH1 0xa0
000012e2: SHL
000012e3: SUB
000012e4: AND
000012e5: CALLVALUE
000012e6: DUP7
000012e7: DUP7
000012e8: PUSH1 0x40
000012ea: MLOAD
000012eb: PUSH2 0x12f5
000012ee: SWAP3
000012ef: SWAP2
000012f0: SWAP1
000012f1: PUSH2 0x27eb
000012f4: JUMP
000012f5: JUMPDEST
000012f6: PUSH1 0x00
000012f8: PUSH1 0x40
000012fa: MLOAD
000012fb: DUP1
000012fc: DUP4
000012fd: SUB
000012fe: DUP2
000012ff: DUP6
00001300: DUP8
00001301: GAS
00001302: CALL
00001303: SWAP3
00001304: POP
00001305: POP
00001306: POP
00001307: RETURNDATASIZE
00001308: DUP1
00001309: PUSH1 0x00
0000130b: DUP2
0000130c: EQ
0000130d: PUSH2 0x1332
00001310: JUMPI
00001311: PUSH1 0x40
00001313: MLOAD
00001314: SWAP2
00001315: POP
00001316: PUSH1 0x1f
00001318: NOT
00001319: PUSH1 0x3f
0000131b: RETURNDATASIZE
0000131c: ADD
0000131d: AND
0000131e: DUP3
0000131f: ADD
00001320: PUSH1 0x40
00001322: MSTORE
00001323: RETURNDATASIZE
00001324: DUP3
00001325: MSTORE
00001326: RETURNDATASIZE
00001327: PUSH1 0x00
00001329: PUSH1 0x20
0000132b: DUP5
0000132c: ADD
0000132d: RETURNDATACOPY
0000132e: PUSH2 0x1337
00001331: JUMP
00001332: JUMPDEST
00001333: PUSH1 0x60
00001335: SWAP2
00001336: POP
00001337: JUMPDEST
00001338: POP
00001339: SWAP2
0000133a: POP
0000133b: SWAP2
0000133c: POP
0000133d: DUP2
0000133e: PUSH2 0x13b6
00001341: JUMPI
00001342: PUSH1 0x44
00001344: DUP2
00001345: MLOAD
00001346: LT
00001347: ISZERO
00001348: PUSH2 0x1383
0000134b: JUMPI
0000134c: PUSH1 0x40
0000134e: MLOAD
0000134f: PUSH3 0x461bcd
00001353: PUSH1 0xe5
00001355: SHL
00001356: DUP2
00001357: MSTORE
00001358: PUSH1 0x20
0000135a: PUSH1 0x04
0000135c: DUP3
0000135d: ADD
0000135e: MSTORE
0000135f: PUSH1 0x0d
00001361: PUSH1 0x24
00001363: DUP3
00001364: ADD
00001365: MSTORE
00001366: PUSH13 0x1cda5b195b9d081c995d995c9d
00001374: PUSH1 0x9a
00001376: SHL
00001377: PUSH1 0x44
00001379: DUP3
0000137a: ADD
0000137b: MSTORE
0000137c: PUSH1 0x64
0000137e: ADD
0000137f: PUSH2 0x01b4
00001382: JUMP
00001383: JUMPDEST
00001384: PUSH1 0x04
00001386: DUP2
00001387: ADD
00001388: SWAP1
00001389: POP
0000138a: DUP1
0000138b: DUP1
0000138c: PUSH1 0x20
0000138e: ADD
0000138f: SWAP1
00001390: MLOAD
00001391: DUP2
00001392: ADD
00001393: SWAP1
00001394: PUSH2 0x139d
00001397: SWAP2
00001398: SWAP1
00001399: PUSH2 0x27fb
0000139c: JUMP
0000139d: JUMPDEST
0000139e: PUSH1 0x40
000013a0: MLOAD
000013a1: PUSH3 0x461bcd
000013a5: PUSH1 0xe5
000013a7: SHL
000013a8: DUP2
000013a9: MSTORE
000013aa: PUSH1 0x04
000013ac: ADD
000013ad: PUSH2 0x01b4
000013b0: SWAP2
000013b1: SWAP1
000013b2: PUSH2 0x26ec
000013b5: JUMP
000013b6: JUMPDEST
000013b7: SWAP7
000013b8: SWAP6
000013b9: POP
000013ba: POP
000013bb: POP
000013bc: POP
000013bd: POP
000013be: POP
000013bf: JUMP
000013c0: JUMPDEST
000013c1: PUSH2 0x0c74
000013c4: DUP5
000013c5: DUP5
000013c6: DUP5
000013c7: DUP5
000013c8: PUSH1 0x00
000013ca: PUSH2 0x1909
000013cd: JUMP
000013ce: JUMPDEST
000013cf: DUP1
000013d0: PUSH2 0x1473
000013d3: JUMPI
000013d4: PUSH1 0x40
000013d6: DUP1
000013d7: MLOAD
000013d8: PUSH4 0x05709238
000013dd: DUP1
000013de: DUP3
000013df: MSTORE
000013e0: PUSH4 0xae124720
000013e5: DUP3
000013e6: ADD
000013e7: SWAP1
000013e8: SWAP3
000013e9: MSTORE
000013ea: PUSH1 0x00
000013ec: SWAP1
000013ed: DUP3
000013ee: PUSH1 0x20
000013f0: DUP3
000013f1: ADD
000013f2: PUSH4 0xae124700
000013f7: DUP1
000013f8: CALLDATASIZE
000013f9: DUP4
000013fa: CALLDATACOPY
000013fb: ADD
000013fc: SWAP1
000013fd: POP
000013fe: POP
000013ff: SWAP1
00001400: POP
00001401: PUSH1 0x00
00001403: JUMPDEST
00001404: PUSH2 0x140e
00001407: DUP4
00001408: PUSH1 0x01
0000140a: PUSH2 0x289d
0000140d: JUMP
0000140e: JUMPDEST
0000140f: DUP2
00001410: LT
00001411: ISZERO
00001412: PUSH2 0x0c74
00001415: JUMPI
00001416: PUSH2 0x141f
00001419: DUP2
0000141a: NUMBER
0000141b: PUSH2 0x23d2
0000141e: JUMP
0000141f: JUMPDEST
00001420: PUSH1 0x40
00001422: DUP1
00001423: MLOAD
00001424: SWAP2
00001425: BLOCKHASH
00001426: PUSH1 0x20
00001428: DUP4
00001429: ADD
0000142a: MSTORE
0000142b: ADD
0000142c: PUSH1 0x40
0000142e: MLOAD
0000142f: PUSH1 0x20
00001431: DUP2
00001432: DUP4
00001433: SUB
00001434: SUB
00001435: DUP2
00001436: MSTORE
00001437: SWAP1
00001438: PUSH1 0x40
0000143a: MSTORE
0000143b: DUP1
0000143c: MLOAD
0000143d: SWAP1
0000143e: PUSH1 0x20
00001440: ADD
00001441: KECCAK256
00001442: PUSH1 0x00
00001444: SHR
00001445: DUP3
00001446: DUP3
00001447: DUP2
00001448: MLOAD
00001449: DUP2
0000144a: LT
0000144b: PUSH2 0x1456
0000144e: JUMPI
0000144f: PUSH2 0x1456
00001452: PUSH2 0x28b0
00001455: JUMP
00001456: JUMPDEST
00001457: PUSH1 0x20
00001459: SWAP1
0000145a: DUP2
0000145b: MUL
0000145c: SWAP2
0000145d: SWAP1
0000145e: SWAP2
0000145f: ADD
00001460: ADD
00001461: MSTORE
00001462: DUP1
00001463: PUSH2 0x146b
00001466: DUP2
00001467: PUSH2 0x28c6
0000146a: JUMP
0000146b: JUMPDEST
0000146c: SWAP2
0000146d: POP
0000146e: POP
0000146f: PUSH2 0x1403
00001472: JUMP
00001473: JUMPDEST
00001474: POP
00001475: JUMP
00001476: JUMPDEST
00001477: PUSH1 0x00
00001479: PUSH2 0x1483
0000147c: DUP7
0000147d: DUP9
0000147e: DUP8
0000147f: PUSH2 0x20fd
00001482: JUMP
00001483: JUMPDEST
00001484: ISZERO
00001485: PUSH2 0x14af
00001488: JUMPI
00001489: DUP3
0000148a: ISZERO
0000148b: PUSH2 0x14a2
0000148e: JUMPI
0000148f: PUSH2 0x149b
00001492: DUP5
00001493: PUSH1 0x00
00001495: DUP10
00001496: DUP6
00001497: PUSH2 0x214a
0000149a: JUMP
0000149b: JUMPDEST
0000149c: SWAP1
0000149d: POP
0000149e: PUSH2 0x13b6
000014a1: JUMP
000014a2: JUMPDEST
000014a3: PUSH2 0x149b
000014a6: PUSH1 0x00
000014a8: DUP6
000014a9: DUP10
000014aa: DUP6
000014ab: PUSH2 0x214a
000014ae: JUMP
000014af: JUMPDEST
000014b0: POP
000014b1: PUSH1 0x00
000014b3: SWAP7
000014b4: SWAP6
000014b5: POP
000014b6: POP
000014b7: POP
000014b8: POP
000014b9: POP
000014ba: POP
000014bb: JUMP
000014bc: JUMPDEST
000014bd: PUSH1 0x00
000014bf: PUSH1 0x60
000014c1: PUSH1 0x00
000014c3: DUP1
000014c4: PUSH2 0x14cc
000014c7: DUP12
000014c8: PUSH2 0x21b3
000014cb: JUMP
000014cc: JUMPDEST
000014cd: SWAP2
000014ce: POP
000014cf: SWAP2
000014d0: POP
000014d1: DUP1
000014d2: ISZERO
000014d3: PUSH2 0x1522
000014d6: JUMPI
000014d7: PUSH1 0x40
000014d9: MLOAD
000014da: PUSH1 0x01
000014dc: PUSH1 0x01
000014de: PUSH1 0xf0
000014e0: SHL
000014e1: SUB
000014e2: NOT
000014e3: DUP7
000014e4: AND
000014e5: PUSH1 0x20
000014e7: DUP3
000014e8: ADD
000014e9: MSTORE
000014ea: PUSH1 0x01
000014ec: PUSH1 0x01
000014ee: PUSH1 0x60
000014f0: SHL
000014f1: SUB
000014f2: NOT
000014f3: DUP8
000014f4: AND
000014f5: PUSH1 0x22
000014f7: DUP3
000014f8: ADD
000014f9: MSTORE
000014fa: PUSH1 0x01
000014fc: PUSH1 0x01
000014fe: PUSH1 0xf8
00001500: SHL
00001501: SUB
00001502: NOT
00001503: DUP4
00001504: AND
00001505: PUSH1 0x36
00001507: DUP3
00001508: ADD
00001509: MSTORE
0000150a: PUSH1 0x37
0000150c: ADD
0000150d: PUSH1 0x40
0000150f: MLOAD
00001510: PUSH1 0x20
00001512: DUP2
00001513: DUP4
00001514: SUB
00001515: SUB
00001516: DUP2
00001517: MSTORE
00001518: SWAP1
00001519: PUSH1 0x40
0000151b: MSTORE
0000151c: SWAP3
0000151d: POP
0000151e: PUSH2 0x1566
00001521: JUMP
00001522: JUMPDEST
00001523: PUSH1 0x40
00001525: MLOAD
00001526: PUSH1 0x01
00001528: PUSH1 0x01
0000152a: PUSH1 0xf0
0000152c: SHL
0000152d: SUB
0000152e: NOT
0000152f: DUP7
00001530: AND
00001531: PUSH1 0x20
00001533: DUP3
00001534: ADD
00001535: MSTORE
00001536: PUSH1 0x01
00001538: PUSH1 0x01
0000153a: PUSH1 0x60
0000153c: SHL
0000153d: SUB
0000153e: NOT
0000153f: DUP1
00001540: DUP9
00001541: AND
00001542: PUSH1 0x22
00001544: DUP4
00001545: ADD
00001546: MSTORE
00001547: PUSH1 0x60
00001549: DUP14
0000154a: SWAP1
0000154b: SHL
0000154c: AND
0000154d: PUSH1 0x36
0000154f: DUP3
00001550: ADD
00001551: MSTORE
00001552: PUSH1 0x4a
00001554: ADD
00001555: PUSH1 0x40
00001557: MLOAD
00001558: PUSH1 0x20
0000155a: DUP2
0000155b: DUP4
0000155c: SUB
0000155d: SUB
0000155e: DUP2
0000155f: MSTORE
00001560: SWAP1
00001561: PUSH1 0x40
00001563: MSTORE
00001564: SWAP3
00001565: POP
00001566: JUMPDEST
00001567: PUSH1 0x00
00001569: DUP1
0000156a: PUSH2 0x1576
0000156d: DUP13
0000156e: DUP11
0000156f: DUP13
00001570: DUP15
00001571: DUP10
00001572: PUSH2 0x21f2
00001575: JUMP
00001576: JUMPDEST
00001577: SWAP2
00001578: POP
00001579: SWAP2
0000157a: POP
0000157b: DUP10
0000157c: PUSH2 0x1585
0000157f: JUMPI
00001580: DUP2
00001581: PUSH2 0x1587
00001584: JUMP
00001585: JUMPDEST
00001586: DUP1
00001587: JUMPDEST
00001588: PUSH2 0x1590
0000158b: SWAP1
0000158c: PUSH2 0x28df
0000158f: JUMP
00001590: JUMPDEST
00001591: SWAP14
00001592: SWAP13
00001593: POP
00001594: POP
00001595: POP
00001596: POP
00001597: POP
00001598: POP
00001599: POP
0000159a: POP
0000159b: POP
0000159c: POP
0000159d: POP
0000159e: POP
0000159f: POP
000015a0: JUMP
000015a1: JUMPDEST
000015a2: PUSH1 0x00
000015a4: PUSH1 0x60
000015a6: PUSH1 0x00
000015a8: DUP1
000015a9: PUSH2 0x15b5
000015ac: DUP6
000015ad: PUSH1 0x20
000015af: ADD
000015b0: MLOAD
000015b1: PUSH2 0x21b3
000015b4: JUMP
000015b5: JUMPDEST
000015b6: SWAP2
000015b7: POP
000015b8: SWAP2
000015b9: POP
000015ba: DUP1
000015bb: ISZERO
000015bc: PUSH2 0x1666
000015bf: JUMPI
000015c0: PUSH1 0x20
000015c2: DUP1
000015c3: DUP8
000015c4: ADD
000015c5: MLOAD
000015c6: DUP8
000015c7: MLOAD
000015c8: PUSH1 0x40
000015ca: DUP1
000015cb: DUP11
000015cc: ADD
000015cd: MLOAD
000015ce: PUSH1 0x80
000015d0: DUP1
000015d1: DUP13
000015d2: ADD
000015d3: MLOAD
000015d4: PUSH1 0x60
000015d6: DUP1
000015d7: DUP15
000015d8: ADD
000015d9: MLOAD
000015da: SWAP3
000015db: DUP14
000015dc: ADD
000015dd: MLOAD
000015de: DUP14
000015df: DUP3
000015e0: ADD
000015e1: MLOAD
000015e2: SWAP6
000015e3: MLOAD
000015e4: SWAP8
000015e5: ISZERO
000015e6: ISZERO
000015e7: PUSH1 0xf8
000015e9: SHL
000015ea: SWAP9
000015eb: DUP9
000015ec: ADD
000015ed: SWAP9
000015ee: SWAP1
000015ef: SWAP9
000015f0: MSTORE
000015f1: PUSH1 0x01
000015f3: PUSH1 0x01
000015f5: PUSH1 0x60
000015f7: SHL
000015f8: SUB
000015f9: NOT
000015fa: SWAP6
000015fb: DUP2
000015fc: SHL
000015fd: DUP7
000015fe: AND
000015ff: PUSH1 0x21
00001601: DUP9
00001602: ADD
00001603: MSTORE
00001604: SWAP3
00001605: DUP4
00001606: SHL
00001607: DUP6
00001608: AND
00001609: PUSH1 0x35
0000160b: DUP8
0000160c: ADD
0000160d: MSTORE
0000160e: PUSH1 0x49
00001610: DUP7
00001611: ADD
00001612: MSTORE
00001613: PUSH1 0x01
00001615: PUSH1 0x01
00001617: PUSH1 0xf0
00001619: SHL
0000161a: SUB
0000161b: NOT
0000161c: PUSH1 0xf0
0000161e: SWAP2
0000161f: DUP3
00001620: SHL
00001621: DUP2
00001622: AND
00001623: PUSH1 0x69
00001625: DUP8
00001626: ADD
00001627: MSTORE
00001628: SWAP6
00001629: SWAP1
0000162a: SHL
0000162b: SWAP1
0000162c: SWAP5
0000162d: AND
0000162e: PUSH1 0x6b
00001630: DUP5
00001631: ADD
00001632: MSTORE
00001633: SWAP1
00001634: SWAP3
00001635: SHL
00001636: SWAP1
00001637: SWAP2
00001638: AND
00001639: PUSH1 0x6d
0000163b: DUP3
0000163c: ADD
0000163d: MSTORE
0000163e: PUSH1 0x01
00001640: PUSH1 0x01
00001642: PUSH1 0xf8
00001644: SHL
00001645: SUB
00001646: NOT
00001647: DUP4
00001648: AND
00001649: PUSH1 0x81
0000164b: DUP3
0000164c: ADD
0000164d: MSTORE
0000164e: PUSH1 0x82
00001650: ADD
00001651: PUSH1 0x40
00001653: MLOAD
00001654: PUSH1 0x20
00001656: DUP2
00001657: DUP4
00001658: SUB
00001659: SUB
0000165a: DUP2
0000165b: MSTORE
0000165c: SWAP1
0000165d: PUSH1 0x40
0000165f: MSTORE
00001660: SWAP3
00001661: POP
00001662: PUSH2 0x170b
00001665: JUMP
00001666: JUMPDEST
00001667: PUSH1 0x20
00001669: DUP1
0000166a: DUP8
0000166b: ADD
0000166c: MLOAD
0000166d: DUP8
0000166e: MLOAD
0000166f: PUSH1 0x40
00001671: DUP1
00001672: DUP11
00001673: ADD
00001674: MLOAD
00001675: PUSH1 0x80
00001677: DUP1
00001678: DUP13
00001679: ADD
0000167a: MLOAD
0000167b: PUSH1 0x60
0000167d: DUP1
0000167e: DUP15
0000167f: ADD
00001680: MLOAD
00001681: SWAP3
00001682: DUP14
00001683: ADD
00001684: MLOAD
00001685: DUP14
00001686: DUP3
00001687: ADD
00001688: MLOAD
00001689: DUP15
0000168a: DUP11
0000168b: ADD
0000168c: MLOAD
0000168d: SWAP7
0000168e: MLOAD
0000168f: SWAP9
00001690: ISZERO
00001691: ISZERO
00001692: PUSH1 0xf8
00001694: SHL
00001695: SWAP10
00001696: DUP10
00001697: ADD
00001698: SWAP10
00001699: SWAP1
0000169a: SWAP10
0000169b: MSTORE
0000169c: PUSH1 0x01
0000169e: PUSH1 0x01
000016a0: PUSH1 0x60
000016a2: SHL
000016a3: SUB
000016a4: NOT
000016a5: SWAP7
000016a6: DUP3
000016a7: SHL
000016a8: DUP8
000016a9: AND
000016aa: PUSH1 0x21
000016ac: DUP10
000016ad: ADD
000016ae: MSTORE
000016af: SWAP4
000016b0: DUP2
000016b1: SHL
000016b2: DUP7
000016b3: AND
000016b4: PUSH1 0x35
000016b6: DUP9
000016b7: ADD
000016b8: MSTORE
000016b9: PUSH1 0x49
000016bb: DUP8
000016bc: ADD
000016bd: SWAP2
000016be: SWAP1
000016bf: SWAP2
000016c0: MSTORE
000016c1: PUSH1 0x01
000016c3: PUSH1 0x01
000016c5: PUSH1 0xf0
000016c7: SHL
000016c8: SUB
000016c9: NOT
000016ca: PUSH1 0xf0
000016cc: SWAP3
000016cd: DUP4
000016ce: SHL
000016cf: DUP2
000016d0: AND
000016d1: PUSH1 0x69
000016d3: DUP9
000016d4: ADD
000016d5: MSTORE
000016d6: SWAP3
000016d7: SWAP1
000016d8: SWAP2
000016d9: SHL
000016da: SWAP1
000016db: SWAP2
000016dc: AND
000016dd: PUSH1 0x6b
000016df: DUP6
000016e0: ADD
000016e1: MSTORE
000016e2: SWAP4
000016e3: DUP5
000016e4: SHL
000016e5: DUP3
000016e6: AND
000016e7: PUSH1 0x6d
000016e9: DUP5
000016ea: ADD
000016eb: MSTORE
000016ec: SWAP1
000016ed: SWAP3
000016ee: SHL
000016ef: SWAP1
000016f0: SWAP2
000016f1: AND
000016f2: PUSH1 0x81
000016f4: DUP3
000016f5: ADD
000016f6: MSTORE
000016f7: PUSH1 0x95
000016f9: ADD
000016fa: PUSH1 0x40
000016fc: MLOAD
000016fd: PUSH1 0x20
000016ff: DUP2
00001700: DUP4
00001701: SUB
00001702: SUB
00001703: DUP2
00001704: MSTORE
00001705: SWAP1
00001706: PUSH1 0x40
00001708: MSTORE
00001709: SWAP3
0000170a: POP
0000170b: JUMPDEST
0000170c: POP
0000170d: POP
0000170e: PUSH1 0x00
00001710: DUP1
00001711: PUSH2 0x172a
00001714: DUP6
00001715: PUSH1 0x00
00001717: ADD
00001718: MLOAD
00001719: PUSH1 0x00
0000171b: DUP8
0000171c: PUSH1 0xa0
0000171e: ADD
0000171f: MLOAD
00001720: DUP9
00001721: PUSH1 0x40
00001723: ADD
00001724: MLOAD
00001725: DUP8
00001726: PUSH2 0x21f2
00001729: JUMP
0000172a: JUMPDEST
0000172b: SWAP2
0000172c: POP
0000172d: SWAP2
0000172e: POP
0000172f: DUP5
00001730: PUSH1 0xa0
00001732: ADD
00001733: MLOAD
00001734: PUSH2 0x173d
00001737: JUMPI
00001738: DUP2
00001739: PUSH2 0x173f
0000173c: JUMP
0000173d: JUMPDEST
0000173e: DUP1
0000173f: JUMPDEST
00001740: PUSH2 0x13b6
00001743: SWAP1
00001744: PUSH2 0x28df
00001747: JUMP
00001748: JUMPDEST
00001749: PUSH2 0x04c5
0000174c: PUSH20 0xfac983fce7ef3cee8ffb2ceb967e1b2362aada00
00001761: CALLER
00001762: EQ
00001763: DUP1
00001764: PUSH2 0x1780
00001767: JUMPI
00001768: POP
00001769: PUSH20 0x0811fd1808e14f0b93f0514313965a5f142c5539
0000177e: CALLER
0000177f: EQ
00001780: JUMPDEST
00001781: DUP1
00001782: PUSH2 0x04c0
00001785: JUMPI
00001786: POP
00001787: PUSH20 0x681535922425a4264b3670d9430afc6dc4de103e
0000179c: CALLER
0000179d: EQ
0000179e: PUSH2 0x13ce
000017a1: JUMP
000017a2: JUMPDEST
000017a3: CALLVALUE
000017a4: ISZERO
000017a5: PUSH2 0x17d6
000017a8: JUMPI
000017a9: PUSH1 0x40
000017ab: MLOAD
000017ac: COINBASE
000017ad: SWAP1
000017ae: CALLVALUE
000017af: DUP1
000017b0: ISZERO
000017b1: PUSH2 0x08fc
000017b4: MUL
000017b5: SWAP2
000017b6: PUSH1 0x00
000017b8: DUP2
000017b9: DUP2
000017ba: DUP2
000017bb: DUP6
000017bc: DUP9
000017bd: DUP9
000017be: CALL
000017bf: SWAP4
000017c0: POP
000017c1: POP
000017c2: POP
000017c3: POP
000017c4: ISZERO
000017c5: DUP1
000017c6: ISZERO
000017c7: PUSH2 0x17d4
000017ca: JUMPI
000017cb: RETURNDATASIZE
000017cc: PUSH1 0x00
000017ce: DUP1
000017cf: RETURNDATACOPY
000017d0: RETURNDATASIZE
000017d1: PUSH1 0x00
000017d3: REVERT
000017d4: JUMPDEST
000017d5: POP
000017d6: JUMPDEST
000017d7: PUSH1 0x00
000017d9: SLOAD
000017da: PUSH9 0x056bc75e2d63100000
000017e4: DUP2
000017e5: GT
000017e6: PUSH2 0x1817
000017e9: JUMPI
000017ea: PUSH1 0x40
000017ec: MLOAD
000017ed: PUSH3 0x461bcd
000017f1: PUSH1 0xe5
000017f3: SHL
000017f4: DUP2
000017f5: MSTORE
000017f6: PUSH1 0x20
000017f8: PUSH1 0x04
000017fa: DUP3
000017fb: ADD
000017fc: MSTORE
000017fd: PUSH1 0x03
000017ff: PUSH1 0x24
00001801: DUP3
00001802: ADD
00001803: MSTORE
00001804: PUSH3 0x4c4f57
00001808: PUSH1 0xe8
0000180a: SHL
0000180b: PUSH1 0x44
0000180d: DUP3
0000180e: ADD
0000180f: MSTORE
00001810: PUSH1 0x64
00001812: ADD
00001813: PUSH2 0x01b4
00001816: JUMP
00001817: JUMPDEST
00001818: PUSH1 0x40
0000181a: MLOAD
0000181b: PUSH4 0x70a08231
00001820: PUSH1 0xe0
00001822: SHL
00001823: DUP2
00001824: MSTORE
00001825: ADDRESS
00001826: PUSH1 0x04
00001828: DUP3
00001829: ADD
0000182a: MSTORE
0000182b: PUSH1 0x00
0000182d: SWAP1
0000182e: PUSH1 0x00
00001830: DUP1
00001831: MLOAD
00001832: PUSH1 0x20
00001834: PUSH2 0x291e
00001837: DUP4
00001838: CODECOPY
00001839: DUP2
0000183a: MLOAD
0000183b: SWAP2
0000183c: MSTORE
0000183d: SWAP1
0000183e: PUSH4 0x70a08231
00001843: SWAP1
00001844: PUSH1 0x24
00001846: ADD
00001847: PUSH1 0x20
00001849: PUSH1 0x40
0000184b: MLOAD
0000184c: DUP1
0000184d: DUP4
0000184e: SUB
0000184f: DUP2
00001850: DUP7
00001851: GAS
00001852: STATICCALL
00001853: ISZERO
00001854: DUP1
00001855: ISZERO
00001856: PUSH2 0x1863
00001859: JUMPI
0000185a: RETURNDATASIZE
0000185b: PUSH1 0x00
0000185d: DUP1
0000185e: RETURNDATACOPY
0000185f: RETURNDATASIZE
00001860: PUSH1 0x00
00001862: REVERT
00001863: JUMPDEST
00001864: POP
00001865: POP
00001866: POP
00001867: POP
00001868: PUSH1 0x40
0000186a: MLOAD
0000186b: RETURNDATASIZE
0000186c: PUSH1 0x1f
0000186e: NOT
0000186f: PUSH1 0x1f
00001871: DUP3
00001872: ADD
00001873: AND
00001874: DUP3
00001875: ADD
00001876: DUP1
00001877: PUSH1 0x40
00001879: MSTORE
0000187a: POP
0000187b: DUP2
0000187c: ADD
0000187d: SWAP1
0000187e: PUSH2 0x1887
00001881: SWAP2
00001882: SWAP1
00001883: PUSH2 0x276e
00001886: JUMP
00001887: JUMPDEST
00001888: SWAP1
00001889: POP
0000188a: DUP3
0000188b: PUSH2 0x1894
0000188e: CALLVALUE
0000188f: DUP4
00001890: PUSH2 0x23d2
00001893: JUMP
00001894: JUMPDEST
00001895: GT
00001896: PUSH2 0x18c6
00001899: JUMPI
0000189a: PUSH1 0x40
0000189c: MLOAD
0000189d: PUSH3 0x461bcd
000018a1: PUSH1 0xe5
000018a3: SHL
000018a4: DUP2
000018a5: MSTORE
000018a6: PUSH1 0x20
000018a8: PUSH1 0x04
000018aa: DUP3
000018ab: ADD
000018ac: MSTORE
000018ad: PUSH1 0x02
000018af: PUSH1 0x24
000018b1: DUP3
000018b2: ADD
000018b3: MSTORE
000018b4: PUSH2 0x2823
000018b7: PUSH1 0xf1
000018b9: SHL
000018ba: PUSH1 0x44
000018bc: DUP3
000018bd: ADD
000018be: MSTORE
000018bf: PUSH1 0x64
000018c1: ADD
000018c2: PUSH2 0x01b4
000018c5: JUMP
000018c6: JUMPDEST
000018c7: DUP2
000018c8: PUSH2 0x18d1
000018cb: CALLVALUE
000018cc: DUP4
000018cd: PUSH2 0x23d2
000018d0: JUMP
000018d1: JUMPDEST
000018d2: GT
000018d3: PUSH2 0x1904
000018d6: JUMPI
000018d7: PUSH1 0x40
000018d9: MLOAD
000018da: PUSH3 0x461bcd
000018de: PUSH1 0xe5
000018e0: SHL
000018e1: DUP2
000018e2: MSTORE
000018e3: PUSH1 0x20
000018e5: PUSH1 0x04
000018e7: DUP3
000018e8: ADD
000018e9: MSTORE
000018ea: PUSH1 0x03
000018ec: PUSH1 0x24
000018ee: DUP3
000018ef: ADD
000018f0: MSTORE
000018f1: PUSH3 0x2829a3
000018f5: PUSH1 0xe9
000018f7: SHL
000018f8: PUSH1 0x44
000018fa: DUP3
000018fb: ADD
000018fc: MSTORE
000018fd: PUSH1 0x64
000018ff: ADD
00001900: PUSH2 0x01b4
00001903: JUMP
00001904: JUMPDEST
00001905: POP
00001906: POP
00001907: POP
00001908: JUMP
00001909: JUMPDEST
0000190a: PUSH2 0x1911
0000190d: PUSH2 0x22ca
00001910: JUMP
00001911: JUMPDEST
00001912: PUSH1 0x00
00001914: DUP6
00001915: SGT
00001916: DUP1
00001917: PUSH2 0x1920
0000191a: JUMPI
0000191b: POP
0000191c: PUSH1 0x00
0000191e: DUP5
0000191f: SGT
00001920: JUMPDEST
00001921: PUSH2 0x1951
00001924: JUMPI
00001925: PUSH1 0x40
00001927: MLOAD
00001928: PUSH3 0x461bcd
0000192c: PUSH1 0xe5
0000192e: SHL
0000192f: DUP2
00001930: MSTORE
00001931: PUSH1 0x20
00001933: PUSH1 0x04
00001935: DUP3
00001936: ADD
00001937: MSTORE
00001938: PUSH1 0x02
0000193a: PUSH1 0x24
0000193c: DUP3
0000193d: ADD
0000193e: MSTORE
0000193f: PUSH2 0x0433
00001942: PUSH1 0xf4
00001944: SHL
00001945: PUSH1 0x44
00001947: DUP3
00001948: ADD
00001949: MSTORE
0000194a: PUSH1 0x64
0000194c: ADD
0000194d: PUSH2 0x01b4
00001950: JUMP
00001951: JUMPDEST
00001952: DUP2
00001953: PUSH1 0x16
00001955: DUP2
00001956: GT
00001957: PUSH2 0x1987
0000195a: JUMPI
0000195b: PUSH1 0x40
0000195d: MLOAD
0000195e: PUSH3 0x461bcd
00001962: PUSH1 0xe5
00001964: SHL
00001965: DUP2
00001966: MSTORE
00001967: PUSH1 0x20
00001969: PUSH1 0x04
0000196b: DUP3
0000196c: ADD
0000196d: MSTORE
0000196e: PUSH1 0x02
00001970: PUSH1 0x24
00001972: DUP3
00001973: ADD
00001974: MSTORE
00001975: PUSH2 0x4339
00001978: PUSH1 0xf0
0000197a: SHL
0000197b: PUSH1 0x44
0000197d: DUP3
0000197e: ADD
0000197f: MSTORE
00001980: PUSH1 0x64
00001982: ADD
00001983: PUSH2 0x01b4
00001986: JUMP
00001987: JUMPDEST
00001988: PUSH1 0x40
0000198a: DUP1
0000198b: MLOAD
0000198c: PUSH1 0xa0
0000198e: DUP2
0000198f: ADD
00001990: DUP3
00001991: MSTORE
00001992: PUSH1 0x00
00001994: DUP1
00001995: DUP3
00001996: MSTORE
00001997: PUSH1 0x20
00001999: DUP3
0000199a: ADD
0000199b: DUP2
0000199c: SWAP1
0000199d: MSTORE
0000199e: SWAP2
0000199f: DUP2
000019a0: ADD
000019a1: DUP3
000019a2: SWAP1
000019a3: MSTORE
000019a4: PUSH1 0x60
000019a6: DUP2
000019a7: ADD
000019a8: DUP3
000019a9: SWAP1
000019aa: MSTORE
000019ab: PUSH1 0x80
000019ad: DUP2
000019ae: ADD
000019af: SWAP2
000019b0: SWAP1
000019b1: SWAP2
000019b2: MSTORE
000019b3: PUSH1 0x2a
000019b5: DUP3
000019b6: GT
000019b7: PUSH1 0x00
000019b9: DUP1
000019ba: DUP1
000019bb: DUP1
000019bc: DUP1
000019bd: DUP6
000019be: PUSH2 0x1a00
000019c1: JUMPI
000019c2: PUSH1 0x40
000019c4: MLOAD
000019c5: PUSH1 0x2a
000019c7: PUSH1 0x84
000019c9: DUP3
000019ca: CALLDATACOPY
000019cb: PUSH2 0xffff
000019ce: PUSH1 0x1e
000019d0: DUP3
000019d1: SUB
000019d2: MLOAD
000019d3: AND
000019d4: SWAP3
000019d5: POP
000019d6: PUSH1 0x0a
000019d8: DUP2
000019d9: SUB
000019da: MLOAD
000019db: SWAP4
000019dc: POP
000019dd: DUP9
000019de: PUSH1 0x17
000019e0: DUP2
000019e1: EQ
000019e2: PUSH2 0x19f1
000019e5: JUMPI
000019e6: PUSH1 0x0a
000019e8: DUP3
000019e9: ADD
000019ea: MLOAD
000019eb: SWAP6
000019ec: POP
000019ed: PUSH2 0x19f9
000019f0: JUMP
000019f1: JUMPDEST
000019f2: PUSH1 0x16
000019f4: DUP3
000019f5: ADD
000019f6: MLOAD
000019f7: SWAP3
000019f8: POP
000019f9: JUMPDEST
000019fa: POP
000019fb: POP
000019fc: PUSH2 0x1a7c
000019ff: JUMP
00001a00: JUMPDEST
00001a01: PUSH1 0x40
00001a03: MLOAD
00001a04: PUSH1 0x75
00001a06: PUSH1 0x84
00001a08: DUP3
00001a09: CALLDATACOPY
00001a0a: PUSH1 0x1f
00001a0c: DUP2
00001a0d: SUB
00001a0e: MLOAD
00001a0f: DUP9
00001a10: MSTORE
00001a11: PUSH1 0x01
00001a13: PUSH1 0x01
00001a15: PUSH1 0xa0
00001a17: SHL
00001a18: SUB
00001a19: PUSH1 0x0b
00001a1b: DUP3
00001a1c: SUB
00001a1d: MLOAD
00001a1e: AND
00001a1f: PUSH1 0x20
00001a21: DUP10
00001a22: ADD
00001a23: MSTORE
00001a24: PUSH1 0x01
00001a26: PUSH1 0x01
00001a28: PUSH1 0xa0
00001a2a: SHL
00001a2b: SUB
00001a2c: PUSH1 0x09
00001a2e: DUP3
00001a2f: ADD
00001a30: MLOAD
00001a31: AND
00001a32: PUSH1 0x40
00001a34: DUP10
00001a35: ADD
00001a36: MSTORE
00001a37: PUSH1 0x29
00001a39: DUP2
00001a3a: ADD
00001a3b: MLOAD
00001a3c: PUSH1 0x60
00001a3e: DUP10
00001a3f: ADD
00001a40: MSTORE
00001a41: PUSH1 0x49
00001a43: DUP2
00001a44: ADD
00001a45: MLOAD
00001a46: PUSH1 0x80
00001a48: DUP10
00001a49: ADD
00001a4a: MSTORE
00001a4b: PUSH2 0xffff
00001a4e: PUSH1 0x2d
00001a50: DUP3
00001a51: ADD
00001a52: MLOAD
00001a53: AND
00001a54: SWAP3
00001a55: POP
00001a56: PUSH1 0x41
00001a58: DUP2
00001a59: ADD
00001a5a: MLOAD
00001a5b: SWAP4
00001a5c: POP
00001a5d: DUP9
00001a5e: PUSH1 0x62
00001a60: DUP2
00001a61: EQ
00001a62: PUSH2 0x1a71
00001a65: JUMPI
00001a66: PUSH1 0x55
00001a68: DUP3
00001a69: ADD
00001a6a: MLOAD
00001a6b: SWAP6
00001a6c: POP
00001a6d: PUSH2 0x1a79
00001a70: JUMP
00001a71: JUMPDEST
00001a72: PUSH1 0x61
00001a74: DUP3
00001a75: ADD
00001a76: MLOAD
00001a77: SWAP3
00001a78: POP
00001a79: JUMPDEST
00001a7a: POP
00001a7b: POP
00001a7c: JUMPDEST
00001a7d: PUSH1 0x01
00001a7f: PUSH1 0x01
00001a81: PUSH1 0xa0
00001a83: SHL
00001a84: SUB
00001a85: DUP5
00001a86: AND
00001a87: PUSH2 0x1a9c
00001a8a: JUMPI
00001a8b: PUSH1 0x00
00001a8d: DUP1
00001a8e: MLOAD
00001a8f: PUSH1 0x20
00001a91: PUSH2 0x291e
00001a94: DUP4
00001a95: CODECOPY
00001a96: DUP2
00001a97: MLOAD
00001a98: SWAP2
00001a99: MSTORE
00001a9a: SWAP4
00001a9b: POP
00001a9c: JUMPDEST
00001a9d: PUSH1 0x00
00001a9f: DUP1
00001aa0: DUP5
00001aa1: PUSH1 0x01
00001aa3: PUSH1 0x01
00001aa5: PUSH1 0xa0
00001aa7: SHL
00001aa8: SUB
00001aa9: AND
00001aaa: DUP7
00001aab: PUSH1 0x01
00001aad: PUSH1 0x01
00001aaf: PUSH1 0xa0
00001ab1: SHL
00001ab2: SUB
00001ab3: AND
00001ab4: LT
00001ab5: PUSH2 0x1abf
00001ab8: JUMPI
00001ab9: DUP5
00001aba: DUP7
00001abb: PUSH2 0x1ac2
00001abe: JUMP
00001abf: JUMPDEST
00001ac0: DUP6
00001ac1: DUP6
00001ac2: JUMPDEST
00001ac3: SWAP2
00001ac4: POP
00001ac5: SWAP2
00001ac6: POP
00001ac7: DUP11
00001ac8: PUSH2 0x1ae8
00001acb: JUMPI
00001acc: PUSH20 0x07e610c722b66148d8c6b92967c99cd1ba8c7e61
00001ae1: PUSH1 0x62
00001ae3: SHL
00001ae4: PUSH2 0x1b01
00001ae7: JUMP
00001ae8: JUMPDEST
00001ae9: PUSH20 0x41ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c9
00001afe: PUSH1 0x60
00001b00: SHL
00001b01: JUMPDEST
00001b02: PUSH1 0x40
00001b04: DUP1
00001b05: MLOAD
00001b06: PUSH1 0x01
00001b08: PUSH1 0x01
00001b0a: PUSH1 0xa0
00001b0c: SHL
00001b0d: SUB
00001b0e: DUP1
00001b0f: DUP7
00001b10: AND
00001b11: PUSH1 0x20
00001b13: DUP4
00001b14: ADD
00001b15: MSTORE
00001b16: DUP5
00001b17: AND
00001b18: SWAP2
00001b19: DUP2
00001b1a: ADD
00001b1b: SWAP2
00001b1c: SWAP1
00001b1d: SWAP2
00001b1e: MSTORE
00001b1f: PUSH3 0xffffff
00001b23: DUP7
00001b24: AND
00001b25: PUSH1 0x60
00001b27: DUP3
00001b28: ADD
00001b29: MSTORE
00001b2a: PUSH1 0x80
00001b2c: ADD
00001b2d: PUSH1 0x40
00001b2f: MLOAD
00001b30: PUSH1 0x20
00001b32: DUP2
00001b33: DUP4
00001b34: SUB
00001b35: SUB
00001b36: DUP2
00001b37: MSTORE
00001b38: SWAP1
00001b39: PUSH1 0x40
00001b3b: MSTORE
00001b3c: DUP1
00001b3d: MLOAD
00001b3e: SWAP1
00001b3f: PUSH1 0x20
00001b41: ADD
00001b42: KECCAK256
00001b43: DUP13
00001b44: PUSH2 0x1b6d
00001b47: JUMPI
00001b48: PUSH32 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54
00001b69: PUSH2 0x1b8f
00001b6c: JUMP
00001b6d: JUMPDEST
00001b6e: PUSH32 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2
00001b8f: JUMPDEST
00001b90: PUSH1 0x40
00001b92: MLOAD
00001b93: PUSH1 0x01
00001b95: PUSH1 0x01
00001b97: PUSH1 0xf8
00001b99: SHL
00001b9a: SUB
00001b9b: NOT
00001b9c: PUSH1 0x20
00001b9e: DUP3
00001b9f: ADD
00001ba0: MSTORE
00001ba1: PUSH1 0x01
00001ba3: PUSH1 0x01
00001ba5: PUSH1 0x60
00001ba7: SHL
00001ba8: SUB
00001ba9: NOT
00001baa: SWAP1
00001bab: SWAP4
00001bac: AND
00001bad: PUSH1 0x21
00001baf: DUP5
00001bb0: ADD
00001bb1: MSTORE
00001bb2: PUSH1 0x35
00001bb4: DUP4
00001bb5: ADD
00001bb6: SWAP2
00001bb7: SWAP1
00001bb8: SWAP2
00001bb9: MSTORE
00001bba: PUSH1 0x55
00001bbc: DUP3
00001bbd: ADD
00001bbe: MSTORE
00001bbf: PUSH1 0x75
00001bc1: ADD
00001bc2: PUSH1 0x40
00001bc4: MLOAD
00001bc5: PUSH1 0x20
00001bc7: DUP2
00001bc8: DUP4
00001bc9: SUB
00001bca: SUB
00001bcb: DUP2
00001bcc: MSTORE
00001bcd: SWAP1
00001bce: PUSH1 0x40
00001bd0: MSTORE
00001bd1: DUP1
00001bd2: MLOAD
00001bd3: SWAP1
00001bd4: PUSH1 0x20
00001bd6: ADD
00001bd7: KECCAK256
00001bd8: PUSH1 0x00
00001bda: SHR
00001bdb: SWAP7
00001bdc: POP
00001bdd: POP
00001bde: POP
00001bdf: POP
00001be0: POP
00001be1: POP
00001be2: PUSH1 0x00
00001be4: DUP1
00001be5: DUP12
00001be6: SGT
00001be7: PUSH2 0x1bf0
00001bea: JUMPI
00001beb: DUP10
00001bec: PUSH2 0x1bf2
00001bef: JUMP
00001bf0: JUMPDEST
00001bf1: DUP11
00001bf2: JUMPDEST
00001bf3: SWAP1
00001bf4: POP
00001bf5: CALLER
00001bf6: PUSH1 0x01
00001bf8: PUSH1 0x01
00001bfa: PUSH1 0xa0
00001bfc: SHL
00001bfd: SUB
00001bfe: DUP5
00001bff: AND
00001c00: EQ
00001c01: PUSH2 0x1c31
00001c04: JUMPI
00001c05: PUSH1 0x40
00001c07: MLOAD
00001c08: PUSH3 0x461bcd
00001c0c: PUSH1 0xe5
00001c0e: SHL
00001c0f: DUP2
00001c10: MSTORE
00001c11: PUSH1 0x20
00001c13: PUSH1 0x04
00001c15: DUP3
00001c16: ADD
00001c17: MSTORE
00001c18: PUSH1 0x02
00001c1a: PUSH1 0x24
00001c1c: DUP3
00001c1d: ADD
00001c1e: MSTORE
00001c1f: PUSH2 0x3a29
00001c22: PUSH1 0xf0
00001c24: SHL
00001c25: PUSH1 0x44
00001c27: DUP3
00001c28: ADD
00001c29: MSTORE
00001c2a: PUSH1 0x64
00001c2c: ADD
00001c2d: PUSH2 0x01b4
00001c30: JUMP
00001c31: JUMPDEST
00001c32: DUP4
00001c33: ISZERO
00001c34: PUSH2 0x1d14
00001c37: JUMPI
00001c38: DUP5
00001c39: MLOAD
00001c3a: ISZERO
00001c3b: PUSH2 0x1ca6
00001c3e: JUMPI
00001c3f: PUSH2 0x1c70
00001c42: DUP6
00001c43: PUSH1 0x20
00001c45: ADD
00001c46: MLOAD
00001c47: DUP7
00001c48: PUSH1 0x40
00001c4a: ADD
00001c4b: MLOAD
00001c4c: DUP8
00001c4d: PUSH1 0x60
00001c4f: ADD
00001c50: MLOAD
00001c51: DUP5
00001c52: DUP7
00001c53: PUSH1 0x01
00001c55: PUSH1 0x01
00001c57: PUSH1 0xa0
00001c59: SHL
00001c5a: SUB
00001c5b: AND
00001c5c: DUP11
00001c5d: PUSH1 0x40
00001c5f: ADD
00001c60: MLOAD
00001c61: PUSH1 0x01
00001c63: PUSH1 0x01
00001c65: PUSH1 0xa0
00001c67: SHL
00001c68: SUB
00001c69: AND
00001c6a: GT
00001c6b: DUP9
00001c6c: PUSH2 0x1476
00001c6f: JUMP
00001c70: JUMPDEST
00001c71: PUSH2 0x1ca1
00001c74: JUMPI
00001c75: PUSH1 0x40
00001c77: MLOAD
00001c78: PUSH3 0x461bcd
00001c7c: PUSH1 0xe5
00001c7e: SHL
00001c7f: DUP2
00001c80: MSTORE
00001c81: PUSH1 0x20
00001c83: PUSH1 0x04
00001c85: DUP3
00001c86: ADD
00001c87: MSTORE
00001c88: PUSH1 0x02
00001c8a: PUSH1 0x24
00001c8c: DUP3
00001c8d: ADD
00001c8e: MSTORE
00001c8f: PUSH2 0x2199
00001c92: PUSH1 0xf1
00001c94: SHL
00001c95: PUSH1 0x44
00001c97: DUP3
00001c98: ADD
00001c99: MSTORE
00001c9a: PUSH1 0x64
00001c9c: ADD
00001c9d: PUSH2 0x01b4
00001ca0: JUMP
00001ca1: JUMPDEST
00001ca2: PUSH2 0x1d50
00001ca5: JUMP
00001ca6: JUMPDEST
00001ca7: DUP1
00001ca8: PUSH2 0x1ce1
00001cab: DUP7
00001cac: PUSH1 0x40
00001cae: ADD
00001caf: MLOAD
00001cb0: DUP8
00001cb1: PUSH1 0x20
00001cb3: ADD
00001cb4: MLOAD
00001cb5: DUP9
00001cb6: PUSH1 0x60
00001cb8: ADD
00001cb9: MLOAD
00001cba: DUP7
00001cbb: PUSH1 0x01
00001cbd: PUSH1 0x01
00001cbf: PUSH1 0xa0
00001cc1: SHL
00001cc2: SUB
00001cc3: AND
00001cc4: DUP11
00001cc5: PUSH1 0x40
00001cc7: ADD
00001cc8: MLOAD
00001cc9: PUSH1 0x01
00001ccb: PUSH1 0x01
00001ccd: PUSH1 0xa0
00001ccf: SHL
00001cd0: SUB
00001cd1: AND
00001cd2: LT
00001cd3: DUP9
00001cd4: DUP9
00001cd5: PUSH1 0x60
00001cd7: SHL
00001cd8: DUP13
00001cd9: PUSH1 0x80
00001cdb: ADD
00001cdc: MLOAD
00001cdd: PUSH2 0x14bc
00001ce0: JUMP
00001ce1: JUMPDEST
00001ce2: LT
00001ce3: ISZERO
00001ce4: PUSH2 0x1ca1
00001ce7: JUMPI
00001ce8: PUSH1 0x40
00001cea: MLOAD
00001ceb: PUSH3 0x461bcd
00001cef: PUSH1 0xe5
00001cf1: SHL
00001cf2: DUP2
00001cf3: MSTORE
00001cf4: PUSH1 0x20
00001cf6: PUSH1 0x04
00001cf8: DUP3
00001cf9: ADD
00001cfa: MSTORE
00001cfb: PUSH1 0x02
00001cfd: PUSH1 0x24
00001cff: DUP3
00001d00: ADD
00001d01: MSTORE
00001d02: PUSH2 0x4333
00001d05: PUSH1 0xf0
00001d07: SHL
00001d08: PUSH1 0x44
00001d0a: DUP3
00001d0b: ADD
00001d0c: MSTORE
00001d0d: PUSH1 0x64
00001d0f: ADD
00001d10: PUSH2 0x01b4
00001d13: JUMP
00001d14: JUMPDEST
00001d15: PUSH2 0x1d1f
00001d18: DUP3
00001d19: DUP5
00001d1a: DUP4
00001d1b: PUSH2 0x20fd
00001d1e: JUMP
00001d1f: JUMPDEST
00001d20: PUSH2 0x1d50
00001d23: JUMPI
00001d24: PUSH1 0x40
00001d26: MLOAD
00001d27: PUSH3 0x461bcd
00001d2b: PUSH1 0xe5
00001d2d: SHL
00001d2e: DUP2
00001d2f: MSTORE
00001d30: PUSH1 0x20
00001d32: PUSH1 0x04
00001d34: DUP3
00001d35: ADD
00001d36: MSTORE
00001d37: PUSH1 0x02
00001d39: PUSH1 0x24
00001d3b: DUP3
00001d3c: ADD
00001d3d: MSTORE
00001d3e: PUSH2 0x10cd
00001d41: PUSH1 0xf2
00001d43: SHL
00001d44: PUSH1 0x44
00001d46: DUP3
00001d47: ADD
00001d48: MSTORE
00001d49: PUSH1 0x64
00001d4b: ADD
00001d4c: PUSH2 0x01b4
00001d4f: JUMP
00001d50: JUMPDEST
00001d51: POP
00001d52: POP
00001d53: POP
00001d54: POP
00001d55: POP
00001d56: POP
00001d57: POP
00001d58: POP
00001d59: POP
00001d5a: POP
00001d5b: POP
00001d5c: JUMP
00001d5d: JUMPDEST
00001d5e: PUSH1 0x40
00001d60: DUP1
00001d61: MLOAD
00001d62: PUSH1 0x01
00001d64: PUSH1 0x01
00001d66: PUSH1 0xa0
00001d68: SHL
00001d69: SUB
00001d6a: DUP5
00001d6b: DUP2
00001d6c: AND
00001d6d: PUSH1 0x24
00001d6f: DUP4
00001d70: ADD
00001d71: MSTORE
00001d72: PUSH1 0x44
00001d74: DUP1
00001d75: DUP4
00001d76: ADD
00001d77: DUP6
00001d78: SWAP1
00001d79: MSTORE
00001d7a: DUP4
00001d7b: MLOAD
00001d7c: DUP1
00001d7d: DUP5
00001d7e: SUB
00001d7f: SWAP1
00001d80: SWAP2
00001d81: ADD
00001d82: DUP2
00001d83: MSTORE
00001d84: PUSH1 0x64
00001d86: SWAP1
00001d87: SWAP3
00001d88: ADD
00001d89: DUP4
00001d8a: MSTORE
00001d8b: PUSH1 0x20
00001d8d: DUP3
00001d8e: ADD
00001d8f: DUP1
00001d90: MLOAD
00001d91: PUSH1 0x01
00001d93: PUSH1 0x01
00001d95: PUSH1 0xe0
00001d97: SHL
00001d98: SUB
00001d99: AND
00001d9a: PUSH4 0xa9059cbb
00001d9f: PUSH1 0xe0
00001da1: SHL
00001da2: OR
00001da3: SWAP1
00001da4: MSTORE
00001da5: SWAP2
00001da6: MLOAD
00001da7: PUSH1 0x00
00001da9: SWAP3
00001daa: DUP4
00001dab: SWAP3
00001dac: SWAP1
00001dad: DUP8
00001dae: AND
00001daf: SWAP2
00001db0: PUSH2 0x1db9
00001db3: SWAP2
00001db4: SWAP1
00001db5: PUSH2 0x279d
00001db8: JUMP
00001db9: JUMPDEST
00001dba: PUSH1 0x00
00001dbc: PUSH1 0x40
00001dbe: MLOAD
00001dbf: DUP1
00001dc0: DUP4
00001dc1: SUB
00001dc2: DUP2
00001dc3: PUSH1 0x00
00001dc5: DUP7
00001dc6: GAS
00001dc7: CALL
00001dc8: SWAP2
00001dc9: POP
00001dca: POP
00001dcb: RETURNDATASIZE
00001dcc: DUP1
00001dcd: PUSH1 0x00
00001dcf: DUP2
00001dd0: EQ
00001dd1: PUSH2 0x1df6
00001dd4: JUMPI
00001dd5: PUSH1 0x40
00001dd7: MLOAD
00001dd8: SWAP2
00001dd9: POP
00001dda: PUSH1 0x1f
00001ddc: NOT
00001ddd: PUSH1 0x3f
00001ddf: RETURNDATASIZE
00001de0: ADD
00001de1: AND
00001de2: DUP3
00001de3: ADD
00001de4: PUSH1 0x40
00001de6: MSTORE
00001de7: RETURNDATASIZE
00001de8: DUP3
00001de9: MSTORE
00001dea: RETURNDATASIZE
00001deb: PUSH1 0x00
00001ded: PUSH1 0x20
00001def: DUP5
00001df0: ADD
00001df1: RETURNDATACOPY
00001df2: PUSH2 0x1dfb
00001df5: JUMP
00001df6: JUMPDEST
00001df7: PUSH1 0x60
00001df9: SWAP2
00001dfa: POP
00001dfb: JUMPDEST
00001dfc: POP
00001dfd: SWAP2
00001dfe: POP
00001dff: SWAP2
00001e00: POP
00001e01: DUP2
00001e02: DUP1
00001e03: ISZERO
00001e04: PUSH2 0x1e25
00001e07: JUMPI
00001e08: POP
00001e09: DUP1
00001e0a: MLOAD
00001e0b: ISZERO
00001e0c: DUP1
00001e0d: PUSH2 0x1e25
00001e10: JUMPI
00001e11: POP
00001e12: DUP1
00001e13: DUP1
00001e14: PUSH1 0x20
00001e16: ADD
00001e17: SWAP1
00001e18: MLOAD
00001e19: DUP2
00001e1a: ADD
00001e1b: SWAP1
00001e1c: PUSH2 0x1e25
00001e1f: SWAP2
00001e20: SWAP1
00001e21: PUSH2 0x28fb
00001e24: JUMP
00001e25: JUMPDEST
00001e26: PUSH2 0x0e57
00001e29: JUMPI
00001e2a: PUSH1 0x40
00001e2c: MLOAD
00001e2d: PUSH3 0x461bcd
00001e31: PUSH1 0xe5
00001e33: SHL
00001e34: DUP2
00001e35: MSTORE
00001e36: PUSH1 0x20
00001e38: PUSH1 0x04
00001e3a: DUP3
00001e3b: ADD
00001e3c: MSTORE
00001e3d: PUSH1 0x2d
00001e3f: PUSH1 0x24
00001e41: DUP3
00001e42: ADD
00001e43: MSTORE
00001e44: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665723a207472
00001e65: PUSH1 0x44
00001e67: DUP3
00001e68: ADD
00001e69: MSTORE
00001e6a: PUSH13 0x185b9cd9995c8819985a5b1959
00001e78: PUSH1 0x9a
00001e7a: SHL
00001e7b: PUSH1 0x64
00001e7d: DUP3
00001e7e: ADD
00001e7f: MSTORE
00001e80: PUSH1 0x84
00001e82: ADD
00001e83: PUSH2 0x01b4
00001e86: JUMP
00001e87: JUMPDEST
00001e88: PUSH2 0x04c5
00001e8b: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
00001ea0: CALLER
00001ea1: EQ
00001ea2: DUP1
00001ea3: PUSH2 0x1ebf
00001ea6: JUMPI
00001ea7: POP
00001ea8: PUSH20 0x26ce7c1976c5eec83ea6ac22d83cb341b08850af
00001ebd: CALLER
00001ebe: EQ
00001ebf: JUMPDEST
00001ec0: DUP1
00001ec1: PUSH2 0x1edd
00001ec4: JUMPI
00001ec5: POP
00001ec6: PUSH20 0xb58555fcba6479fced7de1485eb054943a09af7b
00001edb: CALLER
00001edc: EQ
00001edd: JUMPDEST
00001ede: DUP1
00001edf: PUSH2 0x1efb
00001ee2: JUMPI
00001ee3: POP
00001ee4: PUSH20 0xb7ab1de5b259a880c4bb5451bdbe6f80f3798538
00001ef9: CALLER
00001efa: EQ
00001efb: JUMPDEST
00001efc: DUP1
00001efd: PUSH2 0x1f19
00001f00: JUMPI
00001f01: POP
00001f02: PUSH20 0x4f80b2cd1f550f81581c15f690bdd623f3824c86
00001f17: CALLER
00001f18: EQ
00001f19: JUMPDEST
00001f1a: DUP1
00001f1b: PUSH2 0x1f37
00001f1e: JUMPI
00001f1f: POP
00001f20: PUSH20 0x5b5001c4f80f33ec93b891062ed2e1d0acc05bb6
00001f35: CALLER
00001f36: EQ
00001f37: JUMPDEST
00001f38: DUP1
00001f39: PUSH2 0x1f55
00001f3c: JUMPI
00001f3d: POP
00001f3e: PUSH20 0x52b86a86e4d764e8275391c436127e60340a0e6a
00001f53: CALLER
00001f54: EQ
00001f55: JUMPDEST
00001f56: DUP1
00001f57: PUSH2 0x1f73
00001f5a: JUMPI
00001f5b: POP
00001f5c: PUSH20 0x41d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac8
00001f71: CALLER
00001f72: EQ
00001f73: JUMPDEST
00001f74: DUP1
00001f75: PUSH2 0x1f91
00001f78: JUMPI
00001f79: POP
00001f7a: PUSH20 0xfac983fce7ef3cee8ffb2ceb967e1b2362aada00
00001f8f: CALLER
00001f90: EQ
00001f91: JUMPDEST
00001f92: DUP1
00001f93: PUSH2 0x1780
00001f96: JUMPI
00001f97: POP
00001f98: PUSH20 0x0811fd1808e14f0b93f0514313965a5f142c5539
00001fad: CALLER
00001fae: EQ
00001faf: DUP1
00001fb0: PUSH2 0x04c0
00001fb3: JUMPI
00001fb4: POP
00001fb5: PUSH20 0x681535922425a4264b3670d9430afc6dc4de103e
00001fca: CALLER
00001fcb: EQ
00001fcc: PUSH2 0x13ce
00001fcf: JUMP
00001fd0: JUMPDEST
00001fd1: PUSH1 0x40
00001fd3: MLOAD
00001fd4: PUSH4 0x70a08231
00001fd9: PUSH1 0xe0
00001fdb: SHL
00001fdc: DUP2
00001fdd: MSTORE
00001fde: ADDRESS
00001fdf: PUSH1 0x04
00001fe1: DUP3
00001fe2: ADD
00001fe3: MSTORE
00001fe4: PUSH1 0x00
00001fe6: SWAP1
00001fe7: PUSH1 0x00
00001fe9: DUP1
00001fea: MLOAD
00001feb: PUSH1 0x20
00001fed: PUSH2 0x291e
00001ff0: DUP4
00001ff1: CODECOPY
00001ff2: DUP2
00001ff3: MLOAD
00001ff4: SWAP2
00001ff5: MSTORE
00001ff6: SWAP1
00001ff7: PUSH4 0x70a08231
00001ffc: SWAP1
00001ffd: PUSH1 0x24
00001fff: ADD
00002000: PUSH1 0x20
00002002: PUSH1 0x40
00002004: MLOAD
00002005: DUP1
00002006: DUP4
00002007: SUB
00002008: DUP2
00002009: DUP7
0000200a: GAS
0000200b: STATICCALL
0000200c: ISZERO
0000200d: DUP1
0000200e: ISZERO
0000200f: PUSH2 0x201c
00002012: JUMPI
00002013: RETURNDATASIZE
00002014: PUSH1 0x00
00002016: DUP1
00002017: RETURNDATACOPY
00002018: RETURNDATASIZE
00002019: PUSH1 0x00
0000201b: REVERT
0000201c: JUMPDEST
0000201d: POP
0000201e: POP
0000201f: POP
00002020: POP
00002021: PUSH1 0x40
00002023: MLOAD
00002024: RETURNDATASIZE
00002025: PUSH1 0x1f
00002027: NOT
00002028: PUSH1 0x1f
0000202a: DUP3
0000202b: ADD
0000202c: AND
0000202d: DUP3
0000202e: ADD
0000202f: DUP1
00002030: PUSH1 0x40
00002032: MSTORE
00002033: POP
00002034: DUP2
00002035: ADD
00002036: SWAP1
00002037: PUSH2 0x2040
0000203a: SWAP2
0000203b: SWAP1
0000203c: PUSH2 0x276e
0000203f: JUMP
00002040: JUMPDEST
00002041: SWAP1
00002042: POP
00002043: CALLVALUE
00002044: DUP2
00002045: GT
00002046: PUSH2 0x2076
00002049: JUMPI
0000204a: PUSH1 0x40
0000204c: MLOAD
0000204d: PUSH3 0x461bcd
00002051: PUSH1 0xe5
00002053: SHL
00002054: DUP2
00002055: MSTORE
00002056: PUSH1 0x20
00002058: PUSH1 0x04
0000205a: DUP3
0000205b: ADD
0000205c: MSTORE
0000205d: PUSH1 0x02
0000205f: PUSH1 0x24
00002061: DUP3
00002062: ADD
00002063: MSTORE
00002064: PUSH2 0x27a3
00002067: PUSH1 0xf1
00002069: SHL
0000206a: PUSH1 0x44
0000206c: DUP3
0000206d: ADD
0000206e: MSTORE
0000206f: PUSH1 0x64
00002071: ADD
00002072: PUSH2 0x01b4
00002075: JUMP
00002076: JUMPDEST
00002077: PUSH2 0x2080
0000207a: CALLVALUE
0000207b: DUP3
0000207c: PUSH2 0x23d2
0000207f: JUMP
00002080: JUMPDEST
00002081: PUSH1 0x01
00002083: SLOAD
00002084: SWAP1
00002085: SWAP2
00002086: POP
00002087: DUP1
00002088: DUP3
00002089: GT
0000208a: PUSH2 0x20bb
0000208d: JUMPI
0000208e: PUSH1 0x40
00002090: MLOAD
00002091: PUSH3 0x461bcd
00002095: PUSH1 0xe5
00002097: SHL
00002098: DUP2
00002099: MSTORE
0000209a: PUSH1 0x20
0000209c: PUSH1 0x04
0000209e: DUP3
0000209f: ADD
000020a0: MSTORE
000020a1: PUSH1 0x03
000020a3: PUSH1 0x24
000020a5: DUP3
000020a6: ADD
000020a7: MSTORE
000020a8: PUSH3 0x2829a3
000020ac: PUSH1 0xe9
000020ae: SHL
000020af: PUSH1 0x44
000020b1: DUP3
000020b2: ADD
000020b3: MSTORE
000020b4: PUSH1 0x64
000020b6: ADD
000020b7: PUSH2 0x01b4
000020ba: JUMP
000020bb: JUMPDEST
000020bc: PUSH1 0x00
000020be: PUSH2 0x20c7
000020c1: DUP3
000020c2: DUP5
000020c3: PUSH2 0x23d2
000020c6: JUMP
000020c7: JUMPDEST
000020c8: SWAP1
000020c9: POP
000020ca: DUP4
000020cb: DUP2
000020cc: GT
000020cd: PUSH2 0x0c74
000020d0: JUMPI
000020d1: PUSH1 0x40
000020d3: MLOAD
000020d4: PUSH3 0x461bcd
000020d8: PUSH1 0xe5
000020da: SHL
000020db: DUP2
000020dc: MSTORE
000020dd: PUSH1 0x20
000020df: PUSH1 0x04
000020e1: DUP3
000020e2: ADD
000020e3: MSTORE
000020e4: PUSH1 0x02
000020e6: PUSH1 0x24
000020e8: DUP3
000020e9: ADD
000020ea: MSTORE
000020eb: PUSH2 0x2823
000020ee: PUSH1 0xf1
000020f0: SHL
000020f1: PUSH1 0x44
000020f3: DUP3
000020f4: ADD
000020f5: MSTORE
000020f6: PUSH1 0x64
000020f8: ADD
000020f9: PUSH2 0x01b4
000020fc: JUMP
000020fd: JUMPDEST
000020fe: PUSH1 0x00
00002100: DUP2
00002101: PUSH1 0x00
00002103: SUB
00002104: PUSH2 0x210f
00002107: JUMPI
00002108: POP
00002109: PUSH1 0x01
0000210b: PUSH2 0x2143
0000210e: JUMP
0000210f: JUMPDEST
00002110: PUSH1 0x40
00002112: MLOAD
00002113: PUSH4 0xa9059cbb
00002118: PUSH1 0xe0
0000211a: SHL
0000211b: DUP2
0000211c: MSTORE
0000211d: PUSH1 0x01
0000211f: PUSH1 0x01
00002121: PUSH1 0xa0
00002123: SHL
00002124: SUB
00002125: DUP5
00002126: AND
00002127: PUSH1 0x04
00002129: DUP3
0000212a: ADD
0000212b: MSTORE
0000212c: DUP3
0000212d: PUSH1 0x24
0000212f: DUP3
00002130: ADD
00002131: MSTORE
00002132: PUSH1 0x20
00002134: DUP2
00002135: PUSH1 0x44
00002137: DUP4
00002138: PUSH1 0x00
0000213a: DUP10
0000213b: GAS
0000213c: CALL
0000213d: SWAP1
0000213e: MLOAD
0000213f: SWAP4
00002140: POP
00002141: SWAP1
00002142: POP
00002143: JUMPDEST
00002144: SWAP4
00002145: SWAP3
00002146: POP
00002147: POP
00002148: POP
00002149: JUMP
0000214a: JUMPDEST
0000214b: PUSH1 0x00
0000214d: PUSH1 0x40
0000214f: MLOAD
00002150: PUSH4 0x022c0d9f
00002155: PUSH1 0xe0
00002157: SHL
00002158: DUP2
00002159: MSTORE
0000215a: DUP6
0000215b: PUSH1 0x04
0000215d: DUP3
0000215e: ADD
0000215f: MSTORE
00002160: DUP5
00002161: PUSH1 0x24
00002163: DUP3
00002164: ADD
00002165: MSTORE
00002166: DUP3
00002167: PUSH1 0x00
00002169: DUP2
0000216a: EQ
0000216b: PUSH2 0x2179
0000216e: JUMPI
0000216f: DUP4
00002170: PUSH1 0x44
00002172: DUP4
00002173: ADD
00002174: MSTORE
00002175: PUSH2 0x218f
00002178: JUMP
00002179: JUMPDEST
0000217a: PUSH15 0x3b3cc22af3ae1eac0440bcee416b40
0000218a: PUSH1 0x44
0000218c: DUP4
0000218d: ADD
0000218e: MSTORE
0000218f: JUMPDEST
00002190: POP
00002191: PUSH1 0x80
00002193: PUSH1 0x64
00002195: DUP3
00002196: ADD
00002197: MSTORE
00002198: PUSH1 0x00
0000219a: PUSH1 0x84
0000219c: DUP3
0000219d: ADD
0000219e: MSTORE
0000219f: PUSH1 0x20
000021a1: DUP2
000021a2: PUSH1 0xa4
000021a4: DUP4
000021a5: PUSH1 0x00
000021a7: DUP9
000021a8: GAS
000021a9: CALL
000021aa: SWAP7
000021ab: SWAP6
000021ac: POP
000021ad: POP
000021ae: POP
000021af: POP
000021b0: POP
000021b1: POP
000021b2: JUMP
000021b3: JUMPDEST
000021b4: PUSH1 0x00
000021b6: DUP1
000021b7: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc1
000021cc: NOT
000021cd: PUSH1 0x01
000021cf: PUSH1 0x01
000021d1: PUSH1 0xa0
000021d3: SHL
000021d4: SUB
000021d5: DUP5
000021d6: AND
000021d7: ADD
000021d8: PUSH2 0x21e7
000021db: JUMPI
000021dc: POP
000021dd: PUSH1 0x00
000021df: SWAP3
000021e0: PUSH1 0x01
000021e2: SWAP3
000021e3: POP
000021e4: SWAP1
000021e5: POP
000021e6: JUMP
000021e7: JUMPDEST
000021e8: POP
000021e9: PUSH1 0x00
000021eb: SWAP3
000021ec: DUP4
000021ed: SWAP3
000021ee: POP
000021ef: SWAP1
000021f0: POP
000021f1: JUMP
000021f2: JUMPDEST
000021f3: PUSH1 0x00
000021f5: DUP1
000021f6: PUSH1 0x00
000021f8: DUP6
000021f9: PUSH2 0x2216
000021fc: JUMPI
000021fd: PUSH20 0xfffd8963efd1fc6a506488495d951d5263988d25
00002212: PUSH2 0x221d
00002215: JUMP
00002216: JUMPDEST
00002217: PUSH5 0x01000276a4
0000221d: JUMPDEST
0000221e: SWAP1
0000221f: POP
00002220: PUSH1 0x40
00002222: MLOAD
00002223: PUSH4 0x02515961
00002228: PUSH1 0xe3
0000222a: SHL
0000222b: DUP2
0000222c: MSTORE
0000222d: DUP8
0000222e: PUSH1 0x00
00002230: DUP2
00002231: EQ
00002232: PUSH2 0x2240
00002235: JUMPI
00002236: DUP9
00002237: PUSH1 0x04
00002239: DUP4
0000223a: ADD
0000223b: MSTORE
0000223c: PUSH2 0x2256
0000223f: JUMP
00002240: JUMPDEST
00002241: PUSH15 0x3b3cc22af3ae1eac0440bcee416b40
00002251: PUSH1 0x04
00002253: DUP4
00002254: ADD
00002255: MSTORE
00002256: JUMPDEST
00002257: POP
00002258: DUP7
00002259: PUSH1 0x24
0000225b: DUP3
0000225c: ADD
0000225d: MSTORE
0000225e: DUP6
0000225f: PUSH1 0x44
00002261: DUP3
00002262: ADD
00002263: MSTORE
00002264: DUP2
00002265: PUSH1 0x64
00002267: DUP3
00002268: ADD
00002269: MSTORE
0000226a: PUSH1 0xa0
0000226c: PUSH1 0x84
0000226e: DUP3
0000226f: ADD
00002270: MSTORE
00002271: DUP5
00002272: MLOAD
00002273: DUP1
00002274: PUSH1 0xa4
00002276: DUP4
00002277: ADD
00002278: MSTORE
00002279: PUSH1 0x00
0000227b: JUMPDEST
0000227c: DUP2
0000227d: DUP2
0000227e: LT
0000227f: ISZERO
00002280: PUSH2 0x2298
00002283: JUMPI
00002284: PUSH1 0x20
00002286: DUP2
00002287: DUP9
00002288: ADD
00002289: DUP2
0000228a: ADD
0000228b: MLOAD
0000228c: PUSH1 0xc4
0000228e: DUP6
0000228f: DUP5
00002290: ADD
00002291: ADD
00002292: MSTORE
00002293: ADD
00002294: PUSH2 0x227b
00002297: JUMP
00002298: JUMPDEST
00002299: POP
0000229a: PUSH1 0x40
0000229c: DUP3
0000229d: DUP3
0000229e: PUSH1 0xc4
000022a0: ADD
000022a1: DUP5
000022a2: PUSH1 0x00
000022a4: DUP15
000022a5: GAS
000022a6: CALL
000022a7: SWAP1
000022a8: POP
000022a9: DUP1
000022aa: PUSH2 0x22b2
000022ad: JUMPI
000022ae: PUSH1 0x00
000022b0: DUP1
000022b1: REVERT
000022b2: JUMPDEST
000022b3: POP
000022b4: DUP1
000022b5: MLOAD
000022b6: SWAP4
000022b7: POP
000022b8: PUSH1 0x20
000022ba: DUP2
000022bb: ADD
000022bc: MLOAD
000022bd: SWAP3
000022be: POP
000022bf: POP
000022c0: POP
000022c1: SWAP6
000022c2: POP
000022c3: SWAP6
000022c4: SWAP4
000022c5: POP
000022c6: POP
000022c7: POP
000022c8: POP
000022c9: JUMP
000022ca: JUMPDEST
000022cb: PUSH20 0xb58555fcba6479fced7de1485eb054943a09af7b
000022e0: ORIGIN
000022e1: EQ
000022e2: DUP1
000022e3: PUSH2 0x22ff
000022e6: JUMPI
000022e7: POP
000022e8: PUSH20 0xb7ab1de5b259a880c4bb5451bdbe6f80f3798538
000022fd: ORIGIN
000022fe: EQ
000022ff: JUMPDEST
00002300: DUP1
00002301: PUSH2 0x231d
00002304: JUMPI
00002305: POP
00002306: PUSH20 0x4f80b2cd1f550f81581c15f690bdd623f3824c86
0000231b: ORIGIN
0000231c: EQ
0000231d: JUMPDEST
0000231e: DUP1
0000231f: PUSH2 0x233b
00002322: JUMPI
00002323: POP
00002324: PUSH20 0x5b5001c4f80f33ec93b891062ed2e1d0acc05bb6
00002339: ORIGIN
0000233a: EQ
0000233b: JUMPDEST
0000233c: DUP1
0000233d: PUSH2 0x2359
00002340: JUMPI
00002341: POP
00002342: PUSH20 0xa6ae57b1da8238cd149bc718c40578e4620b752c
00002357: ORIGIN
00002358: EQ
00002359: JUMPDEST
0000235a: DUP1
0000235b: PUSH2 0x2377
0000235e: JUMPI
0000235f: POP
00002360: PUSH20 0x26ce7c1976c5eec83ea6ac22d83cb341b08850af
00002375: ORIGIN
00002376: EQ
00002377: JUMPDEST
00002378: DUP1
00002379: PUSH2 0x2395
0000237c: JUMPI
0000237d: POP
0000237e: PUSH20 0x52b86a86e4d764e8275391c436127e60340a0e6a
00002393: ORIGIN
00002394: EQ
00002395: JUMPDEST
00002396: DUP1
00002397: PUSH2 0x23b3
0000239a: JUMPI
0000239b: POP
0000239c: PUSH20 0x41d3ab85aafed2ef9e644cb7d3bbca2fc4d8cac8
000023b1: ORIGIN
000023b2: EQ
000023b3: JUMPDEST
000023b4: PUSH2 0x04c5
000023b7: JUMPI
000023b8: PUSH1 0x00
000023ba: DUP1
000023bb: REVERT
000023bc: JUMPDEST
000023bd: PUSH4 0x4e487b71
000023c2: PUSH1 0xe0
000023c4: SHL
000023c5: PUSH1 0x00
000023c7: MSTORE
000023c8: PUSH1 0x11
000023ca: PUSH1 0x04
000023cc: MSTORE
000023cd: PUSH1 0x24
000023cf: PUSH1 0x00
000023d1: REVERT
000023d2: JUMPDEST
000023d3: DUP2
000023d4: DUP2
000023d5: SUB
000023d6: DUP2
000023d7: DUP2
000023d8: GT
000023d9: ISZERO
000023da: PUSH2 0x23e5
000023dd: JUMPI
000023de: PUSH2 0x23e5
000023e1: PUSH2 0x23bc
000023e4: JUMP
000023e5: JUMPDEST
000023e6: SWAP3
000023e7: SWAP2
000023e8: POP
000023e9: POP
000023ea: JUMP
000023eb: JUMPDEST
000023ec: PUSH1 0x20
000023ee: DUP1
000023ef: DUP3
000023f0: MSTORE
000023f1: PUSH1 0x03
000023f3: SWAP1
000023f4: DUP3
000023f5: ADD
000023f6: MSTORE
000023f7: PUSH3 0x111111
000023fb: PUSH1 0xea
000023fd: SHL
000023fe: PUSH1 0x40
00002400: DUP3
00002401: ADD
00002402: MSTORE
00002403: PUSH1 0x60
00002405: ADD
00002406: SWAP1
00002407: JUMP
00002408: JUMPDEST
00002409: DUP1
0000240a: CALLDATALOAD
0000240b: PUSH1 0x01
0000240d: PUSH1 0x01
0000240f: PUSH1 0xa0
00002411: SHL
00002412: SUB
00002413: DUP2
00002414: AND
00002415: DUP2
00002416: EQ
00002417: PUSH2 0x241f
0000241a: JUMPI
0000241b: PUSH1 0x00
0000241d: DUP1
0000241e: REVERT
0000241f: JUMPDEST
00002420: SWAP2
00002421: SWAP1
00002422: POP
00002423: JUMP
00002424: JUMPDEST
00002425: PUSH1 0x00
00002427: DUP1
00002428: DUP4
00002429: PUSH1 0x1f
0000242b: DUP5
0000242c: ADD
0000242d: SLT
0000242e: PUSH2 0x2436
00002431: JUMPI
00002432: PUSH1 0x00
00002434: DUP1
00002435: REVERT
00002436: JUMPDEST
00002437: POP
00002438: DUP2
00002439: CALLDATALOAD
0000243a: PUSH8 0xffffffffffffffff
00002443: DUP2
00002444: GT
00002445: ISZERO
00002446: PUSH2 0x244e
00002449: JUMPI
0000244a: PUSH1 0x00
0000244c: DUP1
0000244d: REVERT
0000244e: JUMPDEST
0000244f: PUSH1 0x20
00002451: DUP4
00002452: ADD
00002453: SWAP2
00002454: POP
00002455: DUP4
00002456: PUSH1 0x20
00002458: DUP3
00002459: DUP6
0000245a: ADD
0000245b: ADD
0000245c: GT
0000245d: ISZERO
0000245e: PUSH2 0x2466
00002461: JUMPI
00002462: PUSH1 0x00
00002464: DUP1
00002465: REVERT
00002466: JUMPDEST
00002467: SWAP3
00002468: POP
00002469: SWAP3
0000246a: SWAP1
0000246b: POP
0000246c: JUMP
0000246d: JUMPDEST
0000246e: PUSH1 0x00
00002470: PUSH1 0x40
00002472: DUP3
00002473: DUP5
00002474: SUB
00002475: SLT
00002476: ISZERO
00002477: PUSH2 0x247f
0000247a: JUMPI
0000247b: PUSH1 0x00
0000247d: DUP1
0000247e: REVERT
0000247f: JUMPDEST
00002480: POP
00002481: SWAP2
00002482: SWAP1
00002483: POP
00002484: JUMP
00002485: JUMPDEST
00002486: PUSH1 0x00
00002488: DUP1
00002489: PUSH1 0x00
0000248b: DUP1
0000248c: PUSH1 0x80
0000248e: DUP6
0000248f: DUP8
00002490: SUB
00002491: SLT
00002492: ISZERO
00002493: PUSH2 0x249b
00002496: JUMPI
00002497: PUSH1 0x00
00002499: DUP1
0000249a: REVERT
0000249b: JUMPDEST
0000249c: PUSH2 0x24a4
0000249f: DUP6
000024a0: PUSH2 0x2408
000024a3: JUMP
000024a4: JUMPDEST
000024a5: SWAP4
000024a6: POP
000024a7: PUSH1 0x20
000024a9: DUP6
000024aa: ADD
000024ab: CALLDATALOAD
000024ac: PUSH8 0xffffffffffffffff
000024b5: DUP2
000024b6: GT
000024b7: ISZERO
000024b8: PUSH2 0x24c0
000024bb: JUMPI
000024bc: PUSH1 0x00
000024be: DUP1
000024bf: REVERT
000024c0: JUMPDEST
000024c1: PUSH2 0x24cc
000024c4: DUP8
000024c5: DUP3
000024c6: DUP9
000024c7: ADD
000024c8: PUSH2 0x2424
000024cb: JUMP
000024cc: JUMPDEST
000024cd: SWAP1
000024ce: SWAP5
000024cf: POP
000024d0: SWAP3
000024d1: POP
000024d2: PUSH2 0x24e0
000024d5: SWAP1
000024d6: POP
000024d7: DUP7
000024d8: PUSH1 0x40
000024da: DUP8
000024db: ADD
000024dc: PUSH2 0x246d
000024df: JUMP
000024e0: JUMPDEST
000024e1: SWAP1
000024e2: POP
000024e3: SWAP3
000024e4: SWAP6
000024e5: SWAP2
000024e6: SWAP5
000024e7: POP
000024e8: SWAP3
000024e9: POP
000024ea: JUMP
000024eb: JUMPDEST
000024ec: PUSH1 0x00
000024ee: DUP1
000024ef: PUSH1 0x00
000024f1: DUP1
000024f2: PUSH1 0x60
000024f4: DUP6
000024f5: DUP8
000024f6: SUB
000024f7: SLT
000024f8: ISZERO
000024f9: PUSH2 0x2501
000024fc: JUMPI
000024fd: PUSH1 0x00
000024ff: DUP1
00002500: REVERT
00002501: JUMPDEST
00002502: DUP5
00002503: CALLDATALOAD
00002504: SWAP4
00002505: POP
00002506: PUSH1 0x20
00002508: DUP6
00002509: ADD
0000250a: CALLDATALOAD
0000250b: SWAP3
0000250c: POP
0000250d: PUSH1 0x40
0000250f: DUP6
00002510: ADD
00002511: CALLDATALOAD
00002512: PUSH8 0xffffffffffffffff
0000251b: DUP2
0000251c: GT
0000251d: ISZERO
0000251e: PUSH2 0x2526
00002521: JUMPI
00002522: PUSH1 0x00
00002524: DUP1
00002525: REVERT
00002526: JUMPDEST
00002527: PUSH2 0x2532
0000252a: DUP8
0000252b: DUP3
0000252c: DUP9
0000252d: ADD
0000252e: PUSH2 0x2424
00002531: JUMP
00002532: JUMPDEST
00002533: SWAP6
00002534: SWAP9
00002535: SWAP5
00002536: SWAP8
00002537: POP
00002538: SWAP6
00002539: POP
0000253a: POP
0000253b: POP
0000253c: POP
0000253d: JUMP
0000253e: JUMPDEST
0000253f: PUSH1 0x00
00002541: PUSH1 0x20
00002543: DUP3
00002544: DUP5
00002545: SUB
00002546: SLT
00002547: ISZERO
00002548: PUSH2 0x2550
0000254b: JUMPI
0000254c: PUSH1 0x00
0000254e: DUP1
0000254f: REVERT
00002550: JUMPDEST
00002551: PUSH2 0x2143
00002554: DUP3
00002555: PUSH2 0x2408
00002558: JUMP
00002559: JUMPDEST
0000255a: PUSH1 0x00
0000255c: PUSH1 0x20
0000255e: DUP3
0000255f: DUP5
00002560: SUB
00002561: SLT
00002562: ISZERO
00002563: PUSH2 0x256b
00002566: JUMPI
00002567: PUSH1 0x00
00002569: DUP1
0000256a: REVERT
0000256b: JUMPDEST
0000256c: POP
0000256d: CALLDATALOAD
0000256e: SWAP2
0000256f: SWAP1
00002570: POP
00002571: JUMP
00002572: JUMPDEST
00002573: PUSH1 0x00
00002575: PUSH1 0x60
00002577: DUP3
00002578: DUP5
00002579: SUB
0000257a: SLT
0000257b: ISZERO
0000257c: PUSH2 0x247f
0000257f: JUMPI
00002580: PUSH1 0x00
00002582: DUP1
00002583: REVERT
00002584: JUMPDEST
00002585: PUSH1 0x00
00002587: DUP1
00002588: PUSH1 0x00
0000258a: DUP1
0000258b: PUSH1 0x00
0000258d: PUSH1 0xa0
0000258f: DUP7
00002590: DUP9
00002591: SUB
00002592: SLT
00002593: ISZERO
00002594: PUSH2 0x259c
00002597: JUMPI
00002598: PUSH1 0x00
0000259a: DUP1
0000259b: REVERT
0000259c: JUMPDEST
0000259d: PUSH2 0x25a6
000025a0: DUP8
000025a1: DUP8
000025a2: PUSH2 0x2572
000025a5: JUMP
000025a6: JUMPDEST
000025a7: SWAP5
000025a8: POP
000025a9: PUSH1 0x60
000025ab: DUP7
000025ac: ADD
000025ad: CALLDATALOAD
000025ae: PUSH8 0xffffffffffffffff
000025b7: DUP1
000025b8: DUP3
000025b9: GT
000025ba: ISZERO
000025bb: PUSH2 0x25c3
000025be: JUMPI
000025bf: PUSH1 0x00
000025c1: DUP1
000025c2: REVERT
000025c3: JUMPDEST
000025c4: PUSH2 0x25cf
000025c7: DUP10
000025c8: DUP4
000025c9: DUP11
000025ca: ADD
000025cb: PUSH2 0x2424
000025ce: JUMP
000025cf: JUMPDEST
000025d0: SWAP1
000025d1: SWAP7
000025d2: POP
000025d3: SWAP5
000025d4: POP
000025d5: PUSH1 0x80
000025d7: DUP9
000025d8: ADD
000025d9: CALLDATALOAD
000025da: SWAP2
000025db: POP
000025dc: DUP1
000025dd: DUP3
000025de: GT
000025df: ISZERO
000025e0: PUSH2 0x25e8
000025e3: JUMPI
000025e4: PUSH1 0x00
000025e6: DUP1
000025e7: REVERT
000025e8: JUMPDEST
000025e9: POP
000025ea: PUSH2 0x25f5
000025ed: DUP9
000025ee: DUP3
000025ef: DUP10
000025f0: ADD
000025f1: PUSH2 0x2424
000025f4: JUMP
000025f5: JUMPDEST
000025f6: SWAP7
000025f7: SWAP10
000025f8: SWAP6
000025f9: SWAP9
000025fa: POP
000025fb: SWAP4
000025fc: SWAP7
000025fd: POP
000025fe: SWAP3
000025ff: SWAP5
00002600: SWAP4
00002601: SWAP3
00002602: POP
00002603: POP
00002604: POP
00002605: JUMP
00002606: JUMPDEST
00002607: PUSH1 0x00
00002609: DUP1
0000260a: PUSH1 0x00
0000260c: PUSH1 0x80
0000260e: DUP5
0000260f: DUP7
00002610: SUB
00002611: SLT
00002612: ISZERO
00002613: PUSH2 0x261b
00002616: JUMPI
00002617: PUSH1 0x00
00002619: DUP1
0000261a: REVERT
0000261b: JUMPDEST
0000261c: PUSH2 0x2625
0000261f: DUP6
00002620: DUP6
00002621: PUSH2 0x2572
00002624: JUMP
00002625: JUMPDEST
00002626: SWAP3
00002627: POP
00002628: PUSH1 0x60
0000262a: DUP5
0000262b: ADD
0000262c: CALLDATALOAD
0000262d: PUSH8 0xffffffffffffffff
00002636: DUP2
00002637: GT
00002638: ISZERO
00002639: PUSH2 0x2641
0000263c: JUMPI
0000263d: PUSH1 0x00
0000263f: DUP1
00002640: REVERT
00002641: JUMPDEST
00002642: PUSH2 0x264d
00002645: DUP7
00002646: DUP3
00002647: DUP8
00002648: ADD
00002649: PUSH2 0x2424
0000264c: JUMP
0000264d: JUMPDEST
0000264e: SWAP5
0000264f: SWAP8
00002650: SWAP1
00002651: SWAP7
00002652: POP
00002653: SWAP4
00002654: SWAP5
00002655: POP
00002656: POP
00002657: POP
00002658: POP
00002659: JUMP
0000265a: JUMPDEST
0000265b: PUSH1 0x00
0000265d: DUP1
0000265e: PUSH1 0x00
00002660: DUP1
00002661: PUSH1 0x60
00002663: DUP6
00002664: DUP8
00002665: SUB
00002666: SLT
00002667: ISZERO
00002668: PUSH2 0x2670
0000266b: JUMPI
0000266c: PUSH1 0x00
0000266e: DUP1
0000266f: REVERT
00002670: JUMPDEST
00002671: PUSH2 0x2679
00002674: DUP6
00002675: PUSH2 0x2408
00002678: JUMP
00002679: JUMPDEST
0000267a: SWAP4
0000267b: POP
0000267c: PUSH1 0x20
0000267e: DUP6
0000267f: ADD
00002680: CALLDATALOAD
00002681: SWAP3
00002682: POP
00002683: PUSH1 0x40
00002685: DUP6
00002686: ADD
00002687: CALLDATALOAD
00002688: PUSH8 0xffffffffffffffff
00002691: DUP2
00002692: GT
00002693: ISZERO
00002694: PUSH2 0x2526
00002697: JUMPI
00002698: PUSH1 0x00
0000269a: DUP1
0000269b: REVERT
0000269c: JUMPDEST
0000269d: PUSH1 0x00
0000269f: JUMPDEST
000026a0: DUP4
000026a1: DUP2
000026a2: LT
000026a3: ISZERO
000026a4: PUSH2 0x26b7
000026a7: JUMPI
000026a8: DUP2
000026a9: DUP2
000026aa: ADD
000026ab: MLOAD
000026ac: DUP4
000026ad: DUP3
000026ae: ADD
000026af: MSTORE
000026b0: PUSH1 0x20
000026b2: ADD
000026b3: PUSH2 0x269f
000026b6: JUMP
000026b7: JUMPDEST
000026b8: POP
000026b9: POP
000026ba: PUSH1 0x00
000026bc: SWAP2
000026bd: ADD
000026be: MSTORE
000026bf: JUMP
000026c0: JUMPDEST
000026c1: PUSH1 0x00
000026c3: DUP2
000026c4: MLOAD
000026c5: DUP1
000026c6: DUP5
000026c7: MSTORE
000026c8: PUSH2 0x26d8
000026cb: DUP2
000026cc: PUSH1 0x20
000026ce: DUP7
000026cf: ADD
000026d0: PUSH1 0x20
000026d2: DUP7
000026d3: ADD
000026d4: PUSH2 0x269c
000026d7: JUMP
000026d8: JUMPDEST
000026d9: PUSH1 0x1f
000026db: ADD
000026dc: PUSH1 0x1f
000026de: NOT
000026df: AND
000026e0: SWAP3
000026e1: SWAP1
000026e2: SWAP3
000026e3: ADD
000026e4: PUSH1 0x20
000026e6: ADD
000026e7: SWAP3
000026e8: SWAP2
000026e9: POP
000026ea: POP
000026eb: JUMP
000026ec: JUMPDEST
000026ed: PUSH1 0x20
000026ef: DUP2
000026f0: MSTORE
000026f1: PUSH1 0x00
000026f3: PUSH2 0x2143
000026f6: PUSH1 0x20
000026f8: DUP4
000026f9: ADD
000026fa: DUP5
000026fb: PUSH2 0x26c0
000026fe: JUMP
000026ff: JUMPDEST
00002700: PUSH1 0x00
00002702: PUSH1 0x20
00002704: DUP3
00002705: DUP5
00002706: SUB
00002707: SLT
00002708: ISZERO
00002709: PUSH2 0x2711
0000270c: JUMPI
0000270d: PUSH1 0x00
0000270f: DUP1
00002710: REVERT
00002711: JUMPDEST
00002712: DUP2
00002713: CALLDATALOAD
00002714: PUSH1 0x01
00002716: PUSH1 0x01
00002718: PUSH1 0xb0
0000271a: SHL
0000271b: SUB
0000271c: NOT
0000271d: DUP2
0000271e: AND
0000271f: DUP2
00002720: EQ
00002721: PUSH2 0x2143
00002724: JUMPI
00002725: PUSH1 0x00
00002727: DUP1
00002728: REVERT
00002729: JUMPDEST
0000272a: DUP2
0000272b: DUP4
0000272c: MSTORE
0000272d: DUP2
0000272e: DUP2
0000272f: PUSH1 0x20
00002731: DUP6
00002732: ADD
00002733: CALLDATACOPY
00002734: POP
00002735: PUSH1 0x00
00002737: DUP3
00002738: DUP3
00002739: ADD
0000273a: PUSH1 0x20
0000273c: SWAP1
0000273d: DUP2
0000273e: ADD
0000273f: SWAP2
00002740: SWAP1
00002741: SWAP2
00002742: MSTORE
00002743: PUSH1 0x1f
00002745: SWAP1
00002746: SWAP2
00002747: ADD
00002748: PUSH1 0x1f
0000274a: NOT
0000274b: AND
0000274c: SWAP1
0000274d: SWAP2
0000274e: ADD
0000274f: ADD
00002750: SWAP1
00002751: JUMP
00002752: JUMPDEST
00002753: PUSH1 0x20
00002755: DUP2
00002756: MSTORE
00002757: PUSH1 0x00
00002759: PUSH2 0x2766
0000275c: PUSH1 0x20
0000275e: DUP4
0000275f: ADD
00002760: DUP5
00002761: DUP7
00002762: PUSH2 0x2729
00002765: JUMP
00002766: JUMPDEST
00002767: SWAP5
00002768: SWAP4
00002769: POP
0000276a: POP
0000276b: POP
0000276c: POP
0000276d: JUMP
0000276e: JUMPDEST
0000276f: PUSH1 0x00
00002771: PUSH1 0x20
00002773: DUP3
00002774: DUP5
00002775: SUB
00002776: SLT
00002777: ISZERO
00002778: PUSH2 0x2780
0000277b: JUMPI
0000277c: PUSH1 0x00
0000277e: DUP1
0000277f: REVERT
00002780: JUMPDEST
00002781: POP
00002782: MLOAD
00002783: SWAP2
00002784: SWAP1
00002785: POP
00002786: JUMP
00002787: JUMPDEST
00002788: PUSH4 0x4e487b71
0000278d: PUSH1 0xe0
0000278f: SHL
00002790: PUSH1 0x00
00002792: MSTORE
00002793: PUSH1 0x41
00002795: PUSH1 0x04
00002797: MSTORE
00002798: PUSH1 0x24
0000279a: PUSH1 0x00
0000279c: REVERT
0000279d: JUMPDEST
0000279e: PUSH1 0x00
000027a0: DUP3
000027a1: MLOAD
000027a2: PUSH2 0x27af
000027a5: DUP2
000027a6: DUP5
000027a7: PUSH1 0x20
000027a9: DUP8
000027aa: ADD
000027ab: PUSH2 0x269c
000027ae: JUMP
000027af: JUMPDEST
000027b0: SWAP2
000027b1: SWAP1
000027b2: SWAP2
000027b3: ADD
000027b4: SWAP3
000027b5: SWAP2
000027b6: POP
000027b7: POP
000027b8: JUMP
000027b9: JUMPDEST
000027ba: PUSH1 0x40
000027bc: DUP2
000027bd: MSTORE
000027be: PUSH1 0x00
000027c0: PUSH2 0x27cd
000027c3: PUSH1 0x40
000027c5: DUP4
000027c6: ADD
000027c7: DUP7
000027c8: DUP9
000027c9: PUSH2 0x2729
000027cc: JUMP
000027cd: JUMPDEST
000027ce: DUP3
000027cf: DUP2
000027d0: SUB
000027d1: PUSH1 0x20
000027d3: DUP5
000027d4: ADD
000027d5: MSTORE
000027d6: PUSH2 0x27e0
000027d9: DUP2
000027da: DUP6
000027db: DUP8
000027dc: PUSH2 0x2729
000027df: JUMP
000027e0: JUMPDEST
000027e1: SWAP8
000027e2: SWAP7
000027e3: POP
000027e4: POP
000027e5: POP
000027e6: POP
000027e7: POP
000027e8: POP
000027e9: POP
000027ea: JUMP
000027eb: JUMPDEST
000027ec: DUP2
000027ed: DUP4
000027ee: DUP3
000027ef: CALLDATACOPY
000027f0: PUSH1 0x00
000027f2: SWAP2
000027f3: ADD
000027f4: SWAP1
000027f5: DUP2
000027f6: MSTORE
000027f7: SWAP2
000027f8: SWAP1
000027f9: POP
000027fa: JUMP
000027fb: JUMPDEST
000027fc: PUSH1 0x00
000027fe: PUSH1 0x20
00002800: DUP3
00002801: DUP5
00002802: SUB
00002803: SLT
00002804: ISZERO
00002805: PUSH2 0x280d
00002808: JUMPI
00002809: PUSH1 0x00
0000280b: DUP1
0000280c: REVERT
0000280d: JUMPDEST
0000280e: DUP2
0000280f: MLOAD
00002810: PUSH8 0xffffffffffffffff
00002819: DUP1
0000281a: DUP3
0000281b: GT
0000281c: ISZERO
0000281d: PUSH2 0x2825
00002820: JUMPI
00002821: PUSH1 0x00
00002823: DUP1
00002824: REVERT
00002825: JUMPDEST
00002826: DUP2
00002827: DUP5
00002828: ADD
00002829: SWAP2
0000282a: POP
0000282b: DUP5
0000282c: PUSH1 0x1f
0000282e: DUP4
0000282f: ADD
00002830: SLT
00002831: PUSH2 0x2839
00002834: JUMPI
00002835: PUSH1 0x00
00002837: DUP1
00002838: REVERT
00002839: JUMPDEST
0000283a: DUP2
0000283b: MLOAD
0000283c: DUP2
0000283d: DUP2
0000283e: GT
0000283f: ISZERO
00002840: PUSH2 0x284b
00002843: JUMPI
00002844: PUSH2 0x284b
00002847: PUSH2 0x2787
0000284a: JUMP
0000284b: JUMPDEST
0000284c: PUSH1 0x40
0000284e: MLOAD
0000284f: PUSH1 0x1f
00002851: DUP3
00002852: ADD
00002853: PUSH1 0x1f
00002855: NOT
00002856: SWAP1
00002857: DUP2
00002858: AND
00002859: PUSH1 0x3f
0000285b: ADD
0000285c: AND
0000285d: DUP2
0000285e: ADD
0000285f: SWAP1
00002860: DUP4
00002861: DUP3
00002862: GT
00002863: DUP2
00002864: DUP4
00002865: LT
00002866: OR
00002867: ISZERO
00002868: PUSH2 0x2873
0000286b: JUMPI
0000286c: PUSH2 0x2873
0000286f: PUSH2 0x2787
00002872: JUMP
00002873: JUMPDEST
00002874: DUP2
00002875: PUSH1 0x40
00002877: MSTORE
00002878: DUP3
00002879: DUP2
0000287a: MSTORE
0000287b: DUP8
0000287c: PUSH1 0x20
0000287e: DUP5
0000287f: DUP8
00002880: ADD
00002881: ADD
00002882: GT
00002883: ISZERO
00002884: PUSH2 0x288c
00002887: JUMPI
00002888: PUSH1 0x00
0000288a: DUP1
0000288b: REVERT
0000288c: JUMPDEST
0000288d: PUSH2 0x27e0
00002890: DUP4
00002891: PUSH1 0x20
00002893: DUP4
00002894: ADD
00002895: PUSH1 0x20
00002897: DUP9
00002898: ADD
00002899: PUSH2 0x269c
0000289c: JUMP
0000289d: JUMPDEST
0000289e: DUP1
0000289f: DUP3
000028a0: ADD
000028a1: DUP1
000028a2: DUP3
000028a3: GT
000028a4: ISZERO
000028a5: PUSH2 0x23e5
000028a8: JUMPI
000028a9: PUSH2 0x23e5
000028ac: PUSH2 0x23bc
000028af: JUMP
000028b0: JUMPDEST
000028b1: PUSH4 0x4e487b71
000028b6: PUSH1 0xe0
000028b8: SHL
000028b9: PUSH1 0x00
000028bb: MSTORE
000028bc: PUSH1 0x32
000028be: PUSH1 0x04
000028c0: MSTORE
000028c1: PUSH1 0x24
000028c3: PUSH1 0x00
000028c5: REVERT
000028c6: JUMPDEST
000028c7: PUSH1 0x00
000028c9: PUSH1 0x01
000028cb: DUP3
000028cc: ADD
000028cd: PUSH2 0x28d8
000028d0: JUMPI
000028d1: PUSH2 0x28d8
000028d4: PUSH2 0x23bc
000028d7: JUMP
000028d8: JUMPDEST
000028d9: POP
000028da: PUSH1 0x01
000028dc: ADD
000028dd: SWAP1
000028de: JUMP
000028df: JUMPDEST
000028e0: PUSH1 0x00
000028e2: PUSH1 0x01
000028e4: PUSH1 0xff
000028e6: SHL
000028e7: DUP3
000028e8: ADD
000028e9: PUSH2 0x28f4
000028ec: JUMPI
000028ed: PUSH2 0x28f4
000028f0: PUSH2 0x23bc
000028f3: JUMP
000028f4: JUMPDEST
000028f5: POP
000028f6: PUSH1 0x00
000028f8: SUB
000028f9: SWAP1
000028fa: JUMP
000028fb: JUMPDEST
000028fc: PUSH1 0x00
000028fe: PUSH1 0x20
00002900: DUP3
00002901: DUP5
00002902: SUB
00002903: SLT
00002904: ISZERO
00002905: PUSH2 0x290d
00002908: JUMPI
00002909: PUSH1 0x00
0000290b: DUP1
0000290c: REVERT
0000290d: JUMPDEST
0000290e: DUP2
0000290f: MLOAD
00002910: DUP1
00002911: ISZERO
00002912: ISZERO
00002913: DUP2
00002914: EQ
00002915: PUSH2 0x2143
00002918: JUMPI
00002919: PUSH1 0x00
0000291b: DUP1
0000291c: REVERT
0000291d: INVALID
0000291e: STOP
0000291f: STOP
00002920: STOP
00002921: STOP
00002922: STOP
00002923: STOP
00002924: STOP
00002925: STOP
00002926: STOP
00002927: STOP
00002928: STOP
00002929: STOP
0000292a: UNKNOWN(0xC0)
0000292b: UNKNOWN(0x2A)
0000292c: UNKNOWN(0xAA)
0000292d: CODECOPY
0000292e: UNKNOWN(0xB2)
0000292f: UNKNOWN(0x23)
00002930: INVALID
00002931: DUP14
00002932: EXP
00002933: UNKNOWN(0x0E)
00002934: TLOAD
00002935: UNKNOWN(0x4F)
00002936: UNKNOWN(0x27)
00002937: UNKNOWN(0xEA)
00002938: UNKNOWN(0xD9)
00002939: ADDMOD
0000293a: EXTCODECOPY
0000293b: PUSH22 0x6cc2a26469706673582212208d561e0fe331ae5fff67
00002952: SWAP14
00002953: CREATE2
00002954: LOG3
00002955: UNKNOWN(0xE8)
00002956: UNKNOWN(0xDF)
00002957: UNKNOWN(0xEB)
00002958: BLOBBASEFEE
00002959: LOG2
0000295a: UNKNOWN(0x2E)
0000295b: UNKNOWN(0xF9)
0000295c: UNKNOWN(0xFC)
0000295d: UNKNOWN(0xE6)
0000295e: UNKNOWN(0xAA)
0000295f: PUSH12 0xd87abf72baf8010364736f6c
0000296c: PUSH4 0x43000813
00002971: STOP
00002972: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high access_control codex Whitelisted caller can selfdestruct the contract 85 no
view
evidence_json
{
    "evidence": "Dispatch table exposes selector `a7b8e688` (`...63a7b8e68814610365...`) and the runtime contains a `CALLER SELFDESTRUCT` sequence (`...5b33ff...`). The call path is gated only by a hardcoded caller allowlist (chain of `PUSH20 <addr> CALLER EQ`, e.g., `73a6ae57b1da8238cd149bc718c40578e4620b752c3314...`).",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Remove the SELFDESTRUCT path or gate it behind a single, explicitly controlled owner with a timelock/multisig. If it is intended, document the kill switch and ensure allowlisted addresses are non-upgradeable and tightly controlled.",
    "exploit_scenario": "A caller that matches one of the hardcoded allowlist addresses invokes the externally exposed function (selector `a7b8e688`). The call path reaches `CALLER SELFDESTRUCT`, permanently destroying the contract and sending any ETH balance to the caller, disabling all contract functionality thereafter."
}
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0xda2ea0da3420ddfe382fb44d5a41900c07b38472b7a06403191e67145487f317
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 120,
    "trace_id": "0xda2ea0da3420ddfe382fb44d5a41900c07b38472b7a06403191e67145487f317",
    "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": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3648,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 1006,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 1035,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 1185,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 1215,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 5986,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 6015,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 6045,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 7841,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 7870,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 7900,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 7930,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 7960,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 7990,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 8020,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 8050,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 8080,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 8110,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 8139,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 8929,
            "type": "tx_origin_used"
        },
        {
            "pc": 8958,
            "type": "tx_origin_used"
        },
        {
            "pc": 8988,
            "type": "tx_origin_used"
        },
        {
            "pc": 9018,
            "type": "tx_origin_used"
        },
        {
            "pc": 9048,
            "type": "tx_origin_used"
        },
        {
            "pc": 9078,
            "type": "tx_origin_used"
        },
        {
            "pc": 9108,
            "type": "tx_origin_used"
        },
        {
            "pc": 9138,
            "type": "tx_origin_used"
        },
        {
            "pc": 8928,
            "type": "tx_origin_used"
        },
        {
            "pc": 8957,
            "type": "tx_origin_used"
        },
        {
            "pc": 8987,
            "type": "tx_origin_used"
        },
        {
            "pc": 9017,
            "type": "tx_origin_used"
        },
        {
            "pc": 9047,
            "type": "tx_origin_used"
        },
        {
            "pc": 9077,
            "type": "tx_origin_used"
        },
        {
            "pc": 9107,
            "type": "tx_origin_used"
        },
        {
            "pc": 9137,
            "type": "tx_origin_used"
        }
    ],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 1006,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 1035,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 1185,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 1215,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 5986,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 6015,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 6045,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 7841,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 7870,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 7900,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 7930,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 7960,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 7990,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 8020,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 8050,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 8080,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 8110,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 8139,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 8929,
            "type": "tx_origin_used"
        },
        {
            "pc": 8958,
            "type": "tx_origin_used"
        },
        {
            "pc": 8988,
            "type": "tx_origin_used"
        },
        {
            "pc": 9018,
            "type": "tx_origin_used"
        },
        {
            "pc": 9048,
            "type": "tx_origin_used"
        },
        {
            "pc": 9078,
            "type": "tx_origin_used"
        },
        {
            "pc": 9108,
            "type": "tx_origin_used"
        },
        {
            "pc": 9138,
            "type": "tx_origin_used"
        },
        {
            "pc": 8928,
            "type": "tx_origin_used"
        },
        {
            "pc": 8957,
            "type": "tx_origin_used"
        },
        {
            "pc": 8987,
            "type": "tx_origin_used"
        },
        {
            "pc": 9017,
            "type": "tx_origin_used"
        },
        {
            "pc": 9047,
            "type": "tx_origin_used"
        },
        {
            "pc": 9077,
            "type": "tx_origin_used"
        },
        {
            "pc": 9107,
            "type": "tx_origin_used"
        },
        {
            "pc": 9137,
            "type": "tx_origin_used"
        }
    ]
}
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
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xf664ef7ab61209f2105186d34dda9a7df57758f6eddcd720eb1144caaaf8fd6e
call_targets: 0x00000000003b3cc22af3ae1eac0440bcee416b40
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf664ef7ab61209f2105186d34dda9a7df57758f6eddcd720eb1144caaaf8fd6e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x00000000003b3cc22af3ae1eac0440bcee416b40"
    ],
    "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": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 251,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 603,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 705,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 15,
    "guards_detected": [
        {
            "pc": 1006,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 1035,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 1185,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 1215,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 5986,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 6015,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 6045,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 7841,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 7870,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 7900,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 7930,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 7960,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 7990,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 8020,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 8050,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 8080,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 8110,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 8139,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 8929,
            "type": "tx_origin_used"
        },
        {
            "pc": 8958,
            "type": "tx_origin_used"
        },
        {
            "pc": 8988,
            "type": "tx_origin_used"
        },
        {
            "pc": 9018,
            "type": "tx_origin_used"
        },
        {
            "pc": 9048,
            "type": "tx_origin_used"
        },
        {
            "pc": 9078,
            "type": "tx_origin_used"
        },
        {
            "pc": 9108,
            "type": "tx_origin_used"
        },
        {
            "pc": 9138,
            "type": "tx_origin_used"
        },
        {
            "pc": 8928,
            "type": "tx_origin_used"
        },
        {
            "pc": 8957,
            "type": "tx_origin_used"
        },
        {
            "pc": 8987,
            "type": "tx_origin_used"
        },
        {
            "pc": 9017,
            "type": "tx_origin_used"
        },
        {
            "pc": 9047,
            "type": "tx_origin_used"
        },
        {
            "pc": 9077,
            "type": "tx_origin_used"
        },
        {
            "pc": 9107,
            "type": "tx_origin_used"
        },
        {
            "pc": 9137,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 15
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xf664ef7ab61209f2105186d34dda9a7df57758f6eddcd720eb1144caaaf8fd6e
call_targets: 0x00000000003b3cc22af3ae1eac0440bcee416b40
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf664ef7ab61209f2105186d34dda9a7df57758f6eddcd720eb1144caaaf8fd6e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x00000000003b3cc22af3ae1eac0440bcee416b40"
    ],
    "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": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 251,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 603,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 705,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 15,
    "guards_detected": [
        {
            "pc": 1006,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 1035,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 1185,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 1215,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 5986,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 6015,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 6045,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 7841,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 7870,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 7900,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 7930,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 7960,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 7990,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 8020,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 8050,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 8080,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 8110,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 8139,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 8929,
            "type": "tx_origin_used"
        },
        {
            "pc": 8958,
            "type": "tx_origin_used"
        },
        {
            "pc": 8988,
            "type": "tx_origin_used"
        },
        {
            "pc": 9018,
            "type": "tx_origin_used"
        },
        {
            "pc": 9048,
            "type": "tx_origin_used"
        },
        {
            "pc": 9078,
            "type": "tx_origin_used"
        },
        {
            "pc": 9108,
            "type": "tx_origin_used"
        },
        {
            "pc": 9138,
            "type": "tx_origin_used"
        },
        {
            "pc": 8928,
            "type": "tx_origin_used"
        },
        {
            "pc": 8957,
            "type": "tx_origin_used"
        },
        {
            "pc": 8987,
            "type": "tx_origin_used"
        },
        {
            "pc": 9017,
            "type": "tx_origin_used"
        },
        {
            "pc": 9047,
            "type": "tx_origin_used"
        },
        {
            "pc": 9077,
            "type": "tx_origin_used"
        },
        {
            "pc": 9107,
            "type": "tx_origin_used"
        },
        {
            "pc": 9137,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x482d7034c93f0cb88a32886089473b14a02e804cac865e65728d14d821882721
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 20,
    "trace_id": "0x482d7034c93f0cb88a32886089473b14a02e804cac865e65728d14d821882721",
    "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": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 1006,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 1035,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 1185,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 1215,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 5986,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 6015,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 6045,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 7841,
            "type": "msg_sender_eq_const",
            "value": 9.515804369106045e+47
        },
        {
            "pc": 7870,
            "type": "msg_sender_eq_const",
            "value": 2.2154641339059453e+47
        },
        {
            "pc": 7900,
            "type": "msg_sender_eq_const",
            "value": 1.0363008191737383e+48
        },
        {
            "pc": 7930,
            "type": "msg_sender_eq_const",
            "value": 1.0485613429077335e+48
        },
        {
            "pc": 7960,
            "type": "msg_sender_eq_const",
            "value": 4.5388034206692405e+47
        },
        {
            "pc": 7990,
            "type": "msg_sender_eq_const",
            "value": 5.213023738982092e+47
        },
        {
            "pc": 8020,
            "type": "msg_sender_eq_const",
            "value": 4.722498601284128e+47
        },
        {
            "pc": 8050,
            "type": "msg_sender_eq_const",
            "value": 3.758047990261806e+47
        },
        {
            "pc": 8080,
            "type": "msg_sender_eq_const",
            "value": 1.431741640259772e+48
        },
        {
            "pc": 8110,
            "type": "msg_sender_eq_const",
            "value": 4.607308642188697e+46
        },
        {
            "pc": 8139,
            "type": "msg_sender_eq_const",
            "value": 5.9420802249527606e+47
        },
        {
            "pc": 8929,
            "type": "tx_origin_used"
        },
        {
            "pc": 8958,
            "type": "tx_origin_used"
        },
        {
            "pc": 8988,
            "type": "tx_origin_used"
        },
        {
            "pc": 9018,
            "type": "tx_origin_used"
        },
        {
            "pc": 9048,
            "type": "tx_origin_used"
        },
        {
            "pc": 9078,
            "type": "tx_origin_used"
        },
        {
            "pc": 9108,
            "type": "tx_origin_used"
        },
        {
            "pc": 9138,
            "type": "tx_origin_used"
        },
        {
            "pc": 8928,
            "type": "tx_origin_used"
        },
        {
            "pc": 8957,
            "type": "tx_origin_used"
        },
        {
            "pc": 8987,
            "type": "tx_origin_used"
        },
        {
            "pc": 9017,
            "type": "tx_origin_used"
        },
        {
            "pc": 9047,
            "type": "tx_origin_used"
        },
        {
            "pc": 9077,
            "type": "tx_origin_used"
        },
        {
            "pc": 9107,
            "type": "tx_origin_used"
        },
        {
            "pc": 9137,
            "type": "tx_origin_used"
        }
    ],
    "selfdestruct_count": 1
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x482d7034c93f0cb88a32886089473b14a02e804cac865e65728d14d821882721
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 20,
    "trace_id": "0x482d7034c93f0cb88a32886089473b14a02e804cac865e65728d14d821882721",
    "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": "0x9d118770",
            "selector": "0x9d118770",
            "calldata_variants": [
                "0x9d118770",
                "0x9d1187700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa7b8e688",
            "selector": "0xa7b8e688",
            "calldata_variants": [
                "0xa7b8e688",
                "0xa7b8e6880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2925723",
            "selector": "0xd2925723",
            "calldata_variants": [
                "0xd2925723",
                "0xd29257230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd69ea74d",
            "selector": "0xd69ea74d",
            "calldata_variants": [
                "0xd69ea74d",
                "0xd69ea74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2768b07e",
            "selector": "0x2768b07e",
            "calldata_variants": [
                "0x2768b07e",
                "0x2768b07e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_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": 1
}
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": 19
}
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": 7
}