0972cf74-f05f-424e-8b19-74306a029857
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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": []
}
|