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

Analysis Run

ee30879d-f4f6-499a-b2bf-d4745076b528

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 1:46 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
Privileged selfdestruct sends balance to caller
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
30261 report.consolidate complete 1 / 1 3 months ago
73750 artifact.fetch complete 1 / 3 1 week ago
73751 tool.cast_disasm complete 1 / 3 1 week ago
73752 analysis.bundle complete 1 / 3 1 week ago
73753 capability.graph complete 1 / 3 1 week ago
73754 detector.run complete 1 / 3 1 week ago
73755 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
3
No findings?
no
Summary
Found a privileged selfdestruct path, a tx.origin-based authorization check, and an admin-gated delegatecall entry that enables arbitrary execution by whitelisted addresses.
View stderr
[codex:1502981] OpenAI Codex v0.77.0 (research preview)
[codex:1502981] --------
[codex:1502981] workdir: /tmp/codex-multi-7cwnzsf_
[codex:1502981] model: gpt-5.2-codex
[codex:1502981] provider: openai
[codex:1502981] approval: never
[codex:1502981] sandbox: read-only
[codex:1502981] reasoning effort: xhigh
[codex:1502981] reasoning summaries: auto
[codex:1502981] session id: 019b6297-f59a-7151-b6de-1f058b1cc1aa
[codex:1502981] --------
[codex:1502981] user
[codex:1502981] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1502981] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1502981] 
[codex:1502981] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1502981] 
[codex:1502981] Output MUST be valid JSON matching the provided schema.
[codex:1502981] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1502981] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1502981] 
[codex:1502981] Output constraints (IMPORTANT):
[codex:1502981] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1502981] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1502981] mcp startup: no servers
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc ls in /tmp/codex-multi-7cwnzsf_ succeeded in 5ms:
[codex:1502981] BYTECODE_BUNDLE.txt
[codex:1502981] codex-output-schema.json
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Opening file**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7cwnzsf_ succeeded in 6ms:
[codex:1502981] Runtime bytecode bundle for best-effort auditing.
[codex:1502981] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1502981] 
[codex:1502981] FILE: runtime_bytecode.hex
[codex:1502981] 0x6080604052600436106100955760003560e01c80637c04575b116100595780637c04575b1461036e578063a7b8e68814610383578063d292572314610396578063d69ea74d146103a9578063fa461e33146103d257610120565b80630cb7f13c146102f557806310c117ab1461031557806323a69e75146103285780632768b07e146103485780635c19a95c1461035b57610120565b36610120573373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21461011e5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561010457600080fd5b505af1158015610118573d6000803e3d6000fd5b50505050505b005b6101286103f2565b60008060405160016000823780519250600a600182375190506001600160b01b03198116156101db574261015d60014361230d565b40604051602001610178929190918252602082015260400190565b604051602081830303815290604052805190602001206001600160b01b031916816001600160b01b031916146101db5760405162461bcd60e51b815260206004820152600360248201526226222360e91b60448201526064015b60405180910390fd5b600160f91b6001600160f81b03198316908111159015806102095750600360f81b6001600160f81b03198416145b156102175761011e8161048b565b600560f81b6001600160f81b031984161161028f576102358161057e565b600160f91b6001600160f81b03198416148061025e5750600560f81b6001600160f81b03198416145b1561011e5760405141903480156108fc02916000818181858888f1935050505015801561011e573d6000803e3d6000fd5b6001600160f81b03198316600360f91b036102ac5761011e610644565b6102b46108b6565b6001600160f81b03198316600160fb1b0361011e5760405141903480156108fc02916000818181858888f1935050505015801561011e573d6000803e3d6000fd5b34801561030157600080fd5b5061011e610310366004612320565b610b01565b61011e6103233660046123b6565b610c12565b34801561033457600080fd5b5061011e61034336600461241c565b610d3c565b61011e6103563660046123b6565b610d4a565b61011e61036936600461246f565b610f08565b34801561037a57600080fd5b5061011e610f42565b61011e61039136600461249c565b610f55565b61011e6103a4366004612523565b611098565b6103bc6103b7366004612577565b6112bf565b6040516103c99190612609565b60405180910390f35b3480156103de57600080fd5b5061011e6103ed36600461241c565b6113cc565b61048973d8349e874934593c85eafa8e534b495d80848e4133148061042a5750732f5abb45c283a7e6661c205d38215b10ee6fb06433145b80610448575073c5798cd00276dbfdcd85bc751f5edace052e5cdd33145b80610466575073e00456d3af6e9b8715a9c29c88c1932983e064c133145b8061048457507371889d0c1101dc57045d08962e1a5c246662911233145b6113da565b565b600080600080600080604051603b600b8237600c8103519650601481015160f81c60021b601582015160e01c80821b945050506019810151955060398101519450603a8101519150506104dd81611478565b9250861561050857610503610484878585896001600160f81b03198a1615156000611496565b610575565b600080604051601660468237805160149091015190925090508661053e868a876001600160f81b03198b161515600088886114dc565b10156105725760405162461bcd60e51b815260206004820152600360248201526254413160e81b60448201526064016101d2565b50505b50505050505050565b6000806000806000604051604e600b8237600c81035195506008810151945060288101519350604881015160f81c60021b604982015160e01c80821b94505050604d81015191505085156105ee576105e9610484858786866001600160f81b03198716156000611496565b61063c565b60008060405160036059823780516001909101519092509050610639846106328989896001600160f81b03198916151560006106298a611478565b60601b896114dc565b10156113da565b50505b505050505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d820151166020880152603d81015160f81c60021b603e82015160e01c80821b60808b015250506042810151604088015260628101519250608281015191506083810151935060858101516060890152608781015160808801526001600160a01b03609b8201511660608801525061077f81611478565b6001600160a01b031660408801525082156107d3578061079f87876115c1565b10156105e95760405162461bcd60e51b815260206004820152600360248201526254543160e81b60448201526064016101d2565b856020015115610832576107fb86600001518760400151886080015185888a60000151611496565b61082d5760405162461bcd60e51b81526020600482015260036024820152622a2a1960e91b60448201526064016101d2565b610894565b81610860876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114dc565b10156108945760405162461bcd60e51b815260206004820152600360248201526254543360e81b60448201526064016101d2565b61063c610484866000015187602001518860400151858a60a001516000611496565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600080600080600060405160bb600b8237805160f81c6002600182180660208a015260018160011c16955060018160021c1696508060031c60a0890152506001600160a01b03600b8203511688526001600160a01b0360098201511687526001600160a01b03601d8201511660408901526001600160a01b03603182015116602088015260518101516080890152607181015193506091810151604088015260b181015160f81c60021b60b282015160e01c80821b9450505060b6810151915060998101516060890152609b8101516080880152506109f181611478565b6001600160a01b03166060870152508215610a455780610a1187876115c1565b10156105e95760405162461bcd60e51b815260206004820152600360248201526254543360e81b60448201526064016101d2565b856020015115610a9f57610a6d86600001518760400151886080015185888a60000151611496565b61082d5760405162461bcd60e51b815260206004820152600360248201526215150d60ea1b60448201526064016101d2565b81610acd876040015188600001518960800151888a600001518b6020015160601b8d6060015160f01b6114dc565b10156108945760405162461bcd60e51b815260206004820152600360248201526254543560e81b60448201526064016101d2565b610b096103f2565b8015610c0f57604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050604080516000808252602082019283905293503392508491610b949190612632565b60006040518083038185875af1925050503d8060008114610bd1576040519150601f19603f3d011682016040523d82523d6000602084013e610bd6565b606091505b5050905080610c0d5760405162461bcd60e51b8152602060048201526003602482015262524f5960e81b60448201526064016101d2565b505b33ff5b610c1a611768565b610c27602082018261264e565b6001600160b01b03191615610cc95742610c4260014361230d565b40604051602001610c5d929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610c8c9083018361264e565b6001600160b01b03191614610cc95760405162461bcd60e51b815260206004820152600360248201526246444560e81b60448201526064016101d2565b604051633095c05760e01b81526001600160a01b03851690633095c05790610cf790869086906004016126a1565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b50505050610d3681602001356117a4565b50505050565b610d36848484846001611912565b610d52611768565b610d5f602082018261264e565b6001600160b01b03191615610e015742610d7a60014361230d565b40604051602001610d95929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610dc49083018361264e565b6001600160b01b03191614610e015760405162461bcd60e51b815260206004820152600360248201526246445360e81b60448201526064016101d2565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7791906126bd565b9050610e9c73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2868460200135611d65565b604051633095c05760e01b81526001600160a01b03861690633095c05790610eca90879087906004016126a1565b600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b5050506000919091555050505050565b610f106103f2565b6040516024360380602483376000808284865af43d9150816000843e808015610f37578284f35b8284fd5b5050505050565b610f4a611e8f565b600160008190558055565b610f5d611e8f565b610f6a602086018661264e565b6001600160b01b0319161561100c5742610f8560014361230d565b40604051602001610fa0929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b03191690610fcf9087018761264e565b6001600160b01b0319161461100c5760405162461bcd60e51b81526020600482015260036024820152624e444560e81b60448201526064016101d2565b61101c604086016020870161246f565b6001600160a01b031663dcb698ab34868686866040518663ffffffff1660e01b815260040161104e94939291906126d6565b6000604051808303818588803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b505050505061108d8560400135611f60565b505060018055505050565b6110a0611e8f565b341580156110b057506001546001145b6110e25760405162461bcd60e51b8152602060048201526003602482015262272b2960e91b60448201526064016101d2565b6110ef602084018461264e565b6001600160b01b03191615611191574261110a60014361230d565b40604051602001611125929190918252602082015260400190565b60408051601f1981840301815291905280516020918201206001600160b01b031916906111549085018561264e565b6001600160b01b031916146111915760405162461bcd60e51b81526020600482015260036024820152624e445360e81b60448201526064016101d2565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa1580156111e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120791906126bd565b90506040840135156112455761124573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261123b604087016020880161246f565b8660400135611d65565b611255604085016020860161246f565b6001600160a01b03166307a1018e84846040518363ffffffff1660e01b81526004016112829291906126a1565b600060405180830381600087803b15801561129c57600080fd5b505af11580156112b0573d6000803e3d6000fd5b50505060019190915550505050565b60606112c9611e8f565b83156112ee576112ee73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28686611d65565b600080866001600160a01b031634868660405161130c929190612708565b60006040518083038185875af1925050503d8060008114611349576040519150601f19603f3d011682016040523d82523d6000602084013e61134e565b606091505b5091509150816113c25760448151101561138f5760405162461bcd60e51b815260206004820152600260248201526129a960f11b60448201526064016101d2565b600481019050808060200190518101906113a99190612718565b60405162461bcd60e51b81526004016101d29190612609565b9695505050505050565b610d36848484846000611912565b806114755760408051630570923880825263ae1247208201909252600090826020820163ae1247008036833701905050905060005b61141a8360016127cd565b811015610d365761142b814361230d565b6040805191406020830152016040516020818303038152906040528051906020012060001c828281518110611462576114626127e0565b602090810291909101015260010161140f565b50565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b92915050565b60006114a3868887612095565b156114cf5782156114c2576114bb84600089856120e2565b90506113c2565b6114bb60008589856120e2565b5060009695505050505050565b600060606000806114ec8b612140565b915091508015611542576040516001600160f01b0319861660208201526001600160601b0319871660228201526001600160f81b0319831660368201526037016040516020818303038152906040529250611586565b6040516001600160f01b0319861660208201526001600160601b0319808816602283015260608d901b166036820152604a0160405160208183030381529060405292505b6000806115968c8a8c8e89612155565b91509150896115a557816115a7565b805b6115b0906127f6565b9d9c50505050505050505050505050565b600060606000806115d58560200151612140565b9150915080156116865760208087015187516040808a01516080808c01516060808e0151928d01518d820151955197151560f81b988801989098526001600160601b031995811b8616602188015292831b8516603587015260498601526001600160f01b031960f091821b8116606987015295901b909416606b84015290921b909116606d8201526001600160f81b031983166081820152608201604051602081830303815290604052925061172b565b60208087015187516040808a01516080808c01516060808e0151928d01518d8201518e8a0151965198151560f81b998901999099526001600160601b031996821b8716602189015293811b8616603588015260498701919091526001600160f01b031960f092831b811660698801529290911b909116606b85015293841b8216606d84015290921b909116608182015260950160405160208183030381529060405292505b505060008061174a856000015160008760a00151886040015187612155565b915091508460a0015161175d578161175f565b805b6113c2906127f6565b610489736e6759b3ef49bab693127c9ea126eb6e549bc3d3331480610484575073ea35df26f76aae16bb7175695525d562efae138f33146113da565b34156117d85760405141903480156108fc02916000818181858888f193505050501580156117d6573d6000803e3d6000fd5b505b60005468056bc75e2d6310000081116118195760405162461bcd60e51b815260206004820152600360248201526205030360ec1b60448201526064016101d2565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa15801561186b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188f91906126bd565b90508261189c348361230d565b116118cf5760405162461bcd60e51b815260206004820152600360248201526250303160e81b60448201526064016101d2565b816118da348361230d565b1161190d5760405162461bcd60e51b815260206004820152600360248201526228181960e91b60448201526064016101d2565b505050565b61191a612220565b60008513806119295750600084135b61195b5760405162461bcd60e51b815260206004820152600360248201526205633360ec1b60448201526064016101d2565b81601681116119925760405162461bcd60e51b815260206004820152600360248201526256333160e81b60448201526064016101d2565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152602a821160008080808085611a0b57604051602a6084823761ffff601e820351169250600a810351935088601781146119fc57600a8201519550611a04565b601682015192505b5050611a87565b604051607560848237601f81035188526001600160a01b03600b8203511660208901526001600160a01b036009820151166040890152602981015160608901526049810151608089015261ffff602d820151169250604181015193508860628114611a7c5760558201519550611a84565b606182015192505b50505b6001600160a01b038416611aa157611a9e81611478565b93505b600080846001600160a01b0316866001600160a01b031610611ac4578486611ac7565b85855b915091508a611aed577307e610c722b66148d8c6b92967c99cd1ba8c7e6160621b611b06565b7341ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c960601b5b604080516001600160a01b03808616602083015284169181019190915262ffffff86166060820152608001604051602081830303815290604052805190602001208c611b72577fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54611b94565b7f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e25b6040516001600160f81b031960208201526001600160601b03199093166021840152603583019190915260558201526075016040516020818303038152906040528051906020012060001c965050505050506000808b13611bf55789611bf7565b8a5b9050336001600160a01b03841614611c375760405162461bcd60e51b81526020600482015260036024820152622b199960e91b60448201526064016101d2565b8315611d1c57845115611cad57611c7685602001518660400151876060015184866001600160a01b03168a604001516001600160a01b03161188611496565b611ca85760405162461bcd60e51b815260206004820152600360248201526205632360ec1b60448201526064016101d2565b611d58565b80611ce8866040015187602001518860600151866001600160a01b03168a604001516001600160a01b031610888860601b8c608001516114dc565b1015611ca85760405162461bcd60e51b815260206004820152600360248201526256333360e81b60448201526064016101d2565b611d27828483612095565b611d585760405162461bcd60e51b8152602060048201526002602482015261056360f41b60448201526064016101d2565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611dc19190612632565b6000604051808303816000865af19150503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b5091509150818015611e2d575080511580611e2d575080806020019051810190611e2d9190612812565b610f3b5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016101d2565b61048973d8349e874934593c85eafa8e534b495d80848e41331480611ec75750732f5abb45c283a7e6661c205d38215b10ee6fb06433145b80611ee5575073c5798cd00276dbfdcd85bc751f5edace052e5cdd33145b80611f03575073e00456d3af6e9b8715a9c29c88c1932983e064c133145b80611f215750736e6759b3ef49bab693127c9ea126eb6e549bc3d333145b80610466575073ea35df26f76aae16bb7175695525d562efae138f33148061048457507371889d0c1101dc57045d08962e1a5c246662911233146113da565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015611fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd691906126bd565b905034811161200d5760405162461bcd60e51b815260206004820152600360248201526205031360ec1b60448201526064016101d2565b612017348261230d565b6001549091508082116120525760405162461bcd60e51b815260206004820152600360248201526250313160e81b60448201526064016101d2565b600061205e828461230d565b9050838111610d365760405162461bcd60e51b815260206004820152600360248201526228189960e91b60448201526064016101d2565b6000816000036120a7575060016120db565b60405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526020816044836000895af19051935090505b9392505050565b60405163022c0d9f60e01b8152600481018590526024810184905260009030908380156121145784604483015261211b565b8260448301525b50608060648201526000608482015260208160a4836000895af1979650505050505050565b60008061214c836122b8565b91509150915091565b6000806000856121795773fffd8963efd1fc6a506488495d951d5263988d25612180565b6401000276a45b604051630251596160e31b815290915030908880156121a4578960048301526121ab565b8260048301525b5087602482015286604482015282606482015260a0608482015285518060a483015260005b818110156121ed57602081890181015160c48584010152016121d0565b506040828260c4018460008f5af190508061220757600080fd5b5080519450602081015193505050509550959350505050565b73d8349e874934593c85eafa8e534b495d80848e413214806122555750732f5abb45c283a7e6661c205d38215b10ee6fb06432145b80612273575073c5798cd00276dbfdcd85bc751f5edace052e5cdd32145b80612291575073e00456d3af6e9b8715a9c29c88c1932983e064c132145b806122af57507371889d0c1101dc57045d08962e1a5c246662911232145b61048957600080fd5b60008073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038416016122ec5750600092600192509050565b506000928392509050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611490576114906122f7565b60006020828403121561233257600080fd5b5035919050565b80356001600160a01b038116811461235057600080fd5b919050565b60008083601f84011261236757600080fd5b50813567ffffffffffffffff81111561237f57600080fd5b60208301915083602082850101111561239757600080fd5b9250929050565b6000604082840312156123b057600080fd5b50919050565b600080600080608085870312156123cc57600080fd5b6123d585612339565b9350602085013567ffffffffffffffff8111156123f157600080fd5b6123fd87828801612355565b90945092506124119050866040870161239e565b905092959194509250565b6000806000806060858703121561243257600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561245757600080fd5b61246387828801612355565b95989497509550505050565b60006020828403121561248157600080fd5b6120db82612339565b6000606082840312156123b057600080fd5b600080600080600060a086880312156124b457600080fd5b6124be878761248a565b9450606086013567ffffffffffffffff8111156124da57600080fd5b6124e688828901612355565b909550935050608086013567ffffffffffffffff81111561250657600080fd5b61251288828901612355565b969995985093965092949392505050565b60008060006080848603121561253857600080fd5b612542858561248a565b9250606084013567ffffffffffffffff81111561255e57600080fd5b61256a86828701612355565b9497909650939450505050565b6000806000806060858703121561258d57600080fd5b61259685612339565b935060208501359250604085013567ffffffffffffffff81111561245757600080fd5b60005b838110156125d45781810151838201526020016125bc565b50506000910152565b600081518084526125f58160208601602086016125b9565b601f01601f19169290920160200192915050565b6020815260006120db60208301846125dd565b634e487b7160e01b600052604160045260246000fd5b600082516126448184602087016125b9565b9190910192915050565b60006020828403121561266057600080fd5b81356001600160b01b0319811681146120db57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006126b5602083018486612678565b949350505050565b6000602082840312156126cf57600080fd5b5051919050565b6040815260006126ea604083018688612678565b82810360208401526126fd818587612678565b979650505050505050565b8183823760009101908152919050565b60006020828403121561272a57600080fd5b815167ffffffffffffffff81111561274157600080fd5b8201601f8101841361275257600080fd5b805167ffffffffffffffff81111561276c5761276c61261c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561279b5761279b61261c565b6040528181528282016020018610156127b357600080fd5b6127c48260208301602086016125b9565b95945050505050565b80820180821115611490576114906122f7565b634e487b7160e01b600052603260045260246000fd5b6000600160ff1b820161280b5761280b6122f7565b5060000390565b60006020828403121561282457600080fd5b815180151581146120db57600080fdfea264697066735822122051f9e0b3b242cefb39f1b2aae18fb612871bdae3ec99a1d54726886a2c7a414364736f6c634300081c0033
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing bytecode for delegatecall patterns**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] from textwrap import wrap
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] # extract hex after 'runtime_bytecode.hex' line
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] if not m:
[codex:1502981]     raise SystemExit('no hex')
[codex:1502981] hexstr=m.group(1)
[codex:1502981] # opcode table
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] # disassemble and record positions of DELEGATECALL
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] # find delegatecall positions
[codex:1502981] for pos, ins in res:
[codex:1502981]     if ins.startswith('DELEGATECALL'):
[codex:1502981]         # print 15 instructions before and after
[codex:1502981]         i=[j for j,(p,_) in enumerate(res) if p==pos][0]
[codex:1502981]         lo=max(0,i-15); hi=min(len(res), i+15)
[codex:1502981]         print('--- around', pos)
[codex:1502981]         for p,ins in res[lo:hi]:
[codex:1502981]             print(f'{p:04x}: {ins}')
[codex:1502981]         print()
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 47ms:
[codex:1502981] --- around 3876
[codex:1502981] 0f11: PUSH1 0x40
[codex:1502981] 0f13: MLOAD
[codex:1502981] 0f14: PUSH1 0x24
[codex:1502981] 0f16: CALLDATASIZE
[codex:1502981] 0f17: SUB
[codex:1502981] 0f18: DUP1
[codex:1502981] 0f19: PUSH1 0x24
[codex:1502981] 0f1b: DUP4
[codex:1502981] 0f1c: CALLDATACOPY
[codex:1502981] 0f1d: PUSH1 0x00
[codex:1502981] 0f1f: DUP1
[codex:1502981] 0f20: DUP3
[codex:1502981] 0f21: DUP5
[codex:1502981] 0f22: DUP7
[codex:1502981] 0f23: GAS
[codex:1502981] 0f24: DELEGATECALL
[codex:1502981] 0f25: RETURNDATASIZE
[codex:1502981] 0f26: SWAP2
[codex:1502981] 0f27: POP
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing delegatecall target setup**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map same as before
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] # disassemble to list
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] # print range around 0x0ee0-0x0f40
[codex:1502981] lo=0x0ee0; hi=0x0f60
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 32ms:
[codex:1502981] 0ee0: PUSH1 0x00
[codex:1502981] 0ee2: DUP1
[codex:1502981] 0ee3: REVERT
[codex:1502981] 0ee4: JUMPDEST
[codex:1502981] 0ee5: POP
[codex:1502981] 0ee6: GAS
[codex:1502981] 0ee7: CALL
[codex:1502981] 0ee8: ISZERO
[codex:1502981] 0ee9: DUP1
[codex:1502981] 0eea: ISZERO
[codex:1502981] 0eeb: PUSH2 0x0ef8
[codex:1502981] 0eee: JUMPI
[codex:1502981] 0eef: RETURNDATASIZE
[codex:1502981] 0ef0: PUSH1 0x00
[codex:1502981] 0ef2: DUP1
[codex:1502981] 0ef3: RETURNDATACOPY
[codex:1502981] 0ef4: RETURNDATASIZE
[codex:1502981] 0ef5: PUSH1 0x00
[codex:1502981] 0ef7: REVERT
[codex:1502981] 0ef8: JUMPDEST
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Inspecting jump destination and target**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x03c0; hi=0x0430
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 31ms:
[codex:1502981] 03c0: PUSH2 0x03c9
[codex:1502981] 03c3: SWAP2
[codex:1502981] 03c4: SWAP1
[codex:1502981] 03c5: PUSH2 0x2609
[codex:1502981] 03c8: JUMP
[codex:1502981] 03c9: JUMPDEST
[codex:1502981] 03ca: PUSH1 0x40
[codex:1502981] 03cc: MLOAD
[codex:1502981] 03cd: DUP1
[codex:1502981] 03ce: SWAP2
[codex:1502981] 03cf: SUB
[codex:1502981] 03d0: SWAP1
[codex:1502981] 03d1: RETURN
[codex:1502981] 03d2: JUMPDEST
[codex:1502981] 03d3: CALLVALUE
[codex:1502981] 03d4: DUP1
[codex:1502981] 03d5: ISZERO
[codex:1502981] 03d6: PUSH2 0x03de
[codex:1502981] 03d9: JUMPI
[codex:1502981] 03da: PUSH1 0x00
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Examining authorization codes**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x0400; hi=0x04b0
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 31ms:
[codex:1502981] 040b: CALLER
[codex:1502981] 040c: EQ
[codex:1502981] 040d: DUP1
[codex:1502981] 040e: PUSH2 0x042a
[codex:1502981] 0411: JUMPI
[codex:1502981] 0412: POP
[codex:1502981] 0413: PUSH20 0x2f5abb45c283a7e6661c205d38215b10ee6fb064
[codex:1502981] 0428: CALLER
[codex:1502981] 0429: EQ
[codex:1502981] 042a: JUMPDEST
[codex:1502981] 042b: DUP1
[codex:1502981] 042c: PUSH2 0x0448
[codex:1502981] 042f: JUMPI
[codex:1502981] 0430: POP
[codex:1502981] 0431: PUSH20 0xc5798cd00276dbfdcd85bc751f5edace052e5cdd
[codex:1502981] 0446: CALLER
[codex:1502981] 0447: EQ
[codex:1502981] 0448: JUMPDEST
[codex:1502981] 0449: DUP1
[codex:1502981] 044a: PUSH2 0x0466
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing access control flow**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x13b0; hi=0x1400
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 35ms:
[codex:1502981] 13b1: PUSH1 0xe5
[codex:1502981] 13b3: SHL
[codex:1502981] 13b4: DUP2
[codex:1502981] 13b5: MSTORE
[codex:1502981] 13b6: PUSH1 0x04
[codex:1502981] 13b8: ADD
[codex:1502981] 13b9: PUSH2 0x01d2
[codex:1502981] 13bc: SWAP2
[codex:1502981] 13bd: SWAP1
[codex:1502981] 13be: PUSH2 0x2609
[codex:1502981] 13c1: JUMP
[codex:1502981] 13c2: JUMPDEST
[codex:1502981] 13c3: SWAP7
[codex:1502981] 13c4: SWAP6
[codex:1502981] 13c5: POP
[codex:1502981] 13c6: POP
[codex:1502981] 13c7: POP
[codex:1502981] 13c8: POP
[codex:1502981] 13c9: POP
[codex:1502981] 13ca: POP
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing jump and authorization flow**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x1460; hi=0x1495
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 30ms:
[codex:1502981] 1461: JUMP
[codex:1502981] 1462: JUMPDEST
[codex:1502981] 1463: PUSH1 0x20
[codex:1502981] 1465: SWAP1
[codex:1502981] 1466: DUP2
[codex:1502981] 1467: MUL
[codex:1502981] 1468: SWAP2
[codex:1502981] 1469: SWAP1
[codex:1502981] 146a: SWAP2
[codex:1502981] 146b: ADD
[codex:1502981] 146c: ADD
[codex:1502981] 146d: MSTORE
[codex:1502981] 146e: PUSH1 0x01
[codex:1502981] 1470: ADD
[codex:1502981] 1471: PUSH2 0x140f
[codex:1502981] 1474: JUMP
[codex:1502981] 1475: JUMPDEST
[codex:1502981] 1476: POP
[codex:1502981] 1477: JUMP
[codex:1502981] 1478: JUMPDEST
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing EVM call flow and delegatecall setup**
[codex:1502981] 
[codex:1502981] I'm examining the EVM bytecode's internal function call pattern, especially how return addresses and jumps work in the access control flow. I'm carefully tracing how the delegatecall target address is set up, suspecting it's passed on the stack rather than loaded from storage, and exploring the function selector dispatch to understand how calldata is decoded to enable controlled delegatecalls. This detailed symbolic stack analysis will help clarify the contract's delegatecall mechanism and access restrictions.
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x0100; hi=0x0130
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 35ms:
[codex:1502981] 0100: PUSH1 0x00
[codex:1502981] 0102: DUP1
[codex:1502981] 0103: REVERT
[codex:1502981] 0104: JUMPDEST
[codex:1502981] 0105: POP
[codex:1502981] 0106: GAS
[codex:1502981] 0107: CALL
[codex:1502981] 0108: ISZERO
[codex:1502981] 0109: DUP1
[codex:1502981] 010a: ISZERO
[codex:1502981] 010b: PUSH2 0x0118
[codex:1502981] 010e: JUMPI
[codex:1502981] 010f: RETURNDATASIZE
[codex:1502981] 0110: PUSH1 0x00
[codex:1502981] 0112: DUP1
[codex:1502981] 0113: RETURNDATACOPY
[codex:1502981] 0114: RETURNDATASIZE
[codex:1502981] 0115: PUSH1 0x00
[codex:1502981] 0117: REVERT
[codex:1502981] 0118: JUMPDEST
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing delegatecall control flow**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x2440; hi=0x24b5
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 31ms:
[codex:1502981] 2440: DUP6
[codex:1502981] 2441: ADD
[codex:1502981] 2442: CALLDATALOAD
[codex:1502981] 2443: PUSH8 0xffffffffffffffff
[codex:1502981] 244c: DUP2
[codex:1502981] 244d: GT
[codex:1502981] 244e: ISZERO
[codex:1502981] 244f: PUSH2 0x2457
[codex:1502981] 2452: JUMPI
[codex:1502981] 2453: PUSH1 0x00
[codex:1502981] 2455: DUP1
[codex:1502981] 2456: REVERT
[codex:1502981] 2457: JUMPDEST
[codex:1502981] 2458: PUSH2 0x2463
[codex:1502981] 245b: DUP8
[codex:1502981] 245c: DUP3
[codex:1502981] 245d: DUP9
[codex:1502981] 245e: ADD
[codex:1502981] 245f: PUSH2 0x2355
[codex:1502981] 2462: JUMP
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing byte decoder behavior**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x2400; hi=0x2435
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 31ms:
[codex:1502981] 2400: POP
[codex:1502981] 2401: SWAP3
[codex:1502981] 2402: POP
[codex:1502981] 2403: PUSH2 0x2411
[codex:1502981] 2406: SWAP1
[codex:1502981] 2407: POP
[codex:1502981] 2408: DUP7
[codex:1502981] 2409: PUSH1 0x40
[codex:1502981] 240b: DUP8
[codex:1502981] 240c: ADD
[codex:1502981] 240d: PUSH2 0x239e
[codex:1502981] 2410: JUMP
[codex:1502981] 2411: JUMPDEST
[codex:1502981] 2412: SWAP1
[codex:1502981] 2413: POP
[codex:1502981] 2414: SWAP3
[codex:1502981] 2415: SWAP6
[codex:1502981] 2416: SWAP2
[codex:1502981] 2417: SWAP5
[codex:1502981] 2418: POP
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing disassembly for vulnerabilities**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] from collections import defaultdict
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] 
[codex:1502981] opcodes={
[codex:1502981] 0x32:'ORIGIN',0x33:'CALLER',0xf4:'DELEGATECALL',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] idx=0
[codex:1502981] positions=defaultdict(list)
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     if op in opcodes:
[codex:1502981]         positions[opcodes[op]].append(idx)
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         idx+=1+(op-0x5f)
[codex:1502981]     else:
[codex:1502981]         idx+=1
[codex:1502981] 
[codex:1502981] print('ORIGIN positions', positions['ORIGIN'][:10])
[codex:1502981] print('SELFDESTRUCT positions', positions['SELFDESTRUCT'][:10])
[codex:1502981] print('DELEGATECALL positions', positions['DELEGATECALL'][:10])
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 32ms:
[codex:1502981] ORIGIN positions [8758, 8787, 8817, 8847, 8877]
[codex:1502981] SELFDESTRUCT positions [3089]
[codex:1502981] DELEGATECALL positions [3876]
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Investigating SELFDESTRUCT instruction**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x0bf0; hi=0x0c30
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 32ms:
[codex:1502981] 0bf0: DUP3
[codex:1502981] 0bf1: ADD
[codex:1502981] 0bf2: MSTORE
[codex:1502981] 0bf3: PUSH1 0x03
[codex:1502981] 0bf5: PUSH1 0x24
[codex:1502981] 0bf7: DUP3
[codex:1502981] 0bf8: ADD
[codex:1502981] 0bf9: MSTORE
[codex:1502981] 0bfa: PUSH3 0x524f59
[codex:1502981] 0bfe: PUSH1 0xe8
[codex:1502981] 0c00: SHL
[codex:1502981] 0c01: PUSH1 0x44
[codex:1502981] 0c03: DUP3
[codex:1502981] 0c04: ADD
[codex:1502981] 0c05: MSTORE
[codex:1502981] 0c06: PUSH1 0x64
[codex:1502981] 0c08: ADD
[codex:1502981] 0c09: PUSH2 0x01d2
[codex:1502981] 0c0c: JUMP
[codex:1502981] 0c0d: JUMPDEST
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing SELFDESTRUCT context and control flow**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x0a80; hi=0x0c20
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 30ms:
[codex:1502981] 0a80: PUSH1 0x04
[codex:1502981] 0a82: DUP3
[codex:1502981] 0a83: ADD
[codex:1502981] 0a84: MSTORE
[codex:1502981] 0a85: PUSH1 0x03
[codex:1502981] 0a87: PUSH1 0x24
[codex:1502981] 0a89: DUP3
[codex:1502981] 0a8a: ADD
[codex:1502981] 0a8b: MSTORE
[codex:1502981] 0a8c: PUSH3 0x15150d
[codex:1502981] 0a90: PUSH1 0xea
[codex:1502981] 0a92: SHL
[codex:1502981] 0a93: PUSH1 0x44
[codex:1502981] 0a95: DUP3
[codex:1502981] 0a96: ADD
[codex:1502981] 0a97: MSTORE
[codex:1502981] 0a98: PUSH1 0x64
[codex:1502981] 0a9a: ADD
[codex:1502981] 0a9b: PUSH2 0x01d2
[codex:1502981] 0a9e: JUMP
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing selfdestruct gated by access control**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x2220; hi=0x2260
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 38ms:
[codex:1502981] 2220: JUMPDEST
[codex:1502981] 2221: PUSH20 0xd8349e874934593c85eafa8e534b495d80848e41
[codex:1502981] 2236: ORIGIN
[codex:1502981] 2237: EQ
[codex:1502981] 2238: DUP1
[codex:1502981] 2239: PUSH2 0x2255
[codex:1502981] 223c: JUMPI
[codex:1502981] 223d: POP
[codex:1502981] 223e: PUSH20 0x2f5abb45c283a7e6661c205d38215b10ee6fb064
[codex:1502981] 2253: ORIGIN
[codex:1502981] 2254: EQ
[codex:1502981] 2255: JUMPDEST
[codex:1502981] 2256: DUP1
[codex:1502981] 2257: PUSH2 0x2273
[codex:1502981] 225a: JUMPI
[codex:1502981] 225b: POP
[codex:1502981] 225c: PUSH20 0xc5798cd00276dbfdcd85bc751f5edace052e5cdd
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing ORIGIN usage for security**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x2260; hi=0x22c5
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 31ms:
[codex:1502981] 2271: ORIGIN
[codex:1502981] 2272: EQ
[codex:1502981] 2273: JUMPDEST
[codex:1502981] 2274: DUP1
[codex:1502981] 2275: PUSH2 0x2291
[codex:1502981] 2278: JUMPI
[codex:1502981] 2279: POP
[codex:1502981] 227a: PUSH20 0xe00456d3af6e9b8715a9c29c88c1932983e064c1
[codex:1502981] 228f: ORIGIN
[codex:1502981] 2290: EQ
[codex:1502981] 2291: JUMPDEST
[codex:1502981] 2292: DUP1
[codex:1502981] 2293: PUSH2 0x22af
[codex:1502981] 2296: JUMPI
[codex:1502981] 2297: POP
[codex:1502981] 2298: PUSH20 0x71889d0c1101dc57045d08962e1a5c2466629112
[codex:1502981] 22ad: ORIGIN
[codex:1502981] 22ae: EQ
[codex:1502981] 22af: JUMPDEST
[codex:1502981] 22b0: PUSH2 0x0489
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing access control and delegatecall patterns**
[codex:1502981] 
[codex:1502981] I'm examining how the contract uses `tx.origin` for access control, noting its security risks due to phishing potential, especially if admin EOAs are tricked. I’m also looking into selfdestruct and delegatecall functions restricted by a whitelist, recognizing these as centralization concerns and possible backdoors. To understand delegatecall’s target sourcing, I’m decoding function entries and calldata patterns to confirm parameters and control flow. This detailed investigation will clarify how access control and upgradeability risks manifest here.
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x0340; hi=0x0375
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 40ms:
[codex:1502981] 0342: JUMP
[codex:1502981] 0343: JUMPDEST
[codex:1502981] 0344: PUSH2 0x0d3c
[codex:1502981] 0347: JUMP
[codex:1502981] 0348: JUMPDEST
[codex:1502981] 0349: PUSH2 0x011e
[codex:1502981] 034c: PUSH2 0x0356
[codex:1502981] 034f: CALLDATASIZE
[codex:1502981] 0350: PUSH1 0x04
[codex:1502981] 0352: PUSH2 0x23b6
[codex:1502981] 0355: JUMP
[codex:1502981] 0356: JUMPDEST
[codex:1502981] 0357: PUSH2 0x0d4a
[codex:1502981] 035a: JUMP
[codex:1502981] 035b: JUMPDEST
[codex:1502981] 035c: PUSH2 0x011e
[codex:1502981] 035f: PUSH2 0x0369
[codex:1502981] 0362: CALLDATASIZE
[codex:1502981] 0363: PUSH1 0x04
[codex:1502981] 0365: PUSH2 0x246f
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing function argument decoding**
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x24b0; hi=0x2530
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 43ms:
[codex:1502981] 24b0: PUSH1 0x00
[codex:1502981] 24b2: DUP1
[codex:1502981] 24b3: REVERT
[codex:1502981] 24b4: JUMPDEST
[codex:1502981] 24b5: PUSH2 0x24be
[codex:1502981] 24b8: DUP8
[codex:1502981] 24b9: DUP8
[codex:1502981] 24ba: PUSH2 0x248a
[codex:1502981] 24bd: JUMP
[codex:1502981] 24be: JUMPDEST
[codex:1502981] 24bf: SWAP5
[codex:1502981] 24c0: POP
[codex:1502981] 24c1: PUSH1 0x60
[codex:1502981] 24c3: DUP7
[codex:1502981] 24c4: ADD
[codex:1502981] 24c5: CALLDATALOAD
[codex:1502981] 24c6: PUSH8 0xffffffffffffffff
[codex:1502981] 24cf: DUP2
[codex:1502981] 24d0: GT
[codex:1502981] 24d1: ISZERO
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Analyzing delegatecall, selfdestruct, and tx.origin patterns**
[codex:1502981] 
[codex:1502981] I'm inspecting how the contract uses delegatecall with calldata-derived targets, noting that the delegatecall target likely comes from the stack and thus user input, which allows arbitrary code execution via whitelisted callers. I'll also map out the presence of SELFDESTRUCT guarded by access control and pinpoint the explicit tx.origin-based authentication. For evidence, I'll tie findings to exact lines and offsets in BYTECODE_BUNDLE.txt, especially line 5 where the runtime bytecode resides, to correlate opcodes with these security considerations.
[codex:1502981] exec
[codex:1502981] /bin/bash -lc "python - <<'PY'
[codex:1502981] import re
[codex:1502981] path='/tmp/codex-multi-7cwnzsf_/BYTECODE_BUNDLE.txt'
[codex:1502981] with open(path) as f:
[codex:1502981]     data=f.read()
[codex:1502981] import re
[codex:1502981] m=re.search(r'runtime_bytecode\\.hex\\n0x([0-9a-fA-F]+)', data)
[codex:1502981] hexstr=m.group(1)
[codex:1502981] bytecode=bytes.fromhex(hexstr)
[codex:1502981] # opcode map
[codex:1502981] opcodes={
[codex:1502981] 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:1502981] 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:1502981] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1502981] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1502981] 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:1502981] 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:1502981] 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:1502981] 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:1502981] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1502981] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1502981] }
[codex:1502981] 
[codex:1502981] res=[]
[codex:1502981] idx=0
[codex:1502981] while idx<len(bytecode):
[codex:1502981]     op=bytecode[idx]
[codex:1502981]     name=opcodes.get(op, f'OP_{op:02x}')
[codex:1502981]     start=idx
[codex:1502981]     idx+=1
[codex:1502981]     if 0x60<=op<=0x7f:
[codex:1502981]         n=op-0x5f
[codex:1502981]         data=bytecode[idx:idx+n]
[codex:1502981]         idx+=n
[codex:1502981]         res.append((start, f'{name} 0x{data.hex()}'))
[codex:1502981]     else:
[codex:1502981]         res.append((start, name))
[codex:1502981] 
[codex:1502981] lo=0x1900; hi=0x1935
[codex:1502981] for p,ins in res:
[codex:1502981]     if lo<=p<=hi:
[codex:1502981]         print(f'{p:04x}: {ins}')
[codex:1502981] PY" in /tmp/codex-multi-7cwnzsf_ succeeded in 30ms:
[codex:1502981] 1900: SHL
[codex:1502981] 1901: PUSH1 0x44
[codex:1502981] 1903: DUP3
[codex:1502981] 1904: ADD
[codex:1502981] 1905: MSTORE
[codex:1502981] 1906: PUSH1 0x64
[codex:1502981] 1908: ADD
[codex:1502981] 1909: PUSH2 0x01d2
[codex:1502981] 190c: JUMP
[codex:1502981] 190d: JUMPDEST
[codex:1502981] 190e: POP
[codex:1502981] 190f: POP
[codex:1502981] 1910: POP
[codex:1502981] 1911: JUMP
[codex:1502981] 1912: JUMPDEST
[codex:1502981] 1913: PUSH2 0x191a
[codex:1502981] 1916: PUSH2 0x2220
[codex:1502981] 1919: JUMP
[codex:1502981] 191a: JUMPDEST
[codex:1502981] 191b: PUSH1 0x00
[codex:1502981] 
[codex:1502981] thinking
[codex:1502981] **Summarizing bytecode security findings**
[codex:1502981] 
[codex:1502981] I'll identify and explain three main issues supported by bytecode evidence: tx.origin-based authorization posing phishing risks; a privileged selfdestruct path letting whitelisted addresses destroy the contract and claim its ETH; and a delegatecall accessible to whitelisted callers allowing arbitrary code execution—essentially an upgradeability backdoor. I'll frame the findings per instructions with severity, categories, and locations in the bytecode bundle.
[codex:1502981] codex
[codex:1502981] {"no_findings":false,"summary":"Found a privileged selfdestruct path, a tx.origin-based authorization check, and an admin-gated delegatecall entry that enables arbitrary execution by whitelisted addresses.","findings":[{"severity":"high","category":"access_control","title":"Privileged selfdestruct sends balance to caller","exploit_scenario":"If any whitelisted address invokes the function path that reaches the zero-flag branch, the contract executes SELFDESTRUCT and transfers its ETH balance to the caller, permanently bricking the contract.","recommendation":"Remove SELFDESTRUCT or restrict it to a timelocked governance process; at minimum, require multi-step approvals and send funds to a safe treasury instead of msg.sender.","evidence":"Bytecode at offset 0x0c10 executes CALLER then SELFDESTRUCT. This path is reachable from the function at 0x0b01 which first runs the caller whitelist at 0x03f2 (CALLER compared against hard-coded addresses) before branching to 0x0c0f.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"medium","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"An attacker can deploy an intermediary contract and trick a whitelisted EOA into calling it; tx.origin remains the whitelisted address, bypassing the check and allowing privileged actions through the attacker-controlled contract.","recommendation":"Replace tx.origin with msg.sender and enforce explicit role-based access control.","evidence":"At offsets 0x2221–0x22af the code uses ORIGIN and compares it to hard-coded addresses, then jumps to privileged logic or reverts (JUMPI to 0x0489).","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"high","category":"upgradeability","title":"Whitelisted delegatecall enables arbitrary code execution","exploit_scenario":"A whitelisted address can invoke the delegatecall entry point with a chosen target and calldata, executing external code in this contract’s context to modify storage or drain funds.","recommendation":"If not intended, remove the delegatecall entry point. If intended, restrict targets to audited implementations and add governance/timelocks for upgrades.","evidence":"The function at 0x035b decodes calldata (0x246f) and jumps to 0x0f08, which runs the whitelist at 0x03f2 and then executes DELEGATECALL at 0x0f24 after copying calldata. No constant target address is pushed in this stub, so the target is supplied via decoded arguments.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:1502981] tokens used
[codex:1502981] 92,852
[codex:1502981] {"no_findings":false,"summary":"Found a privileged selfdestruct path, a tx.origin-based authorization check, and an admin-gated delegatecall entry that enables arbitrary execution by whitelisted addresses.","findings":[{"severity":"high","category":"access_control","title":"Privileged selfdestruct sends balance to caller","exploit_scenario":"If any whitelisted address invokes the function path that reaches the zero-flag branch, the contract executes SELFDESTRUCT and transfers its ETH balance to the caller, permanently bricking the contract.","recommendation":"Remove SELFDESTRUCT or restrict it to a timelocked governance process; at minimum, require multi-step approvals and send funds to a safe treasury instead of msg.sender.","evidence":"Bytecode at offset 0x0c10 executes CALLER then SELFDESTRUCT. This path is reachable from the function at 0x0b01 which first runs the caller whitelist at 0x03f2 (CALLER compared against hard-coded addresses) before branching to 0x0c0f.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"medium","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"An attacker can deploy an intermediary contract and trick a whitelisted EOA into calling it; tx.origin remains the whitelisted address, bypassing the check and allowing privileged actions through the attacker-controlled contract.","recommendation":"Replace tx.origin with msg.sender and enforce explicit role-based access control.","evidence":"At offsets 0x2221–0x22af the code uses ORIGIN and compares it to hard-coded addresses, then jumps to privileged logic or reverts (JUMPI to 0x0489).","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"high","category":"upgradeability","title":"Whitelisted delegatecall enables arbitrary code execution","exploit_scenario":"A whitelisted address can invoke the delegatecall entry point with a chosen target and calldata, executing external code in this contract’s context to modify storage or drain funds.","recommendation":"If not intended, remove the delegatecall entry point. If intended, restrict targets to audited implementations and add governance/timelocks for upgrades.","evidence":"The function at 0x035b decodes calldata (0x246f) and jumps to 0x0f08, which runs the whitelist at 0x03f2 and then executes DELEGATECALL at 0x0f24 after copying calldata. No constant target address is pushed in this stub, so the target is supplied via decoded arguments.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T01:46:23.398951+00:00",
        "returncode": 0
    },
    "summary": "Found a privileged selfdestruct path, a tx.origin-based authorization check, and an admin-gated delegatecall entry that enables arbitrary execution by whitelisted addresses.",
    "raw_final": {
        "summary": "Found a privileged selfdestruct path, a tx.origin-based authorization check, and an admin-gated delegatecall entry that enables arbitrary execution by whitelisted addresses.",
        "findings": [
            {
                "title": "Privileged selfdestruct sends balance to caller",
                "category": "access_control",
                "evidence": "Bytecode at offset 0x0c10 executes CALLER then SELFDESTRUCT. This path is reachable from the function at 0x0b01 which first runs the caller whitelist at 0x03f2 (CALLER compared against hard-coded addresses) before branching to 0x0c0f.",
                "severity": "high",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Remove SELFDESTRUCT or restrict it to a timelocked governance process; at minimum, require multi-step approvals and send funds to a safe treasury instead of msg.sender.",
                "exploit_scenario": "If any whitelisted address invokes the function path that reaches the zero-flag branch, the contract executes SELFDESTRUCT and transfers its ETH balance to the caller, permanently bricking the contract."
            },
            {
                "title": "Authorization uses tx.origin",
                "category": "auth",
                "evidence": "At offsets 0x2221\u20130x22af the code uses ORIGIN and compares it to hard-coded addresses, then jumps to privileged logic or reverts (JUMPI to 0x0489).",
                "severity": "medium",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "Replace tx.origin with msg.sender and enforce explicit role-based access control.",
                "exploit_scenario": "An attacker can deploy an intermediary contract and trick a whitelisted EOA into calling it; tx.origin remains the whitelisted address, bypassing the check and allowing privileged actions through the attacker-controlled contract."
            },
            {
                "title": "Whitelisted delegatecall enables arbitrary code execution",
                "category": "upgradeability",
                "evidence": "The function at 0x035b decodes calldata (0x246f) and jumps to 0x0f08, which runs the whitelist at 0x03f2 and then executes DELEGATECALL at 0x0f24 after copying calldata. No constant target address is pushed in this stub, so the target is supplied via decoded arguments.",
                "severity": "high",
                "locations": [
                    "BYTECODE_BUNDLE.txt:5"
                ],
                "recommendation": "If not intended, remove the delegatecall entry point. If intended, restrict targets to audited implementations and add governance/timelocks for upgrades.",
                "exploit_scenario": "A whitelisted address can invoke the delegatecall entry point with a chosen target and calldata, executing external code in this contract\u2019s context to modify storage or drain funds."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
20
EXT*/BALANCE
6
Total opcodes
6838
Flags
delegatecall_present selfdestruct_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 0x7c04575b
00000019: GT
0000001a: PUSH2 0x0059
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x7c04575b
00000024: EQ
00000025: PUSH2 0x036e
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa7b8e688
0000002f: EQ
00000030: PUSH2 0x0383
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd2925723
0000003a: EQ
0000003b: PUSH2 0x0396
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xd69ea74d
00000045: EQ
00000046: PUSH2 0x03a9
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfa461e33
00000050: EQ
00000051: PUSH2 0x03d2
00000054: JUMPI
00000055: PUSH2 0x0120
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0x0cb7f13c
00000060: EQ
00000061: PUSH2 0x02f5
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x10c117ab
0000006b: EQ
0000006c: PUSH2 0x0315
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x23a69e75
00000076: EQ
00000077: PUSH2 0x0328
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x2768b07e
00000081: EQ
00000082: PUSH2 0x0348
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x5c19a95c
0000008c: EQ
0000008d: PUSH2 0x035b
00000090: JUMPI
00000091: PUSH2 0x0120
00000094: JUMP
00000095: JUMPDEST
00000096: CALLDATASIZE
00000097: PUSH2 0x0120
0000009a: JUMPI
0000009b: CALLER
0000009c: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000000b1: EQ
000000b2: PUSH2 0x011e
000000b5: JUMPI
000000b6: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000000cb: PUSH1 0x01
000000cd: PUSH1 0x01
000000cf: PUSH1 0xa0
000000d1: SHL
000000d2: SUB
000000d3: AND
000000d4: PUSH4 0xd0e30db0
000000d9: CALLVALUE
000000da: PUSH1 0x40
000000dc: MLOAD
000000dd: DUP3
000000de: PUSH4 0xffffffff
000000e3: AND
000000e4: PUSH1 0xe0
000000e6: SHL
000000e7: DUP2
000000e8: MSTORE
000000e9: PUSH1 0x04
000000eb: ADD
000000ec: PUSH1 0x00
000000ee: PUSH1 0x40
000000f0: MLOAD
000000f1: DUP1
000000f2: DUP4
000000f3: SUB
000000f4: DUP2
000000f5: DUP6
000000f6: DUP9
000000f7: DUP1
000000f8: EXTCODESIZE
000000f9: ISZERO
000000fa: DUP1
000000fb: ISZERO
000000fc: PUSH2 0x0104
000000ff: JUMPI
00000100: PUSH1 0x00
00000102: DUP1
00000103: REVERT
00000104: JUMPDEST
00000105: POP
00000106: GAS
00000107: CALL
00000108: ISZERO
00000109: DUP1
0000010a: ISZERO
0000010b: PUSH2 0x0118
0000010e: JUMPI
0000010f: RETURNDATASIZE
00000110: PUSH1 0x00
00000112: DUP1
00000113: RETURNDATACOPY
00000114: RETURNDATASIZE
00000115: PUSH1 0x00
00000117: REVERT
00000118: JUMPDEST
00000119: POP
0000011a: POP
0000011b: POP
0000011c: POP
0000011d: POP
0000011e: JUMPDEST
0000011f: STOP
00000120: JUMPDEST
00000121: PUSH2 0x0128
00000124: PUSH2 0x03f2
00000127: JUMP
00000128: JUMPDEST
00000129: PUSH1 0x00
0000012b: DUP1
0000012c: PUSH1 0x40
0000012e: MLOAD
0000012f: PUSH1 0x01
00000131: PUSH1 0x00
00000133: DUP3
00000134: CALLDATACOPY
00000135: DUP1
00000136: MLOAD
00000137: SWAP3
00000138: POP
00000139: PUSH1 0x0a
0000013b: PUSH1 0x01
0000013d: DUP3
0000013e: CALLDATACOPY
0000013f: MLOAD
00000140: SWAP1
00000141: POP
00000142: PUSH1 0x01
00000144: PUSH1 0x01
00000146: PUSH1 0xb0
00000148: SHL
00000149: SUB
0000014a: NOT
0000014b: DUP2
0000014c: AND
0000014d: ISZERO
0000014e: PUSH2 0x01db
00000151: JUMPI
00000152: TIMESTAMP
00000153: PUSH2 0x015d
00000156: PUSH1 0x01
00000158: NUMBER
00000159: PUSH2 0x230d
0000015c: JUMP
0000015d: JUMPDEST
0000015e: BLOCKHASH
0000015f: PUSH1 0x40
00000161: MLOAD
00000162: PUSH1 0x20
00000164: ADD
00000165: PUSH2 0x0178
00000168: SWAP3
00000169: SWAP2
0000016a: SWAP1
0000016b: SWAP2
0000016c: DUP3
0000016d: MSTORE
0000016e: PUSH1 0x20
00000170: DUP3
00000171: ADD
00000172: MSTORE
00000173: PUSH1 0x40
00000175: ADD
00000176: SWAP1
00000177: JUMP
00000178: JUMPDEST
00000179: PUSH1 0x40
0000017b: MLOAD
0000017c: PUSH1 0x20
0000017e: DUP2
0000017f: DUP4
00000180: SUB
00000181: SUB
00000182: DUP2
00000183: MSTORE
00000184: SWAP1
00000185: PUSH1 0x40
00000187: MSTORE
00000188: DUP1
00000189: MLOAD
0000018a: SWAP1
0000018b: PUSH1 0x20
0000018d: ADD
0000018e: KECCAK256
0000018f: PUSH1 0x01
00000191: PUSH1 0x01
00000193: PUSH1 0xb0
00000195: SHL
00000196: SUB
00000197: NOT
00000198: AND
00000199: DUP2
0000019a: PUSH1 0x01
0000019c: PUSH1 0x01
0000019e: PUSH1 0xb0
000001a0: SHL
000001a1: SUB
000001a2: NOT
000001a3: AND
000001a4: EQ
000001a5: PUSH2 0x01db
000001a8: JUMPI
000001a9: PUSH1 0x40
000001ab: MLOAD
000001ac: PUSH3 0x461bcd
000001b0: PUSH1 0xe5
000001b2: SHL
000001b3: DUP2
000001b4: MSTORE
000001b5: PUSH1 0x20
000001b7: PUSH1 0x04
000001b9: DUP3
000001ba: ADD
000001bb: MSTORE
000001bc: PUSH1 0x03
000001be: PUSH1 0x24
000001c0: DUP3
000001c1: ADD
000001c2: MSTORE
000001c3: PUSH3 0x262223
000001c7: PUSH1 0xe9
000001c9: SHL
000001ca: PUSH1 0x44
000001cc: DUP3
000001cd: ADD
000001ce: MSTORE
000001cf: PUSH1 0x64
000001d1: ADD
000001d2: JUMPDEST
000001d3: PUSH1 0x40
000001d5: MLOAD
000001d6: DUP1
000001d7: SWAP2
000001d8: SUB
000001d9: SWAP1
000001da: REVERT
000001db: JUMPDEST
000001dc: PUSH1 0x01
000001de: PUSH1 0xf9
000001e0: SHL
000001e1: PUSH1 0x01
000001e3: PUSH1 0x01
000001e5: PUSH1 0xf8
000001e7: SHL
000001e8: SUB
000001e9: NOT
000001ea: DUP4
000001eb: AND
000001ec: SWAP1
000001ed: DUP2
000001ee: GT
000001ef: ISZERO
000001f0: SWAP1
000001f1: ISZERO
000001f2: DUP1
000001f3: PUSH2 0x0209
000001f6: JUMPI
000001f7: POP
000001f8: PUSH1 0x03
000001fa: PUSH1 0xf8
000001fc: SHL
000001fd: PUSH1 0x01
000001ff: PUSH1 0x01
00000201: PUSH1 0xf8
00000203: SHL
00000204: SUB
00000205: NOT
00000206: DUP5
00000207: AND
00000208: EQ
00000209: JUMPDEST
0000020a: ISZERO
0000020b: PUSH2 0x0217
0000020e: JUMPI
0000020f: PUSH2 0x011e
00000212: DUP2
00000213: PUSH2 0x048b
00000216: JUMP
00000217: JUMPDEST
00000218: PUSH1 0x05
0000021a: PUSH1 0xf8
0000021c: SHL
0000021d: PUSH1 0x01
0000021f: PUSH1 0x01
00000221: PUSH1 0xf8
00000223: SHL
00000224: SUB
00000225: NOT
00000226: DUP5
00000227: AND
00000228: GT
00000229: PUSH2 0x028f
0000022c: JUMPI
0000022d: PUSH2 0x0235
00000230: DUP2
00000231: PUSH2 0x057e
00000234: JUMP
00000235: JUMPDEST
00000236: PUSH1 0x01
00000238: PUSH1 0xf9
0000023a: SHL
0000023b: PUSH1 0x01
0000023d: PUSH1 0x01
0000023f: PUSH1 0xf8
00000241: SHL
00000242: SUB
00000243: NOT
00000244: DUP5
00000245: AND
00000246: EQ
00000247: DUP1
00000248: PUSH2 0x025e
0000024b: JUMPI
0000024c: POP
0000024d: PUSH1 0x05
0000024f: PUSH1 0xf8
00000251: SHL
00000252: PUSH1 0x01
00000254: PUSH1 0x01
00000256: PUSH1 0xf8
00000258: SHL
00000259: SUB
0000025a: NOT
0000025b: DUP5
0000025c: AND
0000025d: EQ
0000025e: JUMPDEST
0000025f: ISZERO
00000260: PUSH2 0x011e
00000263: JUMPI
00000264: PUSH1 0x40
00000266: MLOAD
00000267: COINBASE
00000268: SWAP1
00000269: CALLVALUE
0000026a: DUP1
0000026b: ISZERO
0000026c: PUSH2 0x08fc
0000026f: MUL
00000270: SWAP2
00000271: PUSH1 0x00
00000273: DUP2
00000274: DUP2
00000275: DUP2
00000276: DUP6
00000277: DUP9
00000278: DUP9
00000279: CALL
0000027a: SWAP4
0000027b: POP
0000027c: POP
0000027d: POP
0000027e: POP
0000027f: ISZERO
00000280: DUP1
00000281: ISZERO
00000282: PUSH2 0x011e
00000285: JUMPI
00000286: RETURNDATASIZE
00000287: PUSH1 0x00
00000289: DUP1
0000028a: RETURNDATACOPY
0000028b: RETURNDATASIZE
0000028c: PUSH1 0x00
0000028e: REVERT
0000028f: JUMPDEST
00000290: PUSH1 0x01
00000292: PUSH1 0x01
00000294: PUSH1 0xf8
00000296: SHL
00000297: SUB
00000298: NOT
00000299: DUP4
0000029a: AND
0000029b: PUSH1 0x03
0000029d: PUSH1 0xf9
0000029f: SHL
000002a0: SUB
000002a1: PUSH2 0x02ac
000002a4: JUMPI
000002a5: PUSH2 0x011e
000002a8: PUSH2 0x0644
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH2 0x02b4
000002b0: PUSH2 0x08b6
000002b3: JUMP
000002b4: JUMPDEST
000002b5: PUSH1 0x01
000002b7: PUSH1 0x01
000002b9: PUSH1 0xf8
000002bb: SHL
000002bc: SUB
000002bd: NOT
000002be: DUP4
000002bf: AND
000002c0: PUSH1 0x01
000002c2: PUSH1 0xfb
000002c4: SHL
000002c5: SUB
000002c6: PUSH2 0x011e
000002c9: JUMPI
000002ca: PUSH1 0x40
000002cc: MLOAD
000002cd: COINBASE
000002ce: SWAP1
000002cf: CALLVALUE
000002d0: DUP1
000002d1: ISZERO
000002d2: PUSH2 0x08fc
000002d5: MUL
000002d6: SWAP2
000002d7: PUSH1 0x00
000002d9: DUP2
000002da: DUP2
000002db: DUP2
000002dc: DUP6
000002dd: DUP9
000002de: DUP9
000002df: CALL
000002e0: SWAP4
000002e1: POP
000002e2: POP
000002e3: POP
000002e4: POP
000002e5: ISZERO
000002e6: DUP1
000002e7: ISZERO
000002e8: PUSH2 0x011e
000002eb: JUMPI
000002ec: RETURNDATASIZE
000002ed: PUSH1 0x00
000002ef: DUP1
000002f0: RETURNDATACOPY
000002f1: RETURNDATASIZE
000002f2: PUSH1 0x00
000002f4: REVERT
000002f5: JUMPDEST
000002f6: CALLVALUE
000002f7: DUP1
000002f8: ISZERO
000002f9: PUSH2 0x0301
000002fc: JUMPI
000002fd: PUSH1 0x00
000002ff: DUP1
00000300: REVERT
00000301: JUMPDEST
00000302: POP
00000303: PUSH2 0x011e
00000306: PUSH2 0x0310
00000309: CALLDATASIZE
0000030a: PUSH1 0x04
0000030c: PUSH2 0x2320
0000030f: JUMP
00000310: JUMPDEST
00000311: PUSH2 0x0b01
00000314: JUMP
00000315: JUMPDEST
00000316: PUSH2 0x011e
00000319: PUSH2 0x0323
0000031c: CALLDATASIZE
0000031d: PUSH1 0x04
0000031f: PUSH2 0x23b6
00000322: JUMP
00000323: JUMPDEST
00000324: PUSH2 0x0c12
00000327: JUMP
00000328: JUMPDEST
00000329: CALLVALUE
0000032a: DUP1
0000032b: ISZERO
0000032c: PUSH2 0x0334
0000032f: JUMPI
00000330: PUSH1 0x00
00000332: DUP1
00000333: REVERT
00000334: JUMPDEST
00000335: POP
00000336: PUSH2 0x011e
00000339: PUSH2 0x0343
0000033c: CALLDATASIZE
0000033d: PUSH1 0x04
0000033f: PUSH2 0x241c
00000342: JUMP
00000343: JUMPDEST
00000344: PUSH2 0x0d3c
00000347: JUMP
00000348: JUMPDEST
00000349: PUSH2 0x011e
0000034c: PUSH2 0x0356
0000034f: CALLDATASIZE
00000350: PUSH1 0x04
00000352: PUSH2 0x23b6
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH2 0x0d4a
0000035a: JUMP
0000035b: JUMPDEST
0000035c: PUSH2 0x011e
0000035f: PUSH2 0x0369
00000362: CALLDATASIZE
00000363: PUSH1 0x04
00000365: PUSH2 0x246f
00000368: JUMP
00000369: JUMPDEST
0000036a: PUSH2 0x0f08
0000036d: JUMP
0000036e: JUMPDEST
0000036f: CALLVALUE
00000370: DUP1
00000371: ISZERO
00000372: PUSH2 0x037a
00000375: JUMPI
00000376: PUSH1 0x00
00000378: DUP1
00000379: REVERT
0000037a: JUMPDEST
0000037b: POP
0000037c: PUSH2 0x011e
0000037f: PUSH2 0x0f42
00000382: JUMP
00000383: JUMPDEST
00000384: PUSH2 0x011e
00000387: PUSH2 0x0391
0000038a: CALLDATASIZE
0000038b: PUSH1 0x04
0000038d: PUSH2 0x249c
00000390: JUMP
00000391: JUMPDEST
00000392: PUSH2 0x0f55
00000395: JUMP
00000396: JUMPDEST
00000397: PUSH2 0x011e
0000039a: PUSH2 0x03a4
0000039d: CALLDATASIZE
0000039e: PUSH1 0x04
000003a0: PUSH2 0x2523
000003a3: JUMP
000003a4: JUMPDEST
000003a5: PUSH2 0x1098
000003a8: JUMP
000003a9: JUMPDEST
000003aa: PUSH2 0x03bc
000003ad: PUSH2 0x03b7
000003b0: CALLDATASIZE
000003b1: PUSH1 0x04
000003b3: PUSH2 0x2577
000003b6: JUMP
000003b7: JUMPDEST
000003b8: PUSH2 0x12bf
000003bb: JUMP
000003bc: JUMPDEST
000003bd: PUSH1 0x40
000003bf: MLOAD
000003c0: PUSH2 0x03c9
000003c3: SWAP2
000003c4: SWAP1
000003c5: PUSH2 0x2609
000003c8: JUMP
000003c9: JUMPDEST
000003ca: PUSH1 0x40
000003cc: MLOAD
000003cd: DUP1
000003ce: SWAP2
000003cf: SUB
000003d0: SWAP1
000003d1: RETURN
000003d2: JUMPDEST
000003d3: CALLVALUE
000003d4: DUP1
000003d5: ISZERO
000003d6: PUSH2 0x03de
000003d9: JUMPI
000003da: PUSH1 0x00
000003dc: DUP1
000003dd: REVERT
000003de: JUMPDEST
000003df: POP
000003e0: PUSH2 0x011e
000003e3: PUSH2 0x03ed
000003e6: CALLDATASIZE
000003e7: PUSH1 0x04
000003e9: PUSH2 0x241c
000003ec: JUMP
000003ed: JUMPDEST
000003ee: PUSH2 0x13cc
000003f1: JUMP
000003f2: JUMPDEST
000003f3: PUSH2 0x0489
000003f6: PUSH20 0xd8349e874934593c85eafa8e534b495d80848e41
0000040b: CALLER
0000040c: EQ
0000040d: DUP1
0000040e: PUSH2 0x042a
00000411: JUMPI
00000412: POP
00000413: PUSH20 0x2f5abb45c283a7e6661c205d38215b10ee6fb064
00000428: CALLER
00000429: EQ
0000042a: JUMPDEST
0000042b: DUP1
0000042c: PUSH2 0x0448
0000042f: JUMPI
00000430: POP
00000431: PUSH20 0xc5798cd00276dbfdcd85bc751f5edace052e5cdd
00000446: CALLER
00000447: EQ
00000448: JUMPDEST
00000449: DUP1
0000044a: PUSH2 0x0466
0000044d: JUMPI
0000044e: POP
0000044f: PUSH20 0xe00456d3af6e9b8715a9c29c88c1932983e064c1
00000464: CALLER
00000465: EQ
00000466: JUMPDEST
00000467: DUP1
00000468: PUSH2 0x0484
0000046b: JUMPI
0000046c: POP
0000046d: PUSH20 0x71889d0c1101dc57045d08962e1a5c2466629112
00000482: CALLER
00000483: EQ
00000484: JUMPDEST
00000485: PUSH2 0x13da
00000488: JUMP
00000489: JUMPDEST
0000048a: JUMP
0000048b: JUMPDEST
0000048c: PUSH1 0x00
0000048e: DUP1
0000048f: PUSH1 0x00
00000491: DUP1
00000492: PUSH1 0x00
00000494: DUP1
00000495: PUSH1 0x40
00000497: MLOAD
00000498: PUSH1 0x3b
0000049a: PUSH1 0x0b
0000049c: DUP3
0000049d: CALLDATACOPY
0000049e: PUSH1 0x0c
000004a0: DUP2
000004a1: SUB
000004a2: MLOAD
000004a3: SWAP7
000004a4: POP
000004a5: PUSH1 0x14
000004a7: DUP2
000004a8: ADD
000004a9: MLOAD
000004aa: PUSH1 0xf8
000004ac: SHR
000004ad: PUSH1 0x02
000004af: SHL
000004b0: PUSH1 0x15
000004b2: DUP3
000004b3: ADD
000004b4: MLOAD
000004b5: PUSH1 0xe0
000004b7: SHR
000004b8: DUP1
000004b9: DUP3
000004ba: SHL
000004bb: SWAP5
000004bc: POP
000004bd: POP
000004be: POP
000004bf: PUSH1 0x19
000004c1: DUP2
000004c2: ADD
000004c3: MLOAD
000004c4: SWAP6
000004c5: POP
000004c6: PUSH1 0x39
000004c8: DUP2
000004c9: ADD
000004ca: MLOAD
000004cb: SWAP5
000004cc: POP
000004cd: PUSH1 0x3a
000004cf: DUP2
000004d0: ADD
000004d1: MLOAD
000004d2: SWAP2
000004d3: POP
000004d4: POP
000004d5: PUSH2 0x04dd
000004d8: DUP2
000004d9: PUSH2 0x1478
000004dc: JUMP
000004dd: JUMPDEST
000004de: SWAP3
000004df: POP
000004e0: DUP7
000004e1: ISZERO
000004e2: PUSH2 0x0508
000004e5: JUMPI
000004e6: PUSH2 0x0503
000004e9: PUSH2 0x0484
000004ec: DUP8
000004ed: DUP6
000004ee: DUP6
000004ef: DUP10
000004f0: PUSH1 0x01
000004f2: PUSH1 0x01
000004f4: PUSH1 0xf8
000004f6: SHL
000004f7: SUB
000004f8: NOT
000004f9: DUP11
000004fa: AND
000004fb: ISZERO
000004fc: ISZERO
000004fd: PUSH1 0x00
000004ff: PUSH2 0x1496
00000502: JUMP
00000503: JUMPDEST
00000504: PUSH2 0x0575
00000507: JUMP
00000508: JUMPDEST
00000509: PUSH1 0x00
0000050b: DUP1
0000050c: PUSH1 0x40
0000050e: MLOAD
0000050f: PUSH1 0x16
00000511: PUSH1 0x46
00000513: DUP3
00000514: CALLDATACOPY
00000515: DUP1
00000516: MLOAD
00000517: PUSH1 0x14
00000519: SWAP1
0000051a: SWAP2
0000051b: ADD
0000051c: MLOAD
0000051d: SWAP1
0000051e: SWAP3
0000051f: POP
00000520: SWAP1
00000521: POP
00000522: DUP7
00000523: PUSH2 0x053e
00000526: DUP7
00000527: DUP11
00000528: DUP8
00000529: PUSH1 0x01
0000052b: PUSH1 0x01
0000052d: PUSH1 0xf8
0000052f: SHL
00000530: SUB
00000531: NOT
00000532: DUP12
00000533: AND
00000534: ISZERO
00000535: ISZERO
00000536: PUSH1 0x00
00000538: DUP9
00000539: DUP9
0000053a: PUSH2 0x14dc
0000053d: JUMP
0000053e: JUMPDEST
0000053f: LT
00000540: ISZERO
00000541: PUSH2 0x0572
00000544: JUMPI
00000545: PUSH1 0x40
00000547: MLOAD
00000548: PUSH3 0x461bcd
0000054c: PUSH1 0xe5
0000054e: SHL
0000054f: DUP2
00000550: MSTORE
00000551: PUSH1 0x20
00000553: PUSH1 0x04
00000555: DUP3
00000556: ADD
00000557: MSTORE
00000558: PUSH1 0x03
0000055a: PUSH1 0x24
0000055c: DUP3
0000055d: ADD
0000055e: MSTORE
0000055f: PUSH3 0x544131
00000563: PUSH1 0xe8
00000565: SHL
00000566: PUSH1 0x44
00000568: DUP3
00000569: ADD
0000056a: MSTORE
0000056b: PUSH1 0x64
0000056d: ADD
0000056e: PUSH2 0x01d2
00000571: JUMP
00000572: JUMPDEST
00000573: POP
00000574: POP
00000575: JUMPDEST
00000576: POP
00000577: POP
00000578: POP
00000579: POP
0000057a: POP
0000057b: POP
0000057c: POP
0000057d: JUMP
0000057e: JUMPDEST
0000057f: PUSH1 0x00
00000581: DUP1
00000582: PUSH1 0x00
00000584: DUP1
00000585: PUSH1 0x00
00000587: PUSH1 0x40
00000589: MLOAD
0000058a: PUSH1 0x4e
0000058c: PUSH1 0x0b
0000058e: DUP3
0000058f: CALLDATACOPY
00000590: PUSH1 0x0c
00000592: DUP2
00000593: SUB
00000594: MLOAD
00000595: SWAP6
00000596: POP
00000597: PUSH1 0x08
00000599: DUP2
0000059a: ADD
0000059b: MLOAD
0000059c: SWAP5
0000059d: POP
0000059e: PUSH1 0x28
000005a0: DUP2
000005a1: ADD
000005a2: MLOAD
000005a3: SWAP4
000005a4: POP
000005a5: PUSH1 0x48
000005a7: DUP2
000005a8: ADD
000005a9: MLOAD
000005aa: PUSH1 0xf8
000005ac: SHR
000005ad: PUSH1 0x02
000005af: SHL
000005b0: PUSH1 0x49
000005b2: DUP3
000005b3: ADD
000005b4: MLOAD
000005b5: PUSH1 0xe0
000005b7: SHR
000005b8: DUP1
000005b9: DUP3
000005ba: SHL
000005bb: SWAP5
000005bc: POP
000005bd: POP
000005be: POP
000005bf: PUSH1 0x4d
000005c1: DUP2
000005c2: ADD
000005c3: MLOAD
000005c4: SWAP2
000005c5: POP
000005c6: POP
000005c7: DUP6
000005c8: ISZERO
000005c9: PUSH2 0x05ee
000005cc: JUMPI
000005cd: PUSH2 0x05e9
000005d0: PUSH2 0x0484
000005d3: DUP6
000005d4: DUP8
000005d5: DUP7
000005d6: DUP7
000005d7: PUSH1 0x01
000005d9: PUSH1 0x01
000005db: PUSH1 0xf8
000005dd: SHL
000005de: SUB
000005df: NOT
000005e0: DUP8
000005e1: AND
000005e2: ISZERO
000005e3: PUSH1 0x00
000005e5: PUSH2 0x1496
000005e8: JUMP
000005e9: JUMPDEST
000005ea: PUSH2 0x063c
000005ed: JUMP
000005ee: JUMPDEST
000005ef: PUSH1 0x00
000005f1: DUP1
000005f2: PUSH1 0x40
000005f4: MLOAD
000005f5: PUSH1 0x03
000005f7: PUSH1 0x59
000005f9: DUP3
000005fa: CALLDATACOPY
000005fb: DUP1
000005fc: MLOAD
000005fd: PUSH1 0x01
000005ff: SWAP1
00000600: SWAP2
00000601: ADD
00000602: MLOAD
00000603: SWAP1
00000604: SWAP3
00000605: POP
00000606: SWAP1
00000607: POP
00000608: PUSH2 0x0639
0000060b: DUP5
0000060c: PUSH2 0x0632
0000060f: DUP10
00000610: DUP10
00000611: DUP10
00000612: PUSH1 0x01
00000614: PUSH1 0x01
00000616: PUSH1 0xf8
00000618: SHL
00000619: SUB
0000061a: NOT
0000061b: DUP10
0000061c: AND
0000061d: ISZERO
0000061e: ISZERO
0000061f: PUSH1 0x00
00000621: PUSH2 0x0629
00000624: DUP11
00000625: PUSH2 0x1478
00000628: JUMP
00000629: JUMPDEST
0000062a: PUSH1 0x60
0000062c: SHL
0000062d: DUP10
0000062e: PUSH2 0x14dc
00000631: JUMP
00000632: JUMPDEST
00000633: LT
00000634: ISZERO
00000635: PUSH2 0x13da
00000638: JUMP
00000639: JUMPDEST
0000063a: POP
0000063b: POP
0000063c: JUMPDEST
0000063d: POP
0000063e: POP
0000063f: POP
00000640: POP
00000641: POP
00000642: POP
00000643: JUMP
00000644: JUMPDEST
00000645: PUSH1 0x40
00000647: DUP1
00000648: MLOAD
00000649: PUSH1 0xa0
0000064b: DUP2
0000064c: ADD
0000064d: DUP3
0000064e: MSTORE
0000064f: PUSH1 0x00
00000651: DUP1
00000652: DUP3
00000653: MSTORE
00000654: PUSH1 0x20
00000656: DUP3
00000657: ADD
00000658: DUP2
00000659: SWAP1
0000065a: MSTORE
0000065b: SWAP2
0000065c: DUP2
0000065d: ADD
0000065e: DUP3
0000065f: SWAP1
00000660: MSTORE
00000661: PUSH1 0x60
00000663: DUP2
00000664: ADD
00000665: DUP3
00000666: SWAP1
00000667: MSTORE
00000668: PUSH1 0x80
0000066a: DUP2
0000066b: ADD
0000066c: SWAP2
0000066d: SWAP1
0000066e: SWAP2
0000066f: MSTORE
00000670: PUSH1 0x40
00000672: DUP1
00000673: MLOAD
00000674: PUSH1 0xc0
00000676: DUP2
00000677: ADD
00000678: DUP3
00000679: MSTORE
0000067a: PUSH1 0x00
0000067c: DUP1
0000067d: DUP3
0000067e: MSTORE
0000067f: PUSH1 0x20
00000681: DUP3
00000682: ADD
00000683: DUP2
00000684: SWAP1
00000685: MSTORE
00000686: SWAP2
00000687: DUP2
00000688: ADD
00000689: DUP3
0000068a: SWAP1
0000068b: MSTORE
0000068c: PUSH1 0x60
0000068e: DUP2
0000068f: ADD
00000690: DUP3
00000691: SWAP1
00000692: MSTORE
00000693: PUSH1 0x80
00000695: DUP2
00000696: ADD
00000697: DUP3
00000698: SWAP1
00000699: MSTORE
0000069a: PUSH1 0xa0
0000069c: DUP2
0000069d: ADD
0000069e: SWAP2
0000069f: SWAP1
000006a0: SWAP2
000006a1: MSTORE
000006a2: PUSH1 0x00
000006a4: DUP1
000006a5: PUSH1 0x00
000006a7: DUP1
000006a8: PUSH1 0x00
000006aa: PUSH1 0x40
000006ac: MLOAD
000006ad: PUSH1 0xbb
000006af: PUSH1 0x0b
000006b1: DUP3
000006b2: CALLDATACOPY
000006b3: DUP1
000006b4: MLOAD
000006b5: PUSH1 0xf8
000006b7: SHR
000006b8: PUSH1 0x02
000006ba: PUSH1 0x01
000006bc: DUP3
000006bd: XOR
000006be: MOD
000006bf: PUSH1 0x20
000006c1: DUP11
000006c2: ADD
000006c3: MSTORE
000006c4: PUSH1 0x01
000006c6: DUP2
000006c7: PUSH1 0x01
000006c9: SHR
000006ca: AND
000006cb: SWAP6
000006cc: POP
000006cd: PUSH1 0x01
000006cf: DUP2
000006d0: PUSH1 0x02
000006d2: SHR
000006d3: AND
000006d4: SWAP7
000006d5: POP
000006d6: DUP1
000006d7: PUSH1 0x03
000006d9: SHR
000006da: PUSH1 0xa0
000006dc: DUP10
000006dd: ADD
000006de: MSTORE
000006df: POP
000006e0: PUSH1 0x01
000006e2: PUSH1 0x01
000006e4: PUSH1 0xa0
000006e6: SHL
000006e7: SUB
000006e8: PUSH1 0x0b
000006ea: DUP3
000006eb: SUB
000006ec: MLOAD
000006ed: AND
000006ee: DUP9
000006ef: MSTORE
000006f0: PUSH1 0x01
000006f2: PUSH1 0x01
000006f4: PUSH1 0xa0
000006f6: SHL
000006f7: SUB
000006f8: PUSH1 0x09
000006fa: DUP3
000006fb: ADD
000006fc: MLOAD
000006fd: AND
000006fe: DUP8
000006ff: MSTORE
00000700: PUSH1 0x01
00000702: PUSH1 0x01
00000704: PUSH1 0xa0
00000706: SHL
00000707: SUB
00000708: PUSH1 0x1d
0000070a: DUP3
0000070b: ADD
0000070c: MLOAD
0000070d: AND
0000070e: PUSH1 0x20
00000710: DUP9
00000711: ADD
00000712: MSTORE
00000713: PUSH1 0x3d
00000715: DUP2
00000716: ADD
00000717: MLOAD
00000718: PUSH1 0xf8
0000071a: SHR
0000071b: PUSH1 0x02
0000071d: SHL
0000071e: PUSH1 0x3e
00000720: DUP3
00000721: ADD
00000722: MLOAD
00000723: PUSH1 0xe0
00000725: SHR
00000726: DUP1
00000727: DUP3
00000728: SHL
00000729: PUSH1 0x80
0000072b: DUP12
0000072c: ADD
0000072d: MSTORE
0000072e: POP
0000072f: POP
00000730: PUSH1 0x42
00000732: DUP2
00000733: ADD
00000734: MLOAD
00000735: PUSH1 0x40
00000737: DUP9
00000738: ADD
00000739: MSTORE
0000073a: PUSH1 0x62
0000073c: DUP2
0000073d: ADD
0000073e: MLOAD
0000073f: SWAP3
00000740: POP
00000741: PUSH1 0x82
00000743: DUP2
00000744: ADD
00000745: MLOAD
00000746: SWAP2
00000747: POP
00000748: PUSH1 0x83
0000074a: DUP2
0000074b: ADD
0000074c: MLOAD
0000074d: SWAP4
0000074e: POP
0000074f: PUSH1 0x85
00000751: DUP2
00000752: ADD
00000753: MLOAD
00000754: PUSH1 0x60
00000756: DUP10
00000757: ADD
00000758: MSTORE
00000759: PUSH1 0x87
0000075b: DUP2
0000075c: ADD
0000075d: MLOAD
0000075e: PUSH1 0x80
00000760: DUP9
00000761: ADD
00000762: MSTORE
00000763: PUSH1 0x01
00000765: PUSH1 0x01
00000767: PUSH1 0xa0
00000769: SHL
0000076a: SUB
0000076b: PUSH1 0x9b
0000076d: DUP3
0000076e: ADD
0000076f: MLOAD
00000770: AND
00000771: PUSH1 0x60
00000773: DUP9
00000774: ADD
00000775: MSTORE
00000776: POP
00000777: PUSH2 0x077f
0000077a: DUP2
0000077b: PUSH2 0x1478
0000077e: JUMP
0000077f: JUMPDEST
00000780: PUSH1 0x01
00000782: PUSH1 0x01
00000784: PUSH1 0xa0
00000786: SHL
00000787: SUB
00000788: AND
00000789: PUSH1 0x40
0000078b: DUP9
0000078c: ADD
0000078d: MSTORE
0000078e: POP
0000078f: DUP3
00000790: ISZERO
00000791: PUSH2 0x07d3
00000794: JUMPI
00000795: DUP1
00000796: PUSH2 0x079f
00000799: DUP8
0000079a: DUP8
0000079b: PUSH2 0x15c1
0000079e: JUMP
0000079f: JUMPDEST
000007a0: LT
000007a1: ISZERO
000007a2: PUSH2 0x05e9
000007a5: JUMPI
000007a6: PUSH1 0x40
000007a8: MLOAD
000007a9: PUSH3 0x461bcd
000007ad: PUSH1 0xe5
000007af: SHL
000007b0: DUP2
000007b1: MSTORE
000007b2: PUSH1 0x20
000007b4: PUSH1 0x04
000007b6: DUP3
000007b7: ADD
000007b8: MSTORE
000007b9: PUSH1 0x03
000007bb: PUSH1 0x24
000007bd: DUP3
000007be: ADD
000007bf: MSTORE
000007c0: PUSH3 0x545431
000007c4: PUSH1 0xe8
000007c6: SHL
000007c7: PUSH1 0x44
000007c9: DUP3
000007ca: ADD
000007cb: MSTORE
000007cc: PUSH1 0x64
000007ce: ADD
000007cf: PUSH2 0x01d2
000007d2: JUMP
000007d3: JUMPDEST
000007d4: DUP6
000007d5: PUSH1 0x20
000007d7: ADD
000007d8: MLOAD
000007d9: ISZERO
000007da: PUSH2 0x0832
000007dd: JUMPI
000007de: PUSH2 0x07fb
000007e1: DUP7
000007e2: PUSH1 0x00
000007e4: ADD
000007e5: MLOAD
000007e6: DUP8
000007e7: PUSH1 0x40
000007e9: ADD
000007ea: MLOAD
000007eb: DUP9
000007ec: PUSH1 0x80
000007ee: ADD
000007ef: MLOAD
000007f0: DUP6
000007f1: DUP9
000007f2: DUP11
000007f3: PUSH1 0x00
000007f5: ADD
000007f6: MLOAD
000007f7: PUSH2 0x1496
000007fa: JUMP
000007fb: JUMPDEST
000007fc: PUSH2 0x082d
000007ff: JUMPI
00000800: PUSH1 0x40
00000802: MLOAD
00000803: PUSH3 0x461bcd
00000807: PUSH1 0xe5
00000809: SHL
0000080a: DUP2
0000080b: MSTORE
0000080c: PUSH1 0x20
0000080e: PUSH1 0x04
00000810: DUP3
00000811: ADD
00000812: MSTORE
00000813: PUSH1 0x03
00000815: PUSH1 0x24
00000817: DUP3
00000818: ADD
00000819: MSTORE
0000081a: PUSH3 0x2a2a19
0000081e: PUSH1 0xe9
00000820: SHL
00000821: PUSH1 0x44
00000823: DUP3
00000824: ADD
00000825: MSTORE
00000826: PUSH1 0x64
00000828: ADD
00000829: PUSH2 0x01d2
0000082c: JUMP
0000082d: JUMPDEST
0000082e: PUSH2 0x0894
00000831: JUMP
00000832: JUMPDEST
00000833: DUP2
00000834: PUSH2 0x0860
00000837: DUP8
00000838: PUSH1 0x40
0000083a: ADD
0000083b: MLOAD
0000083c: DUP9
0000083d: PUSH1 0x00
0000083f: ADD
00000840: MLOAD
00000841: DUP10
00000842: PUSH1 0x80
00000844: ADD
00000845: MLOAD
00000846: DUP9
00000847: DUP11
00000848: PUSH1 0x00
0000084a: ADD
0000084b: MLOAD
0000084c: DUP12
0000084d: PUSH1 0x20
0000084f: ADD
00000850: MLOAD
00000851: PUSH1 0x60
00000853: SHL
00000854: DUP14
00000855: PUSH1 0x60
00000857: ADD
00000858: MLOAD
00000859: PUSH1 0xf0
0000085b: SHL
0000085c: PUSH2 0x14dc
0000085f: JUMP
00000860: JUMPDEST
00000861: LT
00000862: ISZERO
00000863: PUSH2 0x0894
00000866: JUMPI
00000867: PUSH1 0x40
00000869: MLOAD
0000086a: PUSH3 0x461bcd
0000086e: PUSH1 0xe5
00000870: SHL
00000871: DUP2
00000872: MSTORE
00000873: PUSH1 0x20
00000875: PUSH1 0x04
00000877: DUP3
00000878: ADD
00000879: MSTORE
0000087a: PUSH1 0x03
0000087c: PUSH1 0x24
0000087e: DUP3
0000087f: ADD
00000880: MSTORE
00000881: PUSH3 0x545433
00000885: PUSH1 0xe8
00000887: SHL
00000888: PUSH1 0x44
0000088a: DUP3
0000088b: ADD
0000088c: MSTORE
0000088d: PUSH1 0x64
0000088f: ADD
00000890: PUSH2 0x01d2
00000893: JUMP
00000894: JUMPDEST
00000895: PUSH2 0x063c
00000898: PUSH2 0x0484
0000089b: DUP7
0000089c: PUSH1 0x00
0000089e: ADD
0000089f: MLOAD
000008a0: DUP8
000008a1: PUSH1 0x20
000008a3: ADD
000008a4: MLOAD
000008a5: DUP9
000008a6: PUSH1 0x40
000008a8: ADD
000008a9: MLOAD
000008aa: DUP6
000008ab: DUP11
000008ac: PUSH1 0xa0
000008ae: ADD
000008af: MLOAD
000008b0: PUSH1 0x00
000008b2: PUSH2 0x1496
000008b5: JUMP
000008b6: JUMPDEST
000008b7: PUSH1 0x40
000008b9: DUP1
000008ba: MLOAD
000008bb: PUSH1 0xa0
000008bd: DUP2
000008be: ADD
000008bf: DUP3
000008c0: MSTORE
000008c1: PUSH1 0x00
000008c3: DUP1
000008c4: DUP3
000008c5: MSTORE
000008c6: PUSH1 0x20
000008c8: DUP3
000008c9: ADD
000008ca: DUP2
000008cb: SWAP1
000008cc: MSTORE
000008cd: SWAP2
000008ce: DUP2
000008cf: ADD
000008d0: DUP3
000008d1: SWAP1
000008d2: MSTORE
000008d3: PUSH1 0x60
000008d5: DUP2
000008d6: ADD
000008d7: DUP3
000008d8: SWAP1
000008d9: MSTORE
000008da: PUSH1 0x80
000008dc: DUP2
000008dd: ADD
000008de: SWAP2
000008df: SWAP1
000008e0: SWAP2
000008e1: MSTORE
000008e2: PUSH1 0x40
000008e4: DUP1
000008e5: MLOAD
000008e6: PUSH1 0xc0
000008e8: DUP2
000008e9: ADD
000008ea: DUP3
000008eb: MSTORE
000008ec: PUSH1 0x00
000008ee: DUP1
000008ef: DUP3
000008f0: MSTORE
000008f1: PUSH1 0x20
000008f3: DUP3
000008f4: ADD
000008f5: DUP2
000008f6: SWAP1
000008f7: MSTORE
000008f8: SWAP2
000008f9: DUP2
000008fa: ADD
000008fb: DUP3
000008fc: SWAP1
000008fd: MSTORE
000008fe: PUSH1 0x60
00000900: DUP2
00000901: ADD
00000902: DUP3
00000903: SWAP1
00000904: MSTORE
00000905: PUSH1 0x80
00000907: DUP2
00000908: ADD
00000909: DUP3
0000090a: SWAP1
0000090b: MSTORE
0000090c: PUSH1 0xa0
0000090e: DUP2
0000090f: ADD
00000910: SWAP2
00000911: SWAP1
00000912: SWAP2
00000913: MSTORE
00000914: PUSH1 0x00
00000916: DUP1
00000917: PUSH1 0x00
00000919: DUP1
0000091a: PUSH1 0x00
0000091c: PUSH1 0x40
0000091e: MLOAD
0000091f: PUSH1 0xbb
00000921: PUSH1 0x0b
00000923: DUP3
00000924: CALLDATACOPY
00000925: DUP1
00000926: MLOAD
00000927: PUSH1 0xf8
00000929: SHR
0000092a: PUSH1 0x02
0000092c: PUSH1 0x01
0000092e: DUP3
0000092f: XOR
00000930: MOD
00000931: PUSH1 0x20
00000933: DUP11
00000934: ADD
00000935: MSTORE
00000936: PUSH1 0x01
00000938: DUP2
00000939: PUSH1 0x01
0000093b: SHR
0000093c: AND
0000093d: SWAP6
0000093e: POP
0000093f: PUSH1 0x01
00000941: DUP2
00000942: PUSH1 0x02
00000944: SHR
00000945: AND
00000946: SWAP7
00000947: POP
00000948: DUP1
00000949: PUSH1 0x03
0000094b: SHR
0000094c: PUSH1 0xa0
0000094e: DUP10
0000094f: ADD
00000950: MSTORE
00000951: POP
00000952: PUSH1 0x01
00000954: PUSH1 0x01
00000956: PUSH1 0xa0
00000958: SHL
00000959: SUB
0000095a: PUSH1 0x0b
0000095c: DUP3
0000095d: SUB
0000095e: MLOAD
0000095f: AND
00000960: DUP9
00000961: MSTORE
00000962: PUSH1 0x01
00000964: PUSH1 0x01
00000966: PUSH1 0xa0
00000968: SHL
00000969: SUB
0000096a: PUSH1 0x09
0000096c: DUP3
0000096d: ADD
0000096e: MLOAD
0000096f: AND
00000970: DUP8
00000971: MSTORE
00000972: PUSH1 0x01
00000974: PUSH1 0x01
00000976: PUSH1 0xa0
00000978: SHL
00000979: SUB
0000097a: PUSH1 0x1d
0000097c: DUP3
0000097d: ADD
0000097e: MLOAD
0000097f: AND
00000980: PUSH1 0x40
00000982: DUP10
00000983: ADD
00000984: MSTORE
00000985: PUSH1 0x01
00000987: PUSH1 0x01
00000989: PUSH1 0xa0
0000098b: SHL
0000098c: SUB
0000098d: PUSH1 0x31
0000098f: DUP3
00000990: ADD
00000991: MLOAD
00000992: AND
00000993: PUSH1 0x20
00000995: DUP9
00000996: ADD
00000997: MSTORE
00000998: PUSH1 0x51
0000099a: DUP2
0000099b: ADD
0000099c: MLOAD
0000099d: PUSH1 0x80
0000099f: DUP10
000009a0: ADD
000009a1: MSTORE
000009a2: PUSH1 0x71
000009a4: DUP2
000009a5: ADD
000009a6: MLOAD
000009a7: SWAP4
000009a8: POP
000009a9: PUSH1 0x91
000009ab: DUP2
000009ac: ADD
000009ad: MLOAD
000009ae: PUSH1 0x40
000009b0: DUP9
000009b1: ADD
000009b2: MSTORE
000009b3: PUSH1 0xb1
000009b5: DUP2
000009b6: ADD
000009b7: MLOAD
000009b8: PUSH1 0xf8
000009ba: SHR
000009bb: PUSH1 0x02
000009bd: SHL
000009be: PUSH1 0xb2
000009c0: DUP3
000009c1: ADD
000009c2: MLOAD
000009c3: PUSH1 0xe0
000009c5: SHR
000009c6: DUP1
000009c7: DUP3
000009c8: SHL
000009c9: SWAP5
000009ca: POP
000009cb: POP
000009cc: POP
000009cd: PUSH1 0xb6
000009cf: DUP2
000009d0: ADD
000009d1: MLOAD
000009d2: SWAP2
000009d3: POP
000009d4: PUSH1 0x99
000009d6: DUP2
000009d7: ADD
000009d8: MLOAD
000009d9: PUSH1 0x60
000009db: DUP10
000009dc: ADD
000009dd: MSTORE
000009de: PUSH1 0x9b
000009e0: DUP2
000009e1: ADD
000009e2: MLOAD
000009e3: PUSH1 0x80
000009e5: DUP9
000009e6: ADD
000009e7: MSTORE
000009e8: POP
000009e9: PUSH2 0x09f1
000009ec: DUP2
000009ed: PUSH2 0x1478
000009f0: JUMP
000009f1: JUMPDEST
000009f2: PUSH1 0x01
000009f4: PUSH1 0x01
000009f6: PUSH1 0xa0
000009f8: SHL
000009f9: SUB
000009fa: AND
000009fb: PUSH1 0x60
000009fd: DUP8
000009fe: ADD
000009ff: MSTORE
00000a00: POP
00000a01: DUP3
00000a02: ISZERO
00000a03: PUSH2 0x0a45
00000a06: JUMPI
00000a07: DUP1
00000a08: PUSH2 0x0a11
00000a0b: DUP8
00000a0c: DUP8
00000a0d: PUSH2 0x15c1
00000a10: JUMP
00000a11: JUMPDEST
00000a12: LT
00000a13: ISZERO
00000a14: PUSH2 0x05e9
00000a17: JUMPI
00000a18: PUSH1 0x40
00000a1a: MLOAD
00000a1b: PUSH3 0x461bcd
00000a1f: PUSH1 0xe5
00000a21: SHL
00000a22: DUP2
00000a23: MSTORE
00000a24: PUSH1 0x20
00000a26: PUSH1 0x04
00000a28: DUP3
00000a29: ADD
00000a2a: MSTORE
00000a2b: PUSH1 0x03
00000a2d: PUSH1 0x24
00000a2f: DUP3
00000a30: ADD
00000a31: MSTORE
00000a32: PUSH3 0x545433
00000a36: PUSH1 0xe8
00000a38: SHL
00000a39: PUSH1 0x44
00000a3b: DUP3
00000a3c: ADD
00000a3d: MSTORE
00000a3e: PUSH1 0x64
00000a40: ADD
00000a41: PUSH2 0x01d2
00000a44: JUMP
00000a45: JUMPDEST
00000a46: DUP6
00000a47: PUSH1 0x20
00000a49: ADD
00000a4a: MLOAD
00000a4b: ISZERO
00000a4c: PUSH2 0x0a9f
00000a4f: JUMPI
00000a50: PUSH2 0x0a6d
00000a53: DUP7
00000a54: PUSH1 0x00
00000a56: ADD
00000a57: MLOAD
00000a58: DUP8
00000a59: PUSH1 0x40
00000a5b: ADD
00000a5c: MLOAD
00000a5d: DUP9
00000a5e: PUSH1 0x80
00000a60: ADD
00000a61: MLOAD
00000a62: DUP6
00000a63: DUP9
00000a64: DUP11
00000a65: PUSH1 0x00
00000a67: ADD
00000a68: MLOAD
00000a69: PUSH2 0x1496
00000a6c: JUMP
00000a6d: JUMPDEST
00000a6e: PUSH2 0x082d
00000a71: JUMPI
00000a72: PUSH1 0x40
00000a74: MLOAD
00000a75: PUSH3 0x461bcd
00000a79: PUSH1 0xe5
00000a7b: SHL
00000a7c: DUP2
00000a7d: MSTORE
00000a7e: PUSH1 0x20
00000a80: PUSH1 0x04
00000a82: DUP3
00000a83: ADD
00000a84: MSTORE
00000a85: PUSH1 0x03
00000a87: PUSH1 0x24
00000a89: DUP3
00000a8a: ADD
00000a8b: MSTORE
00000a8c: PUSH3 0x15150d
00000a90: PUSH1 0xea
00000a92: SHL
00000a93: PUSH1 0x44
00000a95: DUP3
00000a96: ADD
00000a97: MSTORE
00000a98: PUSH1 0x64
00000a9a: ADD
00000a9b: PUSH2 0x01d2
00000a9e: JUMP
00000a9f: JUMPDEST
00000aa0: DUP2
00000aa1: PUSH2 0x0acd
00000aa4: DUP8
00000aa5: PUSH1 0x40
00000aa7: ADD
00000aa8: MLOAD
00000aa9: DUP9
00000aaa: PUSH1 0x00
00000aac: ADD
00000aad: MLOAD
00000aae: DUP10
00000aaf: PUSH1 0x80
00000ab1: ADD
00000ab2: MLOAD
00000ab3: DUP9
00000ab4: DUP11
00000ab5: PUSH1 0x00
00000ab7: ADD
00000ab8: MLOAD
00000ab9: DUP12
00000aba: PUSH1 0x20
00000abc: ADD
00000abd: MLOAD
00000abe: PUSH1 0x60
00000ac0: SHL
00000ac1: DUP14
00000ac2: PUSH1 0x60
00000ac4: ADD
00000ac5: MLOAD
00000ac6: PUSH1 0xf0
00000ac8: SHL
00000ac9: PUSH2 0x14dc
00000acc: JUMP
00000acd: JUMPDEST
00000ace: LT
00000acf: ISZERO
00000ad0: PUSH2 0x0894
00000ad3: JUMPI
00000ad4: PUSH1 0x40
00000ad6: MLOAD
00000ad7: PUSH3 0x461bcd
00000adb: PUSH1 0xe5
00000add: SHL
00000ade: DUP2
00000adf: MSTORE
00000ae0: PUSH1 0x20
00000ae2: PUSH1 0x04
00000ae4: DUP3
00000ae5: ADD
00000ae6: MSTORE
00000ae7: PUSH1 0x03
00000ae9: PUSH1 0x24
00000aeb: DUP3
00000aec: ADD
00000aed: MSTORE
00000aee: PUSH3 0x545435
00000af2: PUSH1 0xe8
00000af4: SHL
00000af5: PUSH1 0x44
00000af7: DUP3
00000af8: ADD
00000af9: MSTORE
00000afa: PUSH1 0x64
00000afc: ADD
00000afd: PUSH2 0x01d2
00000b00: JUMP
00000b01: JUMPDEST
00000b02: PUSH2 0x0b09
00000b05: PUSH2 0x03f2
00000b08: JUMP
00000b09: JUMPDEST
00000b0a: DUP1
00000b0b: ISZERO
00000b0c: PUSH2 0x0c0f
00000b0f: JUMPI
00000b10: PUSH1 0x40
00000b12: MLOAD
00000b13: PUSH4 0x2e1a7d4d
00000b18: PUSH1 0xe0
00000b1a: SHL
00000b1b: DUP2
00000b1c: MSTORE
00000b1d: PUSH1 0x04
00000b1f: DUP2
00000b20: ADD
00000b21: DUP3
00000b22: SWAP1
00000b23: MSTORE
00000b24: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000b39: SWAP1
00000b3a: PUSH4 0x2e1a7d4d
00000b3f: SWAP1
00000b40: PUSH1 0x24
00000b42: ADD
00000b43: PUSH1 0x00
00000b45: PUSH1 0x40
00000b47: MLOAD
00000b48: DUP1
00000b49: DUP4
00000b4a: SUB
00000b4b: DUP2
00000b4c: PUSH1 0x00
00000b4e: DUP8
00000b4f: DUP1
00000b50: EXTCODESIZE
00000b51: ISZERO
00000b52: DUP1
00000b53: ISZERO
00000b54: PUSH2 0x0b5c
00000b57: JUMPI
00000b58: PUSH1 0x00
00000b5a: DUP1
00000b5b: REVERT
00000b5c: JUMPDEST
00000b5d: POP
00000b5e: GAS
00000b5f: CALL
00000b60: ISZERO
00000b61: DUP1
00000b62: ISZERO
00000b63: PUSH2 0x0b70
00000b66: JUMPI
00000b67: RETURNDATASIZE
00000b68: PUSH1 0x00
00000b6a: DUP1
00000b6b: RETURNDATACOPY
00000b6c: RETURNDATASIZE
00000b6d: PUSH1 0x00
00000b6f: REVERT
00000b70: JUMPDEST
00000b71: POP
00000b72: POP
00000b73: PUSH1 0x40
00000b75: DUP1
00000b76: MLOAD
00000b77: PUSH1 0x00
00000b79: DUP1
00000b7a: DUP3
00000b7b: MSTORE
00000b7c: PUSH1 0x20
00000b7e: DUP3
00000b7f: ADD
00000b80: SWAP3
00000b81: DUP4
00000b82: SWAP1
00000b83: MSTORE
00000b84: SWAP4
00000b85: POP
00000b86: CALLER
00000b87: SWAP3
00000b88: POP
00000b89: DUP5
00000b8a: SWAP2
00000b8b: PUSH2 0x0b94
00000b8e: SWAP2
00000b8f: SWAP1
00000b90: PUSH2 0x2632
00000b93: JUMP
00000b94: JUMPDEST
00000b95: PUSH1 0x00
00000b97: PUSH1 0x40
00000b99: MLOAD
00000b9a: DUP1
00000b9b: DUP4
00000b9c: SUB
00000b9d: DUP2
00000b9e: DUP6
00000b9f: DUP8
00000ba0: GAS
00000ba1: CALL
00000ba2: SWAP3
00000ba3: POP
00000ba4: POP
00000ba5: POP
00000ba6: RETURNDATASIZE
00000ba7: DUP1
00000ba8: PUSH1 0x00
00000baa: DUP2
00000bab: EQ
00000bac: PUSH2 0x0bd1
00000baf: JUMPI
00000bb0: PUSH1 0x40
00000bb2: MLOAD
00000bb3: SWAP2
00000bb4: POP
00000bb5: PUSH1 0x1f
00000bb7: NOT
00000bb8: PUSH1 0x3f
00000bba: RETURNDATASIZE
00000bbb: ADD
00000bbc: AND
00000bbd: DUP3
00000bbe: ADD
00000bbf: PUSH1 0x40
00000bc1: MSTORE
00000bc2: RETURNDATASIZE
00000bc3: DUP3
00000bc4: MSTORE
00000bc5: RETURNDATASIZE
00000bc6: PUSH1 0x00
00000bc8: PUSH1 0x20
00000bca: DUP5
00000bcb: ADD
00000bcc: RETURNDATACOPY
00000bcd: PUSH2 0x0bd6
00000bd0: JUMP
00000bd1: JUMPDEST
00000bd2: PUSH1 0x60
00000bd4: SWAP2
00000bd5: POP
00000bd6: JUMPDEST
00000bd7: POP
00000bd8: POP
00000bd9: SWAP1
00000bda: POP
00000bdb: DUP1
00000bdc: PUSH2 0x0c0d
00000bdf: JUMPI
00000be0: PUSH1 0x40
00000be2: MLOAD
00000be3: PUSH3 0x461bcd
00000be7: PUSH1 0xe5
00000be9: SHL
00000bea: DUP2
00000beb: MSTORE
00000bec: PUSH1 0x20
00000bee: PUSH1 0x04
00000bf0: DUP3
00000bf1: ADD
00000bf2: MSTORE
00000bf3: PUSH1 0x03
00000bf5: PUSH1 0x24
00000bf7: DUP3
00000bf8: ADD
00000bf9: MSTORE
00000bfa: PUSH3 0x524f59
00000bfe: PUSH1 0xe8
00000c00: SHL
00000c01: PUSH1 0x44
00000c03: DUP3
00000c04: ADD
00000c05: MSTORE
00000c06: PUSH1 0x64
00000c08: ADD
00000c09: PUSH2 0x01d2
00000c0c: JUMP
00000c0d: JUMPDEST
00000c0e: POP
00000c0f: JUMPDEST
00000c10: CALLER
00000c11: SELFDESTRUCT
00000c12: JUMPDEST
00000c13: PUSH2 0x0c1a
00000c16: PUSH2 0x1768
00000c19: JUMP
00000c1a: JUMPDEST
00000c1b: PUSH2 0x0c27
00000c1e: PUSH1 0x20
00000c20: DUP3
00000c21: ADD
00000c22: DUP3
00000c23: PUSH2 0x264e
00000c26: JUMP
00000c27: JUMPDEST
00000c28: PUSH1 0x01
00000c2a: PUSH1 0x01
00000c2c: PUSH1 0xb0
00000c2e: SHL
00000c2f: SUB
00000c30: NOT
00000c31: AND
00000c32: ISZERO
00000c33: PUSH2 0x0cc9
00000c36: JUMPI
00000c37: TIMESTAMP
00000c38: PUSH2 0x0c42
00000c3b: PUSH1 0x01
00000c3d: NUMBER
00000c3e: PUSH2 0x230d
00000c41: JUMP
00000c42: JUMPDEST
00000c43: BLOCKHASH
00000c44: PUSH1 0x40
00000c46: MLOAD
00000c47: PUSH1 0x20
00000c49: ADD
00000c4a: PUSH2 0x0c5d
00000c4d: SWAP3
00000c4e: SWAP2
00000c4f: SWAP1
00000c50: SWAP2
00000c51: DUP3
00000c52: MSTORE
00000c53: PUSH1 0x20
00000c55: DUP3
00000c56: ADD
00000c57: MSTORE
00000c58: PUSH1 0x40
00000c5a: ADD
00000c5b: SWAP1
00000c5c: JUMP
00000c5d: JUMPDEST
00000c5e: PUSH1 0x40
00000c60: DUP1
00000c61: MLOAD
00000c62: PUSH1 0x1f
00000c64: NOT
00000c65: DUP2
00000c66: DUP5
00000c67: SUB
00000c68: ADD
00000c69: DUP2
00000c6a: MSTORE
00000c6b: SWAP2
00000c6c: SWAP1
00000c6d: MSTORE
00000c6e: DUP1
00000c6f: MLOAD
00000c70: PUSH1 0x20
00000c72: SWAP2
00000c73: DUP3
00000c74: ADD
00000c75: KECCAK256
00000c76: PUSH1 0x01
00000c78: PUSH1 0x01
00000c7a: PUSH1 0xb0
00000c7c: SHL
00000c7d: SUB
00000c7e: NOT
00000c7f: AND
00000c80: SWAP1
00000c81: PUSH2 0x0c8c
00000c84: SWAP1
00000c85: DUP4
00000c86: ADD
00000c87: DUP4
00000c88: PUSH2 0x264e
00000c8b: JUMP
00000c8c: JUMPDEST
00000c8d: PUSH1 0x01
00000c8f: PUSH1 0x01
00000c91: PUSH1 0xb0
00000c93: SHL
00000c94: SUB
00000c95: NOT
00000c96: AND
00000c97: EQ
00000c98: PUSH2 0x0cc9
00000c9b: JUMPI
00000c9c: PUSH1 0x40
00000c9e: MLOAD
00000c9f: PUSH3 0x461bcd
00000ca3: PUSH1 0xe5
00000ca5: SHL
00000ca6: DUP2
00000ca7: MSTORE
00000ca8: PUSH1 0x20
00000caa: PUSH1 0x04
00000cac: DUP3
00000cad: ADD
00000cae: MSTORE
00000caf: PUSH1 0x03
00000cb1: PUSH1 0x24
00000cb3: DUP3
00000cb4: ADD
00000cb5: MSTORE
00000cb6: PUSH3 0x464445
00000cba: PUSH1 0xe8
00000cbc: SHL
00000cbd: PUSH1 0x44
00000cbf: DUP3
00000cc0: ADD
00000cc1: MSTORE
00000cc2: PUSH1 0x64
00000cc4: ADD
00000cc5: PUSH2 0x01d2
00000cc8: JUMP
00000cc9: JUMPDEST
00000cca: PUSH1 0x40
00000ccc: MLOAD
00000ccd: PUSH4 0x3095c057
00000cd2: PUSH1 0xe0
00000cd4: SHL
00000cd5: DUP2
00000cd6: MSTORE
00000cd7: PUSH1 0x01
00000cd9: PUSH1 0x01
00000cdb: PUSH1 0xa0
00000cdd: SHL
00000cde: SUB
00000cdf: DUP6
00000ce0: AND
00000ce1: SWAP1
00000ce2: PUSH4 0x3095c057
00000ce7: SWAP1
00000ce8: PUSH2 0x0cf7
00000ceb: SWAP1
00000cec: DUP7
00000ced: SWAP1
00000cee: DUP7
00000cef: SWAP1
00000cf0: PUSH1 0x04
00000cf2: ADD
00000cf3: PUSH2 0x26a1
00000cf6: JUMP
00000cf7: JUMPDEST
00000cf8: PUSH1 0x00
00000cfa: PUSH1 0x40
00000cfc: MLOAD
00000cfd: DUP1
00000cfe: DUP4
00000cff: SUB
00000d00: DUP2
00000d01: PUSH1 0x00
00000d03: DUP8
00000d04: DUP1
00000d05: EXTCODESIZE
00000d06: ISZERO
00000d07: DUP1
00000d08: ISZERO
00000d09: PUSH2 0x0d11
00000d0c: JUMPI
00000d0d: PUSH1 0x00
00000d0f: DUP1
00000d10: REVERT
00000d11: JUMPDEST
00000d12: POP
00000d13: GAS
00000d14: CALL
00000d15: ISZERO
00000d16: DUP1
00000d17: ISZERO
00000d18: PUSH2 0x0d25
00000d1b: JUMPI
00000d1c: RETURNDATASIZE
00000d1d: PUSH1 0x00
00000d1f: DUP1
00000d20: RETURNDATACOPY
00000d21: RETURNDATASIZE
00000d22: PUSH1 0x00
00000d24: REVERT
00000d25: JUMPDEST
00000d26: POP
00000d27: POP
00000d28: POP
00000d29: POP
00000d2a: PUSH2 0x0d36
00000d2d: DUP2
00000d2e: PUSH1 0x20
00000d30: ADD
00000d31: CALLDATALOAD
00000d32: PUSH2 0x17a4
00000d35: JUMP
00000d36: JUMPDEST
00000d37: POP
00000d38: POP
00000d39: POP
00000d3a: POP
00000d3b: JUMP
00000d3c: JUMPDEST
00000d3d: PUSH2 0x0d36
00000d40: DUP5
00000d41: DUP5
00000d42: DUP5
00000d43: DUP5
00000d44: PUSH1 0x01
00000d46: PUSH2 0x1912
00000d49: JUMP
00000d4a: JUMPDEST
00000d4b: PUSH2 0x0d52
00000d4e: PUSH2 0x1768
00000d51: JUMP
00000d52: JUMPDEST
00000d53: PUSH2 0x0d5f
00000d56: PUSH1 0x20
00000d58: DUP3
00000d59: ADD
00000d5a: DUP3
00000d5b: PUSH2 0x264e
00000d5e: JUMP
00000d5f: JUMPDEST
00000d60: PUSH1 0x01
00000d62: PUSH1 0x01
00000d64: PUSH1 0xb0
00000d66: SHL
00000d67: SUB
00000d68: NOT
00000d69: AND
00000d6a: ISZERO
00000d6b: PUSH2 0x0e01
00000d6e: JUMPI
00000d6f: TIMESTAMP
00000d70: PUSH2 0x0d7a
00000d73: PUSH1 0x01
00000d75: NUMBER
00000d76: PUSH2 0x230d
00000d79: JUMP
00000d7a: JUMPDEST
00000d7b: BLOCKHASH
00000d7c: PUSH1 0x40
00000d7e: MLOAD
00000d7f: PUSH1 0x20
00000d81: ADD
00000d82: PUSH2 0x0d95
00000d85: SWAP3
00000d86: SWAP2
00000d87: SWAP1
00000d88: SWAP2
00000d89: DUP3
00000d8a: MSTORE
00000d8b: PUSH1 0x20
00000d8d: DUP3
00000d8e: ADD
00000d8f: MSTORE
00000d90: PUSH1 0x40
00000d92: ADD
00000d93: SWAP1
00000d94: JUMP
00000d95: JUMPDEST
00000d96: PUSH1 0x40
00000d98: DUP1
00000d99: MLOAD
00000d9a: PUSH1 0x1f
00000d9c: NOT
00000d9d: DUP2
00000d9e: DUP5
00000d9f: SUB
00000da0: ADD
00000da1: DUP2
00000da2: MSTORE
00000da3: SWAP2
00000da4: SWAP1
00000da5: MSTORE
00000da6: DUP1
00000da7: MLOAD
00000da8: PUSH1 0x20
00000daa: SWAP2
00000dab: DUP3
00000dac: ADD
00000dad: KECCAK256
00000dae: PUSH1 0x01
00000db0: PUSH1 0x01
00000db2: PUSH1 0xb0
00000db4: SHL
00000db5: SUB
00000db6: NOT
00000db7: AND
00000db8: SWAP1
00000db9: PUSH2 0x0dc4
00000dbc: SWAP1
00000dbd: DUP4
00000dbe: ADD
00000dbf: DUP4
00000dc0: PUSH2 0x264e
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: PUSH1 0x01
00000dc7: PUSH1 0x01
00000dc9: PUSH1 0xb0
00000dcb: SHL
00000dcc: SUB
00000dcd: NOT
00000dce: AND
00000dcf: EQ
00000dd0: PUSH2 0x0e01
00000dd3: JUMPI
00000dd4: PUSH1 0x40
00000dd6: MLOAD
00000dd7: PUSH3 0x461bcd
00000ddb: PUSH1 0xe5
00000ddd: SHL
00000dde: DUP2
00000ddf: MSTORE
00000de0: PUSH1 0x20
00000de2: PUSH1 0x04
00000de4: DUP3
00000de5: ADD
00000de6: MSTORE
00000de7: PUSH1 0x03
00000de9: PUSH1 0x24
00000deb: DUP3
00000dec: ADD
00000ded: MSTORE
00000dee: PUSH3 0x464453
00000df2: PUSH1 0xe8
00000df4: SHL
00000df5: PUSH1 0x44
00000df7: DUP3
00000df8: ADD
00000df9: MSTORE
00000dfa: PUSH1 0x64
00000dfc: ADD
00000dfd: PUSH2 0x01d2
00000e00: JUMP
00000e01: JUMPDEST
00000e02: PUSH1 0x40
00000e04: MLOAD
00000e05: PUSH4 0x70a08231
00000e0a: PUSH1 0xe0
00000e0c: SHL
00000e0d: DUP2
00000e0e: MSTORE
00000e0f: ADDRESS
00000e10: PUSH1 0x04
00000e12: DUP3
00000e13: ADD
00000e14: MSTORE
00000e15: PUSH1 0x00
00000e17: SWAP1
00000e18: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000e2d: SWAP1
00000e2e: PUSH4 0x70a08231
00000e33: SWAP1
00000e34: PUSH1 0x24
00000e36: ADD
00000e37: PUSH1 0x20
00000e39: PUSH1 0x40
00000e3b: MLOAD
00000e3c: DUP1
00000e3d: DUP4
00000e3e: SUB
00000e3f: DUP2
00000e40: DUP7
00000e41: GAS
00000e42: STATICCALL
00000e43: ISZERO
00000e44: DUP1
00000e45: ISZERO
00000e46: PUSH2 0x0e53
00000e49: JUMPI
00000e4a: RETURNDATASIZE
00000e4b: PUSH1 0x00
00000e4d: DUP1
00000e4e: RETURNDATACOPY
00000e4f: RETURNDATASIZE
00000e50: PUSH1 0x00
00000e52: REVERT
00000e53: JUMPDEST
00000e54: POP
00000e55: POP
00000e56: POP
00000e57: POP
00000e58: PUSH1 0x40
00000e5a: MLOAD
00000e5b: RETURNDATASIZE
00000e5c: PUSH1 0x1f
00000e5e: NOT
00000e5f: PUSH1 0x1f
00000e61: DUP3
00000e62: ADD
00000e63: AND
00000e64: DUP3
00000e65: ADD
00000e66: DUP1
00000e67: PUSH1 0x40
00000e69: MSTORE
00000e6a: POP
00000e6b: DUP2
00000e6c: ADD
00000e6d: SWAP1
00000e6e: PUSH2 0x0e77
00000e71: SWAP2
00000e72: SWAP1
00000e73: PUSH2 0x26bd
00000e76: JUMP
00000e77: JUMPDEST
00000e78: SWAP1
00000e79: POP
00000e7a: PUSH2 0x0e9c
00000e7d: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000e92: DUP7
00000e93: DUP5
00000e94: PUSH1 0x20
00000e96: ADD
00000e97: CALLDATALOAD
00000e98: PUSH2 0x1d65
00000e9b: JUMP
00000e9c: JUMPDEST
00000e9d: PUSH1 0x40
00000e9f: MLOAD
00000ea0: PUSH4 0x3095c057
00000ea5: PUSH1 0xe0
00000ea7: SHL
00000ea8: DUP2
00000ea9: MSTORE
00000eaa: PUSH1 0x01
00000eac: PUSH1 0x01
00000eae: PUSH1 0xa0
00000eb0: SHL
00000eb1: SUB
00000eb2: DUP7
00000eb3: AND
00000eb4: SWAP1
00000eb5: PUSH4 0x3095c057
00000eba: SWAP1
00000ebb: PUSH2 0x0eca
00000ebe: SWAP1
00000ebf: DUP8
00000ec0: SWAP1
00000ec1: DUP8
00000ec2: SWAP1
00000ec3: PUSH1 0x04
00000ec5: ADD
00000ec6: PUSH2 0x26a1
00000ec9: JUMP
00000eca: JUMPDEST
00000ecb: PUSH1 0x00
00000ecd: PUSH1 0x40
00000ecf: MLOAD
00000ed0: DUP1
00000ed1: DUP4
00000ed2: SUB
00000ed3: DUP2
00000ed4: PUSH1 0x00
00000ed6: DUP8
00000ed7: DUP1
00000ed8: EXTCODESIZE
00000ed9: ISZERO
00000eda: DUP1
00000edb: ISZERO
00000edc: PUSH2 0x0ee4
00000edf: JUMPI
00000ee0: PUSH1 0x00
00000ee2: DUP1
00000ee3: REVERT
00000ee4: JUMPDEST
00000ee5: POP
00000ee6: GAS
00000ee7: CALL
00000ee8: ISZERO
00000ee9: DUP1
00000eea: ISZERO
00000eeb: PUSH2 0x0ef8
00000eee: JUMPI
00000eef: RETURNDATASIZE
00000ef0: PUSH1 0x00
00000ef2: DUP1
00000ef3: RETURNDATACOPY
00000ef4: RETURNDATASIZE
00000ef5: PUSH1 0x00
00000ef7: REVERT
00000ef8: JUMPDEST
00000ef9: POP
00000efa: POP
00000efb: POP
00000efc: PUSH1 0x00
00000efe: SWAP2
00000eff: SWAP1
00000f00: SWAP2
00000f01: SSTORE
00000f02: POP
00000f03: POP
00000f04: POP
00000f05: POP
00000f06: POP
00000f07: JUMP
00000f08: JUMPDEST
00000f09: PUSH2 0x0f10
00000f0c: PUSH2 0x03f2
00000f0f: JUMP
00000f10: JUMPDEST
00000f11: PUSH1 0x40
00000f13: MLOAD
00000f14: PUSH1 0x24
00000f16: CALLDATASIZE
00000f17: SUB
00000f18: DUP1
00000f19: PUSH1 0x24
00000f1b: DUP4
00000f1c: CALLDATACOPY
00000f1d: PUSH1 0x00
00000f1f: DUP1
00000f20: DUP3
00000f21: DUP5
00000f22: DUP7
00000f23: GAS
00000f24: DELEGATECALL
00000f25: RETURNDATASIZE
00000f26: SWAP2
00000f27: POP
00000f28: DUP2
00000f29: PUSH1 0x00
00000f2b: DUP5
00000f2c: RETURNDATACOPY
00000f2d: DUP1
00000f2e: DUP1
00000f2f: ISZERO
00000f30: PUSH2 0x0f37
00000f33: JUMPI
00000f34: DUP3
00000f35: DUP5
00000f36: RETURN
00000f37: JUMPDEST
00000f38: DUP3
00000f39: DUP5
00000f3a: REVERT
00000f3b: JUMPDEST
00000f3c: POP
00000f3d: POP
00000f3e: POP
00000f3f: POP
00000f40: POP
00000f41: JUMP
00000f42: JUMPDEST
00000f43: PUSH2 0x0f4a
00000f46: PUSH2 0x1e8f
00000f49: JUMP
00000f4a: JUMPDEST
00000f4b: PUSH1 0x01
00000f4d: PUSH1 0x00
00000f4f: DUP2
00000f50: SWAP1
00000f51: SSTORE
00000f52: DUP1
00000f53: SSTORE
00000f54: JUMP
00000f55: JUMPDEST
00000f56: PUSH2 0x0f5d
00000f59: PUSH2 0x1e8f
00000f5c: JUMP
00000f5d: JUMPDEST
00000f5e: PUSH2 0x0f6a
00000f61: PUSH1 0x20
00000f63: DUP7
00000f64: ADD
00000f65: DUP7
00000f66: PUSH2 0x264e
00000f69: JUMP
00000f6a: JUMPDEST
00000f6b: PUSH1 0x01
00000f6d: PUSH1 0x01
00000f6f: PUSH1 0xb0
00000f71: SHL
00000f72: SUB
00000f73: NOT
00000f74: AND
00000f75: ISZERO
00000f76: PUSH2 0x100c
00000f79: JUMPI
00000f7a: TIMESTAMP
00000f7b: PUSH2 0x0f85
00000f7e: PUSH1 0x01
00000f80: NUMBER
00000f81: PUSH2 0x230d
00000f84: JUMP
00000f85: JUMPDEST
00000f86: BLOCKHASH
00000f87: PUSH1 0x40
00000f89: MLOAD
00000f8a: PUSH1 0x20
00000f8c: ADD
00000f8d: PUSH2 0x0fa0
00000f90: SWAP3
00000f91: SWAP2
00000f92: SWAP1
00000f93: SWAP2
00000f94: DUP3
00000f95: MSTORE
00000f96: PUSH1 0x20
00000f98: DUP3
00000f99: ADD
00000f9a: MSTORE
00000f9b: PUSH1 0x40
00000f9d: ADD
00000f9e: SWAP1
00000f9f: JUMP
00000fa0: JUMPDEST
00000fa1: PUSH1 0x40
00000fa3: DUP1
00000fa4: MLOAD
00000fa5: PUSH1 0x1f
00000fa7: NOT
00000fa8: DUP2
00000fa9: DUP5
00000faa: SUB
00000fab: ADD
00000fac: DUP2
00000fad: MSTORE
00000fae: SWAP2
00000faf: SWAP1
00000fb0: MSTORE
00000fb1: DUP1
00000fb2: MLOAD
00000fb3: PUSH1 0x20
00000fb5: SWAP2
00000fb6: DUP3
00000fb7: ADD
00000fb8: KECCAK256
00000fb9: PUSH1 0x01
00000fbb: PUSH1 0x01
00000fbd: PUSH1 0xb0
00000fbf: SHL
00000fc0: SUB
00000fc1: NOT
00000fc2: AND
00000fc3: SWAP1
00000fc4: PUSH2 0x0fcf
00000fc7: SWAP1
00000fc8: DUP8
00000fc9: ADD
00000fca: DUP8
00000fcb: PUSH2 0x264e
00000fce: JUMP
00000fcf: JUMPDEST
00000fd0: PUSH1 0x01
00000fd2: PUSH1 0x01
00000fd4: PUSH1 0xb0
00000fd6: SHL
00000fd7: SUB
00000fd8: NOT
00000fd9: AND
00000fda: EQ
00000fdb: PUSH2 0x100c
00000fde: JUMPI
00000fdf: PUSH1 0x40
00000fe1: MLOAD
00000fe2: PUSH3 0x461bcd
00000fe6: PUSH1 0xe5
00000fe8: SHL
00000fe9: DUP2
00000fea: MSTORE
00000feb: PUSH1 0x20
00000fed: PUSH1 0x04
00000fef: DUP3
00000ff0: ADD
00000ff1: MSTORE
00000ff2: PUSH1 0x03
00000ff4: PUSH1 0x24
00000ff6: DUP3
00000ff7: ADD
00000ff8: MSTORE
00000ff9: PUSH3 0x4e4445
00000ffd: PUSH1 0xe8
00000fff: SHL
00001000: PUSH1 0x44
00001002: DUP3
00001003: ADD
00001004: MSTORE
00001005: PUSH1 0x64
00001007: ADD
00001008: PUSH2 0x01d2
0000100b: JUMP
0000100c: JUMPDEST
0000100d: PUSH2 0x101c
00001010: PUSH1 0x40
00001012: DUP7
00001013: ADD
00001014: PUSH1 0x20
00001016: DUP8
00001017: ADD
00001018: PUSH2 0x246f
0000101b: JUMP
0000101c: JUMPDEST
0000101d: PUSH1 0x01
0000101f: PUSH1 0x01
00001021: PUSH1 0xa0
00001023: SHL
00001024: SUB
00001025: AND
00001026: PUSH4 0xdcb698ab
0000102b: CALLVALUE
0000102c: DUP7
0000102d: DUP7
0000102e: DUP7
0000102f: DUP7
00001030: PUSH1 0x40
00001032: MLOAD
00001033: DUP7
00001034: PUSH4 0xffffffff
00001039: AND
0000103a: PUSH1 0xe0
0000103c: SHL
0000103d: DUP2
0000103e: MSTORE
0000103f: PUSH1 0x04
00001041: ADD
00001042: PUSH2 0x104e
00001045: SWAP5
00001046: SWAP4
00001047: SWAP3
00001048: SWAP2
00001049: SWAP1
0000104a: PUSH2 0x26d6
0000104d: JUMP
0000104e: JUMPDEST
0000104f: PUSH1 0x00
00001051: PUSH1 0x40
00001053: MLOAD
00001054: DUP1
00001055: DUP4
00001056: SUB
00001057: DUP2
00001058: DUP6
00001059: DUP9
0000105a: DUP1
0000105b: EXTCODESIZE
0000105c: ISZERO
0000105d: DUP1
0000105e: ISZERO
0000105f: PUSH2 0x1067
00001062: JUMPI
00001063: PUSH1 0x00
00001065: DUP1
00001066: REVERT
00001067: JUMPDEST
00001068: POP
00001069: GAS
0000106a: CALL
0000106b: ISZERO
0000106c: DUP1
0000106d: ISZERO
0000106e: PUSH2 0x107b
00001071: JUMPI
00001072: RETURNDATASIZE
00001073: PUSH1 0x00
00001075: DUP1
00001076: RETURNDATACOPY
00001077: RETURNDATASIZE
00001078: PUSH1 0x00
0000107a: REVERT
0000107b: JUMPDEST
0000107c: POP
0000107d: POP
0000107e: POP
0000107f: POP
00001080: POP
00001081: PUSH2 0x108d
00001084: DUP6
00001085: PUSH1 0x40
00001087: ADD
00001088: CALLDATALOAD
00001089: PUSH2 0x1f60
0000108c: JUMP
0000108d: JUMPDEST
0000108e: POP
0000108f: POP
00001090: PUSH1 0x01
00001092: DUP1
00001093: SSTORE
00001094: POP
00001095: POP
00001096: POP
00001097: JUMP
00001098: JUMPDEST
00001099: PUSH2 0x10a0
0000109c: PUSH2 0x1e8f
0000109f: JUMP
000010a0: JUMPDEST
000010a1: CALLVALUE
000010a2: ISZERO
000010a3: DUP1
000010a4: ISZERO
000010a5: PUSH2 0x10b0
000010a8: JUMPI
000010a9: POP
000010aa: PUSH1 0x01
000010ac: SLOAD
000010ad: PUSH1 0x01
000010af: EQ
000010b0: JUMPDEST
000010b1: PUSH2 0x10e2
000010b4: JUMPI
000010b5: PUSH1 0x40
000010b7: MLOAD
000010b8: PUSH3 0x461bcd
000010bc: PUSH1 0xe5
000010be: SHL
000010bf: DUP2
000010c0: MSTORE
000010c1: PUSH1 0x20
000010c3: PUSH1 0x04
000010c5: DUP3
000010c6: ADD
000010c7: MSTORE
000010c8: PUSH1 0x03
000010ca: PUSH1 0x24
000010cc: DUP3
000010cd: ADD
000010ce: MSTORE
000010cf: PUSH3 0x272b29
000010d3: PUSH1 0xe9
000010d5: SHL
000010d6: PUSH1 0x44
000010d8: DUP3
000010d9: ADD
000010da: MSTORE
000010db: PUSH1 0x64
000010dd: ADD
000010de: PUSH2 0x01d2
000010e1: JUMP
000010e2: JUMPDEST
000010e3: PUSH2 0x10ef
000010e6: PUSH1 0x20
000010e8: DUP5
000010e9: ADD
000010ea: DUP5
000010eb: PUSH2 0x264e
000010ee: JUMP
000010ef: JUMPDEST
000010f0: PUSH1 0x01
000010f2: PUSH1 0x01
000010f4: PUSH1 0xb0
000010f6: SHL
000010f7: SUB
000010f8: NOT
000010f9: AND
000010fa: ISZERO
000010fb: PUSH2 0x1191
000010fe: JUMPI
000010ff: TIMESTAMP
00001100: PUSH2 0x110a
00001103: PUSH1 0x01
00001105: NUMBER
00001106: PUSH2 0x230d
00001109: JUMP
0000110a: JUMPDEST
0000110b: BLOCKHASH
0000110c: PUSH1 0x40
0000110e: MLOAD
0000110f: PUSH1 0x20
00001111: ADD
00001112: PUSH2 0x1125
00001115: SWAP3
00001116: SWAP2
00001117: SWAP1
00001118: SWAP2
00001119: DUP3
0000111a: MSTORE
0000111b: PUSH1 0x20
0000111d: DUP3
0000111e: ADD
0000111f: MSTORE
00001120: PUSH1 0x40
00001122: ADD
00001123: SWAP1
00001124: JUMP
00001125: JUMPDEST
00001126: PUSH1 0x40
00001128: DUP1
00001129: MLOAD
0000112a: PUSH1 0x1f
0000112c: NOT
0000112d: DUP2
0000112e: DUP5
0000112f: SUB
00001130: ADD
00001131: DUP2
00001132: MSTORE
00001133: SWAP2
00001134: SWAP1
00001135: MSTORE
00001136: DUP1
00001137: MLOAD
00001138: PUSH1 0x20
0000113a: SWAP2
0000113b: DUP3
0000113c: ADD
0000113d: KECCAK256
0000113e: PUSH1 0x01
00001140: PUSH1 0x01
00001142: PUSH1 0xb0
00001144: SHL
00001145: SUB
00001146: NOT
00001147: AND
00001148: SWAP1
00001149: PUSH2 0x1154
0000114c: SWAP1
0000114d: DUP6
0000114e: ADD
0000114f: DUP6
00001150: PUSH2 0x264e
00001153: JUMP
00001154: JUMPDEST
00001155: PUSH1 0x01
00001157: PUSH1 0x01
00001159: PUSH1 0xb0
0000115b: SHL
0000115c: SUB
0000115d: NOT
0000115e: AND
0000115f: EQ
00001160: PUSH2 0x1191
00001163: JUMPI
00001164: PUSH1 0x40
00001166: MLOAD
00001167: PUSH3 0x461bcd
0000116b: PUSH1 0xe5
0000116d: SHL
0000116e: DUP2
0000116f: MSTORE
00001170: PUSH1 0x20
00001172: PUSH1 0x04
00001174: DUP3
00001175: ADD
00001176: MSTORE
00001177: PUSH1 0x03
00001179: PUSH1 0x24
0000117b: DUP3
0000117c: ADD
0000117d: MSTORE
0000117e: PUSH3 0x4e4453
00001182: PUSH1 0xe8
00001184: SHL
00001185: PUSH1 0x44
00001187: DUP3
00001188: ADD
00001189: MSTORE
0000118a: PUSH1 0x64
0000118c: ADD
0000118d: PUSH2 0x01d2
00001190: JUMP
00001191: JUMPDEST
00001192: PUSH1 0x40
00001194: MLOAD
00001195: PUSH4 0x70a08231
0000119a: PUSH1 0xe0
0000119c: SHL
0000119d: DUP2
0000119e: MSTORE
0000119f: ADDRESS
000011a0: PUSH1 0x04
000011a2: DUP3
000011a3: ADD
000011a4: MSTORE
000011a5: PUSH1 0x00
000011a7: SWAP1
000011a8: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000011bd: SWAP1
000011be: PUSH4 0x70a08231
000011c3: SWAP1
000011c4: PUSH1 0x24
000011c6: ADD
000011c7: PUSH1 0x20
000011c9: PUSH1 0x40
000011cb: MLOAD
000011cc: DUP1
000011cd: DUP4
000011ce: SUB
000011cf: DUP2
000011d0: DUP7
000011d1: GAS
000011d2: STATICCALL
000011d3: ISZERO
000011d4: DUP1
000011d5: ISZERO
000011d6: PUSH2 0x11e3
000011d9: JUMPI
000011da: RETURNDATASIZE
000011db: PUSH1 0x00
000011dd: DUP1
000011de: RETURNDATACOPY
000011df: RETURNDATASIZE
000011e0: PUSH1 0x00
000011e2: REVERT
000011e3: JUMPDEST
000011e4: POP
000011e5: POP
000011e6: POP
000011e7: POP
000011e8: PUSH1 0x40
000011ea: MLOAD
000011eb: RETURNDATASIZE
000011ec: PUSH1 0x1f
000011ee: NOT
000011ef: PUSH1 0x1f
000011f1: DUP3
000011f2: ADD
000011f3: AND
000011f4: DUP3
000011f5: ADD
000011f6: DUP1
000011f7: PUSH1 0x40
000011f9: MSTORE
000011fa: POP
000011fb: DUP2
000011fc: ADD
000011fd: SWAP1
000011fe: PUSH2 0x1207
00001201: SWAP2
00001202: SWAP1
00001203: PUSH2 0x26bd
00001206: JUMP
00001207: JUMPDEST
00001208: SWAP1
00001209: POP
0000120a: PUSH1 0x40
0000120c: DUP5
0000120d: ADD
0000120e: CALLDATALOAD
0000120f: ISZERO
00001210: PUSH2 0x1245
00001213: JUMPI
00001214: PUSH2 0x1245
00001217: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
0000122c: PUSH2 0x123b
0000122f: PUSH1 0x40
00001231: DUP8
00001232: ADD
00001233: PUSH1 0x20
00001235: DUP9
00001236: ADD
00001237: PUSH2 0x246f
0000123a: JUMP
0000123b: JUMPDEST
0000123c: DUP7
0000123d: PUSH1 0x40
0000123f: ADD
00001240: CALLDATALOAD
00001241: PUSH2 0x1d65
00001244: JUMP
00001245: JUMPDEST
00001246: PUSH2 0x1255
00001249: PUSH1 0x40
0000124b: DUP6
0000124c: ADD
0000124d: PUSH1 0x20
0000124f: DUP7
00001250: ADD
00001251: PUSH2 0x246f
00001254: JUMP
00001255: JUMPDEST
00001256: PUSH1 0x01
00001258: PUSH1 0x01
0000125a: PUSH1 0xa0
0000125c: SHL
0000125d: SUB
0000125e: AND
0000125f: PUSH4 0x07a1018e
00001264: DUP5
00001265: DUP5
00001266: PUSH1 0x40
00001268: MLOAD
00001269: DUP4
0000126a: PUSH4 0xffffffff
0000126f: AND
00001270: PUSH1 0xe0
00001272: SHL
00001273: DUP2
00001274: MSTORE
00001275: PUSH1 0x04
00001277: ADD
00001278: PUSH2 0x1282
0000127b: SWAP3
0000127c: SWAP2
0000127d: SWAP1
0000127e: PUSH2 0x26a1
00001281: JUMP
00001282: JUMPDEST
00001283: PUSH1 0x00
00001285: PUSH1 0x40
00001287: MLOAD
00001288: DUP1
00001289: DUP4
0000128a: SUB
0000128b: DUP2
0000128c: PUSH1 0x00
0000128e: DUP8
0000128f: DUP1
00001290: EXTCODESIZE
00001291: ISZERO
00001292: DUP1
00001293: ISZERO
00001294: PUSH2 0x129c
00001297: JUMPI
00001298: PUSH1 0x00
0000129a: DUP1
0000129b: REVERT
0000129c: JUMPDEST
0000129d: POP
0000129e: GAS
0000129f: CALL
000012a0: ISZERO
000012a1: DUP1
000012a2: ISZERO
000012a3: PUSH2 0x12b0
000012a6: JUMPI
000012a7: RETURNDATASIZE
000012a8: PUSH1 0x00
000012aa: DUP1
000012ab: RETURNDATACOPY
000012ac: RETURNDATASIZE
000012ad: PUSH1 0x00
000012af: REVERT
000012b0: JUMPDEST
000012b1: POP
000012b2: POP
000012b3: POP
000012b4: PUSH1 0x01
000012b6: SWAP2
000012b7: SWAP1
000012b8: SWAP2
000012b9: SSTORE
000012ba: POP
000012bb: POP
000012bc: POP
000012bd: POP
000012be: JUMP
000012bf: JUMPDEST
000012c0: PUSH1 0x60
000012c2: PUSH2 0x12c9
000012c5: PUSH2 0x1e8f
000012c8: JUMP
000012c9: JUMPDEST
000012ca: DUP4
000012cb: ISZERO
000012cc: PUSH2 0x12ee
000012cf: JUMPI
000012d0: PUSH2 0x12ee
000012d3: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000012e8: DUP7
000012e9: DUP7
000012ea: PUSH2 0x1d65
000012ed: JUMP
000012ee: JUMPDEST
000012ef: PUSH1 0x00
000012f1: DUP1
000012f2: DUP7
000012f3: PUSH1 0x01
000012f5: PUSH1 0x01
000012f7: PUSH1 0xa0
000012f9: SHL
000012fa: SUB
000012fb: AND
000012fc: CALLVALUE
000012fd: DUP7
000012fe: DUP7
000012ff: PUSH1 0x40
00001301: MLOAD
00001302: PUSH2 0x130c
00001305: SWAP3
00001306: SWAP2
00001307: SWAP1
00001308: PUSH2 0x2708
0000130b: JUMP
0000130c: JUMPDEST
0000130d: PUSH1 0x00
0000130f: PUSH1 0x40
00001311: MLOAD
00001312: DUP1
00001313: DUP4
00001314: SUB
00001315: DUP2
00001316: DUP6
00001317: DUP8
00001318: GAS
00001319: CALL
0000131a: SWAP3
0000131b: POP
0000131c: POP
0000131d: POP
0000131e: RETURNDATASIZE
0000131f: DUP1
00001320: PUSH1 0x00
00001322: DUP2
00001323: EQ
00001324: PUSH2 0x1349
00001327: JUMPI
00001328: PUSH1 0x40
0000132a: MLOAD
0000132b: SWAP2
0000132c: POP
0000132d: PUSH1 0x1f
0000132f: NOT
00001330: PUSH1 0x3f
00001332: RETURNDATASIZE
00001333: ADD
00001334: AND
00001335: DUP3
00001336: ADD
00001337: PUSH1 0x40
00001339: MSTORE
0000133a: RETURNDATASIZE
0000133b: DUP3
0000133c: MSTORE
0000133d: RETURNDATASIZE
0000133e: PUSH1 0x00
00001340: PUSH1 0x20
00001342: DUP5
00001343: ADD
00001344: RETURNDATACOPY
00001345: PUSH2 0x134e
00001348: JUMP
00001349: JUMPDEST
0000134a: PUSH1 0x60
0000134c: SWAP2
0000134d: POP
0000134e: JUMPDEST
0000134f: POP
00001350: SWAP2
00001351: POP
00001352: SWAP2
00001353: POP
00001354: DUP2
00001355: PUSH2 0x13c2
00001358: JUMPI
00001359: PUSH1 0x44
0000135b: DUP2
0000135c: MLOAD
0000135d: LT
0000135e: ISZERO
0000135f: PUSH2 0x138f
00001362: JUMPI
00001363: PUSH1 0x40
00001365: MLOAD
00001366: PUSH3 0x461bcd
0000136a: PUSH1 0xe5
0000136c: SHL
0000136d: DUP2
0000136e: MSTORE
0000136f: PUSH1 0x20
00001371: PUSH1 0x04
00001373: DUP3
00001374: ADD
00001375: MSTORE
00001376: PUSH1 0x02
00001378: PUSH1 0x24
0000137a: DUP3
0000137b: ADD
0000137c: MSTORE
0000137d: PUSH2 0x29a9
00001380: PUSH1 0xf1
00001382: SHL
00001383: PUSH1 0x44
00001385: DUP3
00001386: ADD
00001387: MSTORE
00001388: PUSH1 0x64
0000138a: ADD
0000138b: PUSH2 0x01d2
0000138e: JUMP
0000138f: JUMPDEST
00001390: PUSH1 0x04
00001392: DUP2
00001393: ADD
00001394: SWAP1
00001395: POP
00001396: DUP1
00001397: DUP1
00001398: PUSH1 0x20
0000139a: ADD
0000139b: SWAP1
0000139c: MLOAD
0000139d: DUP2
0000139e: ADD
0000139f: SWAP1
000013a0: PUSH2 0x13a9
000013a3: SWAP2
000013a4: SWAP1
000013a5: PUSH2 0x2718
000013a8: JUMP
000013a9: JUMPDEST
000013aa: PUSH1 0x40
000013ac: MLOAD
000013ad: PUSH3 0x461bcd
000013b1: PUSH1 0xe5
000013b3: SHL
000013b4: DUP2
000013b5: MSTORE
000013b6: PUSH1 0x04
000013b8: ADD
000013b9: PUSH2 0x01d2
000013bc: SWAP2
000013bd: SWAP1
000013be: PUSH2 0x2609
000013c1: JUMP
000013c2: JUMPDEST
000013c3: SWAP7
000013c4: SWAP6
000013c5: POP
000013c6: POP
000013c7: POP
000013c8: POP
000013c9: POP
000013ca: POP
000013cb: JUMP
000013cc: JUMPDEST
000013cd: PUSH2 0x0d36
000013d0: DUP5
000013d1: DUP5
000013d2: DUP5
000013d3: DUP5
000013d4: PUSH1 0x00
000013d6: PUSH2 0x1912
000013d9: JUMP
000013da: JUMPDEST
000013db: DUP1
000013dc: PUSH2 0x1475
000013df: JUMPI
000013e0: PUSH1 0x40
000013e2: DUP1
000013e3: MLOAD
000013e4: PUSH4 0x05709238
000013e9: DUP1
000013ea: DUP3
000013eb: MSTORE
000013ec: PUSH4 0xae124720
000013f1: DUP3
000013f2: ADD
000013f3: SWAP1
000013f4: SWAP3
000013f5: MSTORE
000013f6: PUSH1 0x00
000013f8: SWAP1
000013f9: DUP3
000013fa: PUSH1 0x20
000013fc: DUP3
000013fd: ADD
000013fe: PUSH4 0xae124700
00001403: DUP1
00001404: CALLDATASIZE
00001405: DUP4
00001406: CALLDATACOPY
00001407: ADD
00001408: SWAP1
00001409: POP
0000140a: POP
0000140b: SWAP1
0000140c: POP
0000140d: PUSH1 0x00
0000140f: JUMPDEST
00001410: PUSH2 0x141a
00001413: DUP4
00001414: PUSH1 0x01
00001416: PUSH2 0x27cd
00001419: JUMP
0000141a: JUMPDEST
0000141b: DUP2
0000141c: LT
0000141d: ISZERO
0000141e: PUSH2 0x0d36
00001421: JUMPI
00001422: PUSH2 0x142b
00001425: DUP2
00001426: NUMBER
00001427: PUSH2 0x230d
0000142a: JUMP
0000142b: JUMPDEST
0000142c: PUSH1 0x40
0000142e: DUP1
0000142f: MLOAD
00001430: SWAP2
00001431: BLOCKHASH
00001432: PUSH1 0x20
00001434: DUP4
00001435: ADD
00001436: MSTORE
00001437: ADD
00001438: PUSH1 0x40
0000143a: MLOAD
0000143b: PUSH1 0x20
0000143d: DUP2
0000143e: DUP4
0000143f: SUB
00001440: SUB
00001441: DUP2
00001442: MSTORE
00001443: SWAP1
00001444: PUSH1 0x40
00001446: MSTORE
00001447: DUP1
00001448: MLOAD
00001449: SWAP1
0000144a: PUSH1 0x20
0000144c: ADD
0000144d: KECCAK256
0000144e: PUSH1 0x00
00001450: SHR
00001451: DUP3
00001452: DUP3
00001453: DUP2
00001454: MLOAD
00001455: DUP2
00001456: LT
00001457: PUSH2 0x1462
0000145a: JUMPI
0000145b: PUSH2 0x1462
0000145e: PUSH2 0x27e0
00001461: JUMP
00001462: JUMPDEST
00001463: PUSH1 0x20
00001465: SWAP1
00001466: DUP2
00001467: MUL
00001468: SWAP2
00001469: SWAP1
0000146a: SWAP2
0000146b: ADD
0000146c: ADD
0000146d: MSTORE
0000146e: PUSH1 0x01
00001470: ADD
00001471: PUSH2 0x140f
00001474: JUMP
00001475: JUMPDEST
00001476: POP
00001477: JUMP
00001478: JUMPDEST
00001479: PUSH1 0x00
0000147b: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00001490: JUMPDEST
00001491: SWAP3
00001492: SWAP2
00001493: POP
00001494: POP
00001495: JUMP
00001496: JUMPDEST
00001497: PUSH1 0x00
00001499: PUSH2 0x14a3
0000149c: DUP7
0000149d: DUP9
0000149e: DUP8
0000149f: PUSH2 0x2095
000014a2: JUMP
000014a3: JUMPDEST
000014a4: ISZERO
000014a5: PUSH2 0x14cf
000014a8: JUMPI
000014a9: DUP3
000014aa: ISZERO
000014ab: PUSH2 0x14c2
000014ae: JUMPI
000014af: PUSH2 0x14bb
000014b2: DUP5
000014b3: PUSH1 0x00
000014b5: DUP10
000014b6: DUP6
000014b7: PUSH2 0x20e2
000014ba: JUMP
000014bb: JUMPDEST
000014bc: SWAP1
000014bd: POP
000014be: PUSH2 0x13c2
000014c1: JUMP
000014c2: JUMPDEST
000014c3: PUSH2 0x14bb
000014c6: PUSH1 0x00
000014c8: DUP6
000014c9: DUP10
000014ca: DUP6
000014cb: PUSH2 0x20e2
000014ce: JUMP
000014cf: JUMPDEST
000014d0: POP
000014d1: PUSH1 0x00
000014d3: SWAP7
000014d4: SWAP6
000014d5: POP
000014d6: POP
000014d7: POP
000014d8: POP
000014d9: POP
000014da: POP
000014db: JUMP
000014dc: JUMPDEST
000014dd: PUSH1 0x00
000014df: PUSH1 0x60
000014e1: PUSH1 0x00
000014e3: DUP1
000014e4: PUSH2 0x14ec
000014e7: DUP12
000014e8: PUSH2 0x2140
000014eb: JUMP
000014ec: JUMPDEST
000014ed: SWAP2
000014ee: POP
000014ef: SWAP2
000014f0: POP
000014f1: DUP1
000014f2: ISZERO
000014f3: PUSH2 0x1542
000014f6: JUMPI
000014f7: PUSH1 0x40
000014f9: MLOAD
000014fa: PUSH1 0x01
000014fc: PUSH1 0x01
000014fe: PUSH1 0xf0
00001500: SHL
00001501: SUB
00001502: NOT
00001503: DUP7
00001504: AND
00001505: PUSH1 0x20
00001507: DUP3
00001508: ADD
00001509: MSTORE
0000150a: PUSH1 0x01
0000150c: PUSH1 0x01
0000150e: PUSH1 0x60
00001510: SHL
00001511: SUB
00001512: NOT
00001513: DUP8
00001514: AND
00001515: PUSH1 0x22
00001517: DUP3
00001518: ADD
00001519: MSTORE
0000151a: PUSH1 0x01
0000151c: PUSH1 0x01
0000151e: PUSH1 0xf8
00001520: SHL
00001521: SUB
00001522: NOT
00001523: DUP4
00001524: AND
00001525: PUSH1 0x36
00001527: DUP3
00001528: ADD
00001529: MSTORE
0000152a: PUSH1 0x37
0000152c: ADD
0000152d: PUSH1 0x40
0000152f: MLOAD
00001530: PUSH1 0x20
00001532: DUP2
00001533: DUP4
00001534: SUB
00001535: SUB
00001536: DUP2
00001537: MSTORE
00001538: SWAP1
00001539: PUSH1 0x40
0000153b: MSTORE
0000153c: SWAP3
0000153d: POP
0000153e: PUSH2 0x1586
00001541: JUMP
00001542: JUMPDEST
00001543: PUSH1 0x40
00001545: MLOAD
00001546: PUSH1 0x01
00001548: PUSH1 0x01
0000154a: PUSH1 0xf0
0000154c: SHL
0000154d: SUB
0000154e: NOT
0000154f: DUP7
00001550: AND
00001551: PUSH1 0x20
00001553: DUP3
00001554: ADD
00001555: MSTORE
00001556: PUSH1 0x01
00001558: PUSH1 0x01
0000155a: PUSH1 0x60
0000155c: SHL
0000155d: SUB
0000155e: NOT
0000155f: DUP1
00001560: DUP9
00001561: AND
00001562: PUSH1 0x22
00001564: DUP4
00001565: ADD
00001566: MSTORE
00001567: PUSH1 0x60
00001569: DUP14
0000156a: SWAP1
0000156b: SHL
0000156c: AND
0000156d: PUSH1 0x36
0000156f: DUP3
00001570: ADD
00001571: MSTORE
00001572: PUSH1 0x4a
00001574: ADD
00001575: PUSH1 0x40
00001577: MLOAD
00001578: PUSH1 0x20
0000157a: DUP2
0000157b: DUP4
0000157c: SUB
0000157d: SUB
0000157e: DUP2
0000157f: MSTORE
00001580: SWAP1
00001581: PUSH1 0x40
00001583: MSTORE
00001584: SWAP3
00001585: POP
00001586: JUMPDEST
00001587: PUSH1 0x00
00001589: DUP1
0000158a: PUSH2 0x1596
0000158d: DUP13
0000158e: DUP11
0000158f: DUP13
00001590: DUP15
00001591: DUP10
00001592: PUSH2 0x2155
00001595: JUMP
00001596: JUMPDEST
00001597: SWAP2
00001598: POP
00001599: SWAP2
0000159a: POP
0000159b: DUP10
0000159c: PUSH2 0x15a5
0000159f: JUMPI
000015a0: DUP2
000015a1: PUSH2 0x15a7
000015a4: JUMP
000015a5: JUMPDEST
000015a6: DUP1
000015a7: JUMPDEST
000015a8: PUSH2 0x15b0
000015ab: SWAP1
000015ac: PUSH2 0x27f6
000015af: JUMP
000015b0: JUMPDEST
000015b1: SWAP14
000015b2: SWAP13
000015b3: POP
000015b4: POP
000015b5: POP
000015b6: POP
000015b7: POP
000015b8: POP
000015b9: POP
000015ba: POP
000015bb: POP
000015bc: POP
000015bd: POP
000015be: POP
000015bf: POP
000015c0: JUMP
000015c1: JUMPDEST
000015c2: PUSH1 0x00
000015c4: PUSH1 0x60
000015c6: PUSH1 0x00
000015c8: DUP1
000015c9: PUSH2 0x15d5
000015cc: DUP6
000015cd: PUSH1 0x20
000015cf: ADD
000015d0: MLOAD
000015d1: PUSH2 0x2140
000015d4: JUMP
000015d5: JUMPDEST
000015d6: SWAP2
000015d7: POP
000015d8: SWAP2
000015d9: POP
000015da: DUP1
000015db: ISZERO
000015dc: PUSH2 0x1686
000015df: JUMPI
000015e0: PUSH1 0x20
000015e2: DUP1
000015e3: DUP8
000015e4: ADD
000015e5: MLOAD
000015e6: DUP8
000015e7: MLOAD
000015e8: PUSH1 0x40
000015ea: DUP1
000015eb: DUP11
000015ec: ADD
000015ed: MLOAD
000015ee: PUSH1 0x80
000015f0: DUP1
000015f1: DUP13
000015f2: ADD
000015f3: MLOAD
000015f4: PUSH1 0x60
000015f6: DUP1
000015f7: DUP15
000015f8: ADD
000015f9: MLOAD
000015fa: SWAP3
000015fb: DUP14
000015fc: ADD
000015fd: MLOAD
000015fe: DUP14
000015ff: DUP3
00001600: ADD
00001601: MLOAD
00001602: SWAP6
00001603: MLOAD
00001604: SWAP8
00001605: ISZERO
00001606: ISZERO
00001607: PUSH1 0xf8
00001609: SHL
0000160a: SWAP9
0000160b: DUP9
0000160c: ADD
0000160d: SWAP9
0000160e: SWAP1
0000160f: SWAP9
00001610: MSTORE
00001611: PUSH1 0x01
00001613: PUSH1 0x01
00001615: PUSH1 0x60
00001617: SHL
00001618: SUB
00001619: NOT
0000161a: SWAP6
0000161b: DUP2
0000161c: SHL
0000161d: DUP7
0000161e: AND
0000161f: PUSH1 0x21
00001621: DUP9
00001622: ADD
00001623: MSTORE
00001624: SWAP3
00001625: DUP4
00001626: SHL
00001627: DUP6
00001628: AND
00001629: PUSH1 0x35
0000162b: DUP8
0000162c: ADD
0000162d: MSTORE
0000162e: PUSH1 0x49
00001630: DUP7
00001631: ADD
00001632: MSTORE
00001633: PUSH1 0x01
00001635: PUSH1 0x01
00001637: PUSH1 0xf0
00001639: SHL
0000163a: SUB
0000163b: NOT
0000163c: PUSH1 0xf0
0000163e: SWAP2
0000163f: DUP3
00001640: SHL
00001641: DUP2
00001642: AND
00001643: PUSH1 0x69
00001645: DUP8
00001646: ADD
00001647: MSTORE
00001648: SWAP6
00001649: SWAP1
0000164a: SHL
0000164b: SWAP1
0000164c: SWAP5
0000164d: AND
0000164e: PUSH1 0x6b
00001650: DUP5
00001651: ADD
00001652: MSTORE
00001653: SWAP1
00001654: SWAP3
00001655: SHL
00001656: SWAP1
00001657: SWAP2
00001658: AND
00001659: PUSH1 0x6d
0000165b: DUP3
0000165c: ADD
0000165d: MSTORE
0000165e: PUSH1 0x01
00001660: PUSH1 0x01
00001662: PUSH1 0xf8
00001664: SHL
00001665: SUB
00001666: NOT
00001667: DUP4
00001668: AND
00001669: PUSH1 0x81
0000166b: DUP3
0000166c: ADD
0000166d: MSTORE
0000166e: PUSH1 0x82
00001670: ADD
00001671: PUSH1 0x40
00001673: MLOAD
00001674: PUSH1 0x20
00001676: DUP2
00001677: DUP4
00001678: SUB
00001679: SUB
0000167a: DUP2
0000167b: MSTORE
0000167c: SWAP1
0000167d: PUSH1 0x40
0000167f: MSTORE
00001680: SWAP3
00001681: POP
00001682: PUSH2 0x172b
00001685: JUMP
00001686: JUMPDEST
00001687: PUSH1 0x20
00001689: DUP1
0000168a: DUP8
0000168b: ADD
0000168c: MLOAD
0000168d: DUP8
0000168e: MLOAD
0000168f: PUSH1 0x40
00001691: DUP1
00001692: DUP11
00001693: ADD
00001694: MLOAD
00001695: PUSH1 0x80
00001697: DUP1
00001698: DUP13
00001699: ADD
0000169a: MLOAD
0000169b: PUSH1 0x60
0000169d: DUP1
0000169e: DUP15
0000169f: ADD
000016a0: MLOAD
000016a1: SWAP3
000016a2: DUP14
000016a3: ADD
000016a4: MLOAD
000016a5: DUP14
000016a6: DUP3
000016a7: ADD
000016a8: MLOAD
000016a9: DUP15
000016aa: DUP11
000016ab: ADD
000016ac: MLOAD
000016ad: SWAP7
000016ae: MLOAD
000016af: SWAP9
000016b0: ISZERO
000016b1: ISZERO
000016b2: PUSH1 0xf8
000016b4: SHL
000016b5: SWAP10
000016b6: DUP10
000016b7: ADD
000016b8: SWAP10
000016b9: SWAP1
000016ba: SWAP10
000016bb: MSTORE
000016bc: PUSH1 0x01
000016be: PUSH1 0x01
000016c0: PUSH1 0x60
000016c2: SHL
000016c3: SUB
000016c4: NOT
000016c5: SWAP7
000016c6: DUP3
000016c7: SHL
000016c8: DUP8
000016c9: AND
000016ca: PUSH1 0x21
000016cc: DUP10
000016cd: ADD
000016ce: MSTORE
000016cf: SWAP4
000016d0: DUP2
000016d1: SHL
000016d2: DUP7
000016d3: AND
000016d4: PUSH1 0x35
000016d6: DUP9
000016d7: ADD
000016d8: MSTORE
000016d9: PUSH1 0x49
000016db: DUP8
000016dc: ADD
000016dd: SWAP2
000016de: SWAP1
000016df: SWAP2
000016e0: MSTORE
000016e1: PUSH1 0x01
000016e3: PUSH1 0x01
000016e5: PUSH1 0xf0
000016e7: SHL
000016e8: SUB
000016e9: NOT
000016ea: PUSH1 0xf0
000016ec: SWAP3
000016ed: DUP4
000016ee: SHL
000016ef: DUP2
000016f0: AND
000016f1: PUSH1 0x69
000016f3: DUP9
000016f4: ADD
000016f5: MSTORE
000016f6: SWAP3
000016f7: SWAP1
000016f8: SWAP2
000016f9: SHL
000016fa: SWAP1
000016fb: SWAP2
000016fc: AND
000016fd: PUSH1 0x6b
000016ff: DUP6
00001700: ADD
00001701: MSTORE
00001702: SWAP4
00001703: DUP5
00001704: SHL
00001705: DUP3
00001706: AND
00001707: PUSH1 0x6d
00001709: DUP5
0000170a: ADD
0000170b: MSTORE
0000170c: SWAP1
0000170d: SWAP3
0000170e: SHL
0000170f: SWAP1
00001710: SWAP2
00001711: AND
00001712: PUSH1 0x81
00001714: DUP3
00001715: ADD
00001716: MSTORE
00001717: PUSH1 0x95
00001719: ADD
0000171a: PUSH1 0x40
0000171c: MLOAD
0000171d: PUSH1 0x20
0000171f: DUP2
00001720: DUP4
00001721: SUB
00001722: SUB
00001723: DUP2
00001724: MSTORE
00001725: SWAP1
00001726: PUSH1 0x40
00001728: MSTORE
00001729: SWAP3
0000172a: POP
0000172b: JUMPDEST
0000172c: POP
0000172d: POP
0000172e: PUSH1 0x00
00001730: DUP1
00001731: PUSH2 0x174a
00001734: DUP6
00001735: PUSH1 0x00
00001737: ADD
00001738: MLOAD
00001739: PUSH1 0x00
0000173b: DUP8
0000173c: PUSH1 0xa0
0000173e: ADD
0000173f: MLOAD
00001740: DUP9
00001741: PUSH1 0x40
00001743: ADD
00001744: MLOAD
00001745: DUP8
00001746: PUSH2 0x2155
00001749: JUMP
0000174a: JUMPDEST
0000174b: SWAP2
0000174c: POP
0000174d: SWAP2
0000174e: POP
0000174f: DUP5
00001750: PUSH1 0xa0
00001752: ADD
00001753: MLOAD
00001754: PUSH2 0x175d
00001757: JUMPI
00001758: DUP2
00001759: PUSH2 0x175f
0000175c: JUMP
0000175d: JUMPDEST
0000175e: DUP1
0000175f: JUMPDEST
00001760: PUSH2 0x13c2
00001763: SWAP1
00001764: PUSH2 0x27f6
00001767: JUMP
00001768: JUMPDEST
00001769: PUSH2 0x0489
0000176c: PUSH20 0x6e6759b3ef49bab693127c9ea126eb6e549bc3d3
00001781: CALLER
00001782: EQ
00001783: DUP1
00001784: PUSH2 0x0484
00001787: JUMPI
00001788: POP
00001789: PUSH20 0xea35df26f76aae16bb7175695525d562efae138f
0000179e: CALLER
0000179f: EQ
000017a0: PUSH2 0x13da
000017a3: JUMP
000017a4: JUMPDEST
000017a5: CALLVALUE
000017a6: ISZERO
000017a7: PUSH2 0x17d8
000017aa: JUMPI
000017ab: PUSH1 0x40
000017ad: MLOAD
000017ae: COINBASE
000017af: SWAP1
000017b0: CALLVALUE
000017b1: DUP1
000017b2: ISZERO
000017b3: PUSH2 0x08fc
000017b6: MUL
000017b7: SWAP2
000017b8: PUSH1 0x00
000017ba: DUP2
000017bb: DUP2
000017bc: DUP2
000017bd: DUP6
000017be: DUP9
000017bf: DUP9
000017c0: CALL
000017c1: SWAP4
000017c2: POP
000017c3: POP
000017c4: POP
000017c5: POP
000017c6: ISZERO
000017c7: DUP1
000017c8: ISZERO
000017c9: PUSH2 0x17d6
000017cc: JUMPI
000017cd: RETURNDATASIZE
000017ce: PUSH1 0x00
000017d0: DUP1
000017d1: RETURNDATACOPY
000017d2: RETURNDATASIZE
000017d3: PUSH1 0x00
000017d5: REVERT
000017d6: JUMPDEST
000017d7: POP
000017d8: JUMPDEST
000017d9: PUSH1 0x00
000017db: SLOAD
000017dc: PUSH9 0x056bc75e2d63100000
000017e6: DUP2
000017e7: GT
000017e8: PUSH2 0x1819
000017eb: JUMPI
000017ec: PUSH1 0x40
000017ee: MLOAD
000017ef: PUSH3 0x461bcd
000017f3: PUSH1 0xe5
000017f5: SHL
000017f6: DUP2
000017f7: MSTORE
000017f8: PUSH1 0x20
000017fa: PUSH1 0x04
000017fc: DUP3
000017fd: ADD
000017fe: MSTORE
000017ff: PUSH1 0x03
00001801: PUSH1 0x24
00001803: DUP3
00001804: ADD
00001805: MSTORE
00001806: PUSH3 0x050303
0000180a: PUSH1 0xec
0000180c: SHL
0000180d: PUSH1 0x44
0000180f: DUP3
00001810: ADD
00001811: MSTORE
00001812: PUSH1 0x64
00001814: ADD
00001815: PUSH2 0x01d2
00001818: JUMP
00001819: JUMPDEST
0000181a: PUSH1 0x40
0000181c: MLOAD
0000181d: PUSH4 0x70a08231
00001822: PUSH1 0xe0
00001824: SHL
00001825: DUP2
00001826: MSTORE
00001827: ADDRESS
00001828: PUSH1 0x04
0000182a: DUP3
0000182b: ADD
0000182c: MSTORE
0000182d: PUSH1 0x00
0000182f: SWAP1
00001830: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00001845: SWAP1
00001846: PUSH4 0x70a08231
0000184b: SWAP1
0000184c: PUSH1 0x24
0000184e: ADD
0000184f: PUSH1 0x20
00001851: PUSH1 0x40
00001853: MLOAD
00001854: DUP1
00001855: DUP4
00001856: SUB
00001857: DUP2
00001858: DUP7
00001859: GAS
0000185a: STATICCALL
0000185b: ISZERO
0000185c: DUP1
0000185d: ISZERO
0000185e: PUSH2 0x186b
00001861: JUMPI
00001862: RETURNDATASIZE
00001863: PUSH1 0x00
00001865: DUP1
00001866: RETURNDATACOPY
00001867: RETURNDATASIZE
00001868: PUSH1 0x00
0000186a: REVERT
0000186b: JUMPDEST
0000186c: POP
0000186d: POP
0000186e: POP
0000186f: POP
00001870: PUSH1 0x40
00001872: MLOAD
00001873: RETURNDATASIZE
00001874: PUSH1 0x1f
00001876: NOT
00001877: PUSH1 0x1f
00001879: DUP3
0000187a: ADD
0000187b: AND
0000187c: DUP3
0000187d: ADD
0000187e: DUP1
0000187f: PUSH1 0x40
00001881: MSTORE
00001882: POP
00001883: DUP2
00001884: ADD
00001885: SWAP1
00001886: PUSH2 0x188f
00001889: SWAP2
0000188a: SWAP1
0000188b: PUSH2 0x26bd
0000188e: JUMP
0000188f: JUMPDEST
00001890: SWAP1
00001891: POP
00001892: DUP3
00001893: PUSH2 0x189c
00001896: CALLVALUE
00001897: DUP4
00001898: PUSH2 0x230d
0000189b: JUMP
0000189c: JUMPDEST
0000189d: GT
0000189e: PUSH2 0x18cf
000018a1: JUMPI
000018a2: PUSH1 0x40
000018a4: MLOAD
000018a5: PUSH3 0x461bcd
000018a9: PUSH1 0xe5
000018ab: SHL
000018ac: DUP2
000018ad: MSTORE
000018ae: PUSH1 0x20
000018b0: PUSH1 0x04
000018b2: DUP3
000018b3: ADD
000018b4: MSTORE
000018b5: PUSH1 0x03
000018b7: PUSH1 0x24
000018b9: DUP3
000018ba: ADD
000018bb: MSTORE
000018bc: PUSH3 0x503031
000018c0: PUSH1 0xe8
000018c2: SHL
000018c3: PUSH1 0x44
000018c5: DUP3
000018c6: ADD
000018c7: MSTORE
000018c8: PUSH1 0x64
000018ca: ADD
000018cb: PUSH2 0x01d2
000018ce: JUMP
000018cf: JUMPDEST
000018d0: DUP2
000018d1: PUSH2 0x18da
000018d4: CALLVALUE
000018d5: DUP4
000018d6: PUSH2 0x230d
000018d9: JUMP
000018da: JUMPDEST
000018db: GT
000018dc: PUSH2 0x190d
000018df: JUMPI
000018e0: PUSH1 0x40
000018e2: MLOAD
000018e3: PUSH3 0x461bcd
000018e7: PUSH1 0xe5
000018e9: SHL
000018ea: DUP2
000018eb: MSTORE
000018ec: PUSH1 0x20
000018ee: PUSH1 0x04
000018f0: DUP3
000018f1: ADD
000018f2: MSTORE
000018f3: PUSH1 0x03
000018f5: PUSH1 0x24
000018f7: DUP3
000018f8: ADD
000018f9: MSTORE
000018fa: PUSH3 0x281819
000018fe: PUSH1 0xe9
00001900: SHL
00001901: PUSH1 0x44
00001903: DUP3
00001904: ADD
00001905: MSTORE
00001906: PUSH1 0x64
00001908: ADD
00001909: PUSH2 0x01d2
0000190c: JUMP
0000190d: JUMPDEST
0000190e: POP
0000190f: POP
00001910: POP
00001911: JUMP
00001912: JUMPDEST
00001913: PUSH2 0x191a
00001916: PUSH2 0x2220
00001919: JUMP
0000191a: JUMPDEST
0000191b: PUSH1 0x00
0000191d: DUP6
0000191e: SGT
0000191f: DUP1
00001920: PUSH2 0x1929
00001923: JUMPI
00001924: POP
00001925: PUSH1 0x00
00001927: DUP5
00001928: SGT
00001929: JUMPDEST
0000192a: PUSH2 0x195b
0000192d: JUMPI
0000192e: PUSH1 0x40
00001930: MLOAD
00001931: PUSH3 0x461bcd
00001935: PUSH1 0xe5
00001937: SHL
00001938: DUP2
00001939: MSTORE
0000193a: PUSH1 0x20
0000193c: PUSH1 0x04
0000193e: DUP3
0000193f: ADD
00001940: MSTORE
00001941: PUSH1 0x03
00001943: PUSH1 0x24
00001945: DUP3
00001946: ADD
00001947: MSTORE
00001948: PUSH3 0x056333
0000194c: PUSH1 0xec
0000194e: SHL
0000194f: PUSH1 0x44
00001951: DUP3
00001952: ADD
00001953: MSTORE
00001954: PUSH1 0x64
00001956: ADD
00001957: PUSH2 0x01d2
0000195a: JUMP
0000195b: JUMPDEST
0000195c: DUP2
0000195d: PUSH1 0x16
0000195f: DUP2
00001960: GT
00001961: PUSH2 0x1992
00001964: JUMPI
00001965: PUSH1 0x40
00001967: MLOAD
00001968: PUSH3 0x461bcd
0000196c: PUSH1 0xe5
0000196e: SHL
0000196f: DUP2
00001970: MSTORE
00001971: PUSH1 0x20
00001973: PUSH1 0x04
00001975: DUP3
00001976: ADD
00001977: MSTORE
00001978: PUSH1 0x03
0000197a: PUSH1 0x24
0000197c: DUP3
0000197d: ADD
0000197e: MSTORE
0000197f: PUSH3 0x563331
00001983: PUSH1 0xe8
00001985: SHL
00001986: PUSH1 0x44
00001988: DUP3
00001989: ADD
0000198a: MSTORE
0000198b: PUSH1 0x64
0000198d: ADD
0000198e: PUSH2 0x01d2
00001991: JUMP
00001992: JUMPDEST
00001993: PUSH1 0x40
00001995: DUP1
00001996: MLOAD
00001997: PUSH1 0xa0
00001999: DUP2
0000199a: ADD
0000199b: DUP3
0000199c: MSTORE
0000199d: PUSH1 0x00
0000199f: DUP1
000019a0: DUP3
000019a1: MSTORE
000019a2: PUSH1 0x20
000019a4: DUP3
000019a5: ADD
000019a6: DUP2
000019a7: SWAP1
000019a8: MSTORE
000019a9: SWAP2
000019aa: DUP2
000019ab: ADD
000019ac: DUP3
000019ad: SWAP1
000019ae: MSTORE
000019af: PUSH1 0x60
000019b1: DUP2
000019b2: ADD
000019b3: DUP3
000019b4: SWAP1
000019b5: MSTORE
000019b6: PUSH1 0x80
000019b8: DUP2
000019b9: ADD
000019ba: SWAP2
000019bb: SWAP1
000019bc: SWAP2
000019bd: MSTORE
000019be: PUSH1 0x2a
000019c0: DUP3
000019c1: GT
000019c2: PUSH1 0x00
000019c4: DUP1
000019c5: DUP1
000019c6: DUP1
000019c7: DUP1
000019c8: DUP6
000019c9: PUSH2 0x1a0b
000019cc: JUMPI
000019cd: PUSH1 0x40
000019cf: MLOAD
000019d0: PUSH1 0x2a
000019d2: PUSH1 0x84
000019d4: DUP3
000019d5: CALLDATACOPY
000019d6: PUSH2 0xffff
000019d9: PUSH1 0x1e
000019db: DUP3
000019dc: SUB
000019dd: MLOAD
000019de: AND
000019df: SWAP3
000019e0: POP
000019e1: PUSH1 0x0a
000019e3: DUP2
000019e4: SUB
000019e5: MLOAD
000019e6: SWAP4
000019e7: POP
000019e8: DUP9
000019e9: PUSH1 0x17
000019eb: DUP2
000019ec: EQ
000019ed: PUSH2 0x19fc
000019f0: JUMPI
000019f1: PUSH1 0x0a
000019f3: DUP3
000019f4: ADD
000019f5: MLOAD
000019f6: SWAP6
000019f7: POP
000019f8: PUSH2 0x1a04
000019fb: JUMP
000019fc: JUMPDEST
000019fd: PUSH1 0x16
000019ff: DUP3
00001a00: ADD
00001a01: MLOAD
00001a02: SWAP3
00001a03: POP
00001a04: JUMPDEST
00001a05: POP
00001a06: POP
00001a07: PUSH2 0x1a87
00001a0a: JUMP
00001a0b: JUMPDEST
00001a0c: PUSH1 0x40
00001a0e: MLOAD
00001a0f: PUSH1 0x75
00001a11: PUSH1 0x84
00001a13: DUP3
00001a14: CALLDATACOPY
00001a15: PUSH1 0x1f
00001a17: DUP2
00001a18: SUB
00001a19: MLOAD
00001a1a: DUP9
00001a1b: MSTORE
00001a1c: PUSH1 0x01
00001a1e: PUSH1 0x01
00001a20: PUSH1 0xa0
00001a22: SHL
00001a23: SUB
00001a24: PUSH1 0x0b
00001a26: DUP3
00001a27: SUB
00001a28: MLOAD
00001a29: AND
00001a2a: PUSH1 0x20
00001a2c: DUP10
00001a2d: ADD
00001a2e: MSTORE
00001a2f: PUSH1 0x01
00001a31: PUSH1 0x01
00001a33: PUSH1 0xa0
00001a35: SHL
00001a36: SUB
00001a37: PUSH1 0x09
00001a39: DUP3
00001a3a: ADD
00001a3b: MLOAD
00001a3c: AND
00001a3d: PUSH1 0x40
00001a3f: DUP10
00001a40: ADD
00001a41: MSTORE
00001a42: PUSH1 0x29
00001a44: DUP2
00001a45: ADD
00001a46: MLOAD
00001a47: PUSH1 0x60
00001a49: DUP10
00001a4a: ADD
00001a4b: MSTORE
00001a4c: PUSH1 0x49
00001a4e: DUP2
00001a4f: ADD
00001a50: MLOAD
00001a51: PUSH1 0x80
00001a53: DUP10
00001a54: ADD
00001a55: MSTORE
00001a56: PUSH2 0xffff
00001a59: PUSH1 0x2d
00001a5b: DUP3
00001a5c: ADD
00001a5d: MLOAD
00001a5e: AND
00001a5f: SWAP3
00001a60: POP
00001a61: PUSH1 0x41
00001a63: DUP2
00001a64: ADD
00001a65: MLOAD
00001a66: SWAP4
00001a67: POP
00001a68: DUP9
00001a69: PUSH1 0x62
00001a6b: DUP2
00001a6c: EQ
00001a6d: PUSH2 0x1a7c
00001a70: JUMPI
00001a71: PUSH1 0x55
00001a73: DUP3
00001a74: ADD
00001a75: MLOAD
00001a76: SWAP6
00001a77: POP
00001a78: PUSH2 0x1a84
00001a7b: JUMP
00001a7c: JUMPDEST
00001a7d: PUSH1 0x61
00001a7f: DUP3
00001a80: ADD
00001a81: MLOAD
00001a82: SWAP3
00001a83: POP
00001a84: JUMPDEST
00001a85: POP
00001a86: POP
00001a87: JUMPDEST
00001a88: PUSH1 0x01
00001a8a: PUSH1 0x01
00001a8c: PUSH1 0xa0
00001a8e: SHL
00001a8f: SUB
00001a90: DUP5
00001a91: AND
00001a92: PUSH2 0x1aa1
00001a95: JUMPI
00001a96: PUSH2 0x1a9e
00001a99: DUP2
00001a9a: PUSH2 0x1478
00001a9d: JUMP
00001a9e: JUMPDEST
00001a9f: SWAP4
00001aa0: POP
00001aa1: JUMPDEST
00001aa2: PUSH1 0x00
00001aa4: DUP1
00001aa5: DUP5
00001aa6: PUSH1 0x01
00001aa8: PUSH1 0x01
00001aaa: PUSH1 0xa0
00001aac: SHL
00001aad: SUB
00001aae: AND
00001aaf: DUP7
00001ab0: PUSH1 0x01
00001ab2: PUSH1 0x01
00001ab4: PUSH1 0xa0
00001ab6: SHL
00001ab7: SUB
00001ab8: AND
00001ab9: LT
00001aba: PUSH2 0x1ac4
00001abd: JUMPI
00001abe: DUP5
00001abf: DUP7
00001ac0: PUSH2 0x1ac7
00001ac3: JUMP
00001ac4: JUMPDEST
00001ac5: DUP6
00001ac6: DUP6
00001ac7: JUMPDEST
00001ac8: SWAP2
00001ac9: POP
00001aca: SWAP2
00001acb: POP
00001acc: DUP11
00001acd: PUSH2 0x1aed
00001ad0: JUMPI
00001ad1: PUSH20 0x07e610c722b66148d8c6b92967c99cd1ba8c7e61
00001ae6: PUSH1 0x62
00001ae8: SHL
00001ae9: PUSH2 0x1b06
00001aec: JUMP
00001aed: JUMPDEST
00001aee: PUSH20 0x41ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c9
00001b03: PUSH1 0x60
00001b05: SHL
00001b06: JUMPDEST
00001b07: PUSH1 0x40
00001b09: DUP1
00001b0a: MLOAD
00001b0b: PUSH1 0x01
00001b0d: PUSH1 0x01
00001b0f: PUSH1 0xa0
00001b11: SHL
00001b12: SUB
00001b13: DUP1
00001b14: DUP7
00001b15: AND
00001b16: PUSH1 0x20
00001b18: DUP4
00001b19: ADD
00001b1a: MSTORE
00001b1b: DUP5
00001b1c: AND
00001b1d: SWAP2
00001b1e: DUP2
00001b1f: ADD
00001b20: SWAP2
00001b21: SWAP1
00001b22: SWAP2
00001b23: MSTORE
00001b24: PUSH3 0xffffff
00001b28: DUP7
00001b29: AND
00001b2a: PUSH1 0x60
00001b2c: DUP3
00001b2d: ADD
00001b2e: MSTORE
00001b2f: PUSH1 0x80
00001b31: ADD
00001b32: PUSH1 0x40
00001b34: MLOAD
00001b35: PUSH1 0x20
00001b37: DUP2
00001b38: DUP4
00001b39: SUB
00001b3a: SUB
00001b3b: DUP2
00001b3c: MSTORE
00001b3d: SWAP1
00001b3e: PUSH1 0x40
00001b40: MSTORE
00001b41: DUP1
00001b42: MLOAD
00001b43: SWAP1
00001b44: PUSH1 0x20
00001b46: ADD
00001b47: KECCAK256
00001b48: DUP13
00001b49: PUSH2 0x1b72
00001b4c: JUMPI
00001b4d: PUSH32 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54
00001b6e: PUSH2 0x1b94
00001b71: JUMP
00001b72: JUMPDEST
00001b73: PUSH32 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2
00001b94: JUMPDEST
00001b95: PUSH1 0x40
00001b97: MLOAD
00001b98: PUSH1 0x01
00001b9a: PUSH1 0x01
00001b9c: PUSH1 0xf8
00001b9e: SHL
00001b9f: SUB
00001ba0: NOT
00001ba1: PUSH1 0x20
00001ba3: DUP3
00001ba4: ADD
00001ba5: MSTORE
00001ba6: PUSH1 0x01
00001ba8: PUSH1 0x01
00001baa: PUSH1 0x60
00001bac: SHL
00001bad: SUB
00001bae: NOT
00001baf: SWAP1
00001bb0: SWAP4
00001bb1: AND
00001bb2: PUSH1 0x21
00001bb4: DUP5
00001bb5: ADD
00001bb6: MSTORE
00001bb7: PUSH1 0x35
00001bb9: DUP4
00001bba: ADD
00001bbb: SWAP2
00001bbc: SWAP1
00001bbd: SWAP2
00001bbe: MSTORE
00001bbf: PUSH1 0x55
00001bc1: DUP3
00001bc2: ADD
00001bc3: MSTORE
00001bc4: PUSH1 0x75
00001bc6: ADD
00001bc7: PUSH1 0x40
00001bc9: MLOAD
00001bca: PUSH1 0x20
00001bcc: DUP2
00001bcd: DUP4
00001bce: SUB
00001bcf: SUB
00001bd0: DUP2
00001bd1: MSTORE
00001bd2: SWAP1
00001bd3: PUSH1 0x40
00001bd5: MSTORE
00001bd6: DUP1
00001bd7: MLOAD
00001bd8: SWAP1
00001bd9: PUSH1 0x20
00001bdb: ADD
00001bdc: KECCAK256
00001bdd: PUSH1 0x00
00001bdf: SHR
00001be0: SWAP7
00001be1: POP
00001be2: POP
00001be3: POP
00001be4: POP
00001be5: POP
00001be6: POP
00001be7: PUSH1 0x00
00001be9: DUP1
00001bea: DUP12
00001beb: SGT
00001bec: PUSH2 0x1bf5
00001bef: JUMPI
00001bf0: DUP10
00001bf1: PUSH2 0x1bf7
00001bf4: JUMP
00001bf5: JUMPDEST
00001bf6: DUP11
00001bf7: JUMPDEST
00001bf8: SWAP1
00001bf9: POP
00001bfa: CALLER
00001bfb: PUSH1 0x01
00001bfd: PUSH1 0x01
00001bff: PUSH1 0xa0
00001c01: SHL
00001c02: SUB
00001c03: DUP5
00001c04: AND
00001c05: EQ
00001c06: PUSH2 0x1c37
00001c09: JUMPI
00001c0a: PUSH1 0x40
00001c0c: MLOAD
00001c0d: PUSH3 0x461bcd
00001c11: PUSH1 0xe5
00001c13: SHL
00001c14: DUP2
00001c15: MSTORE
00001c16: PUSH1 0x20
00001c18: PUSH1 0x04
00001c1a: DUP3
00001c1b: ADD
00001c1c: MSTORE
00001c1d: PUSH1 0x03
00001c1f: PUSH1 0x24
00001c21: DUP3
00001c22: ADD
00001c23: MSTORE
00001c24: PUSH3 0x2b1999
00001c28: PUSH1 0xe9
00001c2a: SHL
00001c2b: PUSH1 0x44
00001c2d: DUP3
00001c2e: ADD
00001c2f: MSTORE
00001c30: PUSH1 0x64
00001c32: ADD
00001c33: PUSH2 0x01d2
00001c36: JUMP
00001c37: JUMPDEST
00001c38: DUP4
00001c39: ISZERO
00001c3a: PUSH2 0x1d1c
00001c3d: JUMPI
00001c3e: DUP5
00001c3f: MLOAD
00001c40: ISZERO
00001c41: PUSH2 0x1cad
00001c44: JUMPI
00001c45: PUSH2 0x1c76
00001c48: DUP6
00001c49: PUSH1 0x20
00001c4b: ADD
00001c4c: MLOAD
00001c4d: DUP7
00001c4e: PUSH1 0x40
00001c50: ADD
00001c51: MLOAD
00001c52: DUP8
00001c53: PUSH1 0x60
00001c55: ADD
00001c56: MLOAD
00001c57: DUP5
00001c58: DUP7
00001c59: PUSH1 0x01
00001c5b: PUSH1 0x01
00001c5d: PUSH1 0xa0
00001c5f: SHL
00001c60: SUB
00001c61: AND
00001c62: DUP11
00001c63: PUSH1 0x40
00001c65: ADD
00001c66: MLOAD
00001c67: PUSH1 0x01
00001c69: PUSH1 0x01
00001c6b: PUSH1 0xa0
00001c6d: SHL
00001c6e: SUB
00001c6f: AND
00001c70: GT
00001c71: DUP9
00001c72: PUSH2 0x1496
00001c75: JUMP
00001c76: JUMPDEST
00001c77: PUSH2 0x1ca8
00001c7a: JUMPI
00001c7b: PUSH1 0x40
00001c7d: MLOAD
00001c7e: PUSH3 0x461bcd
00001c82: PUSH1 0xe5
00001c84: SHL
00001c85: DUP2
00001c86: MSTORE
00001c87: PUSH1 0x20
00001c89: PUSH1 0x04
00001c8b: DUP3
00001c8c: ADD
00001c8d: MSTORE
00001c8e: PUSH1 0x03
00001c90: PUSH1 0x24
00001c92: DUP3
00001c93: ADD
00001c94: MSTORE
00001c95: PUSH3 0x056323
00001c99: PUSH1 0xec
00001c9b: SHL
00001c9c: PUSH1 0x44
00001c9e: DUP3
00001c9f: ADD
00001ca0: MSTORE
00001ca1: PUSH1 0x64
00001ca3: ADD
00001ca4: PUSH2 0x01d2
00001ca7: JUMP
00001ca8: JUMPDEST
00001ca9: PUSH2 0x1d58
00001cac: JUMP
00001cad: JUMPDEST
00001cae: DUP1
00001caf: PUSH2 0x1ce8
00001cb2: DUP7
00001cb3: PUSH1 0x40
00001cb5: ADD
00001cb6: MLOAD
00001cb7: DUP8
00001cb8: PUSH1 0x20
00001cba: ADD
00001cbb: MLOAD
00001cbc: DUP9
00001cbd: PUSH1 0x60
00001cbf: ADD
00001cc0: MLOAD
00001cc1: DUP7
00001cc2: PUSH1 0x01
00001cc4: PUSH1 0x01
00001cc6: PUSH1 0xa0
00001cc8: SHL
00001cc9: SUB
00001cca: AND
00001ccb: DUP11
00001ccc: PUSH1 0x40
00001cce: ADD
00001ccf: MLOAD
00001cd0: PUSH1 0x01
00001cd2: PUSH1 0x01
00001cd4: PUSH1 0xa0
00001cd6: SHL
00001cd7: SUB
00001cd8: AND
00001cd9: LT
00001cda: DUP9
00001cdb: DUP9
00001cdc: PUSH1 0x60
00001cde: SHL
00001cdf: DUP13
00001ce0: PUSH1 0x80
00001ce2: ADD
00001ce3: MLOAD
00001ce4: PUSH2 0x14dc
00001ce7: JUMP
00001ce8: JUMPDEST
00001ce9: LT
00001cea: ISZERO
00001ceb: PUSH2 0x1ca8
00001cee: JUMPI
00001cef: PUSH1 0x40
00001cf1: MLOAD
00001cf2: PUSH3 0x461bcd
00001cf6: PUSH1 0xe5
00001cf8: SHL
00001cf9: DUP2
00001cfa: MSTORE
00001cfb: PUSH1 0x20
00001cfd: PUSH1 0x04
00001cff: DUP3
00001d00: ADD
00001d01: MSTORE
00001d02: PUSH1 0x03
00001d04: PUSH1 0x24
00001d06: DUP3
00001d07: ADD
00001d08: MSTORE
00001d09: PUSH3 0x563333
00001d0d: PUSH1 0xe8
00001d0f: SHL
00001d10: PUSH1 0x44
00001d12: DUP3
00001d13: ADD
00001d14: MSTORE
00001d15: PUSH1 0x64
00001d17: ADD
00001d18: PUSH2 0x01d2
00001d1b: JUMP
00001d1c: JUMPDEST
00001d1d: PUSH2 0x1d27
00001d20: DUP3
00001d21: DUP5
00001d22: DUP4
00001d23: PUSH2 0x2095
00001d26: JUMP
00001d27: JUMPDEST
00001d28: PUSH2 0x1d58
00001d2b: JUMPI
00001d2c: PUSH1 0x40
00001d2e: MLOAD
00001d2f: PUSH3 0x461bcd
00001d33: PUSH1 0xe5
00001d35: SHL
00001d36: DUP2
00001d37: MSTORE
00001d38: PUSH1 0x20
00001d3a: PUSH1 0x04
00001d3c: DUP3
00001d3d: ADD
00001d3e: MSTORE
00001d3f: PUSH1 0x02
00001d41: PUSH1 0x24
00001d43: DUP3
00001d44: ADD
00001d45: MSTORE
00001d46: PUSH2 0x0563
00001d49: PUSH1 0xf4
00001d4b: SHL
00001d4c: PUSH1 0x44
00001d4e: DUP3
00001d4f: ADD
00001d50: MSTORE
00001d51: PUSH1 0x64
00001d53: ADD
00001d54: PUSH2 0x01d2
00001d57: JUMP
00001d58: JUMPDEST
00001d59: POP
00001d5a: POP
00001d5b: POP
00001d5c: POP
00001d5d: POP
00001d5e: POP
00001d5f: POP
00001d60: POP
00001d61: POP
00001d62: POP
00001d63: POP
00001d64: JUMP
00001d65: JUMPDEST
00001d66: PUSH1 0x40
00001d68: DUP1
00001d69: MLOAD
00001d6a: PUSH1 0x01
00001d6c: PUSH1 0x01
00001d6e: PUSH1 0xa0
00001d70: SHL
00001d71: SUB
00001d72: DUP5
00001d73: DUP2
00001d74: AND
00001d75: PUSH1 0x24
00001d77: DUP4
00001d78: ADD
00001d79: MSTORE
00001d7a: PUSH1 0x44
00001d7c: DUP1
00001d7d: DUP4
00001d7e: ADD
00001d7f: DUP6
00001d80: SWAP1
00001d81: MSTORE
00001d82: DUP4
00001d83: MLOAD
00001d84: DUP1
00001d85: DUP5
00001d86: SUB
00001d87: SWAP1
00001d88: SWAP2
00001d89: ADD
00001d8a: DUP2
00001d8b: MSTORE
00001d8c: PUSH1 0x64
00001d8e: SWAP1
00001d8f: SWAP3
00001d90: ADD
00001d91: DUP4
00001d92: MSTORE
00001d93: PUSH1 0x20
00001d95: DUP3
00001d96: ADD
00001d97: DUP1
00001d98: MLOAD
00001d99: PUSH1 0x01
00001d9b: PUSH1 0x01
00001d9d: PUSH1 0xe0
00001d9f: SHL
00001da0: SUB
00001da1: AND
00001da2: PUSH4 0xa9059cbb
00001da7: PUSH1 0xe0
00001da9: SHL
00001daa: OR
00001dab: SWAP1
00001dac: MSTORE
00001dad: SWAP2
00001dae: MLOAD
00001daf: PUSH1 0x00
00001db1: SWAP3
00001db2: DUP4
00001db3: SWAP3
00001db4: SWAP1
00001db5: DUP8
00001db6: AND
00001db7: SWAP2
00001db8: PUSH2 0x1dc1
00001dbb: SWAP2
00001dbc: SWAP1
00001dbd: PUSH2 0x2632
00001dc0: JUMP
00001dc1: JUMPDEST
00001dc2: PUSH1 0x00
00001dc4: PUSH1 0x40
00001dc6: MLOAD
00001dc7: DUP1
00001dc8: DUP4
00001dc9: SUB
00001dca: DUP2
00001dcb: PUSH1 0x00
00001dcd: DUP7
00001dce: GAS
00001dcf: CALL
00001dd0: SWAP2
00001dd1: POP
00001dd2: POP
00001dd3: RETURNDATASIZE
00001dd4: DUP1
00001dd5: PUSH1 0x00
00001dd7: DUP2
00001dd8: EQ
00001dd9: PUSH2 0x1dfe
00001ddc: JUMPI
00001ddd: PUSH1 0x40
00001ddf: MLOAD
00001de0: SWAP2
00001de1: POP
00001de2: PUSH1 0x1f
00001de4: NOT
00001de5: PUSH1 0x3f
00001de7: RETURNDATASIZE
00001de8: ADD
00001de9: AND
00001dea: DUP3
00001deb: ADD
00001dec: PUSH1 0x40
00001dee: MSTORE
00001def: RETURNDATASIZE
00001df0: DUP3
00001df1: MSTORE
00001df2: RETURNDATASIZE
00001df3: PUSH1 0x00
00001df5: PUSH1 0x20
00001df7: DUP5
00001df8: ADD
00001df9: RETURNDATACOPY
00001dfa: PUSH2 0x1e03
00001dfd: JUMP
00001dfe: JUMPDEST
00001dff: PUSH1 0x60
00001e01: SWAP2
00001e02: POP
00001e03: JUMPDEST
00001e04: POP
00001e05: SWAP2
00001e06: POP
00001e07: SWAP2
00001e08: POP
00001e09: DUP2
00001e0a: DUP1
00001e0b: ISZERO
00001e0c: PUSH2 0x1e2d
00001e0f: JUMPI
00001e10: POP
00001e11: DUP1
00001e12: MLOAD
00001e13: ISZERO
00001e14: DUP1
00001e15: PUSH2 0x1e2d
00001e18: JUMPI
00001e19: POP
00001e1a: DUP1
00001e1b: DUP1
00001e1c: PUSH1 0x20
00001e1e: ADD
00001e1f: SWAP1
00001e20: MLOAD
00001e21: DUP2
00001e22: ADD
00001e23: SWAP1
00001e24: PUSH2 0x1e2d
00001e27: SWAP2
00001e28: SWAP1
00001e29: PUSH2 0x2812
00001e2c: JUMP
00001e2d: JUMPDEST
00001e2e: PUSH2 0x0f3b
00001e31: JUMPI
00001e32: PUSH1 0x40
00001e34: MLOAD
00001e35: PUSH3 0x461bcd
00001e39: PUSH1 0xe5
00001e3b: SHL
00001e3c: DUP2
00001e3d: MSTORE
00001e3e: PUSH1 0x20
00001e40: PUSH1 0x04
00001e42: DUP3
00001e43: ADD
00001e44: MSTORE
00001e45: PUSH1 0x2d
00001e47: PUSH1 0x24
00001e49: DUP3
00001e4a: ADD
00001e4b: MSTORE
00001e4c: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665723a207472
00001e6d: PUSH1 0x44
00001e6f: DUP3
00001e70: ADD
00001e71: MSTORE
00001e72: PUSH13 0x185b9cd9995c8819985a5b1959
00001e80: PUSH1 0x9a
00001e82: SHL
00001e83: PUSH1 0x64
00001e85: DUP3
00001e86: ADD
00001e87: MSTORE
00001e88: PUSH1 0x84
00001e8a: ADD
00001e8b: PUSH2 0x01d2
00001e8e: JUMP
00001e8f: JUMPDEST
00001e90: PUSH2 0x0489
00001e93: PUSH20 0xd8349e874934593c85eafa8e534b495d80848e41
00001ea8: CALLER
00001ea9: EQ
00001eaa: DUP1
00001eab: PUSH2 0x1ec7
00001eae: JUMPI
00001eaf: POP
00001eb0: PUSH20 0x2f5abb45c283a7e6661c205d38215b10ee6fb064
00001ec5: CALLER
00001ec6: EQ
00001ec7: JUMPDEST
00001ec8: DUP1
00001ec9: PUSH2 0x1ee5
00001ecc: JUMPI
00001ecd: POP
00001ece: PUSH20 0xc5798cd00276dbfdcd85bc751f5edace052e5cdd
00001ee3: CALLER
00001ee4: EQ
00001ee5: JUMPDEST
00001ee6: DUP1
00001ee7: PUSH2 0x1f03
00001eea: JUMPI
00001eeb: POP
00001eec: PUSH20 0xe00456d3af6e9b8715a9c29c88c1932983e064c1
00001f01: CALLER
00001f02: EQ
00001f03: JUMPDEST
00001f04: DUP1
00001f05: PUSH2 0x1f21
00001f08: JUMPI
00001f09: POP
00001f0a: PUSH20 0x6e6759b3ef49bab693127c9ea126eb6e549bc3d3
00001f1f: CALLER
00001f20: EQ
00001f21: JUMPDEST
00001f22: DUP1
00001f23: PUSH2 0x0466
00001f26: JUMPI
00001f27: POP
00001f28: PUSH20 0xea35df26f76aae16bb7175695525d562efae138f
00001f3d: CALLER
00001f3e: EQ
00001f3f: DUP1
00001f40: PUSH2 0x0484
00001f43: JUMPI
00001f44: POP
00001f45: PUSH20 0x71889d0c1101dc57045d08962e1a5c2466629112
00001f5a: CALLER
00001f5b: EQ
00001f5c: PUSH2 0x13da
00001f5f: JUMP
00001f60: JUMPDEST
00001f61: PUSH1 0x40
00001f63: MLOAD
00001f64: PUSH4 0x70a08231
00001f69: PUSH1 0xe0
00001f6b: SHL
00001f6c: DUP2
00001f6d: MSTORE
00001f6e: ADDRESS
00001f6f: PUSH1 0x04
00001f71: DUP3
00001f72: ADD
00001f73: MSTORE
00001f74: PUSH1 0x00
00001f76: SWAP1
00001f77: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00001f8c: SWAP1
00001f8d: PUSH4 0x70a08231
00001f92: SWAP1
00001f93: PUSH1 0x24
00001f95: ADD
00001f96: PUSH1 0x20
00001f98: PUSH1 0x40
00001f9a: MLOAD
00001f9b: DUP1
00001f9c: DUP4
00001f9d: SUB
00001f9e: DUP2
00001f9f: DUP7
00001fa0: GAS
00001fa1: STATICCALL
00001fa2: ISZERO
00001fa3: DUP1
00001fa4: ISZERO
00001fa5: PUSH2 0x1fb2
00001fa8: JUMPI
00001fa9: RETURNDATASIZE
00001faa: PUSH1 0x00
00001fac: DUP1
00001fad: RETURNDATACOPY
00001fae: RETURNDATASIZE
00001faf: PUSH1 0x00
00001fb1: REVERT
00001fb2: JUMPDEST
00001fb3: POP
00001fb4: POP
00001fb5: POP
00001fb6: POP
00001fb7: PUSH1 0x40
00001fb9: MLOAD
00001fba: RETURNDATASIZE
00001fbb: PUSH1 0x1f
00001fbd: NOT
00001fbe: PUSH1 0x1f
00001fc0: DUP3
00001fc1: ADD
00001fc2: AND
00001fc3: DUP3
00001fc4: ADD
00001fc5: DUP1
00001fc6: PUSH1 0x40
00001fc8: MSTORE
00001fc9: POP
00001fca: DUP2
00001fcb: ADD
00001fcc: SWAP1
00001fcd: PUSH2 0x1fd6
00001fd0: SWAP2
00001fd1: SWAP1
00001fd2: PUSH2 0x26bd
00001fd5: JUMP
00001fd6: JUMPDEST
00001fd7: SWAP1
00001fd8: POP
00001fd9: CALLVALUE
00001fda: DUP2
00001fdb: GT
00001fdc: PUSH2 0x200d
00001fdf: JUMPI
00001fe0: PUSH1 0x40
00001fe2: MLOAD
00001fe3: PUSH3 0x461bcd
00001fe7: PUSH1 0xe5
00001fe9: SHL
00001fea: DUP2
00001feb: MSTORE
00001fec: PUSH1 0x20
00001fee: PUSH1 0x04
00001ff0: DUP3
00001ff1: ADD
00001ff2: MSTORE
00001ff3: PUSH1 0x03
00001ff5: PUSH1 0x24
00001ff7: DUP3
00001ff8: ADD
00001ff9: MSTORE
00001ffa: PUSH3 0x050313
00001ffe: PUSH1 0xec
00002000: SHL
00002001: PUSH1 0x44
00002003: DUP3
00002004: ADD
00002005: MSTORE
00002006: PUSH1 0x64
00002008: ADD
00002009: PUSH2 0x01d2
0000200c: JUMP
0000200d: JUMPDEST
0000200e: PUSH2 0x2017
00002011: CALLVALUE
00002012: DUP3
00002013: PUSH2 0x230d
00002016: JUMP
00002017: JUMPDEST
00002018: PUSH1 0x01
0000201a: SLOAD
0000201b: SWAP1
0000201c: SWAP2
0000201d: POP
0000201e: DUP1
0000201f: DUP3
00002020: GT
00002021: PUSH2 0x2052
00002024: JUMPI
00002025: PUSH1 0x40
00002027: MLOAD
00002028: PUSH3 0x461bcd
0000202c: PUSH1 0xe5
0000202e: SHL
0000202f: DUP2
00002030: MSTORE
00002031: PUSH1 0x20
00002033: PUSH1 0x04
00002035: DUP3
00002036: ADD
00002037: MSTORE
00002038: PUSH1 0x03
0000203a: PUSH1 0x24
0000203c: DUP3
0000203d: ADD
0000203e: MSTORE
0000203f: PUSH3 0x503131
00002043: PUSH1 0xe8
00002045: SHL
00002046: PUSH1 0x44
00002048: DUP3
00002049: ADD
0000204a: MSTORE
0000204b: PUSH1 0x64
0000204d: ADD
0000204e: PUSH2 0x01d2
00002051: JUMP
00002052: JUMPDEST
00002053: PUSH1 0x00
00002055: PUSH2 0x205e
00002058: DUP3
00002059: DUP5
0000205a: PUSH2 0x230d
0000205d: JUMP
0000205e: JUMPDEST
0000205f: SWAP1
00002060: POP
00002061: DUP4
00002062: DUP2
00002063: GT
00002064: PUSH2 0x0d36
00002067: JUMPI
00002068: PUSH1 0x40
0000206a: MLOAD
0000206b: PUSH3 0x461bcd
0000206f: PUSH1 0xe5
00002071: SHL
00002072: DUP2
00002073: MSTORE
00002074: PUSH1 0x20
00002076: PUSH1 0x04
00002078: DUP3
00002079: ADD
0000207a: MSTORE
0000207b: PUSH1 0x03
0000207d: PUSH1 0x24
0000207f: DUP3
00002080: ADD
00002081: MSTORE
00002082: PUSH3 0x281899
00002086: PUSH1 0xe9
00002088: SHL
00002089: PUSH1 0x44
0000208b: DUP3
0000208c: ADD
0000208d: MSTORE
0000208e: PUSH1 0x64
00002090: ADD
00002091: PUSH2 0x01d2
00002094: JUMP
00002095: JUMPDEST
00002096: PUSH1 0x00
00002098: DUP2
00002099: PUSH1 0x00
0000209b: SUB
0000209c: PUSH2 0x20a7
0000209f: JUMPI
000020a0: POP
000020a1: PUSH1 0x01
000020a3: PUSH2 0x20db
000020a6: JUMP
000020a7: JUMPDEST
000020a8: PUSH1 0x40
000020aa: MLOAD
000020ab: PUSH4 0xa9059cbb
000020b0: PUSH1 0xe0
000020b2: SHL
000020b3: DUP2
000020b4: MSTORE
000020b5: PUSH1 0x01
000020b7: PUSH1 0x01
000020b9: PUSH1 0xa0
000020bb: SHL
000020bc: SUB
000020bd: DUP5
000020be: AND
000020bf: PUSH1 0x04
000020c1: DUP3
000020c2: ADD
000020c3: MSTORE
000020c4: DUP3
000020c5: PUSH1 0x24
000020c7: DUP3
000020c8: ADD
000020c9: MSTORE
000020ca: PUSH1 0x20
000020cc: DUP2
000020cd: PUSH1 0x44
000020cf: DUP4
000020d0: PUSH1 0x00
000020d2: DUP10
000020d3: GAS
000020d4: CALL
000020d5: SWAP1
000020d6: MLOAD
000020d7: SWAP4
000020d8: POP
000020d9: SWAP1
000020da: POP
000020db: JUMPDEST
000020dc: SWAP4
000020dd: SWAP3
000020de: POP
000020df: POP
000020e0: POP
000020e1: JUMP
000020e2: JUMPDEST
000020e3: PUSH1 0x40
000020e5: MLOAD
000020e6: PUSH4 0x022c0d9f
000020eb: PUSH1 0xe0
000020ed: SHL
000020ee: DUP2
000020ef: MSTORE
000020f0: PUSH1 0x04
000020f2: DUP2
000020f3: ADD
000020f4: DUP6
000020f5: SWAP1
000020f6: MSTORE
000020f7: PUSH1 0x24
000020f9: DUP2
000020fa: ADD
000020fb: DUP5
000020fc: SWAP1
000020fd: MSTORE
000020fe: PUSH1 0x00
00002100: SWAP1
00002101: ADDRESS
00002102: SWAP1
00002103: DUP4
00002104: DUP1
00002105: ISZERO
00002106: PUSH2 0x2114
00002109: JUMPI
0000210a: DUP5
0000210b: PUSH1 0x44
0000210d: DUP4
0000210e: ADD
0000210f: MSTORE
00002110: PUSH2 0x211b
00002113: JUMP
00002114: JUMPDEST
00002115: DUP3
00002116: PUSH1 0x44
00002118: DUP4
00002119: ADD
0000211a: MSTORE
0000211b: JUMPDEST
0000211c: POP
0000211d: PUSH1 0x80
0000211f: PUSH1 0x64
00002121: DUP3
00002122: ADD
00002123: MSTORE
00002124: PUSH1 0x00
00002126: PUSH1 0x84
00002128: DUP3
00002129: ADD
0000212a: MSTORE
0000212b: PUSH1 0x20
0000212d: DUP2
0000212e: PUSH1 0xa4
00002130: DUP4
00002131: PUSH1 0x00
00002133: DUP10
00002134: GAS
00002135: CALL
00002136: SWAP8
00002137: SWAP7
00002138: POP
00002139: POP
0000213a: POP
0000213b: POP
0000213c: POP
0000213d: POP
0000213e: POP
0000213f: JUMP
00002140: JUMPDEST
00002141: PUSH1 0x00
00002143: DUP1
00002144: PUSH2 0x214c
00002147: DUP4
00002148: PUSH2 0x22b8
0000214b: JUMP
0000214c: JUMPDEST
0000214d: SWAP2
0000214e: POP
0000214f: SWAP2
00002150: POP
00002151: SWAP2
00002152: POP
00002153: SWAP2
00002154: JUMP
00002155: JUMPDEST
00002156: PUSH1 0x00
00002158: DUP1
00002159: PUSH1 0x00
0000215b: DUP6
0000215c: PUSH2 0x2179
0000215f: JUMPI
00002160: PUSH20 0xfffd8963efd1fc6a506488495d951d5263988d25
00002175: PUSH2 0x2180
00002178: JUMP
00002179: JUMPDEST
0000217a: PUSH5 0x01000276a4
00002180: JUMPDEST
00002181: PUSH1 0x40
00002183: MLOAD
00002184: PUSH4 0x02515961
00002189: PUSH1 0xe3
0000218b: SHL
0000218c: DUP2
0000218d: MSTORE
0000218e: SWAP1
0000218f: SWAP2
00002190: POP
00002191: ADDRESS
00002192: SWAP1
00002193: DUP9
00002194: DUP1
00002195: ISZERO
00002196: PUSH2 0x21a4
00002199: JUMPI
0000219a: DUP10
0000219b: PUSH1 0x04
0000219d: DUP4
0000219e: ADD
0000219f: MSTORE
000021a0: PUSH2 0x21ab
000021a3: JUMP
000021a4: JUMPDEST
000021a5: DUP3
000021a6: PUSH1 0x04
000021a8: DUP4
000021a9: ADD
000021aa: MSTORE
000021ab: JUMPDEST
000021ac: POP
000021ad: DUP8
000021ae: PUSH1 0x24
000021b0: DUP3
000021b1: ADD
000021b2: MSTORE
000021b3: DUP7
000021b4: PUSH1 0x44
000021b6: DUP3
000021b7: ADD
000021b8: MSTORE
000021b9: DUP3
000021ba: PUSH1 0x64
000021bc: DUP3
000021bd: ADD
000021be: MSTORE
000021bf: PUSH1 0xa0
000021c1: PUSH1 0x84
000021c3: DUP3
000021c4: ADD
000021c5: MSTORE
000021c6: DUP6
000021c7: MLOAD
000021c8: DUP1
000021c9: PUSH1 0xa4
000021cb: DUP4
000021cc: ADD
000021cd: MSTORE
000021ce: PUSH1 0x00
000021d0: JUMPDEST
000021d1: DUP2
000021d2: DUP2
000021d3: LT
000021d4: ISZERO
000021d5: PUSH2 0x21ed
000021d8: JUMPI
000021d9: PUSH1 0x20
000021db: DUP2
000021dc: DUP10
000021dd: ADD
000021de: DUP2
000021df: ADD
000021e0: MLOAD
000021e1: PUSH1 0xc4
000021e3: DUP6
000021e4: DUP5
000021e5: ADD
000021e6: ADD
000021e7: MSTORE
000021e8: ADD
000021e9: PUSH2 0x21d0
000021ec: JUMP
000021ed: JUMPDEST
000021ee: POP
000021ef: PUSH1 0x40
000021f1: DUP3
000021f2: DUP3
000021f3: PUSH1 0xc4
000021f5: ADD
000021f6: DUP5
000021f7: PUSH1 0x00
000021f9: DUP16
000021fa: GAS
000021fb: CALL
000021fc: SWAP1
000021fd: POP
000021fe: DUP1
000021ff: PUSH2 0x2207
00002202: JUMPI
00002203: PUSH1 0x00
00002205: DUP1
00002206: REVERT
00002207: JUMPDEST
00002208: POP
00002209: DUP1
0000220a: MLOAD
0000220b: SWAP5
0000220c: POP
0000220d: PUSH1 0x20
0000220f: DUP2
00002210: ADD
00002211: MLOAD
00002212: SWAP4
00002213: POP
00002214: POP
00002215: POP
00002216: POP
00002217: SWAP6
00002218: POP
00002219: SWAP6
0000221a: SWAP4
0000221b: POP
0000221c: POP
0000221d: POP
0000221e: POP
0000221f: JUMP
00002220: JUMPDEST
00002221: PUSH20 0xd8349e874934593c85eafa8e534b495d80848e41
00002236: ORIGIN
00002237: EQ
00002238: DUP1
00002239: PUSH2 0x2255
0000223c: JUMPI
0000223d: POP
0000223e: PUSH20 0x2f5abb45c283a7e6661c205d38215b10ee6fb064
00002253: ORIGIN
00002254: EQ
00002255: JUMPDEST
00002256: DUP1
00002257: PUSH2 0x2273
0000225a: JUMPI
0000225b: POP
0000225c: PUSH20 0xc5798cd00276dbfdcd85bc751f5edace052e5cdd
00002271: ORIGIN
00002272: EQ
00002273: JUMPDEST
00002274: DUP1
00002275: PUSH2 0x2291
00002278: JUMPI
00002279: POP
0000227a: PUSH20 0xe00456d3af6e9b8715a9c29c88c1932983e064c1
0000228f: ORIGIN
00002290: EQ
00002291: JUMPDEST
00002292: DUP1
00002293: PUSH2 0x22af
00002296: JUMPI
00002297: POP
00002298: PUSH20 0x71889d0c1101dc57045d08962e1a5c2466629112
000022ad: ORIGIN
000022ae: EQ
000022af: JUMPDEST
000022b0: PUSH2 0x0489
000022b3: JUMPI
000022b4: PUSH1 0x00
000022b6: DUP1
000022b7: REVERT
000022b8: JUMPDEST
000022b9: PUSH1 0x00
000022bb: DUP1
000022bc: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc1
000022d1: NOT
000022d2: PUSH1 0x01
000022d4: PUSH1 0x01
000022d6: PUSH1 0xa0
000022d8: SHL
000022d9: SUB
000022da: DUP5
000022db: AND
000022dc: ADD
000022dd: PUSH2 0x22ec
000022e0: JUMPI
000022e1: POP
000022e2: PUSH1 0x00
000022e4: SWAP3
000022e5: PUSH1 0x01
000022e7: SWAP3
000022e8: POP
000022e9: SWAP1
000022ea: POP
000022eb: JUMP
000022ec: JUMPDEST
000022ed: POP
000022ee: PUSH1 0x00
000022f0: SWAP3
000022f1: DUP4
000022f2: SWAP3
000022f3: POP
000022f4: SWAP1
000022f5: POP
000022f6: JUMP
000022f7: JUMPDEST
000022f8: PUSH4 0x4e487b71
000022fd: PUSH1 0xe0
000022ff: SHL
00002300: PUSH1 0x00
00002302: MSTORE
00002303: PUSH1 0x11
00002305: PUSH1 0x04
00002307: MSTORE
00002308: PUSH1 0x24
0000230a: PUSH1 0x00
0000230c: REVERT
0000230d: JUMPDEST
0000230e: DUP2
0000230f: DUP2
00002310: SUB
00002311: DUP2
00002312: DUP2
00002313: GT
00002314: ISZERO
00002315: PUSH2 0x1490
00002318: JUMPI
00002319: PUSH2 0x1490
0000231c: PUSH2 0x22f7
0000231f: JUMP
00002320: JUMPDEST
00002321: PUSH1 0x00
00002323: PUSH1 0x20
00002325: DUP3
00002326: DUP5
00002327: SUB
00002328: SLT
00002329: ISZERO
0000232a: PUSH2 0x2332
0000232d: JUMPI
0000232e: PUSH1 0x00
00002330: DUP1
00002331: REVERT
00002332: JUMPDEST
00002333: POP
00002334: CALLDATALOAD
00002335: SWAP2
00002336: SWAP1
00002337: POP
00002338: JUMP
00002339: JUMPDEST
0000233a: DUP1
0000233b: CALLDATALOAD
0000233c: PUSH1 0x01
0000233e: PUSH1 0x01
00002340: PUSH1 0xa0
00002342: SHL
00002343: SUB
00002344: DUP2
00002345: AND
00002346: DUP2
00002347: EQ
00002348: PUSH2 0x2350
0000234b: JUMPI
0000234c: PUSH1 0x00
0000234e: DUP1
0000234f: REVERT
00002350: JUMPDEST
00002351: SWAP2
00002352: SWAP1
00002353: POP
00002354: JUMP
00002355: JUMPDEST
00002356: PUSH1 0x00
00002358: DUP1
00002359: DUP4
0000235a: PUSH1 0x1f
0000235c: DUP5
0000235d: ADD
0000235e: SLT
0000235f: PUSH2 0x2367
00002362: JUMPI
00002363: PUSH1 0x00
00002365: DUP1
00002366: REVERT
00002367: JUMPDEST
00002368: POP
00002369: DUP2
0000236a: CALLDATALOAD
0000236b: PUSH8 0xffffffffffffffff
00002374: DUP2
00002375: GT
00002376: ISZERO
00002377: PUSH2 0x237f
0000237a: JUMPI
0000237b: PUSH1 0x00
0000237d: DUP1
0000237e: REVERT
0000237f: JUMPDEST
00002380: PUSH1 0x20
00002382: DUP4
00002383: ADD
00002384: SWAP2
00002385: POP
00002386: DUP4
00002387: PUSH1 0x20
00002389: DUP3
0000238a: DUP6
0000238b: ADD
0000238c: ADD
0000238d: GT
0000238e: ISZERO
0000238f: PUSH2 0x2397
00002392: JUMPI
00002393: PUSH1 0x00
00002395: DUP1
00002396: REVERT
00002397: JUMPDEST
00002398: SWAP3
00002399: POP
0000239a: SWAP3
0000239b: SWAP1
0000239c: POP
0000239d: JUMP
0000239e: JUMPDEST
0000239f: PUSH1 0x00
000023a1: PUSH1 0x40
000023a3: DUP3
000023a4: DUP5
000023a5: SUB
000023a6: SLT
000023a7: ISZERO
000023a8: PUSH2 0x23b0
000023ab: JUMPI
000023ac: PUSH1 0x00
000023ae: DUP1
000023af: REVERT
000023b0: JUMPDEST
000023b1: POP
000023b2: SWAP2
000023b3: SWAP1
000023b4: POP
000023b5: JUMP
000023b6: JUMPDEST
000023b7: PUSH1 0x00
000023b9: DUP1
000023ba: PUSH1 0x00
000023bc: DUP1
000023bd: PUSH1 0x80
000023bf: DUP6
000023c0: DUP8
000023c1: SUB
000023c2: SLT
000023c3: ISZERO
000023c4: PUSH2 0x23cc
000023c7: JUMPI
000023c8: PUSH1 0x00
000023ca: DUP1
000023cb: REVERT
000023cc: JUMPDEST
000023cd: PUSH2 0x23d5
000023d0: DUP6
000023d1: PUSH2 0x2339
000023d4: JUMP
000023d5: JUMPDEST
000023d6: SWAP4
000023d7: POP
000023d8: PUSH1 0x20
000023da: DUP6
000023db: ADD
000023dc: CALLDATALOAD
000023dd: PUSH8 0xffffffffffffffff
000023e6: DUP2
000023e7: GT
000023e8: ISZERO
000023e9: PUSH2 0x23f1
000023ec: JUMPI
000023ed: PUSH1 0x00
000023ef: DUP1
000023f0: REVERT
000023f1: JUMPDEST
000023f2: PUSH2 0x23fd
000023f5: DUP8
000023f6: DUP3
000023f7: DUP9
000023f8: ADD
000023f9: PUSH2 0x2355
000023fc: JUMP
000023fd: JUMPDEST
000023fe: SWAP1
000023ff: SWAP5
00002400: POP
00002401: SWAP3
00002402: POP
00002403: PUSH2 0x2411
00002406: SWAP1
00002407: POP
00002408: DUP7
00002409: PUSH1 0x40
0000240b: DUP8
0000240c: ADD
0000240d: PUSH2 0x239e
00002410: JUMP
00002411: JUMPDEST
00002412: SWAP1
00002413: POP
00002414: SWAP3
00002415: SWAP6
00002416: SWAP2
00002417: SWAP5
00002418: POP
00002419: SWAP3
0000241a: POP
0000241b: JUMP
0000241c: JUMPDEST
0000241d: PUSH1 0x00
0000241f: DUP1
00002420: PUSH1 0x00
00002422: DUP1
00002423: PUSH1 0x60
00002425: DUP6
00002426: DUP8
00002427: SUB
00002428: SLT
00002429: ISZERO
0000242a: PUSH2 0x2432
0000242d: JUMPI
0000242e: PUSH1 0x00
00002430: DUP1
00002431: REVERT
00002432: JUMPDEST
00002433: DUP5
00002434: CALLDATALOAD
00002435: SWAP4
00002436: POP
00002437: PUSH1 0x20
00002439: DUP6
0000243a: ADD
0000243b: CALLDATALOAD
0000243c: SWAP3
0000243d: POP
0000243e: PUSH1 0x40
00002440: DUP6
00002441: ADD
00002442: CALLDATALOAD
00002443: PUSH8 0xffffffffffffffff
0000244c: DUP2
0000244d: GT
0000244e: ISZERO
0000244f: PUSH2 0x2457
00002452: JUMPI
00002453: PUSH1 0x00
00002455: DUP1
00002456: REVERT
00002457: JUMPDEST
00002458: PUSH2 0x2463
0000245b: DUP8
0000245c: DUP3
0000245d: DUP9
0000245e: ADD
0000245f: PUSH2 0x2355
00002462: JUMP
00002463: JUMPDEST
00002464: SWAP6
00002465: SWAP9
00002466: SWAP5
00002467: SWAP8
00002468: POP
00002469: SWAP6
0000246a: POP
0000246b: POP
0000246c: POP
0000246d: POP
0000246e: JUMP
0000246f: JUMPDEST
00002470: PUSH1 0x00
00002472: PUSH1 0x20
00002474: DUP3
00002475: DUP5
00002476: SUB
00002477: SLT
00002478: ISZERO
00002479: PUSH2 0x2481
0000247c: JUMPI
0000247d: PUSH1 0x00
0000247f: DUP1
00002480: REVERT
00002481: JUMPDEST
00002482: PUSH2 0x20db
00002485: DUP3
00002486: PUSH2 0x2339
00002489: JUMP
0000248a: JUMPDEST
0000248b: PUSH1 0x00
0000248d: PUSH1 0x60
0000248f: DUP3
00002490: DUP5
00002491: SUB
00002492: SLT
00002493: ISZERO
00002494: PUSH2 0x23b0
00002497: JUMPI
00002498: PUSH1 0x00
0000249a: DUP1
0000249b: REVERT
0000249c: JUMPDEST
0000249d: PUSH1 0x00
0000249f: DUP1
000024a0: PUSH1 0x00
000024a2: DUP1
000024a3: PUSH1 0x00
000024a5: PUSH1 0xa0
000024a7: DUP7
000024a8: DUP9
000024a9: SUB
000024aa: SLT
000024ab: ISZERO
000024ac: PUSH2 0x24b4
000024af: JUMPI
000024b0: PUSH1 0x00
000024b2: DUP1
000024b3: REVERT
000024b4: JUMPDEST
000024b5: PUSH2 0x24be
000024b8: DUP8
000024b9: DUP8
000024ba: PUSH2 0x248a
000024bd: JUMP
000024be: JUMPDEST
000024bf: SWAP5
000024c0: POP
000024c1: PUSH1 0x60
000024c3: DUP7
000024c4: ADD
000024c5: CALLDATALOAD
000024c6: PUSH8 0xffffffffffffffff
000024cf: DUP2
000024d0: GT
000024d1: ISZERO
000024d2: PUSH2 0x24da
000024d5: JUMPI
000024d6: PUSH1 0x00
000024d8: DUP1
000024d9: REVERT
000024da: JUMPDEST
000024db: PUSH2 0x24e6
000024de: DUP9
000024df: DUP3
000024e0: DUP10
000024e1: ADD
000024e2: PUSH2 0x2355
000024e5: JUMP
000024e6: JUMPDEST
000024e7: SWAP1
000024e8: SWAP6
000024e9: POP
000024ea: SWAP4
000024eb: POP
000024ec: POP
000024ed: PUSH1 0x80
000024ef: DUP7
000024f0: ADD
000024f1: CALLDATALOAD
000024f2: PUSH8 0xffffffffffffffff
000024fb: DUP2
000024fc: GT
000024fd: ISZERO
000024fe: PUSH2 0x2506
00002501: JUMPI
00002502: PUSH1 0x00
00002504: DUP1
00002505: REVERT
00002506: JUMPDEST
00002507: PUSH2 0x2512
0000250a: DUP9
0000250b: DUP3
0000250c: DUP10
0000250d: ADD
0000250e: PUSH2 0x2355
00002511: JUMP
00002512: JUMPDEST
00002513: SWAP7
00002514: SWAP10
00002515: SWAP6
00002516: SWAP9
00002517: POP
00002518: SWAP4
00002519: SWAP7
0000251a: POP
0000251b: SWAP3
0000251c: SWAP5
0000251d: SWAP4
0000251e: SWAP3
0000251f: POP
00002520: POP
00002521: POP
00002522: JUMP
00002523: JUMPDEST
00002524: PUSH1 0x00
00002526: DUP1
00002527: PUSH1 0x00
00002529: PUSH1 0x80
0000252b: DUP5
0000252c: DUP7
0000252d: SUB
0000252e: SLT
0000252f: ISZERO
00002530: PUSH2 0x2538
00002533: JUMPI
00002534: PUSH1 0x00
00002536: DUP1
00002537: REVERT
00002538: JUMPDEST
00002539: PUSH2 0x2542
0000253c: DUP6
0000253d: DUP6
0000253e: PUSH2 0x248a
00002541: JUMP
00002542: JUMPDEST
00002543: SWAP3
00002544: POP
00002545: PUSH1 0x60
00002547: DUP5
00002548: ADD
00002549: CALLDATALOAD
0000254a: PUSH8 0xffffffffffffffff
00002553: DUP2
00002554: GT
00002555: ISZERO
00002556: PUSH2 0x255e
00002559: JUMPI
0000255a: PUSH1 0x00
0000255c: DUP1
0000255d: REVERT
0000255e: JUMPDEST
0000255f: PUSH2 0x256a
00002562: DUP7
00002563: DUP3
00002564: DUP8
00002565: ADD
00002566: PUSH2 0x2355
00002569: JUMP
0000256a: JUMPDEST
0000256b: SWAP5
0000256c: SWAP8
0000256d: SWAP1
0000256e: SWAP7
0000256f: POP
00002570: SWAP4
00002571: SWAP5
00002572: POP
00002573: POP
00002574: POP
00002575: POP
00002576: JUMP
00002577: JUMPDEST
00002578: PUSH1 0x00
0000257a: DUP1
0000257b: PUSH1 0x00
0000257d: DUP1
0000257e: PUSH1 0x60
00002580: DUP6
00002581: DUP8
00002582: SUB
00002583: SLT
00002584: ISZERO
00002585: PUSH2 0x258d
00002588: JUMPI
00002589: PUSH1 0x00
0000258b: DUP1
0000258c: REVERT
0000258d: JUMPDEST
0000258e: PUSH2 0x2596
00002591: DUP6
00002592: PUSH2 0x2339
00002595: JUMP
00002596: JUMPDEST
00002597: SWAP4
00002598: POP
00002599: PUSH1 0x20
0000259b: DUP6
0000259c: ADD
0000259d: CALLDATALOAD
0000259e: SWAP3
0000259f: POP
000025a0: PUSH1 0x40
000025a2: DUP6
000025a3: ADD
000025a4: CALLDATALOAD
000025a5: PUSH8 0xffffffffffffffff
000025ae: DUP2
000025af: GT
000025b0: ISZERO
000025b1: PUSH2 0x2457
000025b4: JUMPI
000025b5: PUSH1 0x00
000025b7: DUP1
000025b8: REVERT
000025b9: JUMPDEST
000025ba: PUSH1 0x00
000025bc: JUMPDEST
000025bd: DUP4
000025be: DUP2
000025bf: LT
000025c0: ISZERO
000025c1: PUSH2 0x25d4
000025c4: JUMPI
000025c5: DUP2
000025c6: DUP2
000025c7: ADD
000025c8: MLOAD
000025c9: DUP4
000025ca: DUP3
000025cb: ADD
000025cc: MSTORE
000025cd: PUSH1 0x20
000025cf: ADD
000025d0: PUSH2 0x25bc
000025d3: JUMP
000025d4: JUMPDEST
000025d5: POP
000025d6: POP
000025d7: PUSH1 0x00
000025d9: SWAP2
000025da: ADD
000025db: MSTORE
000025dc: JUMP
000025dd: JUMPDEST
000025de: PUSH1 0x00
000025e0: DUP2
000025e1: MLOAD
000025e2: DUP1
000025e3: DUP5
000025e4: MSTORE
000025e5: PUSH2 0x25f5
000025e8: DUP2
000025e9: PUSH1 0x20
000025eb: DUP7
000025ec: ADD
000025ed: PUSH1 0x20
000025ef: DUP7
000025f0: ADD
000025f1: PUSH2 0x25b9
000025f4: JUMP
000025f5: JUMPDEST
000025f6: PUSH1 0x1f
000025f8: ADD
000025f9: PUSH1 0x1f
000025fb: NOT
000025fc: AND
000025fd: SWAP3
000025fe: SWAP1
000025ff: SWAP3
00002600: ADD
00002601: PUSH1 0x20
00002603: ADD
00002604: SWAP3
00002605: SWAP2
00002606: POP
00002607: POP
00002608: JUMP
00002609: JUMPDEST
0000260a: PUSH1 0x20
0000260c: DUP2
0000260d: MSTORE
0000260e: PUSH1 0x00
00002610: PUSH2 0x20db
00002613: PUSH1 0x20
00002615: DUP4
00002616: ADD
00002617: DUP5
00002618: PUSH2 0x25dd
0000261b: JUMP
0000261c: JUMPDEST
0000261d: PUSH4 0x4e487b71
00002622: PUSH1 0xe0
00002624: SHL
00002625: PUSH1 0x00
00002627: MSTORE
00002628: PUSH1 0x41
0000262a: PUSH1 0x04
0000262c: MSTORE
0000262d: PUSH1 0x24
0000262f: PUSH1 0x00
00002631: REVERT
00002632: JUMPDEST
00002633: PUSH1 0x00
00002635: DUP3
00002636: MLOAD
00002637: PUSH2 0x2644
0000263a: DUP2
0000263b: DUP5
0000263c: PUSH1 0x20
0000263e: DUP8
0000263f: ADD
00002640: PUSH2 0x25b9
00002643: JUMP
00002644: JUMPDEST
00002645: SWAP2
00002646: SWAP1
00002647: SWAP2
00002648: ADD
00002649: SWAP3
0000264a: SWAP2
0000264b: POP
0000264c: POP
0000264d: JUMP
0000264e: JUMPDEST
0000264f: PUSH1 0x00
00002651: PUSH1 0x20
00002653: DUP3
00002654: DUP5
00002655: SUB
00002656: SLT
00002657: ISZERO
00002658: PUSH2 0x2660
0000265b: JUMPI
0000265c: PUSH1 0x00
0000265e: DUP1
0000265f: REVERT
00002660: JUMPDEST
00002661: DUP2
00002662: CALLDATALOAD
00002663: PUSH1 0x01
00002665: PUSH1 0x01
00002667: PUSH1 0xb0
00002669: SHL
0000266a: SUB
0000266b: NOT
0000266c: DUP2
0000266d: AND
0000266e: DUP2
0000266f: EQ
00002670: PUSH2 0x20db
00002673: JUMPI
00002674: PUSH1 0x00
00002676: DUP1
00002677: REVERT
00002678: JUMPDEST
00002679: DUP2
0000267a: DUP4
0000267b: MSTORE
0000267c: DUP2
0000267d: DUP2
0000267e: PUSH1 0x20
00002680: DUP6
00002681: ADD
00002682: CALLDATACOPY
00002683: POP
00002684: PUSH1 0x00
00002686: DUP3
00002687: DUP3
00002688: ADD
00002689: PUSH1 0x20
0000268b: SWAP1
0000268c: DUP2
0000268d: ADD
0000268e: SWAP2
0000268f: SWAP1
00002690: SWAP2
00002691: MSTORE
00002692: PUSH1 0x1f
00002694: SWAP1
00002695: SWAP2
00002696: ADD
00002697: PUSH1 0x1f
00002699: NOT
0000269a: AND
0000269b: SWAP1
0000269c: SWAP2
0000269d: ADD
0000269e: ADD
0000269f: SWAP1
000026a0: JUMP
000026a1: JUMPDEST
000026a2: PUSH1 0x20
000026a4: DUP2
000026a5: MSTORE
000026a6: PUSH1 0x00
000026a8: PUSH2 0x26b5
000026ab: PUSH1 0x20
000026ad: DUP4
000026ae: ADD
000026af: DUP5
000026b0: DUP7
000026b1: PUSH2 0x2678
000026b4: JUMP
000026b5: JUMPDEST
000026b6: SWAP5
000026b7: SWAP4
000026b8: POP
000026b9: POP
000026ba: POP
000026bb: POP
000026bc: JUMP
000026bd: JUMPDEST
000026be: PUSH1 0x00
000026c0: PUSH1 0x20
000026c2: DUP3
000026c3: DUP5
000026c4: SUB
000026c5: SLT
000026c6: ISZERO
000026c7: PUSH2 0x26cf
000026ca: JUMPI
000026cb: PUSH1 0x00
000026cd: DUP1
000026ce: REVERT
000026cf: JUMPDEST
000026d0: POP
000026d1: MLOAD
000026d2: SWAP2
000026d3: SWAP1
000026d4: POP
000026d5: JUMP
000026d6: JUMPDEST
000026d7: PUSH1 0x40
000026d9: DUP2
000026da: MSTORE
000026db: PUSH1 0x00
000026dd: PUSH2 0x26ea
000026e0: PUSH1 0x40
000026e2: DUP4
000026e3: ADD
000026e4: DUP7
000026e5: DUP9
000026e6: PUSH2 0x2678
000026e9: JUMP
000026ea: JUMPDEST
000026eb: DUP3
000026ec: DUP2
000026ed: SUB
000026ee: PUSH1 0x20
000026f0: DUP5
000026f1: ADD
000026f2: MSTORE
000026f3: PUSH2 0x26fd
000026f6: DUP2
000026f7: DUP6
000026f8: DUP8
000026f9: PUSH2 0x2678
000026fc: JUMP
000026fd: JUMPDEST
000026fe: SWAP8
000026ff: SWAP7
00002700: POP
00002701: POP
00002702: POP
00002703: POP
00002704: POP
00002705: POP
00002706: POP
00002707: JUMP
00002708: JUMPDEST
00002709: DUP2
0000270a: DUP4
0000270b: DUP3
0000270c: CALLDATACOPY
0000270d: PUSH1 0x00
0000270f: SWAP2
00002710: ADD
00002711: SWAP1
00002712: DUP2
00002713: MSTORE
00002714: SWAP2
00002715: SWAP1
00002716: POP
00002717: JUMP
00002718: JUMPDEST
00002719: PUSH1 0x00
0000271b: PUSH1 0x20
0000271d: DUP3
0000271e: DUP5
0000271f: SUB
00002720: SLT
00002721: ISZERO
00002722: PUSH2 0x272a
00002725: JUMPI
00002726: PUSH1 0x00
00002728: DUP1
00002729: REVERT
0000272a: JUMPDEST
0000272b: DUP2
0000272c: MLOAD
0000272d: PUSH8 0xffffffffffffffff
00002736: DUP2
00002737: GT
00002738: ISZERO
00002739: PUSH2 0x2741
0000273c: JUMPI
0000273d: PUSH1 0x00
0000273f: DUP1
00002740: REVERT
00002741: JUMPDEST
00002742: DUP3
00002743: ADD
00002744: PUSH1 0x1f
00002746: DUP2
00002747: ADD
00002748: DUP5
00002749: SGT
0000274a: PUSH2 0x2752
0000274d: JUMPI
0000274e: PUSH1 0x00
00002750: DUP1
00002751: REVERT
00002752: JUMPDEST
00002753: DUP1
00002754: MLOAD
00002755: PUSH8 0xffffffffffffffff
0000275e: DUP2
0000275f: GT
00002760: ISZERO
00002761: PUSH2 0x276c
00002764: JUMPI
00002765: PUSH2 0x276c
00002768: PUSH2 0x261c
0000276b: JUMP
0000276c: JUMPDEST
0000276d: PUSH1 0x40
0000276f: MLOAD
00002770: PUSH1 0x1f
00002772: DUP3
00002773: ADD
00002774: PUSH1 0x1f
00002776: NOT
00002777: SWAP1
00002778: DUP2
00002779: AND
0000277a: PUSH1 0x3f
0000277c: ADD
0000277d: AND
0000277e: DUP2
0000277f: ADD
00002780: PUSH8 0xffffffffffffffff
00002789: DUP2
0000278a: GT
0000278b: DUP3
0000278c: DUP3
0000278d: LT
0000278e: OR
0000278f: ISZERO
00002790: PUSH2 0x279b
00002793: JUMPI
00002794: PUSH2 0x279b
00002797: PUSH2 0x261c
0000279a: JUMP
0000279b: JUMPDEST
0000279c: PUSH1 0x40
0000279e: MSTORE
0000279f: DUP2
000027a0: DUP2
000027a1: MSTORE
000027a2: DUP3
000027a3: DUP3
000027a4: ADD
000027a5: PUSH1 0x20
000027a7: ADD
000027a8: DUP7
000027a9: LT
000027aa: ISZERO
000027ab: PUSH2 0x27b3
000027ae: JUMPI
000027af: PUSH1 0x00
000027b1: DUP1
000027b2: REVERT
000027b3: JUMPDEST
000027b4: PUSH2 0x27c4
000027b7: DUP3
000027b8: PUSH1 0x20
000027ba: DUP4
000027bb: ADD
000027bc: PUSH1 0x20
000027be: DUP7
000027bf: ADD
000027c0: PUSH2 0x25b9
000027c3: JUMP
000027c4: JUMPDEST
000027c5: SWAP6
000027c6: SWAP5
000027c7: POP
000027c8: POP
000027c9: POP
000027ca: POP
000027cb: POP
000027cc: JUMP
000027cd: JUMPDEST
000027ce: DUP1
000027cf: DUP3
000027d0: ADD
000027d1: DUP1
000027d2: DUP3
000027d3: GT
000027d4: ISZERO
000027d5: PUSH2 0x1490
000027d8: JUMPI
000027d9: PUSH2 0x1490
000027dc: PUSH2 0x22f7
000027df: JUMP
000027e0: JUMPDEST
000027e1: PUSH4 0x4e487b71
000027e6: PUSH1 0xe0
000027e8: SHL
000027e9: PUSH1 0x00
000027eb: MSTORE
000027ec: PUSH1 0x32
000027ee: PUSH1 0x04
000027f0: MSTORE
000027f1: PUSH1 0x24
000027f3: PUSH1 0x00
000027f5: REVERT
000027f6: JUMPDEST
000027f7: PUSH1 0x00
000027f9: PUSH1 0x01
000027fb: PUSH1 0xff
000027fd: SHL
000027fe: DUP3
000027ff: ADD
00002800: PUSH2 0x280b
00002803: JUMPI
00002804: PUSH2 0x280b
00002807: PUSH2 0x22f7
0000280a: JUMP
0000280b: JUMPDEST
0000280c: POP
0000280d: PUSH1 0x00
0000280f: SUB
00002810: SWAP1
00002811: JUMP
00002812: JUMPDEST
00002813: PUSH1 0x00
00002815: PUSH1 0x20
00002817: DUP3
00002818: DUP5
00002819: SUB
0000281a: SLT
0000281b: ISZERO
0000281c: PUSH2 0x2824
0000281f: JUMPI
00002820: PUSH1 0x00
00002822: DUP1
00002823: REVERT
00002824: JUMPDEST
00002825: DUP2
00002826: MLOAD
00002827: DUP1
00002828: ISZERO
00002829: ISZERO
0000282a: DUP2
0000282b: EQ
0000282c: PUSH2 0x20db
0000282f: JUMPI
00002830: PUSH1 0x00
00002832: DUP1
00002833: REVERT
00002834: INVALID
00002835: LOG2
00002836: PUSH5 0x6970667358
0000283c: UNKNOWN(0x22)
0000283d: SLT
0000283e: KECCAK256
0000283f: MLOAD
00002840: UNKNOWN(0xF9)
00002841: UNKNOWN(0xE0)
00002842: UNKNOWN(0xB3)
00002843: UNKNOWN(0xB2)
00002844: TIMESTAMP
00002845: UNKNOWN(0xCE)
00002846: UNKNOWN(0xFB)
00002847: CODECOPY
00002848: CALL
00002849: UNKNOWN(0xB2)
0000284a: UNKNOWN(0xAA)
0000284b: UNKNOWN(0xE1)
0000284c: DUP16
0000284d: UNKNOWN(0xB6)
0000284e: SLT
0000284f: DUP8
00002850: SHL
00002851: UNKNOWN(0xDA)
00002852: UNKNOWN(0xE3)
00002853: UNKNOWN(0xEC)
00002854: SWAP10
00002855: LOG1
00002856: UNKNOWN(0xD5)
00002857: SELFBALANCE
00002858: UNKNOWN(0x26)
00002859: DUP9
0000285a: PUSH11 0x2c7a414364736f6c634300
00002866: ADDMOD
00002867: SHR
00002868: STOP
00002869: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high access_control codex Privileged selfdestruct sends balance to caller 85 no
view
evidence_json
{
    "evidence": "Bytecode at offset 0x0c10 executes CALLER then SELFDESTRUCT. This path is reachable from the function at 0x0b01 which first runs the caller whitelist at 0x03f2 (CALLER compared against hard-coded addresses) before branching to 0x0c0f.",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Remove SELFDESTRUCT or restrict it to a timelocked governance process; at minimum, require multi-step approvals and send funds to a safe treasury instead of msg.sender.",
    "exploit_scenario": "If any whitelisted address invokes the function path that reaches the zero-flag branch, the contract executes SELFDESTRUCT and transfers its ETH balance to the caller, permanently bricking the contract."
}
high upgradeability codex Whitelisted delegatecall enables arbitrary code execution 85 no
view
evidence_json
{
    "evidence": "The function at 0x035b decodes calldata (0x246f) and jumps to 0x0f08, which runs the whitelist at 0x03f2 and then executes DELEGATECALL at 0x0f24 after copying calldata. No constant target address is pushed in this stub, so the target is supplied via decoded arguments.",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "If not intended, remove the delegatecall entry point. If intended, restrict targets to audited implementations and add governance/timelocks for upgrades.",
    "exploit_scenario": "A whitelisted address can invoke the delegatecall entry point with a chosen target and calldata, executing external code in this contract\u2019s context to modify storage or drain funds."
}
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0x6f089df7944d8427310e51c3deff12e9202f0e4007c4ec863297d2919759c637
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 120,
    "trace_id": "0x6f089df7944d8427310e51c3deff12e9202f0e4007c4ec863297d2919759c637",
    "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": "0x7c04575b",
            "selector": "0x7c04575b",
            "calldata_variants": [
                "0x7c04575b",
                "0x7c04575b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "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": "0x0cb7f13c",
            "selector": "0x0cb7f13c",
            "calldata_variants": [
                "0x0cb7f13c",
                "0x0cb7f13c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3876,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 177,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1036,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 6018,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 6047,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 7849,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 7878,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 7908,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 7938,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 7968,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 7998,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 8027,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 8759,
            "type": "tx_origin_used"
        },
        {
            "pc": 8788,
            "type": "tx_origin_used"
        },
        {
            "pc": 8818,
            "type": "tx_origin_used"
        },
        {
            "pc": 8848,
            "type": "tx_origin_used"
        },
        {
            "pc": 8878,
            "type": "tx_origin_used"
        },
        {
            "pc": 155,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 8758,
            "type": "tx_origin_used"
        },
        {
            "pc": 8787,
            "type": "tx_origin_used"
        },
        {
            "pc": 8817,
            "type": "tx_origin_used"
        },
        {
            "pc": 8847,
            "type": "tx_origin_used"
        },
        {
            "pc": 8877,
            "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": "0x7c04575b",
            "selector": "0x7c04575b",
            "calldata_variants": [
                "0x7c04575b",
                "0x7c04575b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "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": "0x0cb7f13c",
            "selector": "0x0cb7f13c",
            "calldata_variants": [
                "0x0cb7f13c",
                "0x0cb7f13c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 177,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1036,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 6018,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 6047,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 7849,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 7878,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 7908,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 7938,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 7968,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 7998,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 8027,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 8759,
            "type": "tx_origin_used"
        },
        {
            "pc": 8788,
            "type": "tx_origin_used"
        },
        {
            "pc": 8818,
            "type": "tx_origin_used"
        },
        {
            "pc": 8848,
            "type": "tx_origin_used"
        },
        {
            "pc": 8878,
            "type": "tx_origin_used"
        },
        {
            "pc": 155,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 8758,
            "type": "tx_origin_used"
        },
        {
            "pc": 8787,
            "type": "tx_origin_used"
        },
        {
            "pc": 8817,
            "type": "tx_origin_used"
        },
        {
            "pc": 8847,
            "type": "tx_origin_used"
        },
        {
            "pc": 8877,
            "type": "tx_origin_used"
        }
    ]
}
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
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: 0xefe453be8915674072384d366038980cc215cb94e9ef4e8afc2836909484736b
call_targets: 0x01fdc48ba0903bb1ae7c517c9287d88ea236f8e1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xefe453be8915674072384d366038980cc215cb94e9ef4e8afc2836909484736b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x01fdc48ba0903bb1ae7c517c9287d88ea236f8e1"
    ],
    "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": "0x7c04575b",
            "selector": "0x7c04575b",
            "calldata_variants": [
                "0x7c04575b",
                "0x7c04575b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "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": "0x0cb7f13c",
            "selector": "0x0cb7f13c",
            "calldata_variants": [
                "0x0cb7f13c",
                "0x0cb7f13c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 263,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 633,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 735,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 16,
    "guards_detected": [
        {
            "pc": 177,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1036,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 6018,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 6047,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 7849,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 7878,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 7908,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 7938,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 7968,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 7998,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 8027,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 8759,
            "type": "tx_origin_used"
        },
        {
            "pc": 8788,
            "type": "tx_origin_used"
        },
        {
            "pc": 8818,
            "type": "tx_origin_used"
        },
        {
            "pc": 8848,
            "type": "tx_origin_used"
        },
        {
            "pc": 8878,
            "type": "tx_origin_used"
        },
        {
            "pc": 155,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 8758,
            "type": "tx_origin_used"
        },
        {
            "pc": 8787,
            "type": "tx_origin_used"
        },
        {
            "pc": 8817,
            "type": "tx_origin_used"
        },
        {
            "pc": 8847,
            "type": "tx_origin_used"
        },
        {
            "pc": 8877,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 16
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xefe453be8915674072384d366038980cc215cb94e9ef4e8afc2836909484736b
call_targets: 0x01fdc48ba0903bb1ae7c517c9287d88ea236f8e1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xefe453be8915674072384d366038980cc215cb94e9ef4e8afc2836909484736b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x01fdc48ba0903bb1ae7c517c9287d88ea236f8e1"
    ],
    "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": "0x7c04575b",
            "selector": "0x7c04575b",
            "calldata_variants": [
                "0x7c04575b",
                "0x7c04575b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "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": "0x0cb7f13c",
            "selector": "0x0cb7f13c",
            "calldata_variants": [
                "0x0cb7f13c",
                "0x0cb7f13c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 263,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 633,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 735,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 16,
    "guards_detected": [
        {
            "pc": 177,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1036,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 6018,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 6047,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 7849,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 7878,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 7908,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 7938,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 7968,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 7998,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 8027,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 8759,
            "type": "tx_origin_used"
        },
        {
            "pc": 8788,
            "type": "tx_origin_used"
        },
        {
            "pc": 8818,
            "type": "tx_origin_used"
        },
        {
            "pc": 8848,
            "type": "tx_origin_used"
        },
        {
            "pc": 8878,
            "type": "tx_origin_used"
        },
        {
            "pc": 155,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 8758,
            "type": "tx_origin_used"
        },
        {
            "pc": 8787,
            "type": "tx_origin_used"
        },
        {
            "pc": 8817,
            "type": "tx_origin_used"
        },
        {
            "pc": 8847,
            "type": "tx_origin_used"
        },
        {
            "pc": 8877,
            "type": "tx_origin_used"
        }
    ]
}
medium auth codex Authorization uses tx.origin 75 no
view
evidence_json
{
    "evidence": "At offsets 0x2221\u20130x22af the code uses ORIGIN and compares it to hard-coded addresses, then jumps to privileged logic or reverts (JUMPI to 0x0489).",
    "locations": [
        "BYTECODE_BUNDLE.txt:5"
    ],
    "recommendation": "Replace tx.origin with msg.sender and enforce explicit role-based access control.",
    "exploit_scenario": "An attacker can deploy an intermediary contract and trick a whitelisted EOA into calling it; tx.origin remains the whitelisted address, bypassing the check and allowing privileged actions through the attacker-controlled contract."
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x9fc0d8400461c423bbf524b7dbaa62d5340e49bb696e84b8e3441ce6fbf9419f
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 20,
    "trace_id": "0x9fc0d8400461c423bbf524b7dbaa62d5340e49bb696e84b8e3441ce6fbf9419f",
    "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": "0x7c04575b",
            "selector": "0x7c04575b",
            "calldata_variants": [
                "0x7c04575b",
                "0x7c04575b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "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": "0x0cb7f13c",
            "selector": "0x0cb7f13c",
            "calldata_variants": [
                "0x0cb7f13c",
                "0x0cb7f13c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10c117ab",
            "selector": "0x10c117ab",
            "calldata_variants": [
                "0x10c117ab",
                "0x10c117ab0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23a69e75",
            "selector": "0x23a69e75",
            "calldata_variants": [
                "0x23a69e75",
                "0x23a69e750000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 177,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1036,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 1065,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 1095,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 1125,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 1155,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 6018,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 6047,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 7849,
            "type": "msg_sender_eq_const",
            "value": 1.2343154550248751e+48
        },
        {
            "pc": 7878,
            "type": "msg_sender_eq_const",
            "value": 2.703459470320946e+47
        },
        {
            "pc": 7908,
            "type": "msg_sender_eq_const",
            "value": 1.1273818385233569e+48
        },
        {
            "pc": 7938,
            "type": "msg_sender_eq_const",
            "value": 1.2789106993346929e+48
        },
        {
            "pc": 7968,
            "type": "msg_sender_eq_const",
            "value": 6.3029377576813095e+47
        },
        {
            "pc": 7998,
            "type": "msg_sender_eq_const",
            "value": 1.3371052191676666e+48
        },
        {
            "pc": 8027,
            "type": "msg_sender_eq_const",
            "value": 6.4816253918498025e+47
        },
        {
            "pc": 8759,
            "type": "tx_origin_used"
        },
        {
            "pc": 8788,
            "type": "tx_origin_used"
        },
        {
            "pc": 8818,
            "type": "tx_origin_used"
        },
        {
            "pc": 8848,
            "type": "tx_origin_used"
        },
        {
            "pc": 8878,
            "type": "tx_origin_used"
        },
        {
            "pc": 155,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 8758,
            "type": "tx_origin_used"
        },
        {
            "pc": 8787,
            "type": "tx_origin_used"
        },
        {
            "pc": 8817,
            "type": "tx_origin_used"
        },
        {
            "pc": 8847,
            "type": "tx_origin_used"
        },
        {
            "pc": 8877,
            "type": "tx_origin_used"
        }
    ],
    "selfdestruct_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": 20
}
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": 6
}