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

Analysis Run

0972cf74-f05f-424e-8b19-74306a029857

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

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
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
30574 report.consolidate complete 1 / 1 3 months ago
104303 artifact.fetch complete 1 / 3 1 week ago
104304 tool.cast_disasm complete 1 / 3 1 week ago
104305 analysis.bundle complete 1 / 3 1 week ago
104306 capability.graph complete 1 / 3 1 week ago
104307 detector.run complete 1 / 3 1 week ago
104308 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
0
No findings?
yes
Summary
Reviewed the full runtime bytecode bundle; no concrete, explainable vulnerability patterns could be identified from bytecode/disassembly alone.
View stderr
[codex:1293848] OpenAI Codex v0.77.0 (research preview)
[codex:1293848] --------
[codex:1293848] workdir: /tmp/codex-multi-hoykzthq
[codex:1293848] model: gpt-5.2-codex
[codex:1293848] provider: openai
[codex:1293848] approval: never
[codex:1293848] sandbox: read-only
[codex:1293848] reasoning effort: xhigh
[codex:1293848] reasoning summaries: auto
[codex:1293848] session id: 019b6bb8-fdcb-7983-9aa4-179c90b8dedd
[codex:1293848] --------
[codex:1293848] user
[codex:1293848] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1293848] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1293848] 
[codex:1293848] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1293848] 
[codex:1293848] Output MUST be valid JSON matching the provided schema.
[codex:1293848] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1293848] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1293848] 
[codex:1293848] Output constraints (IMPORTANT):
[codex:1293848] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1293848] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1293848] mcp startup: no servers
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc ls in /tmp/codex-multi-hoykzthq succeeded in 6ms:
[codex:1293848] BYTECODE_BUNDLE.txt
[codex:1293848] codex-output-schema.json
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Reading BYTECODE_BUNDLE.txt file**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-hoykzthq succeeded in 5ms:
[codex:1293848] Runtime bytecode bundle for best-effort auditing.
[codex:1293848] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1293848] 
[codex:1293848] FILE: runtime_bytecode.hex
[codex:1293848] 0x6080604052600436106101485760003560e01c80636b2a8f65116100c0578063cf6e448811610074578063efcab17311610059578063efcab1731461042f578063fa558b7114610472578063fd404b4c1461049257600080fd5b8063cf6e4488146103cc578063dfd1fb7a1461040f57600080fd5b806396aa7368116100a557806396aa73681461037657806398a8989714610396578063cb81fecf146103b657600080fd5b80636b2a8f6514610316578063801ead1d1461033657600080fd5b80632e2d726c116101175780633a8343ee116100fc5780633a8343ee146102b65780633cd18ca0146102d65780633f53c36c146102f657600080fd5b80632e2d726c14610269578063375b74c31461028957600080fd5b806314ae3c091461018c57806315b21082146101f9578063233ecf78146102275780632ca40a331461024757600080fd5b3661018757604080513381523460208201527fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1910160405180910390a1005b600080fd5b34801561019857600080fd5b506101cf6101a7366004611b7b565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561020557600080fd5b50610219610214366004611bb9565b6104b2565b6040519081526020016101f0565b34801561023357600080fd5b50610219610242366004611bb9565b61068a565b34801561025357600080fd5b50610267610262366004611b7b565b610726565b005b34801561027557600080fd5b50610267610284366004611c22565b610872565b34801561029557600080fd5b506001546101cf9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c257600080fd5b506102676102d1366004611b7b565b6109be565b3480156102e257600080fd5b506102676102f1366004611c22565b610ae0565b34801561030257600080fd5b50610219610311366004611bb9565b610d21565b34801561032257600080fd5b50610267610331366004611b7b565b610db2565b34801561034257600080fd5b50610366610351366004611bb9565b60036020526000908152604090205460ff1681565b60405190151581526020016101f0565b34801561038257600080fd5b50610267610391366004611c77565b610ef9565b3480156103a257600080fd5b506102676103b1366004611cb9565b611021565b3480156103c257600080fd5b5061021960005481565b3480156103d857600080fd5b506101cf6103e7366004611b7b565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041b57600080fd5b5061026761042a366004611d67565b61128c565b34801561043b57600080fd5b506101cf61044a366004611b7b565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561047e57600080fd5b5061026761048d366004611daf565b611402565b34801561049e57600080fd5b506102676104ad366004611e32565b6115a6565b600073ffffffffffffffffffffffffffffffffffffffff8216610536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000806105416116ad565b60408051602081018490527f15b2108200000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660448201529193509150605801604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282528051602091820120818401835273ffffffffffffffffffffffffffffffffffffffff888116808652600083815260028552859020955186547fffffffffffffffffffffffff00000000000000000000000000000000000000001692169190911790945582518181523392810192909252918101929092526060820183905293507f8286bbf6adfae598c227689d4e361af126e220106aaa15764538028b07f3a0d49060800160405180910390a15050919050565b600080806106ba60057f233ecf78000000000000000000000000000000000000000000000000000000008661172b565b6040805183815233602082015273ffffffffffffffffffffffffffffffffffffffff8816918101919091526060810182905291935091507fb196f170a901805d549dbf8366f597f47a4dc7ca96076200a19ea524d6ea6b3b906080015b60405180910390a15092915050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b60006107b4600583611897565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055868352600582529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690558151868152908101929092529192507f18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c738391015b60405180910390a15050565b3360009081526003602052604090205460ff166108eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b60005b818110156109b857600083838381811061090a5761090a611e8b565b905060200201602081019061091f9190611bb9565b6040517fe00af4a700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529192509082169063e00af4a790602401600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b505050505080806109b090611ee9565b9150506108ee565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b610a4881611941565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161782556000848152600260209081526040918290208054909316909255915482518581529316908301527f9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d910160405180910390a150565b3360009081526003602052604090205460ff16610b59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b823060005b83811015610d19576000858583818110610b7a57610b7a611e8b565b9050602002016020810190610b8f9190611bb9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192506000918616906370a0823190602401602060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190611f21565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528616604482015260648101829052909150610d049089907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526119ea565b50508080610d1190611ee9565b915050610b5e565b505050505050565b60008080610d5160047f3f53c36c000000000000000000000000000000000000000000000000000000008661172b565b6040805183815233602082015273ffffffffffffffffffffffffffffffffffffffff8816918101919091526060810182905291935091507fb25046a4d73a710942ead57a87d6f3a3bf5fb03add01c9e337042558e86d1b5590608001610717565b60015473ffffffffffffffffffffffffffffffffffffffff163314610e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b6000610e40600483611897565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868352600482529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690558151868152908101929092529192507fd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb3939101610866565b3360009081526003602052604090205460ff16610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b60005b8181101561101c576000838383818110610f9157610f91611e8b565b9050602002016020810190610fa69190611bb9565b90508073ffffffffffffffffffffffffffffffffffffffff166390ec71bd6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b5050505050808061101490611ee9565b915050610f75565b505050565b3360009081526003602052604090205460ff1661109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b828114611103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015260640161052d565b60005b8381101561128557600085858381811061112257611122611e8b565b90506020020160208101906111379190611bb9565b9050600084848481811061114d5761114d611e8b565b90506020020135905060008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146111b0576040519150601f19603f3d011682016040523d82523d6000602084013e6111b5565b606091505b5050905080611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207472616e736665722065746865720000000000000000604482015260640161052d565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527ff35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575910160405180910390a1505050808061127d90611ee9565b915050611106565b5050505050565b3360009081526003602052604090205460ff16611305576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b6000808473ffffffffffffffffffffffffffffffffffffffff16848460405161132f929190611f3a565b6000604051808303816000865af19150503d806000811461136c576040519150601f19603f3d011682016040523d82523d6000602084013e611371565b606091505b509150915081156113be577f18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b96858585846040516113b19493929190612009565b60405180910390a1611285565b7faba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e6274858585846040516113f39493929190612009565b60405180910390a15050505050565b3360009081526003602052604090205460ff1661147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b8281146114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015260640161052d565b60005b83811015610d1957600085858381811061150357611503611e8b565b90506020020160208101906115189190611bb9565b9050600084848481811061152e5761152e611e8b565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015260209091029290920135604483018190529250611591918a91507fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610c82565b5050808061159e90611ee9565b9150506114e7565b3360009081526003602052604090205460ff1661161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161052d565b6040517fdfd1fb7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063dfd1fb7a9061167590869086908690600401612056565b600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b5050505050505050565b60008060008081546116be90611ee9565b918290555090506116d060014361208f565b60408051914060208301527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1690820152605481018290526074016040516020818303038152906040528051906020012091509091565b60008073ffffffffffffffffffffffffffffffffffffffff83166117ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015260640161052d565b6000806117b66116ad565b604080516020808201949094527fffffffff0000000000000000000000000000000000000000000000000000000099909916898201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089901b1660448a01528051808a03603801815260588a018083528151918501919091206078909a01825273ffffffffffffffffffffffffffffffffffffffff988916815260008a81529a909352909820905181547fffffffffffffffffffffffff00000000000000000000000000000000000000001696169590951790945550929492505050565b6000818152602083905260408120805473ffffffffffffffffffffffffffffffffffffffff16611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015260640161052d565b5473ffffffffffffffffffffffffffffffffffffffff169392505050565b6000818152600260205260408120805473ffffffffffffffffffffffffffffffffffffffff166119cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015260640161052d565b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b6000611a2c83836040518060400160405280600c81526020017f45524332303a7265766572740000000000000000000000000000000000000000815250611ab0565b80519091501561101c5780806020019051810190611a4a91906120a6565b61101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f45524332303a66616c7365000000000000000000000000000000000000000000604482015260640161052d565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611ada91906120c8565b6000604051808303816000865af19150503d8060008114611b17576040519150601f19603f3d011682016040523d82523d6000602084013e611b1c565b606091505b50915091508115611b30579150611b749050565b805115611b405780518082602001fd5b836040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052d91906120e4565b9392505050565b600060208284031215611b8d57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611bb657600080fd5b50565b600060208284031215611bcb57600080fd5b8135611b7481611b94565b60008083601f840112611be857600080fd5b50813567ffffffffffffffff811115611c0057600080fd5b6020830191508360208260051b8501011115611c1b57600080fd5b9250929050565b600080600060408486031215611c3757600080fd5b8335611c4281611b94565b9250602084013567ffffffffffffffff811115611c5e57600080fd5b611c6a86828701611bd6565b9497909650939450505050565b60008060208385031215611c8a57600080fd5b823567ffffffffffffffff811115611ca157600080fd5b611cad85828601611bd6565b90969095509350505050565b60008060008060408587031215611ccf57600080fd5b843567ffffffffffffffff80821115611ce757600080fd5b611cf388838901611bd6565b90965094506020870135915080821115611d0c57600080fd5b50611d1987828801611bd6565b95989497509550505050565b60008083601f840112611d3757600080fd5b50813567ffffffffffffffff811115611d4f57600080fd5b602083019150836020828501011115611c1b57600080fd5b600080600060408486031215611d7c57600080fd5b8335611d8781611b94565b9250602084013567ffffffffffffffff811115611da357600080fd5b611c6a86828701611d25565b600080600080600060608688031215611dc757600080fd5b8535611dd281611b94565b9450602086013567ffffffffffffffff80821115611def57600080fd5b611dfb89838a01611bd6565b90965094506040880135915080821115611e1457600080fd5b50611e2188828901611bd6565b969995985093965092949392505050565b60008060008060608587031215611e4857600080fd5b8435611e5381611b94565b93506020850135611e6381611b94565b9250604085013567ffffffffffffffff811115611e7f57600080fd5b611d1987828801611d25565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f1a57611f1a611eba565b5060010190565b600060208284031215611f3357600080fd5b5051919050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b83811015611fae578181015183820152602001611f96565b838111156109b85750506000910152565b60008151808452611fd7816020860160208601611f93565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201526000612039606083018587611f4a565b828103604084015261204b8185611fbf565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152604060208201526000612086604083018486611f4a565b95945050505050565b6000828210156120a1576120a1611eba565b500390565b6000602082840312156120b857600080fd5b81518015158114611b7457600080fd5b600082516120da818460208701611f93565b9190910192915050565b602081526000611b746020830184611fbf56fea26469706673582212209f8b2caea9d346522e67275e838677b7b7b28846a0b9aa821ba905a4a1ac081f64736f6c634300080f0033
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Checking output schema**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-hoykzthq succeeded in 7ms:
[codex:1293848] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing bytecode for vulnerabilities**
[codex:1293848] 
[codex:1293848] I'm parsing the runtime bytecode to spot concrete security issues like reentrancy, unchecked external calls, or unsafe access control. The contract shows owner checks, role-based access, loops with calls, and safe ERC20 transfers. I’m carefully weighing potential risks against what the bytecode concretely reveals, considering patterns for delegatecall, selfdestruct, and reentrancy guards while planning a lightweight Python disassembler to clarify call-related opcode contexts.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import binascii, textwrap
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] # remove non-hex at end maybe? ensure even length
[codex:1293848] hexdata=''.join(ch for ch in hexdata if ch.strip())
[codex:1293848] # truncate at first non-hex
[codex:1293848] import re
[codex:1293848] m=re.match(r'([0-9a-fA-F]+)', hexdata)
[codex:1293848] hexdata=m.group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] 
[codex:1293848] # opcode mapping
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] # Disassemble and note CALL/DELEGATECALL/SELFDESTRUCT etc
[codex:1293848] call_offsets=[]
[codex:1293848] static_offsets=[]
[codex:1293848] delegate_offsets=[]
[codex:1293848] selfdestruct_offsets=[]
[codex:1293848] origin_offsets=[]
[codex:1293848] 
[codex:1293848] pc=0
[codex:1293848] while pc < len(code):
[codex:1293848]     op=code[pc]
[codex:1293848]     name=ops.get(op, f'OP{op:02x}')
[codex:1293848]     if name in ('CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT','ORIGIN'):
[codex:1293848]         if name=='CALL': call_offsets.append(pc)
[codex:1293848]         elif name=='DELEGATECALL': delegate_offsets.append(pc)
[codex:1293848]         elif name=='STATICCALL': static_offsets.append(pc)
[codex:1293848]         elif name=='SELFDESTRUCT': selfdestruct_offsets.append(pc)
[codex:1293848]         elif name=='ORIGIN': origin_offsets.append(pc)
[codex:1293848]     pc += 1
[codex:1293848]     if 0x60 <= op <= 0x7f:
[codex:1293848]         pc += op-0x5f
[codex:1293848] 
[codex:1293848] print('CALL offsets:', call_offsets)
[codex:1293848] print('DELEGATECALL offsets:', delegate_offsets)
[codex:1293848] print('STATICCALL offsets:', static_offsets)
[codex:1293848] print('SELFDESTRUCT offsets:', selfdestruct_offsets)
[codex:1293848] print('ORIGIN offsets:', origin_offsets)
[codex:1293848] 
[codex:1293848] # helper to print context around an offset
[codex:1293848] 
[codex:1293848] def print_context(center, window=10):
[codex:1293848]     # disassemble from center-window bytes before to after
[codex:1293848]     start=max(0, center-50)
[codex:1293848]     end=min(len(code), center+50)
[codex:1293848]     pc=start
[codex:1293848]     print(f'--- context {center:#x} ---')
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848]     print()
[codex:1293848] 
[codex:1293848] # print context around call/delegatecall
[codex:1293848] for off in call_offsets:
[codex:1293848]     print_context(off)
[codex:1293848] 
[codex:1293848] for off in delegate_offsets:
[codex:1293848]     print_context(off)
[codex:1293848] 
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 40ms:
[codex:1293848] CALL offsets: [2447, 4083, 4480, 4925, 5778, 6888]
[codex:1293848] DELEGATECALL offsets: []
[codex:1293848] STATICCALL offsets: [3056]
[codex:1293848] SELFDESTRUCT offsets: []
[codex:1293848] ORIGIN offsets: []
[codex:1293848] --- context 0x98f ---
[codex:1293848] 095d: AND
[codex:1293848] 095e: PUSH1 0x04
[codex:1293848] 0960: DUP4
[codex:1293848] 0961: ADD
[codex:1293848] 0962: MSTORE
[codex:1293848] 0963: SWAP2
[codex:1293848] 0964: SWAP3
[codex:1293848] 0965: POP
[codex:1293848] 0966: SWAP1
[codex:1293848] 0967: DUP3
[codex:1293848] 0968: AND
[codex:1293848] 0969: SWAP1
[codex:1293848] 096a: PUSH4 0xe00af4a7
[codex:1293848] 096f: SWAP1
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing multiple CALL instructions for safety**
[codex:1293848] 
[codex:1293848] I'm parsing suspicious disassembler output that mislabels data bytes as repeated SELFDESTRUCT opcodes, so I'll ignore those false positives. Instead, I focus on six CALL sites to assess reentrancy risks or unchecked calls. They involve various low-level calls with extcodesize checks, some sending ETH or token transfers while handling return data cautiously. I'm paying close attention to calls that send ETH inside loops to verify if state updates happen after the calls, which could raise reentrancy concerns. To clarify, I plan to disassemble more around 0x1106 to see whether storage changes follow the calls or if safeguards like reentrancy guards exist. This disassembly will help me pinpoint any concrete vulnerabilities.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] # print range around 0x1080-0x1230
[codex:1293848] print('--- disasm 0x1080-0x1230 ---')
[codex:1293848] disasm_range(0x1080, 0x1230)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 24ms:
[codex:1293848] --- disasm 0x1080-0x1230 ---
[codex:1293848] 1080: STOP
[codex:1293848] 1081: STOP
[codex:1293848] 1082: STOP
[codex:1293848] 1083: STOP
[codex:1293848] 1084: STOP
[codex:1293848] 1085: STOP
[codex:1293848] 1086: STOP
[codex:1293848] 1087: STOP
[codex:1293848] 1088: STOP
[codex:1293848] 1089: STOP
[codex:1293848] 108a: STOP
[codex:1293848] 108b: STOP
[codex:1293848] 108c: STOP
[codex:1293848] 108d: STOP
[codex:1293848] 108e: PUSH1 0x44
[codex:1293848] 1090: DUP3
[codex:1293848] 1091: ADD
[codex:1293848] 1092: MSTORE
[codex:1293848] 1093: PUSH1 0x64
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing call and state update order in bytecode**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] print('--- disasm 0x1230-0x1400 ---')
[codex:1293848] disasm_range(0x1230, 0x1400)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 27ms:
[codex:1293848] --- disasm 0x1230-0x1400 ---
[codex:1293848] 1230: SELFDESTRUCT
[codex:1293848] 1231: SELFDESTRUCT
[codex:1293848] 1232: SELFDESTRUCT
[codex:1293848] 1233: SELFDESTRUCT
[codex:1293848] 1234: SELFDESTRUCT
[codex:1293848] 1235: SELFDESTRUCT
[codex:1293848] 1236: SELFDESTRUCT
[codex:1293848] 1237: SELFDESTRUCT
[codex:1293848] 1238: SELFDESTRUCT
[codex:1293848] 1239: SELFDESTRUCT
[codex:1293848] 123a: DUP6
[codex:1293848] 123b: AND
[codex:1293848] 123c: DUP2
[codex:1293848] 123d: MSTORE
[codex:1293848] 123e: PUSH1 0x20
[codex:1293848] 1240: DUP2
[codex:1293848] 1241: ADD
[codex:1293848] 1242: DUP5
[codex:1293848] 1243: SWAP1
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing call and authorization logic**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] 
[codex:1293848] # find SSTORE offsets
[codex:1293848] sstore_offsets=[i for i,b in enumerate(code) if b==0x55]
[codex:1293848] print('SSTORE offsets:', sstore_offsets)
[codex:1293848] 
[codex:1293848] # simple disassembler
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_context(center, window=40):
[codex:1293848]     start=max(0, center-window)
[codex:1293848]     end=min(len(code), center+window)
[codex:1293848]     pc=start
[codex:1293848]     print(f'--- context around {center:#x} ---')
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848]     print()
[codex:1293848] 
[codex:1293848] for off in sstore_offsets:
[codex:1293848]     disasm_context(off)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 26ms:
[codex:1293848] SSTORE offsets: [66, 1593, 2050, 2099, 2699, 2725, 3497, 3729, 3778, 4708, 5826, 6286]
[codex:1293848] --- context around 0x42 ---
[codex:1293848] 001a: PUSH2 0x00c0
[codex:1293848] 001d: JUMPI
[codex:1293848] 001e: DUP1
[codex:1293848] 001f: PUSH4 0xcf6e4488
[codex:1293848] 0024: GT
[codex:1293848] 0025: PUSH2 0x0074
[codex:1293848] 0028: JUMPI
[codex:1293848] 0029: DUP1
[codex:1293848] 002a: PUSH4 0xefcab173
[codex:1293848] 002f: GT
[codex:1293848] 0030: PUSH2 0x0059
[codex:1293848] 0033: JUMPI
[codex:1293848] 0034: DUP1
[codex:1293848] 0035: PUSH4 0xefcab173
[codex:1293848] 003a: EQ
[codex:1293848] 003b: PUSH2 0x042f
[codex:1293848] 003e: JUMPI
[codex:1293848] 003f: DUP1
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing call success handling and access control**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] print('--- disasm 0x1f3a-0x1f80 ---')
[codex:1293848] disasm_range(0x1f3a, 0x1f80)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 25ms:
[codex:1293848] --- disasm 0x1f3a-0x1f80 ---
[codex:1293848] 1f3a: JUMPDEST
[codex:1293848] 1f3b: DUP2
[codex:1293848] 1f3c: DUP4
[codex:1293848] 1f3d: DUP3
[codex:1293848] 1f3e: CALLDATACOPY
[codex:1293848] 1f3f: PUSH1 0x00
[codex:1293848] 1f41: SWAP2
[codex:1293848] 1f42: ADD
[codex:1293848] 1f43: SWAP1
[codex:1293848] 1f44: DUP2
[codex:1293848] 1f45: MSTORE
[codex:1293848] 1f46: SWAP2
[codex:1293848] 1f47: SWAP1
[codex:1293848] 1f48: POP
[codex:1293848] 1f49: JUMP
[codex:1293848] 1f4a: JUMPDEST
[codex:1293848] 1f4b: DUP2
[codex:1293848] 1f4c: DUP4
[codex:1293848] 1f4d: MSTORE
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing function selectors and access control**
[codex:1293848] 
[codex:1293848] I'm tracing the mapping between function selectors and code offsets to understand which functions handle authorization and external calls. I’m focusing on how access control is enforced around mapping slot3 and looking for possible missing checks that could let unauthorized users call external contracts or modify authorization mappings. This involves inspecting low-level instructions and jump tables closely.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] print('--- disasm 0x0720-0x0900 ---')
[codex:1293848] disasm_range(0x0720, 0x0900)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 23ms:
[codex:1293848] --- disasm 0x0720-0x0900 ---
[codex:1293848] 0720: POP
[codex:1293848] 0721: SWAP3
[codex:1293848] 0722: SWAP2
[codex:1293848] 0723: POP
[codex:1293848] 0724: POP
[codex:1293848] 0725: JUMP
[codex:1293848] 0726: JUMPDEST
[codex:1293848] 0727: PUSH1 0x01
[codex:1293848] 0729: SLOAD
[codex:1293848] 072a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1293848] 073f: AND
[codex:1293848] 0740: CALLER
[codex:1293848] 0741: EQ
[codex:1293848] 0742: PUSH2 0x07a7
[codex:1293848] 0745: JUMPI
[codex:1293848] 0746: PUSH1 0x40
[codex:1293848] 0748: MLOAD
[codex:1293848] 0749: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1293848] 076a: DUP2
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing access control and potential vulnerabilities**
[codex:1293848] 
[codex:1293848] I'm examining functions for owner and authorized checks, noting safe extcodesize usage before contract calls, and investigating if any state updates lack access control. I’m curious about possible missing ownership or time checks in withdraw functions that could pose risks, so I'll look for storage owner comparisons and timestamp-related opcodes to clarify.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] # find TIMESTAMP opcode 0x42
[codex:1293848] print('TIMESTAMP offsets:', [i for i,b in enumerate(code) if b==0x42])
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 23ms:
[codex:1293848] TIMESTAMP offsets: [570, 828, 3474, 7228]
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Investigating TIMESTAMP operations**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_context(center, window=40):
[codex:1293848]     start=max(0, center-window)
[codex:1293848]     end=min(len(code), center+window)
[codex:1293848]     pc=start
[codex:1293848]     print(f'--- context around {center:#x} ---')
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848]     print()
[codex:1293848] 
[codex:1293848] for off in [570,828,3474,7228]:
[codex:1293848]     disasm_context(off)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 29ms:
[codex:1293848] --- context around 0x23a ---
[codex:1293848] 0212: OPb9
[codex:1293848] 0213: JUMP
[codex:1293848] 0214: JUMPDEST
[codex:1293848] 0215: PUSH2 0x04b2
[codex:1293848] 0218: JUMP
[codex:1293848] 0219: JUMPDEST
[codex:1293848] 021a: PUSH1 0x40
[codex:1293848] 021c: MLOAD
[codex:1293848] 021d: SWAP1
[codex:1293848] 021e: DUP2
[codex:1293848] 021f: MSTORE
[codex:1293848] 0220: PUSH1 0x20
[codex:1293848] 0222: ADD
[codex:1293848] 0223: PUSH2 0x01f0
[codex:1293848] 0226: JUMP
[codex:1293848] 0227: JUMPDEST
[codex:1293848] 0228: CALLVALUE
[codex:1293848] 0229: DUP1
[codex:1293848] 022a: ISZERO
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing opcode offsets and stack effects**
[codex:1293848] 
[codex:1293848] I'm investigating why TIMESTAMP isn't showing at expected offsets and suspect those offsets might be data, not code. To be thorough, I'm focusing on whether the CALL success flag is properly checked after an external call, using symbolic stack analysis to track stack states through complex operations and subroutine calls, including simulating a subroutine's stack effect with a small Python script. This should clarify if there's a low-severity issue due to unchecked call success or if the code safely handles it.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] # Symbolic stack simulation for subroutine at 0x1f3a
[codex:1293848] ops = [
[codex:1293848] ('DUP2',),('DUP4',),('DUP3',),('CALLDATACOPY',),('PUSH1','0x00'),('SWAP2',),('ADD',),('SWAP1',),('DUP2',),('MSTORE',),('SWAP2',),('SWAP1',),('POP',),('JUMP',)
[codex:1293848] ]
[codex:1293848] 
[codex:1293848] # initial stack: s0 bottom ... sN top
[codex:1293848] # We'll use 6 items
[codex:1293848] stack=['s0','s1','s2','s3','s4','s5']
[codex:1293848] # s5 top
[codex:1293848] 
[codex:1293848] # helpers
[codex:1293848] 
[codex:1293848] def dup(n):
[codex:1293848]     stack.append(stack[-n])
[codex:1293848] 
[codex:1293848] def swap(n):
[codex:1293848]     stack[-1], stack[-(n+1)] = stack[-(n+1)], stack[-1]
[codex:1293848] 
[codex:1293848] for op in ops:
[codex:1293848]     if op[0]=='DUP2': dup(2)
[codex:1293848]     elif op[0]=='DUP3': dup(3)
[codex:1293848]     elif op[0]=='DUP4': dup(4)
[codex:1293848]     elif op[0]=='SWAP1': swap(1)
[codex:1293848]     elif op[0]=='SWAP2': swap(2)
[codex:1293848]     elif op[0]=='PUSH1': stack.append(op[1])
[codex:1293848]     elif op[0] in ('CALLDATACOPY','MSTORE','ADD'):
[codex:1293848]         # assume standard stack pops
[codex:1293848]         if op[0]=='CALLDATACOPY':
[codex:1293848]             # pops 3 args
[codex:1293848]             a=stack.pop(); b=stack.pop(); c=stack.pop()
[codex:1293848]         elif op[0]=='MSTORE':
[codex:1293848]             a=stack.pop(); b=stack.pop()
[codex:1293848]         elif op[0]=='ADD':
[codex:1293848]             a=stack.pop(); b=stack.pop(); stack.append(f'({b}+{a})')
[codex:1293848]     elif op[0]=='POP':
[codex:1293848]         stack.pop()
[codex:1293848]     elif op[0]=='JUMP':
[codex:1293848]         # end
[codex:1293848]         pass
[codex:1293848]     else:
[codex:1293848]         raise SystemExit('unknown op')
[codex:1293848]     # print op and stack
[codex:1293848]     #print(op, stack)
[codex:1293848] 
[codex:1293848] print('Final stack:', stack)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 19ms:
[codex:1293848] Final stack: ['s0', 's1', '(s5+s4)', 's2']
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing stack behavior and blockhash usage**
[codex:1293848] 
[codex:1293848] I'm mapping the subroutine's stack changes, figuring out how it consumes return addresses and manipulates calldata pointers. I'm also checking the use of `BLOCKHASH` near 0x16d6, which seems like block.number - 1 is involved, and planning to disassemble the 0x2080–0x20a5 range next to understand that part better.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] print('--- disasm 0x2080-0x20b0 ---')
[codex:1293848] disasm_range(0x2080, 0x20b0)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 25ms:
[codex:1293848] --- disasm 0x2080-0x20b0 ---
[codex:1293848] 2080: DUP5
[codex:1293848] 2081: DUP7
[codex:1293848] 2082: PUSH2 0x1f4a
[codex:1293848] 2085: JUMP
[codex:1293848] 2086: JUMPDEST
[codex:1293848] 2087: SWAP6
[codex:1293848] 2088: SWAP5
[codex:1293848] 2089: POP
[codex:1293848] 208a: POP
[codex:1293848] 208b: POP
[codex:1293848] 208c: POP
[codex:1293848] 208d: POP
[codex:1293848] 208e: JUMP
[codex:1293848] 208f: JUMPDEST
[codex:1293848] 2090: PUSH1 0x00
[codex:1293848] 2092: DUP3
[codex:1293848] 2093: DUP3
[codex:1293848] 2094: LT
[codex:1293848] 2095: ISZERO
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing low-level function behavior and potential issues**
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_range(start, end):
[codex:1293848]     pc=start
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848] 
[codex:1293848] print('--- disasm 0x1d60-0x1e00 ---')
[codex:1293848] disasm_range(0x1d60, 0x1e00)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 26ms:
[codex:1293848] --- disasm 0x1d60-0x1e00 ---
[codex:1293848] 1d60: SHR
[codex:1293848] 1d61: SHL
[codex:1293848] 1d62: JUMPI
[codex:1293848] 1d63: PUSH1 0x00
[codex:1293848] 1d65: DUP1
[codex:1293848] 1d66: REVERT
[codex:1293848] 1d67: JUMPDEST
[codex:1293848] 1d68: PUSH1 0x00
[codex:1293848] 1d6a: DUP1
[codex:1293848] 1d6b: PUSH1 0x00
[codex:1293848] 1d6d: PUSH1 0x40
[codex:1293848] 1d6f: DUP5
[codex:1293848] 1d70: DUP7
[codex:1293848] 1d71: SUB
[codex:1293848] 1d72: SLT
[codex:1293848] 1d73: ISZERO
[codex:1293848] 1d74: PUSH2 0x1d7c
[codex:1293848] 1d77: JUMPI
[codex:1293848] 1d78: PUSH1 0x00
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Analyzing call success handling and potential vulnerabilities**
[codex:1293848] 
[codex:1293848] I'm carefully examining the EVM bytecode around an ETH transfer call to determine if the call success is properly checked or ignored, simulating stack behavior to clarify whether the contract validates the success flag or return data. I'm also considering possible access control weaknesses, like unrestricted withdrawal by checking CALLER usage near transfer calls, aiming to confirm if there are any obvious security issues before concluding no findings.
[codex:1293848] exec
[codex:1293848] /bin/bash -lc "python - <<'PY'
[codex:1293848] import re
[codex:1293848] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].strip()
[codex:1293848] hexdata=re.match(r'([0-9a-fA-F]+)', hexdata).group(1)
[codex:1293848] code=bytes.fromhex(hexdata)
[codex:1293848] caller_offsets=[i for i,b in enumerate(code) if b==0x33]
[codex:1293848] print('CALLER offsets:', caller_offsets)
[codex:1293848] 
[codex:1293848] ops={
[codex:1293848] 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:1293848] 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:1293848] 0x20:'SHA3',
[codex:1293848] 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:1293848] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1293848] 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:1293848] 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:1293848] 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:1293848] 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:1293848] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1293848] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1293848] }
[codex:1293848] 
[codex:1293848] def disasm_context(center, window=30):
[codex:1293848]     start=max(0, center-window)
[codex:1293848]     end=min(len(code), center+window)
[codex:1293848]     pc=start
[codex:1293848]     print(f'--- context around {center:#x} ---')
[codex:1293848]     while pc < end:
[codex:1293848]         op=code[pc]
[codex:1293848]         name=ops.get(op, f'OP{op:02x}')
[codex:1293848]         pc_start=pc
[codex:1293848]         pc += 1
[codex:1293848]         operand=None
[codex:1293848]         if 0x60 <= op <= 0x7f:
[codex:1293848]             n=op-0x5f
[codex:1293848]             operand=code[pc:pc+n]
[codex:1293848]             pc += n
[codex:1293848]         if operand is None:
[codex:1293848]             print(f'{pc_start:04x}: {name}')
[codex:1293848]         else:
[codex:1293848]             print(f'{pc_start:04x}: {name} 0x{operand.hex()}')
[codex:1293848]     print()
[codex:1293848] 
[codex:1293848] for off in caller_offsets:
[codex:1293848]     disasm_context(off)
[codex:1293848] PY" in /tmp/codex-multi-hoykzthq succeeded in 26ms:
[codex:1293848] CALLER offsets: [318, 338, 557, 1599, 1730, 1856, 2163, 2520, 2785, 3417, 3532, 3536, 3834, 4130, 4749, 5123, 5543, 7981, 8492]
[codex:1293848] --- context around 0x13e ---
[codex:1293848] 0120: ADD
[codex:1293848] 0121: DUP13
[codex:1293848] 0122: JUMPI
[codex:1293848] 0123: DUP1
[codex:1293848] 0124: PUSH4 0x15b21082
[codex:1293848] 0129: EQ
[codex:1293848] 012a: PUSH2 0x01f9
[codex:1293848] 012d: JUMPI
[codex:1293848] 012e: DUP1
[codex:1293848] 012f: PUSH4 0x233ecf78
[codex:1293848] 0134: EQ
[codex:1293848] 0135: PUSH2 0x0227
[codex:1293848] 0138: JUMPI
[codex:1293848] 0139: DUP1
[codex:1293848] 013a: PUSH4 0x2ca40a33
[codex:1293848] 013f: EQ
[codex:1293848] 0140: PUSH2 0x0247
[codex:1293848] 0143: JUMPI
[codex:1293848] 
[codex:1293848] thinking
[codex:1293848] **Preparing vulnerability report JSON**
[codex:1293848] codex
[codex:1293848] {"no_findings":true,"summary":"Reviewed the full runtime bytecode bundle; no concrete, explainable vulnerability patterns could be identified from bytecode/disassembly alone.","findings":[]}
[codex:1293848] tokens used
[codex:1293848] 87,365
[codex:1293848] {"no_findings":true,"summary":"Reviewed the full runtime bytecode bundle; no concrete, explainable vulnerability patterns could be identified from bytecode/disassembly alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T20:18:00.575004+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the full runtime bytecode bundle; no concrete, explainable vulnerability patterns could be identified from bytecode/disassembly alone.",
    "raw_final": {
        "summary": "Reviewed the full runtime bytecode bundle; no concrete, explainable vulnerability patterns could be identified from bytecode/disassembly alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
3
Total opcodes
3951
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0148
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6b2a8f65
00000019: GT
0000001a: PUSH2 0x00c0
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xcf6e4488
00000024: GT
00000025: PUSH2 0x0074
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xefcab173
0000002f: GT
00000030: PUSH2 0x0059
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xefcab173
0000003a: EQ
0000003b: PUSH2 0x042f
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xfa558b71
00000045: EQ
00000046: PUSH2 0x0472
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfd404b4c
00000050: EQ
00000051: PUSH2 0x0492
00000054: JUMPI
00000055: PUSH1 0x00
00000057: DUP1
00000058: REVERT
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0xcf6e4488
00000060: EQ
00000061: PUSH2 0x03cc
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0xdfd1fb7a
0000006b: EQ
0000006c: PUSH2 0x040f
0000006f: JUMPI
00000070: PUSH1 0x00
00000072: DUP1
00000073: REVERT
00000074: JUMPDEST
00000075: DUP1
00000076: PUSH4 0x96aa7368
0000007b: GT
0000007c: PUSH2 0x00a5
0000007f: JUMPI
00000080: DUP1
00000081: PUSH4 0x96aa7368
00000086: EQ
00000087: PUSH2 0x0376
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0x98a89897
00000091: EQ
00000092: PUSH2 0x0396
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xcb81fecf
0000009c: EQ
0000009d: PUSH2 0x03b6
000000a0: JUMPI
000000a1: PUSH1 0x00
000000a3: DUP1
000000a4: REVERT
000000a5: JUMPDEST
000000a6: DUP1
000000a7: PUSH4 0x6b2a8f65
000000ac: EQ
000000ad: PUSH2 0x0316
000000b0: JUMPI
000000b1: DUP1
000000b2: PUSH4 0x801ead1d
000000b7: EQ
000000b8: PUSH2 0x0336
000000bb: JUMPI
000000bc: PUSH1 0x00
000000be: DUP1
000000bf: REVERT
000000c0: JUMPDEST
000000c1: DUP1
000000c2: PUSH4 0x2e2d726c
000000c7: GT
000000c8: PUSH2 0x0117
000000cb: JUMPI
000000cc: DUP1
000000cd: PUSH4 0x3a8343ee
000000d2: GT
000000d3: PUSH2 0x00fc
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0x3a8343ee
000000dd: EQ
000000de: PUSH2 0x02b6
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x3cd18ca0
000000e8: EQ
000000e9: PUSH2 0x02d6
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x3f53c36c
000000f3: EQ
000000f4: PUSH2 0x02f6
000000f7: JUMPI
000000f8: PUSH1 0x00
000000fa: DUP1
000000fb: REVERT
000000fc: JUMPDEST
000000fd: DUP1
000000fe: PUSH4 0x2e2d726c
00000103: EQ
00000104: PUSH2 0x0269
00000107: JUMPI
00000108: DUP1
00000109: PUSH4 0x375b74c3
0000010e: EQ
0000010f: PUSH2 0x0289
00000112: JUMPI
00000113: PUSH1 0x00
00000115: DUP1
00000116: REVERT
00000117: JUMPDEST
00000118: DUP1
00000119: PUSH4 0x14ae3c09
0000011e: EQ
0000011f: PUSH2 0x018c
00000122: JUMPI
00000123: DUP1
00000124: PUSH4 0x15b21082
00000129: EQ
0000012a: PUSH2 0x01f9
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x233ecf78
00000134: EQ
00000135: PUSH2 0x0227
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x2ca40a33
0000013f: EQ
00000140: PUSH2 0x0247
00000143: JUMPI
00000144: PUSH1 0x00
00000146: DUP1
00000147: REVERT
00000148: JUMPDEST
00000149: CALLDATASIZE
0000014a: PUSH2 0x0187
0000014d: JUMPI
0000014e: PUSH1 0x40
00000150: DUP1
00000151: MLOAD
00000152: CALLER
00000153: DUP2
00000154: MSTORE
00000155: CALLVALUE
00000156: PUSH1 0x20
00000158: DUP3
00000159: ADD
0000015a: MSTORE
0000015b: PUSH32 0xa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1
0000017c: SWAP2
0000017d: ADD
0000017e: PUSH1 0x40
00000180: MLOAD
00000181: DUP1
00000182: SWAP2
00000183: SUB
00000184: SWAP1
00000185: LOG1
00000186: STOP
00000187: JUMPDEST
00000188: PUSH1 0x00
0000018a: DUP1
0000018b: REVERT
0000018c: JUMPDEST
0000018d: CALLVALUE
0000018e: DUP1
0000018f: ISZERO
00000190: PUSH2 0x0198
00000193: JUMPI
00000194: PUSH1 0x00
00000196: DUP1
00000197: REVERT
00000198: JUMPDEST
00000199: POP
0000019a: PUSH2 0x01cf
0000019d: PUSH2 0x01a7
000001a0: CALLDATASIZE
000001a1: PUSH1 0x04
000001a3: PUSH2 0x1b7b
000001a6: JUMP
000001a7: JUMPDEST
000001a8: PUSH1 0x04
000001aa: PUSH1 0x20
000001ac: MSTORE
000001ad: PUSH1 0x00
000001af: SWAP1
000001b0: DUP2
000001b1: MSTORE
000001b2: PUSH1 0x40
000001b4: SWAP1
000001b5: KECCAK256
000001b6: SLOAD
000001b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001cc: AND
000001cd: DUP2
000001ce: JUMP
000001cf: JUMPDEST
000001d0: PUSH1 0x40
000001d2: MLOAD
000001d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001e8: SWAP1
000001e9: SWAP2
000001ea: AND
000001eb: DUP2
000001ec: MSTORE
000001ed: PUSH1 0x20
000001ef: ADD
000001f0: JUMPDEST
000001f1: PUSH1 0x40
000001f3: MLOAD
000001f4: DUP1
000001f5: SWAP2
000001f6: SUB
000001f7: SWAP1
000001f8: RETURN
000001f9: JUMPDEST
000001fa: CALLVALUE
000001fb: DUP1
000001fc: ISZERO
000001fd: PUSH2 0x0205
00000200: JUMPI
00000201: PUSH1 0x00
00000203: DUP1
00000204: REVERT
00000205: JUMPDEST
00000206: POP
00000207: PUSH2 0x0219
0000020a: PUSH2 0x0214
0000020d: CALLDATASIZE
0000020e: PUSH1 0x04
00000210: PUSH2 0x1bb9
00000213: JUMP
00000214: JUMPDEST
00000215: PUSH2 0x04b2
00000218: JUMP
00000219: JUMPDEST
0000021a: PUSH1 0x40
0000021c: MLOAD
0000021d: SWAP1
0000021e: DUP2
0000021f: MSTORE
00000220: PUSH1 0x20
00000222: ADD
00000223: PUSH2 0x01f0
00000226: JUMP
00000227: JUMPDEST
00000228: CALLVALUE
00000229: DUP1
0000022a: ISZERO
0000022b: PUSH2 0x0233
0000022e: JUMPI
0000022f: PUSH1 0x00
00000231: DUP1
00000232: REVERT
00000233: JUMPDEST
00000234: POP
00000235: PUSH2 0x0219
00000238: PUSH2 0x0242
0000023b: CALLDATASIZE
0000023c: PUSH1 0x04
0000023e: PUSH2 0x1bb9
00000241: JUMP
00000242: JUMPDEST
00000243: PUSH2 0x068a
00000246: JUMP
00000247: JUMPDEST
00000248: CALLVALUE
00000249: DUP1
0000024a: ISZERO
0000024b: PUSH2 0x0253
0000024e: JUMPI
0000024f: PUSH1 0x00
00000251: DUP1
00000252: REVERT
00000253: JUMPDEST
00000254: POP
00000255: PUSH2 0x0267
00000258: PUSH2 0x0262
0000025b: CALLDATASIZE
0000025c: PUSH1 0x04
0000025e: PUSH2 0x1b7b
00000261: JUMP
00000262: JUMPDEST
00000263: PUSH2 0x0726
00000266: JUMP
00000267: JUMPDEST
00000268: STOP
00000269: JUMPDEST
0000026a: CALLVALUE
0000026b: DUP1
0000026c: ISZERO
0000026d: PUSH2 0x0275
00000270: JUMPI
00000271: PUSH1 0x00
00000273: DUP1
00000274: REVERT
00000275: JUMPDEST
00000276: POP
00000277: PUSH2 0x0267
0000027a: PUSH2 0x0284
0000027d: CALLDATASIZE
0000027e: PUSH1 0x04
00000280: PUSH2 0x1c22
00000283: JUMP
00000284: JUMPDEST
00000285: PUSH2 0x0872
00000288: JUMP
00000289: JUMPDEST
0000028a: CALLVALUE
0000028b: DUP1
0000028c: ISZERO
0000028d: PUSH2 0x0295
00000290: JUMPI
00000291: PUSH1 0x00
00000293: DUP1
00000294: REVERT
00000295: JUMPDEST
00000296: POP
00000297: PUSH1 0x01
00000299: SLOAD
0000029a: PUSH2 0x01cf
0000029d: SWAP1
0000029e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002b3: AND
000002b4: DUP2
000002b5: JUMP
000002b6: JUMPDEST
000002b7: CALLVALUE
000002b8: DUP1
000002b9: ISZERO
000002ba: PUSH2 0x02c2
000002bd: JUMPI
000002be: PUSH1 0x00
000002c0: DUP1
000002c1: REVERT
000002c2: JUMPDEST
000002c3: POP
000002c4: PUSH2 0x0267
000002c7: PUSH2 0x02d1
000002ca: CALLDATASIZE
000002cb: PUSH1 0x04
000002cd: PUSH2 0x1b7b
000002d0: JUMP
000002d1: JUMPDEST
000002d2: PUSH2 0x09be
000002d5: JUMP
000002d6: JUMPDEST
000002d7: CALLVALUE
000002d8: DUP1
000002d9: ISZERO
000002da: PUSH2 0x02e2
000002dd: JUMPI
000002de: PUSH1 0x00
000002e0: DUP1
000002e1: REVERT
000002e2: JUMPDEST
000002e3: POP
000002e4: PUSH2 0x0267
000002e7: PUSH2 0x02f1
000002ea: CALLDATASIZE
000002eb: PUSH1 0x04
000002ed: PUSH2 0x1c22
000002f0: JUMP
000002f1: JUMPDEST
000002f2: PUSH2 0x0ae0
000002f5: JUMP
000002f6: JUMPDEST
000002f7: CALLVALUE
000002f8: DUP1
000002f9: ISZERO
000002fa: PUSH2 0x0302
000002fd: JUMPI
000002fe: PUSH1 0x00
00000300: DUP1
00000301: REVERT
00000302: JUMPDEST
00000303: POP
00000304: PUSH2 0x0219
00000307: PUSH2 0x0311
0000030a: CALLDATASIZE
0000030b: PUSH1 0x04
0000030d: PUSH2 0x1bb9
00000310: JUMP
00000311: JUMPDEST
00000312: PUSH2 0x0d21
00000315: JUMP
00000316: JUMPDEST
00000317: CALLVALUE
00000318: DUP1
00000319: ISZERO
0000031a: PUSH2 0x0322
0000031d: JUMPI
0000031e: PUSH1 0x00
00000320: DUP1
00000321: REVERT
00000322: JUMPDEST
00000323: POP
00000324: PUSH2 0x0267
00000327: PUSH2 0x0331
0000032a: CALLDATASIZE
0000032b: PUSH1 0x04
0000032d: PUSH2 0x1b7b
00000330: JUMP
00000331: JUMPDEST
00000332: PUSH2 0x0db2
00000335: JUMP
00000336: JUMPDEST
00000337: CALLVALUE
00000338: DUP1
00000339: ISZERO
0000033a: PUSH2 0x0342
0000033d: JUMPI
0000033e: PUSH1 0x00
00000340: DUP1
00000341: REVERT
00000342: JUMPDEST
00000343: POP
00000344: PUSH2 0x0366
00000347: PUSH2 0x0351
0000034a: CALLDATASIZE
0000034b: PUSH1 0x04
0000034d: PUSH2 0x1bb9
00000350: JUMP
00000351: JUMPDEST
00000352: PUSH1 0x03
00000354: PUSH1 0x20
00000356: MSTORE
00000357: PUSH1 0x00
00000359: SWAP1
0000035a: DUP2
0000035b: MSTORE
0000035c: PUSH1 0x40
0000035e: SWAP1
0000035f: KECCAK256
00000360: SLOAD
00000361: PUSH1 0xff
00000363: AND
00000364: DUP2
00000365: JUMP
00000366: JUMPDEST
00000367: PUSH1 0x40
00000369: MLOAD
0000036a: SWAP1
0000036b: ISZERO
0000036c: ISZERO
0000036d: DUP2
0000036e: MSTORE
0000036f: PUSH1 0x20
00000371: ADD
00000372: PUSH2 0x01f0
00000375: JUMP
00000376: JUMPDEST
00000377: CALLVALUE
00000378: DUP1
00000379: ISZERO
0000037a: PUSH2 0x0382
0000037d: JUMPI
0000037e: PUSH1 0x00
00000380: DUP1
00000381: REVERT
00000382: JUMPDEST
00000383: POP
00000384: PUSH2 0x0267
00000387: PUSH2 0x0391
0000038a: CALLDATASIZE
0000038b: PUSH1 0x04
0000038d: PUSH2 0x1c77
00000390: JUMP
00000391: JUMPDEST
00000392: PUSH2 0x0ef9
00000395: JUMP
00000396: JUMPDEST
00000397: CALLVALUE
00000398: DUP1
00000399: ISZERO
0000039a: PUSH2 0x03a2
0000039d: JUMPI
0000039e: PUSH1 0x00
000003a0: DUP1
000003a1: REVERT
000003a2: JUMPDEST
000003a3: POP
000003a4: PUSH2 0x0267
000003a7: PUSH2 0x03b1
000003aa: CALLDATASIZE
000003ab: PUSH1 0x04
000003ad: PUSH2 0x1cb9
000003b0: JUMP
000003b1: JUMPDEST
000003b2: PUSH2 0x1021
000003b5: JUMP
000003b6: JUMPDEST
000003b7: CALLVALUE
000003b8: DUP1
000003b9: ISZERO
000003ba: PUSH2 0x03c2
000003bd: JUMPI
000003be: PUSH1 0x00
000003c0: DUP1
000003c1: REVERT
000003c2: JUMPDEST
000003c3: POP
000003c4: PUSH2 0x0219
000003c7: PUSH1 0x00
000003c9: SLOAD
000003ca: DUP2
000003cb: JUMP
000003cc: JUMPDEST
000003cd: CALLVALUE
000003ce: DUP1
000003cf: ISZERO
000003d0: PUSH2 0x03d8
000003d3: JUMPI
000003d4: PUSH1 0x00
000003d6: DUP1
000003d7: REVERT
000003d8: JUMPDEST
000003d9: POP
000003da: PUSH2 0x01cf
000003dd: PUSH2 0x03e7
000003e0: CALLDATASIZE
000003e1: PUSH1 0x04
000003e3: PUSH2 0x1b7b
000003e6: JUMP
000003e7: JUMPDEST
000003e8: PUSH1 0x02
000003ea: PUSH1 0x20
000003ec: MSTORE
000003ed: PUSH1 0x00
000003ef: SWAP1
000003f0: DUP2
000003f1: MSTORE
000003f2: PUSH1 0x40
000003f4: SWAP1
000003f5: KECCAK256
000003f6: SLOAD
000003f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000040c: AND
0000040d: DUP2
0000040e: JUMP
0000040f: JUMPDEST
00000410: CALLVALUE
00000411: DUP1
00000412: ISZERO
00000413: PUSH2 0x041b
00000416: JUMPI
00000417: PUSH1 0x00
00000419: DUP1
0000041a: REVERT
0000041b: JUMPDEST
0000041c: POP
0000041d: PUSH2 0x0267
00000420: PUSH2 0x042a
00000423: CALLDATASIZE
00000424: PUSH1 0x04
00000426: PUSH2 0x1d67
00000429: JUMP
0000042a: JUMPDEST
0000042b: PUSH2 0x128c
0000042e: JUMP
0000042f: JUMPDEST
00000430: CALLVALUE
00000431: DUP1
00000432: ISZERO
00000433: PUSH2 0x043b
00000436: JUMPI
00000437: PUSH1 0x00
00000439: DUP1
0000043a: REVERT
0000043b: JUMPDEST
0000043c: POP
0000043d: PUSH2 0x01cf
00000440: PUSH2 0x044a
00000443: CALLDATASIZE
00000444: PUSH1 0x04
00000446: PUSH2 0x1b7b
00000449: JUMP
0000044a: JUMPDEST
0000044b: PUSH1 0x05
0000044d: PUSH1 0x20
0000044f: MSTORE
00000450: PUSH1 0x00
00000452: SWAP1
00000453: DUP2
00000454: MSTORE
00000455: PUSH1 0x40
00000457: SWAP1
00000458: KECCAK256
00000459: SLOAD
0000045a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000046f: AND
00000470: DUP2
00000471: JUMP
00000472: JUMPDEST
00000473: CALLVALUE
00000474: DUP1
00000475: ISZERO
00000476: PUSH2 0x047e
00000479: JUMPI
0000047a: PUSH1 0x00
0000047c: DUP1
0000047d: REVERT
0000047e: JUMPDEST
0000047f: POP
00000480: PUSH2 0x0267
00000483: PUSH2 0x048d
00000486: CALLDATASIZE
00000487: PUSH1 0x04
00000489: PUSH2 0x1daf
0000048c: JUMP
0000048d: JUMPDEST
0000048e: PUSH2 0x1402
00000491: JUMP
00000492: JUMPDEST
00000493: CALLVALUE
00000494: DUP1
00000495: ISZERO
00000496: PUSH2 0x049e
00000499: JUMPI
0000049a: PUSH1 0x00
0000049c: DUP1
0000049d: REVERT
0000049e: JUMPDEST
0000049f: POP
000004a0: PUSH2 0x0267
000004a3: PUSH2 0x04ad
000004a6: CALLDATASIZE
000004a7: PUSH1 0x04
000004a9: PUSH2 0x1e32
000004ac: JUMP
000004ad: JUMPDEST
000004ae: PUSH2 0x15a6
000004b1: JUMP
000004b2: JUMPDEST
000004b3: PUSH1 0x00
000004b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004ca: DUP3
000004cb: AND
000004cc: PUSH2 0x0536
000004cf: JUMPI
000004d0: PUSH1 0x40
000004d2: MLOAD
000004d3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000004f4: DUP2
000004f5: MSTORE
000004f6: PUSH1 0x20
000004f8: PUSH1 0x04
000004fa: DUP3
000004fb: ADD
000004fc: MSTORE
000004fd: PUSH1 0x0c
000004ff: PUSH1 0x24
00000501: DUP3
00000502: ADD
00000503: MSTORE
00000504: PUSH32 0x7a65726f20616464726573730000000000000000000000000000000000000000
00000525: PUSH1 0x44
00000527: DUP3
00000528: ADD
00000529: MSTORE
0000052a: PUSH1 0x64
0000052c: ADD
0000052d: JUMPDEST
0000052e: PUSH1 0x40
00000530: MLOAD
00000531: DUP1
00000532: SWAP2
00000533: SUB
00000534: SWAP1
00000535: REVERT
00000536: JUMPDEST
00000537: PUSH1 0x00
00000539: DUP1
0000053a: PUSH2 0x0541
0000053d: PUSH2 0x16ad
00000540: JUMP
00000541: JUMPDEST
00000542: PUSH1 0x40
00000544: DUP1
00000545: MLOAD
00000546: PUSH1 0x20
00000548: DUP2
00000549: ADD
0000054a: DUP5
0000054b: SWAP1
0000054c: MSTORE
0000054d: PUSH32 0x15b2108200000000000000000000000000000000000000000000000000000000
0000056e: SWAP2
0000056f: DUP2
00000570: ADD
00000571: SWAP2
00000572: SWAP1
00000573: SWAP2
00000574: MSTORE
00000575: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
00000596: PUSH1 0x60
00000598: DUP9
00000599: SWAP1
0000059a: SHL
0000059b: AND
0000059c: PUSH1 0x44
0000059e: DUP3
0000059f: ADD
000005a0: MSTORE
000005a1: SWAP2
000005a2: SWAP4
000005a3: POP
000005a4: SWAP2
000005a5: POP
000005a6: PUSH1 0x58
000005a8: ADD
000005a9: PUSH1 0x40
000005ab: DUP1
000005ac: MLOAD
000005ad: DUP1
000005ae: DUP4
000005af: SUB
000005b0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000005d1: ADD
000005d2: DUP2
000005d3: MSTORE
000005d4: DUP3
000005d5: DUP3
000005d6: MSTORE
000005d7: DUP1
000005d8: MLOAD
000005d9: PUSH1 0x20
000005db: SWAP2
000005dc: DUP3
000005dd: ADD
000005de: KECCAK256
000005df: DUP2
000005e0: DUP5
000005e1: ADD
000005e2: DUP4
000005e3: MSTORE
000005e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f9: DUP9
000005fa: DUP2
000005fb: AND
000005fc: DUP1
000005fd: DUP7
000005fe: MSTORE
000005ff: PUSH1 0x00
00000601: DUP4
00000602: DUP2
00000603: MSTORE
00000604: PUSH1 0x02
00000606: DUP6
00000607: MSTORE
00000608: DUP6
00000609: SWAP1
0000060a: KECCAK256
0000060b: SWAP6
0000060c: MLOAD
0000060d: DUP7
0000060e: SLOAD
0000060f: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000630: AND
00000631: SWAP3
00000632: AND
00000633: SWAP2
00000634: SWAP1
00000635: SWAP2
00000636: OR
00000637: SWAP1
00000638: SWAP5
00000639: SSTORE
0000063a: DUP3
0000063b: MLOAD
0000063c: DUP2
0000063d: DUP2
0000063e: MSTORE
0000063f: CALLER
00000640: SWAP3
00000641: DUP2
00000642: ADD
00000643: SWAP3
00000644: SWAP1
00000645: SWAP3
00000646: MSTORE
00000647: SWAP2
00000648: DUP2
00000649: ADD
0000064a: SWAP3
0000064b: SWAP1
0000064c: SWAP3
0000064d: MSTORE
0000064e: PUSH1 0x60
00000650: DUP3
00000651: ADD
00000652: DUP4
00000653: SWAP1
00000654: MSTORE
00000655: SWAP4
00000656: POP
00000657: PUSH32 0x8286bbf6adfae598c227689d4e361af126e220106aaa15764538028b07f3a0d4
00000678: SWAP1
00000679: PUSH1 0x80
0000067b: ADD
0000067c: PUSH1 0x40
0000067e: MLOAD
0000067f: DUP1
00000680: SWAP2
00000681: SUB
00000682: SWAP1
00000683: LOG1
00000684: POP
00000685: POP
00000686: SWAP2
00000687: SWAP1
00000688: POP
00000689: JUMP
0000068a: JUMPDEST
0000068b: PUSH1 0x00
0000068d: DUP1
0000068e: DUP1
0000068f: PUSH2 0x06ba
00000692: PUSH1 0x05
00000694: PUSH32 0x233ecf7800000000000000000000000000000000000000000000000000000000
000006b5: DUP7
000006b6: PUSH2 0x172b
000006b9: JUMP
000006ba: JUMPDEST
000006bb: PUSH1 0x40
000006bd: DUP1
000006be: MLOAD
000006bf: DUP4
000006c0: DUP2
000006c1: MSTORE
000006c2: CALLER
000006c3: PUSH1 0x20
000006c5: DUP3
000006c6: ADD
000006c7: MSTORE
000006c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006dd: DUP9
000006de: AND
000006df: SWAP2
000006e0: DUP2
000006e1: ADD
000006e2: SWAP2
000006e3: SWAP1
000006e4: SWAP2
000006e5: MSTORE
000006e6: PUSH1 0x60
000006e8: DUP2
000006e9: ADD
000006ea: DUP3
000006eb: SWAP1
000006ec: MSTORE
000006ed: SWAP2
000006ee: SWAP4
000006ef: POP
000006f0: SWAP2
000006f1: POP
000006f2: PUSH32 0xb196f170a901805d549dbf8366f597f47a4dc7ca96076200a19ea524d6ea6b3b
00000713: SWAP1
00000714: PUSH1 0x80
00000716: ADD
00000717: JUMPDEST
00000718: PUSH1 0x40
0000071a: MLOAD
0000071b: DUP1
0000071c: SWAP2
0000071d: SUB
0000071e: SWAP1
0000071f: LOG1
00000720: POP
00000721: SWAP3
00000722: SWAP2
00000723: POP
00000724: POP
00000725: JUMP
00000726: JUMPDEST
00000727: PUSH1 0x01
00000729: SLOAD
0000072a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000073f: AND
00000740: CALLER
00000741: EQ
00000742: PUSH2 0x07a7
00000745: JUMPI
00000746: PUSH1 0x40
00000748: MLOAD
00000749: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000076a: DUP2
0000076b: MSTORE
0000076c: PUSH1 0x20
0000076e: PUSH1 0x04
00000770: DUP3
00000771: ADD
00000772: MSTORE
00000773: PUSH1 0x0c
00000775: PUSH1 0x24
00000777: DUP3
00000778: ADD
00000779: MSTORE
0000077a: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
0000079b: PUSH1 0x44
0000079d: DUP3
0000079e: ADD
0000079f: MSTORE
000007a0: PUSH1 0x64
000007a2: ADD
000007a3: PUSH2 0x052d
000007a6: JUMP
000007a7: JUMPDEST
000007a8: PUSH1 0x00
000007aa: PUSH2 0x07b4
000007ad: PUSH1 0x05
000007af: DUP4
000007b0: PUSH2 0x1897
000007b3: JUMP
000007b4: JUMPDEST
000007b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ca: DUP2
000007cb: AND
000007cc: PUSH1 0x00
000007ce: DUP2
000007cf: DUP2
000007d0: MSTORE
000007d1: PUSH1 0x03
000007d3: PUSH1 0x20
000007d5: SWAP1
000007d6: DUP2
000007d7: MSTORE
000007d8: PUSH1 0x40
000007da: DUP1
000007db: DUP4
000007dc: KECCAK256
000007dd: DUP1
000007de: SLOAD
000007df: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000800: AND
00000801: SWAP1
00000802: SSTORE
00000803: DUP7
00000804: DUP4
00000805: MSTORE
00000806: PUSH1 0x05
00000808: DUP3
00000809: MSTORE
0000080a: SWAP2
0000080b: DUP3
0000080c: SWAP1
0000080d: KECCAK256
0000080e: DUP1
0000080f: SLOAD
00000810: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000831: AND
00000832: SWAP1
00000833: SSTORE
00000834: DUP2
00000835: MLOAD
00000836: DUP7
00000837: DUP2
00000838: MSTORE
00000839: SWAP1
0000083a: DUP2
0000083b: ADD
0000083c: SWAP3
0000083d: SWAP1
0000083e: SWAP3
0000083f: MSTORE
00000840: SWAP2
00000841: SWAP3
00000842: POP
00000843: PUSH32 0x18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c7383
00000864: SWAP2
00000865: ADD
00000866: JUMPDEST
00000867: PUSH1 0x40
00000869: MLOAD
0000086a: DUP1
0000086b: SWAP2
0000086c: SUB
0000086d: SWAP1
0000086e: LOG1
0000086f: POP
00000870: POP
00000871: JUMP
00000872: JUMPDEST
00000873: CALLER
00000874: PUSH1 0x00
00000876: SWAP1
00000877: DUP2
00000878: MSTORE
00000879: PUSH1 0x03
0000087b: PUSH1 0x20
0000087d: MSTORE
0000087e: PUSH1 0x40
00000880: SWAP1
00000881: KECCAK256
00000882: SLOAD
00000883: PUSH1 0xff
00000885: AND
00000886: PUSH2 0x08eb
00000889: JUMPI
0000088a: PUSH1 0x40
0000088c: MLOAD
0000088d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000008ae: DUP2
000008af: MSTORE
000008b0: PUSH1 0x20
000008b2: PUSH1 0x04
000008b4: DUP3
000008b5: ADD
000008b6: MSTORE
000008b7: PUSH1 0x0c
000008b9: PUSH1 0x24
000008bb: DUP3
000008bc: ADD
000008bd: MSTORE
000008be: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
000008df: PUSH1 0x44
000008e1: DUP3
000008e2: ADD
000008e3: MSTORE
000008e4: PUSH1 0x64
000008e6: ADD
000008e7: PUSH2 0x052d
000008ea: JUMP
000008eb: JUMPDEST
000008ec: PUSH1 0x00
000008ee: JUMPDEST
000008ef: DUP2
000008f0: DUP2
000008f1: LT
000008f2: ISZERO
000008f3: PUSH2 0x09b8
000008f6: JUMPI
000008f7: PUSH1 0x00
000008f9: DUP4
000008fa: DUP4
000008fb: DUP4
000008fc: DUP2
000008fd: DUP2
000008fe: LT
000008ff: PUSH2 0x090a
00000902: JUMPI
00000903: PUSH2 0x090a
00000906: PUSH2 0x1e8b
00000909: JUMP
0000090a: JUMPDEST
0000090b: SWAP1
0000090c: POP
0000090d: PUSH1 0x20
0000090f: MUL
00000910: ADD
00000911: PUSH1 0x20
00000913: DUP2
00000914: ADD
00000915: SWAP1
00000916: PUSH2 0x091f
00000919: SWAP2
0000091a: SWAP1
0000091b: PUSH2 0x1bb9
0000091e: JUMP
0000091f: JUMPDEST
00000920: PUSH1 0x40
00000922: MLOAD
00000923: PUSH32 0xe00af4a700000000000000000000000000000000000000000000000000000000
00000944: DUP2
00000945: MSTORE
00000946: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000095b: DUP8
0000095c: DUP2
0000095d: AND
0000095e: PUSH1 0x04
00000960: DUP4
00000961: ADD
00000962: MSTORE
00000963: SWAP2
00000964: SWAP3
00000965: POP
00000966: SWAP1
00000967: DUP3
00000968: AND
00000969: SWAP1
0000096a: PUSH4 0xe00af4a7
0000096f: SWAP1
00000970: PUSH1 0x24
00000972: ADD
00000973: PUSH1 0x00
00000975: PUSH1 0x40
00000977: MLOAD
00000978: DUP1
00000979: DUP4
0000097a: SUB
0000097b: DUP2
0000097c: PUSH1 0x00
0000097e: DUP8
0000097f: DUP1
00000980: EXTCODESIZE
00000981: ISZERO
00000982: DUP1
00000983: ISZERO
00000984: PUSH2 0x098c
00000987: JUMPI
00000988: PUSH1 0x00
0000098a: DUP1
0000098b: REVERT
0000098c: JUMPDEST
0000098d: POP
0000098e: GAS
0000098f: CALL
00000990: ISZERO
00000991: DUP1
00000992: ISZERO
00000993: PUSH2 0x09a0
00000996: JUMPI
00000997: RETURNDATASIZE
00000998: PUSH1 0x00
0000099a: DUP1
0000099b: RETURNDATACOPY
0000099c: RETURNDATASIZE
0000099d: PUSH1 0x00
0000099f: REVERT
000009a0: JUMPDEST
000009a1: POP
000009a2: POP
000009a3: POP
000009a4: POP
000009a5: POP
000009a6: DUP1
000009a7: DUP1
000009a8: PUSH2 0x09b0
000009ab: SWAP1
000009ac: PUSH2 0x1ee9
000009af: JUMP
000009b0: JUMPDEST
000009b1: SWAP2
000009b2: POP
000009b3: POP
000009b4: PUSH2 0x08ee
000009b7: JUMP
000009b8: JUMPDEST
000009b9: POP
000009ba: POP
000009bb: POP
000009bc: POP
000009bd: JUMP
000009be: JUMPDEST
000009bf: PUSH1 0x01
000009c1: SLOAD
000009c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009d7: AND
000009d8: CALLER
000009d9: EQ
000009da: PUSH2 0x0a3f
000009dd: JUMPI
000009de: PUSH1 0x40
000009e0: MLOAD
000009e1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a02: DUP2
00000a03: MSTORE
00000a04: PUSH1 0x20
00000a06: PUSH1 0x04
00000a08: DUP3
00000a09: ADD
00000a0a: MSTORE
00000a0b: PUSH1 0x0c
00000a0d: PUSH1 0x24
00000a0f: DUP3
00000a10: ADD
00000a11: MSTORE
00000a12: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
00000a33: PUSH1 0x44
00000a35: DUP3
00000a36: ADD
00000a37: MSTORE
00000a38: PUSH1 0x64
00000a3a: ADD
00000a3b: PUSH2 0x052d
00000a3e: JUMP
00000a3f: JUMPDEST
00000a40: PUSH2 0x0a48
00000a43: DUP2
00000a44: PUSH2 0x1941
00000a47: JUMP
00000a48: JUMPDEST
00000a49: PUSH1 0x01
00000a4b: DUP1
00000a4c: SLOAD
00000a4d: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000a6e: SWAP1
00000a6f: DUP2
00000a70: AND
00000a71: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a86: SWAP4
00000a87: DUP5
00000a88: AND
00000a89: OR
00000a8a: DUP3
00000a8b: SSTORE
00000a8c: PUSH1 0x00
00000a8e: DUP5
00000a8f: DUP2
00000a90: MSTORE
00000a91: PUSH1 0x02
00000a93: PUSH1 0x20
00000a95: SWAP1
00000a96: DUP2
00000a97: MSTORE
00000a98: PUSH1 0x40
00000a9a: SWAP2
00000a9b: DUP3
00000a9c: SWAP1
00000a9d: KECCAK256
00000a9e: DUP1
00000a9f: SLOAD
00000aa0: SWAP1
00000aa1: SWAP4
00000aa2: AND
00000aa3: SWAP1
00000aa4: SWAP3
00000aa5: SSTORE
00000aa6: SWAP2
00000aa7: SLOAD
00000aa8: DUP3
00000aa9: MLOAD
00000aaa: DUP6
00000aab: DUP2
00000aac: MSTORE
00000aad: SWAP4
00000aae: AND
00000aaf: SWAP1
00000ab0: DUP4
00000ab1: ADD
00000ab2: MSTORE
00000ab3: PUSH32 0x9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d
00000ad4: SWAP2
00000ad5: ADD
00000ad6: PUSH1 0x40
00000ad8: MLOAD
00000ad9: DUP1
00000ada: SWAP2
00000adb: SUB
00000adc: SWAP1
00000add: LOG1
00000ade: POP
00000adf: JUMP
00000ae0: JUMPDEST
00000ae1: CALLER
00000ae2: PUSH1 0x00
00000ae4: SWAP1
00000ae5: DUP2
00000ae6: MSTORE
00000ae7: PUSH1 0x03
00000ae9: PUSH1 0x20
00000aeb: MSTORE
00000aec: PUSH1 0x40
00000aee: SWAP1
00000aef: KECCAK256
00000af0: SLOAD
00000af1: PUSH1 0xff
00000af3: AND
00000af4: PUSH2 0x0b59
00000af7: JUMPI
00000af8: PUSH1 0x40
00000afa: MLOAD
00000afb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b1c: DUP2
00000b1d: MSTORE
00000b1e: PUSH1 0x20
00000b20: PUSH1 0x04
00000b22: DUP3
00000b23: ADD
00000b24: MSTORE
00000b25: PUSH1 0x0c
00000b27: PUSH1 0x24
00000b29: DUP3
00000b2a: ADD
00000b2b: MSTORE
00000b2c: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
00000b4d: PUSH1 0x44
00000b4f: DUP3
00000b50: ADD
00000b51: MSTORE
00000b52: PUSH1 0x64
00000b54: ADD
00000b55: PUSH2 0x052d
00000b58: JUMP
00000b59: JUMPDEST
00000b5a: DUP3
00000b5b: ADDRESS
00000b5c: PUSH1 0x00
00000b5e: JUMPDEST
00000b5f: DUP4
00000b60: DUP2
00000b61: LT
00000b62: ISZERO
00000b63: PUSH2 0x0d19
00000b66: JUMPI
00000b67: PUSH1 0x00
00000b69: DUP6
00000b6a: DUP6
00000b6b: DUP4
00000b6c: DUP2
00000b6d: DUP2
00000b6e: LT
00000b6f: PUSH2 0x0b7a
00000b72: JUMPI
00000b73: PUSH2 0x0b7a
00000b76: PUSH2 0x1e8b
00000b79: JUMP
00000b7a: JUMPDEST
00000b7b: SWAP1
00000b7c: POP
00000b7d: PUSH1 0x20
00000b7f: MUL
00000b80: ADD
00000b81: PUSH1 0x20
00000b83: DUP2
00000b84: ADD
00000b85: SWAP1
00000b86: PUSH2 0x0b8f
00000b89: SWAP2
00000b8a: SWAP1
00000b8b: PUSH2 0x1bb9
00000b8e: JUMP
00000b8f: JUMPDEST
00000b90: PUSH1 0x40
00000b92: MLOAD
00000b93: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000bb4: DUP2
00000bb5: MSTORE
00000bb6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bcb: DUP1
00000bcc: DUP4
00000bcd: AND
00000bce: PUSH1 0x04
00000bd0: DUP4
00000bd1: ADD
00000bd2: MSTORE
00000bd3: SWAP2
00000bd4: SWAP3
00000bd5: POP
00000bd6: PUSH1 0x00
00000bd8: SWAP2
00000bd9: DUP7
00000bda: AND
00000bdb: SWAP1
00000bdc: PUSH4 0x70a08231
00000be1: SWAP1
00000be2: PUSH1 0x24
00000be4: ADD
00000be5: PUSH1 0x20
00000be7: PUSH1 0x40
00000be9: MLOAD
00000bea: DUP1
00000beb: DUP4
00000bec: SUB
00000bed: DUP2
00000bee: DUP7
00000bef: GAS
00000bf0: STATICCALL
00000bf1: ISZERO
00000bf2: DUP1
00000bf3: ISZERO
00000bf4: PUSH2 0x0c01
00000bf7: JUMPI
00000bf8: RETURNDATASIZE
00000bf9: PUSH1 0x00
00000bfb: DUP1
00000bfc: RETURNDATACOPY
00000bfd: RETURNDATASIZE
00000bfe: PUSH1 0x00
00000c00: REVERT
00000c01: JUMPDEST
00000c02: POP
00000c03: POP
00000c04: POP
00000c05: POP
00000c06: PUSH1 0x40
00000c08: MLOAD
00000c09: RETURNDATASIZE
00000c0a: PUSH1 0x1f
00000c0c: NOT
00000c0d: PUSH1 0x1f
00000c0f: DUP3
00000c10: ADD
00000c11: AND
00000c12: DUP3
00000c13: ADD
00000c14: DUP1
00000c15: PUSH1 0x40
00000c17: MSTORE
00000c18: POP
00000c19: DUP2
00000c1a: ADD
00000c1b: SWAP1
00000c1c: PUSH2 0x0c25
00000c1f: SWAP2
00000c20: SWAP1
00000c21: PUSH2 0x1f21
00000c24: JUMP
00000c25: JUMPDEST
00000c26: PUSH1 0x40
00000c28: MLOAD
00000c29: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c3e: DUP1
00000c3f: DUP6
00000c40: AND
00000c41: PUSH1 0x24
00000c43: DUP4
00000c44: ADD
00000c45: MSTORE
00000c46: DUP7
00000c47: AND
00000c48: PUSH1 0x44
00000c4a: DUP3
00000c4b: ADD
00000c4c: MSTORE
00000c4d: PUSH1 0x64
00000c4f: DUP2
00000c50: ADD
00000c51: DUP3
00000c52: SWAP1
00000c53: MSTORE
00000c54: SWAP1
00000c55: SWAP2
00000c56: POP
00000c57: PUSH2 0x0d04
00000c5a: SWAP1
00000c5b: DUP10
00000c5c: SWAP1
00000c5d: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00000c7e: SWAP1
00000c7f: PUSH1 0x84
00000c81: ADD
00000c82: JUMPDEST
00000c83: PUSH1 0x40
00000c85: DUP1
00000c86: MLOAD
00000c87: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000ca8: DUP2
00000ca9: DUP5
00000caa: SUB
00000cab: ADD
00000cac: DUP2
00000cad: MSTORE
00000cae: SWAP2
00000caf: SWAP1
00000cb0: MSTORE
00000cb1: PUSH1 0x20
00000cb3: DUP2
00000cb4: ADD
00000cb5: DUP1
00000cb6: MLOAD
00000cb7: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000cd4: AND
00000cd5: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00000cf6: SWAP1
00000cf7: SWAP4
00000cf8: AND
00000cf9: SWAP3
00000cfa: SWAP1
00000cfb: SWAP3
00000cfc: OR
00000cfd: SWAP1
00000cfe: SWAP2
00000cff: MSTORE
00000d00: PUSH2 0x19ea
00000d03: JUMP
00000d04: JUMPDEST
00000d05: POP
00000d06: POP
00000d07: DUP1
00000d08: DUP1
00000d09: PUSH2 0x0d11
00000d0c: SWAP1
00000d0d: PUSH2 0x1ee9
00000d10: JUMP
00000d11: JUMPDEST
00000d12: SWAP2
00000d13: POP
00000d14: POP
00000d15: PUSH2 0x0b5e
00000d18: JUMP
00000d19: JUMPDEST
00000d1a: POP
00000d1b: POP
00000d1c: POP
00000d1d: POP
00000d1e: POP
00000d1f: POP
00000d20: JUMP
00000d21: JUMPDEST
00000d22: PUSH1 0x00
00000d24: DUP1
00000d25: DUP1
00000d26: PUSH2 0x0d51
00000d29: PUSH1 0x04
00000d2b: PUSH32 0x3f53c36c00000000000000000000000000000000000000000000000000000000
00000d4c: DUP7
00000d4d: PUSH2 0x172b
00000d50: JUMP
00000d51: JUMPDEST
00000d52: PUSH1 0x40
00000d54: DUP1
00000d55: MLOAD
00000d56: DUP4
00000d57: DUP2
00000d58: MSTORE
00000d59: CALLER
00000d5a: PUSH1 0x20
00000d5c: DUP3
00000d5d: ADD
00000d5e: MSTORE
00000d5f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d74: DUP9
00000d75: AND
00000d76: SWAP2
00000d77: DUP2
00000d78: ADD
00000d79: SWAP2
00000d7a: SWAP1
00000d7b: SWAP2
00000d7c: MSTORE
00000d7d: PUSH1 0x60
00000d7f: DUP2
00000d80: ADD
00000d81: DUP3
00000d82: SWAP1
00000d83: MSTORE
00000d84: SWAP2
00000d85: SWAP4
00000d86: POP
00000d87: SWAP2
00000d88: POP
00000d89: PUSH32 0xb25046a4d73a710942ead57a87d6f3a3bf5fb03add01c9e337042558e86d1b55
00000daa: SWAP1
00000dab: PUSH1 0x80
00000dad: ADD
00000dae: PUSH2 0x0717
00000db1: JUMP
00000db2: JUMPDEST
00000db3: PUSH1 0x01
00000db5: SLOAD
00000db6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dcb: AND
00000dcc: CALLER
00000dcd: EQ
00000dce: PUSH2 0x0e33
00000dd1: JUMPI
00000dd2: PUSH1 0x40
00000dd4: MLOAD
00000dd5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000df6: DUP2
00000df7: MSTORE
00000df8: PUSH1 0x20
00000dfa: PUSH1 0x04
00000dfc: DUP3
00000dfd: ADD
00000dfe: MSTORE
00000dff: PUSH1 0x0c
00000e01: PUSH1 0x24
00000e03: DUP3
00000e04: ADD
00000e05: MSTORE
00000e06: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
00000e27: PUSH1 0x44
00000e29: DUP3
00000e2a: ADD
00000e2b: MSTORE
00000e2c: PUSH1 0x64
00000e2e: ADD
00000e2f: PUSH2 0x052d
00000e32: JUMP
00000e33: JUMPDEST
00000e34: PUSH1 0x00
00000e36: PUSH2 0x0e40
00000e39: PUSH1 0x04
00000e3b: DUP4
00000e3c: PUSH2 0x1897
00000e3f: JUMP
00000e40: JUMPDEST
00000e41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e56: DUP2
00000e57: AND
00000e58: PUSH1 0x00
00000e5a: DUP2
00000e5b: DUP2
00000e5c: MSTORE
00000e5d: PUSH1 0x03
00000e5f: PUSH1 0x20
00000e61: SWAP1
00000e62: DUP2
00000e63: MSTORE
00000e64: PUSH1 0x40
00000e66: DUP1
00000e67: DUP4
00000e68: KECCAK256
00000e69: DUP1
00000e6a: SLOAD
00000e6b: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000e8c: AND
00000e8d: PUSH1 0x01
00000e8f: OR
00000e90: SWAP1
00000e91: SSTORE
00000e92: DUP7
00000e93: DUP4
00000e94: MSTORE
00000e95: PUSH1 0x04
00000e97: DUP3
00000e98: MSTORE
00000e99: SWAP2
00000e9a: DUP3
00000e9b: SWAP1
00000e9c: KECCAK256
00000e9d: DUP1
00000e9e: SLOAD
00000e9f: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000ec0: AND
00000ec1: SWAP1
00000ec2: SSTORE
00000ec3: DUP2
00000ec4: MLOAD
00000ec5: DUP7
00000ec6: DUP2
00000ec7: MSTORE
00000ec8: SWAP1
00000ec9: DUP2
00000eca: ADD
00000ecb: SWAP3
00000ecc: SWAP1
00000ecd: SWAP3
00000ece: MSTORE
00000ecf: SWAP2
00000ed0: SWAP3
00000ed1: POP
00000ed2: PUSH32 0xd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb393
00000ef3: SWAP2
00000ef4: ADD
00000ef5: PUSH2 0x0866
00000ef8: JUMP
00000ef9: JUMPDEST
00000efa: CALLER
00000efb: PUSH1 0x00
00000efd: SWAP1
00000efe: DUP2
00000eff: MSTORE
00000f00: PUSH1 0x03
00000f02: PUSH1 0x20
00000f04: MSTORE
00000f05: PUSH1 0x40
00000f07: SWAP1
00000f08: KECCAK256
00000f09: SLOAD
00000f0a: PUSH1 0xff
00000f0c: AND
00000f0d: PUSH2 0x0f72
00000f10: JUMPI
00000f11: PUSH1 0x40
00000f13: MLOAD
00000f14: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f35: DUP2
00000f36: MSTORE
00000f37: PUSH1 0x20
00000f39: PUSH1 0x04
00000f3b: DUP3
00000f3c: ADD
00000f3d: MSTORE
00000f3e: PUSH1 0x0c
00000f40: PUSH1 0x24
00000f42: DUP3
00000f43: ADD
00000f44: MSTORE
00000f45: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
00000f66: PUSH1 0x44
00000f68: DUP3
00000f69: ADD
00000f6a: MSTORE
00000f6b: PUSH1 0x64
00000f6d: ADD
00000f6e: PUSH2 0x052d
00000f71: JUMP
00000f72: JUMPDEST
00000f73: PUSH1 0x00
00000f75: JUMPDEST
00000f76: DUP2
00000f77: DUP2
00000f78: LT
00000f79: ISZERO
00000f7a: PUSH2 0x101c
00000f7d: JUMPI
00000f7e: PUSH1 0x00
00000f80: DUP4
00000f81: DUP4
00000f82: DUP4
00000f83: DUP2
00000f84: DUP2
00000f85: LT
00000f86: PUSH2 0x0f91
00000f89: JUMPI
00000f8a: PUSH2 0x0f91
00000f8d: PUSH2 0x1e8b
00000f90: JUMP
00000f91: JUMPDEST
00000f92: SWAP1
00000f93: POP
00000f94: PUSH1 0x20
00000f96: MUL
00000f97: ADD
00000f98: PUSH1 0x20
00000f9a: DUP2
00000f9b: ADD
00000f9c: SWAP1
00000f9d: PUSH2 0x0fa6
00000fa0: SWAP2
00000fa1: SWAP1
00000fa2: PUSH2 0x1bb9
00000fa5: JUMP
00000fa6: JUMPDEST
00000fa7: SWAP1
00000fa8: POP
00000fa9: DUP1
00000faa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fbf: AND
00000fc0: PUSH4 0x90ec71bd
00000fc5: PUSH1 0x40
00000fc7: MLOAD
00000fc8: DUP2
00000fc9: PUSH4 0xffffffff
00000fce: AND
00000fcf: PUSH1 0xe0
00000fd1: SHL
00000fd2: DUP2
00000fd3: MSTORE
00000fd4: PUSH1 0x04
00000fd6: ADD
00000fd7: PUSH1 0x00
00000fd9: PUSH1 0x40
00000fdb: MLOAD
00000fdc: DUP1
00000fdd: DUP4
00000fde: SUB
00000fdf: DUP2
00000fe0: PUSH1 0x00
00000fe2: DUP8
00000fe3: DUP1
00000fe4: EXTCODESIZE
00000fe5: ISZERO
00000fe6: DUP1
00000fe7: ISZERO
00000fe8: PUSH2 0x0ff0
00000feb: JUMPI
00000fec: PUSH1 0x00
00000fee: DUP1
00000fef: REVERT
00000ff0: JUMPDEST
00000ff1: POP
00000ff2: GAS
00000ff3: CALL
00000ff4: ISZERO
00000ff5: DUP1
00000ff6: ISZERO
00000ff7: PUSH2 0x1004
00000ffa: JUMPI
00000ffb: RETURNDATASIZE
00000ffc: PUSH1 0x00
00000ffe: DUP1
00000fff: RETURNDATACOPY
00001000: RETURNDATASIZE
00001001: PUSH1 0x00
00001003: REVERT
00001004: JUMPDEST
00001005: POP
00001006: POP
00001007: POP
00001008: POP
00001009: POP
0000100a: DUP1
0000100b: DUP1
0000100c: PUSH2 0x1014
0000100f: SWAP1
00001010: PUSH2 0x1ee9
00001013: JUMP
00001014: JUMPDEST
00001015: SWAP2
00001016: POP
00001017: POP
00001018: PUSH2 0x0f75
0000101b: JUMP
0000101c: JUMPDEST
0000101d: POP
0000101e: POP
0000101f: POP
00001020: JUMP
00001021: JUMPDEST
00001022: CALLER
00001023: PUSH1 0x00
00001025: SWAP1
00001026: DUP2
00001027: MSTORE
00001028: PUSH1 0x03
0000102a: PUSH1 0x20
0000102c: MSTORE
0000102d: PUSH1 0x40
0000102f: SWAP1
00001030: KECCAK256
00001031: SLOAD
00001032: PUSH1 0xff
00001034: AND
00001035: PUSH2 0x109a
00001038: JUMPI
00001039: PUSH1 0x40
0000103b: MLOAD
0000103c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000105d: DUP2
0000105e: MSTORE
0000105f: PUSH1 0x20
00001061: PUSH1 0x04
00001063: DUP3
00001064: ADD
00001065: MSTORE
00001066: PUSH1 0x0c
00001068: PUSH1 0x24
0000106a: DUP3
0000106b: ADD
0000106c: MSTORE
0000106d: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
0000108e: PUSH1 0x44
00001090: DUP3
00001091: ADD
00001092: MSTORE
00001093: PUSH1 0x64
00001095: ADD
00001096: PUSH2 0x052d
00001099: JUMP
0000109a: JUMPDEST
0000109b: DUP3
0000109c: DUP2
0000109d: EQ
0000109e: PUSH2 0x1103
000010a1: JUMPI
000010a2: PUSH1 0x40
000010a4: MLOAD
000010a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000010c6: DUP2
000010c7: MSTORE
000010c8: PUSH1 0x20
000010ca: PUSH1 0x04
000010cc: DUP3
000010cd: ADD
000010ce: MSTORE
000010cf: PUSH1 0x11
000010d1: PUSH1 0x24
000010d3: DUP3
000010d4: ADD
000010d5: MSTORE
000010d6: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000
000010f7: PUSH1 0x44
000010f9: DUP3
000010fa: ADD
000010fb: MSTORE
000010fc: PUSH1 0x64
000010fe: ADD
000010ff: PUSH2 0x052d
00001102: JUMP
00001103: JUMPDEST
00001104: PUSH1 0x00
00001106: JUMPDEST
00001107: DUP4
00001108: DUP2
00001109: LT
0000110a: ISZERO
0000110b: PUSH2 0x1285
0000110e: JUMPI
0000110f: PUSH1 0x00
00001111: DUP6
00001112: DUP6
00001113: DUP4
00001114: DUP2
00001115: DUP2
00001116: LT
00001117: PUSH2 0x1122
0000111a: JUMPI
0000111b: PUSH2 0x1122
0000111e: PUSH2 0x1e8b
00001121: JUMP
00001122: JUMPDEST
00001123: SWAP1
00001124: POP
00001125: PUSH1 0x20
00001127: MUL
00001128: ADD
00001129: PUSH1 0x20
0000112b: DUP2
0000112c: ADD
0000112d: SWAP1
0000112e: PUSH2 0x1137
00001131: SWAP2
00001132: SWAP1
00001133: PUSH2 0x1bb9
00001136: JUMP
00001137: JUMPDEST
00001138: SWAP1
00001139: POP
0000113a: PUSH1 0x00
0000113c: DUP5
0000113d: DUP5
0000113e: DUP5
0000113f: DUP2
00001140: DUP2
00001141: LT
00001142: PUSH2 0x114d
00001145: JUMPI
00001146: PUSH2 0x114d
00001149: PUSH2 0x1e8b
0000114c: JUMP
0000114d: JUMPDEST
0000114e: SWAP1
0000114f: POP
00001150: PUSH1 0x20
00001152: MUL
00001153: ADD
00001154: CALLDATALOAD
00001155: SWAP1
00001156: POP
00001157: PUSH1 0x00
00001159: DUP3
0000115a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000116f: AND
00001170: DUP3
00001171: PUSH1 0x40
00001173: MLOAD
00001174: PUSH1 0x00
00001176: PUSH1 0x40
00001178: MLOAD
00001179: DUP1
0000117a: DUP4
0000117b: SUB
0000117c: DUP2
0000117d: DUP6
0000117e: DUP8
0000117f: GAS
00001180: CALL
00001181: SWAP3
00001182: POP
00001183: POP
00001184: POP
00001185: RETURNDATASIZE
00001186: DUP1
00001187: PUSH1 0x00
00001189: DUP2
0000118a: EQ
0000118b: PUSH2 0x11b0
0000118e: JUMPI
0000118f: PUSH1 0x40
00001191: MLOAD
00001192: SWAP2
00001193: POP
00001194: PUSH1 0x1f
00001196: NOT
00001197: PUSH1 0x3f
00001199: RETURNDATASIZE
0000119a: ADD
0000119b: AND
0000119c: DUP3
0000119d: ADD
0000119e: PUSH1 0x40
000011a0: MSTORE
000011a1: RETURNDATASIZE
000011a2: DUP3
000011a3: MSTORE
000011a4: RETURNDATASIZE
000011a5: PUSH1 0x00
000011a7: PUSH1 0x20
000011a9: DUP5
000011aa: ADD
000011ab: RETURNDATACOPY
000011ac: PUSH2 0x11b5
000011af: JUMP
000011b0: JUMPDEST
000011b1: PUSH1 0x60
000011b3: SWAP2
000011b4: POP
000011b5: JUMPDEST
000011b6: POP
000011b7: POP
000011b8: SWAP1
000011b9: POP
000011ba: DUP1
000011bb: PUSH2 0x1220
000011be: JUMPI
000011bf: PUSH1 0x40
000011c1: MLOAD
000011c2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000011e3: DUP2
000011e4: MSTORE
000011e5: PUSH1 0x20
000011e7: PUSH1 0x04
000011e9: DUP3
000011ea: ADD
000011eb: MSTORE
000011ec: PUSH1 0x18
000011ee: PUSH1 0x24
000011f0: DUP3
000011f1: ADD
000011f2: MSTORE
000011f3: PUSH32 0x6661696c656420746f207472616e736665722065746865720000000000000000
00001214: PUSH1 0x44
00001216: DUP3
00001217: ADD
00001218: MSTORE
00001219: PUSH1 0x64
0000121b: ADD
0000121c: PUSH2 0x052d
0000121f: JUMP
00001220: JUMPDEST
00001221: PUSH1 0x40
00001223: DUP1
00001224: MLOAD
00001225: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000123a: DUP6
0000123b: AND
0000123c: DUP2
0000123d: MSTORE
0000123e: PUSH1 0x20
00001240: DUP2
00001241: ADD
00001242: DUP5
00001243: SWAP1
00001244: MSTORE
00001245: PUSH32 0xf35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575
00001266: SWAP2
00001267: ADD
00001268: PUSH1 0x40
0000126a: MLOAD
0000126b: DUP1
0000126c: SWAP2
0000126d: SUB
0000126e: SWAP1
0000126f: LOG1
00001270: POP
00001271: POP
00001272: POP
00001273: DUP1
00001274: DUP1
00001275: PUSH2 0x127d
00001278: SWAP1
00001279: PUSH2 0x1ee9
0000127c: JUMP
0000127d: JUMPDEST
0000127e: SWAP2
0000127f: POP
00001280: POP
00001281: PUSH2 0x1106
00001284: JUMP
00001285: JUMPDEST
00001286: POP
00001287: POP
00001288: POP
00001289: POP
0000128a: POP
0000128b: JUMP
0000128c: JUMPDEST
0000128d: CALLER
0000128e: PUSH1 0x00
00001290: SWAP1
00001291: DUP2
00001292: MSTORE
00001293: PUSH1 0x03
00001295: PUSH1 0x20
00001297: MSTORE
00001298: PUSH1 0x40
0000129a: SWAP1
0000129b: KECCAK256
0000129c: SLOAD
0000129d: PUSH1 0xff
0000129f: AND
000012a0: PUSH2 0x1305
000012a3: JUMPI
000012a4: PUSH1 0x40
000012a6: MLOAD
000012a7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000012c8: DUP2
000012c9: MSTORE
000012ca: PUSH1 0x20
000012cc: PUSH1 0x04
000012ce: DUP3
000012cf: ADD
000012d0: MSTORE
000012d1: PUSH1 0x0c
000012d3: PUSH1 0x24
000012d5: DUP3
000012d6: ADD
000012d7: MSTORE
000012d8: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
000012f9: PUSH1 0x44
000012fb: DUP3
000012fc: ADD
000012fd: MSTORE
000012fe: PUSH1 0x64
00001300: ADD
00001301: PUSH2 0x052d
00001304: JUMP
00001305: JUMPDEST
00001306: PUSH1 0x00
00001308: DUP1
00001309: DUP5
0000130a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000131f: AND
00001320: DUP5
00001321: DUP5
00001322: PUSH1 0x40
00001324: MLOAD
00001325: PUSH2 0x132f
00001328: SWAP3
00001329: SWAP2
0000132a: SWAP1
0000132b: PUSH2 0x1f3a
0000132e: JUMP
0000132f: JUMPDEST
00001330: PUSH1 0x00
00001332: PUSH1 0x40
00001334: MLOAD
00001335: DUP1
00001336: DUP4
00001337: SUB
00001338: DUP2
00001339: PUSH1 0x00
0000133b: DUP7
0000133c: GAS
0000133d: CALL
0000133e: SWAP2
0000133f: POP
00001340: POP
00001341: RETURNDATASIZE
00001342: DUP1
00001343: PUSH1 0x00
00001345: DUP2
00001346: EQ
00001347: PUSH2 0x136c
0000134a: JUMPI
0000134b: PUSH1 0x40
0000134d: MLOAD
0000134e: SWAP2
0000134f: POP
00001350: PUSH1 0x1f
00001352: NOT
00001353: PUSH1 0x3f
00001355: RETURNDATASIZE
00001356: ADD
00001357: AND
00001358: DUP3
00001359: ADD
0000135a: PUSH1 0x40
0000135c: MSTORE
0000135d: RETURNDATASIZE
0000135e: DUP3
0000135f: MSTORE
00001360: RETURNDATASIZE
00001361: PUSH1 0x00
00001363: PUSH1 0x20
00001365: DUP5
00001366: ADD
00001367: RETURNDATACOPY
00001368: PUSH2 0x1371
0000136b: JUMP
0000136c: JUMPDEST
0000136d: PUSH1 0x60
0000136f: SWAP2
00001370: POP
00001371: JUMPDEST
00001372: POP
00001373: SWAP2
00001374: POP
00001375: SWAP2
00001376: POP
00001377: DUP2
00001378: ISZERO
00001379: PUSH2 0x13be
0000137c: JUMPI
0000137d: PUSH32 0x18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b96
0000139e: DUP6
0000139f: DUP6
000013a0: DUP6
000013a1: DUP5
000013a2: PUSH1 0x40
000013a4: MLOAD
000013a5: PUSH2 0x13b1
000013a8: SWAP5
000013a9: SWAP4
000013aa: SWAP3
000013ab: SWAP2
000013ac: SWAP1
000013ad: PUSH2 0x2009
000013b0: JUMP
000013b1: JUMPDEST
000013b2: PUSH1 0x40
000013b4: MLOAD
000013b5: DUP1
000013b6: SWAP2
000013b7: SUB
000013b8: SWAP1
000013b9: LOG1
000013ba: PUSH2 0x1285
000013bd: JUMP
000013be: JUMPDEST
000013bf: PUSH32 0xaba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e6274
000013e0: DUP6
000013e1: DUP6
000013e2: DUP6
000013e3: DUP5
000013e4: PUSH1 0x40
000013e6: MLOAD
000013e7: PUSH2 0x13f3
000013ea: SWAP5
000013eb: SWAP4
000013ec: SWAP3
000013ed: SWAP2
000013ee: SWAP1
000013ef: PUSH2 0x2009
000013f2: JUMP
000013f3: JUMPDEST
000013f4: PUSH1 0x40
000013f6: MLOAD
000013f7: DUP1
000013f8: SWAP2
000013f9: SUB
000013fa: SWAP1
000013fb: LOG1
000013fc: POP
000013fd: POP
000013fe: POP
000013ff: POP
00001400: POP
00001401: JUMP
00001402: JUMPDEST
00001403: CALLER
00001404: PUSH1 0x00
00001406: SWAP1
00001407: DUP2
00001408: MSTORE
00001409: PUSH1 0x03
0000140b: PUSH1 0x20
0000140d: MSTORE
0000140e: PUSH1 0x40
00001410: SWAP1
00001411: KECCAK256
00001412: SLOAD
00001413: PUSH1 0xff
00001415: AND
00001416: PUSH2 0x147b
00001419: JUMPI
0000141a: PUSH1 0x40
0000141c: MLOAD
0000141d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000143e: DUP2
0000143f: MSTORE
00001440: PUSH1 0x20
00001442: PUSH1 0x04
00001444: DUP3
00001445: ADD
00001446: MSTORE
00001447: PUSH1 0x0c
00001449: PUSH1 0x24
0000144b: DUP3
0000144c: ADD
0000144d: MSTORE
0000144e: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
0000146f: PUSH1 0x44
00001471: DUP3
00001472: ADD
00001473: MSTORE
00001474: PUSH1 0x64
00001476: ADD
00001477: PUSH2 0x052d
0000147a: JUMP
0000147b: JUMPDEST
0000147c: DUP3
0000147d: DUP2
0000147e: EQ
0000147f: PUSH2 0x14e4
00001482: JUMPI
00001483: PUSH1 0x40
00001485: MLOAD
00001486: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000014a7: DUP2
000014a8: MSTORE
000014a9: PUSH1 0x20
000014ab: PUSH1 0x04
000014ad: DUP3
000014ae: ADD
000014af: MSTORE
000014b0: PUSH1 0x11
000014b2: PUSH1 0x24
000014b4: DUP3
000014b5: ADD
000014b6: MSTORE
000014b7: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000
000014d8: PUSH1 0x44
000014da: DUP3
000014db: ADD
000014dc: MSTORE
000014dd: PUSH1 0x64
000014df: ADD
000014e0: PUSH2 0x052d
000014e3: JUMP
000014e4: JUMPDEST
000014e5: PUSH1 0x00
000014e7: JUMPDEST
000014e8: DUP4
000014e9: DUP2
000014ea: LT
000014eb: ISZERO
000014ec: PUSH2 0x0d19
000014ef: JUMPI
000014f0: PUSH1 0x00
000014f2: DUP6
000014f3: DUP6
000014f4: DUP4
000014f5: DUP2
000014f6: DUP2
000014f7: LT
000014f8: PUSH2 0x1503
000014fb: JUMPI
000014fc: PUSH2 0x1503
000014ff: PUSH2 0x1e8b
00001502: JUMP
00001503: JUMPDEST
00001504: SWAP1
00001505: POP
00001506: PUSH1 0x20
00001508: MUL
00001509: ADD
0000150a: PUSH1 0x20
0000150c: DUP2
0000150d: ADD
0000150e: SWAP1
0000150f: PUSH2 0x1518
00001512: SWAP2
00001513: SWAP1
00001514: PUSH2 0x1bb9
00001517: JUMP
00001518: JUMPDEST
00001519: SWAP1
0000151a: POP
0000151b: PUSH1 0x00
0000151d: DUP5
0000151e: DUP5
0000151f: DUP5
00001520: DUP2
00001521: DUP2
00001522: LT
00001523: PUSH2 0x152e
00001526: JUMPI
00001527: PUSH2 0x152e
0000152a: PUSH2 0x1e8b
0000152d: JUMP
0000152e: JUMPDEST
0000152f: PUSH1 0x40
00001531: MLOAD
00001532: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001547: DUP7
00001548: AND
00001549: PUSH1 0x24
0000154b: DUP3
0000154c: ADD
0000154d: MSTORE
0000154e: PUSH1 0x20
00001550: SWAP1
00001551: SWAP2
00001552: MUL
00001553: SWAP3
00001554: SWAP1
00001555: SWAP3
00001556: ADD
00001557: CALLDATALOAD
00001558: PUSH1 0x44
0000155a: DUP4
0000155b: ADD
0000155c: DUP2
0000155d: SWAP1
0000155e: MSTORE
0000155f: SWAP3
00001560: POP
00001561: PUSH2 0x1591
00001564: SWAP2
00001565: DUP11
00001566: SWAP2
00001567: POP
00001568: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001589: SWAP1
0000158a: PUSH1 0x64
0000158c: ADD
0000158d: PUSH2 0x0c82
00001590: JUMP
00001591: JUMPDEST
00001592: POP
00001593: POP
00001594: DUP1
00001595: DUP1
00001596: PUSH2 0x159e
00001599: SWAP1
0000159a: PUSH2 0x1ee9
0000159d: JUMP
0000159e: JUMPDEST
0000159f: SWAP2
000015a0: POP
000015a1: POP
000015a2: PUSH2 0x14e7
000015a5: JUMP
000015a6: JUMPDEST
000015a7: CALLER
000015a8: PUSH1 0x00
000015aa: SWAP1
000015ab: DUP2
000015ac: MSTORE
000015ad: PUSH1 0x03
000015af: PUSH1 0x20
000015b1: MSTORE
000015b2: PUSH1 0x40
000015b4: SWAP1
000015b5: KECCAK256
000015b6: SLOAD
000015b7: PUSH1 0xff
000015b9: AND
000015ba: PUSH2 0x161f
000015bd: JUMPI
000015be: PUSH1 0x40
000015c0: MLOAD
000015c1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000015e2: DUP2
000015e3: MSTORE
000015e4: PUSH1 0x20
000015e6: PUSH1 0x04
000015e8: DUP3
000015e9: ADD
000015ea: MSTORE
000015eb: PUSH1 0x0c
000015ed: PUSH1 0x24
000015ef: DUP3
000015f0: ADD
000015f1: MSTORE
000015f2: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000
00001613: PUSH1 0x44
00001615: DUP3
00001616: ADD
00001617: MSTORE
00001618: PUSH1 0x64
0000161a: ADD
0000161b: PUSH2 0x052d
0000161e: JUMP
0000161f: JUMPDEST
00001620: PUSH1 0x40
00001622: MLOAD
00001623: PUSH32 0xdfd1fb7a00000000000000000000000000000000000000000000000000000000
00001644: DUP2
00001645: MSTORE
00001646: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000165b: DUP6
0000165c: AND
0000165d: SWAP1
0000165e: PUSH4 0xdfd1fb7a
00001663: SWAP1
00001664: PUSH2 0x1675
00001667: SWAP1
00001668: DUP7
00001669: SWAP1
0000166a: DUP7
0000166b: SWAP1
0000166c: DUP7
0000166d: SWAP1
0000166e: PUSH1 0x04
00001670: ADD
00001671: PUSH2 0x2056
00001674: JUMP
00001675: JUMPDEST
00001676: PUSH1 0x00
00001678: PUSH1 0x40
0000167a: MLOAD
0000167b: DUP1
0000167c: DUP4
0000167d: SUB
0000167e: DUP2
0000167f: PUSH1 0x00
00001681: DUP8
00001682: DUP1
00001683: EXTCODESIZE
00001684: ISZERO
00001685: DUP1
00001686: ISZERO
00001687: PUSH2 0x168f
0000168a: JUMPI
0000168b: PUSH1 0x00
0000168d: DUP1
0000168e: REVERT
0000168f: JUMPDEST
00001690: POP
00001691: GAS
00001692: CALL
00001693: ISZERO
00001694: DUP1
00001695: ISZERO
00001696: PUSH2 0x16a3
00001699: JUMPI
0000169a: RETURNDATASIZE
0000169b: PUSH1 0x00
0000169d: DUP1
0000169e: RETURNDATACOPY
0000169f: RETURNDATASIZE
000016a0: PUSH1 0x00
000016a2: REVERT
000016a3: JUMPDEST
000016a4: POP
000016a5: POP
000016a6: POP
000016a7: POP
000016a8: POP
000016a9: POP
000016aa: POP
000016ab: POP
000016ac: JUMP
000016ad: JUMPDEST
000016ae: PUSH1 0x00
000016b0: DUP1
000016b1: PUSH1 0x00
000016b3: DUP1
000016b4: DUP2
000016b5: SLOAD
000016b6: PUSH2 0x16be
000016b9: SWAP1
000016ba: PUSH2 0x1ee9
000016bd: JUMP
000016be: JUMPDEST
000016bf: SWAP2
000016c0: DUP3
000016c1: SWAP1
000016c2: SSTORE
000016c3: POP
000016c4: SWAP1
000016c5: POP
000016c6: PUSH2 0x16d0
000016c9: PUSH1 0x01
000016cb: NUMBER
000016cc: PUSH2 0x208f
000016cf: JUMP
000016d0: JUMPDEST
000016d1: PUSH1 0x40
000016d3: DUP1
000016d4: MLOAD
000016d5: SWAP2
000016d6: BLOCKHASH
000016d7: PUSH1 0x20
000016d9: DUP4
000016da: ADD
000016db: MSTORE
000016dc: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
000016fd: ADDRESS
000016fe: PUSH1 0x60
00001700: SHL
00001701: AND
00001702: SWAP1
00001703: DUP3
00001704: ADD
00001705: MSTORE
00001706: PUSH1 0x54
00001708: DUP2
00001709: ADD
0000170a: DUP3
0000170b: SWAP1
0000170c: MSTORE
0000170d: PUSH1 0x74
0000170f: ADD
00001710: PUSH1 0x40
00001712: MLOAD
00001713: PUSH1 0x20
00001715: DUP2
00001716: DUP4
00001717: SUB
00001718: SUB
00001719: DUP2
0000171a: MSTORE
0000171b: SWAP1
0000171c: PUSH1 0x40
0000171e: MSTORE
0000171f: DUP1
00001720: MLOAD
00001721: SWAP1
00001722: PUSH1 0x20
00001724: ADD
00001725: KECCAK256
00001726: SWAP2
00001727: POP
00001728: SWAP1
00001729: SWAP2
0000172a: JUMP
0000172b: JUMPDEST
0000172c: PUSH1 0x00
0000172e: DUP1
0000172f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001744: DUP4
00001745: AND
00001746: PUSH2 0x17ab
00001749: JUMPI
0000174a: PUSH1 0x40
0000174c: MLOAD
0000174d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000176e: DUP2
0000176f: MSTORE
00001770: PUSH1 0x20
00001772: PUSH1 0x04
00001774: DUP3
00001775: ADD
00001776: MSTORE
00001777: PUSH1 0x0c
00001779: PUSH1 0x24
0000177b: DUP3
0000177c: ADD
0000177d: MSTORE
0000177e: PUSH32 0x7a65726f20616464726573730000000000000000000000000000000000000000
0000179f: PUSH1 0x44
000017a1: DUP3
000017a2: ADD
000017a3: MSTORE
000017a4: PUSH1 0x64
000017a6: ADD
000017a7: PUSH2 0x052d
000017aa: JUMP
000017ab: JUMPDEST
000017ac: PUSH1 0x00
000017ae: DUP1
000017af: PUSH2 0x17b6
000017b2: PUSH2 0x16ad
000017b5: JUMP
000017b6: JUMPDEST
000017b7: PUSH1 0x40
000017b9: DUP1
000017ba: MLOAD
000017bb: PUSH1 0x20
000017bd: DUP1
000017be: DUP3
000017bf: ADD
000017c0: SWAP5
000017c1: SWAP1
000017c2: SWAP5
000017c3: MSTORE
000017c4: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000017e5: SWAP10
000017e6: SWAP1
000017e7: SWAP10
000017e8: AND
000017e9: DUP10
000017ea: DUP3
000017eb: ADD
000017ec: MSTORE
000017ed: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
0000180e: PUSH1 0x60
00001810: DUP10
00001811: SWAP1
00001812: SHL
00001813: AND
00001814: PUSH1 0x44
00001816: DUP11
00001817: ADD
00001818: MSTORE
00001819: DUP1
0000181a: MLOAD
0000181b: DUP1
0000181c: DUP11
0000181d: SUB
0000181e: PUSH1 0x38
00001820: ADD
00001821: DUP2
00001822: MSTORE
00001823: PUSH1 0x58
00001825: DUP11
00001826: ADD
00001827: DUP1
00001828: DUP4
00001829: MSTORE
0000182a: DUP2
0000182b: MLOAD
0000182c: SWAP2
0000182d: DUP6
0000182e: ADD
0000182f: SWAP2
00001830: SWAP1
00001831: SWAP2
00001832: KECCAK256
00001833: PUSH1 0x78
00001835: SWAP1
00001836: SWAP11
00001837: ADD
00001838: DUP3
00001839: MSTORE
0000183a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000184f: SWAP9
00001850: DUP10
00001851: AND
00001852: DUP2
00001853: MSTORE
00001854: PUSH1 0x00
00001856: DUP11
00001857: DUP2
00001858: MSTORE
00001859: SWAP11
0000185a: SWAP1
0000185b: SWAP4
0000185c: MSTORE
0000185d: SWAP1
0000185e: SWAP9
0000185f: KECCAK256
00001860: SWAP1
00001861: MLOAD
00001862: DUP2
00001863: SLOAD
00001864: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001885: AND
00001886: SWAP7
00001887: AND
00001888: SWAP6
00001889: SWAP1
0000188a: SWAP6
0000188b: OR
0000188c: SWAP1
0000188d: SWAP5
0000188e: SSTORE
0000188f: POP
00001890: SWAP3
00001891: SWAP5
00001892: SWAP3
00001893: POP
00001894: POP
00001895: POP
00001896: JUMP
00001897: JUMPDEST
00001898: PUSH1 0x00
0000189a: DUP2
0000189b: DUP2
0000189c: MSTORE
0000189d: PUSH1 0x20
0000189f: DUP4
000018a0: SWAP1
000018a1: MSTORE
000018a2: PUSH1 0x40
000018a4: DUP2
000018a5: KECCAK256
000018a6: DUP1
000018a7: SLOAD
000018a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018bd: AND
000018be: PUSH2 0x1923
000018c1: JUMPI
000018c2: PUSH1 0x40
000018c4: MLOAD
000018c5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000018e6: DUP2
000018e7: MSTORE
000018e8: PUSH1 0x20
000018ea: PUSH1 0x04
000018ec: DUP3
000018ed: ADD
000018ee: MSTORE
000018ef: PUSH1 0x0e
000018f1: PUSH1 0x24
000018f3: DUP3
000018f4: ADD
000018f5: MSTORE
000018f6: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000
00001917: PUSH1 0x44
00001919: DUP3
0000191a: ADD
0000191b: MSTORE
0000191c: PUSH1 0x64
0000191e: ADD
0000191f: PUSH2 0x052d
00001922: JUMP
00001923: JUMPDEST
00001924: SLOAD
00001925: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000193a: AND
0000193b: SWAP4
0000193c: SWAP3
0000193d: POP
0000193e: POP
0000193f: POP
00001940: JUMP
00001941: JUMPDEST
00001942: PUSH1 0x00
00001944: DUP2
00001945: DUP2
00001946: MSTORE
00001947: PUSH1 0x02
00001949: PUSH1 0x20
0000194b: MSTORE
0000194c: PUSH1 0x40
0000194e: DUP2
0000194f: KECCAK256
00001950: DUP1
00001951: SLOAD
00001952: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001967: AND
00001968: PUSH2 0x19cd
0000196b: JUMPI
0000196c: PUSH1 0x40
0000196e: MLOAD
0000196f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001990: DUP2
00001991: MSTORE
00001992: PUSH1 0x20
00001994: PUSH1 0x04
00001996: DUP3
00001997: ADD
00001998: MSTORE
00001999: PUSH1 0x0e
0000199b: PUSH1 0x24
0000199d: DUP3
0000199e: ADD
0000199f: MSTORE
000019a0: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000
000019c1: PUSH1 0x44
000019c3: DUP3
000019c4: ADD
000019c5: MSTORE
000019c6: PUSH1 0x64
000019c8: ADD
000019c9: PUSH2 0x052d
000019cc: JUMP
000019cd: JUMPDEST
000019ce: SLOAD
000019cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019e4: AND
000019e5: SWAP3
000019e6: SWAP2
000019e7: POP
000019e8: POP
000019e9: JUMP
000019ea: JUMPDEST
000019eb: PUSH1 0x00
000019ed: PUSH2 0x1a2c
000019f0: DUP4
000019f1: DUP4
000019f2: PUSH1 0x40
000019f4: MLOAD
000019f5: DUP1
000019f6: PUSH1 0x40
000019f8: ADD
000019f9: PUSH1 0x40
000019fb: MSTORE
000019fc: DUP1
000019fd: PUSH1 0x0c
000019ff: DUP2
00001a00: MSTORE
00001a01: PUSH1 0x20
00001a03: ADD
00001a04: PUSH32 0x45524332303a7265766572740000000000000000000000000000000000000000
00001a25: DUP2
00001a26: MSTORE
00001a27: POP
00001a28: PUSH2 0x1ab0
00001a2b: JUMP
00001a2c: JUMPDEST
00001a2d: DUP1
00001a2e: MLOAD
00001a2f: SWAP1
00001a30: SWAP2
00001a31: POP
00001a32: ISZERO
00001a33: PUSH2 0x101c
00001a36: JUMPI
00001a37: DUP1
00001a38: DUP1
00001a39: PUSH1 0x20
00001a3b: ADD
00001a3c: SWAP1
00001a3d: MLOAD
00001a3e: DUP2
00001a3f: ADD
00001a40: SWAP1
00001a41: PUSH2 0x1a4a
00001a44: SWAP2
00001a45: SWAP1
00001a46: PUSH2 0x20a6
00001a49: JUMP
00001a4a: JUMPDEST
00001a4b: PUSH2 0x101c
00001a4e: JUMPI
00001a4f: PUSH1 0x40
00001a51: MLOAD
00001a52: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001a73: DUP2
00001a74: MSTORE
00001a75: PUSH1 0x20
00001a77: PUSH1 0x04
00001a79: DUP3
00001a7a: ADD
00001a7b: MSTORE
00001a7c: PUSH1 0x0b
00001a7e: PUSH1 0x24
00001a80: DUP3
00001a81: ADD
00001a82: MSTORE
00001a83: PUSH32 0x45524332303a66616c7365000000000000000000000000000000000000000000
00001aa4: PUSH1 0x44
00001aa6: DUP3
00001aa7: ADD
00001aa8: MSTORE
00001aa9: PUSH1 0x64
00001aab: ADD
00001aac: PUSH2 0x052d
00001aaf: JUMP
00001ab0: JUMPDEST
00001ab1: PUSH1 0x60
00001ab3: PUSH1 0x00
00001ab5: DUP1
00001ab6: DUP6
00001ab7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001acc: AND
00001acd: DUP6
00001ace: PUSH1 0x40
00001ad0: MLOAD
00001ad1: PUSH2 0x1ada
00001ad4: SWAP2
00001ad5: SWAP1
00001ad6: PUSH2 0x20c8
00001ad9: JUMP
00001ada: JUMPDEST
00001adb: PUSH1 0x00
00001add: PUSH1 0x40
00001adf: MLOAD
00001ae0: DUP1
00001ae1: DUP4
00001ae2: SUB
00001ae3: DUP2
00001ae4: PUSH1 0x00
00001ae6: DUP7
00001ae7: GAS
00001ae8: CALL
00001ae9: SWAP2
00001aea: POP
00001aeb: POP
00001aec: RETURNDATASIZE
00001aed: DUP1
00001aee: PUSH1 0x00
00001af0: DUP2
00001af1: EQ
00001af2: PUSH2 0x1b17
00001af5: JUMPI
00001af6: PUSH1 0x40
00001af8: MLOAD
00001af9: SWAP2
00001afa: POP
00001afb: PUSH1 0x1f
00001afd: NOT
00001afe: PUSH1 0x3f
00001b00: RETURNDATASIZE
00001b01: ADD
00001b02: AND
00001b03: DUP3
00001b04: ADD
00001b05: PUSH1 0x40
00001b07: MSTORE
00001b08: RETURNDATASIZE
00001b09: DUP3
00001b0a: MSTORE
00001b0b: RETURNDATASIZE
00001b0c: PUSH1 0x00
00001b0e: PUSH1 0x20
00001b10: DUP5
00001b11: ADD
00001b12: RETURNDATACOPY
00001b13: PUSH2 0x1b1c
00001b16: JUMP
00001b17: JUMPDEST
00001b18: PUSH1 0x60
00001b1a: SWAP2
00001b1b: POP
00001b1c: JUMPDEST
00001b1d: POP
00001b1e: SWAP2
00001b1f: POP
00001b20: SWAP2
00001b21: POP
00001b22: DUP2
00001b23: ISZERO
00001b24: PUSH2 0x1b30
00001b27: JUMPI
00001b28: SWAP2
00001b29: POP
00001b2a: PUSH2 0x1b74
00001b2d: SWAP1
00001b2e: POP
00001b2f: JUMP
00001b30: JUMPDEST
00001b31: DUP1
00001b32: MLOAD
00001b33: ISZERO
00001b34: PUSH2 0x1b40
00001b37: JUMPI
00001b38: DUP1
00001b39: MLOAD
00001b3a: DUP1
00001b3b: DUP3
00001b3c: PUSH1 0x20
00001b3e: ADD
00001b3f: REVERT
00001b40: JUMPDEST
00001b41: DUP4
00001b42: PUSH1 0x40
00001b44: MLOAD
00001b45: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001b66: DUP2
00001b67: MSTORE
00001b68: PUSH1 0x04
00001b6a: ADD
00001b6b: PUSH2 0x052d
00001b6e: SWAP2
00001b6f: SWAP1
00001b70: PUSH2 0x20e4
00001b73: JUMP
00001b74: JUMPDEST
00001b75: SWAP4
00001b76: SWAP3
00001b77: POP
00001b78: POP
00001b79: POP
00001b7a: JUMP
00001b7b: JUMPDEST
00001b7c: PUSH1 0x00
00001b7e: PUSH1 0x20
00001b80: DUP3
00001b81: DUP5
00001b82: SUB
00001b83: SLT
00001b84: ISZERO
00001b85: PUSH2 0x1b8d
00001b88: JUMPI
00001b89: PUSH1 0x00
00001b8b: DUP1
00001b8c: REVERT
00001b8d: JUMPDEST
00001b8e: POP
00001b8f: CALLDATALOAD
00001b90: SWAP2
00001b91: SWAP1
00001b92: POP
00001b93: JUMP
00001b94: JUMPDEST
00001b95: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001baa: DUP2
00001bab: AND
00001bac: DUP2
00001bad: EQ
00001bae: PUSH2 0x1bb6
00001bb1: JUMPI
00001bb2: PUSH1 0x00
00001bb4: DUP1
00001bb5: REVERT
00001bb6: JUMPDEST
00001bb7: POP
00001bb8: JUMP
00001bb9: JUMPDEST
00001bba: PUSH1 0x00
00001bbc: PUSH1 0x20
00001bbe: DUP3
00001bbf: DUP5
00001bc0: SUB
00001bc1: SLT
00001bc2: ISZERO
00001bc3: PUSH2 0x1bcb
00001bc6: JUMPI
00001bc7: PUSH1 0x00
00001bc9: DUP1
00001bca: REVERT
00001bcb: JUMPDEST
00001bcc: DUP2
00001bcd: CALLDATALOAD
00001bce: PUSH2 0x1b74
00001bd1: DUP2
00001bd2: PUSH2 0x1b94
00001bd5: JUMP
00001bd6: JUMPDEST
00001bd7: PUSH1 0x00
00001bd9: DUP1
00001bda: DUP4
00001bdb: PUSH1 0x1f
00001bdd: DUP5
00001bde: ADD
00001bdf: SLT
00001be0: PUSH2 0x1be8
00001be3: JUMPI
00001be4: PUSH1 0x00
00001be6: DUP1
00001be7: REVERT
00001be8: JUMPDEST
00001be9: POP
00001bea: DUP2
00001beb: CALLDATALOAD
00001bec: PUSH8 0xffffffffffffffff
00001bf5: DUP2
00001bf6: GT
00001bf7: ISZERO
00001bf8: PUSH2 0x1c00
00001bfb: JUMPI
00001bfc: PUSH1 0x00
00001bfe: DUP1
00001bff: REVERT
00001c00: JUMPDEST
00001c01: PUSH1 0x20
00001c03: DUP4
00001c04: ADD
00001c05: SWAP2
00001c06: POP
00001c07: DUP4
00001c08: PUSH1 0x20
00001c0a: DUP3
00001c0b: PUSH1 0x05
00001c0d: SHL
00001c0e: DUP6
00001c0f: ADD
00001c10: ADD
00001c11: GT
00001c12: ISZERO
00001c13: PUSH2 0x1c1b
00001c16: JUMPI
00001c17: PUSH1 0x00
00001c19: DUP1
00001c1a: REVERT
00001c1b: JUMPDEST
00001c1c: SWAP3
00001c1d: POP
00001c1e: SWAP3
00001c1f: SWAP1
00001c20: POP
00001c21: JUMP
00001c22: JUMPDEST
00001c23: PUSH1 0x00
00001c25: DUP1
00001c26: PUSH1 0x00
00001c28: PUSH1 0x40
00001c2a: DUP5
00001c2b: DUP7
00001c2c: SUB
00001c2d: SLT
00001c2e: ISZERO
00001c2f: PUSH2 0x1c37
00001c32: JUMPI
00001c33: PUSH1 0x00
00001c35: DUP1
00001c36: REVERT
00001c37: JUMPDEST
00001c38: DUP4
00001c39: CALLDATALOAD
00001c3a: PUSH2 0x1c42
00001c3d: DUP2
00001c3e: PUSH2 0x1b94
00001c41: JUMP
00001c42: JUMPDEST
00001c43: SWAP3
00001c44: POP
00001c45: PUSH1 0x20
00001c47: DUP5
00001c48: ADD
00001c49: CALLDATALOAD
00001c4a: PUSH8 0xffffffffffffffff
00001c53: DUP2
00001c54: GT
00001c55: ISZERO
00001c56: PUSH2 0x1c5e
00001c59: JUMPI
00001c5a: PUSH1 0x00
00001c5c: DUP1
00001c5d: REVERT
00001c5e: JUMPDEST
00001c5f: PUSH2 0x1c6a
00001c62: DUP7
00001c63: DUP3
00001c64: DUP8
00001c65: ADD
00001c66: PUSH2 0x1bd6
00001c69: JUMP
00001c6a: JUMPDEST
00001c6b: SWAP5
00001c6c: SWAP8
00001c6d: SWAP1
00001c6e: SWAP7
00001c6f: POP
00001c70: SWAP4
00001c71: SWAP5
00001c72: POP
00001c73: POP
00001c74: POP
00001c75: POP
00001c76: JUMP
00001c77: JUMPDEST
00001c78: PUSH1 0x00
00001c7a: DUP1
00001c7b: PUSH1 0x20
00001c7d: DUP4
00001c7e: DUP6
00001c7f: SUB
00001c80: SLT
00001c81: ISZERO
00001c82: PUSH2 0x1c8a
00001c85: JUMPI
00001c86: PUSH1 0x00
00001c88: DUP1
00001c89: REVERT
00001c8a: JUMPDEST
00001c8b: DUP3
00001c8c: CALLDATALOAD
00001c8d: PUSH8 0xffffffffffffffff
00001c96: DUP2
00001c97: GT
00001c98: ISZERO
00001c99: PUSH2 0x1ca1
00001c9c: JUMPI
00001c9d: PUSH1 0x00
00001c9f: DUP1
00001ca0: REVERT
00001ca1: JUMPDEST
00001ca2: PUSH2 0x1cad
00001ca5: DUP6
00001ca6: DUP3
00001ca7: DUP7
00001ca8: ADD
00001ca9: PUSH2 0x1bd6
00001cac: JUMP
00001cad: JUMPDEST
00001cae: SWAP1
00001caf: SWAP7
00001cb0: SWAP1
00001cb1: SWAP6
00001cb2: POP
00001cb3: SWAP4
00001cb4: POP
00001cb5: POP
00001cb6: POP
00001cb7: POP
00001cb8: JUMP
00001cb9: JUMPDEST
00001cba: PUSH1 0x00
00001cbc: DUP1
00001cbd: PUSH1 0x00
00001cbf: DUP1
00001cc0: PUSH1 0x40
00001cc2: DUP6
00001cc3: DUP8
00001cc4: SUB
00001cc5: SLT
00001cc6: ISZERO
00001cc7: PUSH2 0x1ccf
00001cca: JUMPI
00001ccb: PUSH1 0x00
00001ccd: DUP1
00001cce: REVERT
00001ccf: JUMPDEST
00001cd0: DUP5
00001cd1: CALLDATALOAD
00001cd2: PUSH8 0xffffffffffffffff
00001cdb: DUP1
00001cdc: DUP3
00001cdd: GT
00001cde: ISZERO
00001cdf: PUSH2 0x1ce7
00001ce2: JUMPI
00001ce3: PUSH1 0x00
00001ce5: DUP1
00001ce6: REVERT
00001ce7: JUMPDEST
00001ce8: PUSH2 0x1cf3
00001ceb: DUP9
00001cec: DUP4
00001ced: DUP10
00001cee: ADD
00001cef: PUSH2 0x1bd6
00001cf2: JUMP
00001cf3: JUMPDEST
00001cf4: SWAP1
00001cf5: SWAP7
00001cf6: POP
00001cf7: SWAP5
00001cf8: POP
00001cf9: PUSH1 0x20
00001cfb: DUP8
00001cfc: ADD
00001cfd: CALLDATALOAD
00001cfe: SWAP2
00001cff: POP
00001d00: DUP1
00001d01: DUP3
00001d02: GT
00001d03: ISZERO
00001d04: PUSH2 0x1d0c
00001d07: JUMPI
00001d08: PUSH1 0x00
00001d0a: DUP1
00001d0b: REVERT
00001d0c: JUMPDEST
00001d0d: POP
00001d0e: PUSH2 0x1d19
00001d11: DUP8
00001d12: DUP3
00001d13: DUP9
00001d14: ADD
00001d15: PUSH2 0x1bd6
00001d18: JUMP
00001d19: JUMPDEST
00001d1a: SWAP6
00001d1b: SWAP9
00001d1c: SWAP5
00001d1d: SWAP8
00001d1e: POP
00001d1f: SWAP6
00001d20: POP
00001d21: POP
00001d22: POP
00001d23: POP
00001d24: JUMP
00001d25: JUMPDEST
00001d26: PUSH1 0x00
00001d28: DUP1
00001d29: DUP4
00001d2a: PUSH1 0x1f
00001d2c: DUP5
00001d2d: ADD
00001d2e: SLT
00001d2f: PUSH2 0x1d37
00001d32: JUMPI
00001d33: PUSH1 0x00
00001d35: DUP1
00001d36: REVERT
00001d37: JUMPDEST
00001d38: POP
00001d39: DUP2
00001d3a: CALLDATALOAD
00001d3b: PUSH8 0xffffffffffffffff
00001d44: DUP2
00001d45: GT
00001d46: ISZERO
00001d47: PUSH2 0x1d4f
00001d4a: JUMPI
00001d4b: PUSH1 0x00
00001d4d: DUP1
00001d4e: REVERT
00001d4f: JUMPDEST
00001d50: PUSH1 0x20
00001d52: DUP4
00001d53: ADD
00001d54: SWAP2
00001d55: POP
00001d56: DUP4
00001d57: PUSH1 0x20
00001d59: DUP3
00001d5a: DUP6
00001d5b: ADD
00001d5c: ADD
00001d5d: GT
00001d5e: ISZERO
00001d5f: PUSH2 0x1c1b
00001d62: JUMPI
00001d63: PUSH1 0x00
00001d65: DUP1
00001d66: REVERT
00001d67: JUMPDEST
00001d68: PUSH1 0x00
00001d6a: DUP1
00001d6b: PUSH1 0x00
00001d6d: PUSH1 0x40
00001d6f: DUP5
00001d70: DUP7
00001d71: SUB
00001d72: SLT
00001d73: ISZERO
00001d74: PUSH2 0x1d7c
00001d77: JUMPI
00001d78: PUSH1 0x00
00001d7a: DUP1
00001d7b: REVERT
00001d7c: JUMPDEST
00001d7d: DUP4
00001d7e: CALLDATALOAD
00001d7f: PUSH2 0x1d87
00001d82: DUP2
00001d83: PUSH2 0x1b94
00001d86: JUMP
00001d87: JUMPDEST
00001d88: SWAP3
00001d89: POP
00001d8a: PUSH1 0x20
00001d8c: DUP5
00001d8d: ADD
00001d8e: CALLDATALOAD
00001d8f: PUSH8 0xffffffffffffffff
00001d98: DUP2
00001d99: GT
00001d9a: ISZERO
00001d9b: PUSH2 0x1da3
00001d9e: JUMPI
00001d9f: PUSH1 0x00
00001da1: DUP1
00001da2: REVERT
00001da3: JUMPDEST
00001da4: PUSH2 0x1c6a
00001da7: DUP7
00001da8: DUP3
00001da9: DUP8
00001daa: ADD
00001dab: PUSH2 0x1d25
00001dae: JUMP
00001daf: JUMPDEST
00001db0: PUSH1 0x00
00001db2: DUP1
00001db3: PUSH1 0x00
00001db5: DUP1
00001db6: PUSH1 0x00
00001db8: PUSH1 0x60
00001dba: DUP7
00001dbb: DUP9
00001dbc: SUB
00001dbd: SLT
00001dbe: ISZERO
00001dbf: PUSH2 0x1dc7
00001dc2: JUMPI
00001dc3: PUSH1 0x00
00001dc5: DUP1
00001dc6: REVERT
00001dc7: JUMPDEST
00001dc8: DUP6
00001dc9: CALLDATALOAD
00001dca: PUSH2 0x1dd2
00001dcd: DUP2
00001dce: PUSH2 0x1b94
00001dd1: JUMP
00001dd2: JUMPDEST
00001dd3: SWAP5
00001dd4: POP
00001dd5: PUSH1 0x20
00001dd7: DUP7
00001dd8: ADD
00001dd9: CALLDATALOAD
00001dda: PUSH8 0xffffffffffffffff
00001de3: DUP1
00001de4: DUP3
00001de5: GT
00001de6: ISZERO
00001de7: PUSH2 0x1def
00001dea: JUMPI
00001deb: PUSH1 0x00
00001ded: DUP1
00001dee: REVERT
00001def: JUMPDEST
00001df0: PUSH2 0x1dfb
00001df3: DUP10
00001df4: DUP4
00001df5: DUP11
00001df6: ADD
00001df7: PUSH2 0x1bd6
00001dfa: JUMP
00001dfb: JUMPDEST
00001dfc: SWAP1
00001dfd: SWAP7
00001dfe: POP
00001dff: SWAP5
00001e00: POP
00001e01: PUSH1 0x40
00001e03: DUP9
00001e04: ADD
00001e05: CALLDATALOAD
00001e06: SWAP2
00001e07: POP
00001e08: DUP1
00001e09: DUP3
00001e0a: GT
00001e0b: ISZERO
00001e0c: PUSH2 0x1e14
00001e0f: JUMPI
00001e10: PUSH1 0x00
00001e12: DUP1
00001e13: REVERT
00001e14: JUMPDEST
00001e15: POP
00001e16: PUSH2 0x1e21
00001e19: DUP9
00001e1a: DUP3
00001e1b: DUP10
00001e1c: ADD
00001e1d: PUSH2 0x1bd6
00001e20: JUMP
00001e21: JUMPDEST
00001e22: SWAP7
00001e23: SWAP10
00001e24: SWAP6
00001e25: SWAP9
00001e26: POP
00001e27: SWAP4
00001e28: SWAP7
00001e29: POP
00001e2a: SWAP3
00001e2b: SWAP5
00001e2c: SWAP4
00001e2d: SWAP3
00001e2e: POP
00001e2f: POP
00001e30: POP
00001e31: JUMP
00001e32: JUMPDEST
00001e33: PUSH1 0x00
00001e35: DUP1
00001e36: PUSH1 0x00
00001e38: DUP1
00001e39: PUSH1 0x60
00001e3b: DUP6
00001e3c: DUP8
00001e3d: SUB
00001e3e: SLT
00001e3f: ISZERO
00001e40: PUSH2 0x1e48
00001e43: JUMPI
00001e44: PUSH1 0x00
00001e46: DUP1
00001e47: REVERT
00001e48: JUMPDEST
00001e49: DUP5
00001e4a: CALLDATALOAD
00001e4b: PUSH2 0x1e53
00001e4e: DUP2
00001e4f: PUSH2 0x1b94
00001e52: JUMP
00001e53: JUMPDEST
00001e54: SWAP4
00001e55: POP
00001e56: PUSH1 0x20
00001e58: DUP6
00001e59: ADD
00001e5a: CALLDATALOAD
00001e5b: PUSH2 0x1e63
00001e5e: DUP2
00001e5f: PUSH2 0x1b94
00001e62: JUMP
00001e63: JUMPDEST
00001e64: SWAP3
00001e65: POP
00001e66: PUSH1 0x40
00001e68: DUP6
00001e69: ADD
00001e6a: CALLDATALOAD
00001e6b: PUSH8 0xffffffffffffffff
00001e74: DUP2
00001e75: GT
00001e76: ISZERO
00001e77: PUSH2 0x1e7f
00001e7a: JUMPI
00001e7b: PUSH1 0x00
00001e7d: DUP1
00001e7e: REVERT
00001e7f: JUMPDEST
00001e80: PUSH2 0x1d19
00001e83: DUP8
00001e84: DUP3
00001e85: DUP9
00001e86: ADD
00001e87: PUSH2 0x1d25
00001e8a: JUMP
00001e8b: JUMPDEST
00001e8c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001ead: PUSH1 0x00
00001eaf: MSTORE
00001eb0: PUSH1 0x32
00001eb2: PUSH1 0x04
00001eb4: MSTORE
00001eb5: PUSH1 0x24
00001eb7: PUSH1 0x00
00001eb9: REVERT
00001eba: JUMPDEST
00001ebb: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001edc: PUSH1 0x00
00001ede: MSTORE
00001edf: PUSH1 0x11
00001ee1: PUSH1 0x04
00001ee3: MSTORE
00001ee4: PUSH1 0x24
00001ee6: PUSH1 0x00
00001ee8: REVERT
00001ee9: JUMPDEST
00001eea: PUSH1 0x00
00001eec: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001f0d: DUP3
00001f0e: SUB
00001f0f: PUSH2 0x1f1a
00001f12: JUMPI
00001f13: PUSH2 0x1f1a
00001f16: PUSH2 0x1eba
00001f19: JUMP
00001f1a: JUMPDEST
00001f1b: POP
00001f1c: PUSH1 0x01
00001f1e: ADD
00001f1f: SWAP1
00001f20: JUMP
00001f21: JUMPDEST
00001f22: PUSH1 0x00
00001f24: PUSH1 0x20
00001f26: DUP3
00001f27: DUP5
00001f28: SUB
00001f29: SLT
00001f2a: ISZERO
00001f2b: PUSH2 0x1f33
00001f2e: JUMPI
00001f2f: PUSH1 0x00
00001f31: DUP1
00001f32: REVERT
00001f33: JUMPDEST
00001f34: POP
00001f35: MLOAD
00001f36: SWAP2
00001f37: SWAP1
00001f38: POP
00001f39: JUMP
00001f3a: JUMPDEST
00001f3b: DUP2
00001f3c: DUP4
00001f3d: DUP3
00001f3e: CALLDATACOPY
00001f3f: PUSH1 0x00
00001f41: SWAP2
00001f42: ADD
00001f43: SWAP1
00001f44: DUP2
00001f45: MSTORE
00001f46: SWAP2
00001f47: SWAP1
00001f48: POP
00001f49: JUMP
00001f4a: JUMPDEST
00001f4b: DUP2
00001f4c: DUP4
00001f4d: MSTORE
00001f4e: DUP2
00001f4f: DUP2
00001f50: PUSH1 0x20
00001f52: DUP6
00001f53: ADD
00001f54: CALLDATACOPY
00001f55: POP
00001f56: PUSH1 0x00
00001f58: PUSH1 0x20
00001f5a: DUP3
00001f5b: DUP5
00001f5c: ADD
00001f5d: ADD
00001f5e: MSTORE
00001f5f: PUSH1 0x00
00001f61: PUSH1 0x20
00001f63: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001f84: PUSH1 0x1f
00001f86: DUP5
00001f87: ADD
00001f88: AND
00001f89: DUP5
00001f8a: ADD
00001f8b: ADD
00001f8c: SWAP1
00001f8d: POP
00001f8e: SWAP3
00001f8f: SWAP2
00001f90: POP
00001f91: POP
00001f92: JUMP
00001f93: JUMPDEST
00001f94: PUSH1 0x00
00001f96: JUMPDEST
00001f97: DUP4
00001f98: DUP2
00001f99: LT
00001f9a: ISZERO
00001f9b: PUSH2 0x1fae
00001f9e: JUMPI
00001f9f: DUP2
00001fa0: DUP2
00001fa1: ADD
00001fa2: MLOAD
00001fa3: DUP4
00001fa4: DUP3
00001fa5: ADD
00001fa6: MSTORE
00001fa7: PUSH1 0x20
00001fa9: ADD
00001faa: PUSH2 0x1f96
00001fad: JUMP
00001fae: JUMPDEST
00001faf: DUP4
00001fb0: DUP2
00001fb1: GT
00001fb2: ISZERO
00001fb3: PUSH2 0x09b8
00001fb6: JUMPI
00001fb7: POP
00001fb8: POP
00001fb9: PUSH1 0x00
00001fbb: SWAP2
00001fbc: ADD
00001fbd: MSTORE
00001fbe: JUMP
00001fbf: JUMPDEST
00001fc0: PUSH1 0x00
00001fc2: DUP2
00001fc3: MLOAD
00001fc4: DUP1
00001fc5: DUP5
00001fc6: MSTORE
00001fc7: PUSH2 0x1fd7
00001fca: DUP2
00001fcb: PUSH1 0x20
00001fcd: DUP7
00001fce: ADD
00001fcf: PUSH1 0x20
00001fd1: DUP7
00001fd2: ADD
00001fd3: PUSH2 0x1f93
00001fd6: JUMP
00001fd7: JUMPDEST
00001fd8: PUSH1 0x1f
00001fda: ADD
00001fdb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001ffc: AND
00001ffd: SWAP3
00001ffe: SWAP1
00001fff: SWAP3
00002000: ADD
00002001: PUSH1 0x20
00002003: ADD
00002004: SWAP3
00002005: SWAP2
00002006: POP
00002007: POP
00002008: JUMP
00002009: JUMPDEST
0000200a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000201f: DUP6
00002020: AND
00002021: DUP2
00002022: MSTORE
00002023: PUSH1 0x60
00002025: PUSH1 0x20
00002027: DUP3
00002028: ADD
00002029: MSTORE
0000202a: PUSH1 0x00
0000202c: PUSH2 0x2039
0000202f: PUSH1 0x60
00002031: DUP4
00002032: ADD
00002033: DUP6
00002034: DUP8
00002035: PUSH2 0x1f4a
00002038: JUMP
00002039: JUMPDEST
0000203a: DUP3
0000203b: DUP2
0000203c: SUB
0000203d: PUSH1 0x40
0000203f: DUP5
00002040: ADD
00002041: MSTORE
00002042: PUSH2 0x204b
00002045: DUP2
00002046: DUP6
00002047: PUSH2 0x1fbf
0000204a: JUMP
0000204b: JUMPDEST
0000204c: SWAP8
0000204d: SWAP7
0000204e: POP
0000204f: POP
00002050: POP
00002051: POP
00002052: POP
00002053: POP
00002054: POP
00002055: JUMP
00002056: JUMPDEST
00002057: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000206c: DUP5
0000206d: AND
0000206e: DUP2
0000206f: MSTORE
00002070: PUSH1 0x40
00002072: PUSH1 0x20
00002074: DUP3
00002075: ADD
00002076: MSTORE
00002077: PUSH1 0x00
00002079: PUSH2 0x2086
0000207c: PUSH1 0x40
0000207e: DUP4
0000207f: ADD
00002080: DUP5
00002081: DUP7
00002082: PUSH2 0x1f4a
00002085: JUMP
00002086: JUMPDEST
00002087: SWAP6
00002088: SWAP5
00002089: POP
0000208a: POP
0000208b: POP
0000208c: POP
0000208d: POP
0000208e: JUMP
0000208f: JUMPDEST
00002090: PUSH1 0x00
00002092: DUP3
00002093: DUP3
00002094: LT
00002095: ISZERO
00002096: PUSH2 0x20a1
00002099: JUMPI
0000209a: PUSH2 0x20a1
0000209d: PUSH2 0x1eba
000020a0: JUMP
000020a1: JUMPDEST
000020a2: POP
000020a3: SUB
000020a4: SWAP1
000020a5: JUMP
000020a6: JUMPDEST
000020a7: PUSH1 0x00
000020a9: PUSH1 0x20
000020ab: DUP3
000020ac: DUP5
000020ad: SUB
000020ae: SLT
000020af: ISZERO
000020b0: PUSH2 0x20b8
000020b3: JUMPI
000020b4: PUSH1 0x00
000020b6: DUP1
000020b7: REVERT
000020b8: JUMPDEST
000020b9: DUP2
000020ba: MLOAD
000020bb: DUP1
000020bc: ISZERO
000020bd: ISZERO
000020be: DUP2
000020bf: EQ
000020c0: PUSH2 0x1b74
000020c3: JUMPI
000020c4: PUSH1 0x00
000020c6: DUP1
000020c7: REVERT
000020c8: JUMPDEST
000020c9: PUSH1 0x00
000020cb: DUP3
000020cc: MLOAD
000020cd: PUSH2 0x20da
000020d0: DUP2
000020d1: DUP5
000020d2: PUSH1 0x20
000020d4: DUP8
000020d5: ADD
000020d6: PUSH2 0x1f93
000020d9: JUMP
000020da: JUMPDEST
000020db: SWAP2
000020dc: SWAP1
000020dd: SWAP2
000020de: ADD
000020df: SWAP3
000020e0: SWAP2
000020e1: POP
000020e2: POP
000020e3: JUMP
000020e4: JUMPDEST
000020e5: PUSH1 0x20
000020e7: DUP2
000020e8: MSTORE
000020e9: PUSH1 0x00
000020eb: PUSH2 0x1b74
000020ee: PUSH1 0x20
000020f0: DUP4
000020f1: ADD
000020f2: DUP5
000020f3: PUSH2 0x1fbf
000020f6: JUMP
000020f7: INVALID
000020f8: LOG2
000020f9: PUSH5 0x6970667358
000020ff: UNKNOWN(0x22)
00002100: SLT
00002101: KECCAK256
00002102: SWAP16
00002103: DUP12
00002104: UNKNOWN(0x2C)
00002105: UNKNOWN(0xAE)
00002106: UNKNOWN(0xA9)
00002107: UNKNOWN(0xD3)
00002108: CHAINID
00002109: MSTORE
0000210a: UNKNOWN(0x2E)
0000210b: PUSH8 0x275e838677b7b7b2
00002114: DUP9
00002115: CHAINID
00002116: LOG0
00002117: UNKNOWN(0xB9)
00002118: UNKNOWN(0xAA)
00002119: DUP3
0000211a: SHL
0000211b: UNKNOWN(0xA9)
0000211c: SDIV
0000211d: LOG4
0000211e: LOG1
0000211f: UNKNOWN(0xAC)
00002120: ADDMOD
00002121: UNKNOWN(0x1F)
00002122: PUSH5 0x736f6c6343
00002128: STOP
00002129: ADDMOD
0000212a: UNKNOWN(0x0F)
0000212b: STOP
0000212c: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xe3dddf0dffea6e88d873b222922f0ec23e6238b1f0e1788a6f1540954760649d
call_targets: 0x2b343e042afc3c758d738b314fc5f4274d694983
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe3dddf0dffea6e88d873b222922f0ec23e6238b1f0e1788a6f1540954760649d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x2b343e042afc3c758d738b314fc5f4274d694983"
    ],
    "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": "0xefcab173",
            "selector": "0xefcab173",
            "calldata_variants": [
                "0xefcab173",
                "0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa558b71",
            "selector": "0xfa558b71",
            "calldata_variants": [
                "0xfa558b71",
                "0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd404b4c",
            "selector": "0xfd404b4c",
            "calldata_variants": [
                "0xfd404b4c",
                "0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcf6e4488",
            "selector": "0xcf6e4488",
            "calldata_variants": [
                "0xcf6e4488",
                "0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdfd1fb7a",
            "selector": "0xdfd1fb7a",
            "calldata_variants": [
                "0xdfd1fb7a",
                "0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96aa7368",
            "selector": "0x96aa7368",
            "calldata_variants": [
                "0x96aa7368",
                "0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98a89897",
            "selector": "0x98a89897",
            "calldata_variants": [
                "0x98a89897",
                "0x98a898970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb81fecf",
            "selector": "0xcb81fecf",
            "calldata_variants": [
                "0xcb81fecf",
                "0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2447,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4083,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4480,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xe3dddf0dffea6e88d873b222922f0ec23e6238b1f0e1788a6f1540954760649d
call_targets: 0x2b343e042afc3c758d738b314fc5f4274d694983
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe3dddf0dffea6e88d873b222922f0ec23e6238b1f0e1788a6f1540954760649d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x2b343e042afc3c758d738b314fc5f4274d694983"
    ],
    "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": "0xefcab173",
            "selector": "0xefcab173",
            "calldata_variants": [
                "0xefcab173",
                "0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa558b71",
            "selector": "0xfa558b71",
            "calldata_variants": [
                "0xfa558b71",
                "0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd404b4c",
            "selector": "0xfd404b4c",
            "calldata_variants": [
                "0xfd404b4c",
                "0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcf6e4488",
            "selector": "0xcf6e4488",
            "calldata_variants": [
                "0xcf6e4488",
                "0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdfd1fb7a",
            "selector": "0xdfd1fb7a",
            "calldata_variants": [
                "0xdfd1fb7a",
                "0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96aa7368",
            "selector": "0x96aa7368",
            "calldata_variants": [
                "0x96aa7368",
                "0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98a89897",
            "selector": "0x98a89897",
            "calldata_variants": [
                "0x98a89897",
                "0x98a898970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb81fecf",
            "selector": "0xcb81fecf",
            "calldata_variants": [
                "0xcb81fecf",
                "0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2447,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4083,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4480,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}