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

Analysis Run

c02b2918-a233-465c-bb9d-5e61d841524d

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 5:34 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Authorization based on tx.origin
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31236 report.consolidate complete 1 / 1 3 months ago
95227 artifact.fetch complete 1 / 3 1 week ago
95228 tool.cast_disasm complete 1 / 3 1 week ago
95229 analysis.bundle complete 1 / 3 1 week ago
95230 capability.graph complete 1 / 3 1 week ago
95231 detector.run complete 1 / 3 1 week ago
95232 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.
View stderr
[codex:516604] OpenAI Codex v0.77.0 (research preview)
[codex:516604] --------
[codex:516604] workdir: /tmp/codex-multi-qxxgzmqb
[codex:516604] model: gpt-5.2-codex
[codex:516604] provider: openai
[codex:516604] approval: never
[codex:516604] sandbox: read-only
[codex:516604] reasoning effort: xhigh
[codex:516604] reasoning summaries: auto
[codex:516604] session id: 019b7d28-9877-7d83-95df-3c51e13b6113
[codex:516604] --------
[codex:516604] user
[codex:516604] 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:516604] 
[codex:516604] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:516604] 
[codex:516604] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:516604] - Gas inefficiency, code quality, or best practices
[codex:516604] - Theoretical vulnerabilities without a clear extraction path
[codex:516604] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:516604] - Issues requiring social engineering or off-chain coordination
[codex:516604] 
[codex:516604] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:516604] - CALL/DELEGATECALL with controllable destination or calldata
[codex:516604] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:516604] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:516604] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:516604] - External calls before state updates (reentrancy)
[codex:516604] - SELFDESTRUCT with controllable beneficiary
[codex:516604] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:516604] 
[codex:516604] For each finding, you MUST explain:
[codex:516604] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:516604] 2. The concrete sequence of transactions to extract value
[codex:516604] 3. Why you believe this is exploitable (not just suspicious)
[codex:516604] 
[codex:516604] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:516604] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:516604] 
[codex:516604] Output MUST be valid JSON matching the provided schema.
[codex:516604] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:516604] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:516604] mcp startup: no servers
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:516604] exec
[codex:516604] /bin/bash -lc ls in /tmp/codex-multi-qxxgzmqb succeeded in 5ms:
[codex:516604] BYTECODE_BUNDLE.txt
[codex:516604] codex-output-schema.json
[codex:516604] exec
[codex:516604] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-qxxgzmqb succeeded in 6ms:
[codex:516604] Runtime bytecode bundle for best-effort auditing.
[codex:516604] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:516604] 
[codex:516604] FILE: runtime_bytecode.hex
[codex:516604] 0x6080604052600436106100ab5760003560e01c80635a7747fc116100645780635a7747fc146103a45780637b103999146103ce57806391dde7c3146103e3578063e9bb84c2146103f8578063ea23c38914610431578063f5537ede1461045b576100ec565b80632e8e1993146100f157806335eadfba14610190578063485cc955146101d65780634867ba15146102115780634dc90908146102ff57806359c6a88314610329576100ec565b366100ec576040805133815234602082015281517f85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f86695929181900390910190a1005b600080fd5b3480156100fd57600080fd5b5061017c6004803603604081101561011457600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561013e57600080fd5b82018360208201111561015057600080fd5b803590602001918460208302840111600160201b8311171561017157600080fd5b50909250905061049e565b604080519115158252519081900360200190f35b34801561019c57600080fd5b506101ba600480360360208110156101b357600080fd5b5035610592565b604080516001600160a01b039092168252519081900360200190f35b3480156101e257600080fd5b5061017c600480360360408110156101f957600080fd5b506001600160a01b03813581169160200135166105d3565b34801561021d57600080fd5b5061017c600480360360c081101561023457600080fd5b810190602081018135600160201b81111561024e57600080fd5b82018360208201111561026057600080fd5b803590602001918460018302840111600160201b8311171561028157600080fd5b919390926001600160a01b03833581169360208101359091169260408201359260608301359260a081019060800135600160201b8111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111600160201b831117156102f457600080fd5b5090925090506106d8565b34801561030b57600080fd5b5061017c6004803603602081101561032257600080fd5b5035610923565b34801561033557600080fd5b5061017c6004803603602081101561034c57600080fd5b810190602081018135600160201b81111561036657600080fd5b82018360208201111561037857600080fd5b803590602001918460208302840111600160201b8311171561039957600080fd5b509092509050610982565b3480156103b057600080fd5b506101ba600480360360208110156103c757600080fd5b5035610a61565b3480156103da57600080fd5b506101ba610ae4565b3480156103ef57600080fd5b506101ba610af3565b34801561040457600080fd5b5061017c6004803603604081101561041b57600080fd5b506001600160a01b038135169060200135610b02565b34801561043d57600080fd5b5061017c6004803603602081101561045457600080fd5b5035610b4c565b34801561046757600080fd5b5061017c6004803603606081101561047e57600080fd5b506001600160a01b03813581169160208101359091169060400135610b61565b60003330146104de5760405162461bcd60e51b81526004018080602001828103825260258152602001806117c16025913960400191505060405180910390fd5b60005b82811015610587578383828181106104f557fe5b905060200201356001600160a01b03166001600160a01b0316639cee789f866040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506040513d602081101561057d57600080fd5b50506001016104e1565b506001949350505050565b60015460408051602080820185905282518083038201815291830190925280519101206000916105cd9130916001600160a01b031690610bb4565b92915050565b6002546000906001600160a01b03161561061e5760405162461bcd60e51b81526004018080602001828103825260278152602001806117e66027913960400191505060405180910390fd5b6001600160a01b0383166106635760405162461bcd60e51b815260040180806020018281038252602481526020018061179d6024913960400191505060405180910390fd5b6001600160a01b0382166106a85760405162461bcd60e51b81526004018080602001828103825260308152602001806118856030913960400191505060405180910390fd5b50600280546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617815590565b600254604080516304fc37bb60e31b815233600482015290516000926001600160a01b0316916327e1bdd8916024808301926020929190829003018186803b15801561072357600080fd5b505afa158015610737573d6000803e3d6000fd5b505050506040513d602081101561074d57600080fd5b505161078a5760405162461bcd60e51b815260040180806020018281038252602681526020018061183e6026913960400191505060405180910390fd5b60006108078a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528d93508c92508b918b91908b908b9081908401838280828437600092019190915250610c1392505050565b90506001600160a01b038116331480159061089757506002546040805163615fa81560e01b81526001600160a01b0384811660048301529151919092169163615fa815916024808301926020929190829003018186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d602081101561089457600080fd5b50515b6108d25760405162461bcd60e51b815260040180806020018281038252603181526020018061180d6031913960400191505060405180910390fd5b6109158888888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cdc92505050565b9a9950505050505050505050565b600154604080516020808201859052825180830382018152918301909252805191012060009182916109629130916001600160a01b0390911690610bb4565b60015490915061097b906001600160a01b031682610fe9565b9392505050565b60003330146109c25760405162461bcd60e51b81526004018080602001828103825260258152602001806117c16025913960400191505060405180910390fd5b60005b82811015610a57578383828181106109d957fe5b905060200201356001600160a01b03166001600160a01b0316631d4233b96040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b50506001016109c5565b5060019392505050565b6040805160208082018490528251808303820181529183019092528051910120600154600091908290610a9d906001600160a01b03168361104a565b604080516001600160a01b038316815290519192507f62e5833a6a9c6df6056429f9a3334d883f5b47d7d9cfbfe5cabdab658c707ae6919081900360200190a19392505050565b6002546001600160a01b031690565b6001546001600160a01b031690565b6000333014610b425760405162461bcd60e51b81526004018080602001828103825260258152602001806117c16025913960400191505060405180910390fd5b61097b83836110a2565b60009081526020819052604090205460ff1690565b6000333014610ba15760405162461bcd60e51b81526004018080602001828103825260258152602001806117c16025913960400191505060405180910390fd5b610bac84848461119d565b949350505050565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606083901b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152603790912060009190610c09848288611207565b9695505050505050565b600080868686868660405160200180866001600160a01b031660601b8152601401856001600160a01b031660601b815260140184815260200183815260200182805190602001908083835b60208310610c7d5780518252601f199092019160209182019101610c5e565b6001836020036101000a03801982511681845116808217855250505050505090500195505050505050604051602081830303815290604052805190602001209050610cd0610cca8261126b565b896112bc565b98975050505050505050565b60006001600160a01b0386163014610d255760405162461bcd60e51b81526004018080602001828103825260218152602001806118646021913960400191505060405180910390fd5b610d2e836113ad565b5060006060610d3e878786611426565b915091508115610eb9577f8ef33a9072a35d9b41d5c5c744ba88308c0fb19f45973df39146cdf54011675f878787878560405180866001600160a01b031681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610dca578181015183820152602001610db2565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610e2a578181015183820152602001610e12565b50505050905090810190601f168015610e575780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a18515610eb457604080516001600160a01b03891681526020810188905281517fd9b66890b56321a19d7a216dd918f8c0d4023759afc4088deb9be15aca68ece2929181900390910190a15b610fdb565b7f0dcd8c9c77f28ec16607ef7ef149c8c11b7b818e95009bf9639b8a35bb04d55f878787878560405180866001600160a01b031681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610f3b578181015183820152602001610f23565b50505050905090810190601f168015610f685780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f9b578181015183820152602001610f83565b50505050905090810190601f168015610fc85780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15b506001979650505050505050565b6000808360601b905060405169363d3d373d3d3d363d7360b01b815281600a8201526e5af43d82803e903d91602b57fd5bf360881b601e82015260408101602d600082873c600d810151600d83015114815183511416935050505092915050565b6000808360601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b6028820152836037826000f59050803b610bac57600080fd5b60405160009081906060906001600160a01b0386169085908481818185875af1925050503d80600081146110f2576040519150601f19603f3d011682016040523d82523d6000602084013e6110f7565b606091505b50915091508161114e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e736665724574682f457468207472616e73666572204661696c656400604482015290519081900360640190fd5b604080516001600160a01b03871681526020810186905281517fd9b66890b56321a19d7a216dd918f8c0d4023759afc4088deb9be15aca68ece2929181900390910190a1506001949350505050565b60006111b36001600160a01b03851684846114d9565b604080516001600160a01b0380871682528516602082015280820184905290517f3844b7075ed6e7d4b61342769cb2b1b325cba410a62932affaa90aee247dadf59181900360600190a15060019392505050565b604080516001600160f81b031960208083019190915260609390931b6bffffffffffffffffffffffff19166021820152603581019490945260558085019390935280518085039093018352607590930190925280519101206001600160a01b031690565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146112cf575060006105cd565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561131557600093505050506105cd565b8060ff16601b1415801561132d57508060ff16601c14155b1561133e57600093505050506105cd565b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611398573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60008181526020819052604081205460ff1615611406576040805162461bcd60e51b8152602060048201526012602482015271139bdb98d94bd05b1c9958591e48155cd95960721b604482015290519081900360640190fd5b506000908152602081905260409020805460ff1916600190811790915590565b60006060846001600160a01b031684846040518082805190602001908083835b602083106114655780518252601f199092019160209182019101611446565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114c7576040519150601f19603f3d011682016040523d82523d6000602084013e6114cc565b606091505b5090969095509350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261152b908490611530565b505050565b6060611585826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115e19092919063ffffffff16565b80519091501561152b578080602001905160208110156115a457600080fd5b505161152b5760405162461bcd60e51b815260040180806020018281038252602a8152602001806118b5602a913960400191505060405180910390fd5b6060610bac848460008560606115f685611796565b611647576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106116865780518252601f199092019160209182019101611667565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116e8576040519150601f19603f3d011682016040523d82523d6000602084013e6116ed565b606091505b50915091508115611701579150610bac9050565b8051156117115780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175b578181015183820152602001611743565b50505050905090810190601f1680156117885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe48656e657369734d617374657257616c6c65742f496e76616c69642052656769737472794d756c74695369672f53686f756c642062652063616c6c6564206279204d756c746953696748656e657369734d617374657257616c6c65742f416c726561647920496e697469616c697a65644d756c746953696743616c6c2f53686f756c642075736520646966666572656e742072656769737465726564206b65797348656e657369734d617374657257616c6c65742f4e6f7420417574686f72697a6564204b65794d756c746953696743616c6c2f4e6f7420557361626c65205369676e617475726548656e657369734d617374657257616c6c65742f496e76616c696420557365722057616c6c65742054656d706c6174655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122007a2d2e05d4b1398574d80346823260761f6c4ec13a95233056fde99c0d372fd64736f6c634300060c0033
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Planning bytecode analysis approach**
[codex:516604] 
[codex:516604] I’m focusing on building a minimal Python disassembler to parse the EVM bytecode offline and identify exploitable call patterns, since I can’t install tools or use network resources. I'll extract function selectors, inspect revert strings for hints, and look for vulnerable CALL or DELEGATECALL instructions with controllable arguments to find concrete profit extraction paths.
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] # simple disassembler
[codex:516604] opcodes={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] pc=0
[codex:516604] ops=[]
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if op>=0x60 and op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         data=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opcodes.get(op,hex(op)),data.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opcodes.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] # Print some slices around CALL/DELEGATECALL/CREATE/SELFDESTRUCT
[codex:516604] interesting={0xf1,0xf4,0xf0,0xf5,0xff}
[codex:516604] for i,(pc,op,imm) in enumerate(ops):
[codex:516604]     if op in ['CALL','DELEGATECALL','CREATE','CREATE2','SELFDESTRUCT']:
[codex:516604]         start=max(0,i-8); end=min(len(ops),i+8)
[codex:516604]         print('---- around',op,'pc',pc)
[codex:516604]         for j in range(start,end):
[codex:516604]             pcj,opj,immj=ops[j]
[codex:516604]             if immj:
[codex:516604]                 print(f'{pcj:04x}: {opj} 0x{immj}')
[codex:516604]             else:
[codex:516604]                 print(f'{pcj:04x}: {opj}')
[codex:516604]         print()
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 30ms:
[codex:516604] ---- around CALL pc 1366
[codex:516604] 054b: PUSH2 0x0553
[codex:516604] 054e: JUMPI
[codex:516604] 054f: PUSH1 0x00
[codex:516604] 0551: DUP1
[codex:516604] 0552: REVERT
[codex:516604] 0553: JUMPDEST
[codex:516604] 0554: POP
[codex:516604] 0555: GAS
[codex:516604] 0556: CALL
[codex:516604] 0557: ISZERO
[codex:516604] 0558: DUP1
[codex:516604] 0559: ISZERO
[codex:516604] 055a: PUSH2 0x0567
[codex:516604] 055d: JUMPI
[codex:516604] 055e: RETURNDATASIZE
[codex:516604] 055f: PUSH1 0x00
[codex:516604] 
[codex:516604] ---- around CALL pc 2598
[codex:516604] 0a1b: PUSH2 0x0a23
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing smart contract disassembly**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60 <= op <= 0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] # find SSTORE occurrences
[codex:516604] for i,(pc,op,imm) in enumerate(ops):
[codex:516604]     if op=='SSTORE':
[codex:516604]         print('SSTORE at pc',hex(pc))
[codex:516604]         for j in range(max(0,i-8), min(len(ops), i+8)):
[codex:516604]             pcj,opj,immj=ops[j]
[codex:516604]             if immj:
[codex:516604]                 print(f'{pcj:04x}: {opj} 0x{immj}')
[codex:516604]             else:
[codex:516604]                 print(f'{pcj:04x}: {opj}')
[codex:516604]         print()
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 25ms:
[codex:516604] SSTORE at pc 0x6c8
[codex:516604] 06c0: SUB
[codex:516604] 06c1: NOT
[codex:516604] 06c2: SWAP2
[codex:516604] 06c3: DUP3
[codex:516604] 06c4: AND
[codex:516604] 06c5: OR
[codex:516604] 06c6: SWAP1
[codex:516604] 06c7: SWAP2
[codex:516604] 06c8: SSTORE
[codex:516604] 06c9: PUSH1 0x01
[codex:516604] 06cb: DUP1
[codex:516604] 06cc: SLOAD
[codex:516604] 06cd: SWAP3
[codex:516604] 06ce: SWAP1
[codex:516604] 06cf: SWAP4
[codex:516604] 06d0: AND
[codex:516604] 
[codex:516604] SSTORE at pc 0x6d5
[codex:516604] 06cd: SWAP3
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing SSTORE usage and function entries**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] # function entry points from dispatcher
[codex:516604] entries=[0x49e,0x592,0x5d3,0x6d8,0x923,0x982,0xa61,0xae4,0xaf3,0xb02,0xb4c,0xb61]
[codex:516604] 
[codex:516604] # create mapping pc->index for quick lookup
[codex:516604] pc_index={pc:i for i,(pc,op,imm) in enumerate(ops)}
[codex:516604] 
[codex:516604] def dump_from(entry, count=120):
[codex:516604]     i=pc_index.get(entry)
[codex:516604]     if i is None:
[codex:516604]         print('entry',hex(entry),'not found')
[codex:516604]         return
[codex:516604]     print('\\n== entry',hex(entry),'==')
[codex:516604]     for j in range(i, min(len(ops), i+count)):
[codex:516604]         pcj,opj,immj=ops[j]
[codex:516604]         if immj:
[codex:516604]             print(f'{pcj:04x}: {opj} 0x{immj}')
[codex:516604]         else:
[codex:516604]             print(f'{pcj:04x}: {opj}')
[codex:516604] 
[codex:516604] for e in entries:
[codex:516604]     dump_from(e, 80)
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 23ms:
[codex:516604] 
[codex:516604] == entry 0x49e ==
[codex:516604] 049e: JUMPDEST
[codex:516604] 049f: PUSH1 0x00
[codex:516604] 04a1: CALLER
[codex:516604] 04a2: ADDRESS
[codex:516604] 04a3: EQ
[codex:516604] 04a4: PUSH2 0x04de
[codex:516604] 04a7: JUMPI
[codex:516604] 04a8: PUSH1 0x40
[codex:516604] 04aa: MLOAD
[codex:516604] 04ab: PUSH3 0x461bcd
[codex:516604] 04af: PUSH1 0xe5
[codex:516604] 04b1: SHL
[codex:516604] 04b2: DUP2
[codex:516604] 04b3: MSTORE
[codex:516604] 04b4: PUSH1 0x04
[codex:516604] 04b6: ADD
[codex:516604] 04b7: DUP1
[codex:516604] 04b8: DUP1
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing function access restrictions**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] # disassemble
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] # dump around pc range
[codex:516604] start=0x5d0; end=0x720
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 24ms:
[codex:516604] 05d0: POP
[codex:516604] 05d1: POP
[codex:516604] 05d2: JUMP
[codex:516604] 05d3: JUMPDEST
[codex:516604] 05d4: PUSH1 0x02
[codex:516604] 05d6: SLOAD
[codex:516604] 05d7: PUSH1 0x00
[codex:516604] 05d9: SWAP1
[codex:516604] 05da: PUSH1 0x01
[codex:516604] 05dc: PUSH1 0x01
[codex:516604] 05de: PUSH1 0xa0
[codex:516604] 05e0: SHL
[codex:516604] 05e1: SUB
[codex:516604] 05e2: AND
[codex:516604] 05e3: ISZERO
[codex:516604] 05e4: PUSH2 0x061e
[codex:516604] 05e7: JUMPI
[codex:516604] 05e8: PUSH1 0x40
[codex:516604] 05ea: MLOAD
[codex:516604] 05eb: PUSH3 0x461bcd
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Extracting revert strings from bytecode**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] import re
[codex:516604] b=open('BYTECODE_BUNDLE.txt').read()
[codex:516604] # extract ascii strings from the tail after 'fe' maybe; but we can regex for readable substrings
[codex:516604] s=re.findall(rb'([ -~]{4,})', bytes.fromhex(b.split('0x')[1].strip().split('\\n')[0]))
[codex:516604] for t in s:
[codex:516604]     if b'Genesis' in t or b'MultiSig' in t or b'Safe' in t or b'Address' in t or b'Transfer' in t or b'Invalid' in t:
[codex:516604]         print(t.decode('ascii'))
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 24ms:
[codex:516604] TransferEth/Eth transfer Failed
[codex:516604] SafeERC20: low-level call failed
[codex:516604] Address: call to non-contract
[codex:516604] HenesisMasterWallet/Invalid RegistryMultiSig/Should be called by MultiSigHenesisMasterWallet/Already InitializedMultiSigCall/Should use different registered keysHenesisMasterWallet/Not Authorized KeyMultiSigCall/Not Usable SignatureHenesisMasterWallet/Invalid User Wallet TemplateSafeERC20: ERC20 operation did not succeed
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing contract initialization and access checks**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] start=0x720; end=0x920
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 21ms:
[codex:516604] 0721: DUP1
[codex:516604] 0722: REVERT
[codex:516604] 0723: JUMPDEST
[codex:516604] 0724: POP
[codex:516604] 0725: GAS
[codex:516604] 0726: STATICCALL
[codex:516604] 0727: ISZERO
[codex:516604] 0728: DUP1
[codex:516604] 0729: ISZERO
[codex:516604] 072a: PUSH2 0x0737
[codex:516604] 072d: JUMPI
[codex:516604] 072e: RETURNDATASIZE
[codex:516604] 072f: PUSH1 0x00
[codex:516604] 0731: DUP1
[codex:516604] 0732: RETURNDATACOPY
[codex:516604] 0733: RETURNDATASIZE
[codex:516604] 0734: PUSH1 0x00
[codex:516604] 0736: REVERT
[codex:516604] 0737: JUMPDEST
[codex:516604] 0738: POP
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing complex multi-sig functions**
[codex:516604] 
[codex:516604] This function looks like it handles multi-signature transaction execution or user wallet creation, with signature checks and dynamic call data building reminiscent of Gnosis Safe patterns. I’m trying to identify the signature used to confirm legitimacy—0x615fa815 isn’t matching standard known signatures like EIP-1271’s `isValidSignature`. I want to dive deeper into related internal functions around 0xbb4 and 0xc13 to understand how calls are executed and whether any exploit could exist. Let’s inspect those internal functions carefully to clarify the contract’s security.
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] start=0x0bb4; end=0x1200
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 23ms:
[codex:516604] 0bb4: JUMPDEST
[codex:516604] 0bb5: PUSH1 0x40
[codex:516604] 0bb7: MLOAD
[codex:516604] 0bb8: PUSH20 0x3d602d80600a3d3981f3363d3d373d3d3d363d73
[codex:516604] 0bcd: PUSH1 0x60
[codex:516604] 0bcf: SHL
[codex:516604] 0bd0: DUP2
[codex:516604] 0bd1: MSTORE
[codex:516604] 0bd2: PUSH1 0x60
[codex:516604] 0bd4: DUP4
[codex:516604] 0bd5: SWAP1
[codex:516604] 0bd6: SHL
[codex:516604] 0bd7: PUSH1 0x14
[codex:516604] 0bd9: DUP3
[codex:516604] 0bda: ADD
[codex:516604] 0bdb: DUP2
[codex:516604] 0bdc: SWAP1
[codex:516604] 0bdd: MSTORE
[codex:516604] 0bde: PUSH15 0x5af43d82803e903d91602b57fd5bf3
[codex:516604] 0bee: PUSH1 0x88
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Continuing process**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] # disassemble
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] start=0x1200; end=0x1700
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 22ms:
[codex:516604] 1201: SWAP4
[codex:516604] 1202: SWAP3
[codex:516604] 1203: POP
[codex:516604] 1204: POP
[codex:516604] 1205: POP
[codex:516604] 1206: JUMP
[codex:516604] 1207: JUMPDEST
[codex:516604] 1208: PUSH1 0x40
[codex:516604] 120a: DUP1
[codex:516604] 120b: MLOAD
[codex:516604] 120c: PUSH1 0x01
[codex:516604] 120e: PUSH1 0x01
[codex:516604] 1210: PUSH1 0xf8
[codex:516604] 1212: SHL
[codex:516604] 1213: SUB
[codex:516604] 1214: NOT
[codex:516604] 1215: PUSH1 0x20
[codex:516604] 1217: DUP1
[codex:516604] 1218: DUP4
[codex:516604] 1219: ADD
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing function dispatch and access control**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] # dump around 0x390-0x470
[codex:516604] start=0x380; end=0x470
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 21ms:
[codex:516604] 0380: DUP5
[codex:516604] 0381: PUSH1 0x20
[codex:516604] 0383: DUP4
[codex:516604] 0384: MUL
[codex:516604] 0385: DUP5
[codex:516604] 0386: ADD
[codex:516604] 0387: GT
[codex:516604] 0388: PUSH1 0x01
[codex:516604] 038a: PUSH1 0x20
[codex:516604] 038c: SHL
[codex:516604] 038d: DUP4
[codex:516604] 038e: GT
[codex:516604] 038f: OR
[codex:516604] 0390: ISZERO
[codex:516604] 0391: PUSH2 0x0399
[codex:516604] 0394: JUMPI
[codex:516604] 0395: PUSH1 0x00
[codex:516604] 0397: DUP1
[codex:516604] 0398: REVERT
[codex:516604] 0399: JUMPDEST
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Scrolling further for entries**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] # disassemble
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] start=0x470; end=0x520
[codex:516604] for pc,op,imm in ops:
[codex:516604]     if start <= pc <= end:
[codex:516604]         if imm:
[codex:516604]             print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]         else:
[codex:516604]             print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 22ms:
[codex:516604] 0470: SUB
[codex:516604] 0471: PUSH1 0x60
[codex:516604] 0473: DUP2
[codex:516604] 0474: LT
[codex:516604] 0475: ISZERO
[codex:516604] 0476: PUSH2 0x047e
[codex:516604] 0479: JUMPI
[codex:516604] 047a: PUSH1 0x00
[codex:516604] 047c: DUP1
[codex:516604] 047d: REVERT
[codex:516604] 047e: JUMPDEST
[codex:516604] 047f: POP
[codex:516604] 0480: PUSH1 0x01
[codex:516604] 0482: PUSH1 0x01
[codex:516604] 0484: PUSH1 0xa0
[codex:516604] 0486: SHL
[codex:516604] 0487: SUB
[codex:516604] 0488: DUP2
[codex:516604] 0489: CALLDATALOAD
[codex:516604] 048a: DUP2
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Examining external function calls and security checks**
[codex:516604] 
[codex:516604] I'm analyzing which contract functions are externally accessible, focusing on those that deploy user wallets with CREATE2 and perform multisig execution via registry key checks. The goal is to understand their access control and potential vulnerabilities by dissecting calldata construction, especially around multisig authorization. I'm considering writing a small symbolic stack analysis script to clarify how calls to the registry are structured and verify correctness.
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] # disassemble into list of (pc, op, imm)
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] start=0x6d8; end=0x727
[codex:516604] segment=[o for o in ops if start<=o[0]<=end]
[codex:516604] 
[codex:516604] # simple symbolic stack
[codex:516604] stack=[]
[codex:516604] 
[codex:516604] def push(x):
[codex:516604]     stack.append(x)
[codex:516604] 
[codex:516604] def pop():
[codex:516604]     return stack.pop() if stack else 'EMPTY'
[codex:516604] 
[codex:516604] # operations we care about: PUSH, DUP, SWAP, POP, SLOAD, CALLER, MLOAD, AND, ADD, SUB, SHL
[codex:516604] for pc,op,imm in segment:
[codex:516604]     if op.startswith('PUSH'):
[codex:516604]         push(f'{op}({imm})')
[codex:516604]     elif op.startswith('DUP'):
[codex:516604]         n=int(op[3:])
[codex:516604]         if n<=len(stack): push(stack[-n])
[codex:516604]         else: push('DUP?')
[codex:516604]     elif op.startswith('SWAP'):
[codex:516604]         n=int(op[4:])
[codex:516604]         if n< len(stack):
[codex:516604]             stack[-1], stack[-1-n]=stack[-1-n], stack[-1]
[codex:516604]     elif op=='POP':
[codex:516604]         pop()
[codex:516604]     elif op=='SLOAD':
[codex:516604]         key=pop(); push(f'SLOAD({key})')
[codex:516604]     elif op=='MLOAD':
[codex:516604]         addr=pop(); push(f'MLOAD({addr})')
[codex:516604]     elif op=='CALLER':
[codex:516604]         push('CALLER')
[codex:516604]     elif op=='AND':
[codex:516604]         b=pop(); a=pop(); push(f'AND({a},{b})')
[codex:516604]     elif op=='SUB':
[codex:516604]         b=pop(); a=pop(); push(f'SUB({a},{b})')
[codex:516604]     elif op=='ADD':
[codex:516604]         b=pop(); a=pop(); push(f'ADD({a},{b})')
[codex:516604]     elif op=='SHL':
[codex:516604]         b=pop(); a=pop(); push(f'SHL({a},{b})')
[codex:516604]     elif op=='MSTORE':
[codex:516604]         val=pop(); addr=pop();
[codex:516604]     elif op=='EXTCODESIZE':
[codex:516604]         addr=pop(); push(f'EXTCODESIZE({addr})')
[codex:516604]     elif op=='STATICCALL':
[codex:516604]         # pop args: gas, to, in_offset, in_size, out_offset, out_size
[codex:516604]         out_size=pop(); out_offset=pop(); in_size=pop(); in_offset=pop(); to=pop(); gas=pop();
[codex:516604]         push(f'STATICCALL(gas={gas},to={to},in={in_offset}+{in_size},out={out_offset}+{out_size})')
[codex:516604]     elif op=='ISZERO':
[codex:516604]         a=pop(); push(f'ISZERO({a})')
[codex:516604]     elif op=='JUMPI':
[codex:516604]         dest=pop(); cond=pop();
[codex:516604]     # ignore others
[codex:516604] 
[codex:516604] print('Final stack (top last):')
[codex:516604] for i,s in enumerate(stack):
[codex:516604]     print(i, s)
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 22ms:
[codex:516604] Final stack (top last):
[codex:516604] 0 PUSH1(00)
[codex:516604] 1 AND(SLOAD(PUSH1(02)),SUB(PUSH1(01),SHL(PUSH1(01),PUSH1(a0))))
[codex:516604] 2 PUSH4(27e1bdd8)
[codex:516604] 3 ADD(PUSH1(24),MLOAD(PUSH1(40)))
[codex:516604] 4 PUSH1(20)
[codex:516604] 5 ISZERO(STATICCALL(gas=MLOAD(PUSH1(40)),to=ADD(PUSH1(24),SUB(MLOAD(PUSH1(40)),MLOAD(PUSH1(40)))),in=MLOAD(PUSH1(40))+AND(SLOAD(PUSH1(02)),SUB(PUSH1(01),SHL(PUSH1(01),PUSH1(a0)))),out=ISZERO(EXTCODESIZE(AND(SLOAD(PUSH1(02)),SUB(PUSH1(01),SHL(PUSH1(01),PUSH1(a0))))))+PUSH1(00)))
[codex:516604] 
[codex:516604] 
[codex:516604] 
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing error strings and access control logic**
[codex:516604] thinking
[codex:516604] **Examining wallet creation and initialization risks**
[codex:516604] 
[codex:516604] I’m reviewing how the contract creates user wallets with CREATE2 and noting that clones don’t seem initialized during deployment. Since initialization sets crucial registry and template addresses, if anyone can call initialize on a fresh clone first, they might hijack its control. This raises a potential risk where attackers could front-run legitimate initialization and take control of user wallets before proper setup happens.
[codex:516604] thinking
[codex:516604] **Clarifying wallet initialization and multisig authorization**
[codex:516604] 
[codex:516604] I'm sorting out that the master wallet contract sets user wallet template and registry during initialization, which must happen once to prevent takeover risks. The user wallets are clones of a separate template contract, so their initialization differs. The multisig logic requires two distinct registered keys, with special checks allowing the caller to count as one key, and verifies keys against the registry through static calls. This setup seems intentional and consistent, with no obvious bypass in signature or authorization checks based on the bytecode.
[codex:516604] thinking
[codex:516604] **Examining multisig signature verification details**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] # find ORIGIN opcode 0x32 positions
[codex:516604] positions=[i for i,op in enumerate(b) if op==0x32]
[codex:516604] print('ORIGIN positions:', [hex(p) for p in positions])
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 18ms:
[codex:516604] ORIGIN positions: ['0x11eb', '0x128c', '0x1551', '0x18bc', '0x18c3']
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Inspecting ORIGIN opcodes**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] opnames={
[codex:516604] 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:516604] 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:516604] 0x20:'SHA3',
[codex:516604] 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:516604] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:516604] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5c:'BEGINSUB',0x5d:'RETURNSUB',0x5e:'JUMPSUB',0x5f:'PUSH0',
[codex:516604] 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:516604] 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:516604] 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:516604] 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:516604] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:516604] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:516604] }
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] ops=[]
[codex:516604] pc=0
[codex:516604] while pc<len(b):
[codex:516604]     op=b[pc]
[codex:516604]     if 0x60<=op<=0x7f:
[codex:516604]         n=op-0x5f
[codex:516604]         imm=b[pc+1:pc+1+n]
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),imm.hex()))
[codex:516604]         pc+=1+n
[codex:516604]     else:
[codex:516604]         ops.append((pc,opnames.get(op,hex(op)),''))
[codex:516604]         pc+=1
[codex:516604] 
[codex:516604] for pos in [0x11eb,0x128c,0x1551,0x18bc,0x18c3]:
[codex:516604]     start=pos-20; end=pos+20
[codex:516604]     print('\\n-- around',hex(pos))
[codex:516604]     for pc,op,imm in ops:
[codex:516604]         if start<=pc<=end:
[codex:516604]             if imm:
[codex:516604]                 print(f'{pc:04x}: {op} 0x{imm}')
[codex:516604]             else:
[codex:516604]                 print(f'{pc:04x}: {op}')
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 23ms:
[codex:516604] 
[codex:516604] -- around 0x11eb
[codex:516604] 11f5: SWAP2
[codex:516604] 11f6: DUP2
[codex:516604] 11f7: SWAP1
[codex:516604] 11f8: SUB
[codex:516604] 11f9: PUSH1 0x60
[codex:516604] 11fb: ADD
[codex:516604] 11fc: SWAP1
[codex:516604] 11fd: LOG1
[codex:516604] 11fe: POP
[codex:516604] 11ff: PUSH1 0x01
[codex:516604] 
[codex:516604] -- around 0x128c
[codex:516604] 1291: PUSH1 0x20
[codex:516604] 1293: DUP1
[codex:516604] 1294: DUP4
[codex:516604] 1295: ADD
[codex:516604] 1296: SWAP2
[codex:516604] 1297: SWAP1
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Analyzing bytecode for vulnerabilities**
[codex:516604] 
[codex:516604] I'm carefully mapping out key functions and their security checks, especially the multisig execute function and creation processes, to see if any exploitable paths exist; so far, everything looks locked down with no clear attack vector from the bytecode alone.
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] positions=[i for i,op in enumerate(b) if op==0xff]
[codex:516604] print('SELFDESTRUCT positions:', [hex(p) for p in positions])
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 18ms:
[codex:516604] SELFDESTRUCT positions: ['0x9a', '0x51a', '0x51b', '0x51c', '0x51d', '0x9fd', '0x9fe', '0x9ff', '0xa00', '0xb5d', '0x1225', '0x1226', '0x1227', '0x1228', '0x1229', '0x122a', '0x122b', '0x122c', '0x122d', '0x122e', '0x122f', '0x1230', '0x12e4', '0x12e5', '0x12e6', '0x12e7', '0x12e8', '0x12e9', '0x12ea', '0x12eb', '0x12ec', '0x12ed', '0x12ee', '0x12ef', '0x12f0', '0x12f1', '0x12f2', '0x1318', '0x1327', '0x135e', '0x13be', '0x1419', '0x157f', '0x1580', '0x1581', '0x1582']
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Verifying absence of selfdestruct instructions**
[codex:516604] exec
[codex:516604] /bin/bash -lc "python - <<'PY'
[codex:516604] bytecode=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].split('\\n',1)[1].strip()
[codex:516604] if bytecode.startswith('0x'): bytecode=bytecode[2:]
[codex:516604] 
[codex:516604] b=bytes.fromhex(bytecode)
[codex:516604] positions=[i for i,op in enumerate(b) if op==0xf4]
[codex:516604] print('DELEGATECALL positions:', [hex(p) for p in positions][:20])
[codex:516604] PY" in /tmp/codex-multi-qxxgzmqb succeeded in 17ms:
[codex:516604] DELEGATECALL positions: ['0x2ee', '0xbe0', '0x100e', '0x1079']
[codex:516604] 
[codex:516604] thinking
[codex:516604] **Verifying call safety and preparing final JSON**
[codex:516604] codex
[codex:516604] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.","findings":[]}
[codex:516604] tokens used
[codex:516604] 125,534
[codex:516604] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T05:34:21.650947+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
1
CALL-family (heavy)
8
EXT*/BALANCE
7
Total opcodes
4334
Flags
create_opcodes_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00ab
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x5a7747fc
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x5a7747fc
00000024: EQ
00000025: PUSH2 0x03a4
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x7b103999
0000002f: EQ
00000030: PUSH2 0x03ce
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x91dde7c3
0000003a: EQ
0000003b: PUSH2 0x03e3
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe9bb84c2
00000045: EQ
00000046: PUSH2 0x03f8
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xea23c389
00000050: EQ
00000051: PUSH2 0x0431
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf5537ede
0000005b: EQ
0000005c: PUSH2 0x045b
0000005f: JUMPI
00000060: PUSH2 0x00ec
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x2e8e1993
0000006b: EQ
0000006c: PUSH2 0x00f1
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x35eadfba
00000076: EQ
00000077: PUSH2 0x0190
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x485cc955
00000081: EQ
00000082: PUSH2 0x01d6
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x4867ba15
0000008c: EQ
0000008d: PUSH2 0x0211
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x4dc90908
00000097: EQ
00000098: PUSH2 0x02ff
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0x59c6a883
000000a2: EQ
000000a3: PUSH2 0x0329
000000a6: JUMPI
000000a7: PUSH2 0x00ec
000000aa: JUMP
000000ab: JUMPDEST
000000ac: CALLDATASIZE
000000ad: PUSH2 0x00ec
000000b0: JUMPI
000000b1: PUSH1 0x40
000000b3: DUP1
000000b4: MLOAD
000000b5: CALLER
000000b6: DUP2
000000b7: MSTORE
000000b8: CALLVALUE
000000b9: PUSH1 0x20
000000bb: DUP3
000000bc: ADD
000000bd: MSTORE
000000be: DUP2
000000bf: MLOAD
000000c0: PUSH32 0x85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f86695
000000e1: SWAP3
000000e2: SWAP2
000000e3: DUP2
000000e4: SWAP1
000000e5: SUB
000000e6: SWAP1
000000e7: SWAP2
000000e8: ADD
000000e9: SWAP1
000000ea: LOG1
000000eb: STOP
000000ec: JUMPDEST
000000ed: PUSH1 0x00
000000ef: DUP1
000000f0: REVERT
000000f1: JUMPDEST
000000f2: CALLVALUE
000000f3: DUP1
000000f4: ISZERO
000000f5: PUSH2 0x00fd
000000f8: JUMPI
000000f9: PUSH1 0x00
000000fb: DUP1
000000fc: REVERT
000000fd: JUMPDEST
000000fe: POP
000000ff: PUSH2 0x017c
00000102: PUSH1 0x04
00000104: DUP1
00000105: CALLDATASIZE
00000106: SUB
00000107: PUSH1 0x40
00000109: DUP2
0000010a: LT
0000010b: ISZERO
0000010c: PUSH2 0x0114
0000010f: JUMPI
00000110: PUSH1 0x00
00000112: DUP1
00000113: REVERT
00000114: JUMPDEST
00000115: PUSH1 0x01
00000117: PUSH1 0x01
00000119: PUSH1 0xa0
0000011b: SHL
0000011c: SUB
0000011d: DUP3
0000011e: CALLDATALOAD
0000011f: AND
00000120: SWAP2
00000121: SWAP1
00000122: DUP2
00000123: ADD
00000124: SWAP1
00000125: PUSH1 0x40
00000127: DUP2
00000128: ADD
00000129: PUSH1 0x20
0000012b: DUP3
0000012c: ADD
0000012d: CALLDATALOAD
0000012e: PUSH1 0x01
00000130: PUSH1 0x20
00000132: SHL
00000133: DUP2
00000134: GT
00000135: ISZERO
00000136: PUSH2 0x013e
00000139: JUMPI
0000013a: PUSH1 0x00
0000013c: DUP1
0000013d: REVERT
0000013e: JUMPDEST
0000013f: DUP3
00000140: ADD
00000141: DUP4
00000142: PUSH1 0x20
00000144: DUP3
00000145: ADD
00000146: GT
00000147: ISZERO
00000148: PUSH2 0x0150
0000014b: JUMPI
0000014c: PUSH1 0x00
0000014e: DUP1
0000014f: REVERT
00000150: JUMPDEST
00000151: DUP1
00000152: CALLDATALOAD
00000153: SWAP1
00000154: PUSH1 0x20
00000156: ADD
00000157: SWAP2
00000158: DUP5
00000159: PUSH1 0x20
0000015b: DUP4
0000015c: MUL
0000015d: DUP5
0000015e: ADD
0000015f: GT
00000160: PUSH1 0x01
00000162: PUSH1 0x20
00000164: SHL
00000165: DUP4
00000166: GT
00000167: OR
00000168: ISZERO
00000169: PUSH2 0x0171
0000016c: JUMPI
0000016d: PUSH1 0x00
0000016f: DUP1
00000170: REVERT
00000171: JUMPDEST
00000172: POP
00000173: SWAP1
00000174: SWAP3
00000175: POP
00000176: SWAP1
00000177: POP
00000178: PUSH2 0x049e
0000017b: JUMP
0000017c: JUMPDEST
0000017d: PUSH1 0x40
0000017f: DUP1
00000180: MLOAD
00000181: SWAP2
00000182: ISZERO
00000183: ISZERO
00000184: DUP3
00000185: MSTORE
00000186: MLOAD
00000187: SWAP1
00000188: DUP2
00000189: SWAP1
0000018a: SUB
0000018b: PUSH1 0x20
0000018d: ADD
0000018e: SWAP1
0000018f: RETURN
00000190: JUMPDEST
00000191: CALLVALUE
00000192: DUP1
00000193: ISZERO
00000194: PUSH2 0x019c
00000197: JUMPI
00000198: PUSH1 0x00
0000019a: DUP1
0000019b: REVERT
0000019c: JUMPDEST
0000019d: POP
0000019e: PUSH2 0x01ba
000001a1: PUSH1 0x04
000001a3: DUP1
000001a4: CALLDATASIZE
000001a5: SUB
000001a6: PUSH1 0x20
000001a8: DUP2
000001a9: LT
000001aa: ISZERO
000001ab: PUSH2 0x01b3
000001ae: JUMPI
000001af: PUSH1 0x00
000001b1: DUP1
000001b2: REVERT
000001b3: JUMPDEST
000001b4: POP
000001b5: CALLDATALOAD
000001b6: PUSH2 0x0592
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH1 0x40
000001bd: DUP1
000001be: MLOAD
000001bf: PUSH1 0x01
000001c1: PUSH1 0x01
000001c3: PUSH1 0xa0
000001c5: SHL
000001c6: SUB
000001c7: SWAP1
000001c8: SWAP3
000001c9: AND
000001ca: DUP3
000001cb: MSTORE
000001cc: MLOAD
000001cd: SWAP1
000001ce: DUP2
000001cf: SWAP1
000001d0: SUB
000001d1: PUSH1 0x20
000001d3: ADD
000001d4: SWAP1
000001d5: RETURN
000001d6: JUMPDEST
000001d7: CALLVALUE
000001d8: DUP1
000001d9: ISZERO
000001da: PUSH2 0x01e2
000001dd: JUMPI
000001de: PUSH1 0x00
000001e0: DUP1
000001e1: REVERT
000001e2: JUMPDEST
000001e3: POP
000001e4: PUSH2 0x017c
000001e7: PUSH1 0x04
000001e9: DUP1
000001ea: CALLDATASIZE
000001eb: SUB
000001ec: PUSH1 0x40
000001ee: DUP2
000001ef: LT
000001f0: ISZERO
000001f1: PUSH2 0x01f9
000001f4: JUMPI
000001f5: PUSH1 0x00
000001f7: DUP1
000001f8: REVERT
000001f9: JUMPDEST
000001fa: POP
000001fb: PUSH1 0x01
000001fd: PUSH1 0x01
000001ff: PUSH1 0xa0
00000201: SHL
00000202: SUB
00000203: DUP2
00000204: CALLDATALOAD
00000205: DUP2
00000206: AND
00000207: SWAP2
00000208: PUSH1 0x20
0000020a: ADD
0000020b: CALLDATALOAD
0000020c: AND
0000020d: PUSH2 0x05d3
00000210: JUMP
00000211: JUMPDEST
00000212: CALLVALUE
00000213: DUP1
00000214: ISZERO
00000215: PUSH2 0x021d
00000218: JUMPI
00000219: PUSH1 0x00
0000021b: DUP1
0000021c: REVERT
0000021d: JUMPDEST
0000021e: POP
0000021f: PUSH2 0x017c
00000222: PUSH1 0x04
00000224: DUP1
00000225: CALLDATASIZE
00000226: SUB
00000227: PUSH1 0xc0
00000229: DUP2
0000022a: LT
0000022b: ISZERO
0000022c: PUSH2 0x0234
0000022f: JUMPI
00000230: PUSH1 0x00
00000232: DUP1
00000233: REVERT
00000234: JUMPDEST
00000235: DUP2
00000236: ADD
00000237: SWAP1
00000238: PUSH1 0x20
0000023a: DUP2
0000023b: ADD
0000023c: DUP2
0000023d: CALLDATALOAD
0000023e: PUSH1 0x01
00000240: PUSH1 0x20
00000242: SHL
00000243: DUP2
00000244: GT
00000245: ISZERO
00000246: PUSH2 0x024e
00000249: JUMPI
0000024a: PUSH1 0x00
0000024c: DUP1
0000024d: REVERT
0000024e: JUMPDEST
0000024f: DUP3
00000250: ADD
00000251: DUP4
00000252: PUSH1 0x20
00000254: DUP3
00000255: ADD
00000256: GT
00000257: ISZERO
00000258: PUSH2 0x0260
0000025b: JUMPI
0000025c: PUSH1 0x00
0000025e: DUP1
0000025f: REVERT
00000260: JUMPDEST
00000261: DUP1
00000262: CALLDATALOAD
00000263: SWAP1
00000264: PUSH1 0x20
00000266: ADD
00000267: SWAP2
00000268: DUP5
00000269: PUSH1 0x01
0000026b: DUP4
0000026c: MUL
0000026d: DUP5
0000026e: ADD
0000026f: GT
00000270: PUSH1 0x01
00000272: PUSH1 0x20
00000274: SHL
00000275: DUP4
00000276: GT
00000277: OR
00000278: ISZERO
00000279: PUSH2 0x0281
0000027c: JUMPI
0000027d: PUSH1 0x00
0000027f: DUP1
00000280: REVERT
00000281: JUMPDEST
00000282: SWAP2
00000283: SWAP4
00000284: SWAP1
00000285: SWAP3
00000286: PUSH1 0x01
00000288: PUSH1 0x01
0000028a: PUSH1 0xa0
0000028c: SHL
0000028d: SUB
0000028e: DUP4
0000028f: CALLDATALOAD
00000290: DUP2
00000291: AND
00000292: SWAP4
00000293: PUSH1 0x20
00000295: DUP2
00000296: ADD
00000297: CALLDATALOAD
00000298: SWAP1
00000299: SWAP2
0000029a: AND
0000029b: SWAP3
0000029c: PUSH1 0x40
0000029e: DUP3
0000029f: ADD
000002a0: CALLDATALOAD
000002a1: SWAP3
000002a2: PUSH1 0x60
000002a4: DUP4
000002a5: ADD
000002a6: CALLDATALOAD
000002a7: SWAP3
000002a8: PUSH1 0xa0
000002aa: DUP2
000002ab: ADD
000002ac: SWAP1
000002ad: PUSH1 0x80
000002af: ADD
000002b0: CALLDATALOAD
000002b1: PUSH1 0x01
000002b3: PUSH1 0x20
000002b5: SHL
000002b6: DUP2
000002b7: GT
000002b8: ISZERO
000002b9: PUSH2 0x02c1
000002bc: JUMPI
000002bd: PUSH1 0x00
000002bf: DUP1
000002c0: REVERT
000002c1: JUMPDEST
000002c2: DUP3
000002c3: ADD
000002c4: DUP4
000002c5: PUSH1 0x20
000002c7: DUP3
000002c8: ADD
000002c9: GT
000002ca: ISZERO
000002cb: PUSH2 0x02d3
000002ce: JUMPI
000002cf: PUSH1 0x00
000002d1: DUP1
000002d2: REVERT
000002d3: JUMPDEST
000002d4: DUP1
000002d5: CALLDATALOAD
000002d6: SWAP1
000002d7: PUSH1 0x20
000002d9: ADD
000002da: SWAP2
000002db: DUP5
000002dc: PUSH1 0x01
000002de: DUP4
000002df: MUL
000002e0: DUP5
000002e1: ADD
000002e2: GT
000002e3: PUSH1 0x01
000002e5: PUSH1 0x20
000002e7: SHL
000002e8: DUP4
000002e9: GT
000002ea: OR
000002eb: ISZERO
000002ec: PUSH2 0x02f4
000002ef: JUMPI
000002f0: PUSH1 0x00
000002f2: DUP1
000002f3: REVERT
000002f4: JUMPDEST
000002f5: POP
000002f6: SWAP1
000002f7: SWAP3
000002f8: POP
000002f9: SWAP1
000002fa: POP
000002fb: PUSH2 0x06d8
000002fe: JUMP
000002ff: JUMPDEST
00000300: CALLVALUE
00000301: DUP1
00000302: ISZERO
00000303: PUSH2 0x030b
00000306: JUMPI
00000307: PUSH1 0x00
00000309: DUP1
0000030a: REVERT
0000030b: JUMPDEST
0000030c: POP
0000030d: PUSH2 0x017c
00000310: PUSH1 0x04
00000312: DUP1
00000313: CALLDATASIZE
00000314: SUB
00000315: PUSH1 0x20
00000317: DUP2
00000318: LT
00000319: ISZERO
0000031a: PUSH2 0x0322
0000031d: JUMPI
0000031e: PUSH1 0x00
00000320: DUP1
00000321: REVERT
00000322: JUMPDEST
00000323: POP
00000324: CALLDATALOAD
00000325: PUSH2 0x0923
00000328: JUMP
00000329: JUMPDEST
0000032a: CALLVALUE
0000032b: DUP1
0000032c: ISZERO
0000032d: PUSH2 0x0335
00000330: JUMPI
00000331: PUSH1 0x00
00000333: DUP1
00000334: REVERT
00000335: JUMPDEST
00000336: POP
00000337: PUSH2 0x017c
0000033a: PUSH1 0x04
0000033c: DUP1
0000033d: CALLDATASIZE
0000033e: SUB
0000033f: PUSH1 0x20
00000341: DUP2
00000342: LT
00000343: ISZERO
00000344: PUSH2 0x034c
00000347: JUMPI
00000348: PUSH1 0x00
0000034a: DUP1
0000034b: REVERT
0000034c: JUMPDEST
0000034d: DUP2
0000034e: ADD
0000034f: SWAP1
00000350: PUSH1 0x20
00000352: DUP2
00000353: ADD
00000354: DUP2
00000355: CALLDATALOAD
00000356: PUSH1 0x01
00000358: PUSH1 0x20
0000035a: SHL
0000035b: DUP2
0000035c: GT
0000035d: ISZERO
0000035e: PUSH2 0x0366
00000361: JUMPI
00000362: PUSH1 0x00
00000364: DUP1
00000365: REVERT
00000366: JUMPDEST
00000367: DUP3
00000368: ADD
00000369: DUP4
0000036a: PUSH1 0x20
0000036c: DUP3
0000036d: ADD
0000036e: GT
0000036f: ISZERO
00000370: PUSH2 0x0378
00000373: JUMPI
00000374: PUSH1 0x00
00000376: DUP1
00000377: REVERT
00000378: JUMPDEST
00000379: DUP1
0000037a: CALLDATALOAD
0000037b: SWAP1
0000037c: PUSH1 0x20
0000037e: ADD
0000037f: SWAP2
00000380: DUP5
00000381: PUSH1 0x20
00000383: DUP4
00000384: MUL
00000385: DUP5
00000386: ADD
00000387: GT
00000388: PUSH1 0x01
0000038a: PUSH1 0x20
0000038c: SHL
0000038d: DUP4
0000038e: GT
0000038f: OR
00000390: ISZERO
00000391: PUSH2 0x0399
00000394: JUMPI
00000395: PUSH1 0x00
00000397: DUP1
00000398: REVERT
00000399: JUMPDEST
0000039a: POP
0000039b: SWAP1
0000039c: SWAP3
0000039d: POP
0000039e: SWAP1
0000039f: POP
000003a0: PUSH2 0x0982
000003a3: JUMP
000003a4: JUMPDEST
000003a5: CALLVALUE
000003a6: DUP1
000003a7: ISZERO
000003a8: PUSH2 0x03b0
000003ab: JUMPI
000003ac: PUSH1 0x00
000003ae: DUP1
000003af: REVERT
000003b0: JUMPDEST
000003b1: POP
000003b2: PUSH2 0x01ba
000003b5: PUSH1 0x04
000003b7: DUP1
000003b8: CALLDATASIZE
000003b9: SUB
000003ba: PUSH1 0x20
000003bc: DUP2
000003bd: LT
000003be: ISZERO
000003bf: PUSH2 0x03c7
000003c2: JUMPI
000003c3: PUSH1 0x00
000003c5: DUP1
000003c6: REVERT
000003c7: JUMPDEST
000003c8: POP
000003c9: CALLDATALOAD
000003ca: PUSH2 0x0a61
000003cd: JUMP
000003ce: JUMPDEST
000003cf: CALLVALUE
000003d0: DUP1
000003d1: ISZERO
000003d2: PUSH2 0x03da
000003d5: JUMPI
000003d6: PUSH1 0x00
000003d8: DUP1
000003d9: REVERT
000003da: JUMPDEST
000003db: POP
000003dc: PUSH2 0x01ba
000003df: PUSH2 0x0ae4
000003e2: JUMP
000003e3: JUMPDEST
000003e4: CALLVALUE
000003e5: DUP1
000003e6: ISZERO
000003e7: PUSH2 0x03ef
000003ea: JUMPI
000003eb: PUSH1 0x00
000003ed: DUP1
000003ee: REVERT
000003ef: JUMPDEST
000003f0: POP
000003f1: PUSH2 0x01ba
000003f4: PUSH2 0x0af3
000003f7: JUMP
000003f8: JUMPDEST
000003f9: CALLVALUE
000003fa: DUP1
000003fb: ISZERO
000003fc: PUSH2 0x0404
000003ff: JUMPI
00000400: PUSH1 0x00
00000402: DUP1
00000403: REVERT
00000404: JUMPDEST
00000405: POP
00000406: PUSH2 0x017c
00000409: PUSH1 0x04
0000040b: DUP1
0000040c: CALLDATASIZE
0000040d: SUB
0000040e: PUSH1 0x40
00000410: DUP2
00000411: LT
00000412: ISZERO
00000413: PUSH2 0x041b
00000416: JUMPI
00000417: PUSH1 0x00
00000419: DUP1
0000041a: REVERT
0000041b: JUMPDEST
0000041c: POP
0000041d: PUSH1 0x01
0000041f: PUSH1 0x01
00000421: PUSH1 0xa0
00000423: SHL
00000424: SUB
00000425: DUP2
00000426: CALLDATALOAD
00000427: AND
00000428: SWAP1
00000429: PUSH1 0x20
0000042b: ADD
0000042c: CALLDATALOAD
0000042d: PUSH2 0x0b02
00000430: JUMP
00000431: JUMPDEST
00000432: CALLVALUE
00000433: DUP1
00000434: ISZERO
00000435: PUSH2 0x043d
00000438: JUMPI
00000439: PUSH1 0x00
0000043b: DUP1
0000043c: REVERT
0000043d: JUMPDEST
0000043e: POP
0000043f: PUSH2 0x017c
00000442: PUSH1 0x04
00000444: DUP1
00000445: CALLDATASIZE
00000446: SUB
00000447: PUSH1 0x20
00000449: DUP2
0000044a: LT
0000044b: ISZERO
0000044c: PUSH2 0x0454
0000044f: JUMPI
00000450: PUSH1 0x00
00000452: DUP1
00000453: REVERT
00000454: JUMPDEST
00000455: POP
00000456: CALLDATALOAD
00000457: PUSH2 0x0b4c
0000045a: JUMP
0000045b: JUMPDEST
0000045c: CALLVALUE
0000045d: DUP1
0000045e: ISZERO
0000045f: PUSH2 0x0467
00000462: JUMPI
00000463: PUSH1 0x00
00000465: DUP1
00000466: REVERT
00000467: JUMPDEST
00000468: POP
00000469: PUSH2 0x017c
0000046c: PUSH1 0x04
0000046e: DUP1
0000046f: CALLDATASIZE
00000470: SUB
00000471: PUSH1 0x60
00000473: DUP2
00000474: LT
00000475: ISZERO
00000476: PUSH2 0x047e
00000479: JUMPI
0000047a: PUSH1 0x00
0000047c: DUP1
0000047d: REVERT
0000047e: JUMPDEST
0000047f: POP
00000480: PUSH1 0x01
00000482: PUSH1 0x01
00000484: PUSH1 0xa0
00000486: SHL
00000487: SUB
00000488: DUP2
00000489: CALLDATALOAD
0000048a: DUP2
0000048b: AND
0000048c: SWAP2
0000048d: PUSH1 0x20
0000048f: DUP2
00000490: ADD
00000491: CALLDATALOAD
00000492: SWAP1
00000493: SWAP2
00000494: AND
00000495: SWAP1
00000496: PUSH1 0x40
00000498: ADD
00000499: CALLDATALOAD
0000049a: PUSH2 0x0b61
0000049d: JUMP
0000049e: JUMPDEST
0000049f: PUSH1 0x00
000004a1: CALLER
000004a2: ADDRESS
000004a3: EQ
000004a4: PUSH2 0x04de
000004a7: JUMPI
000004a8: PUSH1 0x40
000004aa: MLOAD
000004ab: PUSH3 0x461bcd
000004af: PUSH1 0xe5
000004b1: SHL
000004b2: DUP2
000004b3: MSTORE
000004b4: PUSH1 0x04
000004b6: ADD
000004b7: DUP1
000004b8: DUP1
000004b9: PUSH1 0x20
000004bb: ADD
000004bc: DUP3
000004bd: DUP2
000004be: SUB
000004bf: DUP3
000004c0: MSTORE
000004c1: PUSH1 0x25
000004c3: DUP2
000004c4: MSTORE
000004c5: PUSH1 0x20
000004c7: ADD
000004c8: DUP1
000004c9: PUSH2 0x17c1
000004cc: PUSH1 0x25
000004ce: SWAP2
000004cf: CODECOPY
000004d0: PUSH1 0x40
000004d2: ADD
000004d3: SWAP2
000004d4: POP
000004d5: POP
000004d6: PUSH1 0x40
000004d8: MLOAD
000004d9: DUP1
000004da: SWAP2
000004db: SUB
000004dc: SWAP1
000004dd: REVERT
000004de: JUMPDEST
000004df: PUSH1 0x00
000004e1: JUMPDEST
000004e2: DUP3
000004e3: DUP2
000004e4: LT
000004e5: ISZERO
000004e6: PUSH2 0x0587
000004e9: JUMPI
000004ea: DUP4
000004eb: DUP4
000004ec: DUP3
000004ed: DUP2
000004ee: DUP2
000004ef: LT
000004f0: PUSH2 0x04f5
000004f3: JUMPI
000004f4: INVALID
000004f5: JUMPDEST
000004f6: SWAP1
000004f7: POP
000004f8: PUSH1 0x20
000004fa: MUL
000004fb: ADD
000004fc: CALLDATALOAD
000004fd: PUSH1 0x01
000004ff: PUSH1 0x01
00000501: PUSH1 0xa0
00000503: SHL
00000504: SUB
00000505: AND
00000506: PUSH1 0x01
00000508: PUSH1 0x01
0000050a: PUSH1 0xa0
0000050c: SHL
0000050d: SUB
0000050e: AND
0000050f: PUSH4 0x9cee789f
00000514: DUP7
00000515: PUSH1 0x40
00000517: MLOAD
00000518: DUP3
00000519: PUSH4 0xffffffff
0000051e: AND
0000051f: PUSH1 0xe0
00000521: SHL
00000522: DUP2
00000523: MSTORE
00000524: PUSH1 0x04
00000526: ADD
00000527: DUP1
00000528: DUP3
00000529: PUSH1 0x01
0000052b: PUSH1 0x01
0000052d: PUSH1 0xa0
0000052f: SHL
00000530: SUB
00000531: AND
00000532: DUP2
00000533: MSTORE
00000534: PUSH1 0x20
00000536: ADD
00000537: SWAP2
00000538: POP
00000539: POP
0000053a: PUSH1 0x20
0000053c: PUSH1 0x40
0000053e: MLOAD
0000053f: DUP1
00000540: DUP4
00000541: SUB
00000542: DUP2
00000543: PUSH1 0x00
00000545: DUP8
00000546: DUP1
00000547: EXTCODESIZE
00000548: ISZERO
00000549: DUP1
0000054a: ISZERO
0000054b: PUSH2 0x0553
0000054e: JUMPI
0000054f: PUSH1 0x00
00000551: DUP1
00000552: REVERT
00000553: JUMPDEST
00000554: POP
00000555: GAS
00000556: CALL
00000557: ISZERO
00000558: DUP1
00000559: ISZERO
0000055a: PUSH2 0x0567
0000055d: JUMPI
0000055e: RETURNDATASIZE
0000055f: PUSH1 0x00
00000561: DUP1
00000562: RETURNDATACOPY
00000563: RETURNDATASIZE
00000564: PUSH1 0x00
00000566: REVERT
00000567: JUMPDEST
00000568: POP
00000569: POP
0000056a: POP
0000056b: POP
0000056c: PUSH1 0x40
0000056e: MLOAD
0000056f: RETURNDATASIZE
00000570: PUSH1 0x20
00000572: DUP2
00000573: LT
00000574: ISZERO
00000575: PUSH2 0x057d
00000578: JUMPI
00000579: PUSH1 0x00
0000057b: DUP1
0000057c: REVERT
0000057d: JUMPDEST
0000057e: POP
0000057f: POP
00000580: PUSH1 0x01
00000582: ADD
00000583: PUSH2 0x04e1
00000586: JUMP
00000587: JUMPDEST
00000588: POP
00000589: PUSH1 0x01
0000058b: SWAP5
0000058c: SWAP4
0000058d: POP
0000058e: POP
0000058f: POP
00000590: POP
00000591: JUMP
00000592: JUMPDEST
00000593: PUSH1 0x01
00000595: SLOAD
00000596: PUSH1 0x40
00000598: DUP1
00000599: MLOAD
0000059a: PUSH1 0x20
0000059c: DUP1
0000059d: DUP3
0000059e: ADD
0000059f: DUP6
000005a0: SWAP1
000005a1: MSTORE
000005a2: DUP3
000005a3: MLOAD
000005a4: DUP1
000005a5: DUP4
000005a6: SUB
000005a7: DUP3
000005a8: ADD
000005a9: DUP2
000005aa: MSTORE
000005ab: SWAP2
000005ac: DUP4
000005ad: ADD
000005ae: SWAP1
000005af: SWAP3
000005b0: MSTORE
000005b1: DUP1
000005b2: MLOAD
000005b3: SWAP2
000005b4: ADD
000005b5: KECCAK256
000005b6: PUSH1 0x00
000005b8: SWAP2
000005b9: PUSH2 0x05cd
000005bc: SWAP2
000005bd: ADDRESS
000005be: SWAP2
000005bf: PUSH1 0x01
000005c1: PUSH1 0x01
000005c3: PUSH1 0xa0
000005c5: SHL
000005c6: SUB
000005c7: AND
000005c8: SWAP1
000005c9: PUSH2 0x0bb4
000005cc: JUMP
000005cd: JUMPDEST
000005ce: SWAP3
000005cf: SWAP2
000005d0: POP
000005d1: POP
000005d2: JUMP
000005d3: JUMPDEST
000005d4: PUSH1 0x02
000005d6: SLOAD
000005d7: PUSH1 0x00
000005d9: SWAP1
000005da: PUSH1 0x01
000005dc: PUSH1 0x01
000005de: PUSH1 0xa0
000005e0: SHL
000005e1: SUB
000005e2: AND
000005e3: ISZERO
000005e4: PUSH2 0x061e
000005e7: JUMPI
000005e8: PUSH1 0x40
000005ea: MLOAD
000005eb: PUSH3 0x461bcd
000005ef: PUSH1 0xe5
000005f1: SHL
000005f2: DUP2
000005f3: MSTORE
000005f4: PUSH1 0x04
000005f6: ADD
000005f7: DUP1
000005f8: DUP1
000005f9: PUSH1 0x20
000005fb: ADD
000005fc: DUP3
000005fd: DUP2
000005fe: SUB
000005ff: DUP3
00000600: MSTORE
00000601: PUSH1 0x27
00000603: DUP2
00000604: MSTORE
00000605: PUSH1 0x20
00000607: ADD
00000608: DUP1
00000609: PUSH2 0x17e6
0000060c: PUSH1 0x27
0000060e: SWAP2
0000060f: CODECOPY
00000610: PUSH1 0x40
00000612: ADD
00000613: SWAP2
00000614: POP
00000615: POP
00000616: PUSH1 0x40
00000618: MLOAD
00000619: DUP1
0000061a: SWAP2
0000061b: SUB
0000061c: SWAP1
0000061d: REVERT
0000061e: JUMPDEST
0000061f: PUSH1 0x01
00000621: PUSH1 0x01
00000623: PUSH1 0xa0
00000625: SHL
00000626: SUB
00000627: DUP4
00000628: AND
00000629: PUSH2 0x0663
0000062c: JUMPI
0000062d: PUSH1 0x40
0000062f: MLOAD
00000630: PUSH3 0x461bcd
00000634: PUSH1 0xe5
00000636: SHL
00000637: DUP2
00000638: MSTORE
00000639: PUSH1 0x04
0000063b: ADD
0000063c: DUP1
0000063d: DUP1
0000063e: PUSH1 0x20
00000640: ADD
00000641: DUP3
00000642: DUP2
00000643: SUB
00000644: DUP3
00000645: MSTORE
00000646: PUSH1 0x24
00000648: DUP2
00000649: MSTORE
0000064a: PUSH1 0x20
0000064c: ADD
0000064d: DUP1
0000064e: PUSH2 0x179d
00000651: PUSH1 0x24
00000653: SWAP2
00000654: CODECOPY
00000655: PUSH1 0x40
00000657: ADD
00000658: SWAP2
00000659: POP
0000065a: POP
0000065b: PUSH1 0x40
0000065d: MLOAD
0000065e: DUP1
0000065f: SWAP2
00000660: SUB
00000661: SWAP1
00000662: REVERT
00000663: JUMPDEST
00000664: PUSH1 0x01
00000666: PUSH1 0x01
00000668: PUSH1 0xa0
0000066a: SHL
0000066b: SUB
0000066c: DUP3
0000066d: AND
0000066e: PUSH2 0x06a8
00000671: JUMPI
00000672: PUSH1 0x40
00000674: MLOAD
00000675: PUSH3 0x461bcd
00000679: PUSH1 0xe5
0000067b: SHL
0000067c: DUP2
0000067d: MSTORE
0000067e: PUSH1 0x04
00000680: ADD
00000681: DUP1
00000682: DUP1
00000683: PUSH1 0x20
00000685: ADD
00000686: DUP3
00000687: DUP2
00000688: SUB
00000689: DUP3
0000068a: MSTORE
0000068b: PUSH1 0x30
0000068d: DUP2
0000068e: MSTORE
0000068f: PUSH1 0x20
00000691: ADD
00000692: DUP1
00000693: PUSH2 0x1885
00000696: PUSH1 0x30
00000698: SWAP2
00000699: CODECOPY
0000069a: PUSH1 0x40
0000069c: ADD
0000069d: SWAP2
0000069e: POP
0000069f: POP
000006a0: PUSH1 0x40
000006a2: MLOAD
000006a3: DUP1
000006a4: SWAP2
000006a5: SUB
000006a6: SWAP1
000006a7: REVERT
000006a8: JUMPDEST
000006a9: POP
000006aa: PUSH1 0x02
000006ac: DUP1
000006ad: SLOAD
000006ae: PUSH1 0x01
000006b0: PUSH1 0x01
000006b2: PUSH1 0xa0
000006b4: SHL
000006b5: SUB
000006b6: SWAP4
000006b7: DUP5
000006b8: AND
000006b9: PUSH1 0x01
000006bb: PUSH1 0x01
000006bd: PUSH1 0xa0
000006bf: SHL
000006c0: SUB
000006c1: NOT
000006c2: SWAP2
000006c3: DUP3
000006c4: AND
000006c5: OR
000006c6: SWAP1
000006c7: SWAP2
000006c8: SSTORE
000006c9: PUSH1 0x01
000006cb: DUP1
000006cc: SLOAD
000006cd: SWAP3
000006ce: SWAP1
000006cf: SWAP4
000006d0: AND
000006d1: SWAP2
000006d2: AND
000006d3: OR
000006d4: DUP2
000006d5: SSTORE
000006d6: SWAP1
000006d7: JUMP
000006d8: JUMPDEST
000006d9: PUSH1 0x02
000006db: SLOAD
000006dc: PUSH1 0x40
000006de: DUP1
000006df: MLOAD
000006e0: PUSH4 0x04fc37bb
000006e5: PUSH1 0xe3
000006e7: SHL
000006e8: DUP2
000006e9: MSTORE
000006ea: CALLER
000006eb: PUSH1 0x04
000006ed: DUP3
000006ee: ADD
000006ef: MSTORE
000006f0: SWAP1
000006f1: MLOAD
000006f2: PUSH1 0x00
000006f4: SWAP3
000006f5: PUSH1 0x01
000006f7: PUSH1 0x01
000006f9: PUSH1 0xa0
000006fb: SHL
000006fc: SUB
000006fd: AND
000006fe: SWAP2
000006ff: PUSH4 0x27e1bdd8
00000704: SWAP2
00000705: PUSH1 0x24
00000707: DUP1
00000708: DUP4
00000709: ADD
0000070a: SWAP3
0000070b: PUSH1 0x20
0000070d: SWAP3
0000070e: SWAP2
0000070f: SWAP1
00000710: DUP3
00000711: SWAP1
00000712: SUB
00000713: ADD
00000714: DUP2
00000715: DUP7
00000716: DUP1
00000717: EXTCODESIZE
00000718: ISZERO
00000719: DUP1
0000071a: ISZERO
0000071b: PUSH2 0x0723
0000071e: JUMPI
0000071f: PUSH1 0x00
00000721: DUP1
00000722: REVERT
00000723: JUMPDEST
00000724: POP
00000725: GAS
00000726: STATICCALL
00000727: ISZERO
00000728: DUP1
00000729: ISZERO
0000072a: PUSH2 0x0737
0000072d: JUMPI
0000072e: RETURNDATASIZE
0000072f: PUSH1 0x00
00000731: DUP1
00000732: RETURNDATACOPY
00000733: RETURNDATASIZE
00000734: PUSH1 0x00
00000736: REVERT
00000737: JUMPDEST
00000738: POP
00000739: POP
0000073a: POP
0000073b: POP
0000073c: PUSH1 0x40
0000073e: MLOAD
0000073f: RETURNDATASIZE
00000740: PUSH1 0x20
00000742: DUP2
00000743: LT
00000744: ISZERO
00000745: PUSH2 0x074d
00000748: JUMPI
00000749: PUSH1 0x00
0000074b: DUP1
0000074c: REVERT
0000074d: JUMPDEST
0000074e: POP
0000074f: MLOAD
00000750: PUSH2 0x078a
00000753: JUMPI
00000754: PUSH1 0x40
00000756: MLOAD
00000757: PUSH3 0x461bcd
0000075b: PUSH1 0xe5
0000075d: SHL
0000075e: DUP2
0000075f: MSTORE
00000760: PUSH1 0x04
00000762: ADD
00000763: DUP1
00000764: DUP1
00000765: PUSH1 0x20
00000767: ADD
00000768: DUP3
00000769: DUP2
0000076a: SUB
0000076b: DUP3
0000076c: MSTORE
0000076d: PUSH1 0x26
0000076f: DUP2
00000770: MSTORE
00000771: PUSH1 0x20
00000773: ADD
00000774: DUP1
00000775: PUSH2 0x183e
00000778: PUSH1 0x26
0000077a: SWAP2
0000077b: CODECOPY
0000077c: PUSH1 0x40
0000077e: ADD
0000077f: SWAP2
00000780: POP
00000781: POP
00000782: PUSH1 0x40
00000784: MLOAD
00000785: DUP1
00000786: SWAP2
00000787: SUB
00000788: SWAP1
00000789: REVERT
0000078a: JUMPDEST
0000078b: PUSH1 0x00
0000078d: PUSH2 0x0807
00000790: DUP11
00000791: DUP11
00000792: DUP1
00000793: DUP1
00000794: PUSH1 0x1f
00000796: ADD
00000797: PUSH1 0x20
00000799: DUP1
0000079a: SWAP2
0000079b: DIV
0000079c: MUL
0000079d: PUSH1 0x20
0000079f: ADD
000007a0: PUSH1 0x40
000007a2: MLOAD
000007a3: SWAP1
000007a4: DUP2
000007a5: ADD
000007a6: PUSH1 0x40
000007a8: MSTORE
000007a9: DUP1
000007aa: SWAP4
000007ab: SWAP3
000007ac: SWAP2
000007ad: SWAP1
000007ae: DUP2
000007af: DUP2
000007b0: MSTORE
000007b1: PUSH1 0x20
000007b3: ADD
000007b4: DUP4
000007b5: DUP4
000007b6: DUP1
000007b7: DUP3
000007b8: DUP5
000007b9: CALLDATACOPY
000007ba: PUSH1 0x00
000007bc: SWAP3
000007bd: ADD
000007be: SWAP2
000007bf: SWAP1
000007c0: SWAP2
000007c1: MSTORE
000007c2: POP
000007c3: POP
000007c4: PUSH1 0x40
000007c6: DUP1
000007c7: MLOAD
000007c8: PUSH1 0x20
000007ca: PUSH1 0x1f
000007cc: DUP11
000007cd: ADD
000007ce: DUP2
000007cf: SWAP1
000007d0: DIV
000007d1: DUP2
000007d2: MUL
000007d3: DUP3
000007d4: ADD
000007d5: DUP2
000007d6: ADD
000007d7: SWAP1
000007d8: SWAP3
000007d9: MSTORE
000007da: DUP9
000007db: DUP2
000007dc: MSTORE
000007dd: DUP14
000007de: SWAP4
000007df: POP
000007e0: DUP13
000007e1: SWAP3
000007e2: POP
000007e3: DUP12
000007e4: SWAP2
000007e5: DUP12
000007e6: SWAP2
000007e7: SWAP1
000007e8: DUP12
000007e9: SWAP1
000007ea: DUP12
000007eb: SWAP1
000007ec: DUP2
000007ed: SWAP1
000007ee: DUP5
000007ef: ADD
000007f0: DUP4
000007f1: DUP3
000007f2: DUP1
000007f3: DUP3
000007f4: DUP5
000007f5: CALLDATACOPY
000007f6: PUSH1 0x00
000007f8: SWAP3
000007f9: ADD
000007fa: SWAP2
000007fb: SWAP1
000007fc: SWAP2
000007fd: MSTORE
000007fe: POP
000007ff: PUSH2 0x0c13
00000802: SWAP3
00000803: POP
00000804: POP
00000805: POP
00000806: JUMP
00000807: JUMPDEST
00000808: SWAP1
00000809: POP
0000080a: PUSH1 0x01
0000080c: PUSH1 0x01
0000080e: PUSH1 0xa0
00000810: SHL
00000811: SUB
00000812: DUP2
00000813: AND
00000814: CALLER
00000815: EQ
00000816: DUP1
00000817: ISZERO
00000818: SWAP1
00000819: PUSH2 0x0897
0000081c: JUMPI
0000081d: POP
0000081e: PUSH1 0x02
00000820: SLOAD
00000821: PUSH1 0x40
00000823: DUP1
00000824: MLOAD
00000825: PUSH4 0x615fa815
0000082a: PUSH1 0xe0
0000082c: SHL
0000082d: DUP2
0000082e: MSTORE
0000082f: PUSH1 0x01
00000831: PUSH1 0x01
00000833: PUSH1 0xa0
00000835: SHL
00000836: SUB
00000837: DUP5
00000838: DUP2
00000839: AND
0000083a: PUSH1 0x04
0000083c: DUP4
0000083d: ADD
0000083e: MSTORE
0000083f: SWAP2
00000840: MLOAD
00000841: SWAP2
00000842: SWAP1
00000843: SWAP3
00000844: AND
00000845: SWAP2
00000846: PUSH4 0x615fa815
0000084b: SWAP2
0000084c: PUSH1 0x24
0000084e: DUP1
0000084f: DUP4
00000850: ADD
00000851: SWAP3
00000852: PUSH1 0x20
00000854: SWAP3
00000855: SWAP2
00000856: SWAP1
00000857: DUP3
00000858: SWAP1
00000859: SUB
0000085a: ADD
0000085b: DUP2
0000085c: DUP7
0000085d: DUP1
0000085e: EXTCODESIZE
0000085f: ISZERO
00000860: DUP1
00000861: ISZERO
00000862: PUSH2 0x086a
00000865: JUMPI
00000866: PUSH1 0x00
00000868: DUP1
00000869: REVERT
0000086a: JUMPDEST
0000086b: POP
0000086c: GAS
0000086d: STATICCALL
0000086e: ISZERO
0000086f: DUP1
00000870: ISZERO
00000871: PUSH2 0x087e
00000874: JUMPI
00000875: RETURNDATASIZE
00000876: PUSH1 0x00
00000878: DUP1
00000879: RETURNDATACOPY
0000087a: RETURNDATASIZE
0000087b: PUSH1 0x00
0000087d: REVERT
0000087e: JUMPDEST
0000087f: POP
00000880: POP
00000881: POP
00000882: POP
00000883: PUSH1 0x40
00000885: MLOAD
00000886: RETURNDATASIZE
00000887: PUSH1 0x20
00000889: DUP2
0000088a: LT
0000088b: ISZERO
0000088c: PUSH2 0x0894
0000088f: JUMPI
00000890: PUSH1 0x00
00000892: DUP1
00000893: REVERT
00000894: JUMPDEST
00000895: POP
00000896: MLOAD
00000897: JUMPDEST
00000898: PUSH2 0x08d2
0000089b: JUMPI
0000089c: PUSH1 0x40
0000089e: MLOAD
0000089f: PUSH3 0x461bcd
000008a3: PUSH1 0xe5
000008a5: SHL
000008a6: DUP2
000008a7: MSTORE
000008a8: PUSH1 0x04
000008aa: ADD
000008ab: DUP1
000008ac: DUP1
000008ad: PUSH1 0x20
000008af: ADD
000008b0: DUP3
000008b1: DUP2
000008b2: SUB
000008b3: DUP3
000008b4: MSTORE
000008b5: PUSH1 0x31
000008b7: DUP2
000008b8: MSTORE
000008b9: PUSH1 0x20
000008bb: ADD
000008bc: DUP1
000008bd: PUSH2 0x180d
000008c0: PUSH1 0x31
000008c2: SWAP2
000008c3: CODECOPY
000008c4: PUSH1 0x40
000008c6: ADD
000008c7: SWAP2
000008c8: POP
000008c9: POP
000008ca: PUSH1 0x40
000008cc: MLOAD
000008cd: DUP1
000008ce: SWAP2
000008cf: SUB
000008d0: SWAP1
000008d1: REVERT
000008d2: JUMPDEST
000008d3: PUSH2 0x0915
000008d6: DUP9
000008d7: DUP9
000008d8: DUP9
000008d9: DUP9
000008da: DUP9
000008db: DUP9
000008dc: DUP1
000008dd: DUP1
000008de: PUSH1 0x1f
000008e0: ADD
000008e1: PUSH1 0x20
000008e3: DUP1
000008e4: SWAP2
000008e5: DIV
000008e6: MUL
000008e7: PUSH1 0x20
000008e9: ADD
000008ea: PUSH1 0x40
000008ec: MLOAD
000008ed: SWAP1
000008ee: DUP2
000008ef: ADD
000008f0: PUSH1 0x40
000008f2: MSTORE
000008f3: DUP1
000008f4: SWAP4
000008f5: SWAP3
000008f6: SWAP2
000008f7: SWAP1
000008f8: DUP2
000008f9: DUP2
000008fa: MSTORE
000008fb: PUSH1 0x20
000008fd: ADD
000008fe: DUP4
000008ff: DUP4
00000900: DUP1
00000901: DUP3
00000902: DUP5
00000903: CALLDATACOPY
00000904: PUSH1 0x00
00000906: SWAP3
00000907: ADD
00000908: SWAP2
00000909: SWAP1
0000090a: SWAP2
0000090b: MSTORE
0000090c: POP
0000090d: PUSH2 0x0cdc
00000910: SWAP3
00000911: POP
00000912: POP
00000913: POP
00000914: JUMP
00000915: JUMPDEST
00000916: SWAP11
00000917: SWAP10
00000918: POP
00000919: POP
0000091a: POP
0000091b: POP
0000091c: POP
0000091d: POP
0000091e: POP
0000091f: POP
00000920: POP
00000921: POP
00000922: JUMP
00000923: JUMPDEST
00000924: PUSH1 0x01
00000926: SLOAD
00000927: PUSH1 0x40
00000929: DUP1
0000092a: MLOAD
0000092b: PUSH1 0x20
0000092d: DUP1
0000092e: DUP3
0000092f: ADD
00000930: DUP6
00000931: SWAP1
00000932: MSTORE
00000933: DUP3
00000934: MLOAD
00000935: DUP1
00000936: DUP4
00000937: SUB
00000938: DUP3
00000939: ADD
0000093a: DUP2
0000093b: MSTORE
0000093c: SWAP2
0000093d: DUP4
0000093e: ADD
0000093f: SWAP1
00000940: SWAP3
00000941: MSTORE
00000942: DUP1
00000943: MLOAD
00000944: SWAP2
00000945: ADD
00000946: KECCAK256
00000947: PUSH1 0x00
00000949: SWAP2
0000094a: DUP3
0000094b: SWAP2
0000094c: PUSH2 0x0962
0000094f: SWAP2
00000950: ADDRESS
00000951: SWAP2
00000952: PUSH1 0x01
00000954: PUSH1 0x01
00000956: PUSH1 0xa0
00000958: SHL
00000959: SUB
0000095a: SWAP1
0000095b: SWAP2
0000095c: AND
0000095d: SWAP1
0000095e: PUSH2 0x0bb4
00000961: JUMP
00000962: JUMPDEST
00000963: PUSH1 0x01
00000965: SLOAD
00000966: SWAP1
00000967: SWAP2
00000968: POP
00000969: PUSH2 0x097b
0000096c: SWAP1
0000096d: PUSH1 0x01
0000096f: PUSH1 0x01
00000971: PUSH1 0xa0
00000973: SHL
00000974: SUB
00000975: AND
00000976: DUP3
00000977: PUSH2 0x0fe9
0000097a: JUMP
0000097b: JUMPDEST
0000097c: SWAP4
0000097d: SWAP3
0000097e: POP
0000097f: POP
00000980: POP
00000981: JUMP
00000982: JUMPDEST
00000983: PUSH1 0x00
00000985: CALLER
00000986: ADDRESS
00000987: EQ
00000988: PUSH2 0x09c2
0000098b: JUMPI
0000098c: PUSH1 0x40
0000098e: MLOAD
0000098f: PUSH3 0x461bcd
00000993: PUSH1 0xe5
00000995: SHL
00000996: DUP2
00000997: MSTORE
00000998: PUSH1 0x04
0000099a: ADD
0000099b: DUP1
0000099c: DUP1
0000099d: PUSH1 0x20
0000099f: ADD
000009a0: DUP3
000009a1: DUP2
000009a2: SUB
000009a3: DUP3
000009a4: MSTORE
000009a5: PUSH1 0x25
000009a7: DUP2
000009a8: MSTORE
000009a9: PUSH1 0x20
000009ab: ADD
000009ac: DUP1
000009ad: PUSH2 0x17c1
000009b0: PUSH1 0x25
000009b2: SWAP2
000009b3: CODECOPY
000009b4: PUSH1 0x40
000009b6: ADD
000009b7: SWAP2
000009b8: POP
000009b9: POP
000009ba: PUSH1 0x40
000009bc: MLOAD
000009bd: DUP1
000009be: SWAP2
000009bf: SUB
000009c0: SWAP1
000009c1: REVERT
000009c2: JUMPDEST
000009c3: PUSH1 0x00
000009c5: JUMPDEST
000009c6: DUP3
000009c7: DUP2
000009c8: LT
000009c9: ISZERO
000009ca: PUSH2 0x0a57
000009cd: JUMPI
000009ce: DUP4
000009cf: DUP4
000009d0: DUP3
000009d1: DUP2
000009d2: DUP2
000009d3: LT
000009d4: PUSH2 0x09d9
000009d7: JUMPI
000009d8: INVALID
000009d9: JUMPDEST
000009da: SWAP1
000009db: POP
000009dc: PUSH1 0x20
000009de: MUL
000009df: ADD
000009e0: CALLDATALOAD
000009e1: PUSH1 0x01
000009e3: PUSH1 0x01
000009e5: PUSH1 0xa0
000009e7: SHL
000009e8: SUB
000009e9: AND
000009ea: PUSH1 0x01
000009ec: PUSH1 0x01
000009ee: PUSH1 0xa0
000009f0: SHL
000009f1: SUB
000009f2: AND
000009f3: PUSH4 0x1d4233b9
000009f8: PUSH1 0x40
000009fa: MLOAD
000009fb: DUP2
000009fc: PUSH4 0xffffffff
00000a01: AND
00000a02: PUSH1 0xe0
00000a04: SHL
00000a05: DUP2
00000a06: MSTORE
00000a07: PUSH1 0x04
00000a09: ADD
00000a0a: PUSH1 0x20
00000a0c: PUSH1 0x40
00000a0e: MLOAD
00000a0f: DUP1
00000a10: DUP4
00000a11: SUB
00000a12: DUP2
00000a13: PUSH1 0x00
00000a15: DUP8
00000a16: DUP1
00000a17: EXTCODESIZE
00000a18: ISZERO
00000a19: DUP1
00000a1a: ISZERO
00000a1b: PUSH2 0x0a23
00000a1e: JUMPI
00000a1f: PUSH1 0x00
00000a21: DUP1
00000a22: REVERT
00000a23: JUMPDEST
00000a24: POP
00000a25: GAS
00000a26: CALL
00000a27: ISZERO
00000a28: DUP1
00000a29: ISZERO
00000a2a: PUSH2 0x0a37
00000a2d: JUMPI
00000a2e: RETURNDATASIZE
00000a2f: PUSH1 0x00
00000a31: DUP1
00000a32: RETURNDATACOPY
00000a33: RETURNDATASIZE
00000a34: PUSH1 0x00
00000a36: REVERT
00000a37: JUMPDEST
00000a38: POP
00000a39: POP
00000a3a: POP
00000a3b: POP
00000a3c: PUSH1 0x40
00000a3e: MLOAD
00000a3f: RETURNDATASIZE
00000a40: PUSH1 0x20
00000a42: DUP2
00000a43: LT
00000a44: ISZERO
00000a45: PUSH2 0x0a4d
00000a48: JUMPI
00000a49: PUSH1 0x00
00000a4b: DUP1
00000a4c: REVERT
00000a4d: JUMPDEST
00000a4e: POP
00000a4f: POP
00000a50: PUSH1 0x01
00000a52: ADD
00000a53: PUSH2 0x09c5
00000a56: JUMP
00000a57: JUMPDEST
00000a58: POP
00000a59: PUSH1 0x01
00000a5b: SWAP4
00000a5c: SWAP3
00000a5d: POP
00000a5e: POP
00000a5f: POP
00000a60: JUMP
00000a61: JUMPDEST
00000a62: PUSH1 0x40
00000a64: DUP1
00000a65: MLOAD
00000a66: PUSH1 0x20
00000a68: DUP1
00000a69: DUP3
00000a6a: ADD
00000a6b: DUP5
00000a6c: SWAP1
00000a6d: MSTORE
00000a6e: DUP3
00000a6f: MLOAD
00000a70: DUP1
00000a71: DUP4
00000a72: SUB
00000a73: DUP3
00000a74: ADD
00000a75: DUP2
00000a76: MSTORE
00000a77: SWAP2
00000a78: DUP4
00000a79: ADD
00000a7a: SWAP1
00000a7b: SWAP3
00000a7c: MSTORE
00000a7d: DUP1
00000a7e: MLOAD
00000a7f: SWAP2
00000a80: ADD
00000a81: KECCAK256
00000a82: PUSH1 0x01
00000a84: SLOAD
00000a85: PUSH1 0x00
00000a87: SWAP2
00000a88: SWAP1
00000a89: DUP3
00000a8a: SWAP1
00000a8b: PUSH2 0x0a9d
00000a8e: SWAP1
00000a8f: PUSH1 0x01
00000a91: PUSH1 0x01
00000a93: PUSH1 0xa0
00000a95: SHL
00000a96: SUB
00000a97: AND
00000a98: DUP4
00000a99: PUSH2 0x104a
00000a9c: JUMP
00000a9d: JUMPDEST
00000a9e: PUSH1 0x40
00000aa0: DUP1
00000aa1: MLOAD
00000aa2: PUSH1 0x01
00000aa4: PUSH1 0x01
00000aa6: PUSH1 0xa0
00000aa8: SHL
00000aa9: SUB
00000aaa: DUP4
00000aab: AND
00000aac: DUP2
00000aad: MSTORE
00000aae: SWAP1
00000aaf: MLOAD
00000ab0: SWAP2
00000ab1: SWAP3
00000ab2: POP
00000ab3: PUSH32 0x62e5833a6a9c6df6056429f9a3334d883f5b47d7d9cfbfe5cabdab658c707ae6
00000ad4: SWAP2
00000ad5: SWAP1
00000ad6: DUP2
00000ad7: SWAP1
00000ad8: SUB
00000ad9: PUSH1 0x20
00000adb: ADD
00000adc: SWAP1
00000add: LOG1
00000ade: SWAP4
00000adf: SWAP3
00000ae0: POP
00000ae1: POP
00000ae2: POP
00000ae3: JUMP
00000ae4: JUMPDEST
00000ae5: PUSH1 0x02
00000ae7: SLOAD
00000ae8: PUSH1 0x01
00000aea: PUSH1 0x01
00000aec: PUSH1 0xa0
00000aee: SHL
00000aef: SUB
00000af0: AND
00000af1: SWAP1
00000af2: JUMP
00000af3: JUMPDEST
00000af4: PUSH1 0x01
00000af6: SLOAD
00000af7: PUSH1 0x01
00000af9: PUSH1 0x01
00000afb: PUSH1 0xa0
00000afd: SHL
00000afe: SUB
00000aff: AND
00000b00: SWAP1
00000b01: JUMP
00000b02: JUMPDEST
00000b03: PUSH1 0x00
00000b05: CALLER
00000b06: ADDRESS
00000b07: EQ
00000b08: PUSH2 0x0b42
00000b0b: JUMPI
00000b0c: PUSH1 0x40
00000b0e: MLOAD
00000b0f: PUSH3 0x461bcd
00000b13: PUSH1 0xe5
00000b15: SHL
00000b16: DUP2
00000b17: MSTORE
00000b18: PUSH1 0x04
00000b1a: ADD
00000b1b: DUP1
00000b1c: DUP1
00000b1d: PUSH1 0x20
00000b1f: ADD
00000b20: DUP3
00000b21: DUP2
00000b22: SUB
00000b23: DUP3
00000b24: MSTORE
00000b25: PUSH1 0x25
00000b27: DUP2
00000b28: MSTORE
00000b29: PUSH1 0x20
00000b2b: ADD
00000b2c: DUP1
00000b2d: PUSH2 0x17c1
00000b30: PUSH1 0x25
00000b32: SWAP2
00000b33: CODECOPY
00000b34: PUSH1 0x40
00000b36: ADD
00000b37: SWAP2
00000b38: POP
00000b39: POP
00000b3a: PUSH1 0x40
00000b3c: MLOAD
00000b3d: DUP1
00000b3e: SWAP2
00000b3f: SUB
00000b40: SWAP1
00000b41: REVERT
00000b42: JUMPDEST
00000b43: PUSH2 0x097b
00000b46: DUP4
00000b47: DUP4
00000b48: PUSH2 0x10a2
00000b4b: JUMP
00000b4c: JUMPDEST
00000b4d: PUSH1 0x00
00000b4f: SWAP1
00000b50: DUP2
00000b51: MSTORE
00000b52: PUSH1 0x20
00000b54: DUP2
00000b55: SWAP1
00000b56: MSTORE
00000b57: PUSH1 0x40
00000b59: SWAP1
00000b5a: KECCAK256
00000b5b: SLOAD
00000b5c: PUSH1 0xff
00000b5e: AND
00000b5f: SWAP1
00000b60: JUMP
00000b61: JUMPDEST
00000b62: PUSH1 0x00
00000b64: CALLER
00000b65: ADDRESS
00000b66: EQ
00000b67: PUSH2 0x0ba1
00000b6a: JUMPI
00000b6b: PUSH1 0x40
00000b6d: MLOAD
00000b6e: PUSH3 0x461bcd
00000b72: PUSH1 0xe5
00000b74: SHL
00000b75: DUP2
00000b76: MSTORE
00000b77: PUSH1 0x04
00000b79: ADD
00000b7a: DUP1
00000b7b: DUP1
00000b7c: PUSH1 0x20
00000b7e: ADD
00000b7f: DUP3
00000b80: DUP2
00000b81: SUB
00000b82: DUP3
00000b83: MSTORE
00000b84: PUSH1 0x25
00000b86: DUP2
00000b87: MSTORE
00000b88: PUSH1 0x20
00000b8a: ADD
00000b8b: DUP1
00000b8c: PUSH2 0x17c1
00000b8f: PUSH1 0x25
00000b91: SWAP2
00000b92: CODECOPY
00000b93: PUSH1 0x40
00000b95: ADD
00000b96: SWAP2
00000b97: POP
00000b98: POP
00000b99: PUSH1 0x40
00000b9b: MLOAD
00000b9c: DUP1
00000b9d: SWAP2
00000b9e: SUB
00000b9f: SWAP1
00000ba0: REVERT
00000ba1: JUMPDEST
00000ba2: PUSH2 0x0bac
00000ba5: DUP5
00000ba6: DUP5
00000ba7: DUP5
00000ba8: PUSH2 0x119d
00000bab: JUMP
00000bac: JUMPDEST
00000bad: SWAP5
00000bae: SWAP4
00000baf: POP
00000bb0: POP
00000bb1: POP
00000bb2: POP
00000bb3: JUMP
00000bb4: JUMPDEST
00000bb5: PUSH1 0x40
00000bb7: MLOAD
00000bb8: PUSH20 0x3d602d80600a3d3981f3363d3d373d3d3d363d73
00000bcd: PUSH1 0x60
00000bcf: SHL
00000bd0: DUP2
00000bd1: MSTORE
00000bd2: PUSH1 0x60
00000bd4: DUP4
00000bd5: SWAP1
00000bd6: SHL
00000bd7: PUSH1 0x14
00000bd9: DUP3
00000bda: ADD
00000bdb: DUP2
00000bdc: SWAP1
00000bdd: MSTORE
00000bde: PUSH15 0x5af43d82803e903d91602b57fd5bf3
00000bee: PUSH1 0x88
00000bf0: SHL
00000bf1: PUSH1 0x28
00000bf3: DUP4
00000bf4: ADD
00000bf5: MSTORE
00000bf6: PUSH1 0x37
00000bf8: SWAP1
00000bf9: SWAP2
00000bfa: KECCAK256
00000bfb: PUSH1 0x00
00000bfd: SWAP2
00000bfe: SWAP1
00000bff: PUSH2 0x0c09
00000c02: DUP5
00000c03: DUP3
00000c04: DUP9
00000c05: PUSH2 0x1207
00000c08: JUMP
00000c09: JUMPDEST
00000c0a: SWAP7
00000c0b: SWAP6
00000c0c: POP
00000c0d: POP
00000c0e: POP
00000c0f: POP
00000c10: POP
00000c11: POP
00000c12: JUMP
00000c13: JUMPDEST
00000c14: PUSH1 0x00
00000c16: DUP1
00000c17: DUP7
00000c18: DUP7
00000c19: DUP7
00000c1a: DUP7
00000c1b: DUP7
00000c1c: PUSH1 0x40
00000c1e: MLOAD
00000c1f: PUSH1 0x20
00000c21: ADD
00000c22: DUP1
00000c23: DUP7
00000c24: PUSH1 0x01
00000c26: PUSH1 0x01
00000c28: PUSH1 0xa0
00000c2a: SHL
00000c2b: SUB
00000c2c: AND
00000c2d: PUSH1 0x60
00000c2f: SHL
00000c30: DUP2
00000c31: MSTORE
00000c32: PUSH1 0x14
00000c34: ADD
00000c35: DUP6
00000c36: PUSH1 0x01
00000c38: PUSH1 0x01
00000c3a: PUSH1 0xa0
00000c3c: SHL
00000c3d: SUB
00000c3e: AND
00000c3f: PUSH1 0x60
00000c41: SHL
00000c42: DUP2
00000c43: MSTORE
00000c44: PUSH1 0x14
00000c46: ADD
00000c47: DUP5
00000c48: DUP2
00000c49: MSTORE
00000c4a: PUSH1 0x20
00000c4c: ADD
00000c4d: DUP4
00000c4e: DUP2
00000c4f: MSTORE
00000c50: PUSH1 0x20
00000c52: ADD
00000c53: DUP3
00000c54: DUP1
00000c55: MLOAD
00000c56: SWAP1
00000c57: PUSH1 0x20
00000c59: ADD
00000c5a: SWAP1
00000c5b: DUP1
00000c5c: DUP4
00000c5d: DUP4
00000c5e: JUMPDEST
00000c5f: PUSH1 0x20
00000c61: DUP4
00000c62: LT
00000c63: PUSH2 0x0c7d
00000c66: JUMPI
00000c67: DUP1
00000c68: MLOAD
00000c69: DUP3
00000c6a: MSTORE
00000c6b: PUSH1 0x1f
00000c6d: NOT
00000c6e: SWAP1
00000c6f: SWAP3
00000c70: ADD
00000c71: SWAP2
00000c72: PUSH1 0x20
00000c74: SWAP2
00000c75: DUP3
00000c76: ADD
00000c77: SWAP2
00000c78: ADD
00000c79: PUSH2 0x0c5e
00000c7c: JUMP
00000c7d: JUMPDEST
00000c7e: PUSH1 0x01
00000c80: DUP4
00000c81: PUSH1 0x20
00000c83: SUB
00000c84: PUSH2 0x0100
00000c87: EXP
00000c88: SUB
00000c89: DUP1
00000c8a: NOT
00000c8b: DUP3
00000c8c: MLOAD
00000c8d: AND
00000c8e: DUP2
00000c8f: DUP5
00000c90: MLOAD
00000c91: AND
00000c92: DUP1
00000c93: DUP3
00000c94: OR
00000c95: DUP6
00000c96: MSTORE
00000c97: POP
00000c98: POP
00000c99: POP
00000c9a: POP
00000c9b: POP
00000c9c: POP
00000c9d: SWAP1
00000c9e: POP
00000c9f: ADD
00000ca0: SWAP6
00000ca1: POP
00000ca2: POP
00000ca3: POP
00000ca4: POP
00000ca5: POP
00000ca6: POP
00000ca7: PUSH1 0x40
00000ca9: MLOAD
00000caa: PUSH1 0x20
00000cac: DUP2
00000cad: DUP4
00000cae: SUB
00000caf: SUB
00000cb0: DUP2
00000cb1: MSTORE
00000cb2: SWAP1
00000cb3: PUSH1 0x40
00000cb5: MSTORE
00000cb6: DUP1
00000cb7: MLOAD
00000cb8: SWAP1
00000cb9: PUSH1 0x20
00000cbb: ADD
00000cbc: KECCAK256
00000cbd: SWAP1
00000cbe: POP
00000cbf: PUSH2 0x0cd0
00000cc2: PUSH2 0x0cca
00000cc5: DUP3
00000cc6: PUSH2 0x126b
00000cc9: JUMP
00000cca: JUMPDEST
00000ccb: DUP10
00000ccc: PUSH2 0x12bc
00000ccf: JUMP
00000cd0: JUMPDEST
00000cd1: SWAP9
00000cd2: SWAP8
00000cd3: POP
00000cd4: POP
00000cd5: POP
00000cd6: POP
00000cd7: POP
00000cd8: POP
00000cd9: POP
00000cda: POP
00000cdb: JUMP
00000cdc: JUMPDEST
00000cdd: PUSH1 0x00
00000cdf: PUSH1 0x01
00000ce1: PUSH1 0x01
00000ce3: PUSH1 0xa0
00000ce5: SHL
00000ce6: SUB
00000ce7: DUP7
00000ce8: AND
00000ce9: ADDRESS
00000cea: EQ
00000ceb: PUSH2 0x0d25
00000cee: JUMPI
00000cef: PUSH1 0x40
00000cf1: MLOAD
00000cf2: PUSH3 0x461bcd
00000cf6: PUSH1 0xe5
00000cf8: SHL
00000cf9: DUP2
00000cfa: MSTORE
00000cfb: PUSH1 0x04
00000cfd: ADD
00000cfe: DUP1
00000cff: DUP1
00000d00: PUSH1 0x20
00000d02: ADD
00000d03: DUP3
00000d04: DUP2
00000d05: SUB
00000d06: DUP3
00000d07: MSTORE
00000d08: PUSH1 0x21
00000d0a: DUP2
00000d0b: MSTORE
00000d0c: PUSH1 0x20
00000d0e: ADD
00000d0f: DUP1
00000d10: PUSH2 0x1864
00000d13: PUSH1 0x21
00000d15: SWAP2
00000d16: CODECOPY
00000d17: PUSH1 0x40
00000d19: ADD
00000d1a: SWAP2
00000d1b: POP
00000d1c: POP
00000d1d: PUSH1 0x40
00000d1f: MLOAD
00000d20: DUP1
00000d21: SWAP2
00000d22: SUB
00000d23: SWAP1
00000d24: REVERT
00000d25: JUMPDEST
00000d26: PUSH2 0x0d2e
00000d29: DUP4
00000d2a: PUSH2 0x13ad
00000d2d: JUMP
00000d2e: JUMPDEST
00000d2f: POP
00000d30: PUSH1 0x00
00000d32: PUSH1 0x60
00000d34: PUSH2 0x0d3e
00000d37: DUP8
00000d38: DUP8
00000d39: DUP7
00000d3a: PUSH2 0x1426
00000d3d: JUMP
00000d3e: JUMPDEST
00000d3f: SWAP2
00000d40: POP
00000d41: SWAP2
00000d42: POP
00000d43: DUP2
00000d44: ISZERO
00000d45: PUSH2 0x0eb9
00000d48: JUMPI
00000d49: PUSH32 0x8ef33a9072a35d9b41d5c5c744ba88308c0fb19f45973df39146cdf54011675f
00000d6a: DUP8
00000d6b: DUP8
00000d6c: DUP8
00000d6d: DUP8
00000d6e: DUP6
00000d6f: PUSH1 0x40
00000d71: MLOAD
00000d72: DUP1
00000d73: DUP7
00000d74: PUSH1 0x01
00000d76: PUSH1 0x01
00000d78: PUSH1 0xa0
00000d7a: SHL
00000d7b: SUB
00000d7c: AND
00000d7d: DUP2
00000d7e: MSTORE
00000d7f: PUSH1 0x20
00000d81: ADD
00000d82: DUP6
00000d83: DUP2
00000d84: MSTORE
00000d85: PUSH1 0x20
00000d87: ADD
00000d88: DUP5
00000d89: DUP2
00000d8a: MSTORE
00000d8b: PUSH1 0x20
00000d8d: ADD
00000d8e: DUP1
00000d8f: PUSH1 0x20
00000d91: ADD
00000d92: DUP1
00000d93: PUSH1 0x20
00000d95: ADD
00000d96: DUP4
00000d97: DUP2
00000d98: SUB
00000d99: DUP4
00000d9a: MSTORE
00000d9b: DUP6
00000d9c: DUP2
00000d9d: DUP2
00000d9e: MLOAD
00000d9f: DUP2
00000da0: MSTORE
00000da1: PUSH1 0x20
00000da3: ADD
00000da4: SWAP2
00000da5: POP
00000da6: DUP1
00000da7: MLOAD
00000da8: SWAP1
00000da9: PUSH1 0x20
00000dab: ADD
00000dac: SWAP1
00000dad: DUP1
00000dae: DUP4
00000daf: DUP4
00000db0: PUSH1 0x00
00000db2: JUMPDEST
00000db3: DUP4
00000db4: DUP2
00000db5: LT
00000db6: ISZERO
00000db7: PUSH2 0x0dca
00000dba: JUMPI
00000dbb: DUP2
00000dbc: DUP2
00000dbd: ADD
00000dbe: MLOAD
00000dbf: DUP4
00000dc0: DUP3
00000dc1: ADD
00000dc2: MSTORE
00000dc3: PUSH1 0x20
00000dc5: ADD
00000dc6: PUSH2 0x0db2
00000dc9: JUMP
00000dca: JUMPDEST
00000dcb: POP
00000dcc: POP
00000dcd: POP
00000dce: POP
00000dcf: SWAP1
00000dd0: POP
00000dd1: SWAP1
00000dd2: DUP2
00000dd3: ADD
00000dd4: SWAP1
00000dd5: PUSH1 0x1f
00000dd7: AND
00000dd8: DUP1
00000dd9: ISZERO
00000dda: PUSH2 0x0df7
00000ddd: JUMPI
00000dde: DUP1
00000ddf: DUP3
00000de0: SUB
00000de1: DUP1
00000de2: MLOAD
00000de3: PUSH1 0x01
00000de5: DUP4
00000de6: PUSH1 0x20
00000de8: SUB
00000de9: PUSH2 0x0100
00000dec: EXP
00000ded: SUB
00000dee: NOT
00000def: AND
00000df0: DUP2
00000df1: MSTORE
00000df2: PUSH1 0x20
00000df4: ADD
00000df5: SWAP2
00000df6: POP
00000df7: JUMPDEST
00000df8: POP
00000df9: DUP4
00000dfa: DUP2
00000dfb: SUB
00000dfc: DUP3
00000dfd: MSTORE
00000dfe: DUP5
00000dff: MLOAD
00000e00: DUP2
00000e01: MSTORE
00000e02: DUP5
00000e03: MLOAD
00000e04: PUSH1 0x20
00000e06: SWAP2
00000e07: DUP3
00000e08: ADD
00000e09: SWAP2
00000e0a: DUP7
00000e0b: ADD
00000e0c: SWAP1
00000e0d: DUP1
00000e0e: DUP4
00000e0f: DUP4
00000e10: PUSH1 0x00
00000e12: JUMPDEST
00000e13: DUP4
00000e14: DUP2
00000e15: LT
00000e16: ISZERO
00000e17: PUSH2 0x0e2a
00000e1a: JUMPI
00000e1b: DUP2
00000e1c: DUP2
00000e1d: ADD
00000e1e: MLOAD
00000e1f: DUP4
00000e20: DUP3
00000e21: ADD
00000e22: MSTORE
00000e23: PUSH1 0x20
00000e25: ADD
00000e26: PUSH2 0x0e12
00000e29: JUMP
00000e2a: JUMPDEST
00000e2b: POP
00000e2c: POP
00000e2d: POP
00000e2e: POP
00000e2f: SWAP1
00000e30: POP
00000e31: SWAP1
00000e32: DUP2
00000e33: ADD
00000e34: SWAP1
00000e35: PUSH1 0x1f
00000e37: AND
00000e38: DUP1
00000e39: ISZERO
00000e3a: PUSH2 0x0e57
00000e3d: JUMPI
00000e3e: DUP1
00000e3f: DUP3
00000e40: SUB
00000e41: DUP1
00000e42: MLOAD
00000e43: PUSH1 0x01
00000e45: DUP4
00000e46: PUSH1 0x20
00000e48: SUB
00000e49: PUSH2 0x0100
00000e4c: EXP
00000e4d: SUB
00000e4e: NOT
00000e4f: AND
00000e50: DUP2
00000e51: MSTORE
00000e52: PUSH1 0x20
00000e54: ADD
00000e55: SWAP2
00000e56: POP
00000e57: JUMPDEST
00000e58: POP
00000e59: SWAP8
00000e5a: POP
00000e5b: POP
00000e5c: POP
00000e5d: POP
00000e5e: POP
00000e5f: POP
00000e60: POP
00000e61: POP
00000e62: PUSH1 0x40
00000e64: MLOAD
00000e65: DUP1
00000e66: SWAP2
00000e67: SUB
00000e68: SWAP1
00000e69: LOG1
00000e6a: DUP6
00000e6b: ISZERO
00000e6c: PUSH2 0x0eb4
00000e6f: JUMPI
00000e70: PUSH1 0x40
00000e72: DUP1
00000e73: MLOAD
00000e74: PUSH1 0x01
00000e76: PUSH1 0x01
00000e78: PUSH1 0xa0
00000e7a: SHL
00000e7b: SUB
00000e7c: DUP10
00000e7d: AND
00000e7e: DUP2
00000e7f: MSTORE
00000e80: PUSH1 0x20
00000e82: DUP2
00000e83: ADD
00000e84: DUP9
00000e85: SWAP1
00000e86: MSTORE
00000e87: DUP2
00000e88: MLOAD
00000e89: PUSH32 0xd9b66890b56321a19d7a216dd918f8c0d4023759afc4088deb9be15aca68ece2
00000eaa: SWAP3
00000eab: SWAP2
00000eac: DUP2
00000ead: SWAP1
00000eae: SUB
00000eaf: SWAP1
00000eb0: SWAP2
00000eb1: ADD
00000eb2: SWAP1
00000eb3: LOG1
00000eb4: JUMPDEST
00000eb5: PUSH2 0x0fdb
00000eb8: JUMP
00000eb9: JUMPDEST
00000eba: PUSH32 0x0dcd8c9c77f28ec16607ef7ef149c8c11b7b818e95009bf9639b8a35bb04d55f
00000edb: DUP8
00000edc: DUP8
00000edd: DUP8
00000ede: DUP8
00000edf: DUP6
00000ee0: PUSH1 0x40
00000ee2: MLOAD
00000ee3: DUP1
00000ee4: DUP7
00000ee5: PUSH1 0x01
00000ee7: PUSH1 0x01
00000ee9: PUSH1 0xa0
00000eeb: SHL
00000eec: SUB
00000eed: AND
00000eee: DUP2
00000eef: MSTORE
00000ef0: PUSH1 0x20
00000ef2: ADD
00000ef3: DUP6
00000ef4: DUP2
00000ef5: MSTORE
00000ef6: PUSH1 0x20
00000ef8: ADD
00000ef9: DUP5
00000efa: DUP2
00000efb: MSTORE
00000efc: PUSH1 0x20
00000efe: ADD
00000eff: DUP1
00000f00: PUSH1 0x20
00000f02: ADD
00000f03: DUP1
00000f04: PUSH1 0x20
00000f06: ADD
00000f07: DUP4
00000f08: DUP2
00000f09: SUB
00000f0a: DUP4
00000f0b: MSTORE
00000f0c: DUP6
00000f0d: DUP2
00000f0e: DUP2
00000f0f: MLOAD
00000f10: DUP2
00000f11: MSTORE
00000f12: PUSH1 0x20
00000f14: ADD
00000f15: SWAP2
00000f16: POP
00000f17: DUP1
00000f18: MLOAD
00000f19: SWAP1
00000f1a: PUSH1 0x20
00000f1c: ADD
00000f1d: SWAP1
00000f1e: DUP1
00000f1f: DUP4
00000f20: DUP4
00000f21: PUSH1 0x00
00000f23: JUMPDEST
00000f24: DUP4
00000f25: DUP2
00000f26: LT
00000f27: ISZERO
00000f28: PUSH2 0x0f3b
00000f2b: JUMPI
00000f2c: DUP2
00000f2d: DUP2
00000f2e: ADD
00000f2f: MLOAD
00000f30: DUP4
00000f31: DUP3
00000f32: ADD
00000f33: MSTORE
00000f34: PUSH1 0x20
00000f36: ADD
00000f37: PUSH2 0x0f23
00000f3a: JUMP
00000f3b: JUMPDEST
00000f3c: POP
00000f3d: POP
00000f3e: POP
00000f3f: POP
00000f40: SWAP1
00000f41: POP
00000f42: SWAP1
00000f43: DUP2
00000f44: ADD
00000f45: SWAP1
00000f46: PUSH1 0x1f
00000f48: AND
00000f49: DUP1
00000f4a: ISZERO
00000f4b: PUSH2 0x0f68
00000f4e: JUMPI
00000f4f: DUP1
00000f50: DUP3
00000f51: SUB
00000f52: DUP1
00000f53: MLOAD
00000f54: PUSH1 0x01
00000f56: DUP4
00000f57: PUSH1 0x20
00000f59: SUB
00000f5a: PUSH2 0x0100
00000f5d: EXP
00000f5e: SUB
00000f5f: NOT
00000f60: AND
00000f61: DUP2
00000f62: MSTORE
00000f63: PUSH1 0x20
00000f65: ADD
00000f66: SWAP2
00000f67: POP
00000f68: JUMPDEST
00000f69: POP
00000f6a: DUP4
00000f6b: DUP2
00000f6c: SUB
00000f6d: DUP3
00000f6e: MSTORE
00000f6f: DUP5
00000f70: MLOAD
00000f71: DUP2
00000f72: MSTORE
00000f73: DUP5
00000f74: MLOAD
00000f75: PUSH1 0x20
00000f77: SWAP2
00000f78: DUP3
00000f79: ADD
00000f7a: SWAP2
00000f7b: DUP7
00000f7c: ADD
00000f7d: SWAP1
00000f7e: DUP1
00000f7f: DUP4
00000f80: DUP4
00000f81: PUSH1 0x00
00000f83: JUMPDEST
00000f84: DUP4
00000f85: DUP2
00000f86: LT
00000f87: ISZERO
00000f88: PUSH2 0x0f9b
00000f8b: JUMPI
00000f8c: DUP2
00000f8d: DUP2
00000f8e: ADD
00000f8f: MLOAD
00000f90: DUP4
00000f91: DUP3
00000f92: ADD
00000f93: MSTORE
00000f94: PUSH1 0x20
00000f96: ADD
00000f97: PUSH2 0x0f83
00000f9a: JUMP
00000f9b: JUMPDEST
00000f9c: POP
00000f9d: POP
00000f9e: POP
00000f9f: POP
00000fa0: SWAP1
00000fa1: POP
00000fa2: SWAP1
00000fa3: DUP2
00000fa4: ADD
00000fa5: SWAP1
00000fa6: PUSH1 0x1f
00000fa8: AND
00000fa9: DUP1
00000faa: ISZERO
00000fab: PUSH2 0x0fc8
00000fae: JUMPI
00000faf: DUP1
00000fb0: DUP3
00000fb1: SUB
00000fb2: DUP1
00000fb3: MLOAD
00000fb4: PUSH1 0x01
00000fb6: DUP4
00000fb7: PUSH1 0x20
00000fb9: SUB
00000fba: PUSH2 0x0100
00000fbd: EXP
00000fbe: SUB
00000fbf: NOT
00000fc0: AND
00000fc1: DUP2
00000fc2: MSTORE
00000fc3: PUSH1 0x20
00000fc5: ADD
00000fc6: SWAP2
00000fc7: POP
00000fc8: JUMPDEST
00000fc9: POP
00000fca: SWAP8
00000fcb: POP
00000fcc: POP
00000fcd: POP
00000fce: POP
00000fcf: POP
00000fd0: POP
00000fd1: POP
00000fd2: POP
00000fd3: PUSH1 0x40
00000fd5: MLOAD
00000fd6: DUP1
00000fd7: SWAP2
00000fd8: SUB
00000fd9: SWAP1
00000fda: LOG1
00000fdb: JUMPDEST
00000fdc: POP
00000fdd: PUSH1 0x01
00000fdf: SWAP8
00000fe0: SWAP7
00000fe1: POP
00000fe2: POP
00000fe3: POP
00000fe4: POP
00000fe5: POP
00000fe6: POP
00000fe7: POP
00000fe8: JUMP
00000fe9: JUMPDEST
00000fea: PUSH1 0x00
00000fec: DUP1
00000fed: DUP4
00000fee: PUSH1 0x60
00000ff0: SHL
00000ff1: SWAP1
00000ff2: POP
00000ff3: PUSH1 0x40
00000ff5: MLOAD
00000ff6: PUSH10 0x363d3d373d3d3d363d73
00001001: PUSH1 0xb0
00001003: SHL
00001004: DUP2
00001005: MSTORE
00001006: DUP2
00001007: PUSH1 0x0a
00001009: DUP3
0000100a: ADD
0000100b: MSTORE
0000100c: PUSH15 0x5af43d82803e903d91602b57fd5bf3
0000101c: PUSH1 0x88
0000101e: SHL
0000101f: PUSH1 0x1e
00001021: DUP3
00001022: ADD
00001023: MSTORE
00001024: PUSH1 0x40
00001026: DUP2
00001027: ADD
00001028: PUSH1 0x2d
0000102a: PUSH1 0x00
0000102c: DUP3
0000102d: DUP8
0000102e: EXTCODECOPY
0000102f: PUSH1 0x0d
00001031: DUP2
00001032: ADD
00001033: MLOAD
00001034: PUSH1 0x0d
00001036: DUP4
00001037: ADD
00001038: MLOAD
00001039: EQ
0000103a: DUP2
0000103b: MLOAD
0000103c: DUP4
0000103d: MLOAD
0000103e: EQ
0000103f: AND
00001040: SWAP4
00001041: POP
00001042: POP
00001043: POP
00001044: POP
00001045: SWAP3
00001046: SWAP2
00001047: POP
00001048: POP
00001049: JUMP
0000104a: JUMPDEST
0000104b: PUSH1 0x00
0000104d: DUP1
0000104e: DUP4
0000104f: PUSH1 0x60
00001051: SHL
00001052: SWAP1
00001053: POP
00001054: PUSH1 0x40
00001056: MLOAD
00001057: PUSH20 0x3d602d80600a3d3981f3363d3d373d3d3d363d73
0000106c: PUSH1 0x60
0000106e: SHL
0000106f: DUP2
00001070: MSTORE
00001071: DUP2
00001072: PUSH1 0x14
00001074: DUP3
00001075: ADD
00001076: MSTORE
00001077: PUSH15 0x5af43d82803e903d91602b57fd5bf3
00001087: PUSH1 0x88
00001089: SHL
0000108a: PUSH1 0x28
0000108c: DUP3
0000108d: ADD
0000108e: MSTORE
0000108f: DUP4
00001090: PUSH1 0x37
00001092: DUP3
00001093: PUSH1 0x00
00001095: CREATE2
00001096: SWAP1
00001097: POP
00001098: DUP1
00001099: EXTCODESIZE
0000109a: PUSH2 0x0bac
0000109d: JUMPI
0000109e: PUSH1 0x00
000010a0: DUP1
000010a1: REVERT
000010a2: JUMPDEST
000010a3: PUSH1 0x40
000010a5: MLOAD
000010a6: PUSH1 0x00
000010a8: SWAP1
000010a9: DUP2
000010aa: SWAP1
000010ab: PUSH1 0x60
000010ad: SWAP1
000010ae: PUSH1 0x01
000010b0: PUSH1 0x01
000010b2: PUSH1 0xa0
000010b4: SHL
000010b5: SUB
000010b6: DUP7
000010b7: AND
000010b8: SWAP1
000010b9: DUP6
000010ba: SWAP1
000010bb: DUP5
000010bc: DUP2
000010bd: DUP2
000010be: DUP2
000010bf: DUP6
000010c0: DUP8
000010c1: GAS
000010c2: CALL
000010c3: SWAP3
000010c4: POP
000010c5: POP
000010c6: POP
000010c7: RETURNDATASIZE
000010c8: DUP1
000010c9: PUSH1 0x00
000010cb: DUP2
000010cc: EQ
000010cd: PUSH2 0x10f2
000010d0: JUMPI
000010d1: PUSH1 0x40
000010d3: MLOAD
000010d4: SWAP2
000010d5: POP
000010d6: PUSH1 0x1f
000010d8: NOT
000010d9: PUSH1 0x3f
000010db: RETURNDATASIZE
000010dc: ADD
000010dd: AND
000010de: DUP3
000010df: ADD
000010e0: PUSH1 0x40
000010e2: MSTORE
000010e3: RETURNDATASIZE
000010e4: DUP3
000010e5: MSTORE
000010e6: RETURNDATASIZE
000010e7: PUSH1 0x00
000010e9: PUSH1 0x20
000010eb: DUP5
000010ec: ADD
000010ed: RETURNDATACOPY
000010ee: PUSH2 0x10f7
000010f1: JUMP
000010f2: JUMPDEST
000010f3: PUSH1 0x60
000010f5: SWAP2
000010f6: POP
000010f7: JUMPDEST
000010f8: POP
000010f9: SWAP2
000010fa: POP
000010fb: SWAP2
000010fc: POP
000010fd: DUP2
000010fe: PUSH2 0x114e
00001101: JUMPI
00001102: PUSH1 0x40
00001104: DUP1
00001105: MLOAD
00001106: PUSH3 0x461bcd
0000110a: PUSH1 0xe5
0000110c: SHL
0000110d: DUP2
0000110e: MSTORE
0000110f: PUSH1 0x20
00001111: PUSH1 0x04
00001113: DUP3
00001114: ADD
00001115: MSTORE
00001116: PUSH1 0x1f
00001118: PUSH1 0x24
0000111a: DUP3
0000111b: ADD
0000111c: MSTORE
0000111d: PUSH32 0x5472616e736665724574682f457468207472616e73666572204661696c656400
0000113e: PUSH1 0x44
00001140: DUP3
00001141: ADD
00001142: MSTORE
00001143: SWAP1
00001144: MLOAD
00001145: SWAP1
00001146: DUP2
00001147: SWAP1
00001148: SUB
00001149: PUSH1 0x64
0000114b: ADD
0000114c: SWAP1
0000114d: REVERT
0000114e: JUMPDEST
0000114f: PUSH1 0x40
00001151: DUP1
00001152: MLOAD
00001153: PUSH1 0x01
00001155: PUSH1 0x01
00001157: PUSH1 0xa0
00001159: SHL
0000115a: SUB
0000115b: DUP8
0000115c: AND
0000115d: DUP2
0000115e: MSTORE
0000115f: PUSH1 0x20
00001161: DUP2
00001162: ADD
00001163: DUP7
00001164: SWAP1
00001165: MSTORE
00001166: DUP2
00001167: MLOAD
00001168: PUSH32 0xd9b66890b56321a19d7a216dd918f8c0d4023759afc4088deb9be15aca68ece2
00001189: SWAP3
0000118a: SWAP2
0000118b: DUP2
0000118c: SWAP1
0000118d: SUB
0000118e: SWAP1
0000118f: SWAP2
00001190: ADD
00001191: SWAP1
00001192: LOG1
00001193: POP
00001194: PUSH1 0x01
00001196: SWAP5
00001197: SWAP4
00001198: POP
00001199: POP
0000119a: POP
0000119b: POP
0000119c: JUMP
0000119d: JUMPDEST
0000119e: PUSH1 0x00
000011a0: PUSH2 0x11b3
000011a3: PUSH1 0x01
000011a5: PUSH1 0x01
000011a7: PUSH1 0xa0
000011a9: SHL
000011aa: SUB
000011ab: DUP6
000011ac: AND
000011ad: DUP5
000011ae: DUP5
000011af: PUSH2 0x14d9
000011b2: JUMP
000011b3: JUMPDEST
000011b4: PUSH1 0x40
000011b6: DUP1
000011b7: MLOAD
000011b8: PUSH1 0x01
000011ba: PUSH1 0x01
000011bc: PUSH1 0xa0
000011be: SHL
000011bf: SUB
000011c0: DUP1
000011c1: DUP8
000011c2: AND
000011c3: DUP3
000011c4: MSTORE
000011c5: DUP6
000011c6: AND
000011c7: PUSH1 0x20
000011c9: DUP3
000011ca: ADD
000011cb: MSTORE
000011cc: DUP1
000011cd: DUP3
000011ce: ADD
000011cf: DUP5
000011d0: SWAP1
000011d1: MSTORE
000011d2: SWAP1
000011d3: MLOAD
000011d4: PUSH32 0x3844b7075ed6e7d4b61342769cb2b1b325cba410a62932affaa90aee247dadf5
000011f5: SWAP2
000011f6: DUP2
000011f7: SWAP1
000011f8: SUB
000011f9: PUSH1 0x60
000011fb: ADD
000011fc: SWAP1
000011fd: LOG1
000011fe: POP
000011ff: PUSH1 0x01
00001201: SWAP4
00001202: SWAP3
00001203: POP
00001204: POP
00001205: POP
00001206: JUMP
00001207: JUMPDEST
00001208: PUSH1 0x40
0000120a: DUP1
0000120b: MLOAD
0000120c: PUSH1 0x01
0000120e: PUSH1 0x01
00001210: PUSH1 0xf8
00001212: SHL
00001213: SUB
00001214: NOT
00001215: PUSH1 0x20
00001217: DUP1
00001218: DUP4
00001219: ADD
0000121a: SWAP2
0000121b: SWAP1
0000121c: SWAP2
0000121d: MSTORE
0000121e: PUSH1 0x60
00001220: SWAP4
00001221: SWAP1
00001222: SWAP4
00001223: SHL
00001224: PUSH12 0xffffffffffffffffffffffff
00001231: NOT
00001232: AND
00001233: PUSH1 0x21
00001235: DUP3
00001236: ADD
00001237: MSTORE
00001238: PUSH1 0x35
0000123a: DUP2
0000123b: ADD
0000123c: SWAP5
0000123d: SWAP1
0000123e: SWAP5
0000123f: MSTORE
00001240: PUSH1 0x55
00001242: DUP1
00001243: DUP6
00001244: ADD
00001245: SWAP4
00001246: SWAP1
00001247: SWAP4
00001248: MSTORE
00001249: DUP1
0000124a: MLOAD
0000124b: DUP1
0000124c: DUP6
0000124d: SUB
0000124e: SWAP1
0000124f: SWAP4
00001250: ADD
00001251: DUP4
00001252: MSTORE
00001253: PUSH1 0x75
00001255: SWAP1
00001256: SWAP4
00001257: ADD
00001258: SWAP1
00001259: SWAP3
0000125a: MSTORE
0000125b: DUP1
0000125c: MLOAD
0000125d: SWAP2
0000125e: ADD
0000125f: KECCAK256
00001260: PUSH1 0x01
00001262: PUSH1 0x01
00001264: PUSH1 0xa0
00001266: SHL
00001267: SUB
00001268: AND
00001269: SWAP1
0000126a: JUMP
0000126b: JUMPDEST
0000126c: PUSH1 0x40
0000126e: DUP1
0000126f: MLOAD
00001270: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
00001291: PUSH1 0x20
00001293: DUP1
00001294: DUP4
00001295: ADD
00001296: SWAP2
00001297: SWAP1
00001298: SWAP2
00001299: MSTORE
0000129a: PUSH1 0x3c
0000129c: DUP1
0000129d: DUP4
0000129e: ADD
0000129f: SWAP5
000012a0: SWAP1
000012a1: SWAP5
000012a2: MSTORE
000012a3: DUP3
000012a4: MLOAD
000012a5: DUP1
000012a6: DUP4
000012a7: SUB
000012a8: SWAP1
000012a9: SWAP5
000012aa: ADD
000012ab: DUP5
000012ac: MSTORE
000012ad: PUSH1 0x5c
000012af: SWAP1
000012b0: SWAP2
000012b1: ADD
000012b2: SWAP1
000012b3: SWAP2
000012b4: MSTORE
000012b5: DUP2
000012b6: MLOAD
000012b7: SWAP2
000012b8: ADD
000012b9: KECCAK256
000012ba: SWAP1
000012bb: JUMP
000012bc: JUMPDEST
000012bd: PUSH1 0x00
000012bf: DUP2
000012c0: MLOAD
000012c1: PUSH1 0x41
000012c3: EQ
000012c4: PUSH2 0x12cf
000012c7: JUMPI
000012c8: POP
000012c9: PUSH1 0x00
000012cb: PUSH2 0x05cd
000012ce: JUMP
000012cf: JUMPDEST
000012d0: PUSH1 0x20
000012d2: DUP3
000012d3: ADD
000012d4: MLOAD
000012d5: PUSH1 0x40
000012d7: DUP4
000012d8: ADD
000012d9: MLOAD
000012da: PUSH1 0x60
000012dc: DUP5
000012dd: ADD
000012de: MLOAD
000012df: PUSH1 0x00
000012e1: BYTE
000012e2: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0
00001303: DUP3
00001304: GT
00001305: ISZERO
00001306: PUSH2 0x1315
00001309: JUMPI
0000130a: PUSH1 0x00
0000130c: SWAP4
0000130d: POP
0000130e: POP
0000130f: POP
00001310: POP
00001311: PUSH2 0x05cd
00001314: JUMP
00001315: JUMPDEST
00001316: DUP1
00001317: PUSH1 0xff
00001319: AND
0000131a: PUSH1 0x1b
0000131c: EQ
0000131d: ISZERO
0000131e: DUP1
0000131f: ISZERO
00001320: PUSH2 0x132d
00001323: JUMPI
00001324: POP
00001325: DUP1
00001326: PUSH1 0xff
00001328: AND
00001329: PUSH1 0x1c
0000132b: EQ
0000132c: ISZERO
0000132d: JUMPDEST
0000132e: ISZERO
0000132f: PUSH2 0x133e
00001332: JUMPI
00001333: PUSH1 0x00
00001335: SWAP4
00001336: POP
00001337: POP
00001338: POP
00001339: POP
0000133a: PUSH2 0x05cd
0000133d: JUMP
0000133e: JUMPDEST
0000133f: PUSH1 0x01
00001341: DUP7
00001342: DUP3
00001343: DUP6
00001344: DUP6
00001345: PUSH1 0x40
00001347: MLOAD
00001348: PUSH1 0x00
0000134a: DUP2
0000134b: MSTORE
0000134c: PUSH1 0x20
0000134e: ADD
0000134f: PUSH1 0x40
00001351: MSTORE
00001352: PUSH1 0x40
00001354: MLOAD
00001355: DUP1
00001356: DUP6
00001357: DUP2
00001358: MSTORE
00001359: PUSH1 0x20
0000135b: ADD
0000135c: DUP5
0000135d: PUSH1 0xff
0000135f: AND
00001360: DUP2
00001361: MSTORE
00001362: PUSH1 0x20
00001364: ADD
00001365: DUP4
00001366: DUP2
00001367: MSTORE
00001368: PUSH1 0x20
0000136a: ADD
0000136b: DUP3
0000136c: DUP2
0000136d: MSTORE
0000136e: PUSH1 0x20
00001370: ADD
00001371: SWAP5
00001372: POP
00001373: POP
00001374: POP
00001375: POP
00001376: POP
00001377: PUSH1 0x20
00001379: PUSH1 0x40
0000137b: MLOAD
0000137c: PUSH1 0x20
0000137e: DUP2
0000137f: SUB
00001380: SWAP1
00001381: DUP1
00001382: DUP5
00001383: SUB
00001384: SWAP1
00001385: DUP6
00001386: GAS
00001387: STATICCALL
00001388: ISZERO
00001389: DUP1
0000138a: ISZERO
0000138b: PUSH2 0x1398
0000138e: JUMPI
0000138f: RETURNDATASIZE
00001390: PUSH1 0x00
00001392: DUP1
00001393: RETURNDATACOPY
00001394: RETURNDATASIZE
00001395: PUSH1 0x00
00001397: REVERT
00001398: JUMPDEST
00001399: POP
0000139a: POP
0000139b: PUSH1 0x40
0000139d: MLOAD
0000139e: PUSH1 0x1f
000013a0: NOT
000013a1: ADD
000013a2: MLOAD
000013a3: SWAP8
000013a4: SWAP7
000013a5: POP
000013a6: POP
000013a7: POP
000013a8: POP
000013a9: POP
000013aa: POP
000013ab: POP
000013ac: JUMP
000013ad: JUMPDEST
000013ae: PUSH1 0x00
000013b0: DUP2
000013b1: DUP2
000013b2: MSTORE
000013b3: PUSH1 0x20
000013b5: DUP2
000013b6: SWAP1
000013b7: MSTORE
000013b8: PUSH1 0x40
000013ba: DUP2
000013bb: KECCAK256
000013bc: SLOAD
000013bd: PUSH1 0xff
000013bf: AND
000013c0: ISZERO
000013c1: PUSH2 0x1406
000013c4: JUMPI
000013c5: PUSH1 0x40
000013c7: DUP1
000013c8: MLOAD
000013c9: PUSH3 0x461bcd
000013cd: PUSH1 0xe5
000013cf: SHL
000013d0: DUP2
000013d1: MSTORE
000013d2: PUSH1 0x20
000013d4: PUSH1 0x04
000013d6: DUP3
000013d7: ADD
000013d8: MSTORE
000013d9: PUSH1 0x12
000013db: PUSH1 0x24
000013dd: DUP3
000013de: ADD
000013df: MSTORE
000013e0: PUSH18 0x139bdb98d94bd05b1c9958591e48155cd959
000013f3: PUSH1 0x72
000013f5: SHL
000013f6: PUSH1 0x44
000013f8: DUP3
000013f9: ADD
000013fa: MSTORE
000013fb: SWAP1
000013fc: MLOAD
000013fd: SWAP1
000013fe: DUP2
000013ff: SWAP1
00001400: SUB
00001401: PUSH1 0x64
00001403: ADD
00001404: SWAP1
00001405: REVERT
00001406: JUMPDEST
00001407: POP
00001408: PUSH1 0x00
0000140a: SWAP1
0000140b: DUP2
0000140c: MSTORE
0000140d: PUSH1 0x20
0000140f: DUP2
00001410: SWAP1
00001411: MSTORE
00001412: PUSH1 0x40
00001414: SWAP1
00001415: KECCAK256
00001416: DUP1
00001417: SLOAD
00001418: PUSH1 0xff
0000141a: NOT
0000141b: AND
0000141c: PUSH1 0x01
0000141e: SWAP1
0000141f: DUP2
00001420: OR
00001421: SWAP1
00001422: SWAP2
00001423: SSTORE
00001424: SWAP1
00001425: JUMP
00001426: JUMPDEST
00001427: PUSH1 0x00
00001429: PUSH1 0x60
0000142b: DUP5
0000142c: PUSH1 0x01
0000142e: PUSH1 0x01
00001430: PUSH1 0xa0
00001432: SHL
00001433: SUB
00001434: AND
00001435: DUP5
00001436: DUP5
00001437: PUSH1 0x40
00001439: MLOAD
0000143a: DUP1
0000143b: DUP3
0000143c: DUP1
0000143d: MLOAD
0000143e: SWAP1
0000143f: PUSH1 0x20
00001441: ADD
00001442: SWAP1
00001443: DUP1
00001444: DUP4
00001445: DUP4
00001446: JUMPDEST
00001447: PUSH1 0x20
00001449: DUP4
0000144a: LT
0000144b: PUSH2 0x1465
0000144e: JUMPI
0000144f: DUP1
00001450: MLOAD
00001451: DUP3
00001452: MSTORE
00001453: PUSH1 0x1f
00001455: NOT
00001456: SWAP1
00001457: SWAP3
00001458: ADD
00001459: SWAP2
0000145a: PUSH1 0x20
0000145c: SWAP2
0000145d: DUP3
0000145e: ADD
0000145f: SWAP2
00001460: ADD
00001461: PUSH2 0x1446
00001464: JUMP
00001465: JUMPDEST
00001466: PUSH1 0x01
00001468: DUP4
00001469: PUSH1 0x20
0000146b: SUB
0000146c: PUSH2 0x0100
0000146f: EXP
00001470: SUB
00001471: DUP1
00001472: NOT
00001473: DUP3
00001474: MLOAD
00001475: AND
00001476: DUP2
00001477: DUP5
00001478: MLOAD
00001479: AND
0000147a: DUP1
0000147b: DUP3
0000147c: OR
0000147d: DUP6
0000147e: MSTORE
0000147f: POP
00001480: POP
00001481: POP
00001482: POP
00001483: POP
00001484: POP
00001485: SWAP1
00001486: POP
00001487: ADD
00001488: SWAP2
00001489: POP
0000148a: POP
0000148b: PUSH1 0x00
0000148d: PUSH1 0x40
0000148f: MLOAD
00001490: DUP1
00001491: DUP4
00001492: SUB
00001493: DUP2
00001494: DUP6
00001495: DUP8
00001496: GAS
00001497: CALL
00001498: SWAP3
00001499: POP
0000149a: POP
0000149b: POP
0000149c: RETURNDATASIZE
0000149d: DUP1
0000149e: PUSH1 0x00
000014a0: DUP2
000014a1: EQ
000014a2: PUSH2 0x14c7
000014a5: JUMPI
000014a6: PUSH1 0x40
000014a8: MLOAD
000014a9: SWAP2
000014aa: POP
000014ab: PUSH1 0x1f
000014ad: NOT
000014ae: PUSH1 0x3f
000014b0: RETURNDATASIZE
000014b1: ADD
000014b2: AND
000014b3: DUP3
000014b4: ADD
000014b5: PUSH1 0x40
000014b7: MSTORE
000014b8: RETURNDATASIZE
000014b9: DUP3
000014ba: MSTORE
000014bb: RETURNDATASIZE
000014bc: PUSH1 0x00
000014be: PUSH1 0x20
000014c0: DUP5
000014c1: ADD
000014c2: RETURNDATACOPY
000014c3: PUSH2 0x14cc
000014c6: JUMP
000014c7: JUMPDEST
000014c8: PUSH1 0x60
000014ca: SWAP2
000014cb: POP
000014cc: JUMPDEST
000014cd: POP
000014ce: SWAP1
000014cf: SWAP7
000014d0: SWAP1
000014d1: SWAP6
000014d2: POP
000014d3: SWAP4
000014d4: POP
000014d5: POP
000014d6: POP
000014d7: POP
000014d8: JUMP
000014d9: JUMPDEST
000014da: PUSH1 0x40
000014dc: DUP1
000014dd: MLOAD
000014de: PUSH1 0x01
000014e0: PUSH1 0x01
000014e2: PUSH1 0xa0
000014e4: SHL
000014e5: SUB
000014e6: DUP5
000014e7: AND
000014e8: PUSH1 0x24
000014ea: DUP3
000014eb: ADD
000014ec: MSTORE
000014ed: PUSH1 0x44
000014ef: DUP1
000014f0: DUP3
000014f1: ADD
000014f2: DUP5
000014f3: SWAP1
000014f4: MSTORE
000014f5: DUP3
000014f6: MLOAD
000014f7: DUP1
000014f8: DUP4
000014f9: SUB
000014fa: SWAP1
000014fb: SWAP2
000014fc: ADD
000014fd: DUP2
000014fe: MSTORE
000014ff: PUSH1 0x64
00001501: SWAP1
00001502: SWAP2
00001503: ADD
00001504: SWAP1
00001505: SWAP2
00001506: MSTORE
00001507: PUSH1 0x20
00001509: DUP2
0000150a: ADD
0000150b: DUP1
0000150c: MLOAD
0000150d: PUSH1 0x01
0000150f: PUSH1 0x01
00001511: PUSH1 0xe0
00001513: SHL
00001514: SUB
00001515: AND
00001516: PUSH4 0xa9059cbb
0000151b: PUSH1 0xe0
0000151d: SHL
0000151e: OR
0000151f: SWAP1
00001520: MSTORE
00001521: PUSH2 0x152b
00001524: SWAP1
00001525: DUP5
00001526: SWAP1
00001527: PUSH2 0x1530
0000152a: JUMP
0000152b: JUMPDEST
0000152c: POP
0000152d: POP
0000152e: POP
0000152f: JUMP
00001530: JUMPDEST
00001531: PUSH1 0x60
00001533: PUSH2 0x1585
00001536: DUP3
00001537: PUSH1 0x40
00001539: MLOAD
0000153a: DUP1
0000153b: PUSH1 0x40
0000153d: ADD
0000153e: PUSH1 0x40
00001540: MSTORE
00001541: DUP1
00001542: PUSH1 0x20
00001544: DUP2
00001545: MSTORE
00001546: PUSH1 0x20
00001548: ADD
00001549: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
0000156a: DUP2
0000156b: MSTORE
0000156c: POP
0000156d: DUP6
0000156e: PUSH1 0x01
00001570: PUSH1 0x01
00001572: PUSH1 0xa0
00001574: SHL
00001575: SUB
00001576: AND
00001577: PUSH2 0x15e1
0000157a: SWAP1
0000157b: SWAP3
0000157c: SWAP2
0000157d: SWAP1
0000157e: PUSH4 0xffffffff
00001583: AND
00001584: JUMP
00001585: JUMPDEST
00001586: DUP1
00001587: MLOAD
00001588: SWAP1
00001589: SWAP2
0000158a: POP
0000158b: ISZERO
0000158c: PUSH2 0x152b
0000158f: JUMPI
00001590: DUP1
00001591: DUP1
00001592: PUSH1 0x20
00001594: ADD
00001595: SWAP1
00001596: MLOAD
00001597: PUSH1 0x20
00001599: DUP2
0000159a: LT
0000159b: ISZERO
0000159c: PUSH2 0x15a4
0000159f: JUMPI
000015a0: PUSH1 0x00
000015a2: DUP1
000015a3: REVERT
000015a4: JUMPDEST
000015a5: POP
000015a6: MLOAD
000015a7: PUSH2 0x152b
000015aa: JUMPI
000015ab: PUSH1 0x40
000015ad: MLOAD
000015ae: PUSH3 0x461bcd
000015b2: PUSH1 0xe5
000015b4: SHL
000015b5: DUP2
000015b6: MSTORE
000015b7: PUSH1 0x04
000015b9: ADD
000015ba: DUP1
000015bb: DUP1
000015bc: PUSH1 0x20
000015be: ADD
000015bf: DUP3
000015c0: DUP2
000015c1: SUB
000015c2: DUP3
000015c3: MSTORE
000015c4: PUSH1 0x2a
000015c6: DUP2
000015c7: MSTORE
000015c8: PUSH1 0x20
000015ca: ADD
000015cb: DUP1
000015cc: PUSH2 0x18b5
000015cf: PUSH1 0x2a
000015d1: SWAP2
000015d2: CODECOPY
000015d3: PUSH1 0x40
000015d5: ADD
000015d6: SWAP2
000015d7: POP
000015d8: POP
000015d9: PUSH1 0x40
000015db: MLOAD
000015dc: DUP1
000015dd: SWAP2
000015de: SUB
000015df: SWAP1
000015e0: REVERT
000015e1: JUMPDEST
000015e2: PUSH1 0x60
000015e4: PUSH2 0x0bac
000015e7: DUP5
000015e8: DUP5
000015e9: PUSH1 0x00
000015eb: DUP6
000015ec: PUSH1 0x60
000015ee: PUSH2 0x15f6
000015f1: DUP6
000015f2: PUSH2 0x1796
000015f5: JUMP
000015f6: JUMPDEST
000015f7: PUSH2 0x1647
000015fa: JUMPI
000015fb: PUSH1 0x40
000015fd: DUP1
000015fe: MLOAD
000015ff: PUSH3 0x461bcd
00001603: PUSH1 0xe5
00001605: SHL
00001606: DUP2
00001607: MSTORE
00001608: PUSH1 0x20
0000160a: PUSH1 0x04
0000160c: DUP3
0000160d: ADD
0000160e: MSTORE
0000160f: PUSH1 0x1d
00001611: PUSH1 0x24
00001613: DUP3
00001614: ADD
00001615: MSTORE
00001616: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001637: PUSH1 0x44
00001639: DUP3
0000163a: ADD
0000163b: MSTORE
0000163c: SWAP1
0000163d: MLOAD
0000163e: SWAP1
0000163f: DUP2
00001640: SWAP1
00001641: SUB
00001642: PUSH1 0x64
00001644: ADD
00001645: SWAP1
00001646: REVERT
00001647: JUMPDEST
00001648: PUSH1 0x00
0000164a: PUSH1 0x60
0000164c: DUP7
0000164d: PUSH1 0x01
0000164f: PUSH1 0x01
00001651: PUSH1 0xa0
00001653: SHL
00001654: SUB
00001655: AND
00001656: DUP6
00001657: DUP8
00001658: PUSH1 0x40
0000165a: MLOAD
0000165b: DUP1
0000165c: DUP3
0000165d: DUP1
0000165e: MLOAD
0000165f: SWAP1
00001660: PUSH1 0x20
00001662: ADD
00001663: SWAP1
00001664: DUP1
00001665: DUP4
00001666: DUP4
00001667: JUMPDEST
00001668: PUSH1 0x20
0000166a: DUP4
0000166b: LT
0000166c: PUSH2 0x1686
0000166f: JUMPI
00001670: DUP1
00001671: MLOAD
00001672: DUP3
00001673: MSTORE
00001674: PUSH1 0x1f
00001676: NOT
00001677: SWAP1
00001678: SWAP3
00001679: ADD
0000167a: SWAP2
0000167b: PUSH1 0x20
0000167d: SWAP2
0000167e: DUP3
0000167f: ADD
00001680: SWAP2
00001681: ADD
00001682: PUSH2 0x1667
00001685: JUMP
00001686: JUMPDEST
00001687: PUSH1 0x01
00001689: DUP4
0000168a: PUSH1 0x20
0000168c: SUB
0000168d: PUSH2 0x0100
00001690: EXP
00001691: SUB
00001692: DUP1
00001693: NOT
00001694: DUP3
00001695: MLOAD
00001696: AND
00001697: DUP2
00001698: DUP5
00001699: MLOAD
0000169a: AND
0000169b: DUP1
0000169c: DUP3
0000169d: OR
0000169e: DUP6
0000169f: MSTORE
000016a0: POP
000016a1: POP
000016a2: POP
000016a3: POP
000016a4: POP
000016a5: POP
000016a6: SWAP1
000016a7: POP
000016a8: ADD
000016a9: SWAP2
000016aa: POP
000016ab: POP
000016ac: PUSH1 0x00
000016ae: PUSH1 0x40
000016b0: MLOAD
000016b1: DUP1
000016b2: DUP4
000016b3: SUB
000016b4: DUP2
000016b5: DUP6
000016b6: DUP8
000016b7: GAS
000016b8: CALL
000016b9: SWAP3
000016ba: POP
000016bb: POP
000016bc: POP
000016bd: RETURNDATASIZE
000016be: DUP1
000016bf: PUSH1 0x00
000016c1: DUP2
000016c2: EQ
000016c3: PUSH2 0x16e8
000016c6: JUMPI
000016c7: PUSH1 0x40
000016c9: MLOAD
000016ca: SWAP2
000016cb: POP
000016cc: PUSH1 0x1f
000016ce: NOT
000016cf: PUSH1 0x3f
000016d1: RETURNDATASIZE
000016d2: ADD
000016d3: AND
000016d4: DUP3
000016d5: ADD
000016d6: PUSH1 0x40
000016d8: MSTORE
000016d9: RETURNDATASIZE
000016da: DUP3
000016db: MSTORE
000016dc: RETURNDATASIZE
000016dd: PUSH1 0x00
000016df: PUSH1 0x20
000016e1: DUP5
000016e2: ADD
000016e3: RETURNDATACOPY
000016e4: PUSH2 0x16ed
000016e7: JUMP
000016e8: JUMPDEST
000016e9: PUSH1 0x60
000016eb: SWAP2
000016ec: POP
000016ed: JUMPDEST
000016ee: POP
000016ef: SWAP2
000016f0: POP
000016f1: SWAP2
000016f2: POP
000016f3: DUP2
000016f4: ISZERO
000016f5: PUSH2 0x1701
000016f8: JUMPI
000016f9: SWAP2
000016fa: POP
000016fb: PUSH2 0x0bac
000016fe: SWAP1
000016ff: POP
00001700: JUMP
00001701: JUMPDEST
00001702: DUP1
00001703: MLOAD
00001704: ISZERO
00001705: PUSH2 0x1711
00001708: JUMPI
00001709: DUP1
0000170a: MLOAD
0000170b: DUP1
0000170c: DUP3
0000170d: PUSH1 0x20
0000170f: ADD
00001710: REVERT
00001711: JUMPDEST
00001712: DUP4
00001713: PUSH1 0x40
00001715: MLOAD
00001716: PUSH3 0x461bcd
0000171a: PUSH1 0xe5
0000171c: SHL
0000171d: DUP2
0000171e: MSTORE
0000171f: PUSH1 0x04
00001721: ADD
00001722: DUP1
00001723: DUP1
00001724: PUSH1 0x20
00001726: ADD
00001727: DUP3
00001728: DUP2
00001729: SUB
0000172a: DUP3
0000172b: MSTORE
0000172c: DUP4
0000172d: DUP2
0000172e: DUP2
0000172f: MLOAD
00001730: DUP2
00001731: MSTORE
00001732: PUSH1 0x20
00001734: ADD
00001735: SWAP2
00001736: POP
00001737: DUP1
00001738: MLOAD
00001739: SWAP1
0000173a: PUSH1 0x20
0000173c: ADD
0000173d: SWAP1
0000173e: DUP1
0000173f: DUP4
00001740: DUP4
00001741: PUSH1 0x00
00001743: JUMPDEST
00001744: DUP4
00001745: DUP2
00001746: LT
00001747: ISZERO
00001748: PUSH2 0x175b
0000174b: JUMPI
0000174c: DUP2
0000174d: DUP2
0000174e: ADD
0000174f: MLOAD
00001750: DUP4
00001751: DUP3
00001752: ADD
00001753: MSTORE
00001754: PUSH1 0x20
00001756: ADD
00001757: PUSH2 0x1743
0000175a: JUMP
0000175b: JUMPDEST
0000175c: POP
0000175d: POP
0000175e: POP
0000175f: POP
00001760: SWAP1
00001761: POP
00001762: SWAP1
00001763: DUP2
00001764: ADD
00001765: SWAP1
00001766: PUSH1 0x1f
00001768: AND
00001769: DUP1
0000176a: ISZERO
0000176b: PUSH2 0x1788
0000176e: JUMPI
0000176f: DUP1
00001770: DUP3
00001771: SUB
00001772: DUP1
00001773: MLOAD
00001774: PUSH1 0x01
00001776: DUP4
00001777: PUSH1 0x20
00001779: SUB
0000177a: PUSH2 0x0100
0000177d: EXP
0000177e: SUB
0000177f: NOT
00001780: AND
00001781: DUP2
00001782: MSTORE
00001783: PUSH1 0x20
00001785: ADD
00001786: SWAP2
00001787: POP
00001788: JUMPDEST
00001789: POP
0000178a: SWAP3
0000178b: POP
0000178c: POP
0000178d: POP
0000178e: PUSH1 0x40
00001790: MLOAD
00001791: DUP1
00001792: SWAP2
00001793: SUB
00001794: SWAP1
00001795: REVERT
00001796: JUMPDEST
00001797: EXTCODESIZE
00001798: ISZERO
00001799: ISZERO
0000179a: SWAP1
0000179b: JUMP
0000179c: INVALID
0000179d: BASEFEE
0000179e: PUSH6 0x6e657369734d
000017a5: PUSH2 0x7374
000017a8: PUSH6 0x7257616c6c65
000017af: PUSH21 0x2f496e76616c69642052656769737472794d756c74
000017c5: PUSH10 0x5369672f53686f756c64
000017d0: KECCAK256
000017d1: PUSH3 0x652063
000017d5: PUSH2 0x6c6c
000017d8: PUSH6 0x64206279204d
000017df: PUSH22 0x6c746953696748656e657369734d617374657257616c
000017f6: PUSH13 0x65742f416c726561647920496e
00001804: PUSH10 0x7469616c697a65644d75
0000180f: PUSH13 0x746953696743616c6c2f53686f
0000181d: PUSH22 0x6c642075736520646966666572656e74207265676973
00001834: PUSH21 0x65726564206b65797348656e657369734d61737465
0000184a: PUSH19 0x57616c6c65742f4e6f7420417574686f72697a
0000185e: PUSH6 0x64204b65794d
00001865: PUSH22 0x6c746953696743616c6c2f4e6f7420557361626c6520
0000187c: MSTORE8
0000187d: PUSH10 0x676e617475726548656e
00001888: PUSH6 0x7369734d6173
0000188f: PUSH21 0x657257616c6c65742f496e76616c69642055736572
000018a5: KECCAK256
000018a6: JUMPI
000018a7: PUSH2 0x6c6c
000018aa: PUSH6 0x742054656d70
000018b1: PUSH13 0x6174655361666545524332303a
000018bf: KECCAK256
000018c0: GASLIMIT
000018c1: MSTORE
000018c2: NUMBER
000018c3: ORIGIN
000018c4: ADDRESS
000018c5: KECCAK256
000018c6: PUSH16 0x7065726174696f6e20646964206e6f74
000018d7: KECCAK256
000018d8: PUSH20 0x756363656564a264697066735822122007a2d2e0
000018ed: TSTORE
000018ee: UNKNOWN(0x4B)
000018ef: SGT
000018f0: SWAP9
000018f1: JUMPI
000018f2: UNKNOWN(0x4D)
000018f3: DUP1
000018f4: CALLVALUE
000018f5: PUSH9 0x23260761f6c4ec13a9
000018ff: MSTORE
00001900: CALLER
00001901: SDIV
00001902: PUSH16 0xde99c0d372fd64736f6c634300060c00
00001913: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x5a7747fc",
            "selector": "0x5a7747fc",
            "calldata_variants": [
                "0x5a7747fc",
                "0x5a7747fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7b103999",
            "selector": "0x7b103999",
            "calldata_variants": [
                "0x7b103999",
                "0x7b1039990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91dde7c3",
            "selector": "0x91dde7c3",
            "calldata_variants": [
                "0x91dde7c3",
                "0x91dde7c30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9bb84c2",
            "selector": "0xe9bb84c2",
            "calldata_variants": [
                "0xe9bb84c2",
                "0xe9bb84c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea23c389",
            "selector": "0xea23c389",
            "calldata_variants": [
                "0xea23c389",
                "0xea23c3890000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5537ede",
            "selector": "0xf5537ede",
            "calldata_variants": [
                "0xf5537ede",
                "0xf5537ede0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e8e1993",
            "selector": "0x2e8e1993",
            "calldata_variants": [
                "0x2e8e1993",
                "0x2e8e19930000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x35eadfba",
            "selector": "0x35eadfba",
            "calldata_variants": [
                "0x35eadfba",
                "0x35eadfba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 1187,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2439,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2823,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2918,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 6339,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xb0577327a5959747f511bd918a5c412eb7700e2305596b0fc1a343710cd47788
call_targets: 0xaeaa035f548ca6033b422ded97fdf943974b61e2
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb0577327a5959747f511bd918a5c412eb7700e2305596b0fc1a343710cd47788",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaeaa035f548ca6033b422ded97fdf943974b61e2"
    ],
    "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": "0x5a7747fc",
            "selector": "0x5a7747fc",
            "calldata_variants": [
                "0x5a7747fc",
                "0x5a7747fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7b103999",
            "selector": "0x7b103999",
            "calldata_variants": [
                "0x7b103999",
                "0x7b1039990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91dde7c3",
            "selector": "0x91dde7c3",
            "calldata_variants": [
                "0x91dde7c3",
                "0x91dde7c30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9bb84c2",
            "selector": "0xe9bb84c2",
            "calldata_variants": [
                "0xe9bb84c2",
                "0xe9bb84c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea23c389",
            "selector": "0xea23c389",
            "calldata_variants": [
                "0xea23c389",
                "0xea23c3890000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5537ede",
            "selector": "0xf5537ede",
            "calldata_variants": [
                "0xf5537ede",
                "0xf5537ede0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e8e1993",
            "selector": "0x2e8e1993",
            "calldata_variants": [
                "0x2e8e1993",
                "0x2e8e19930000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x35eadfba",
            "selector": "0x35eadfba",
            "calldata_variants": [
                "0x35eadfba",
                "0x35eadfba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1366,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2598,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4290,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [
        {
            "pc": 1187,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2439,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2823,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2918,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 6339,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 5
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xb0577327a5959747f511bd918a5c412eb7700e2305596b0fc1a343710cd47788
call_targets: 0xaeaa035f548ca6033b422ded97fdf943974b61e2
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb0577327a5959747f511bd918a5c412eb7700e2305596b0fc1a343710cd47788",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaeaa035f548ca6033b422ded97fdf943974b61e2"
    ],
    "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": "0x5a7747fc",
            "selector": "0x5a7747fc",
            "calldata_variants": [
                "0x5a7747fc",
                "0x5a7747fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7b103999",
            "selector": "0x7b103999",
            "calldata_variants": [
                "0x7b103999",
                "0x7b1039990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91dde7c3",
            "selector": "0x91dde7c3",
            "calldata_variants": [
                "0x91dde7c3",
                "0x91dde7c30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9bb84c2",
            "selector": "0xe9bb84c2",
            "calldata_variants": [
                "0xe9bb84c2",
                "0xe9bb84c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea23c389",
            "selector": "0xea23c389",
            "calldata_variants": [
                "0xea23c389",
                "0xea23c3890000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5537ede",
            "selector": "0xf5537ede",
            "calldata_variants": [
                "0xf5537ede",
                "0xf5537ede0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e8e1993",
            "selector": "0x2e8e1993",
            "calldata_variants": [
                "0x2e8e1993",
                "0x2e8e19930000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x35eadfba",
            "selector": "0x35eadfba",
            "calldata_variants": [
                "0x35eadfba",
                "0x35eadfba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1366,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2598,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4290,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": [
        {
            "pc": 1187,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2439,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2823,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 2918,
            "type": "msg_sender_eq_const",
            "value": 0
        },
        {
            "pc": 6339,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0xb55ccb82cb33c1606877a7f8b6cb7409226d2ed35a0f34cf716a298e1b99be2c
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 24,
    "trace_id": "0xb55ccb82cb33c1606877a7f8b6cb7409226d2ed35a0f34cf716a298e1b99be2c",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x5a7747fc",
            "selector": "0x5a7747fc",
            "calldata_variants": [
                "0x5a7747fc",
                "0x5a7747fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7b103999",
            "selector": "0x7b103999",
            "calldata_variants": [
                "0x7b103999",
                "0x7b1039990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91dde7c3",
            "selector": "0x91dde7c3",
            "calldata_variants": [
                "0x91dde7c3",
                "0x91dde7c30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9bb84c2",
            "selector": "0xe9bb84c2",
            "calldata_variants": [
                "0xe9bb84c2",
                "0xe9bb84c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea23c389",
            "selector": "0xea23c389",
            "calldata_variants": [
                "0xea23c389",
                "0xea23c3890000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5537ede",
            "selector": "0xf5537ede",
            "calldata_variants": [
                "0xf5537ede",
                "0xf5537ede0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e8e1993",
            "selector": "0x2e8e1993",
            "calldata_variants": [
                "0x2e8e1993",
                "0x2e8e19930000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x35eadfba",
            "selector": "0x35eadfba",
            "calldata_variants": [
                "0x35eadfba",
                "0x35eadfba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_count": 1
}
low other cast Contract creation opcode present 60 no
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 0,
    "create2_count": 1
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 7
}