c90ff39b-8887-4f79-8585-66d3b97d7a57
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 |
|---|---|---|---|---|
| 31325 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110948 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110949 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110950 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110951 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110952 | detector.run | complete | 1 / 3 | 1 week ago |
| 110953 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:82676] OpenAI Codex v0.77.0 (research preview)
[codex:82676] --------
[codex:82676] workdir: /tmp/codex-multi-ssoyeq0s
[codex:82676] model: gpt-5.2-codex
[codex:82676] provider: openai
[codex:82676] approval: never
[codex:82676] sandbox: read-only
[codex:82676] reasoning effort: xhigh
[codex:82676] reasoning summaries: auto
[codex:82676] session id: 019b8028-eb88-7801-94bb-e92c2576b8a9
[codex:82676] --------
[codex:82676] user
[codex:82676] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:82676]
[codex:82676] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:82676]
[codex:82676] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:82676] - Gas inefficiency, code quality, or best practices
[codex:82676] - Theoretical vulnerabilities without a clear extraction path
[codex:82676] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:82676] - Issues requiring social engineering or off-chain coordination
[codex:82676]
[codex:82676] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:82676] - CALL/DELEGATECALL with controllable destination or calldata
[codex:82676] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:82676] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:82676] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:82676] - External calls before state updates (reentrancy)
[codex:82676] - SELFDESTRUCT with controllable beneficiary
[codex:82676] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:82676]
[codex:82676] For each finding, you MUST explain:
[codex:82676] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:82676] 2. The concrete sequence of transactions to extract value
[codex:82676] 3. Why you believe this is exploitable (not just suspicious)
[codex:82676]
[codex:82676] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:82676] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:82676]
[codex:82676] Output MUST be valid JSON matching the provided schema.
[codex:82676] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:82676] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:82676] mcp startup: no servers
[codex:82676]
[codex:82676] thinking
[codex:82676] **Planning to read BYTECODE_BUNDLE.txt**
[codex:82676] exec
[codex:82676] /bin/bash -lc ls in /tmp/codex-multi-ssoyeq0s succeeded in 6ms:
[codex:82676] BYTECODE_BUNDLE.txt
[codex:82676] codex-output-schema.json
[codex:82676] exec
[codex:82676] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-ssoyeq0s succeeded in 5ms:
[codex:82676] Runtime bytecode bundle for best-effort auditing.
[codex:82676] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:82676]
[codex:82676] FILE: runtime_bytecode.hex
[codex:82676] 0x606060405236156101855763ffffffff60e060020a600035041663029a8bf7811461019857806306fdde03146101c4578063095ea7b31461025457806318160ddd146102875780631a9237de146102a957806323385089146102d057806323b872dd146102f757806323de665114610330578063313ce56714610357578063406838b31461037d578063490c0e8f146103a95780636461fe391461041557806370a0823114610494578063733480b7146104c257806377fe38a4146104e45780638bbbbfd31461054a57806395d89b4114610573578063a1e8ac0b14610603578063a340fff414610633578063a48a663c14610657578063a525f42c146106d0578063a66e6e5c14610706578063a9059cbb14610728578063aa46f96114610753578063ac35caee1461077f578063be9b42d2146107ee578063dd62ed3e1461081e578063f2ee596814610852578063f340fa0114610882578063f359671c146108aa578063f3fef3a314610921578063f77b8d7a14610954578063fcbdbaaa14610984575b6101965b61019233610a72565b505b565b005b34156101a057fe5b6101a8610aa9565b60408051600160a060020a039092168252519081900360200190f35b34156101cc57fe5b6101d4610ab9565b60408051602080825283518183015283519192839290830191850190808383821561021a575b80518252602083111561021a57601f1990920191602091820191016101fa565b505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025c57fe5b610273600160a060020a0360043516602435610b44565b604080519115158252519081900360200190f35b341561028f57fe5b610297610c34565b60408051918252519081900360200190f35b34156102b157fe5b610273600435610ca6565b604080519115158252519081900360200190f35b34156102d857fe5b610196600160a060020a0360043581169060243516604435610d8a565b005b34156102ff57fe5b610273600160a060020a0360043581169060243516604435610df4565b604080519115158252519081900360200190f35b341561033857fe5b610196600160a060020a0360043581169060243516604435610e1c565b005b341561035f57fe5b610367610e86565b6040805160ff9092168252519081900360200190f35b341561038557fe5b6101a8610ef8565b60408051600160a060020a039092168252519081900360200190f35b60408051602060046024803582810135601f8101859004850286018501909652858552610273958335600160a060020a03169593946044949392909201918190840183828082843750949650610f0795505050505050565b604080519115158252519081900360200190f35b341561041d57fe5b604080516020600460643581810135601f8101849004840285018401909552848452610273948235600160a060020a0390811695602480359092169560443595946084949293019190819084018382808284375094965061114c95505050505050565b604080519115158252519081900360200190f35b341561049c57fe5b610297600160a060020a0360043516611303565b60408051918252519081900360200190f35b61027360043560243561137e565b604080519115158252519081900360200190f35b604080516020600460443581810135601f81018490048402850184019095528484526102739482359460248035956064949293919092019181908401838280828437509496506113a495505050505050565b604080519115158252519081900360200190f35b341561055257fe5b61027360043515156113c5565b604080519115158252519081900360200190f35b341561057b57fe5b6101d4611451565b60408051602080825283518183015283519192839290830191850190808383821561021a575b80518252602083111561021a57601f1990920191602091820191016101fa565b505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060b57fe5b610273600160a060020a03600435166114df565b604080519115158252519081900360200190f35b341561063b57fe5b6102736114f4565b604080519115158252519081900360200190f35b341561065f57fe5b604080516020600460643581810135601f8101849004840285018401909552848452610273948235600160a060020a0316946024803595604435959460849492019190819084018382808284375094965061157e95505050505050565b604080519115158252519081900360200190f35b34156106d857fe5b610273600160a060020a0360043516602435604435611726565b604080519115158252519081900360200190f35b341561070e57fe5b61029761174e565b60408051918252519081900360200190f35b610273600160a060020a0360043516602435611754565b604080519115158252519081900360200190f35b341561075b57fe5b6101a861177a565b60408051600160a060020a039092168252519081900360200190f35b604080516020600460443581810135601f8101849004840285018401909552848452610273948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061178995505050505050565b604080519115158252519081900360200190f35b34156107f657fe5b610273600160a060020a03600435166117aa565b604080519115158252519081900360200190f35b341561082657fe5b610297600160a060020a03600435811690602435166117f2565b60408051918252519081900360200190f35b341561085a57fe5b610273600160a060020a0360043516611876565b604080519115158252519081900360200190f35b610273600160a060020a0360043516610a72565b604080519115158252519081900360200190f35b34156108b257fe5b604080516020600460443581810135601f8101849004840285018401909552848452610273948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061188b95505050505050565b604080519115158252519081900360200190f35b341561092957fe5b610273600160a060020a03600435166024356118ff565b604080519115158252519081900360200190f35b341561095c57fe5b610273600160a060020a0360043516611925565b604080519115158252519081900360200190f35b341561098c57fe5b60408051602060046024803582810135601f8101859004850286018501909652858552610273958335600160a060020a0316959394604494939290920191819084018382808284375050604080516020601f89358b0180359182018390048302840183019094528083529799988101979196509182019450925082915084018382808284375050604080516020601f89358b0180359182018390048302840183019094528083529799988101979196509182019450925082915084018382808284375094965061196595505050505050565b604080519115158252519081900360200190f35b6000610aa1826040604051908101604052806007815260200160ca60020a6611195c1bdcda5d02815250610f07565b90505b919050565b600054600160a060020a03165b90565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610b3c5780601f10610b1157610100808354040283529160200191610b3c565b820191906000526020600020905b815481529060010190602001808311610b1f57829003601f168201915b505050505081565b600160a060020a03331660009081526005602052604081205460ff161515610ba25733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b60008054600154604080516020908101859052815160e060020a6314712e2f028152600160a060020a0389811660048301526024820189905260448201949094523384166064820152915192909316936314712e2f9360848084019491939192918390030190829087803b1515610c1557fe5b6102c65a03f11515610c2357fe5b5050604051519150505b5b92915050565b60008054600154604080516020908101859052815160e060020a63b524abcf02815260048101939093529051600160a060020a039093169263b524abcf92602480820193929182900301818787803b1515610c8b57fe5b6102c65a03f11515610c9957fe5b5050604051519150505b90565b60008054604080516020908101849052815160e060020a63a0f15b870281529151610aa193600160a060020a03169263a0f15b8792600480830193919282900301818887803b1515610cf457fe5b6102c65a03f11515610d0257fe5b505060405151600160a060020a031690506395829738610d2185611c5f565b6000604051602001526040518263ffffffff1660e060020a028152600401808260001916600019168152602001915050602060405180830381600087803b1515610d6757fe5b6102c65a03f11515610d7557fe5b50506040515190506117aa565b90505b919050565b60005433600160a060020a0390811691161415610ded5781600160a060020a031683600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5b5b505050565b6000610e12848484602060405190810160405280600081525061114c565b90505b9392505050565b60005433600160a060020a0390811691161415610ded5781600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5b5b505050565b60008054600154604080516020908101859052815160e460020a630dc86e6f02815260048101939093529051600160a060020a039093169263dc86e6f092602480820193929182900301818787803b1515610c8b57fe5b6102c65a03f11515610c9957fe5b5050604051519150505b90565b600054600160a060020a031681565b600160a060020a03331660009081526005602052604081205460ff161515610f655733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b341515610f7457506000610c2d565b30600160a060020a031683600160a060020a03161415610f9d57610f96611d04565b9050610c2d565b34610fa730611303565b101561102f57600054600154600160a060020a039091169063e0873c0690610fce30611303565b34036000604051602001526040518363ffffffff1660e060020a02815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b151561101d57fe5b6102c65a03f1151561102b57fe5b5050505b60008054600154604080516020908101949094525160e160020a630b0ffb3102815230600160a060020a03818116600484018181528a8316602486015234604486018190526064860187905260a486019290925260c0608486019081528a5160c48701528a51939097169763161ff6629794968c96939590948c9489949360e4909101919086019080838382156110e1575b8051825260208311156110e157601f1990920191602091820191016110c1565b505050905090810190601f16801561110d5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515610c1557fe5b6102c65a03f11515610c2357fe5b5050604051519150505b5b92915050565b600160a060020a03331660009081526005602052604081205460ff1615156111aa5733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b6111b3846117aa565b156112d35760008054600154604080516020908101949094525160e160020a630b0ffb31028152600160a060020a0389811660048301908152898216602484015260448301899052606483018490523380831660a485015260c060848501908152895160c48601528951939096169663161ff662968d968d968d9691958d959490939260e49092019190860190808383821561126a575b80518252602083111561126a57601f19909201916020918201910161124a565b505050905090810190601f1680156112965780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b15156112b657fe5b6102c65a03f115156112c457fe5b50506040515191506112fa9050565b6112de858484611d1e565b15156112ec575060006112fa565b6112f68484611e3b565b5060015b5b949350505050565b60008054600154604080516020908101859052815160e160020a6326985b5f028152600160a060020a038781166004830152602482019490945291519290931692634d30b6be9260448084019382900301818787803b151561136157fe5b6102c65a03f1151561136f57fe5b5050604051519150505b919050565b600061139b838360206040519081016040528060008152506113a4565b90505b92915050565b60006113af33610a72565b50610e12848484611e70565b90505b9392505050565b600160a060020a03331660009081526005602052604081205460ff1615156114235733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b5033600160a060020a03166000908152600460205260409020805460ff191682151517905560015b5b919050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b3c5780601f10610b1157610100808354040283529160200191610b3c565b820191906000526020600020905b815481529060010190602001808311610b1f57829003601f168201915b505050505081565b60056020526000908152604090205460ff1681565b60008054600154600160a060020a039091169063ca448a889061151630611303565b6000604051602001526040518363ffffffff1660e060020a02815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b1515610c8b57fe5b6102c65a03f11515610c9957fe5b5050604051519150505b90565b600160a060020a03331660009081526005602052604081205460ff1615156115dc5733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b6115e584610ca6565b156116f55760008054604080516020908101939093525160e160020a6353481977028152600160a060020a0388811660048301908152602483018990526044830188905233808316608485015260a060648501908152885160a48601528851939095169563a69032ee958c958c958c958c959490939260c4019190860190808383821561168d575b80518252602083111561168d57601f19909201916020918201910161166d565b505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15156112b657fe5b6102c65a03f115156112c457fe5b50506040515191506112fa9050565b611700858484611d1e565b151561170e575060006112fa565b6112f6848484611fb7565b5060015b5b949350505050565b6000610e12848484602060405190810160405280600081525061157e565b90505b9392505050565b60015481565b600061139b83836020604051908101604052806000815250611789565b90505b92915050565b600654600160a060020a031681565b600061179433610a72565b50610e128484846120a8565b90505b9392505050565b600160a060020a03811660009081526005602052604081205460ff168015610aa15750600160a060020a03821660009081526004602052604090205460ff165b90505b919050565b60008054600154604080516020908101859052815160e360020a630391aba7028152600160a060020a0388811660048301528781166024830152604482019490945291519290931692631c8d5d389260648084019382900301818787803b1515610c1557fe5b6102c65a03f11515610c2357fe5b5050604051519150505b92915050565b60046020526000908152604090205460ff1681565b600160a060020a03331660009081526005602052604081205460ff1615156118e95733600160a060020a031660009081526005602090815260408083208054600160ff19918216811790925560049093529220805490911690911790555b610e128484846120a8565b90505b5b9392505050565b600061139b8383602060405190810160405280600081525061188b565b90505b92915050565b600654600090600160a060020a03161561194157506000610aa4565b5060068054600160a060020a031916600160a060020a03831617905560015b919050565b60008054600160a060020a03161561197f575060006112fa565b84600160a060020a031663085a47056119978661221b565b6040805160006020918201819052915160e060020a63ffffffff86160281526004810184815260248201849052601260848301819052600160a4840181905260c0604485019081528c5160c48601528c518d968d9694959394606481019260e4909101918901908083838215611a28575b805182526020831115611a2857601f199092019160209182019101611a08565b505050905090810190601f168015611a545780820380516001836020036101000a031916815260200191505b5083810382528651815286516020918201918801908083838215611a93575b805182526020831115611a9357601f199092019160209182019101611a73565b505050905090810190601f168015611abf5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1515611ae057fe5b6102c65a03f11515611aee57fe5b50506040515115159050611b04575060006112fa565b60008054600160a060020a031916600160a060020a038716179055611b288461221b565b6001558251611b3e906002906020860190612282565b508351611b52906003906020870190612282565b5060008054600154604080516020908101859052815160e060020a63638a9ce9028152600160a060020a03308116600483015260248201949094529151929093169363638a9ce99360448084019491939192918390030190829087803b1515611bb757fe5b6102c65a03f11515611bc557fe5b50506040515190508015611c44575060008054600154604080516020908101859052815160e160020a63680b4e0f02815260048101939093529051600160a060020a039093169363d0169c1e936024808501949192918390030190829087803b1515611c2d57fe5b6102c65a03f11515611c3b57fe5b50506040515190505b15611c51575060016112fa565b60006000fd5b949350505050565b60008160045b1a60f860020a028260055b1a60f860020a028360065b1a60f860020a028460075b1a60f860020a028560085b1a60f860020a028660095b1a60f860020a0287600a5b60408051600160f860020a0319998a16815297891660018901529588166002880152938716600387015291861660048601528516600585015260f860020a911a02929092166006820152905190819003600701902090505b919050565b60003415611d1657611d163334612226565b5b5060005b90565b60008054600154604080516020908101859052905160e160020a630b0ffb31028152600160a060020a0388811660048301908152308083166024850152604484018a9052606484018690523380841660a486015260c0608486019081528a5160c48701528a51949098169763161ff662978d9793968d9691958d9590939260e490920191908601908083838215611dd0575b805182526020831115611dd057601f199092019160209182019101611db0565b505050905090810190601f168015611dfc5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611e1c57fe5b6102c65a03f11515611e2a57fe5b5050604051519150505b9392505050565b600082600160a060020a031630600160a060020a031614611e5c5782611e5e565b335b9050610ded8183612226565b5b505050565b60006000611e7d85610ca6565b15611f8d5760008054604080516020908101939093525160e160020a635348197702815233600160a060020a0381811660048401818152602485018c9052604485018b9052608485019190915260a060648501908152895160a48601528951929095169563a69032ee9593948c948c948c948894909360c40191908601908083838215611f25575b805182526020831115611f2557601f199092019160209182019101611f05565b505050905090810190601f168015611f515780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611f7057fe5b6102c65a03f11515611f7e57fe5b5050604051519250611faf9050565b611f978484612241565b90508015611faa57611faa858585611fb7565b5b8091505b509392505050565b600654604080516000602091820152815160e560020a626c41550281526004810187815260248201938452855160448301528551600160a060020a0390951694630d882aa09488948a948994936064909101918501908083838215612037575b80518252602083111561203757601f199092019160209182019101612017565b505050905090810190601f1680156120635780820380516001836020036101000a031916815260200191505b5093505050506020604051808303818588803b151561207e57fe5b6125ee5a03f1151561208c57fe5b50506040515115159150610ded90505760006000fd5b5b505050565b600060006120b5856117aa565b80156120d3575084600160a060020a031633600160a060020a031614155b156121f25760008054600154604080516020908101949094525160e160020a630b0ffb3102815233600160a060020a03818116600484018181528c83166024860152604485018c90526064850186905260a485019190915260c0608485019081528a5160c48601528a51929096169663161ff6629693958d958d9591948d94899490939260e40191908601908083838215612189575b80518252602083111561218957601f199092019160209182019101612169565b505050905090810190601f1680156121b55780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1515611f7057fe5b6102c65a03f11515611f7e57fe5b5050604051519250611faf9050565b6121fc8484612241565b90508015611faa57611faa8585611e3b565b5b8091505b509392505050565b60208101515b919050565b6122308282612257565b151561223c5760006000fd5b5b5050565b600061139b338484611d1e565b90505b92915050565b604051600090600160a060020a0384169083908381818185876187965a03f193505050505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122c357805160ff19168380011785556122f0565b828001600101855582156122f0579182015b828111156122f05782518255916020019190600101906122d5565b5b506122fd929150612301565b5090565b610ab691905b808211156122fd5760008155600101612307565b5090565b905600a165627a7a723058200ba15f49fdebda2e84f616d6d974fb33d15dcb8dd0992c834300f565f9d5c2e40029
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing bytecode for exploit indicators**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] import binascii
[codex:82676] import re
[codex:82676] from pathlib import Path
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] # extract hex after 0x on line 'FILE: runtime_bytecode.hex'
[codex:82676] import re
[codex:82676] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:82676] if not m:
[codex:82676] print('no hex'); raise SystemExit
[codex:82676] h=m.group(1)
[codex:82676] code=bytes.fromhex(h)
[codex:82676] print('len', len(code))
[codex:82676] # find positions of delegatecall (0xf4), call (0xf1), callcode (0xf2), staticcall (0xfa), selfdestruct (0xff)
[codex:82676] ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:82676] for op, name in ops.items():
[codex:82676] positions=[i for i,b in enumerate(code) if b==op]
[codex:82676] print(name, len(positions))
[codex:82676] if positions:
[codex:82676] print(' first', positions[:5])
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 29ms:
[codex:82676] len 9038
[codex:82676] CALL 23
[codex:82676] first [3099, 3217, 3264, 3288, 3322]
[codex:82676] CALLCODE 4
[codex:82676] first [325, 2110, 3658, 8407]
[codex:82676] DELEGATECALL 5
[codex:82676] first [229, 250, 794, 1601, 3313]
[codex:82676] STATICCALL 10
[codex:82676] first [338, 536, 1479, 4815, 4842]
[codex:82676] SELFDESTRUCT 42
[codex:82676] first [12, 13, 14, 15, 228]
[codex:82676]
[codex:82676] thinking
[codex:82676] **Planning EVM bytecode disassembly**
[codex:82676]
[codex:82676] I’m going to write a simple Python disassembler to parse the EVM bytecode, carefully distinguishing real instructions from data pushed onto the stack. This way, I can identify if and where delegatecall and selfdestruct opcodes actually appear in the code path and gather context around them to better understand any exploit possibilities.
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:82676] code=bytes.fromhex(m.group(1))
[codex:82676] # opcode names
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] # disassemble
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # Build lookup by offset
[codex:82676] offset_to_index={off:idx for idx,(off,_,_) in enumerate(insts)}
[codex:82676]
[codex:82676] # function to show context around offset
[codex:82676]
[codex:82676] def show_context(offset, radius=8):
[codex:82676] if offset not in offset_to_index:
[codex:82676] return []
[codex:82676] idx=offset_to_index[offset]
[codex:82676] start=max(0, idx-radius)
[codex:82676] end=min(len(insts), idx+radius+1)
[codex:82676] return insts[start:end]
[codex:82676]
[codex:82676] # find actual op positions for DELEGATECALL/SELFDESTRUCT/CALL etc
[codex:82676] ops_of_interest={'DELEGATECALL','SELFDESTRUCT','CALL','CALLCODE'}
[codex:82676] for op in ops_of_interest:
[codex:82676] positions=[off for off,name,arg in insts if name==op]
[codex:82676] print(op, len(positions))
[codex:82676] for off in positions[:5]:
[codex:82676] print(' offset', off)
[codex:82676] for o,name,arg in show_context(off,5):
[codex:82676] if arg is None:
[codex:82676] print(f\" {o:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\" {o:04x}: {name} 0x{arg.hex()}\")
[codex:82676] print('---')
[codex:82676] if len(positions)>5:
[codex:82676] print(' ...')
[codex:82676]
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 35ms:
[codex:82676] SELFDESTRUCT 0
[codex:82676] CALL 20
[codex:82676] offset 3099
[codex:82676] 0c14: INVALID
[codex:82676] 0c15: JUMPDEST
[codex:82676] 0c16: PUSH2 0x02c6
[codex:82676] 0c19: GAS
[codex:82676] 0c1a: SUB
[codex:82676] 0c1b: CALL
[codex:82676] 0c1c: ISZERO
[codex:82676] 0c1d: ISZERO
[codex:82676] 0c1e: PUSH2 0x0c23
[codex:82676] 0c21: JUMPI
[codex:82676] 0c22: INVALID
[codex:82676] ---
[codex:82676] offset 3217
[codex:82676] 0c8a: INVALID
[codex:82676] 0c8b: JUMPDEST
[codex:82676] 0c8c: PUSH2 0x02c6
[codex:82676] 0c8f: GAS
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing contract calls and storage usage**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble with push handling
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # find SSTORE
[codex:82676] positions=[(off,name,arg) for off,name,arg in insts if name=='SSTORE']
[codex:82676] print('SSTORE count', len(positions))
[codex:82676] # show contexts
[codex:82676] index_by_off={off:idx for idx,(off,_,_) in enumerate(insts)}
[codex:82676]
[codex:82676] def show(off, radius=6):
[codex:82676] idx=index_by_off[off]
[codex:82676] start=max(0, idx-radius)
[codex:82676] end=min(len(insts), idx+radius+1)
[codex:82676] for o,name,arg in insts[start:end]:
[codex:82676] if arg is None:
[codex:82676] print(f\" {o:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\" {o:04x}: {name} 0x{arg.hex()}\")
[codex:82676]
[codex:82676] for off,_,_ in positions:
[codex:82676] print('--- SSTORE at', hex(off))
[codex:82676] show(off, radius=8)
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 38ms:
[codex:82676] SSTORE count 20
[codex:82676] --- SSTORE at 0xb90
[codex:82676] 0b88: NOT
[codex:82676] 0b89: SWAP2
[codex:82676] 0b8a: DUP3
[codex:82676] 0b8b: AND
[codex:82676] 0b8c: DUP2
[codex:82676] 0b8d: OR
[codex:82676] 0b8e: SWAP1
[codex:82676] 0b8f: SWAP3
[codex:82676] 0b90: SSTORE
[codex:82676] 0b91: PUSH1 0x04
[codex:82676] 0b93: SWAP1
[codex:82676] 0b94: SWAP4
[codex:82676] 0b95: MSTORE
[codex:82676] 0b96: SWAP3
[codex:82676] 0b97: SHA3
[codex:82676] 0b98: DUP1
[codex:82676] 0b99: SLOAD
[codex:82676] --- SSTORE at 0xba1
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing SSTORE slot usage patterns**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # show context around 0x1b00-0x1c20
[codex:82676] for off,name,arg in insts:
[codex:82676] if 0x1ae0 <= off <= 0x1c60:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 34ms:
[codex:82676] 1ae0: JUMPDEST
[codex:82676] 1ae1: PUSH2 0x02c6
[codex:82676] 1ae4: GAS
[codex:82676] 1ae5: SUB
[codex:82676] 1ae6: CALL
[codex:82676] 1ae7: ISZERO
[codex:82676] 1ae8: ISZERO
[codex:82676] 1ae9: PUSH2 0x1aee
[codex:82676] 1aec: JUMPI
[codex:82676] 1aed: INVALID
[codex:82676] 1aee: JUMPDEST
[codex:82676] 1aef: POP
[codex:82676] 1af0: POP
[codex:82676] 1af1: PUSH1 0x40
[codex:82676] 1af3: MLOAD
[codex:82676] 1af4: MLOAD
[codex:82676] 1af5: ISZERO
[codex:82676] 1af6: ISZERO
[codex:82676] 1af7: SWAP1
[codex:82676] 1af8: POP
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing dispatcher and ownership update**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # parse dispatcher: look for pattern PUSH4 sel, EQ, PUSH2 dest, JUMPI in early code (<0x300?)
[codex:82676] selectors=[]
[codex:82676] for idx,(off,name,arg) in enumerate(insts):
[codex:82676] if name=='PUSH4' and off < 0x300:
[codex:82676] # look ahead for EQ, PUSH2, JUMPI
[codex:82676] if idx+3 < len(insts):
[codex:82676] if insts[idx+1][1]=='EQ' and insts[idx+2][1]=='PUSH2' and insts[idx+3][1]=='JUMPI':
[codex:82676] sel=int.from_bytes(arg,'big')
[codex:82676] dest=int.from_bytes(insts[idx+2][2],'big')
[codex:82676] selectors.append((sel,dest,off))
[codex:82676]
[codex:82676] print('selectors', len(selectors))
[codex:82676] for sel,dest,off in selectors:
[codex:82676] print(f\"0x{sel:08x} -> 0x{dest:04x}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 37ms:
[codex:82676] selectors 32
[codex:82676] 0x06fdde03 -> 0x01c4
[codex:82676] 0x095ea7b3 -> 0x0254
[codex:82676] 0x18160ddd -> 0x0287
[codex:82676] 0x1a9237de -> 0x02a9
[codex:82676] 0x23385089 -> 0x02d0
[codex:82676] 0x23b872dd -> 0x02f7
[codex:82676] 0x23de6651 -> 0x0330
[codex:82676] 0x313ce567 -> 0x0357
[codex:82676] 0x406838b3 -> 0x037d
[codex:82676] 0x490c0e8f -> 0x03a9
[codex:82676] 0x6461fe39 -> 0x0415
[codex:82676] 0x70a08231 -> 0x0494
[codex:82676] 0x733480b7 -> 0x04c2
[codex:82676] 0x77fe38a4 -> 0x04e4
[codex:82676] 0x8bbbbfd3 -> 0x054a
[codex:82676] 0x95d89b41 -> 0x0573
[codex:82676] 0xa1e8ac0b -> 0x0603
[codex:82676] 0xa340fff4 -> 0x0633
[codex:82676] 0xa48a663c -> 0x0657
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing missing selector parsing**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # parse all push4/eq/push2/jumpi
[codex:82676] selectors=[]
[codex:82676] for idx,(off,name,arg) in enumerate(insts):
[codex:82676] if name=='PUSH4':
[codex:82676] if idx+3 < len(insts):
[codex:82676] if insts[idx+1][1]=='EQ' and insts[idx+2][1]=='PUSH2' and insts[idx+3][1]=='JUMPI':
[codex:82676] sel=int.from_bytes(arg,'big')
[codex:82676] dest=int.from_bytes(insts[idx+2][2],'big')
[codex:82676] selectors.append((sel,dest,off))
[codex:82676]
[codex:82676] print('selectors', len(selectors))
[codex:82676] for sel,dest,off in selectors:
[codex:82676] if sel==0x029a8bf7:
[codex:82676] print('found', hex(off), hex(dest))
[codex:82676]
[codex:82676] # show first few selectors
[codex:82676] for sel,dest,off in selectors[:5]:
[codex:82676] print(f\"0x{sel:08x} -> 0x{dest:04x} @ {off:04x}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 40ms:
[codex:82676] selectors 32
[codex:82676] 0x06fdde03 -> 0x01c4 @ 0026
[codex:82676] 0x095ea7b3 -> 0x0254 @ 0031
[codex:82676] 0x18160ddd -> 0x0287 @ 003c
[codex:82676] 0x1a9237de -> 0x02a9 @ 0047
[codex:82676] 0x23385089 -> 0x02d0 @ 0052
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing selector parsing mismatch**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble first 120 bytes
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] i=0
[codex:82676] count=0
[codex:82676] while i < len(code) and i<0x80:
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] if arg is None:
[codex:82676] print(f\"{start:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{start:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 32ms:
[codex:82676] 0000: PUSH1 0x60
[codex:82676] 0002: PUSH1 0x40
[codex:82676] 0004: MSTORE
[codex:82676] 0005: CALLDATASIZE
[codex:82676] 0006: ISZERO
[codex:82676] 0007: PUSH2 0x0185
[codex:82676] 000a: JUMPI
[codex:82676] 000b: PUSH4 0xffffffff
[codex:82676] 0010: PUSH1 0xe0
[codex:82676] 0012: PUSH1 0x02
[codex:82676] 0014: EXP
[codex:82676] 0015: PUSH1 0x00
[codex:82676] 0017: CALLDATALOAD
[codex:82676] 0018: DIV
[codex:82676] 0019: AND
[codex:82676] 001a: PUSH4 0x029a8bf7
[codex:82676] 001f: DUP2
[codex:82676] 0020: EQ
[codex:82676] 0021: PUSH2 0x0198
[codex:82676] 0024: JUMPI
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing dispatcher opcode pattern**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] # disassemble and show around 0x0c20-0x0c80
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] for off,name,arg in insts:
[codex:82676] if 0x0c20 <= off <= 0x0c80:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 34ms:
[codex:82676] 0c21: JUMPI
[codex:82676] 0c22: INVALID
[codex:82676] 0c23: JUMPDEST
[codex:82676] 0c24: POP
[codex:82676] 0c25: POP
[codex:82676] 0c26: PUSH1 0x40
[codex:82676] 0c28: MLOAD
[codex:82676] 0c29: MLOAD
[codex:82676] 0c2a: SWAP2
[codex:82676] 0c2b: POP
[codex:82676] 0c2c: POP
[codex:82676] 0c2d: JUMPDEST
[codex:82676] 0c2e: JUMPDEST
[codex:82676] 0c2f: SWAP3
[codex:82676] 0c30: SWAP2
[codex:82676] 0c31: POP
[codex:82676] 0c32: POP
[codex:82676] 0c33: JUMP
[codex:82676] 0c34: JUMPDEST
[codex:82676] 0c35: PUSH1 0x00
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing ownership and access control checks**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676]
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # Build map from offset to index
[codex:82676] index_by_off={off:i for i,(off,_,_) in enumerate(insts)}
[codex:82676]
[codex:82676] # external function entry points from dispatcher (addresses after jumpi)
[codex:82676] entries=[0x0198,0x01c4,0x0254,0x0287,0x02a9,0x02d0,0x02f7,0x0330,0x0357,0x037d,0x03a9,0x0415,0x0494,0x04c2,0x04e4,0x054a,0x0573,0x0603,0x0633,0x0657,0x06d0,0x0706,0x0728,0x0753,0x077f,0x07ee,0x081e,0x0852,0x0882,0x08aa,0x0921,0x0954,0x0984]
[codex:82676]
[codex:82676] # check within first 40 instructions for owner check pattern: SLOAD and CALLER and EQ
[codex:82676] for entry in entries:
[codex:82676] idx=index_by_off.get(entry)
[codex:82676] if idx is None:
[codex:82676] continue
[codex:82676] window=insts[idx:idx+60]
[codex:82676] ops=[name for _,name,_ in window]
[codex:82676] if 'CALLER' in ops and 'SLOAD' in ops:
[codex:82676] # compute if EQ appears after CALLER and SLOAD in window
[codex:82676] if 'EQ' in ops or 'ISZERO' in ops:
[codex:82676] print(f\"Entry 0x{entry:04x} has CALLER and SLOAD in first 60 ops\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 36ms:
[codex:82676]
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing CALL patterns for reentrancy risks**
[codex:82676]
[codex:82676] I'm digging into whether external calls use caller addresses or call values that might enable reentrancy exploits, planning to script analysis around CALL instructions and their nearby stack operations to catch suspicious patterns. This should help clarify if any calls forward ETH or tokens to user-controlled addresses.
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676]
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] call_idxs=[i for i,(off,name,arg) in enumerate(insts) if name=='CALL']
[codex:82676] print('CALL count', len(call_idxs))
[codex:82676] for idx in call_idxs:
[codex:82676] off=insts[idx][0]
[codex:82676] print('--- CALL at', hex(off))
[codex:82676] for o,name,arg in insts[max(0,idx-15):idx+1]:
[codex:82676] if arg is None:
[codex:82676] print(f\" {o:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\" {o:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 41ms:
[codex:82676] CALL count 20
[codex:82676] --- CALL at 0xc1b
[codex:82676] 0c08: SWAP1
[codex:82676] 0c09: DUP3
[codex:82676] 0c0a: SWAP1
[codex:82676] 0c0b: DUP8
[codex:82676] 0c0c: DUP1
[codex:82676] 0c0d: EXTCODESIZE
[codex:82676] 0c0e: ISZERO
[codex:82676] 0c0f: ISZERO
[codex:82676] 0c10: PUSH2 0x0c15
[codex:82676] 0c13: JUMPI
[codex:82676] 0c14: INVALID
[codex:82676] 0c15: JUMPDEST
[codex:82676] 0c16: PUSH2 0x02c6
[codex:82676] 0c19: GAS
[codex:82676] 0c1a: SUB
[codex:82676] 0c1b: CALL
[codex:82676] --- CALL at 0xc91
[codex:82676] 0c7e: ADD
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing storage writes and external calls**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # find PUSH2 0x1aee and 0x1ae0 refs
[codex:82676] for target in [0x1aee,0x1ae0,0x1b04,0x1b28]:
[codex:82676] refs=[off for off,name,arg in insts if name=='PUSH2' and int.from_bytes(arg,'big')==target]
[codex:82676] print(hex(target), 'refs', [hex(r) for r in refs])
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 41ms:
[codex:82676] 0x1aee refs ['0x1ae9']
[codex:82676] 0x1ae0 refs ['0x1adb']
[codex:82676] 0x1b04 refs ['0x1af9']
[codex:82676] 0x1b28 refs ['0x1b20']
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing function entry points**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # show disassembly from entry 0x0984 for ~200 bytes
[codex:82676] start=0x0984
[codex:82676] end=0x0a20
[codex:82676] for off,name,arg in insts:
[codex:82676] if start <= off <= end:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 45ms:
[codex:82676] 0984: JUMPDEST
[codex:82676] 0985: CALLVALUE
[codex:82676] 0986: ISZERO
[codex:82676] 0987: PUSH2 0x098c
[codex:82676] 098a: JUMPI
[codex:82676] 098b: INVALID
[codex:82676] 098c: JUMPDEST
[codex:82676] 098d: PUSH1 0x40
[codex:82676] 098f: DUP1
[codex:82676] 0990: MLOAD
[codex:82676] 0991: PUSH1 0x20
[codex:82676] 0993: PUSH1 0x04
[codex:82676] 0995: PUSH1 0x24
[codex:82676] 0997: DUP1
[codex:82676] 0998: CALLDATALOAD
[codex:82676] 0999: DUP3
[codex:82676] 099a: DUP2
[codex:82676] 099b: ADD
[codex:82676] 099c: CALLDATALOAD
[codex:82676] 099d: PUSH1 0x1f
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing potential initialization function**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676]
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # find where PUSH2 0x1965 occurs
[codex:82676] for off,name,arg in insts:
[codex:82676] if name=='PUSH2' and int.from_bytes(arg,'big') in [0x1965,0x195d,0x1b04,0x1b20,0x18ff,0x1925,0x1ae0,0x1b28]:
[codex:82676] print(f\"{off:04x}: {name} 0x{int.from_bytes(arg,'big'):04x}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 35ms:
[codex:82676] 093c: PUSH2 0x18ff
[codex:82676] 096c: PUSH2 0x1925
[codex:82676] 0a53: PUSH2 0x1965
[codex:82676] 1adb: PUSH2 0x1ae0
[codex:82676] 1af9: PUSH2 0x1b04
[codex:82676] 1b20: PUSH2 0x1b28
[codex:82676]
[codex:82676] thinking
[codex:82676] **Investigating internal function addresses**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # function to print from start to end
[codex:82676]
[codex:82676] def dump(start, end):
[codex:82676] print(f\"-- {start:04x}-{end:04x} --\")
[codex:82676] for off,name,arg in insts:
[codex:82676] if start <= off <= end:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676]
[codex:82676] for s in [0x18ff,0x1925,0x1965]:
[codex:82676] dump(s, s+0x60)
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 33ms:
[codex:82676] -- 18ff-195f --
[codex:82676] 18ff: JUMPDEST
[codex:82676] 1900: PUSH1 0x00
[codex:82676] 1902: PUSH2 0x139b
[codex:82676] 1905: DUP4
[codex:82676] 1906: DUP4
[codex:82676] 1907: PUSH1 0x20
[codex:82676] 1909: PUSH1 0x40
[codex:82676] 190b: MLOAD
[codex:82676] 190c: SWAP1
[codex:82676] 190d: DUP2
[codex:82676] 190e: ADD
[codex:82676] 190f: PUSH1 0x40
[codex:82676] 1911: MSTORE
[codex:82676] 1912: DUP1
[codex:82676] 1913: PUSH1 0x00
[codex:82676] 1915: DUP2
[codex:82676] 1916: MSTORE
[codex:82676] 1917: POP
[codex:82676] 1918: PUSH2 0x188b
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing initialization checks and storage slots**
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # print from 0x1965 to 0x1b40
[codex:82676] start=0x1965
[codex:82676] end=0x1b40
[codex:82676] for off,name,arg in insts:
[codex:82676] if start <= off <= end:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 44ms:
[codex:82676] 1965: JUMPDEST
[codex:82676] 1966: PUSH1 0x00
[codex:82676] 1968: DUP1
[codex:82676] 1969: SLOAD
[codex:82676] 196a: PUSH1 0x01
[codex:82676] 196c: PUSH1 0xa0
[codex:82676] 196e: PUSH1 0x02
[codex:82676] 1970: EXP
[codex:82676] 1971: SUB
[codex:82676] 1972: AND
[codex:82676] 1973: ISZERO
[codex:82676] 1974: PUSH2 0x197f
[codex:82676] 1977: JUMPI
[codex:82676] 1978: POP
[codex:82676] 1979: PUSH1 0x00
[codex:82676] 197b: PUSH2 0x12fa
[codex:82676] 197e: JUMP
[codex:82676] 197f: JUMPDEST
[codex:82676] 1980: DUP5
[codex:82676] 1981: PUSH1 0x01
[codex:82676]
[codex:82676] thinking
[codex:82676] **Analyzing initialization and transferFrom security**
[codex:82676]
[codex:82676] I'm examining the contract's initializer that sets ownership and an external address only if the owner slot is zero, which is standard but could be risky if left uninitialized. Since this is runtime bytecode, I can't confirm if the constructor set the owner, so the exploitability from uninitialized state isn't concrete. I'm also looking into the transferFrom function to see if it improperly allows transfers without checking allowances, which would be a clear vulnerability if so. I'll continue disassembling around the transferFrom selector to verify this.
[codex:82676] exec
[codex:82676] /bin/bash -lc "python - <<'PY'
[codex:82676] from pathlib import Path
[codex:82676] import re
[codex:82676] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:82676] code=bytes.fromhex(re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1))
[codex:82676] # disassemble
[codex:82676] opnames={
[codex:82676] 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:82676] 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:82676] 0x20:'SHA3',
[codex:82676] 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:82676] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:82676] 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:82676] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:82676] 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:82676] 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:82676] 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:82676] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:82676] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:82676] }
[codex:82676]
[codex:82676] insts=[]
[codex:82676] i=0
[codex:82676] while i < len(code):
[codex:82676] op=code[i]
[codex:82676] name=opnames.get(op, f'OP{op:02x}')
[codex:82676] arg=None
[codex:82676] start=i
[codex:82676] i+=1
[codex:82676] if 0x60 <= op <= 0x7f:
[codex:82676] n=op-0x5f
[codex:82676] arg=code[i:i+n]
[codex:82676] i+=n
[codex:82676] insts.append((start, name, arg))
[codex:82676]
[codex:82676] # show disassembly around 0x0df4 (transferFrom impl)
[codex:82676] start=0x0df4
[codex:82676] end=0x0f00
[codex:82676] for off,name,arg in insts:
[codex:82676] if start <= off <= end:
[codex:82676] if arg is None:
[codex:82676] print(f\"{off:04x}: {name}\")
[codex:82676] else:
[codex:82676] print(f\"{off:04x}: {name} 0x{arg.hex()}\")
[codex:82676] PY" in /tmp/codex-multi-ssoyeq0s succeeded in 34ms:
[codex:82676] 0df4: JUMPDEST
[codex:82676] 0df5: PUSH1 0x00
[codex:82676] 0df7: PUSH2 0x0e12
[codex:82676] 0dfa: DUP5
[codex:82676] 0dfb: DUP5
[codex:82676] 0dfc: DUP5
[codex:82676] 0dfd: PUSH1 0x20
[codex:82676] 0dff: PUSH1 0x40
[codex:82676] 0e01: MLOAD
[codex:82676] 0e02: SWAP1
[codex:82676] 0e03: DUP2
[codex:82676] 0e04: ADD
[codex:82676] 0e05: PUSH1 0x40
[codex:82676] 0e07: MSTORE
[codex:82676] 0e08: DUP1
[codex:82676] 0e09: PUSH1 0x00
[codex:82676] 0e0b: DUP2
[codex:82676] 0e0c: MSTORE
[codex:82676] 0e0d: POP
[codex:82676] 0e0e: PUSH2 0x114c
[codex:82676]
[codex:82676] thinking
[codex:82676] **Summarizing bytecode analysis results**
[codex:82676]
[codex:82676] I’m wrapping up the review by confirming no obvious exploitable paths appear in the bytecode—no delegatecalls, selfdestructs, or unauthorized token transfers stand out. There might be initializer functions gated by an unset owner, but that’s not concrete without more deployment info. I’ll produce a concise JSON summary reflecting no findings as requested.
[codex:82676] codex
[codex:82676] {"no_findings":true,"summary":"No concrete, exploitable profit path was identified from the bytecode-only review; no executable delegatecall/selfdestruct and no clear unrestricted value-transfer or admin-takeover path was confirmed.","findings":[]}
[codex:82676] tokens used
[codex:82676] 98,778
[codex:82676] {"no_findings":true,"summary":"No concrete, exploitable profit path was identified from the bytecode-only review; no executable delegatecall/selfdestruct and no clear unrestricted value-transfer or admin-takeover path was confirmed.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T19:32:19.580872+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path was identified from the bytecode-only review; no executable delegatecall/selfdestruct and no clear unrestricted value-transfer or admin-takeover path was confirmed.",
"raw_final": {
"summary": "No concrete, exploitable profit path was identified from the bytecode-only review; no executable delegatecall/selfdestruct and no clear unrestricted value-transfer or admin-takeover path was confirmed.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0185 0000000a: JUMPI 0000000b: PUSH4 0xffffffff 00000010: PUSH1 0xe0 00000012: PUSH1 0x02 00000014: EXP 00000015: PUSH1 0x00 00000017: CALLDATALOAD 00000018: DIV 00000019: AND 0000001a: PUSH4 0x029a8bf7 0000001f: DUP2 00000020: EQ 00000021: PUSH2 0x0198 00000024: JUMPI 00000025: DUP1 00000026: PUSH4 0x06fdde03 0000002b: EQ 0000002c: PUSH2 0x01c4 0000002f: JUMPI 00000030: DUP1 00000031: PUSH4 0x095ea7b3 00000036: EQ 00000037: PUSH2 0x0254 0000003a: JUMPI 0000003b: DUP1 0000003c: PUSH4 0x18160ddd 00000041: EQ 00000042: PUSH2 0x0287 00000045: JUMPI 00000046: DUP1 00000047: PUSH4 0x1a9237de 0000004c: EQ 0000004d: PUSH2 0x02a9 00000050: JUMPI 00000051: DUP1 00000052: PUSH4 0x23385089 00000057: EQ 00000058: PUSH2 0x02d0 0000005b: JUMPI 0000005c: DUP1 0000005d: PUSH4 0x23b872dd 00000062: EQ 00000063: PUSH2 0x02f7 00000066: JUMPI 00000067: DUP1 00000068: PUSH4 0x23de6651 0000006d: EQ 0000006e: PUSH2 0x0330 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0x313ce567 00000078: EQ 00000079: PUSH2 0x0357 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0x406838b3 00000083: EQ 00000084: PUSH2 0x037d 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x490c0e8f 0000008e: EQ 0000008f: PUSH2 0x03a9 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x6461fe39 00000099: EQ 0000009a: PUSH2 0x0415 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x70a08231 000000a4: EQ 000000a5: PUSH2 0x0494 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x733480b7 000000af: EQ 000000b0: PUSH2 0x04c2 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x77fe38a4 000000ba: EQ 000000bb: PUSH2 0x04e4 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x8bbbbfd3 000000c5: EQ 000000c6: PUSH2 0x054a 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x95d89b41 000000d0: EQ 000000d1: PUSH2 0x0573 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0xa1e8ac0b 000000db: EQ 000000dc: PUSH2 0x0603 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0xa340fff4 000000e6: EQ 000000e7: PUSH2 0x0633 000000ea: JUMPI 000000eb: DUP1 000000ec: PUSH4 0xa48a663c 000000f1: EQ 000000f2: PUSH2 0x0657 000000f5: JUMPI 000000f6: DUP1 000000f7: PUSH4 0xa525f42c 000000fc: EQ 000000fd: PUSH2 0x06d0 00000100: JUMPI 00000101: DUP1 00000102: PUSH4 0xa66e6e5c 00000107: EQ 00000108: PUSH2 0x0706 0000010b: JUMPI 0000010c: DUP1 0000010d: PUSH4 0xa9059cbb 00000112: EQ 00000113: PUSH2 0x0728 00000116: JUMPI 00000117: DUP1 00000118: PUSH4 0xaa46f961 0000011d: EQ 0000011e: PUSH2 0x0753 00000121: JUMPI 00000122: DUP1 00000123: PUSH4 0xac35caee 00000128: EQ 00000129: PUSH2 0x077f 0000012c: JUMPI 0000012d: DUP1 0000012e: PUSH4 0xbe9b42d2 00000133: EQ 00000134: PUSH2 0x07ee 00000137: JUMPI 00000138: DUP1 00000139: PUSH4 0xdd62ed3e 0000013e: EQ 0000013f: PUSH2 0x081e 00000142: JUMPI 00000143: DUP1 00000144: PUSH4 0xf2ee5968 00000149: EQ 0000014a: PUSH2 0x0852 0000014d: JUMPI 0000014e: DUP1 0000014f: PUSH4 0xf340fa01 00000154: EQ 00000155: PUSH2 0x0882 00000158: JUMPI 00000159: DUP1 0000015a: PUSH4 0xf359671c 0000015f: EQ 00000160: PUSH2 0x08aa 00000163: JUMPI 00000164: DUP1 00000165: PUSH4 0xf3fef3a3 0000016a: EQ 0000016b: PUSH2 0x0921 0000016e: JUMPI 0000016f: DUP1 00000170: PUSH4 0xf77b8d7a 00000175: EQ 00000176: PUSH2 0x0954 00000179: JUMPI 0000017a: DUP1 0000017b: PUSH4 0xfcbdbaaa 00000180: EQ 00000181: PUSH2 0x0984 00000184: JUMPI 00000185: JUMPDEST 00000186: PUSH2 0x0196 00000189: JUMPDEST 0000018a: PUSH2 0x0192 0000018d: CALLER 0000018e: PUSH2 0x0a72 00000191: JUMP 00000192: JUMPDEST 00000193: POP 00000194: JUMPDEST 00000195: JUMP 00000196: JUMPDEST 00000197: STOP 00000198: JUMPDEST 00000199: CALLVALUE 0000019a: ISZERO 0000019b: PUSH2 0x01a0 0000019e: JUMPI 0000019f: INVALID 000001a0: JUMPDEST 000001a1: PUSH2 0x01a8 000001a4: PUSH2 0x0aa9 000001a7: JUMP 000001a8: JUMPDEST 000001a9: PUSH1 0x40 000001ab: DUP1 000001ac: MLOAD 000001ad: PUSH1 0x01 000001af: PUSH1 0xa0 000001b1: PUSH1 0x02 000001b3: EXP 000001b4: SUB 000001b5: SWAP1 000001b6: SWAP3 000001b7: AND 000001b8: DUP3 000001b9: MSTORE 000001ba: MLOAD 000001bb: SWAP1 000001bc: DUP2 000001bd: SWAP1 000001be: SUB 000001bf: PUSH1 0x20 000001c1: ADD 000001c2: SWAP1 000001c3: RETURN 000001c4: JUMPDEST 000001c5: CALLVALUE 000001c6: ISZERO 000001c7: PUSH2 0x01cc 000001ca: JUMPI 000001cb: INVALID 000001cc: JUMPDEST 000001cd: PUSH2 0x01d4 000001d0: PUSH2 0x0ab9 000001d3: JUMP 000001d4: JUMPDEST 000001d5: PUSH1 0x40 000001d7: DUP1 000001d8: MLOAD 000001d9: PUSH1 0x20 000001db: DUP1 000001dc: DUP3 000001dd: MSTORE 000001de: DUP4 000001df: MLOAD 000001e0: DUP2 000001e1: DUP4 000001e2: ADD 000001e3: MSTORE 000001e4: DUP4 000001e5: MLOAD 000001e6: SWAP2 000001e7: SWAP3 000001e8: DUP4 000001e9: SWAP3 000001ea: SWAP1 000001eb: DUP4 000001ec: ADD 000001ed: SWAP2 000001ee: DUP6 000001ef: ADD 000001f0: SWAP1 000001f1: DUP1 000001f2: DUP4 000001f3: DUP4 000001f4: DUP3 000001f5: ISZERO 000001f6: PUSH2 0x021a 000001f9: JUMPI 000001fa: JUMPDEST 000001fb: DUP1 000001fc: MLOAD 000001fd: DUP3 000001fe: MSTORE 000001ff: PUSH1 0x20 00000201: DUP4 00000202: GT 00000203: ISZERO 00000204: PUSH2 0x021a 00000207: JUMPI 00000208: PUSH1 0x1f 0000020a: NOT 0000020b: SWAP1 0000020c: SWAP3 0000020d: ADD 0000020e: SWAP2 0000020f: PUSH1 0x20 00000211: SWAP2 00000212: DUP3 00000213: ADD 00000214: SWAP2 00000215: ADD 00000216: PUSH2 0x01fa 00000219: JUMP 0000021a: JUMPDEST 0000021b: POP 0000021c: POP 0000021d: POP 0000021e: SWAP1 0000021f: POP 00000220: SWAP1 00000221: DUP2 00000222: ADD 00000223: SWAP1 00000224: PUSH1 0x1f 00000226: AND 00000227: DUP1 00000228: ISZERO 00000229: PUSH2 0x0246 0000022c: JUMPI 0000022d: DUP1 0000022e: DUP3 0000022f: SUB 00000230: DUP1 00000231: MLOAD 00000232: PUSH1 0x01 00000234: DUP4 00000235: PUSH1 0x20 00000237: SUB 00000238: PUSH2 0x0100 0000023b: EXP 0000023c: SUB 0000023d: NOT 0000023e: AND 0000023f: DUP2 00000240: MSTORE 00000241: PUSH1 0x20 00000243: ADD 00000244: SWAP2 00000245: POP 00000246: JUMPDEST 00000247: POP 00000248: SWAP3 00000249: POP 0000024a: POP 0000024b: POP 0000024c: PUSH1 0x40 0000024e: MLOAD 0000024f: DUP1 00000250: SWAP2 00000251: SUB 00000252: SWAP1 00000253: RETURN 00000254: JUMPDEST 00000255: CALLVALUE 00000256: ISZERO 00000257: PUSH2 0x025c 0000025a: JUMPI 0000025b: INVALID 0000025c: JUMPDEST 0000025d: PUSH2 0x0273 00000260: PUSH1 0x01 00000262: PUSH1 0xa0 00000264: PUSH1 0x02 00000266: EXP 00000267: SUB 00000268: PUSH1 0x04 0000026a: CALLDATALOAD 0000026b: AND 0000026c: PUSH1 0x24 0000026e: CALLDATALOAD 0000026f: PUSH2 0x0b44 00000272: JUMP 00000273: JUMPDEST 00000274: PUSH1 0x40 00000276: DUP1 00000277: MLOAD 00000278: SWAP2 00000279: ISZERO 0000027a: ISZERO 0000027b: DUP3 0000027c: MSTORE 0000027d: MLOAD 0000027e: SWAP1 0000027f: DUP2 00000280: SWAP1 00000281: SUB 00000282: PUSH1 0x20 00000284: ADD 00000285: SWAP1 00000286: RETURN 00000287: JUMPDEST 00000288: CALLVALUE 00000289: ISZERO 0000028a: PUSH2 0x028f 0000028d: JUMPI 0000028e: INVALID 0000028f: JUMPDEST 00000290: PUSH2 0x0297 00000293: PUSH2 0x0c34 00000296: JUMP 00000297: JUMPDEST 00000298: PUSH1 0x40 0000029a: DUP1 0000029b: MLOAD 0000029c: SWAP2 0000029d: DUP3 0000029e: MSTORE 0000029f: MLOAD 000002a0: SWAP1 000002a1: DUP2 000002a2: SWAP1 000002a3: SUB 000002a4: PUSH1 0x20 000002a6: ADD 000002a7: SWAP1 000002a8: RETURN 000002a9: JUMPDEST 000002aa: CALLVALUE 000002ab: ISZERO 000002ac: PUSH2 0x02b1 000002af: JUMPI 000002b0: INVALID 000002b1: JUMPDEST 000002b2: PUSH2 0x0273 000002b5: PUSH1 0x04 000002b7: CALLDATALOAD 000002b8: PUSH2 0x0ca6 000002bb: JUMP 000002bc: JUMPDEST 000002bd: PUSH1 0x40 000002bf: DUP1 000002c0: MLOAD 000002c1: SWAP2 000002c2: ISZERO 000002c3: ISZERO 000002c4: DUP3 000002c5: MSTORE 000002c6: MLOAD 000002c7: SWAP1 000002c8: DUP2 000002c9: SWAP1 000002ca: SUB 000002cb: PUSH1 0x20 000002cd: ADD 000002ce: SWAP1 000002cf: RETURN 000002d0: JUMPDEST 000002d1: CALLVALUE 000002d2: ISZERO 000002d3: PUSH2 0x02d8 000002d6: JUMPI 000002d7: INVALID 000002d8: JUMPDEST 000002d9: PUSH2 0x0196 000002dc: PUSH1 0x01 000002de: PUSH1 0xa0 000002e0: PUSH1 0x02 000002e2: EXP 000002e3: SUB 000002e4: PUSH1 0x04 000002e6: CALLDATALOAD 000002e7: DUP2 000002e8: AND 000002e9: SWAP1 000002ea: PUSH1 0x24 000002ec: CALLDATALOAD 000002ed: AND 000002ee: PUSH1 0x44 000002f0: CALLDATALOAD 000002f1: PUSH2 0x0d8a 000002f4: JUMP 000002f5: JUMPDEST 000002f6: STOP 000002f7: JUMPDEST 000002f8: CALLVALUE 000002f9: ISZERO 000002fa: PUSH2 0x02ff 000002fd: JUMPI 000002fe: INVALID 000002ff: JUMPDEST 00000300: PUSH2 0x0273 00000303: PUSH1 0x01 00000305: PUSH1 0xa0 00000307: PUSH1 0x02 00000309: EXP 0000030a: SUB 0000030b: PUSH1 0x04 0000030d: CALLDATALOAD 0000030e: DUP2 0000030f: AND 00000310: SWAP1 00000311: PUSH1 0x24 00000313: CALLDATALOAD 00000314: AND 00000315: PUSH1 0x44 00000317: CALLDATALOAD 00000318: PUSH2 0x0df4 0000031b: JUMP 0000031c: JUMPDEST 0000031d: PUSH1 0x40 0000031f: DUP1 00000320: MLOAD 00000321: SWAP2 00000322: ISZERO 00000323: ISZERO 00000324: DUP3 00000325: MSTORE 00000326: MLOAD 00000327: SWAP1 00000328: DUP2 00000329: SWAP1 0000032a: SUB 0000032b: PUSH1 0x20 0000032d: ADD 0000032e: SWAP1 0000032f: RETURN 00000330: JUMPDEST 00000331: CALLVALUE 00000332: ISZERO 00000333: PUSH2 0x0338 00000336: JUMPI 00000337: INVALID 00000338: JUMPDEST 00000339: PUSH2 0x0196 0000033c: PUSH1 0x01 0000033e: PUSH1 0xa0 00000340: PUSH1 0x02 00000342: EXP 00000343: SUB 00000344: PUSH1 0x04 00000346: CALLDATALOAD 00000347: DUP2 00000348: AND 00000349: SWAP1 0000034a: PUSH1 0x24 0000034c: CALLDATALOAD 0000034d: AND 0000034e: PUSH1 0x44 00000350: CALLDATALOAD 00000351: PUSH2 0x0e1c 00000354: JUMP 00000355: JUMPDEST 00000356: STOP 00000357: JUMPDEST 00000358: CALLVALUE 00000359: ISZERO 0000035a: PUSH2 0x035f 0000035d: JUMPI 0000035e: INVALID 0000035f: JUMPDEST 00000360: PUSH2 0x0367 00000363: PUSH2 0x0e86 00000366: JUMP 00000367: JUMPDEST 00000368: PUSH1 0x40 0000036a: DUP1 0000036b: MLOAD 0000036c: PUSH1 0xff 0000036e: SWAP1 0000036f: SWAP3 00000370: AND 00000371: DUP3 00000372: MSTORE 00000373: MLOAD 00000374: SWAP1 00000375: DUP2 00000376: SWAP1 00000377: SUB 00000378: PUSH1 0x20 0000037a: ADD 0000037b: SWAP1 0000037c: RETURN 0000037d: JUMPDEST 0000037e: CALLVALUE 0000037f: ISZERO 00000380: PUSH2 0x0385 00000383: JUMPI 00000384: INVALID 00000385: JUMPDEST 00000386: PUSH2 0x01a8 00000389: PUSH2 0x0ef8 0000038c: JUMP 0000038d: JUMPDEST 0000038e: PUSH1 0x40 00000390: DUP1 00000391: MLOAD 00000392: PUSH1 0x01 00000394: PUSH1 0xa0 00000396: PUSH1 0x02 00000398: EXP 00000399: SUB 0000039a: SWAP1 0000039b: SWAP3 0000039c: AND 0000039d: DUP3 0000039e: MSTORE 0000039f: MLOAD 000003a0: SWAP1 000003a1: DUP2 000003a2: SWAP1 000003a3: SUB 000003a4: PUSH1 0x20 000003a6: ADD 000003a7: SWAP1 000003a8: RETURN 000003a9: JUMPDEST 000003aa: PUSH1 0x40 000003ac: DUP1 000003ad: MLOAD 000003ae: PUSH1 0x20 000003b0: PUSH1 0x04 000003b2: PUSH1 0x24 000003b4: DUP1 000003b5: CALLDATALOAD 000003b6: DUP3 000003b7: DUP2 000003b8: ADD 000003b9: CALLDATALOAD 000003ba: PUSH1 0x1f 000003bc: DUP2 000003bd: ADD 000003be: DUP6 000003bf: SWAP1 000003c0: DIV 000003c1: DUP6 000003c2: MUL 000003c3: DUP7 000003c4: ADD 000003c5: DUP6 000003c6: ADD 000003c7: SWAP1 000003c8: SWAP7 000003c9: MSTORE 000003ca: DUP6 000003cb: DUP6 000003cc: MSTORE 000003cd: PUSH2 0x0273 000003d0: SWAP6 000003d1: DUP4 000003d2: CALLDATALOAD 000003d3: PUSH1 0x01 000003d5: PUSH1 0xa0 000003d7: PUSH1 0x02 000003d9: EXP 000003da: SUB 000003db: AND 000003dc: SWAP6 000003dd: SWAP4 000003de: SWAP5 000003df: PUSH1 0x44 000003e1: SWAP5 000003e2: SWAP4 000003e3: SWAP3 000003e4: SWAP1 000003e5: SWAP3 000003e6: ADD 000003e7: SWAP2 000003e8: DUP2 000003e9: SWAP1 000003ea: DUP5 000003eb: ADD 000003ec: DUP4 000003ed: DUP3 000003ee: DUP1 000003ef: DUP3 000003f0: DUP5 000003f1: CALLDATACOPY 000003f2: POP 000003f3: SWAP5 000003f4: SWAP7 000003f5: POP 000003f6: PUSH2 0x0f07 000003f9: SWAP6 000003fa: POP 000003fb: POP 000003fc: POP 000003fd: POP 000003fe: POP 000003ff: POP 00000400: JUMP 00000401: JUMPDEST 00000402: PUSH1 0x40 00000404: DUP1 00000405: MLOAD 00000406: SWAP2 00000407: ISZERO 00000408: ISZERO 00000409: DUP3 0000040a: MSTORE 0000040b: MLOAD 0000040c: SWAP1 0000040d: DUP2 0000040e: SWAP1 0000040f: SUB 00000410: PUSH1 0x20 00000412: ADD 00000413: SWAP1 00000414: RETURN 00000415: JUMPDEST 00000416: CALLVALUE 00000417: ISZERO 00000418: PUSH2 0x041d 0000041b: JUMPI 0000041c: INVALID 0000041d: JUMPDEST 0000041e: PUSH1 0x40 00000420: DUP1 00000421: MLOAD 00000422: PUSH1 0x20 00000424: PUSH1 0x04 00000426: PUSH1 0x64 00000428: CALLDATALOAD 00000429: DUP2 0000042a: DUP2 0000042b: ADD 0000042c: CALLDATALOAD 0000042d: PUSH1 0x1f 0000042f: DUP2 00000430: ADD 00000431: DUP5 00000432: SWAP1 00000433: DIV 00000434: DUP5 00000435: MUL 00000436: DUP6 00000437: ADD 00000438: DUP5 00000439: ADD 0000043a: SWAP1 0000043b: SWAP6 0000043c: MSTORE 0000043d: DUP5 0000043e: DUP5 0000043f: MSTORE 00000440: PUSH2 0x0273 00000443: SWAP5 00000444: DUP3 00000445: CALLDATALOAD 00000446: PUSH1 0x01 00000448: PUSH1 0xa0 0000044a: PUSH1 0x02 0000044c: EXP 0000044d: SUB 0000044e: SWAP1 0000044f: DUP2 00000450: AND 00000451: SWAP6 00000452: PUSH1 0x24 00000454: DUP1 00000455: CALLDATALOAD 00000456: SWAP1 00000457: SWAP3 00000458: AND 00000459: SWAP6 0000045a: PUSH1 0x44 0000045c: CALLDATALOAD 0000045d: SWAP6 0000045e: SWAP5 0000045f: PUSH1 0x84 00000461: SWAP5 00000462: SWAP3 00000463: SWAP4 00000464: ADD 00000465: SWAP2 00000466: SWAP1 00000467: DUP2 00000468: SWAP1 00000469: DUP5 0000046a: ADD 0000046b: DUP4 0000046c: DUP3 0000046d: DUP1 0000046e: DUP3 0000046f: DUP5 00000470: CALLDATACOPY 00000471: POP 00000472: SWAP5 00000473: SWAP7 00000474: POP 00000475: PUSH2 0x114c 00000478: SWAP6 00000479: POP 0000047a: POP 0000047b: POP 0000047c: POP 0000047d: POP 0000047e: POP 0000047f: JUMP 00000480: JUMPDEST 00000481: PUSH1 0x40 00000483: DUP1 00000484: MLOAD 00000485: SWAP2 00000486: ISZERO 00000487: ISZERO 00000488: DUP3 00000489: MSTORE 0000048a: MLOAD 0000048b: SWAP1 0000048c: DUP2 0000048d: SWAP1 0000048e: SUB 0000048f: PUSH1 0x20 00000491: ADD 00000492: SWAP1 00000493: RETURN 00000494: JUMPDEST 00000495: CALLVALUE 00000496: ISZERO 00000497: PUSH2 0x049c 0000049a: JUMPI 0000049b: INVALID 0000049c: JUMPDEST 0000049d: PUSH2 0x0297 000004a0: PUSH1 0x01 000004a2: PUSH1 0xa0 000004a4: PUSH1 0x02 000004a6: EXP 000004a7: SUB 000004a8: PUSH1 0x04 000004aa: CALLDATALOAD 000004ab: AND 000004ac: PUSH2 0x1303 000004af: JUMP 000004b0: JUMPDEST 000004b1: PUSH1 0x40 000004b3: DUP1 000004b4: MLOAD 000004b5: SWAP2 000004b6: DUP3 000004b7: MSTORE 000004b8: MLOAD 000004b9: SWAP1 000004ba: DUP2 000004bb: SWAP1 000004bc: SUB 000004bd: PUSH1 0x20 000004bf: ADD 000004c0: SWAP1 000004c1: RETURN 000004c2: JUMPDEST 000004c3: PUSH2 0x0273 000004c6: PUSH1 0x04 000004c8: CALLDATALOAD 000004c9: PUSH1 0x24 000004cb: CALLDATALOAD 000004cc: PUSH2 0x137e 000004cf: JUMP 000004d0: JUMPDEST 000004d1: PUSH1 0x40 000004d3: DUP1 000004d4: MLOAD 000004d5: SWAP2 000004d6: ISZERO 000004d7: ISZERO 000004d8: DUP3 000004d9: MSTORE 000004da: MLOAD 000004db: SWAP1 000004dc: DUP2 000004dd: SWAP1 000004de: SUB 000004df: PUSH1 0x20 000004e1: ADD 000004e2: SWAP1 000004e3: RETURN 000004e4: JUMPDEST 000004e5: PUSH1 0x40 000004e7: DUP1 000004e8: MLOAD 000004e9: PUSH1 0x20 000004eb: PUSH1 0x04 000004ed: PUSH1 0x44 000004ef: CALLDATALOAD 000004f0: DUP2 000004f1: DUP2 000004f2: ADD 000004f3: CALLDATALOAD 000004f4: PUSH1 0x1f 000004f6: DUP2 000004f7: ADD 000004f8: DUP5 000004f9: SWAP1 000004fa: DIV 000004fb: DUP5 000004fc: MUL 000004fd: DUP6 000004fe: ADD 000004ff: DUP5 00000500: ADD 00000501: SWAP1 00000502: SWAP6 00000503: MSTORE 00000504: DUP5 00000505: DUP5 00000506: MSTORE 00000507: PUSH2 0x0273 0000050a: SWAP5 0000050b: DUP3 0000050c: CALLDATALOAD 0000050d: SWAP5 0000050e: PUSH1 0x24 00000510: DUP1 00000511: CALLDATALOAD 00000512: SWAP6 00000513: PUSH1 0x64 00000515: SWAP5 00000516: SWAP3 00000517: SWAP4 00000518: SWAP2 00000519: SWAP1 0000051a: SWAP3 0000051b: ADD 0000051c: SWAP2 0000051d: DUP2 0000051e: SWAP1 0000051f: DUP5 00000520: ADD 00000521: DUP4 00000522: DUP3 00000523: DUP1 00000524: DUP3 00000525: DUP5 00000526: CALLDATACOPY 00000527: POP 00000528: SWAP5 00000529: SWAP7 0000052a: POP 0000052b: PUSH2 0x13a4 0000052e: SWAP6 0000052f: POP 00000530: POP 00000531: POP 00000532: POP 00000533: POP 00000534: POP 00000535: JUMP 00000536: JUMPDEST 00000537: PUSH1 0x40 00000539: DUP1 0000053a: MLOAD 0000053b: SWAP2 0000053c: ISZERO 0000053d: ISZERO 0000053e: DUP3 0000053f: MSTORE 00000540: MLOAD 00000541: SWAP1 00000542: DUP2 00000543: SWAP1 00000544: SUB 00000545: PUSH1 0x20 00000547: ADD 00000548: SWAP1 00000549: RETURN 0000054a: JUMPDEST 0000054b: CALLVALUE 0000054c: ISZERO 0000054d: PUSH2 0x0552 00000550: JUMPI 00000551: INVALID 00000552: JUMPDEST 00000553: PUSH2 0x0273 00000556: PUSH1 0x04 00000558: CALLDATALOAD 00000559: ISZERO 0000055a: ISZERO 0000055b: PUSH2 0x13c5 0000055e: JUMP 0000055f: JUMPDEST 00000560: PUSH1 0x40 00000562: DUP1 00000563: MLOAD 00000564: SWAP2 00000565: ISZERO 00000566: ISZERO 00000567: DUP3 00000568: MSTORE 00000569: MLOAD 0000056a: SWAP1 0000056b: DUP2 0000056c: SWAP1 0000056d: SUB 0000056e: PUSH1 0x20 00000570: ADD 00000571: SWAP1 00000572: RETURN 00000573: JUMPDEST 00000574: CALLVALUE 00000575: ISZERO 00000576: PUSH2 0x057b 00000579: JUMPI 0000057a: INVALID 0000057b: JUMPDEST 0000057c: PUSH2 0x01d4 0000057f: PUSH2 0x1451 00000582: JUMP 00000583: JUMPDEST 00000584: PUSH1 0x40 00000586: DUP1 00000587: MLOAD 00000588: PUSH1 0x20 0000058a: DUP1 0000058b: DUP3 0000058c: MSTORE 0000058d: DUP4 0000058e: MLOAD 0000058f: DUP2 00000590: DUP4 00000591: ADD 00000592: MSTORE 00000593: DUP4 00000594: MLOAD 00000595: SWAP2 00000596: SWAP3 00000597: DUP4 00000598: SWAP3 00000599: SWAP1 0000059a: DUP4 0000059b: ADD 0000059c: SWAP2 0000059d: DUP6 0000059e: ADD 0000059f: SWAP1 000005a0: DUP1 000005a1: DUP4 000005a2: DUP4 000005a3: DUP3 000005a4: ISZERO 000005a5: PUSH2 0x021a 000005a8: JUMPI 000005a9: JUMPDEST 000005aa: DUP1 000005ab: MLOAD 000005ac: DUP3 000005ad: MSTORE 000005ae: PUSH1 0x20 000005b0: DUP4 000005b1: GT 000005b2: ISZERO 000005b3: PUSH2 0x021a 000005b6: JUMPI 000005b7: PUSH1 0x1f 000005b9: NOT 000005ba: SWAP1 000005bb: SWAP3 000005bc: ADD 000005bd: SWAP2 000005be: PUSH1 0x20 000005c0: SWAP2 000005c1: DUP3 000005c2: ADD 000005c3: SWAP2 000005c4: ADD 000005c5: PUSH2 0x01fa 000005c8: JUMP 000005c9: JUMPDEST 000005ca: POP 000005cb: POP 000005cc: POP 000005cd: SWAP1 000005ce: POP 000005cf: SWAP1 000005d0: DUP2 000005d1: ADD 000005d2: SWAP1 000005d3: PUSH1 0x1f 000005d5: AND 000005d6: DUP1 000005d7: ISZERO 000005d8: PUSH2 0x0246 000005db: JUMPI 000005dc: DUP1 000005dd: DUP3 000005de: SUB 000005df: DUP1 000005e0: MLOAD 000005e1: PUSH1 0x01 000005e3: DUP4 000005e4: PUSH1 0x20 000005e6: SUB 000005e7: PUSH2 0x0100 000005ea: EXP 000005eb: SUB 000005ec: NOT 000005ed: AND 000005ee: DUP2 000005ef: MSTORE 000005f0: PUSH1 0x20 000005f2: ADD 000005f3: SWAP2 000005f4: POP 000005f5: JUMPDEST 000005f6: POP 000005f7: SWAP3 000005f8: POP 000005f9: POP 000005fa: POP 000005fb: PUSH1 0x40 000005fd: MLOAD 000005fe: DUP1 000005ff: SWAP2 00000600: SUB 00000601: SWAP1 00000602: RETURN 00000603: JUMPDEST 00000604: CALLVALUE 00000605: ISZERO 00000606: PUSH2 0x060b 00000609: JUMPI 0000060a: INVALID 0000060b: JUMPDEST 0000060c: PUSH2 0x0273 0000060f: PUSH1 0x01 00000611: PUSH1 0xa0 00000613: PUSH1 0x02 00000615: EXP 00000616: SUB 00000617: PUSH1 0x04 00000619: CALLDATALOAD 0000061a: AND 0000061b: PUSH2 0x14df 0000061e: JUMP 0000061f: JUMPDEST 00000620: PUSH1 0x40 00000622: DUP1 00000623: MLOAD 00000624: SWAP2 00000625: ISZERO 00000626: ISZERO 00000627: DUP3 00000628: MSTORE 00000629: MLOAD 0000062a: SWAP1 0000062b: DUP2 0000062c: SWAP1 0000062d: SUB 0000062e: PUSH1 0x20 00000630: ADD 00000631: SWAP1 00000632: RETURN 00000633: JUMPDEST 00000634: CALLVALUE 00000635: ISZERO 00000636: PUSH2 0x063b 00000639: JUMPI 0000063a: INVALID 0000063b: JUMPDEST 0000063c: PUSH2 0x0273 0000063f: PUSH2 0x14f4 00000642: JUMP 00000643: JUMPDEST 00000644: PUSH1 0x40 00000646: DUP1 00000647: MLOAD 00000648: SWAP2 00000649: ISZERO 0000064a: ISZERO 0000064b: DUP3 0000064c: MSTORE 0000064d: MLOAD 0000064e: SWAP1 0000064f: DUP2 00000650: SWAP1 00000651: SUB 00000652: PUSH1 0x20 00000654: ADD 00000655: SWAP1 00000656: RETURN 00000657: JUMPDEST 00000658: CALLVALUE 00000659: ISZERO 0000065a: PUSH2 0x065f 0000065d: JUMPI 0000065e: INVALID 0000065f: JUMPDEST 00000660: PUSH1 0x40 00000662: DUP1 00000663: MLOAD 00000664: PUSH1 0x20 00000666: PUSH1 0x04 00000668: PUSH1 0x64 0000066a: CALLDATALOAD 0000066b: DUP2 0000066c: DUP2 0000066d: ADD 0000066e: CALLDATALOAD 0000066f: PUSH1 0x1f 00000671: DUP2 00000672: ADD 00000673: DUP5 00000674: SWAP1 00000675: DIV 00000676: DUP5 00000677: MUL 00000678: DUP6 00000679: ADD 0000067a: DUP5 0000067b: ADD 0000067c: SWAP1 0000067d: SWAP6 0000067e: MSTORE 0000067f: DUP5 00000680: DUP5 00000681: MSTORE 00000682: PUSH2 0x0273 00000685: SWAP5 00000686: DUP3 00000687: CALLDATALOAD 00000688: PUSH1 0x01 0000068a: PUSH1 0xa0 0000068c: PUSH1 0x02 0000068e: EXP 0000068f: SUB 00000690: AND 00000691: SWAP5 00000692: PUSH1 0x24 00000694: DUP1 00000695: CALLDATALOAD 00000696: SWAP6 00000697: PUSH1 0x44 00000699: CALLDATALOAD 0000069a: SWAP6 0000069b: SWAP5 0000069c: PUSH1 0x84 0000069e: SWAP5 0000069f: SWAP3 000006a0: ADD 000006a1: SWAP2 000006a2: SWAP1 000006a3: DUP2 000006a4: SWAP1 000006a5: DUP5 000006a6: ADD 000006a7: DUP4 000006a8: DUP3 000006a9: DUP1 000006aa: DUP3 000006ab: DUP5 000006ac: CALLDATACOPY 000006ad: POP 000006ae: SWAP5 000006af: SWAP7 000006b0: POP 000006b1: PUSH2 0x157e 000006b4: SWAP6 000006b5: POP 000006b6: POP 000006b7: POP 000006b8: POP 000006b9: POP 000006ba: POP 000006bb: JUMP 000006bc: JUMPDEST 000006bd: PUSH1 0x40 000006bf: DUP1 000006c0: MLOAD 000006c1: SWAP2 000006c2: ISZERO 000006c3: ISZERO 000006c4: DUP3 000006c5: MSTORE 000006c6: MLOAD 000006c7: SWAP1 000006c8: DUP2 000006c9: SWAP1 000006ca: SUB 000006cb: PUSH1 0x20 000006cd: ADD 000006ce: SWAP1 000006cf: RETURN 000006d0: JUMPDEST 000006d1: CALLVALUE 000006d2: ISZERO 000006d3: PUSH2 0x06d8 000006d6: JUMPI 000006d7: INVALID 000006d8: JUMPDEST 000006d9: PUSH2 0x0273 000006dc: PUSH1 0x01 000006de: PUSH1 0xa0 000006e0: PUSH1 0x02 000006e2: EXP 000006e3: SUB 000006e4: PUSH1 0x04 000006e6: CALLDATALOAD 000006e7: AND 000006e8: PUSH1 0x24 000006ea: CALLDATALOAD 000006eb: PUSH1 0x44 000006ed: CALLDATALOAD 000006ee: PUSH2 0x1726 000006f1: JUMP 000006f2: JUMPDEST 000006f3: PUSH1 0x40 000006f5: DUP1 000006f6: MLOAD 000006f7: SWAP2 000006f8: ISZERO 000006f9: ISZERO 000006fa: DUP3 000006fb: MSTORE 000006fc: MLOAD 000006fd: SWAP1 000006fe: DUP2 000006ff: SWAP1 00000700: SUB 00000701: PUSH1 0x20 00000703: ADD 00000704: SWAP1 00000705: RETURN 00000706: JUMPDEST 00000707: CALLVALUE 00000708: ISZERO 00000709: PUSH2 0x070e 0000070c: JUMPI 0000070d: INVALID 0000070e: JUMPDEST 0000070f: PUSH2 0x0297 00000712: PUSH2 0x174e 00000715: JUMP 00000716: JUMPDEST 00000717: PUSH1 0x40 00000719: DUP1 0000071a: MLOAD 0000071b: SWAP2 0000071c: DUP3 0000071d: MSTORE 0000071e: MLOAD 0000071f: SWAP1 00000720: DUP2 00000721: SWAP1 00000722: SUB 00000723: PUSH1 0x20 00000725: ADD 00000726: SWAP1 00000727: RETURN 00000728: JUMPDEST 00000729: PUSH2 0x0273 0000072c: PUSH1 0x01 0000072e: PUSH1 0xa0 00000730: PUSH1 0x02 00000732: EXP 00000733: SUB 00000734: PUSH1 0x04 00000736: CALLDATALOAD 00000737: AND 00000738: PUSH1 0x24 0000073a: CALLDATALOAD 0000073b: PUSH2 0x1754 0000073e: JUMP 0000073f: JUMPDEST 00000740: PUSH1 0x40 00000742: DUP1 00000743: MLOAD 00000744: SWAP2 00000745: ISZERO 00000746: ISZERO 00000747: DUP3 00000748: MSTORE 00000749: MLOAD 0000074a: SWAP1 0000074b: DUP2 0000074c: SWAP1 0000074d: SUB 0000074e: PUSH1 0x20 00000750: ADD 00000751: SWAP1 00000752: RETURN 00000753: JUMPDEST 00000754: CALLVALUE 00000755: ISZERO 00000756: PUSH2 0x075b 00000759: JUMPI 0000075a: INVALID 0000075b: JUMPDEST 0000075c: PUSH2 0x01a8 0000075f: PUSH2 0x177a 00000762: JUMP 00000763: JUMPDEST 00000764: PUSH1 0x40 00000766: DUP1 00000767: MLOAD 00000768: PUSH1 0x01 0000076a: PUSH1 0xa0 0000076c: PUSH1 0x02 0000076e: EXP 0000076f: SUB 00000770: SWAP1 00000771: SWAP3 00000772: AND 00000773: DUP3 00000774: MSTORE 00000775: MLOAD 00000776: SWAP1 00000777: DUP2 00000778: SWAP1 00000779: SUB 0000077a: PUSH1 0x20 0000077c: ADD 0000077d: SWAP1 0000077e: RETURN 0000077f: JUMPDEST 00000780: PUSH1 0x40 00000782: DUP1 00000783: MLOAD 00000784: PUSH1 0x20 00000786: PUSH1 0x04 00000788: PUSH1 0x44 0000078a: CALLDATALOAD 0000078b: DUP2 0000078c: DUP2 0000078d: ADD 0000078e: CALLDATALOAD 0000078f: PUSH1 0x1f 00000791: DUP2 00000792: ADD 00000793: DUP5 00000794: SWAP1 00000795: DIV 00000796: DUP5 00000797: MUL 00000798: DUP6 00000799: ADD 0000079a: DUP5 0000079b: ADD 0000079c: SWAP1 0000079d: SWAP6 0000079e: MSTORE 0000079f: DUP5 000007a0: DUP5 000007a1: MSTORE 000007a2: PUSH2 0x0273 000007a5: SWAP5 000007a6: DUP3 000007a7: CALLDATALOAD 000007a8: PUSH1 0x01 000007aa: PUSH1 0xa0 000007ac: PUSH1 0x02 000007ae: EXP 000007af: SUB 000007b0: AND 000007b1: SWAP5 000007b2: PUSH1 0x24 000007b4: DUP1 000007b5: CALLDATALOAD 000007b6: SWAP6 000007b7: PUSH1 0x64 000007b9: SWAP5 000007ba: SWAP3 000007bb: SWAP4 000007bc: SWAP2 000007bd: SWAP1 000007be: SWAP3 000007bf: ADD 000007c0: SWAP2 000007c1: DUP2 000007c2: SWAP1 000007c3: DUP5 000007c4: ADD 000007c5: DUP4 000007c6: DUP3 000007c7: DUP1 000007c8: DUP3 000007c9: DUP5 000007ca: CALLDATACOPY 000007cb: POP 000007cc: SWAP5 000007cd: SWAP7 000007ce: POP 000007cf: PUSH2 0x1789 000007d2: SWAP6 000007d3: POP 000007d4: POP 000007d5: POP 000007d6: POP 000007d7: POP 000007d8: POP 000007d9: JUMP 000007da: JUMPDEST 000007db: PUSH1 0x40 000007dd: DUP1 000007de: MLOAD 000007df: SWAP2 000007e0: ISZERO 000007e1: ISZERO 000007e2: DUP3 000007e3: MSTORE 000007e4: MLOAD 000007e5: SWAP1 000007e6: DUP2 000007e7: SWAP1 000007e8: SUB 000007e9: PUSH1 0x20 000007eb: ADD 000007ec: SWAP1 000007ed: RETURN 000007ee: JUMPDEST 000007ef: CALLVALUE 000007f0: ISZERO 000007f1: PUSH2 0x07f6 000007f4: JUMPI 000007f5: INVALID 000007f6: JUMPDEST 000007f7: PUSH2 0x0273 000007fa: PUSH1 0x01 000007fc: PUSH1 0xa0 000007fe: PUSH1 0x02 00000800: EXP 00000801: SUB 00000802: PUSH1 0x04 00000804: CALLDATALOAD 00000805: AND 00000806: PUSH2 0x17aa 00000809: JUMP 0000080a: JUMPDEST 0000080b: PUSH1 0x40 0000080d: DUP1 0000080e: MLOAD 0000080f: SWAP2 00000810: ISZERO 00000811: ISZERO 00000812: DUP3 00000813: MSTORE 00000814: MLOAD 00000815: SWAP1 00000816: DUP2 00000817: SWAP1 00000818: SUB 00000819: PUSH1 0x20 0000081b: ADD 0000081c: SWAP1 0000081d: RETURN 0000081e: JUMPDEST 0000081f: CALLVALUE 00000820: ISZERO 00000821: PUSH2 0x0826 00000824: JUMPI 00000825: INVALID 00000826: JUMPDEST 00000827: PUSH2 0x0297 0000082a: PUSH1 0x01 0000082c: PUSH1 0xa0 0000082e: PUSH1 0x02 00000830: EXP 00000831: SUB 00000832: PUSH1 0x04 00000834: CALLDATALOAD 00000835: DUP2 00000836: AND 00000837: SWAP1 00000838: PUSH1 0x24 0000083a: CALLDATALOAD 0000083b: AND 0000083c: PUSH2 0x17f2 0000083f: JUMP 00000840: JUMPDEST 00000841: PUSH1 0x40 00000843: DUP1 00000844: MLOAD 00000845: SWAP2 00000846: DUP3 00000847: MSTORE 00000848: MLOAD 00000849: SWAP1 0000084a: DUP2 0000084b: SWAP1 0000084c: SUB 0000084d: PUSH1 0x20 0000084f: ADD 00000850: SWAP1 00000851: RETURN 00000852: JUMPDEST 00000853: CALLVALUE 00000854: ISZERO 00000855: PUSH2 0x085a 00000858: JUMPI 00000859: INVALID 0000085a: JUMPDEST 0000085b: PUSH2 0x0273 0000085e: PUSH1 0x01 00000860: PUSH1 0xa0 00000862: PUSH1 0x02 00000864: EXP 00000865: SUB 00000866: PUSH1 0x04 00000868: CALLDATALOAD 00000869: AND 0000086a: PUSH2 0x1876 0000086d: JUMP 0000086e: JUMPDEST 0000086f: PUSH1 0x40 00000871: DUP1 00000872: MLOAD 00000873: SWAP2 00000874: ISZERO 00000875: ISZERO 00000876: DUP3 00000877: MSTORE 00000878: MLOAD 00000879: SWAP1 0000087a: DUP2 0000087b: SWAP1 0000087c: SUB 0000087d: PUSH1 0x20 0000087f: ADD 00000880: SWAP1 00000881: RETURN 00000882: JUMPDEST 00000883: PUSH2 0x0273 00000886: PUSH1 0x01 00000888: PUSH1 0xa0 0000088a: PUSH1 0x02 0000088c: EXP 0000088d: SUB 0000088e: PUSH1 0x04 00000890: CALLDATALOAD 00000891: AND 00000892: PUSH2 0x0a72 00000895: JUMP 00000896: JUMPDEST 00000897: PUSH1 0x40 00000899: DUP1 0000089a: MLOAD 0000089b: SWAP2 0000089c: ISZERO 0000089d: ISZERO 0000089e: DUP3 0000089f: MSTORE 000008a0: MLOAD 000008a1: SWAP1 000008a2: DUP2 000008a3: SWAP1 000008a4: SUB 000008a5: PUSH1 0x20 000008a7: ADD 000008a8: SWAP1 000008a9: RETURN 000008aa: JUMPDEST 000008ab: CALLVALUE 000008ac: ISZERO 000008ad: PUSH2 0x08b2 000008b0: JUMPI 000008b1: INVALID 000008b2: JUMPDEST 000008b3: PUSH1 0x40 000008b5: DUP1 000008b6: MLOAD 000008b7: PUSH1 0x20 000008b9: PUSH1 0x04 000008bb: PUSH1 0x44 000008bd: CALLDATALOAD 000008be: DUP2 000008bf: DUP2 000008c0: ADD 000008c1: CALLDATALOAD 000008c2: PUSH1 0x1f 000008c4: DUP2 000008c5: ADD 000008c6: DUP5 000008c7: SWAP1 000008c8: DIV 000008c9: DUP5 000008ca: MUL 000008cb: DUP6 000008cc: ADD 000008cd: DUP5 000008ce: ADD 000008cf: SWAP1 000008d0: SWAP6 000008d1: MSTORE 000008d2: DUP5 000008d3: DUP5 000008d4: MSTORE 000008d5: PUSH2 0x0273 000008d8: SWAP5 000008d9: DUP3 000008da: CALLDATALOAD 000008db: PUSH1 0x01 000008dd: PUSH1 0xa0 000008df: PUSH1 0x02 000008e1: EXP 000008e2: SUB 000008e3: AND 000008e4: SWAP5 000008e5: PUSH1 0x24 000008e7: DUP1 000008e8: CALLDATALOAD 000008e9: SWAP6 000008ea: PUSH1 0x64 000008ec: SWAP5 000008ed: SWAP3 000008ee: SWAP4 000008ef: SWAP2 000008f0: SWAP1 000008f1: SWAP3 000008f2: ADD 000008f3: SWAP2 000008f4: DUP2 000008f5: SWAP1 000008f6: DUP5 000008f7: ADD 000008f8: DUP4 000008f9: DUP3 000008fa: DUP1 000008fb: DUP3 000008fc: DUP5 000008fd: CALLDATACOPY 000008fe: POP 000008ff: SWAP5 00000900: SWAP7 00000901: POP 00000902: PUSH2 0x188b 00000905: SWAP6 00000906: POP 00000907: POP 00000908: POP 00000909: POP 0000090a: POP 0000090b: POP 0000090c: JUMP 0000090d: JUMPDEST 0000090e: PUSH1 0x40 00000910: DUP1 00000911: MLOAD 00000912: SWAP2 00000913: ISZERO 00000914: ISZERO 00000915: DUP3 00000916: MSTORE 00000917: MLOAD 00000918: SWAP1 00000919: DUP2 0000091a: SWAP1 0000091b: SUB 0000091c: PUSH1 0x20 0000091e: ADD 0000091f: SWAP1 00000920: RETURN 00000921: JUMPDEST 00000922: CALLVALUE 00000923: ISZERO 00000924: PUSH2 0x0929 00000927: JUMPI 00000928: INVALID 00000929: JUMPDEST 0000092a: PUSH2 0x0273 0000092d: PUSH1 0x01 0000092f: PUSH1 0xa0 00000931: PUSH1 0x02 00000933: EXP 00000934: SUB 00000935: PUSH1 0x04 00000937: CALLDATALOAD 00000938: AND 00000939: PUSH1 0x24 0000093b: CALLDATALOAD 0000093c: PUSH2 0x18ff 0000093f: JUMP 00000940: JUMPDEST 00000941: PUSH1 0x40 00000943: DUP1 00000944: MLOAD 00000945: SWAP2 00000946: ISZERO 00000947: ISZERO 00000948: DUP3 00000949: MSTORE 0000094a: MLOAD 0000094b: SWAP1 0000094c: DUP2 0000094d: SWAP1 0000094e: SUB 0000094f: PUSH1 0x20 00000951: ADD 00000952: SWAP1 00000953: RETURN 00000954: JUMPDEST 00000955: CALLVALUE 00000956: ISZERO 00000957: PUSH2 0x095c 0000095a: JUMPI 0000095b: INVALID 0000095c: JUMPDEST 0000095d: PUSH2 0x0273 00000960: PUSH1 0x01 00000962: PUSH1 0xa0 00000964: PUSH1 0x02 00000966: EXP 00000967: SUB 00000968: PUSH1 0x04 0000096a: CALLDATALOAD 0000096b: AND 0000096c: PUSH2 0x1925 0000096f: JUMP 00000970: JUMPDEST 00000971: PUSH1 0x40 00000973: DUP1 00000974: MLOAD 00000975: SWAP2 00000976: ISZERO 00000977: ISZERO 00000978: DUP3 00000979: MSTORE 0000097a: MLOAD 0000097b: SWAP1 0000097c: DUP2 0000097d: SWAP1 0000097e: SUB 0000097f: PUSH1 0x20 00000981: ADD 00000982: SWAP1 00000983: RETURN 00000984: JUMPDEST 00000985: CALLVALUE 00000986: ISZERO 00000987: PUSH2 0x098c 0000098a: JUMPI 0000098b: INVALID 0000098c: JUMPDEST 0000098d: PUSH1 0x40 0000098f: DUP1 00000990: MLOAD 00000991: PUSH1 0x20 00000993: PUSH1 0x04 00000995: PUSH1 0x24 00000997: DUP1 00000998: CALLDATALOAD 00000999: DUP3 0000099a: DUP2 0000099b: ADD 0000099c: CALLDATALOAD 0000099d: PUSH1 0x1f 0000099f: DUP2 000009a0: ADD 000009a1: DUP6 000009a2: SWAP1 000009a3: DIV 000009a4: DUP6 000009a5: MUL 000009a6: DUP7 000009a7: ADD 000009a8: DUP6 000009a9: ADD 000009aa: SWAP1 000009ab: SWAP7 000009ac: MSTORE 000009ad: DUP6 000009ae: DUP6 000009af: MSTORE 000009b0: PUSH2 0x0273 000009b3: SWAP6 000009b4: DUP4 000009b5: CALLDATALOAD 000009b6: PUSH1 0x01 000009b8: PUSH1 0xa0 000009ba: PUSH1 0x02 000009bc: EXP 000009bd: SUB 000009be: AND 000009bf: SWAP6 000009c0: SWAP4 000009c1: SWAP5 000009c2: PUSH1 0x44 000009c4: SWAP5 000009c5: SWAP4 000009c6: SWAP3 000009c7: SWAP1 000009c8: SWAP3 000009c9: ADD 000009ca: SWAP2 000009cb: DUP2 000009cc: SWAP1 000009cd: DUP5 000009ce: ADD 000009cf: DUP4 000009d0: DUP3 000009d1: DUP1 000009d2: DUP3 000009d3: DUP5 000009d4: CALLDATACOPY 000009d5: POP 000009d6: POP 000009d7: PUSH1 0x40 000009d9: DUP1 000009da: MLOAD 000009db: PUSH1 0x20 000009dd: PUSH1 0x1f 000009df: DUP10 000009e0: CALLDATALOAD 000009e1: DUP12 000009e2: ADD 000009e3: DUP1 000009e4: CALLDATALOAD 000009e5: SWAP2 000009e6: DUP3 000009e7: ADD 000009e8: DUP4 000009e9: SWAP1 000009ea: DIV 000009eb: DUP4 000009ec: MUL 000009ed: DUP5 000009ee: ADD 000009ef: DUP4 000009f0: ADD 000009f1: SWAP1 000009f2: SWAP5 000009f3: MSTORE 000009f4: DUP1 000009f5: DUP4 000009f6: MSTORE 000009f7: SWAP8 000009f8: SWAP10 000009f9: SWAP9 000009fa: DUP2 000009fb: ADD 000009fc: SWAP8 000009fd: SWAP2 000009fe: SWAP7 000009ff: POP 00000a00: SWAP2 00000a01: DUP3 00000a02: ADD 00000a03: SWAP5 00000a04: POP 00000a05: SWAP3 00000a06: POP 00000a07: DUP3 00000a08: SWAP2 00000a09: POP 00000a0a: DUP5 00000a0b: ADD 00000a0c: DUP4 00000a0d: DUP3 00000a0e: DUP1 00000a0f: DUP3 00000a10: DUP5 00000a11: CALLDATACOPY 00000a12: POP 00000a13: POP 00000a14: PUSH1 0x40 00000a16: DUP1 00000a17: MLOAD 00000a18: PUSH1 0x20 00000a1a: PUSH1 0x1f 00000a1c: DUP10 00000a1d: CALLDATALOAD 00000a1e: DUP12 00000a1f: ADD 00000a20: DUP1 00000a21: CALLDATALOAD 00000a22: SWAP2 00000a23: DUP3 00000a24: ADD 00000a25: DUP4 00000a26: SWAP1 00000a27: DIV 00000a28: DUP4 00000a29: MUL 00000a2a: DUP5 00000a2b: ADD 00000a2c: DUP4 00000a2d: ADD 00000a2e: SWAP1 00000a2f: SWAP5 00000a30: MSTORE 00000a31: DUP1 00000a32: DUP4 00000a33: MSTORE 00000a34: SWAP8 00000a35: SWAP10 00000a36: SWAP9 00000a37: DUP2 00000a38: ADD 00000a39: SWAP8 00000a3a: SWAP2 00000a3b: SWAP7 00000a3c: POP 00000a3d: SWAP2 00000a3e: DUP3 00000a3f: ADD 00000a40: SWAP5 00000a41: POP 00000a42: SWAP3 00000a43: POP 00000a44: DUP3 00000a45: SWAP2 00000a46: POP 00000a47: DUP5 00000a48: ADD 00000a49: DUP4 00000a4a: DUP3 00000a4b: DUP1 00000a4c: DUP3 00000a4d: DUP5 00000a4e: CALLDATACOPY 00000a4f: POP 00000a50: SWAP5 00000a51: SWAP7 00000a52: POP 00000a53: PUSH2 0x1965 00000a56: SWAP6 00000a57: POP 00000a58: POP 00000a59: POP 00000a5a: POP 00000a5b: POP 00000a5c: POP 00000a5d: JUMP 00000a5e: JUMPDEST 00000a5f: PUSH1 0x40 00000a61: DUP1 00000a62: MLOAD 00000a63: SWAP2 00000a64: ISZERO 00000a65: ISZERO 00000a66: DUP3 00000a67: MSTORE 00000a68: MLOAD 00000a69: SWAP1 00000a6a: DUP2 00000a6b: SWAP1 00000a6c: SUB 00000a6d: PUSH1 0x20 00000a6f: ADD 00000a70: SWAP1 00000a71: RETURN 00000a72: JUMPDEST 00000a73: PUSH1 0x00 00000a75: PUSH2 0x0aa1 00000a78: DUP3 00000a79: PUSH1 0x40 00000a7b: PUSH1 0x40 00000a7d: MLOAD 00000a7e: SWAP1 00000a7f: DUP2 00000a80: ADD 00000a81: PUSH1 0x40 00000a83: MSTORE 00000a84: DUP1 00000a85: PUSH1 0x07 00000a87: DUP2 00000a88: MSTORE 00000a89: PUSH1 0x20 00000a8b: ADD 00000a8c: PUSH1 0xca 00000a8e: PUSH1 0x02 00000a90: EXP 00000a91: PUSH7 0x11195c1bdcda5d 00000a99: MUL 00000a9a: DUP2 00000a9b: MSTORE 00000a9c: POP 00000a9d: PUSH2 0x0f07 00000aa0: JUMP 00000aa1: JUMPDEST 00000aa2: SWAP1 00000aa3: POP 00000aa4: JUMPDEST 00000aa5: SWAP2 00000aa6: SWAP1 00000aa7: POP 00000aa8: JUMP 00000aa9: JUMPDEST 00000aaa: PUSH1 0x00 00000aac: SLOAD 00000aad: PUSH1 0x01 00000aaf: PUSH1 0xa0 00000ab1: PUSH1 0x02 00000ab3: EXP 00000ab4: SUB 00000ab5: AND 00000ab6: JUMPDEST 00000ab7: SWAP1 00000ab8: JUMP 00000ab9: JUMPDEST 00000aba: PUSH1 0x02 00000abc: DUP1 00000abd: SLOAD 00000abe: PUSH1 0x40 00000ac0: DUP1 00000ac1: MLOAD 00000ac2: PUSH1 0x20 00000ac4: PUSH1 0x01 00000ac6: DUP5 00000ac7: AND 00000ac8: ISZERO 00000ac9: PUSH2 0x0100 00000acc: MUL 00000acd: PUSH1 0x00 00000acf: NOT 00000ad0: ADD 00000ad1: SWAP1 00000ad2: SWAP4 00000ad3: AND 00000ad4: DUP5 00000ad5: SWAP1 00000ad6: DIV 00000ad7: PUSH1 0x1f 00000ad9: DUP2 00000ada: ADD 00000adb: DUP5 00000adc: SWAP1 00000add: DIV 00000ade: DUP5 00000adf: MUL 00000ae0: DUP3 00000ae1: ADD 00000ae2: DUP5 00000ae3: ADD 00000ae4: SWAP1 00000ae5: SWAP3 00000ae6: MSTORE 00000ae7: DUP2 00000ae8: DUP2 00000ae9: MSTORE 00000aea: SWAP3 00000aeb: SWAP2 00000aec: DUP4 00000aed: ADD 00000aee: DUP3 00000aef: DUP3 00000af0: DUP1 00000af1: ISZERO 00000af2: PUSH2 0x0b3c 00000af5: JUMPI 00000af6: DUP1 00000af7: PUSH1 0x1f 00000af9: LT 00000afa: PUSH2 0x0b11 00000afd: JUMPI 00000afe: PUSH2 0x0100 00000b01: DUP1 00000b02: DUP4 00000b03: SLOAD 00000b04: DIV 00000b05: MUL 00000b06: DUP4 00000b07: MSTORE 00000b08: SWAP2 00000b09: PUSH1 0x20 00000b0b: ADD 00000b0c: SWAP2 00000b0d: PUSH2 0x0b3c 00000b10: JUMP 00000b11: JUMPDEST 00000b12: DUP3 00000b13: ADD 00000b14: SWAP2 00000b15: SWAP1 00000b16: PUSH1 0x00 00000b18: MSTORE 00000b19: PUSH1 0x20 00000b1b: PUSH1 0x00 00000b1d: KECCAK256 00000b1e: SWAP1 00000b1f: JUMPDEST 00000b20: DUP2 00000b21: SLOAD 00000b22: DUP2 00000b23: MSTORE 00000b24: SWAP1 00000b25: PUSH1 0x01 00000b27: ADD 00000b28: SWAP1 00000b29: PUSH1 0x20 00000b2b: ADD 00000b2c: DUP1 00000b2d: DUP4 00000b2e: GT 00000b2f: PUSH2 0x0b1f 00000b32: JUMPI 00000b33: DUP3 00000b34: SWAP1 00000b35: SUB 00000b36: PUSH1 0x1f 00000b38: AND 00000b39: DUP3 00000b3a: ADD 00000b3b: SWAP2 00000b3c: JUMPDEST 00000b3d: POP 00000b3e: POP 00000b3f: POP 00000b40: POP 00000b41: POP 00000b42: DUP2 00000b43: JUMP 00000b44: JUMPDEST 00000b45: PUSH1 0x01 00000b47: PUSH1 0xa0 00000b49: PUSH1 0x02 00000b4b: EXP 00000b4c: SUB 00000b4d: CALLER 00000b4e: AND 00000b4f: PUSH1 0x00 00000b51: SWAP1 00000b52: DUP2 00000b53: MSTORE 00000b54: PUSH1 0x05 00000b56: PUSH1 0x20 00000b58: MSTORE 00000b59: PUSH1 0x40 00000b5b: DUP2 00000b5c: KECCAK256 00000b5d: SLOAD 00000b5e: PUSH1 0xff 00000b60: AND 00000b61: ISZERO 00000b62: ISZERO 00000b63: PUSH2 0x0ba2 00000b66: JUMPI 00000b67: CALLER 00000b68: PUSH1 0x01 00000b6a: PUSH1 0xa0 00000b6c: PUSH1 0x02 00000b6e: EXP 00000b6f: SUB 00000b70: AND 00000b71: PUSH1 0x00 00000b73: SWAP1 00000b74: DUP2 00000b75: MSTORE 00000b76: PUSH1 0x05 00000b78: PUSH1 0x20 00000b7a: SWAP1 00000b7b: DUP2 00000b7c: MSTORE 00000b7d: PUSH1 0x40 00000b7f: DUP1 00000b80: DUP4 00000b81: KECCAK256 00000b82: DUP1 00000b83: SLOAD 00000b84: PUSH1 0x01 00000b86: PUSH1 0xff 00000b88: NOT 00000b89: SWAP2 00000b8a: DUP3 00000b8b: AND 00000b8c: DUP2 00000b8d: OR 00000b8e: SWAP1 00000b8f: SWAP3 00000b90: SSTORE 00000b91: PUSH1 0x04 00000b93: SWAP1 00000b94: SWAP4 00000b95: MSTORE 00000b96: SWAP3 00000b97: KECCAK256 00000b98: DUP1 00000b99: SLOAD 00000b9a: SWAP1 00000b9b: SWAP2 00000b9c: AND 00000b9d: SWAP1 00000b9e: SWAP2 00000b9f: OR 00000ba0: SWAP1 00000ba1: SSTORE 00000ba2: JUMPDEST 00000ba3: PUSH1 0x00 00000ba5: DUP1 00000ba6: SLOAD 00000ba7: PUSH1 0x01 00000ba9: SLOAD 00000baa: PUSH1 0x40 00000bac: DUP1 00000bad: MLOAD 00000bae: PUSH1 0x20 00000bb0: SWAP1 00000bb1: DUP2 00000bb2: ADD 00000bb3: DUP6 00000bb4: SWAP1 00000bb5: MSTORE 00000bb6: DUP2 00000bb7: MLOAD 00000bb8: PUSH1 0xe0 00000bba: PUSH1 0x02 00000bbc: EXP 00000bbd: PUSH4 0x14712e2f 00000bc2: MUL 00000bc3: DUP2 00000bc4: MSTORE 00000bc5: PUSH1 0x01 00000bc7: PUSH1 0xa0 00000bc9: PUSH1 0x02 00000bcb: EXP 00000bcc: SUB 00000bcd: DUP10 00000bce: DUP2 00000bcf: AND 00000bd0: PUSH1 0x04 00000bd2: DUP4 00000bd3: ADD 00000bd4: MSTORE 00000bd5: PUSH1 0x24 00000bd7: DUP3 00000bd8: ADD 00000bd9: DUP10 00000bda: SWAP1 00000bdb: MSTORE 00000bdc: PUSH1 0x44 00000bde: DUP3 00000bdf: ADD 00000be0: SWAP5 00000be1: SWAP1 00000be2: SWAP5 00000be3: MSTORE 00000be4: CALLER 00000be5: DUP5 00000be6: AND 00000be7: PUSH1 0x64 00000be9: DUP3 00000bea: ADD 00000beb: MSTORE 00000bec: SWAP2 00000bed: MLOAD 00000bee: SWAP3 00000bef: SWAP1 00000bf0: SWAP4 00000bf1: AND 00000bf2: SWAP4 00000bf3: PUSH4 0x14712e2f 00000bf8: SWAP4 00000bf9: PUSH1 0x84 00000bfb: DUP1 00000bfc: DUP5 00000bfd: ADD 00000bfe: SWAP5 00000bff: SWAP2 00000c00: SWAP4 00000c01: SWAP2 00000c02: SWAP3 00000c03: SWAP2 00000c04: DUP4 00000c05: SWAP1 00000c06: SUB 00000c07: ADD 00000c08: SWAP1 00000c09: DUP3 00000c0a: SWAP1 00000c0b: DUP8 00000c0c: DUP1 00000c0d: EXTCODESIZE 00000c0e: ISZERO 00000c0f: ISZERO 00000c10: PUSH2 0x0c15 00000c13: JUMPI 00000c14: INVALID 00000c15: JUMPDEST 00000c16: PUSH2 0x02c6 00000c19: GAS 00000c1a: SUB 00000c1b: CALL 00000c1c: ISZERO 00000c1d: ISZERO 00000c1e: PUSH2 0x0c23 00000c21: JUMPI 00000c22: INVALID 00000c23: JUMPDEST 00000c24: POP 00000c25: POP 00000c26: PUSH1 0x40 00000c28: MLOAD 00000c29: MLOAD 00000c2a: SWAP2 00000c2b: POP 00000c2c: POP 00000c2d: JUMPDEST 00000c2e: JUMPDEST 00000c2f: SWAP3 00000c30: SWAP2 00000c31: POP 00000c32: POP 00000c33: JUMP 00000c34: JUMPDEST 00000c35: PUSH1 0x00 00000c37: DUP1 00000c38: SLOAD 00000c39: PUSH1 0x01 00000c3b: SLOAD 00000c3c: PUSH1 0x40 00000c3e: DUP1 00000c3f: MLOAD 00000c40: PUSH1 0x20 00000c42: SWAP1 00000c43: DUP2 00000c44: ADD 00000c45: DUP6 00000c46: SWAP1 00000c47: MSTORE 00000c48: DUP2 00000c49: MLOAD 00000c4a: PUSH1 0xe0 00000c4c: PUSH1 0x02 00000c4e: EXP 00000c4f: PUSH4 0xb524abcf 00000c54: MUL 00000c55: DUP2 00000c56: MSTORE 00000c57: PUSH1 0x04 00000c59: DUP2 00000c5a: ADD 00000c5b: SWAP4 00000c5c: SWAP1 00000c5d: SWAP4 00000c5e: MSTORE 00000c5f: SWAP1 00000c60: MLOAD 00000c61: PUSH1 0x01 00000c63: PUSH1 0xa0 00000c65: PUSH1 0x02 00000c67: EXP 00000c68: SUB 00000c69: SWAP1 00000c6a: SWAP4 00000c6b: AND 00000c6c: SWAP3 00000c6d: PUSH4 0xb524abcf 00000c72: SWAP3 00000c73: PUSH1 0x24 00000c75: DUP1 00000c76: DUP3 00000c77: ADD 00000c78: SWAP4 00000c79: SWAP3 00000c7a: SWAP2 00000c7b: DUP3 00000c7c: SWAP1 00000c7d: SUB 00000c7e: ADD 00000c7f: DUP2 00000c80: DUP8 00000c81: DUP8 00000c82: DUP1 00000c83: EXTCODESIZE 00000c84: ISZERO 00000c85: ISZERO 00000c86: PUSH2 0x0c8b 00000c89: JUMPI 00000c8a: INVALID 00000c8b: JUMPDEST 00000c8c: PUSH2 0x02c6 00000c8f: GAS 00000c90: SUB 00000c91: CALL 00000c92: ISZERO 00000c93: ISZERO 00000c94: PUSH2 0x0c99 00000c97: JUMPI 00000c98: INVALID 00000c99: JUMPDEST 00000c9a: POP 00000c9b: POP 00000c9c: PUSH1 0x40 00000c9e: MLOAD 00000c9f: MLOAD 00000ca0: SWAP2 00000ca1: POP 00000ca2: POP 00000ca3: JUMPDEST 00000ca4: SWAP1 00000ca5: JUMP 00000ca6: JUMPDEST 00000ca7: PUSH1 0x00 00000ca9: DUP1 00000caa: SLOAD 00000cab: PUSH1 0x40 00000cad: DUP1 00000cae: MLOAD 00000caf: PUSH1 0x20 00000cb1: SWAP1 00000cb2: DUP2 00000cb3: ADD 00000cb4: DUP5 00000cb5: SWAP1 00000cb6: MSTORE 00000cb7: DUP2 00000cb8: MLOAD 00000cb9: PUSH1 0xe0 00000cbb: PUSH1 0x02 00000cbd: EXP 00000cbe: PUSH4 0xa0f15b87 00000cc3: MUL 00000cc4: DUP2 00000cc5: MSTORE 00000cc6: SWAP2 00000cc7: MLOAD 00000cc8: PUSH2 0x0aa1 00000ccb: SWAP4 00000ccc: PUSH1 0x01 00000cce: PUSH1 0xa0 00000cd0: PUSH1 0x02 00000cd2: EXP 00000cd3: SUB 00000cd4: AND 00000cd5: SWAP3 00000cd6: PUSH4 0xa0f15b87 00000cdb: SWAP3 00000cdc: PUSH1 0x04 00000cde: DUP1 00000cdf: DUP4 00000ce0: ADD 00000ce1: SWAP4 00000ce2: SWAP2 00000ce3: SWAP3 00000ce4: DUP3 00000ce5: SWAP1 00000ce6: SUB 00000ce7: ADD 00000ce8: DUP2 00000ce9: DUP9 00000cea: DUP8 00000ceb: DUP1 00000cec: EXTCODESIZE 00000ced: ISZERO 00000cee: ISZERO 00000cef: PUSH2 0x0cf4 00000cf2: JUMPI 00000cf3: INVALID 00000cf4: JUMPDEST 00000cf5: PUSH2 0x02c6 00000cf8: GAS 00000cf9: SUB 00000cfa: CALL 00000cfb: ISZERO 00000cfc: ISZERO 00000cfd: PUSH2 0x0d02 00000d00: JUMPI 00000d01: INVALID 00000d02: JUMPDEST 00000d03: POP 00000d04: POP 00000d05: PUSH1 0x40 00000d07: MLOAD 00000d08: MLOAD 00000d09: PUSH1 0x01 00000d0b: PUSH1 0xa0 00000d0d: PUSH1 0x02 00000d0f: EXP 00000d10: SUB 00000d11: AND 00000d12: SWAP1 00000d13: POP 00000d14: PUSH4 0x95829738 00000d19: PUSH2 0x0d21 00000d1c: DUP6 00000d1d: PUSH2 0x1c5f 00000d20: JUMP 00000d21: JUMPDEST 00000d22: PUSH1 0x00 00000d24: PUSH1 0x40 00000d26: MLOAD 00000d27: PUSH1 0x20 00000d29: ADD 00000d2a: MSTORE 00000d2b: PUSH1 0x40 00000d2d: MLOAD 00000d2e: DUP3 00000d2f: PUSH4 0xffffffff 00000d34: AND 00000d35: PUSH1 0xe0 00000d37: PUSH1 0x02 00000d39: EXP 00000d3a: MUL 00000d3b: DUP2 00000d3c: MSTORE 00000d3d: PUSH1 0x04 00000d3f: ADD 00000d40: DUP1 00000d41: DUP3 00000d42: PUSH1 0x00 00000d44: NOT 00000d45: AND 00000d46: PUSH1 0x00 00000d48: NOT 00000d49: AND 00000d4a: DUP2 00000d4b: MSTORE 00000d4c: PUSH1 0x20 00000d4e: ADD 00000d4f: SWAP2 00000d50: POP 00000d51: POP 00000d52: PUSH1 0x20 00000d54: PUSH1 0x40 00000d56: MLOAD 00000d57: DUP1 00000d58: DUP4 00000d59: SUB 00000d5a: DUP2 00000d5b: PUSH1 0x00 00000d5d: DUP8 00000d5e: DUP1 00000d5f: EXTCODESIZE 00000d60: ISZERO 00000d61: ISZERO 00000d62: PUSH2 0x0d67 00000d65: JUMPI 00000d66: INVALID 00000d67: JUMPDEST 00000d68: PUSH2 0x02c6 00000d6b: GAS 00000d6c: SUB 00000d6d: CALL 00000d6e: ISZERO 00000d6f: ISZERO 00000d70: PUSH2 0x0d75 00000d73: JUMPI 00000d74: INVALID 00000d75: JUMPDEST 00000d76: POP 00000d77: POP 00000d78: PUSH1 0x40 00000d7a: MLOAD 00000d7b: MLOAD 00000d7c: SWAP1 00000d7d: POP 00000d7e: PUSH2 0x17aa 00000d81: JUMP 00000d82: JUMPDEST 00000d83: SWAP1 00000d84: POP 00000d85: JUMPDEST 00000d86: SWAP2 00000d87: SWAP1 00000d88: POP 00000d89: JUMP 00000d8a: JUMPDEST 00000d8b: PUSH1 0x00 00000d8d: SLOAD 00000d8e: CALLER 00000d8f: PUSH1 0x01 00000d91: PUSH1 0xa0 00000d93: PUSH1 0x02 00000d95: EXP 00000d96: SUB 00000d97: SWAP1 00000d98: DUP2 00000d99: AND 00000d9a: SWAP2 00000d9b: AND 00000d9c: EQ 00000d9d: ISZERO 00000d9e: PUSH2 0x0ded 00000da1: JUMPI 00000da2: DUP2 00000da3: PUSH1 0x01 00000da5: PUSH1 0xa0 00000da7: PUSH1 0x02 00000da9: EXP 00000daa: SUB 00000dab: AND 00000dac: DUP4 00000dad: PUSH1 0x01 00000daf: PUSH1 0xa0 00000db1: PUSH1 0x02 00000db3: EXP 00000db4: SUB 00000db5: AND 00000db6: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000dd7: DUP4 00000dd8: PUSH1 0x40 00000dda: MLOAD 00000ddb: DUP1 00000ddc: DUP3 00000ddd: DUP2 00000dde: MSTORE 00000ddf: PUSH1 0x20 00000de1: ADD 00000de2: SWAP2 00000de3: POP 00000de4: POP 00000de5: PUSH1 0x40 00000de7: MLOAD 00000de8: DUP1 00000de9: SWAP2 00000dea: SUB 00000deb: SWAP1 00000dec: LOG3 00000ded: JUMPDEST 00000dee: JUMPDEST 00000def: JUMPDEST 00000df0: POP 00000df1: POP 00000df2: POP 00000df3: JUMP 00000df4: JUMPDEST 00000df5: PUSH1 0x00 00000df7: PUSH2 0x0e12 00000dfa: DUP5 00000dfb: DUP5 00000dfc: DUP5 00000dfd: PUSH1 0x20 00000dff: PUSH1 0x40 00000e01: MLOAD 00000e02: SWAP1 00000e03: DUP2 00000e04: ADD 00000e05: PUSH1 0x40 00000e07: MSTORE 00000e08: DUP1 00000e09: PUSH1 0x00 00000e0b: DUP2 00000e0c: MSTORE 00000e0d: POP 00000e0e: PUSH2 0x114c 00000e11: JUMP 00000e12: JUMPDEST 00000e13: SWAP1 00000e14: POP 00000e15: JUMPDEST 00000e16: SWAP4 00000e17: SWAP3 00000e18: POP 00000e19: POP 00000e1a: POP 00000e1b: JUMP 00000e1c: JUMPDEST 00000e1d: PUSH1 0x00 00000e1f: SLOAD 00000e20: CALLER 00000e21: PUSH1 0x01 00000e23: PUSH1 0xa0 00000e25: PUSH1 0x02 00000e27: EXP 00000e28: SUB 00000e29: SWAP1 00000e2a: DUP2 00000e2b: AND 00000e2c: SWAP2 00000e2d: AND 00000e2e: EQ 00000e2f: ISZERO 00000e30: PUSH2 0x0ded 00000e33: JUMPI 00000e34: DUP2 00000e35: PUSH1 0x01 00000e37: PUSH1 0xa0 00000e39: PUSH1 0x02 00000e3b: EXP 00000e3c: SUB 00000e3d: AND 00000e3e: DUP4 00000e3f: PUSH1 0x01 00000e41: PUSH1 0xa0 00000e43: PUSH1 0x02 00000e45: EXP 00000e46: SUB 00000e47: AND 00000e48: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000e69: DUP4 00000e6a: PUSH1 0x40 00000e6c: MLOAD 00000e6d: DUP1 00000e6e: DUP3 00000e6f: DUP2 00000e70: MSTORE 00000e71: PUSH1 0x20 00000e73: ADD 00000e74: SWAP2 00000e75: POP 00000e76: POP 00000e77: PUSH1 0x40 00000e79: MLOAD 00000e7a: DUP1 00000e7b: SWAP2 00000e7c: SUB 00000e7d: SWAP1 00000e7e: LOG3 00000e7f: JUMPDEST 00000e80: JUMPDEST 00000e81: JUMPDEST 00000e82: POP 00000e83: POP 00000e84: POP 00000e85: JUMP 00000e86: JUMPDEST 00000e87: PUSH1 0x00 00000e89: DUP1 00000e8a: SLOAD 00000e8b: PUSH1 0x01 00000e8d: SLOAD 00000e8e: PUSH1 0x40 00000e90: DUP1 00000e91: MLOAD 00000e92: PUSH1 0x20 00000e94: SWAP1 00000e95: DUP2 00000e96: ADD 00000e97: DUP6 00000e98: SWAP1 00000e99: MSTORE 00000e9a: DUP2 00000e9b: MLOAD 00000e9c: PUSH1 0xe4 00000e9e: PUSH1 0x02 00000ea0: EXP 00000ea1: PUSH4 0x0dc86e6f 00000ea6: MUL 00000ea7: DUP2 00000ea8: MSTORE 00000ea9: PUSH1 0x04 00000eab: DUP2 00000eac: ADD 00000ead: SWAP4 00000eae: SWAP1 00000eaf: SWAP4 00000eb0: MSTORE 00000eb1: SWAP1 00000eb2: MLOAD 00000eb3: PUSH1 0x01 00000eb5: PUSH1 0xa0 00000eb7: PUSH1 0x02 00000eb9: EXP 00000eba: SUB 00000ebb: SWAP1 00000ebc: SWAP4 00000ebd: AND 00000ebe: SWAP3 00000ebf: PUSH4 0xdc86e6f0 00000ec4: SWAP3 00000ec5: PUSH1 0x24 00000ec7: DUP1 00000ec8: DUP3 00000ec9: ADD 00000eca: SWAP4 00000ecb: SWAP3 00000ecc: SWAP2 00000ecd: DUP3 00000ece: SWAP1 00000ecf: SUB 00000ed0: ADD 00000ed1: DUP2 00000ed2: DUP8 00000ed3: DUP8 00000ed4: DUP1 00000ed5: EXTCODESIZE 00000ed6: ISZERO 00000ed7: ISZERO 00000ed8: PUSH2 0x0c8b 00000edb: JUMPI 00000edc: INVALID 00000edd: JUMPDEST 00000ede: PUSH2 0x02c6 00000ee1: GAS 00000ee2: SUB 00000ee3: CALL 00000ee4: ISZERO 00000ee5: ISZERO 00000ee6: PUSH2 0x0c99 00000ee9: JUMPI 00000eea: INVALID 00000eeb: JUMPDEST 00000eec: POP 00000eed: POP 00000eee: PUSH1 0x40 00000ef0: MLOAD 00000ef1: MLOAD 00000ef2: SWAP2 00000ef3: POP 00000ef4: POP 00000ef5: JUMPDEST 00000ef6: SWAP1 00000ef7: JUMP 00000ef8: JUMPDEST 00000ef9: PUSH1 0x00 00000efb: SLOAD 00000efc: PUSH1 0x01 00000efe: PUSH1 0xa0 00000f00: PUSH1 0x02 00000f02: EXP 00000f03: SUB 00000f04: AND 00000f05: DUP2 00000f06: JUMP 00000f07: JUMPDEST 00000f08: PUSH1 0x01 00000f0a: PUSH1 0xa0 00000f0c: PUSH1 0x02 00000f0e: EXP 00000f0f: SUB 00000f10: CALLER 00000f11: AND 00000f12: PUSH1 0x00 00000f14: SWAP1 00000f15: DUP2 00000f16: MSTORE 00000f17: PUSH1 0x05 00000f19: PUSH1 0x20 00000f1b: MSTORE 00000f1c: PUSH1 0x40 00000f1e: DUP2 00000f1f: KECCAK256 00000f20: SLOAD 00000f21: PUSH1 0xff 00000f23: AND 00000f24: ISZERO 00000f25: ISZERO 00000f26: PUSH2 0x0f65 00000f29: JUMPI 00000f2a: CALLER 00000f2b: PUSH1 0x01 00000f2d: PUSH1 0xa0 00000f2f: PUSH1 0x02 00000f31: EXP 00000f32: SUB 00000f33: AND 00000f34: PUSH1 0x00 00000f36: SWAP1 00000f37: DUP2 00000f38: MSTORE 00000f39: PUSH1 0x05 00000f3b: PUSH1 0x20 00000f3d: SWAP1 00000f3e: DUP2 00000f3f: MSTORE 00000f40: PUSH1 0x40 00000f42: DUP1 00000f43: DUP4 00000f44: KECCAK256 00000f45: DUP1 00000f46: SLOAD 00000f47: PUSH1 0x01 00000f49: PUSH1 0xff 00000f4b: NOT 00000f4c: SWAP2 00000f4d: DUP3 00000f4e: AND 00000f4f: DUP2 00000f50: OR 00000f51: SWAP1 00000f52: SWAP3 00000f53: SSTORE 00000f54: PUSH1 0x04 00000f56: SWAP1 00000f57: SWAP4 00000f58: MSTORE 00000f59: SWAP3 00000f5a: KECCAK256 00000f5b: DUP1 00000f5c: SLOAD 00000f5d: SWAP1 00000f5e: SWAP2 00000f5f: AND 00000f60: SWAP1 00000f61: SWAP2 00000f62: OR 00000f63: SWAP1 00000f64: SSTORE 00000f65: JUMPDEST 00000f66: CALLVALUE 00000f67: ISZERO 00000f68: ISZERO 00000f69: PUSH2 0x0f74 00000f6c: JUMPI 00000f6d: POP 00000f6e: PUSH1 0x00 00000f70: PUSH2 0x0c2d 00000f73: JUMP 00000f74: JUMPDEST 00000f75: ADDRESS 00000f76: PUSH1 0x01 00000f78: PUSH1 0xa0 00000f7a: PUSH1 0x02 00000f7c: EXP 00000f7d: SUB 00000f7e: AND 00000f7f: DUP4 00000f80: PUSH1 0x01 00000f82: PUSH1 0xa0 00000f84: PUSH1 0x02 00000f86: EXP 00000f87: SUB 00000f88: AND 00000f89: EQ 00000f8a: ISZERO 00000f8b: PUSH2 0x0f9d 00000f8e: JUMPI 00000f8f: PUSH2 0x0f96 00000f92: PUSH2 0x1d04 00000f95: JUMP 00000f96: JUMPDEST 00000f97: SWAP1 00000f98: POP 00000f99: PUSH2 0x0c2d 00000f9c: JUMP 00000f9d: JUMPDEST 00000f9e: CALLVALUE 00000f9f: PUSH2 0x0fa7 00000fa2: ADDRESS 00000fa3: PUSH2 0x1303 00000fa6: JUMP 00000fa7: JUMPDEST 00000fa8: LT 00000fa9: ISZERO 00000faa: PUSH2 0x102f 00000fad: JUMPI 00000fae: PUSH1 0x00 00000fb0: SLOAD 00000fb1: PUSH1 0x01 00000fb3: SLOAD 00000fb4: PUSH1 0x01 00000fb6: PUSH1 0xa0 00000fb8: PUSH1 0x02 00000fba: EXP 00000fbb: SUB 00000fbc: SWAP1 00000fbd: SWAP2 00000fbe: AND 00000fbf: SWAP1 00000fc0: PUSH4 0xe0873c06 00000fc5: SWAP1 00000fc6: PUSH2 0x0fce 00000fc9: ADDRESS 00000fca: PUSH2 0x1303 00000fcd: JUMP 00000fce: JUMPDEST 00000fcf: CALLVALUE 00000fd0: SUB 00000fd1: PUSH1 0x00 00000fd3: PUSH1 0x40 00000fd5: MLOAD 00000fd6: PUSH1 0x20 00000fd8: ADD 00000fd9: MSTORE 00000fda: PUSH1 0x40 00000fdc: MLOAD 00000fdd: DUP4 00000fde: PUSH4 0xffffffff 00000fe3: AND 00000fe4: PUSH1 0xe0 00000fe6: PUSH1 0x02 00000fe8: EXP 00000fe9: MUL 00000fea: DUP2 00000feb: MSTORE 00000fec: PUSH1 0x04 00000fee: ADD 00000fef: DUP1 00000ff0: DUP4 00000ff1: PUSH1 0x00 00000ff3: NOT 00000ff4: AND 00000ff5: PUSH1 0x00 00000ff7: NOT 00000ff8: AND 00000ff9: DUP2 00000ffa: MSTORE 00000ffb: PUSH1 0x20 00000ffd: ADD 00000ffe: DUP3 00000fff: DUP2 00001000: MSTORE 00001001: PUSH1 0x20 00001003: ADD 00001004: SWAP3 00001005: POP 00001006: POP 00001007: POP 00001008: PUSH1 0x20 0000100a: PUSH1 0x40 0000100c: MLOAD 0000100d: DUP1 0000100e: DUP4 0000100f: SUB 00001010: DUP2 00001011: PUSH1 0x00 00001013: DUP8 00001014: DUP1 00001015: EXTCODESIZE 00001016: ISZERO 00001017: ISZERO 00001018: PUSH2 0x101d 0000101b: JUMPI 0000101c: INVALID 0000101d: JUMPDEST 0000101e: PUSH2 0x02c6 00001021: GAS 00001022: SUB 00001023: CALL 00001024: ISZERO 00001025: ISZERO 00001026: PUSH2 0x102b 00001029: JUMPI 0000102a: INVALID 0000102b: JUMPDEST 0000102c: POP 0000102d: POP 0000102e: POP 0000102f: JUMPDEST 00001030: PUSH1 0x00 00001032: DUP1 00001033: SLOAD 00001034: PUSH1 0x01 00001036: SLOAD 00001037: PUSH1 0x40 00001039: DUP1 0000103a: MLOAD 0000103b: PUSH1 0x20 0000103d: SWAP1 0000103e: DUP2 0000103f: ADD 00001040: SWAP5 00001041: SWAP1 00001042: SWAP5 00001043: MSTORE 00001044: MLOAD 00001045: PUSH1 0xe1 00001047: PUSH1 0x02 00001049: EXP 0000104a: PUSH4 0x0b0ffb31 0000104f: MUL 00001050: DUP2 00001051: MSTORE 00001052: ADDRESS 00001053: PUSH1 0x01 00001055: PUSH1 0xa0 00001057: PUSH1 0x02 00001059: EXP 0000105a: SUB 0000105b: DUP2 0000105c: DUP2 0000105d: AND 0000105e: PUSH1 0x04 00001060: DUP5 00001061: ADD 00001062: DUP2 00001063: DUP2 00001064: MSTORE 00001065: DUP11 00001066: DUP4 00001067: AND 00001068: PUSH1 0x24 0000106a: DUP7 0000106b: ADD 0000106c: MSTORE 0000106d: CALLVALUE 0000106e: PUSH1 0x44 00001070: DUP7 00001071: ADD 00001072: DUP2 00001073: SWAP1 00001074: MSTORE 00001075: PUSH1 0x64 00001077: DUP7 00001078: ADD 00001079: DUP8 0000107a: SWAP1 0000107b: MSTORE 0000107c: PUSH1 0xa4 0000107e: DUP7 0000107f: ADD 00001080: SWAP3 00001081: SWAP1 00001082: SWAP3 00001083: MSTORE 00001084: PUSH1 0xc0 00001086: PUSH1 0x84 00001088: DUP7 00001089: ADD 0000108a: SWAP1 0000108b: DUP2 0000108c: MSTORE 0000108d: DUP11 0000108e: MLOAD 0000108f: PUSH1 0xc4 00001091: DUP8 00001092: ADD 00001093: MSTORE 00001094: DUP11 00001095: MLOAD 00001096: SWAP4 00001097: SWAP1 00001098: SWAP8 00001099: AND 0000109a: SWAP8 0000109b: PUSH4 0x161ff662 000010a0: SWAP8 000010a1: SWAP5 000010a2: SWAP7 000010a3: DUP13 000010a4: SWAP7 000010a5: SWAP4 000010a6: SWAP6 000010a7: SWAP1 000010a8: SWAP5 000010a9: DUP13 000010aa: SWAP5 000010ab: DUP10 000010ac: SWAP5 000010ad: SWAP4 000010ae: PUSH1 0xe4 000010b0: SWAP1 000010b1: SWAP2 000010b2: ADD 000010b3: SWAP2 000010b4: SWAP1 000010b5: DUP7 000010b6: ADD 000010b7: SWAP1 000010b8: DUP1 000010b9: DUP4 000010ba: DUP4 000010bb: DUP3 000010bc: ISZERO 000010bd: PUSH2 0x10e1 000010c0: JUMPI 000010c1: JUMPDEST 000010c2: DUP1 000010c3: MLOAD 000010c4: DUP3 000010c5: MSTORE 000010c6: PUSH1 0x20 000010c8: DUP4 000010c9: GT 000010ca: ISZERO 000010cb: PUSH2 0x10e1 000010ce: JUMPI 000010cf: PUSH1 0x1f 000010d1: NOT 000010d2: SWAP1 000010d3: SWAP3 000010d4: ADD 000010d5: SWAP2 000010d6: PUSH1 0x20 000010d8: SWAP2 000010d9: DUP3 000010da: ADD 000010db: SWAP2 000010dc: ADD 000010dd: PUSH2 0x10c1 000010e0: JUMP 000010e1: JUMPDEST 000010e2: POP 000010e3: POP 000010e4: POP 000010e5: SWAP1 000010e6: POP 000010e7: SWAP1 000010e8: DUP2 000010e9: ADD 000010ea: SWAP1 000010eb: PUSH1 0x1f 000010ed: AND 000010ee: DUP1 000010ef: ISZERO 000010f0: PUSH2 0x110d 000010f3: JUMPI 000010f4: DUP1 000010f5: DUP3 000010f6: SUB 000010f7: DUP1 000010f8: MLOAD 000010f9: PUSH1 0x01 000010fb: DUP4 000010fc: PUSH1 0x20 000010fe: SUB 000010ff: PUSH2 0x0100 00001102: EXP 00001103: SUB 00001104: NOT 00001105: AND 00001106: DUP2 00001107: MSTORE 00001108: PUSH1 0x20 0000110a: ADD 0000110b: SWAP2 0000110c: POP 0000110d: JUMPDEST 0000110e: POP 0000110f: SWAP8 00001110: POP 00001111: POP 00001112: POP 00001113: POP 00001114: POP 00001115: POP 00001116: POP 00001117: POP 00001118: PUSH1 0x20 0000111a: PUSH1 0x40 0000111c: MLOAD 0000111d: DUP1 0000111e: DUP4 0000111f: SUB 00001120: DUP2 00001121: PUSH1 0x00 00001123: DUP8 00001124: DUP1 00001125: EXTCODESIZE 00001126: ISZERO 00001127: ISZERO 00001128: PUSH2 0x0c15 0000112b: JUMPI 0000112c: INVALID 0000112d: JUMPDEST 0000112e: PUSH2 0x02c6 00001131: GAS 00001132: SUB 00001133: CALL 00001134: ISZERO 00001135: ISZERO 00001136: PUSH2 0x0c23 00001139: JUMPI 0000113a: INVALID 0000113b: JUMPDEST 0000113c: POP 0000113d: POP 0000113e: PUSH1 0x40 00001140: MLOAD 00001141: MLOAD 00001142: SWAP2 00001143: POP 00001144: POP 00001145: JUMPDEST 00001146: JUMPDEST 00001147: SWAP3 00001148: SWAP2 00001149: POP 0000114a: POP 0000114b: JUMP 0000114c: JUMPDEST 0000114d: PUSH1 0x01 0000114f: PUSH1 0xa0 00001151: PUSH1 0x02 00001153: EXP 00001154: SUB 00001155: CALLER 00001156: AND 00001157: PUSH1 0x00 00001159: SWAP1 0000115a: DUP2 0000115b: MSTORE 0000115c: PUSH1 0x05 0000115e: PUSH1 0x20 00001160: MSTORE 00001161: PUSH1 0x40 00001163: DUP2 00001164: KECCAK256 00001165: SLOAD 00001166: PUSH1 0xff 00001168: AND 00001169: ISZERO 0000116a: ISZERO 0000116b: PUSH2 0x11aa 0000116e: JUMPI 0000116f: CALLER 00001170: PUSH1 0x01 00001172: PUSH1 0xa0 00001174: PUSH1 0x02 00001176: EXP 00001177: SUB 00001178: AND 00001179: PUSH1 0x00 0000117b: SWAP1 0000117c: DUP2 0000117d: MSTORE 0000117e: PUSH1 0x05 00001180: PUSH1 0x20 00001182: SWAP1 00001183: DUP2 00001184: MSTORE 00001185: PUSH1 0x40 00001187: DUP1 00001188: DUP4 00001189: KECCAK256 0000118a: DUP1 0000118b: SLOAD 0000118c: PUSH1 0x01 0000118e: PUSH1 0xff 00001190: NOT 00001191: SWAP2 00001192: DUP3 00001193: AND 00001194: DUP2 00001195: OR 00001196: SWAP1 00001197: SWAP3 00001198: SSTORE 00001199: PUSH1 0x04 0000119b: SWAP1 0000119c: SWAP4 0000119d: MSTORE 0000119e: SWAP3 0000119f: KECCAK256 000011a0: DUP1 000011a1: SLOAD 000011a2: SWAP1 000011a3: SWAP2 000011a4: AND 000011a5: SWAP1 000011a6: SWAP2 000011a7: OR 000011a8: SWAP1 000011a9: SSTORE 000011aa: JUMPDEST 000011ab: PUSH2 0x11b3 000011ae: DUP5 000011af: PUSH2 0x17aa 000011b2: JUMP 000011b3: JUMPDEST 000011b4: ISZERO 000011b5: PUSH2 0x12d3 000011b8: JUMPI 000011b9: PUSH1 0x00 000011bb: DUP1 000011bc: SLOAD 000011bd: PUSH1 0x01 000011bf: SLOAD 000011c0: PUSH1 0x40 000011c2: DUP1 000011c3: MLOAD 000011c4: PUSH1 0x20 000011c6: SWAP1 000011c7: DUP2 000011c8: ADD 000011c9: SWAP5 000011ca: SWAP1 000011cb: SWAP5 000011cc: MSTORE 000011cd: MLOAD 000011ce: PUSH1 0xe1 000011d0: PUSH1 0x02 000011d2: EXP 000011d3: PUSH4 0x0b0ffb31 000011d8: MUL 000011d9: DUP2 000011da: MSTORE 000011db: PUSH1 0x01 000011dd: PUSH1 0xa0 000011df: PUSH1 0x02 000011e1: EXP 000011e2: SUB 000011e3: DUP10 000011e4: DUP2 000011e5: AND 000011e6: PUSH1 0x04 000011e8: DUP4 000011e9: ADD 000011ea: SWAP1 000011eb: DUP2 000011ec: MSTORE 000011ed: DUP10 000011ee: DUP3 000011ef: AND 000011f0: PUSH1 0x24 000011f2: DUP5 000011f3: ADD 000011f4: MSTORE 000011f5: PUSH1 0x44 000011f7: DUP4 000011f8: ADD 000011f9: DUP10 000011fa: SWAP1 000011fb: MSTORE 000011fc: PUSH1 0x64 000011fe: DUP4 000011ff: ADD 00001200: DUP5 00001201: SWAP1 00001202: MSTORE 00001203: CALLER 00001204: DUP1 00001205: DUP4 00001206: AND 00001207: PUSH1 0xa4 00001209: DUP6 0000120a: ADD 0000120b: MSTORE 0000120c: PUSH1 0xc0 0000120e: PUSH1 0x84 00001210: DUP6 00001211: ADD 00001212: SWAP1 00001213: DUP2 00001214: MSTORE 00001215: DUP10 00001216: MLOAD 00001217: PUSH1 0xc4 00001219: DUP7 0000121a: ADD 0000121b: MSTORE 0000121c: DUP10 0000121d: MLOAD 0000121e: SWAP4 0000121f: SWAP1 00001220: SWAP7 00001221: AND 00001222: SWAP7 00001223: PUSH4 0x161ff662 00001228: SWAP7 00001229: DUP14 0000122a: SWAP7 0000122b: DUP14 0000122c: SWAP7 0000122d: DUP14 0000122e: SWAP7 0000122f: SWAP2 00001230: SWAP6 00001231: DUP14 00001232: SWAP6 00001233: SWAP5 00001234: SWAP1 00001235: SWAP4 00001236: SWAP3 00001237: PUSH1 0xe4 00001239: SWAP1 0000123a: SWAP3 0000123b: ADD 0000123c: SWAP2 0000123d: SWAP1 0000123e: DUP7 0000123f: ADD 00001240: SWAP1 00001241: DUP1 00001242: DUP4 00001243: DUP4 00001244: DUP3 00001245: ISZERO 00001246: PUSH2 0x126a 00001249: JUMPI 0000124a: JUMPDEST 0000124b: DUP1 0000124c: MLOAD 0000124d: DUP3 0000124e: MSTORE 0000124f: PUSH1 0x20 00001251: DUP4 00001252: GT 00001253: ISZERO 00001254: PUSH2 0x126a 00001257: JUMPI 00001258: PUSH1 0x1f 0000125a: NOT 0000125b: SWAP1 0000125c: SWAP3 0000125d: ADD 0000125e: SWAP2 0000125f: PUSH1 0x20 00001261: SWAP2 00001262: DUP3 00001263: ADD 00001264: SWAP2 00001265: ADD 00001266: PUSH2 0x124a 00001269: JUMP 0000126a: JUMPDEST 0000126b: POP 0000126c: POP 0000126d: POP 0000126e: SWAP1 0000126f: POP 00001270: SWAP1 00001271: DUP2 00001272: ADD 00001273: SWAP1 00001274: PUSH1 0x1f 00001276: AND 00001277: DUP1 00001278: ISZERO 00001279: PUSH2 0x1296 0000127c: JUMPI 0000127d: DUP1 0000127e: DUP3 0000127f: SUB 00001280: DUP1 00001281: MLOAD 00001282: PUSH1 0x01 00001284: DUP4 00001285: PUSH1 0x20 00001287: SUB 00001288: PUSH2 0x0100 0000128b: EXP 0000128c: SUB 0000128d: NOT 0000128e: AND 0000128f: DUP2 00001290: MSTORE 00001291: PUSH1 0x20 00001293: ADD 00001294: SWAP2 00001295: POP 00001296: JUMPDEST 00001297: POP 00001298: SWAP8 00001299: POP 0000129a: POP 0000129b: POP 0000129c: POP 0000129d: POP 0000129e: POP 0000129f: POP 000012a0: POP 000012a1: PUSH1 0x20 000012a3: PUSH1 0x40 000012a5: MLOAD 000012a6: DUP1 000012a7: DUP4 000012a8: SUB 000012a9: DUP2 000012aa: PUSH1 0x00 000012ac: DUP8 000012ad: DUP1 000012ae: EXTCODESIZE 000012af: ISZERO 000012b0: ISZERO 000012b1: PUSH2 0x12b6 000012b4: JUMPI 000012b5: INVALID 000012b6: JUMPDEST 000012b7: PUSH2 0x02c6 000012ba: GAS 000012bb: SUB 000012bc: CALL 000012bd: ISZERO 000012be: ISZERO 000012bf: PUSH2 0x12c4 000012c2: JUMPI 000012c3: INVALID 000012c4: JUMPDEST 000012c5: POP 000012c6: POP 000012c7: PUSH1 0x40 000012c9: MLOAD 000012ca: MLOAD 000012cb: SWAP2 000012cc: POP 000012cd: PUSH2 0x12fa 000012d0: SWAP1 000012d1: POP 000012d2: JUMP 000012d3: JUMPDEST 000012d4: PUSH2 0x12de 000012d7: DUP6 000012d8: DUP5 000012d9: DUP5 000012da: PUSH2 0x1d1e 000012dd: JUMP 000012de: JUMPDEST 000012df: ISZERO 000012e0: ISZERO 000012e1: PUSH2 0x12ec 000012e4: JUMPI 000012e5: POP 000012e6: PUSH1 0x00 000012e8: PUSH2 0x12fa 000012eb: JUMP 000012ec: JUMPDEST 000012ed: PUSH2 0x12f6 000012f0: DUP5 000012f1: DUP5 000012f2: PUSH2 0x1e3b 000012f5: JUMP 000012f6: JUMPDEST 000012f7: POP 000012f8: PUSH1 0x01 000012fa: JUMPDEST 000012fb: JUMPDEST 000012fc: SWAP5 000012fd: SWAP4 000012fe: POP 000012ff: POP 00001300: POP 00001301: POP 00001302: JUMP 00001303: JUMPDEST 00001304: PUSH1 0x00 00001306: DUP1 00001307: SLOAD 00001308: PUSH1 0x01 0000130a: SLOAD 0000130b: PUSH1 0x40 0000130d: DUP1 0000130e: MLOAD 0000130f: PUSH1 0x20 00001311: SWAP1 00001312: DUP2 00001313: ADD 00001314: DUP6 00001315: SWAP1 00001316: MSTORE 00001317: DUP2 00001318: MLOAD 00001319: PUSH1 0xe1 0000131b: PUSH1 0x02 0000131d: EXP 0000131e: PUSH4 0x26985b5f 00001323: MUL 00001324: DUP2 00001325: MSTORE 00001326: PUSH1 0x01 00001328: PUSH1 0xa0 0000132a: PUSH1 0x02 0000132c: EXP 0000132d: SUB 0000132e: DUP8 0000132f: DUP2 00001330: AND 00001331: PUSH1 0x04 00001333: DUP4 00001334: ADD 00001335: MSTORE 00001336: PUSH1 0x24 00001338: DUP3 00001339: ADD 0000133a: SWAP5 0000133b: SWAP1 0000133c: SWAP5 0000133d: MSTORE 0000133e: SWAP2 0000133f: MLOAD 00001340: SWAP3 00001341: SWAP1 00001342: SWAP4 00001343: AND 00001344: SWAP3 00001345: PUSH4 0x4d30b6be 0000134a: SWAP3 0000134b: PUSH1 0x44 0000134d: DUP1 0000134e: DUP5 0000134f: ADD 00001350: SWAP4 00001351: DUP3 00001352: SWAP1 00001353: SUB 00001354: ADD 00001355: DUP2 00001356: DUP8 00001357: DUP8 00001358: DUP1 00001359: EXTCODESIZE 0000135a: ISZERO 0000135b: ISZERO 0000135c: PUSH2 0x1361 0000135f: JUMPI 00001360: INVALID 00001361: JUMPDEST 00001362: PUSH2 0x02c6 00001365: GAS 00001366: SUB 00001367: CALL 00001368: ISZERO 00001369: ISZERO 0000136a: PUSH2 0x136f 0000136d: JUMPI 0000136e: INVALID 0000136f: JUMPDEST 00001370: POP 00001371: POP 00001372: PUSH1 0x40 00001374: MLOAD 00001375: MLOAD 00001376: SWAP2 00001377: POP 00001378: POP 00001379: JUMPDEST 0000137a: SWAP2 0000137b: SWAP1 0000137c: POP 0000137d: JUMP 0000137e: JUMPDEST 0000137f: PUSH1 0x00 00001381: PUSH2 0x139b 00001384: DUP4 00001385: DUP4 00001386: PUSH1 0x20 00001388: PUSH1 0x40 0000138a: MLOAD 0000138b: SWAP1 0000138c: DUP2 0000138d: ADD 0000138e: PUSH1 0x40 00001390: MSTORE 00001391: DUP1 00001392: PUSH1 0x00 00001394: DUP2 00001395: MSTORE 00001396: POP 00001397: PUSH2 0x13a4 0000139a: JUMP 0000139b: JUMPDEST 0000139c: SWAP1 0000139d: POP 0000139e: JUMPDEST 0000139f: SWAP3 000013a0: SWAP2 000013a1: POP 000013a2: POP 000013a3: JUMP 000013a4: JUMPDEST 000013a5: PUSH1 0x00 000013a7: PUSH2 0x13af 000013aa: CALLER 000013ab: PUSH2 0x0a72 000013ae: JUMP 000013af: JUMPDEST 000013b0: POP 000013b1: PUSH2 0x0e12 000013b4: DUP5 000013b5: DUP5 000013b6: DUP5 000013b7: PUSH2 0x1e70 000013ba: JUMP 000013bb: JUMPDEST 000013bc: SWAP1 000013bd: POP 000013be: JUMPDEST 000013bf: SWAP4 000013c0: SWAP3 000013c1: POP 000013c2: POP 000013c3: POP 000013c4: JUMP 000013c5: JUMPDEST 000013c6: PUSH1 0x01 000013c8: PUSH1 0xa0 000013ca: PUSH1 0x02 000013cc: EXP 000013cd: SUB 000013ce: CALLER 000013cf: AND 000013d0: PUSH1 0x00 000013d2: SWAP1 000013d3: DUP2 000013d4: MSTORE 000013d5: PUSH1 0x05 000013d7: PUSH1 0x20 000013d9: MSTORE 000013da: PUSH1 0x40 000013dc: DUP2 000013dd: KECCAK256 000013de: SLOAD 000013df: PUSH1 0xff 000013e1: AND 000013e2: ISZERO 000013e3: ISZERO 000013e4: PUSH2 0x1423 000013e7: JUMPI 000013e8: CALLER 000013e9: PUSH1 0x01 000013eb: PUSH1 0xa0 000013ed: PUSH1 0x02 000013ef: EXP 000013f0: SUB 000013f1: AND 000013f2: PUSH1 0x00 000013f4: SWAP1 000013f5: DUP2 000013f6: MSTORE 000013f7: PUSH1 0x05 000013f9: PUSH1 0x20 000013fb: SWAP1 000013fc: DUP2 000013fd: MSTORE 000013fe: PUSH1 0x40 00001400: DUP1 00001401: DUP4 00001402: KECCAK256 00001403: DUP1 00001404: SLOAD 00001405: PUSH1 0x01 00001407: PUSH1 0xff 00001409: NOT 0000140a: SWAP2 0000140b: DUP3 0000140c: AND 0000140d: DUP2 0000140e: OR 0000140f: SWAP1 00001410: SWAP3 00001411: SSTORE 00001412: PUSH1 0x04 00001414: SWAP1 00001415: SWAP4 00001416: MSTORE 00001417: SWAP3 00001418: KECCAK256 00001419: DUP1 0000141a: SLOAD 0000141b: SWAP1 0000141c: SWAP2 0000141d: AND 0000141e: SWAP1 0000141f: SWAP2 00001420: OR 00001421: SWAP1 00001422: SSTORE 00001423: JUMPDEST 00001424: POP 00001425: CALLER 00001426: PUSH1 0x01 00001428: PUSH1 0xa0 0000142a: PUSH1 0x02 0000142c: EXP 0000142d: SUB 0000142e: AND 0000142f: PUSH1 0x00 00001431: SWAP1 00001432: DUP2 00001433: MSTORE 00001434: PUSH1 0x04 00001436: PUSH1 0x20 00001438: MSTORE 00001439: PUSH1 0x40 0000143b: SWAP1 0000143c: KECCAK256 0000143d: DUP1 0000143e: SLOAD 0000143f: PUSH1 0xff 00001441: NOT 00001442: AND 00001443: DUP3 00001444: ISZERO 00001445: ISZERO 00001446: OR 00001447: SWAP1 00001448: SSTORE 00001449: PUSH1 0x01 0000144b: JUMPDEST 0000144c: JUMPDEST 0000144d: SWAP2 0000144e: SWAP1 0000144f: POP 00001450: JUMP 00001451: JUMPDEST 00001452: PUSH1 0x03 00001454: DUP1 00001455: SLOAD 00001456: PUSH1 0x40 00001458: DUP1 00001459: MLOAD 0000145a: PUSH1 0x20 0000145c: PUSH1 0x02 0000145e: PUSH1 0x01 00001460: DUP6 00001461: AND 00001462: ISZERO 00001463: PUSH2 0x0100 00001466: MUL 00001467: PUSH1 0x00 00001469: NOT 0000146a: ADD 0000146b: SWAP1 0000146c: SWAP5 0000146d: AND 0000146e: SWAP4 0000146f: SWAP1 00001470: SWAP4 00001471: DIV 00001472: PUSH1 0x1f 00001474: DUP2 00001475: ADD 00001476: DUP5 00001477: SWAP1 00001478: DIV 00001479: DUP5 0000147a: MUL 0000147b: DUP3 0000147c: ADD 0000147d: DUP5 0000147e: ADD 0000147f: SWAP1 00001480: SWAP3 00001481: MSTORE 00001482: DUP2 00001483: DUP2 00001484: MSTORE 00001485: SWAP3 00001486: SWAP2 00001487: DUP4 00001488: ADD 00001489: DUP3 0000148a: DUP3 0000148b: DUP1 0000148c: ISZERO 0000148d: PUSH2 0x0b3c 00001490: JUMPI 00001491: DUP1 00001492: PUSH1 0x1f 00001494: LT 00001495: PUSH2 0x0b11 00001498: JUMPI 00001499: PUSH2 0x0100 0000149c: DUP1 0000149d: DUP4 0000149e: SLOAD 0000149f: DIV 000014a0: MUL 000014a1: DUP4 000014a2: MSTORE 000014a3: SWAP2 000014a4: PUSH1 0x20 000014a6: ADD 000014a7: SWAP2 000014a8: PUSH2 0x0b3c 000014ab: JUMP 000014ac: JUMPDEST 000014ad: DUP3 000014ae: ADD 000014af: SWAP2 000014b0: SWAP1 000014b1: PUSH1 0x00 000014b3: MSTORE 000014b4: PUSH1 0x20 000014b6: PUSH1 0x00 000014b8: KECCAK256 000014b9: SWAP1 000014ba: JUMPDEST 000014bb: DUP2 000014bc: SLOAD 000014bd: DUP2 000014be: MSTORE 000014bf: SWAP1 000014c0: PUSH1 0x01 000014c2: ADD 000014c3: SWAP1 000014c4: PUSH1 0x20 000014c6: ADD 000014c7: DUP1 000014c8: DUP4 000014c9: GT 000014ca: PUSH2 0x0b1f 000014cd: JUMPI 000014ce: DUP3 000014cf: SWAP1 000014d0: SUB 000014d1: PUSH1 0x1f 000014d3: AND 000014d4: DUP3 000014d5: ADD 000014d6: SWAP2 000014d7: JUMPDEST 000014d8: POP 000014d9: POP 000014da: POP 000014db: POP 000014dc: POP 000014dd: DUP2 000014de: JUMP 000014df: JUMPDEST 000014e0: PUSH1 0x05 000014e2: PUSH1 0x20 000014e4: MSTORE 000014e5: PUSH1 0x00 000014e7: SWAP1 000014e8: DUP2 000014e9: MSTORE 000014ea: PUSH1 0x40 000014ec: SWAP1 000014ed: KECCAK256 000014ee: SLOAD 000014ef: PUSH1 0xff 000014f1: AND 000014f2: DUP2 000014f3: JUMP 000014f4: JUMPDEST 000014f5: PUSH1 0x00 000014f7: DUP1 000014f8: SLOAD 000014f9: PUSH1 0x01 000014fb: SLOAD 000014fc: PUSH1 0x01 000014fe: PUSH1 0xa0 00001500: PUSH1 0x02 00001502: EXP 00001503: SUB 00001504: SWAP1 00001505: SWAP2 00001506: AND 00001507: SWAP1 00001508: PUSH4 0xca448a88 0000150d: SWAP1 0000150e: PUSH2 0x1516 00001511: ADDRESS 00001512: PUSH2 0x1303 00001515: JUMP 00001516: JUMPDEST 00001517: PUSH1 0x00 00001519: PUSH1 0x40 0000151b: MLOAD 0000151c: PUSH1 0x20 0000151e: ADD 0000151f: MSTORE 00001520: PUSH1 0x40 00001522: MLOAD 00001523: DUP4 00001524: PUSH4 0xffffffff 00001529: AND 0000152a: PUSH1 0xe0 0000152c: PUSH1 0x02 0000152e: EXP 0000152f: MUL 00001530: DUP2 00001531: MSTORE 00001532: PUSH1 0x04 00001534: ADD 00001535: DUP1 00001536: DUP4 00001537: PUSH1 0x00 00001539: NOT 0000153a: AND 0000153b: PUSH1 0x00 0000153d: NOT 0000153e: AND 0000153f: DUP2 00001540: MSTORE 00001541: PUSH1 0x20 00001543: ADD 00001544: DUP3 00001545: DUP2 00001546: MSTORE 00001547: PUSH1 0x20 00001549: ADD 0000154a: SWAP3 0000154b: POP 0000154c: POP 0000154d: POP 0000154e: PUSH1 0x20 00001550: PUSH1 0x40 00001552: MLOAD 00001553: DUP1 00001554: DUP4 00001555: SUB 00001556: DUP2 00001557: PUSH1 0x00 00001559: DUP8 0000155a: DUP1 0000155b: EXTCODESIZE 0000155c: ISZERO 0000155d: ISZERO 0000155e: PUSH2 0x0c8b 00001561: JUMPI 00001562: INVALID 00001563: JUMPDEST 00001564: PUSH2 0x02c6 00001567: GAS 00001568: SUB 00001569: CALL 0000156a: ISZERO 0000156b: ISZERO 0000156c: PUSH2 0x0c99 0000156f: JUMPI 00001570: INVALID 00001571: JUMPDEST 00001572: POP 00001573: POP 00001574: PUSH1 0x40 00001576: MLOAD 00001577: MLOAD 00001578: SWAP2 00001579: POP 0000157a: POP 0000157b: JUMPDEST 0000157c: SWAP1 0000157d: JUMP 0000157e: JUMPDEST 0000157f: PUSH1 0x01 00001581: PUSH1 0xa0 00001583: PUSH1 0x02 00001585: EXP 00001586: SUB 00001587: CALLER 00001588: AND 00001589: PUSH1 0x00 0000158b: SWAP1 0000158c: DUP2 0000158d: MSTORE 0000158e: PUSH1 0x05 00001590: PUSH1 0x20 00001592: MSTORE 00001593: PUSH1 0x40 00001595: DUP2 00001596: KECCAK256 00001597: SLOAD 00001598: PUSH1 0xff 0000159a: AND 0000159b: ISZERO 0000159c: ISZERO 0000159d: PUSH2 0x15dc 000015a0: JUMPI 000015a1: CALLER 000015a2: PUSH1 0x01 000015a4: PUSH1 0xa0 000015a6: PUSH1 0x02 000015a8: EXP 000015a9: SUB 000015aa: AND 000015ab: PUSH1 0x00 000015ad: SWAP1 000015ae: DUP2 000015af: MSTORE 000015b0: PUSH1 0x05 000015b2: PUSH1 0x20 000015b4: SWAP1 000015b5: DUP2 000015b6: MSTORE 000015b7: PUSH1 0x40 000015b9: DUP1 000015ba: DUP4 000015bb: KECCAK256 000015bc: DUP1 000015bd: SLOAD 000015be: PUSH1 0x01 000015c0: PUSH1 0xff 000015c2: NOT 000015c3: SWAP2 000015c4: DUP3 000015c5: AND 000015c6: DUP2 000015c7: OR 000015c8: SWAP1 000015c9: SWAP3 000015ca: SSTORE 000015cb: PUSH1 0x04 000015cd: SWAP1 000015ce: SWAP4 000015cf: MSTORE 000015d0: SWAP3 000015d1: KECCAK256 000015d2: DUP1 000015d3: SLOAD 000015d4: SWAP1 000015d5: SWAP2 000015d6: AND 000015d7: SWAP1 000015d8: SWAP2 000015d9: OR 000015da: SWAP1 000015db: SSTORE 000015dc: JUMPDEST 000015dd: PUSH2 0x15e5 000015e0: DUP5 000015e1: PUSH2 0x0ca6 000015e4: JUMP 000015e5: JUMPDEST 000015e6: ISZERO 000015e7: PUSH2 0x16f5 000015ea: JUMPI 000015eb: PUSH1 0x00 000015ed: DUP1 000015ee: SLOAD 000015ef: PUSH1 0x40 000015f1: DUP1 000015f2: MLOAD 000015f3: PUSH1 0x20 000015f5: SWAP1 000015f6: DUP2 000015f7: ADD 000015f8: SWAP4 000015f9: SWAP1 000015fa: SWAP4 000015fb: MSTORE 000015fc: MLOAD 000015fd: PUSH1 0xe1 000015ff: PUSH1 0x02 00001601: EXP 00001602: PUSH4 0x53481977 00001607: MUL 00001608: DUP2 00001609: MSTORE 0000160a: PUSH1 0x01 0000160c: PUSH1 0xa0 0000160e: PUSH1 0x02 00001610: EXP 00001611: SUB 00001612: DUP9 00001613: DUP2 00001614: AND 00001615: PUSH1 0x04 00001617: DUP4 00001618: ADD 00001619: SWAP1 0000161a: DUP2 0000161b: MSTORE 0000161c: PUSH1 0x24 0000161e: DUP4 0000161f: ADD 00001620: DUP10 00001621: SWAP1 00001622: MSTORE 00001623: PUSH1 0x44 00001625: DUP4 00001626: ADD 00001627: DUP9 00001628: SWAP1 00001629: MSTORE 0000162a: CALLER 0000162b: DUP1 0000162c: DUP4 0000162d: AND 0000162e: PUSH1 0x84 00001630: DUP6 00001631: ADD 00001632: MSTORE 00001633: PUSH1 0xa0 00001635: PUSH1 0x64 00001637: DUP6 00001638: ADD 00001639: SWAP1 0000163a: DUP2 0000163b: MSTORE 0000163c: DUP9 0000163d: MLOAD 0000163e: PUSH1 0xa4 00001640: DUP7 00001641: ADD 00001642: MSTORE 00001643: DUP9 00001644: MLOAD 00001645: SWAP4 00001646: SWAP1 00001647: SWAP6 00001648: AND 00001649: SWAP6 0000164a: PUSH4 0xa69032ee 0000164f: SWAP6 00001650: DUP13 00001651: SWAP6 00001652: DUP13 00001653: SWAP6 00001654: DUP13 00001655: SWAP6 00001656: DUP13 00001657: SWAP6 00001658: SWAP5 00001659: SWAP1 0000165a: SWAP4 0000165b: SWAP3 0000165c: PUSH1 0xc4 0000165e: ADD 0000165f: SWAP2 00001660: SWAP1 00001661: DUP7 00001662: ADD 00001663: SWAP1 00001664: DUP1 00001665: DUP4 00001666: DUP4 00001667: DUP3 00001668: ISZERO 00001669: PUSH2 0x168d 0000166c: JUMPI 0000166d: JUMPDEST 0000166e: DUP1 0000166f: MLOAD 00001670: DUP3 00001671: MSTORE 00001672: PUSH1 0x20 00001674: DUP4 00001675: GT 00001676: ISZERO 00001677: PUSH2 0x168d 0000167a: JUMPI 0000167b: PUSH1 0x1f 0000167d: NOT 0000167e: SWAP1 0000167f: SWAP3 00001680: ADD 00001681: SWAP2 00001682: PUSH1 0x20 00001684: SWAP2 00001685: DUP3 00001686: ADD 00001687: SWAP2 00001688: ADD 00001689: PUSH2 0x166d 0000168c: JUMP 0000168d: JUMPDEST 0000168e: POP 0000168f: POP 00001690: POP 00001691: SWAP1 00001692: POP 00001693: SWAP1 00001694: DUP2 00001695: ADD 00001696: SWAP1 00001697: PUSH1 0x1f 00001699: AND 0000169a: DUP1 0000169b: ISZERO 0000169c: PUSH2 0x16b9 0000169f: JUMPI 000016a0: DUP1 000016a1: DUP3 000016a2: SUB 000016a3: DUP1 000016a4: MLOAD 000016a5: PUSH1 0x01 000016a7: DUP4 000016a8: PUSH1 0x20 000016aa: SUB 000016ab: PUSH2 0x0100 000016ae: EXP 000016af: SUB 000016b0: NOT 000016b1: AND 000016b2: DUP2 000016b3: MSTORE 000016b4: PUSH1 0x20 000016b6: ADD 000016b7: SWAP2 000016b8: POP 000016b9: JUMPDEST 000016ba: POP 000016bb: SWAP7 000016bc: POP 000016bd: POP 000016be: POP 000016bf: POP 000016c0: POP 000016c1: POP 000016c2: POP 000016c3: PUSH1 0x20 000016c5: PUSH1 0x40 000016c7: MLOAD 000016c8: DUP1 000016c9: DUP4 000016ca: SUB 000016cb: DUP2 000016cc: PUSH1 0x00 000016ce: DUP8 000016cf: DUP1 000016d0: EXTCODESIZE 000016d1: ISZERO 000016d2: ISZERO 000016d3: PUSH2 0x12b6 000016d6: JUMPI 000016d7: INVALID 000016d8: JUMPDEST 000016d9: PUSH2 0x02c6 000016dc: GAS 000016dd: SUB 000016de: CALL 000016df: ISZERO 000016e0: ISZERO 000016e1: PUSH2 0x12c4 000016e4: JUMPI 000016e5: INVALID 000016e6: JUMPDEST 000016e7: POP 000016e8: POP 000016e9: PUSH1 0x40 000016eb: MLOAD 000016ec: MLOAD 000016ed: SWAP2 000016ee: POP 000016ef: PUSH2 0x12fa 000016f2: SWAP1 000016f3: POP 000016f4: JUMP 000016f5: JUMPDEST 000016f6: PUSH2 0x1700 000016f9: DUP6 000016fa: DUP5 000016fb: DUP5 000016fc: PUSH2 0x1d1e 000016ff: JUMP 00001700: JUMPDEST 00001701: ISZERO 00001702: ISZERO 00001703: PUSH2 0x170e 00001706: JUMPI 00001707: POP 00001708: PUSH1 0x00 0000170a: PUSH2 0x12fa 0000170d: JUMP 0000170e: JUMPDEST 0000170f: PUSH2 0x12f6 00001712: DUP5 00001713: DUP5 00001714: DUP5 00001715: PUSH2 0x1fb7 00001718: JUMP 00001719: JUMPDEST 0000171a: POP 0000171b: PUSH1 0x01 0000171d: JUMPDEST 0000171e: JUMPDEST 0000171f: SWAP5 00001720: SWAP4 00001721: POP 00001722: POP 00001723: POP 00001724: POP 00001725: JUMP 00001726: JUMPDEST 00001727: PUSH1 0x00 00001729: PUSH2 0x0e12 0000172c: DUP5 0000172d: DUP5 0000172e: DUP5 0000172f: PUSH1 0x20 00001731: PUSH1 0x40 00001733: MLOAD 00001734: SWAP1 00001735: DUP2 00001736: ADD 00001737: PUSH1 0x40 00001739: MSTORE 0000173a: DUP1 0000173b: PUSH1 0x00 0000173d: DUP2 0000173e: MSTORE 0000173f: POP 00001740: PUSH2 0x157e 00001743: JUMP 00001744: JUMPDEST 00001745: SWAP1 00001746: POP 00001747: JUMPDEST 00001748: SWAP4 00001749: SWAP3 0000174a: POP 0000174b: POP 0000174c: POP 0000174d: JUMP 0000174e: JUMPDEST 0000174f: PUSH1 0x01 00001751: SLOAD 00001752: DUP2 00001753: JUMP 00001754: JUMPDEST 00001755: PUSH1 0x00 00001757: PUSH2 0x139b 0000175a: DUP4 0000175b: DUP4 0000175c: PUSH1 0x20 0000175e: PUSH1 0x40 00001760: MLOAD 00001761: SWAP1 00001762: DUP2 00001763: ADD 00001764: PUSH1 0x40 00001766: MSTORE 00001767: DUP1 00001768: PUSH1 0x00 0000176a: DUP2 0000176b: MSTORE 0000176c: POP 0000176d: PUSH2 0x1789 00001770: JUMP 00001771: JUMPDEST 00001772: SWAP1 00001773: POP 00001774: JUMPDEST 00001775: SWAP3 00001776: SWAP2 00001777: POP 00001778: POP 00001779: JUMP 0000177a: JUMPDEST 0000177b: PUSH1 0x06 0000177d: SLOAD 0000177e: PUSH1 0x01 00001780: PUSH1 0xa0 00001782: PUSH1 0x02 00001784: EXP 00001785: SUB 00001786: AND 00001787: DUP2 00001788: JUMP 00001789: JUMPDEST 0000178a: PUSH1 0x00 0000178c: PUSH2 0x1794 0000178f: CALLER 00001790: PUSH2 0x0a72 00001793: JUMP 00001794: JUMPDEST 00001795: POP 00001796: PUSH2 0x0e12 00001799: DUP5 0000179a: DUP5 0000179b: DUP5 0000179c: PUSH2 0x20a8 0000179f: JUMP 000017a0: JUMPDEST 000017a1: SWAP1 000017a2: POP 000017a3: JUMPDEST 000017a4: SWAP4 000017a5: SWAP3 000017a6: POP 000017a7: POP 000017a8: POP 000017a9: JUMP 000017aa: JUMPDEST 000017ab: PUSH1 0x01 000017ad: PUSH1 0xa0 000017af: PUSH1 0x02 000017b1: EXP 000017b2: SUB 000017b3: DUP2 000017b4: AND 000017b5: PUSH1 0x00 000017b7: SWAP1 000017b8: DUP2 000017b9: MSTORE 000017ba: PUSH1 0x05 000017bc: PUSH1 0x20 000017be: MSTORE 000017bf: PUSH1 0x40 000017c1: DUP2 000017c2: KECCAK256 000017c3: SLOAD 000017c4: PUSH1 0xff 000017c6: AND 000017c7: DUP1 000017c8: ISZERO 000017c9: PUSH2 0x0aa1 000017cc: JUMPI 000017cd: POP 000017ce: PUSH1 0x01 000017d0: PUSH1 0xa0 000017d2: PUSH1 0x02 000017d4: EXP 000017d5: SUB 000017d6: DUP3 000017d7: AND 000017d8: PUSH1 0x00 000017da: SWAP1 000017db: DUP2 000017dc: MSTORE 000017dd: PUSH1 0x04 000017df: PUSH1 0x20 000017e1: MSTORE 000017e2: PUSH1 0x40 000017e4: SWAP1 000017e5: KECCAK256 000017e6: SLOAD 000017e7: PUSH1 0xff 000017e9: AND 000017ea: JUMPDEST 000017eb: SWAP1 000017ec: POP 000017ed: JUMPDEST 000017ee: SWAP2 000017ef: SWAP1 000017f0: POP 000017f1: JUMP 000017f2: JUMPDEST 000017f3: PUSH1 0x00 000017f5: DUP1 000017f6: SLOAD 000017f7: PUSH1 0x01 000017f9: SLOAD 000017fa: PUSH1 0x40 000017fc: DUP1 000017fd: MLOAD 000017fe: PUSH1 0x20 00001800: SWAP1 00001801: DUP2 00001802: ADD 00001803: DUP6 00001804: SWAP1 00001805: MSTORE 00001806: DUP2 00001807: MLOAD 00001808: PUSH1 0xe3 0000180a: PUSH1 0x02 0000180c: EXP 0000180d: PUSH4 0x0391aba7 00001812: MUL 00001813: DUP2 00001814: MSTORE 00001815: PUSH1 0x01 00001817: PUSH1 0xa0 00001819: PUSH1 0x02 0000181b: EXP 0000181c: SUB 0000181d: DUP9 0000181e: DUP2 0000181f: AND 00001820: PUSH1 0x04 00001822: DUP4 00001823: ADD 00001824: MSTORE 00001825: DUP8 00001826: DUP2 00001827: AND 00001828: PUSH1 0x24 0000182a: DUP4 0000182b: ADD 0000182c: MSTORE 0000182d: PUSH1 0x44 0000182f: DUP3 00001830: ADD 00001831: SWAP5 00001832: SWAP1 00001833: SWAP5 00001834: MSTORE 00001835: SWAP2 00001836: MLOAD 00001837: SWAP3 00001838: SWAP1 00001839: SWAP4 0000183a: AND 0000183b: SWAP3 0000183c: PUSH4 0x1c8d5d38 00001841: SWAP3 00001842: PUSH1 0x64 00001844: DUP1 00001845: DUP5 00001846: ADD 00001847: SWAP4 00001848: DUP3 00001849: SWAP1 0000184a: SUB 0000184b: ADD 0000184c: DUP2 0000184d: DUP8 0000184e: DUP8 0000184f: DUP1 00001850: EXTCODESIZE 00001851: ISZERO 00001852: ISZERO 00001853: PUSH2 0x0c15 00001856: JUMPI 00001857: INVALID 00001858: JUMPDEST 00001859: PUSH2 0x02c6 0000185c: GAS 0000185d: SUB 0000185e: CALL 0000185f: ISZERO 00001860: ISZERO 00001861: PUSH2 0x0c23 00001864: JUMPI 00001865: INVALID 00001866: JUMPDEST 00001867: POP 00001868: POP 00001869: PUSH1 0x40 0000186b: MLOAD 0000186c: MLOAD 0000186d: SWAP2 0000186e: POP 0000186f: POP 00001870: JUMPDEST 00001871: SWAP3 00001872: SWAP2 00001873: POP 00001874: POP 00001875: JUMP 00001876: JUMPDEST 00001877: PUSH1 0x04 00001879: PUSH1 0x20 0000187b: MSTORE 0000187c: PUSH1 0x00 0000187e: SWAP1 0000187f: DUP2 00001880: MSTORE 00001881: PUSH1 0x40 00001883: SWAP1 00001884: KECCAK256 00001885: SLOAD 00001886: PUSH1 0xff 00001888: AND 00001889: DUP2 0000188a: JUMP 0000188b: JUMPDEST 0000188c: PUSH1 0x01 0000188e: PUSH1 0xa0 00001890: PUSH1 0x02 00001892: EXP 00001893: SUB 00001894: CALLER 00001895: AND 00001896: PUSH1 0x00 00001898: SWAP1 00001899: DUP2 0000189a: MSTORE 0000189b: PUSH1 0x05 0000189d: PUSH1 0x20 0000189f: MSTORE 000018a0: PUSH1 0x40 000018a2: DUP2 000018a3: KECCAK256 000018a4: SLOAD 000018a5: PUSH1 0xff 000018a7: AND 000018a8: ISZERO 000018a9: ISZERO 000018aa: PUSH2 0x18e9 000018ad: JUMPI 000018ae: CALLER 000018af: PUSH1 0x01 000018b1: PUSH1 0xa0 000018b3: PUSH1 0x02 000018b5: EXP 000018b6: SUB 000018b7: AND 000018b8: PUSH1 0x00 000018ba: SWAP1 000018bb: DUP2 000018bc: MSTORE 000018bd: PUSH1 0x05 000018bf: PUSH1 0x20 000018c1: SWAP1 000018c2: DUP2 000018c3: MSTORE 000018c4: PUSH1 0x40 000018c6: DUP1 000018c7: DUP4 000018c8: KECCAK256 000018c9: DUP1 000018ca: SLOAD 000018cb: PUSH1 0x01 000018cd: PUSH1 0xff 000018cf: NOT 000018d0: SWAP2 000018d1: DUP3 000018d2: AND 000018d3: DUP2 000018d4: OR 000018d5: SWAP1 000018d6: SWAP3 000018d7: SSTORE 000018d8: PUSH1 0x04 000018da: SWAP1 000018db: SWAP4 000018dc: MSTORE 000018dd: SWAP3 000018de: KECCAK256 000018df: DUP1 000018e0: SLOAD 000018e1: SWAP1 000018e2: SWAP2 000018e3: AND 000018e4: SWAP1 000018e5: SWAP2 000018e6: OR 000018e7: SWAP1 000018e8: SSTORE 000018e9: JUMPDEST 000018ea: PUSH2 0x0e12 000018ed: DUP5 000018ee: DUP5 000018ef: DUP5 000018f0: PUSH2 0x20a8 000018f3: JUMP 000018f4: JUMPDEST 000018f5: SWAP1 000018f6: POP 000018f7: JUMPDEST 000018f8: JUMPDEST 000018f9: SWAP4 000018fa: SWAP3 000018fb: POP 000018fc: POP 000018fd: POP 000018fe: JUMP 000018ff: JUMPDEST 00001900: PUSH1 0x00 00001902: PUSH2 0x139b 00001905: DUP4 00001906: DUP4 00001907: PUSH1 0x20 00001909: PUSH1 0x40 0000190b: MLOAD 0000190c: SWAP1 0000190d: DUP2 0000190e: ADD 0000190f: PUSH1 0x40 00001911: MSTORE 00001912: DUP1 00001913: PUSH1 0x00 00001915: DUP2 00001916: MSTORE 00001917: POP 00001918: PUSH2 0x188b 0000191b: JUMP 0000191c: JUMPDEST 0000191d: SWAP1 0000191e: POP 0000191f: JUMPDEST 00001920: SWAP3 00001921: SWAP2 00001922: POP 00001923: POP 00001924: JUMP 00001925: JUMPDEST 00001926: PUSH1 0x06 00001928: SLOAD 00001929: PUSH1 0x00 0000192b: SWAP1 0000192c: PUSH1 0x01 0000192e: PUSH1 0xa0 00001930: PUSH1 0x02 00001932: EXP 00001933: SUB 00001934: AND 00001935: ISZERO 00001936: PUSH2 0x1941 00001939: JUMPI 0000193a: POP 0000193b: PUSH1 0x00 0000193d: PUSH2 0x0aa4 00001940: JUMP 00001941: JUMPDEST 00001942: POP 00001943: PUSH1 0x06 00001945: DUP1 00001946: SLOAD 00001947: PUSH1 0x01 00001949: PUSH1 0xa0 0000194b: PUSH1 0x02 0000194d: EXP 0000194e: SUB 0000194f: NOT 00001950: AND 00001951: PUSH1 0x01 00001953: PUSH1 0xa0 00001955: PUSH1 0x02 00001957: EXP 00001958: SUB 00001959: DUP4 0000195a: AND 0000195b: OR 0000195c: SWAP1 0000195d: SSTORE 0000195e: PUSH1 0x01 00001960: JUMPDEST 00001961: SWAP2 00001962: SWAP1 00001963: POP 00001964: JUMP 00001965: JUMPDEST 00001966: PUSH1 0x00 00001968: DUP1 00001969: SLOAD 0000196a: PUSH1 0x01 0000196c: PUSH1 0xa0 0000196e: PUSH1 0x02 00001970: EXP 00001971: SUB 00001972: AND 00001973: ISZERO 00001974: PUSH2 0x197f 00001977: JUMPI 00001978: POP 00001979: PUSH1 0x00 0000197b: PUSH2 0x12fa 0000197e: JUMP 0000197f: JUMPDEST 00001980: DUP5 00001981: PUSH1 0x01 00001983: PUSH1 0xa0 00001985: PUSH1 0x02 00001987: EXP 00001988: SUB 00001989: AND 0000198a: PUSH4 0x085a4705 0000198f: PUSH2 0x1997 00001992: DUP7 00001993: PUSH2 0x221b 00001996: JUMP 00001997: JUMPDEST 00001998: PUSH1 0x40 0000199a: DUP1 0000199b: MLOAD 0000199c: PUSH1 0x00 0000199e: PUSH1 0x20 000019a0: SWAP2 000019a1: DUP3 000019a2: ADD 000019a3: DUP2 000019a4: SWAP1 000019a5: MSTORE 000019a6: SWAP2 000019a7: MLOAD 000019a8: PUSH1 0xe0 000019aa: PUSH1 0x02 000019ac: EXP 000019ad: PUSH4 0xffffffff 000019b2: DUP7 000019b3: AND 000019b4: MUL 000019b5: DUP2 000019b6: MSTORE 000019b7: PUSH1 0x04 000019b9: DUP2 000019ba: ADD 000019bb: DUP5 000019bc: DUP2 000019bd: MSTORE 000019be: PUSH1 0x24 000019c0: DUP3 000019c1: ADD 000019c2: DUP5 000019c3: SWAP1 000019c4: MSTORE 000019c5: PUSH1 0x12 000019c7: PUSH1 0x84 000019c9: DUP4 000019ca: ADD 000019cb: DUP2 000019cc: SWAP1 000019cd: MSTORE 000019ce: PUSH1 0x01 000019d0: PUSH1 0xa4 000019d2: DUP5 000019d3: ADD 000019d4: DUP2 000019d5: SWAP1 000019d6: MSTORE 000019d7: PUSH1 0xc0 000019d9: PUSH1 0x44 000019db: DUP6 000019dc: ADD 000019dd: SWAP1 000019de: DUP2 000019df: MSTORE 000019e0: DUP13 000019e1: MLOAD 000019e2: PUSH1 0xc4 000019e4: DUP7 000019e5: ADD 000019e6: MSTORE 000019e7: DUP13 000019e8: MLOAD 000019e9: DUP14 000019ea: SWAP7 000019eb: DUP14 000019ec: SWAP7 000019ed: SWAP5 000019ee: SWAP6 000019ef: SWAP4 000019f0: SWAP5 000019f1: PUSH1 0x64 000019f3: DUP2 000019f4: ADD 000019f5: SWAP3 000019f6: PUSH1 0xe4 000019f8: SWAP1 000019f9: SWAP2 000019fa: ADD 000019fb: SWAP2 000019fc: DUP10 000019fd: ADD 000019fe: SWAP1 000019ff: DUP1 00001a00: DUP4 00001a01: DUP4 00001a02: DUP3 00001a03: ISZERO 00001a04: PUSH2 0x1a28 00001a07: JUMPI 00001a08: JUMPDEST 00001a09: DUP1 00001a0a: MLOAD 00001a0b: DUP3 00001a0c: MSTORE 00001a0d: PUSH1 0x20 00001a0f: DUP4 00001a10: GT 00001a11: ISZERO 00001a12: PUSH2 0x1a28 00001a15: JUMPI 00001a16: PUSH1 0x1f 00001a18: NOT 00001a19: SWAP1 00001a1a: SWAP3 00001a1b: ADD 00001a1c: SWAP2 00001a1d: PUSH1 0x20 00001a1f: SWAP2 00001a20: DUP3 00001a21: ADD 00001a22: SWAP2 00001a23: ADD 00001a24: PUSH2 0x1a08 00001a27: JUMP 00001a28: JUMPDEST 00001a29: POP 00001a2a: POP 00001a2b: POP 00001a2c: SWAP1 00001a2d: POP 00001a2e: SWAP1 00001a2f: DUP2 00001a30: ADD 00001a31: SWAP1 00001a32: PUSH1 0x1f 00001a34: AND 00001a35: DUP1 00001a36: ISZERO 00001a37: PUSH2 0x1a54 00001a3a: JUMPI 00001a3b: DUP1 00001a3c: DUP3 00001a3d: SUB 00001a3e: DUP1 00001a3f: MLOAD 00001a40: PUSH1 0x01 00001a42: DUP4 00001a43: PUSH1 0x20 00001a45: SUB 00001a46: PUSH2 0x0100 00001a49: EXP 00001a4a: SUB 00001a4b: NOT 00001a4c: AND 00001a4d: DUP2 00001a4e: MSTORE 00001a4f: PUSH1 0x20 00001a51: ADD 00001a52: SWAP2 00001a53: POP 00001a54: JUMPDEST 00001a55: POP 00001a56: DUP4 00001a57: DUP2 00001a58: SUB 00001a59: DUP3 00001a5a: MSTORE 00001a5b: DUP7 00001a5c: MLOAD 00001a5d: DUP2 00001a5e: MSTORE 00001a5f: DUP7 00001a60: MLOAD 00001a61: PUSH1 0x20 00001a63: SWAP2 00001a64: DUP3 00001a65: ADD 00001a66: SWAP2 00001a67: DUP9 00001a68: ADD 00001a69: SWAP1 00001a6a: DUP1 00001a6b: DUP4 00001a6c: DUP4 00001a6d: DUP3 00001a6e: ISZERO 00001a6f: PUSH2 0x1a93 00001a72: JUMPI 00001a73: JUMPDEST 00001a74: DUP1 00001a75: MLOAD 00001a76: DUP3 00001a77: MSTORE 00001a78: PUSH1 0x20 00001a7a: DUP4 00001a7b: GT 00001a7c: ISZERO 00001a7d: PUSH2 0x1a93 00001a80: JUMPI 00001a81: PUSH1 0x1f 00001a83: NOT 00001a84: SWAP1 00001a85: SWAP3 00001a86: ADD 00001a87: SWAP2 00001a88: PUSH1 0x20 00001a8a: SWAP2 00001a8b: DUP3 00001a8c: ADD 00001a8d: SWAP2 00001a8e: ADD 00001a8f: PUSH2 0x1a73 00001a92: JUMP 00001a93: JUMPDEST 00001a94: POP 00001a95: POP 00001a96: POP 00001a97: SWAP1 00001a98: POP 00001a99: SWAP1 00001a9a: DUP2 00001a9b: ADD 00001a9c: SWAP1 00001a9d: PUSH1 0x1f 00001a9f: AND 00001aa0: DUP1 00001aa1: ISZERO 00001aa2: PUSH2 0x1abf 00001aa5: JUMPI 00001aa6: DUP1 00001aa7: DUP3 00001aa8: SUB 00001aa9: DUP1 00001aaa: MLOAD 00001aab: PUSH1 0x01 00001aad: DUP4 00001aae: PUSH1 0x20 00001ab0: SUB 00001ab1: PUSH2 0x0100 00001ab4: EXP 00001ab5: SUB 00001ab6: NOT 00001ab7: AND 00001ab8: DUP2 00001ab9: MSTORE 00001aba: PUSH1 0x20 00001abc: ADD 00001abd: SWAP2 00001abe: POP 00001abf: JUMPDEST 00001ac0: POP 00001ac1: SWAP9 00001ac2: POP 00001ac3: POP 00001ac4: POP 00001ac5: POP 00001ac6: POP 00001ac7: POP 00001ac8: POP 00001ac9: POP 00001aca: POP 00001acb: PUSH1 0x20 00001acd: PUSH1 0x40 00001acf: MLOAD 00001ad0: DUP1 00001ad1: DUP4 00001ad2: SUB 00001ad3: DUP2 00001ad4: PUSH1 0x00 00001ad6: DUP8 00001ad7: DUP1 00001ad8: EXTCODESIZE 00001ad9: ISZERO 00001ada: ISZERO 00001adb: PUSH2 0x1ae0 00001ade: JUMPI 00001adf: INVALID 00001ae0: JUMPDEST 00001ae1: PUSH2 0x02c6 00001ae4: GAS 00001ae5: SUB 00001ae6: CALL 00001ae7: ISZERO 00001ae8: ISZERO 00001ae9: PUSH2 0x1aee 00001aec: JUMPI 00001aed: INVALID 00001aee: JUMPDEST 00001aef: POP 00001af0: POP 00001af1: PUSH1 0x40 00001af3: MLOAD 00001af4: MLOAD 00001af5: ISZERO 00001af6: ISZERO 00001af7: SWAP1 00001af8: POP 00001af9: PUSH2 0x1b04 00001afc: JUMPI 00001afd: POP 00001afe: PUSH1 0x00 00001b00: PUSH2 0x12fa 00001b03: JUMP 00001b04: JUMPDEST 00001b05: PUSH1 0x00 00001b07: DUP1 00001b08: SLOAD 00001b09: PUSH1 0x01 00001b0b: PUSH1 0xa0 00001b0d: PUSH1 0x02 00001b0f: EXP 00001b10: SUB 00001b11: NOT 00001b12: AND 00001b13: PUSH1 0x01 00001b15: PUSH1 0xa0 00001b17: PUSH1 0x02 00001b19: EXP 00001b1a: SUB 00001b1b: DUP8 00001b1c: AND 00001b1d: OR 00001b1e: SWAP1 00001b1f: SSTORE 00001b20: PUSH2 0x1b28 00001b23: DUP5 00001b24: PUSH2 0x221b 00001b27: JUMP 00001b28: JUMPDEST 00001b29: PUSH1 0x01 00001b2b: SSTORE 00001b2c: DUP3 00001b2d: MLOAD 00001b2e: PUSH2 0x1b3e 00001b31: SWAP1 00001b32: PUSH1 0x02 00001b34: SWAP1 00001b35: PUSH1 0x20 00001b37: DUP7 00001b38: ADD 00001b39: SWAP1 00001b3a: PUSH2 0x2282 00001b3d: JUMP 00001b3e: JUMPDEST 00001b3f: POP 00001b40: DUP4 00001b41: MLOAD 00001b42: PUSH2 0x1b52 00001b45: SWAP1 00001b46: PUSH1 0x03 00001b48: SWAP1 00001b49: PUSH1 0x20 00001b4b: DUP8 00001b4c: ADD 00001b4d: SWAP1 00001b4e: PUSH2 0x2282 00001b51: JUMP 00001b52: JUMPDEST 00001b53: POP 00001b54: PUSH1 0x00 00001b56: DUP1 00001b57: SLOAD 00001b58: PUSH1 0x01 00001b5a: SLOAD 00001b5b: PUSH1 0x40 00001b5d: DUP1 00001b5e: MLOAD 00001b5f: PUSH1 0x20 00001b61: SWAP1 00001b62: DUP2 00001b63: ADD 00001b64: DUP6 00001b65: SWAP1 00001b66: MSTORE 00001b67: DUP2 00001b68: MLOAD 00001b69: PUSH1 0xe0 00001b6b: PUSH1 0x02 00001b6d: EXP 00001b6e: PUSH4 0x638a9ce9 00001b73: MUL 00001b74: DUP2 00001b75: MSTORE 00001b76: PUSH1 0x01 00001b78: PUSH1 0xa0 00001b7a: PUSH1 0x02 00001b7c: EXP 00001b7d: SUB 00001b7e: ADDRESS 00001b7f: DUP2 00001b80: AND 00001b81: PUSH1 0x04 00001b83: DUP4 00001b84: ADD 00001b85: MSTORE 00001b86: PUSH1 0x24 00001b88: DUP3 00001b89: ADD 00001b8a: SWAP5 00001b8b: SWAP1 00001b8c: SWAP5 00001b8d: MSTORE 00001b8e: SWAP2 00001b8f: MLOAD 00001b90: SWAP3 00001b91: SWAP1 00001b92: SWAP4 00001b93: AND 00001b94: SWAP4 00001b95: PUSH4 0x638a9ce9 00001b9a: SWAP4 00001b9b: PUSH1 0x44 00001b9d: DUP1 00001b9e: DUP5 00001b9f: ADD 00001ba0: SWAP5 00001ba1: SWAP2 00001ba2: SWAP4 00001ba3: SWAP2 00001ba4: SWAP3 00001ba5: SWAP2 00001ba6: DUP4 00001ba7: SWAP1 00001ba8: SUB 00001ba9: ADD 00001baa: SWAP1 00001bab: DUP3 00001bac: SWAP1 00001bad: DUP8 00001bae: DUP1 00001baf: EXTCODESIZE 00001bb0: ISZERO 00001bb1: ISZERO 00001bb2: PUSH2 0x1bb7 00001bb5: JUMPI 00001bb6: INVALID 00001bb7: JUMPDEST 00001bb8: PUSH2 0x02c6 00001bbb: GAS 00001bbc: SUB 00001bbd: CALL 00001bbe: ISZERO 00001bbf: ISZERO 00001bc0: PUSH2 0x1bc5 00001bc3: JUMPI 00001bc4: INVALID 00001bc5: JUMPDEST 00001bc6: POP 00001bc7: POP 00001bc8: PUSH1 0x40 00001bca: MLOAD 00001bcb: MLOAD 00001bcc: SWAP1 00001bcd: POP 00001bce: DUP1 00001bcf: ISZERO 00001bd0: PUSH2 0x1c44 00001bd3: JUMPI 00001bd4: POP 00001bd5: PUSH1 0x00 00001bd7: DUP1 00001bd8: SLOAD 00001bd9: PUSH1 0x01 00001bdb: SLOAD 00001bdc: PUSH1 0x40 00001bde: DUP1 00001bdf: MLOAD 00001be0: PUSH1 0x20 00001be2: SWAP1 00001be3: DUP2 00001be4: ADD 00001be5: DUP6 00001be6: SWAP1 00001be7: MSTORE 00001be8: DUP2 00001be9: MLOAD 00001bea: PUSH1 0xe1 00001bec: PUSH1 0x02 00001bee: EXP 00001bef: PUSH4 0x680b4e0f 00001bf4: MUL 00001bf5: DUP2 00001bf6: MSTORE 00001bf7: PUSH1 0x04 00001bf9: DUP2 00001bfa: ADD 00001bfb: SWAP4 00001bfc: SWAP1 00001bfd: SWAP4 00001bfe: MSTORE 00001bff: SWAP1 00001c00: MLOAD 00001c01: PUSH1 0x01 00001c03: PUSH1 0xa0 00001c05: PUSH1 0x02 00001c07: EXP 00001c08: SUB 00001c09: SWAP1 00001c0a: SWAP4 00001c0b: AND 00001c0c: SWAP4 00001c0d: PUSH4 0xd0169c1e 00001c12: SWAP4 00001c13: PUSH1 0x24 00001c15: DUP1 00001c16: DUP6 00001c17: ADD 00001c18: SWAP5 00001c19: SWAP2 00001c1a: SWAP3 00001c1b: SWAP2 00001c1c: DUP4 00001c1d: SWAP1 00001c1e: SUB 00001c1f: ADD 00001c20: SWAP1 00001c21: DUP3 00001c22: SWAP1 00001c23: DUP8 00001c24: DUP1 00001c25: EXTCODESIZE 00001c26: ISZERO 00001c27: ISZERO 00001c28: PUSH2 0x1c2d 00001c2b: JUMPI 00001c2c: INVALID 00001c2d: JUMPDEST 00001c2e: PUSH2 0x02c6 00001c31: GAS 00001c32: SUB 00001c33: CALL 00001c34: ISZERO 00001c35: ISZERO 00001c36: PUSH2 0x1c3b 00001c39: JUMPI 00001c3a: INVALID 00001c3b: JUMPDEST 00001c3c: POP 00001c3d: POP 00001c3e: PUSH1 0x40 00001c40: MLOAD 00001c41: MLOAD 00001c42: SWAP1 00001c43: POP 00001c44: JUMPDEST 00001c45: ISZERO 00001c46: PUSH2 0x1c51 00001c49: JUMPI 00001c4a: POP 00001c4b: PUSH1 0x01 00001c4d: PUSH2 0x12fa 00001c50: JUMP 00001c51: JUMPDEST 00001c52: PUSH1 0x00 00001c54: PUSH1 0x00 00001c56: REVERT 00001c57: JUMPDEST 00001c58: SWAP5 00001c59: SWAP4 00001c5a: POP 00001c5b: POP 00001c5c: POP 00001c5d: POP 00001c5e: JUMP 00001c5f: JUMPDEST 00001c60: PUSH1 0x00 00001c62: DUP2 00001c63: PUSH1 0x04 00001c65: JUMPDEST 00001c66: BYTE 00001c67: PUSH1 0xf8 00001c69: PUSH1 0x02 00001c6b: EXP 00001c6c: MUL 00001c6d: DUP3 00001c6e: PUSH1 0x05 00001c70: JUMPDEST 00001c71: BYTE 00001c72: PUSH1 0xf8 00001c74: PUSH1 0x02 00001c76: EXP 00001c77: MUL 00001c78: DUP4 00001c79: PUSH1 0x06 00001c7b: JUMPDEST 00001c7c: BYTE 00001c7d: PUSH1 0xf8 00001c7f: PUSH1 0x02 00001c81: EXP 00001c82: MUL 00001c83: DUP5 00001c84: PUSH1 0x07 00001c86: JUMPDEST 00001c87: BYTE 00001c88: PUSH1 0xf8 00001c8a: PUSH1 0x02 00001c8c: EXP 00001c8d: MUL 00001c8e: DUP6 00001c8f: PUSH1 0x08 00001c91: JUMPDEST 00001c92: BYTE 00001c93: PUSH1 0xf8 00001c95: PUSH1 0x02 00001c97: EXP 00001c98: MUL 00001c99: DUP7 00001c9a: PUSH1 0x09 00001c9c: JUMPDEST 00001c9d: BYTE 00001c9e: PUSH1 0xf8 00001ca0: PUSH1 0x02 00001ca2: EXP 00001ca3: MUL 00001ca4: DUP8 00001ca5: PUSH1 0x0a 00001ca7: JUMPDEST 00001ca8: PUSH1 0x40 00001caa: DUP1 00001cab: MLOAD 00001cac: PUSH1 0x01 00001cae: PUSH1 0xf8 00001cb0: PUSH1 0x02 00001cb2: EXP 00001cb3: SUB 00001cb4: NOT 00001cb5: SWAP10 00001cb6: DUP11 00001cb7: AND 00001cb8: DUP2 00001cb9: MSTORE 00001cba: SWAP8 00001cbb: DUP10 00001cbc: AND 00001cbd: PUSH1 0x01 00001cbf: DUP10 00001cc0: ADD 00001cc1: MSTORE 00001cc2: SWAP6 00001cc3: DUP9 00001cc4: AND 00001cc5: PUSH1 0x02 00001cc7: DUP9 00001cc8: ADD 00001cc9: MSTORE 00001cca: SWAP4 00001ccb: DUP8 00001ccc: AND 00001ccd: PUSH1 0x03 00001ccf: DUP8 00001cd0: ADD 00001cd1: MSTORE 00001cd2: SWAP2 00001cd3: DUP7 00001cd4: AND 00001cd5: PUSH1 0x04 00001cd7: DUP7 00001cd8: ADD 00001cd9: MSTORE 00001cda: DUP6 00001cdb: AND 00001cdc: PUSH1 0x05 00001cde: DUP6 00001cdf: ADD 00001ce0: MSTORE 00001ce1: PUSH1 0xf8 00001ce3: PUSH1 0x02 00001ce5: EXP 00001ce6: SWAP2 00001ce7: BYTE 00001ce8: MUL 00001ce9: SWAP3 00001cea: SWAP1 00001ceb: SWAP3 00001cec: AND 00001ced: PUSH1 0x06 00001cef: DUP3 00001cf0: ADD 00001cf1: MSTORE 00001cf2: SWAP1 00001cf3: MLOAD 00001cf4: SWAP1 00001cf5: DUP2 00001cf6: SWAP1 00001cf7: SUB 00001cf8: PUSH1 0x07 00001cfa: ADD 00001cfb: SWAP1 00001cfc: KECCAK256 00001cfd: SWAP1 00001cfe: POP 00001cff: JUMPDEST 00001d00: SWAP2 00001d01: SWAP1 00001d02: POP 00001d03: JUMP 00001d04: JUMPDEST 00001d05: PUSH1 0x00 00001d07: CALLVALUE 00001d08: ISZERO 00001d09: PUSH2 0x1d16 00001d0c: JUMPI 00001d0d: PUSH2 0x1d16 00001d10: CALLER 00001d11: CALLVALUE 00001d12: PUSH2 0x2226 00001d15: JUMP 00001d16: JUMPDEST 00001d17: JUMPDEST 00001d18: POP 00001d19: PUSH1 0x00 00001d1b: JUMPDEST 00001d1c: SWAP1 00001d1d: JUMP 00001d1e: JUMPDEST 00001d1f: PUSH1 0x00 00001d21: DUP1 00001d22: SLOAD 00001d23: PUSH1 0x01 00001d25: SLOAD 00001d26: PUSH1 0x40 00001d28: DUP1 00001d29: MLOAD 00001d2a: PUSH1 0x20 00001d2c: SWAP1 00001d2d: DUP2 00001d2e: ADD 00001d2f: DUP6 00001d30: SWAP1 00001d31: MSTORE 00001d32: SWAP1 00001d33: MLOAD 00001d34: PUSH1 0xe1 00001d36: PUSH1 0x02 00001d38: EXP 00001d39: PUSH4 0x0b0ffb31 00001d3e: MUL 00001d3f: DUP2 00001d40: MSTORE 00001d41: PUSH1 0x01 00001d43: PUSH1 0xa0 00001d45: PUSH1 0x02 00001d47: EXP 00001d48: SUB 00001d49: DUP9 00001d4a: DUP2 00001d4b: AND 00001d4c: PUSH1 0x04 00001d4e: DUP4 00001d4f: ADD 00001d50: SWAP1 00001d51: DUP2 00001d52: MSTORE 00001d53: ADDRESS 00001d54: DUP1 00001d55: DUP4 00001d56: AND 00001d57: PUSH1 0x24 00001d59: DUP6 00001d5a: ADD 00001d5b: MSTORE 00001d5c: PUSH1 0x44 00001d5e: DUP5 00001d5f: ADD 00001d60: DUP11 00001d61: SWAP1 00001d62: MSTORE 00001d63: PUSH1 0x64 00001d65: DUP5 00001d66: ADD 00001d67: DUP7 00001d68: SWAP1 00001d69: MSTORE 00001d6a: CALLER 00001d6b: DUP1 00001d6c: DUP5 00001d6d: AND 00001d6e: PUSH1 0xa4 00001d70: DUP7 00001d71: ADD 00001d72: MSTORE 00001d73: PUSH1 0xc0 00001d75: PUSH1 0x84 00001d77: DUP7 00001d78: ADD 00001d79: SWAP1 00001d7a: DUP2 00001d7b: MSTORE 00001d7c: DUP11 00001d7d: MLOAD 00001d7e: PUSH1 0xc4 00001d80: DUP8 00001d81: ADD 00001d82: MSTORE 00001d83: DUP11 00001d84: MLOAD 00001d85: SWAP5 00001d86: SWAP1 00001d87: SWAP9 00001d88: AND 00001d89: SWAP8 00001d8a: PUSH4 0x161ff662 00001d8f: SWAP8 00001d90: DUP14 00001d91: SWAP8 00001d92: SWAP4 00001d93: SWAP7 00001d94: DUP14 00001d95: SWAP7 00001d96: SWAP2 00001d97: SWAP6 00001d98: DUP14 00001d99: SWAP6 00001d9a: SWAP1 00001d9b: SWAP4 00001d9c: SWAP3 00001d9d: PUSH1 0xe4 00001d9f: SWAP1 00001da0: SWAP3 00001da1: ADD 00001da2: SWAP2 00001da3: SWAP1 00001da4: DUP7 00001da5: ADD 00001da6: SWAP1 00001da7: DUP1 00001da8: DUP4 00001da9: DUP4 00001daa: DUP3 00001dab: ISZERO 00001dac: PUSH2 0x1dd0 00001daf: JUMPI 00001db0: JUMPDEST 00001db1: DUP1 00001db2: MLOAD 00001db3: DUP3 00001db4: MSTORE 00001db5: PUSH1 0x20 00001db7: DUP4 00001db8: GT 00001db9: ISZERO 00001dba: PUSH2 0x1dd0 00001dbd: JUMPI 00001dbe: PUSH1 0x1f 00001dc0: NOT 00001dc1: SWAP1 00001dc2: SWAP3 00001dc3: ADD 00001dc4: SWAP2 00001dc5: PUSH1 0x20 00001dc7: SWAP2 00001dc8: DUP3 00001dc9: ADD 00001dca: SWAP2 00001dcb: ADD 00001dcc: PUSH2 0x1db0 00001dcf: JUMP 00001dd0: JUMPDEST 00001dd1: POP 00001dd2: POP 00001dd3: POP 00001dd4: SWAP1 00001dd5: POP 00001dd6: SWAP1 00001dd7: DUP2 00001dd8: ADD 00001dd9: SWAP1 00001dda: PUSH1 0x1f 00001ddc: AND 00001ddd: DUP1 00001dde: ISZERO 00001ddf: PUSH2 0x1dfc 00001de2: JUMPI 00001de3: DUP1 00001de4: DUP3 00001de5: SUB 00001de6: DUP1 00001de7: MLOAD 00001de8: PUSH1 0x01 00001dea: DUP4 00001deb: PUSH1 0x20 00001ded: SUB 00001dee: PUSH2 0x0100 00001df1: EXP 00001df2: SUB 00001df3: NOT 00001df4: AND 00001df5: DUP2 00001df6: MSTORE 00001df7: PUSH1 0x20 00001df9: ADD 00001dfa: SWAP2 00001dfb: POP 00001dfc: JUMPDEST 00001dfd: POP 00001dfe: SWAP8 00001dff: POP 00001e00: POP 00001e01: POP 00001e02: POP 00001e03: POP 00001e04: POP 00001e05: POP 00001e06: POP 00001e07: PUSH1 0x20 00001e09: PUSH1 0x40 00001e0b: MLOAD 00001e0c: DUP1 00001e0d: DUP4 00001e0e: SUB 00001e0f: DUP2 00001e10: PUSH1 0x00 00001e12: DUP8 00001e13: DUP1 00001e14: EXTCODESIZE 00001e15: ISZERO 00001e16: ISZERO 00001e17: PUSH2 0x1e1c 00001e1a: JUMPI 00001e1b: INVALID 00001e1c: JUMPDEST 00001e1d: PUSH2 0x02c6 00001e20: GAS 00001e21: SUB 00001e22: CALL 00001e23: ISZERO 00001e24: ISZERO 00001e25: PUSH2 0x1e2a 00001e28: JUMPI 00001e29: INVALID 00001e2a: JUMPDEST 00001e2b: POP 00001e2c: POP 00001e2d: PUSH1 0x40 00001e2f: MLOAD 00001e30: MLOAD 00001e31: SWAP2 00001e32: POP 00001e33: POP 00001e34: JUMPDEST 00001e35: SWAP4 00001e36: SWAP3 00001e37: POP 00001e38: POP 00001e39: POP 00001e3a: JUMP 00001e3b: JUMPDEST 00001e3c: PUSH1 0x00 00001e3e: DUP3 00001e3f: PUSH1 0x01 00001e41: PUSH1 0xa0 00001e43: PUSH1 0x02 00001e45: EXP 00001e46: SUB 00001e47: AND 00001e48: ADDRESS 00001e49: PUSH1 0x01 00001e4b: PUSH1 0xa0 00001e4d: PUSH1 0x02 00001e4f: EXP 00001e50: SUB 00001e51: AND 00001e52: EQ 00001e53: PUSH2 0x1e5c 00001e56: JUMPI 00001e57: DUP3 00001e58: PUSH2 0x1e5e 00001e5b: JUMP 00001e5c: JUMPDEST 00001e5d: CALLER 00001e5e: JUMPDEST 00001e5f: SWAP1 00001e60: POP 00001e61: PUSH2 0x0ded 00001e64: DUP2 00001e65: DUP4 00001e66: PUSH2 0x2226 00001e69: JUMP 00001e6a: JUMPDEST 00001e6b: JUMPDEST 00001e6c: POP 00001e6d: POP 00001e6e: POP 00001e6f: JUMP 00001e70: JUMPDEST 00001e71: PUSH1 0x00 00001e73: PUSH1 0x00 00001e75: PUSH2 0x1e7d 00001e78: DUP6 00001e79: PUSH2 0x0ca6 00001e7c: JUMP 00001e7d: JUMPDEST 00001e7e: ISZERO 00001e7f: PUSH2 0x1f8d 00001e82: JUMPI 00001e83: PUSH1 0x00 00001e85: DUP1 00001e86: SLOAD 00001e87: PUSH1 0x40 00001e89: DUP1 00001e8a: MLOAD 00001e8b: PUSH1 0x20 00001e8d: SWAP1 00001e8e: DUP2 00001e8f: ADD 00001e90: SWAP4 00001e91: SWAP1 00001e92: SWAP4 00001e93: MSTORE 00001e94: MLOAD 00001e95: PUSH1 0xe1 00001e97: PUSH1 0x02 00001e99: EXP 00001e9a: PUSH4 0x53481977 00001e9f: MUL 00001ea0: DUP2 00001ea1: MSTORE 00001ea2: CALLER 00001ea3: PUSH1 0x01 00001ea5: PUSH1 0xa0 00001ea7: PUSH1 0x02 00001ea9: EXP 00001eaa: SUB 00001eab: DUP2 00001eac: DUP2 00001ead: AND 00001eae: PUSH1 0x04 00001eb0: DUP5 00001eb1: ADD 00001eb2: DUP2 00001eb3: DUP2 00001eb4: MSTORE 00001eb5: PUSH1 0x24 00001eb7: DUP6 00001eb8: ADD 00001eb9: DUP13 00001eba: SWAP1 00001ebb: MSTORE 00001ebc: PUSH1 0x44 00001ebe: DUP6 00001ebf: ADD 00001ec0: DUP12 00001ec1: SWAP1 00001ec2: MSTORE 00001ec3: PUSH1 0x84 00001ec5: DUP6 00001ec6: ADD 00001ec7: SWAP2 00001ec8: SWAP1 00001ec9: SWAP2 00001eca: MSTORE 00001ecb: PUSH1 0xa0 00001ecd: PUSH1 0x64 00001ecf: DUP6 00001ed0: ADD 00001ed1: SWAP1 00001ed2: DUP2 00001ed3: MSTORE 00001ed4: DUP10 00001ed5: MLOAD 00001ed6: PUSH1 0xa4 00001ed8: DUP7 00001ed9: ADD 00001eda: MSTORE 00001edb: DUP10 00001edc: MLOAD 00001edd: SWAP3 00001ede: SWAP1 00001edf: SWAP6 00001ee0: AND 00001ee1: SWAP6 00001ee2: PUSH4 0xa69032ee 00001ee7: SWAP6 00001ee8: SWAP4 00001ee9: SWAP5 00001eea: DUP13 00001eeb: SWAP5 00001eec: DUP13 00001eed: SWAP5 00001eee: DUP13 00001eef: SWAP5 00001ef0: DUP9 00001ef1: SWAP5 00001ef2: SWAP1 00001ef3: SWAP4 00001ef4: PUSH1 0xc4 00001ef6: ADD 00001ef7: SWAP2 00001ef8: SWAP1 00001ef9: DUP7 00001efa: ADD 00001efb: SWAP1 00001efc: DUP1 00001efd: DUP4 00001efe: DUP4 00001eff: DUP3 00001f00: ISZERO 00001f01: PUSH2 0x1f25 00001f04: JUMPI 00001f05: JUMPDEST 00001f06: DUP1 00001f07: MLOAD 00001f08: DUP3 00001f09: MSTORE 00001f0a: PUSH1 0x20 00001f0c: DUP4 00001f0d: GT 00001f0e: ISZERO 00001f0f: PUSH2 0x1f25 00001f12: JUMPI 00001f13: PUSH1 0x1f 00001f15: NOT 00001f16: SWAP1 00001f17: SWAP3 00001f18: ADD 00001f19: SWAP2 00001f1a: PUSH1 0x20 00001f1c: SWAP2 00001f1d: DUP3 00001f1e: ADD 00001f1f: SWAP2 00001f20: ADD 00001f21: PUSH2 0x1f05 00001f24: JUMP 00001f25: JUMPDEST 00001f26: POP 00001f27: POP 00001f28: POP 00001f29: SWAP1 00001f2a: POP 00001f2b: SWAP1 00001f2c: DUP2 00001f2d: ADD 00001f2e: SWAP1 00001f2f: PUSH1 0x1f 00001f31: AND 00001f32: DUP1 00001f33: ISZERO 00001f34: PUSH2 0x1f51 00001f37: JUMPI 00001f38: DUP1 00001f39: DUP3 00001f3a: SUB 00001f3b: DUP1 00001f3c: MLOAD 00001f3d: PUSH1 0x01 00001f3f: DUP4 00001f40: PUSH1 0x20 00001f42: SUB 00001f43: PUSH2 0x0100 00001f46: EXP 00001f47: SUB 00001f48: NOT 00001f49: AND 00001f4a: DUP2 00001f4b: MSTORE 00001f4c: PUSH1 0x20 00001f4e: ADD 00001f4f: SWAP2 00001f50: POP 00001f51: JUMPDEST 00001f52: POP 00001f53: SWAP7 00001f54: POP 00001f55: POP 00001f56: POP 00001f57: POP 00001f58: POP 00001f59: POP 00001f5a: POP 00001f5b: PUSH1 0x20 00001f5d: PUSH1 0x40 00001f5f: MLOAD 00001f60: DUP1 00001f61: DUP4 00001f62: SUB 00001f63: DUP2 00001f64: PUSH1 0x00 00001f66: DUP8 00001f67: DUP1 00001f68: EXTCODESIZE 00001f69: ISZERO 00001f6a: ISZERO 00001f6b: PUSH2 0x1f70 00001f6e: JUMPI 00001f6f: INVALID 00001f70: JUMPDEST 00001f71: PUSH2 0x02c6 00001f74: GAS 00001f75: SUB 00001f76: CALL 00001f77: ISZERO 00001f78: ISZERO 00001f79: PUSH2 0x1f7e 00001f7c: JUMPI 00001f7d: INVALID 00001f7e: JUMPDEST 00001f7f: POP 00001f80: POP 00001f81: PUSH1 0x40 00001f83: MLOAD 00001f84: MLOAD 00001f85: SWAP3 00001f86: POP 00001f87: PUSH2 0x1faf 00001f8a: SWAP1 00001f8b: POP 00001f8c: JUMP 00001f8d: JUMPDEST 00001f8e: PUSH2 0x1f97 00001f91: DUP5 00001f92: DUP5 00001f93: PUSH2 0x2241 00001f96: JUMP 00001f97: JUMPDEST 00001f98: SWAP1 00001f99: POP 00001f9a: DUP1 00001f9b: ISZERO 00001f9c: PUSH2 0x1faa 00001f9f: JUMPI 00001fa0: PUSH2 0x1faa 00001fa3: DUP6 00001fa4: DUP6 00001fa5: DUP6 00001fa6: PUSH2 0x1fb7 00001fa9: JUMP 00001faa: JUMPDEST 00001fab: JUMPDEST 00001fac: DUP1 00001fad: SWAP2 00001fae: POP 00001faf: JUMPDEST 00001fb0: POP 00001fb1: SWAP4 00001fb2: SWAP3 00001fb3: POP 00001fb4: POP 00001fb5: POP 00001fb6: JUMP 00001fb7: JUMPDEST 00001fb8: PUSH1 0x06 00001fba: SLOAD 00001fbb: PUSH1 0x40 00001fbd: DUP1 00001fbe: MLOAD 00001fbf: PUSH1 0x00 00001fc1: PUSH1 0x20 00001fc3: SWAP2 00001fc4: DUP3 00001fc5: ADD 00001fc6: MSTORE 00001fc7: DUP2 00001fc8: MLOAD 00001fc9: PUSH1 0xe5 00001fcb: PUSH1 0x02 00001fcd: EXP 00001fce: PUSH3 0x6c4155 00001fd2: MUL 00001fd3: DUP2 00001fd4: MSTORE 00001fd5: PUSH1 0x04 00001fd7: DUP2 00001fd8: ADD 00001fd9: DUP8 00001fda: DUP2 00001fdb: MSTORE 00001fdc: PUSH1 0x24 00001fde: DUP3 00001fdf: ADD 00001fe0: SWAP4 00001fe1: DUP5 00001fe2: MSTORE 00001fe3: DUP6 00001fe4: MLOAD 00001fe5: PUSH1 0x44 00001fe7: DUP4 00001fe8: ADD 00001fe9: MSTORE 00001fea: DUP6 00001feb: MLOAD 00001fec: PUSH1 0x01 00001fee: PUSH1 0xa0 00001ff0: PUSH1 0x02 00001ff2: EXP 00001ff3: SUB 00001ff4: SWAP1 00001ff5: SWAP6 00001ff6: AND 00001ff7: SWAP5 00001ff8: PUSH4 0x0d882aa0 00001ffd: SWAP5 00001ffe: DUP9 00001fff: SWAP5 00002000: DUP11 00002001: SWAP5 00002002: DUP10 00002003: SWAP5 00002004: SWAP4 00002005: PUSH1 0x64 00002007: SWAP1 00002008: SWAP2 00002009: ADD 0000200a: SWAP2 0000200b: DUP6 0000200c: ADD 0000200d: SWAP1 0000200e: DUP1 0000200f: DUP4 00002010: DUP4 00002011: DUP3 00002012: ISZERO 00002013: PUSH2 0x2037 00002016: JUMPI 00002017: JUMPDEST 00002018: DUP1 00002019: MLOAD 0000201a: DUP3 0000201b: MSTORE 0000201c: PUSH1 0x20 0000201e: DUP4 0000201f: GT 00002020: ISZERO 00002021: PUSH2 0x2037 00002024: JUMPI 00002025: PUSH1 0x1f 00002027: NOT 00002028: SWAP1 00002029: SWAP3 0000202a: ADD 0000202b: SWAP2 0000202c: PUSH1 0x20 0000202e: SWAP2 0000202f: DUP3 00002030: ADD 00002031: SWAP2 00002032: ADD 00002033: PUSH2 0x2017 00002036: JUMP 00002037: JUMPDEST 00002038: POP 00002039: POP 0000203a: POP 0000203b: SWAP1 0000203c: POP 0000203d: SWAP1 0000203e: DUP2 0000203f: ADD 00002040: SWAP1 00002041: PUSH1 0x1f 00002043: AND 00002044: DUP1 00002045: ISZERO 00002046: PUSH2 0x2063 00002049: JUMPI 0000204a: DUP1 0000204b: DUP3 0000204c: SUB 0000204d: DUP1 0000204e: MLOAD 0000204f: PUSH1 0x01 00002051: DUP4 00002052: PUSH1 0x20 00002054: SUB 00002055: PUSH2 0x0100 00002058: EXP 00002059: SUB 0000205a: NOT 0000205b: AND 0000205c: DUP2 0000205d: MSTORE 0000205e: PUSH1 0x20 00002060: ADD 00002061: SWAP2 00002062: POP 00002063: JUMPDEST 00002064: POP 00002065: SWAP4 00002066: POP 00002067: POP 00002068: POP 00002069: POP 0000206a: PUSH1 0x20 0000206c: PUSH1 0x40 0000206e: MLOAD 0000206f: DUP1 00002070: DUP4 00002071: SUB 00002072: DUP2 00002073: DUP6 00002074: DUP9 00002075: DUP1 00002076: EXTCODESIZE 00002077: ISZERO 00002078: ISZERO 00002079: PUSH2 0x207e 0000207c: JUMPI 0000207d: INVALID 0000207e: JUMPDEST 0000207f: PUSH2 0x25ee 00002082: GAS 00002083: SUB 00002084: CALL 00002085: ISZERO 00002086: ISZERO 00002087: PUSH2 0x208c 0000208a: JUMPI 0000208b: INVALID 0000208c: JUMPDEST 0000208d: POP 0000208e: POP 0000208f: PUSH1 0x40 00002091: MLOAD 00002092: MLOAD 00002093: ISZERO 00002094: ISZERO 00002095: SWAP2 00002096: POP 00002097: PUSH2 0x0ded 0000209a: SWAP1 0000209b: POP 0000209c: JUMPI 0000209d: PUSH1 0x00 0000209f: PUSH1 0x00 000020a1: REVERT 000020a2: JUMPDEST 000020a3: JUMPDEST 000020a4: POP 000020a5: POP 000020a6: POP 000020a7: JUMP 000020a8: JUMPDEST 000020a9: PUSH1 0x00 000020ab: PUSH1 0x00 000020ad: PUSH2 0x20b5 000020b0: DUP6 000020b1: PUSH2 0x17aa 000020b4: JUMP 000020b5: JUMPDEST 000020b6: DUP1 000020b7: ISZERO 000020b8: PUSH2 0x20d3 000020bb: JUMPI 000020bc: POP 000020bd: DUP5 000020be: PUSH1 0x01 000020c0: PUSH1 0xa0 000020c2: PUSH1 0x02 000020c4: EXP 000020c5: SUB 000020c6: AND 000020c7: CALLER 000020c8: PUSH1 0x01 000020ca: PUSH1 0xa0 000020cc: PUSH1 0x02 000020ce: EXP 000020cf: SUB 000020d0: AND 000020d1: EQ 000020d2: ISZERO 000020d3: JUMPDEST 000020d4: ISZERO 000020d5: PUSH2 0x21f2 000020d8: JUMPI 000020d9: PUSH1 0x00 000020db: DUP1 000020dc: SLOAD 000020dd: PUSH1 0x01 000020df: SLOAD 000020e0: PUSH1 0x40 000020e2: DUP1 000020e3: MLOAD 000020e4: PUSH1 0x20 000020e6: SWAP1 000020e7: DUP2 000020e8: ADD 000020e9: SWAP5 000020ea: SWAP1 000020eb: SWAP5 000020ec: MSTORE 000020ed: MLOAD 000020ee: PUSH1 0xe1 000020f0: PUSH1 0x02 000020f2: EXP 000020f3: PUSH4 0x0b0ffb31 000020f8: MUL 000020f9: DUP2 000020fa: MSTORE 000020fb: CALLER 000020fc: PUSH1 0x01 000020fe: PUSH1 0xa0 00002100: PUSH1 0x02 00002102: EXP 00002103: SUB 00002104: DUP2 00002105: DUP2 00002106: AND 00002107: PUSH1 0x04 00002109: DUP5 0000210a: ADD 0000210b: DUP2 0000210c: DUP2 0000210d: MSTORE 0000210e: DUP13 0000210f: DUP4 00002110: AND 00002111: PUSH1 0x24 00002113: DUP7 00002114: ADD 00002115: MSTORE 00002116: PUSH1 0x44 00002118: DUP6 00002119: ADD 0000211a: DUP13 0000211b: SWAP1 0000211c: MSTORE 0000211d: PUSH1 0x64 0000211f: DUP6 00002120: ADD 00002121: DUP7 00002122: SWAP1 00002123: MSTORE 00002124: PUSH1 0xa4 00002126: DUP6 00002127: ADD 00002128: SWAP2 00002129: SWAP1 0000212a: SWAP2 0000212b: MSTORE 0000212c: PUSH1 0xc0 0000212e: PUSH1 0x84 00002130: DUP6 00002131: ADD 00002132: SWAP1 00002133: DUP2 00002134: MSTORE 00002135: DUP11 00002136: MLOAD 00002137: PUSH1 0xc4 00002139: DUP7 0000213a: ADD 0000213b: MSTORE 0000213c: DUP11 0000213d: MLOAD 0000213e: SWAP3 0000213f: SWAP1 00002140: SWAP7 00002141: AND 00002142: SWAP7 00002143: PUSH4 0x161ff662 00002148: SWAP7 00002149: SWAP4 0000214a: SWAP6 0000214b: DUP14 0000214c: SWAP6 0000214d: DUP14 0000214e: SWAP6 0000214f: SWAP2 00002150: SWAP5 00002151: DUP14 00002152: SWAP5 00002153: DUP10 00002154: SWAP5 00002155: SWAP1 00002156: SWAP4 00002157: SWAP3 00002158: PUSH1 0xe4 0000215a: ADD 0000215b: SWAP2 0000215c: SWAP1 0000215d: DUP7 0000215e: ADD 0000215f: SWAP1 00002160: DUP1 00002161: DUP4 00002162: DUP4 00002163: DUP3 00002164: ISZERO 00002165: PUSH2 0x2189 00002168: JUMPI 00002169: JUMPDEST 0000216a: DUP1 0000216b: MLOAD 0000216c: DUP3 0000216d: MSTORE 0000216e: PUSH1 0x20 00002170: DUP4 00002171: GT 00002172: ISZERO 00002173: PUSH2 0x2189 00002176: JUMPI 00002177: PUSH1 0x1f 00002179: NOT 0000217a: SWAP1 0000217b: SWAP3 0000217c: ADD 0000217d: SWAP2 0000217e: PUSH1 0x20 00002180: SWAP2 00002181: DUP3 00002182: ADD 00002183: SWAP2 00002184: ADD 00002185: PUSH2 0x2169 00002188: JUMP 00002189: JUMPDEST 0000218a: POP 0000218b: POP 0000218c: POP 0000218d: SWAP1 0000218e: POP 0000218f: SWAP1 00002190: DUP2 00002191: ADD 00002192: SWAP1 00002193: PUSH1 0x1f 00002195: AND 00002196: DUP1 00002197: ISZERO 00002198: PUSH2 0x21b5 0000219b: JUMPI 0000219c: DUP1 0000219d: DUP3 0000219e: SUB 0000219f: DUP1 000021a0: MLOAD 000021a1: PUSH1 0x01 000021a3: DUP4 000021a4: PUSH1 0x20 000021a6: SUB 000021a7: PUSH2 0x0100 000021aa: EXP 000021ab: SUB 000021ac: NOT 000021ad: AND 000021ae: DUP2 000021af: MSTORE 000021b0: PUSH1 0x20 000021b2: ADD 000021b3: SWAP2 000021b4: POP 000021b5: JUMPDEST 000021b6: POP 000021b7: SWAP8 000021b8: POP 000021b9: POP 000021ba: POP 000021bb: POP 000021bc: POP 000021bd: POP 000021be: POP 000021bf: POP 000021c0: PUSH1 0x20 000021c2: PUSH1 0x40 000021c4: MLOAD 000021c5: DUP1 000021c6: DUP4 000021c7: SUB 000021c8: DUP2 000021c9: PUSH1 0x00 000021cb: DUP8 000021cc: DUP1 000021cd: EXTCODESIZE 000021ce: ISZERO 000021cf: ISZERO 000021d0: PUSH2 0x1f70 000021d3: JUMPI 000021d4: INVALID 000021d5: JUMPDEST 000021d6: PUSH2 0x02c6 000021d9: GAS 000021da: SUB 000021db: CALL 000021dc: ISZERO 000021dd: ISZERO 000021de: PUSH2 0x1f7e 000021e1: JUMPI 000021e2: INVALID 000021e3: JUMPDEST 000021e4: POP 000021e5: POP 000021e6: PUSH1 0x40 000021e8: MLOAD 000021e9: MLOAD 000021ea: SWAP3 000021eb: POP 000021ec: PUSH2 0x1faf 000021ef: SWAP1 000021f0: POP 000021f1: JUMP 000021f2: JUMPDEST 000021f3: PUSH2 0x21fc 000021f6: DUP5 000021f7: DUP5 000021f8: PUSH2 0x2241 000021fb: JUMP 000021fc: JUMPDEST 000021fd: SWAP1 000021fe: POP 000021ff: DUP1 00002200: ISZERO 00002201: PUSH2 0x1faa 00002204: JUMPI 00002205: PUSH2 0x1faa 00002208: DUP6 00002209: DUP6 0000220a: PUSH2 0x1e3b 0000220d: JUMP 0000220e: JUMPDEST 0000220f: JUMPDEST 00002210: DUP1 00002211: SWAP2 00002212: POP 00002213: JUMPDEST 00002214: POP 00002215: SWAP4 00002216: SWAP3 00002217: POP 00002218: POP 00002219: POP 0000221a: JUMP 0000221b: JUMPDEST 0000221c: PUSH1 0x20 0000221e: DUP2 0000221f: ADD 00002220: MLOAD 00002221: JUMPDEST 00002222: SWAP2 00002223: SWAP1 00002224: POP 00002225: JUMP 00002226: JUMPDEST 00002227: PUSH2 0x2230 0000222a: DUP3 0000222b: DUP3 0000222c: PUSH2 0x2257 0000222f: JUMP 00002230: JUMPDEST 00002231: ISZERO 00002232: ISZERO 00002233: PUSH2 0x223c 00002236: JUMPI 00002237: PUSH1 0x00 00002239: PUSH1 0x00 0000223b: REVERT 0000223c: JUMPDEST 0000223d: JUMPDEST 0000223e: POP 0000223f: POP 00002240: JUMP 00002241: JUMPDEST 00002242: PUSH1 0x00 00002244: PUSH2 0x139b 00002247: CALLER 00002248: DUP5 00002249: DUP5 0000224a: PUSH2 0x1d1e 0000224d: JUMP 0000224e: JUMPDEST 0000224f: SWAP1 00002250: POP 00002251: JUMPDEST 00002252: SWAP3 00002253: SWAP2 00002254: POP 00002255: POP 00002256: JUMP 00002257: JUMPDEST 00002258: PUSH1 0x40 0000225a: MLOAD 0000225b: PUSH1 0x00 0000225d: SWAP1 0000225e: PUSH1 0x01 00002260: PUSH1 0xa0 00002262: PUSH1 0x02 00002264: EXP 00002265: SUB 00002266: DUP5 00002267: AND 00002268: SWAP1 00002269: DUP4 0000226a: SWAP1 0000226b: DUP4 0000226c: DUP2 0000226d: DUP2 0000226e: DUP2 0000226f: DUP6 00002270: DUP8 00002271: PUSH2 0x8796 00002274: GAS 00002275: SUB 00002276: CALL 00002277: SWAP4 00002278: POP 00002279: POP 0000227a: POP 0000227b: POP 0000227c: JUMPDEST 0000227d: SWAP3 0000227e: SWAP2 0000227f: POP 00002280: POP 00002281: JUMP 00002282: JUMPDEST 00002283: DUP3 00002284: DUP1 00002285: SLOAD 00002286: PUSH1 0x01 00002288: DUP2 00002289: PUSH1 0x01 0000228b: AND 0000228c: ISZERO 0000228d: PUSH2 0x0100 00002290: MUL 00002291: SUB 00002292: AND 00002293: PUSH1 0x02 00002295: SWAP1 00002296: DIV 00002297: SWAP1 00002298: PUSH1 0x00 0000229a: MSTORE 0000229b: PUSH1 0x20 0000229d: PUSH1 0x00 0000229f: KECCAK256 000022a0: SWAP1 000022a1: PUSH1 0x1f 000022a3: ADD 000022a4: PUSH1 0x20 000022a6: SWAP1 000022a7: DIV 000022a8: DUP2 000022a9: ADD 000022aa: SWAP3 000022ab: DUP3 000022ac: PUSH1 0x1f 000022ae: LT 000022af: PUSH2 0x22c3 000022b2: JUMPI 000022b3: DUP1 000022b4: MLOAD 000022b5: PUSH1 0xff 000022b7: NOT 000022b8: AND 000022b9: DUP4 000022ba: DUP1 000022bb: ADD 000022bc: OR 000022bd: DUP6 000022be: SSTORE 000022bf: PUSH2 0x22f0 000022c2: JUMP 000022c3: JUMPDEST 000022c4: DUP3 000022c5: DUP1 000022c6: ADD 000022c7: PUSH1 0x01 000022c9: ADD 000022ca: DUP6 000022cb: SSTORE 000022cc: DUP3 000022cd: ISZERO 000022ce: PUSH2 0x22f0 000022d1: JUMPI 000022d2: SWAP2 000022d3: DUP3 000022d4: ADD 000022d5: JUMPDEST 000022d6: DUP3 000022d7: DUP2 000022d8: GT 000022d9: ISZERO 000022da: PUSH2 0x22f0 000022dd: JUMPI 000022de: DUP3 000022df: MLOAD 000022e0: DUP3 000022e1: SSTORE 000022e2: SWAP2 000022e3: PUSH1 0x20 000022e5: ADD 000022e6: SWAP2 000022e7: SWAP1 000022e8: PUSH1 0x01 000022ea: ADD 000022eb: SWAP1 000022ec: PUSH2 0x22d5 000022ef: JUMP 000022f0: JUMPDEST 000022f1: JUMPDEST 000022f2: POP 000022f3: PUSH2 0x22fd 000022f6: SWAP3 000022f7: SWAP2 000022f8: POP 000022f9: PUSH2 0x2301 000022fc: JUMP 000022fd: JUMPDEST 000022fe: POP 000022ff: SWAP1 00002300: JUMP 00002301: JUMPDEST 00002302: PUSH2 0x0ab6 00002305: SWAP2 00002306: SWAP1 00002307: JUMPDEST 00002308: DUP1 00002309: DUP3 0000230a: GT 0000230b: ISZERO 0000230c: PUSH2 0x22fd 0000230f: JUMPI 00002310: PUSH1 0x00 00002312: DUP2 00002313: SSTORE 00002314: PUSH1 0x01 00002316: ADD 00002317: PUSH2 0x2307 0000231a: JUMP 0000231b: JUMPDEST 0000231c: POP 0000231d: SWAP1 0000231e: JUMP 0000231f: JUMPDEST 00002320: SWAP1 00002321: JUMP 00002322: STOP 00002323: LOG1 00002324: PUSH6 0x627a7a723058 0000232b: KECCAK256 0000232c: SIGNEXTEND 0000232d: LOG1 0000232e: PUSH0 0000232f: BLOBHASH 00002330: REVERT 00002331: UNKNOWN(0xEB) 00002332: UNKNOWN(0xDA) 00002333: UNKNOWN(0x2E) 00002334: DUP5 00002335: UNKNOWN(0xF6) 00002336: AND 00002337: UNKNOWN(0xD6) 00002338: UNKNOWN(0xD9) 00002339: PUSH21
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x44ddeb6145fce5dbd580004660b0d40258ca6e3ce246541669842eb33596eeba
call_targets:
0x7ea2df0f49d1cf7cb3a328f0038822b08aeb0ac1
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x44ddeb6145fce5dbd580004660b0d40258ca6e3ce246541669842eb33596eeba",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7ea2df0f49d1cf7cb3a328f0038822b08aeb0ac1"
],
"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": "0x029a8bf7",
"selector": "0x029a8bf7",
"calldata_variants": [
"0x029a8bf7",
"0x029a8bf70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1a9237de",
"selector": "0x1a9237de",
"calldata_variants": [
"0x1a9237de",
"0x1a9237de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23385089",
"selector": "0x23385089",
"calldata_variants": [
"0x23385089",
"0x233850890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23de6651",
"selector": "0x23de6651",
"calldata_variants": [
"0x23de6651",
"0x23de66510000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3099,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3217,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3322,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 20,
"guards_detected": [],
"untrusted_call_count": 20
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x44ddeb6145fce5dbd580004660b0d40258ca6e3ce246541669842eb33596eeba
call_targets:
0x7ea2df0f49d1cf7cb3a328f0038822b08aeb0ac1
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x44ddeb6145fce5dbd580004660b0d40258ca6e3ce246541669842eb33596eeba",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7ea2df0f49d1cf7cb3a328f0038822b08aeb0ac1"
],
"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": "0x029a8bf7",
"selector": "0x029a8bf7",
"calldata_variants": [
"0x029a8bf7",
"0x029a8bf70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1a9237de",
"selector": "0x1a9237de",
"calldata_variants": [
"0x1a9237de",
"0x1a9237de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23385089",
"selector": "0x23385089",
"calldata_variants": [
"0x23385089",
"0x233850890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23de6651",
"selector": "0x23de6651",
"calldata_variants": [
"0x23de6651",
"0x23de66510000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3099,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3217,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3322,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 20,
"guards_detected": []
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 19
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 20
}
|