1b4347d7-0929-4c5e-bd6b-daef02bb6d1e
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31327 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110960 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110961 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110962 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110963 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110964 | detector.run | complete | 1 / 3 | 1 week ago |
| 110965 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:450780] OpenAI Codex v0.77.0 (research preview)
[codex:450780] --------
[codex:450780] workdir: /tmp/codex-multi-1zyi5_s9
[codex:450780] model: gpt-5.2-codex
[codex:450780] provider: openai
[codex:450780] approval: never
[codex:450780] sandbox: read-only
[codex:450780] reasoning effort: xhigh
[codex:450780] reasoning summaries: auto
[codex:450780] session id: 019b803b-54f9-7d22-9446-3ee0947f6a5b
[codex:450780] --------
[codex:450780] user
[codex:450780] 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:450780]
[codex:450780] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:450780]
[codex:450780] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:450780] - Gas inefficiency, code quality, or best practices
[codex:450780] - Theoretical vulnerabilities without a clear extraction path
[codex:450780] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:450780] - Issues requiring social engineering or off-chain coordination
[codex:450780]
[codex:450780] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:450780] - CALL/DELEGATECALL with controllable destination or calldata
[codex:450780] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:450780] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:450780] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:450780] - External calls before state updates (reentrancy)
[codex:450780] - SELFDESTRUCT with controllable beneficiary
[codex:450780] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:450780]
[codex:450780] For each finding, you MUST explain:
[codex:450780] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:450780] 2. The concrete sequence of transactions to extract value
[codex:450780] 3. Why you believe this is exploitable (not just suspicious)
[codex:450780]
[codex:450780] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:450780] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:450780]
[codex:450780] Output MUST be valid JSON matching the provided schema.
[codex:450780] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:450780] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:450780] mcp startup: no servers
[codex:450780]
[codex:450780] thinking
[codex:450780] **Reading file contents**
[codex:450780] exec
[codex:450780] /bin/bash -lc ls in /tmp/codex-multi-1zyi5_s9 succeeded in 5ms:
[codex:450780] BYTECODE_BUNDLE.txt
[codex:450780] codex-output-schema.json
[codex:450780] exec
[codex:450780] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-1zyi5_s9 succeeded in 6ms:
[codex:450780] Runtime bytecode bundle for best-effort auditing.
[codex:450780] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:450780]
[codex:450780] FILE: runtime_bytecode.hex
[codex:450780] 0x6080604052600436106101445760003560e01c80636b2a8f65116100c0578063cf6e448811610074578063efcab17311610059578063efcab1731461067f578063fa558b71146106a9578063fd404b4c1461078857610144565b8063cf6e4488146105c8578063dfd1fb7a146105f257610144565b806396aa7368116100a557806396aa73681461046757806398a89897146104e4578063cb81fecf146105b357610144565b80636b2a8f65146103f6578063801ead1d1461042057610144565b80632e2d726c116101175780633a8343ee116100fc5780633a8343ee1461030c5780633cd18ca0146103365780633f53c36c146103c357610144565b80632e2d726c1461026a578063375b74c3146102f757610144565b806314ae3c091461018057806315b21082146101c6578063233ecf781461020b5780632ca40a331461023e575b6040805133815234602082015281517fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1929181900390910190a1005b34801561018c57600080fd5b506101aa600480360360208110156101a357600080fd5b503561081e565b604080516001600160a01b039092168252519081900360200190f35b3480156101d257600080fd5b506101f9600480360360208110156101e957600080fd5b50356001600160a01b0316610839565b60408051918252519081900360200190f35b34801561021757600080fd5b506101f96004803603602081101561022e57600080fd5b50356001600160a01b0316610914565b34801561024a57600080fd5b506102686004803603602081101561026157600080fd5b5035610971565b005b34801561027657600080fd5b506102686004803603604081101561028d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460208302840111640100000000831117156102ec57600080fd5b509092509050610a46565b34801561030357600080fd5b506101aa610b47565b34801561031857600080fd5b506102686004803603602081101561032f57600080fd5b5035610b56565b34801561034257600080fd5b506102686004803603604081101561035957600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460208302840111640100000000831117156103b857600080fd5b509092509050610c21565b3480156103cf57600080fd5b506101f9600480360360208110156103e657600080fd5b50356001600160a01b0316610e27565b34801561040257600080fd5b506102686004803603602081101561041957600080fd5b5035610e84565b34801561042c57600080fd5b506104536004803603602081101561044357600080fd5b50356001600160a01b0316610f5c565b604080519115158252519081900360200190f35b34801561047357600080fd5b506102686004803603602081101561048a57600080fd5b8101906020810181356401000000008111156104a557600080fd5b8201836020820111156104b757600080fd5b803590602001918460208302840111640100000000831117156104d957600080fd5b509092509050610f71565b3480156104f057600080fd5b506102686004803603604081101561050757600080fd5b81019060208101813564010000000081111561052257600080fd5b82018360208201111561053457600080fd5b8035906020019184602083028401116401000000008311171561055657600080fd5b91939092909160208101903564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b509092509050611054565b3480156105bf57600080fd5b506101f96111c5565b3480156105d457600080fd5b506101aa600480360360208110156105eb57600080fd5b50356111cb565b3480156105fe57600080fd5b506102686004803603604081101561061557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561064057600080fd5b82018360208201111561065257600080fd5b8035906020019184600183028401116401000000008311171561067457600080fd5b5090925090506111e6565b34801561068b57600080fd5b506101aa600480360360208110156106a257600080fd5b503561147f565b3480156106b557600080fd5b50610268600480360360608110156106cc57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184602083028401116401000000008311171561072b57600080fd5b91939092909160208101903564010000000081111561074957600080fd5b82018360208201111561075b57600080fd5b8035906020019184602083028401116401000000008311171561077d57600080fd5b50909250905061149a565b34801561079457600080fd5b50610268600480360360608110156107ab57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156107df57600080fd5b8201836020820111156107f157600080fd5b8035906020019184600183028401116401000000008311171561081357600080fd5b509092509050611674565b6004602052600090815260409020546001600160a01b031681565b60006001600160a01b038216610885576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b61088d61177c565b60408051602080820183526001600160a01b038087168084526000868152600284528590209351845492166001600160a01b031990921691909117909255825184815233918101919091528083019190915290519192507fd76fc900a7e1a6fcf11d54b7ba943918df6c53a3128140658c389b3da1e997ba919081900360600190a1919050565b60006109216005836117c5565b604080518281523360208201526001600160a01b0385168183015290519192507f80484ea176012d2765209d6a93b423d605ad7bddfdd769252a85b53268f5a845919081900360600190a1919050565b6001546001600160a01b031633146109bf576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006109cc600583611857565b6001600160a01b0381166000818152600360209081526040808320805460ff19169055868352600582529182902080546001600160a01b031916905581518681529081019290925280519293507f18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c738392918290030190a15050565b3360009081526003602052604090205460ff16610a99576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b81811015610b41576000838383818110610ab257fe5b905060200201356001600160a01b03169050806001600160a01b031663e00af4a7866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505060019093019250610a9c915050565b50505050565b6001546001600160a01b031681565b6001546001600160a01b03163314610ba4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bad816118d2565b600180546001600160a01b039283166001600160a01b031991821617825560008481526002602090815260409182902080549093169092559154825185815293169083015280517f9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d9281900390910190a150565b3360009081526003602052604090205460ff16610c74576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8260005b82811015610e20576000848483818110610c8e57fe5b905060200201356001600160a01b031690506000836001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610cf857600080fd5b505afa158015610d0c573d6000803e3d6000fd5b505050506040513d6020811015610d2257600080fd5b5051604080517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152306024830152604482018490529151929350908616916323b872dd916064808201926020929091908290030181600087803b158015610d9957600080fd5b505af1158015610dad573d6000803e3d6000fd5b505050506040513d6020811015610dc357600080fd5b5051610e16576040805162461bcd60e51b815260206004820152601260248201527f7472616e7366657246726f6d2066616c73650000000000000000000000000000604482015290519081900360640190fd5b5050600101610c78565b5050505050565b6000610e346004836117c5565b604080518281523360208201526001600160a01b0385168183015290519192507f86347f0dc6401085afc2e65b03928402543790cfec1c26238fb9d5384a0d0150919081900360600190a1919050565b6001546001600160a01b03163314610ed2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000610edf600483611857565b6001600160a01b0381166000818152600360209081526040808320805460ff19166001179055868352600482529182902080546001600160a01b031916905581518681529081019290925280519293507fd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb39392918290030190a15050565b60036020526000908152604090205460ff1681565b3360009081526003602052604090205460ff16610fc4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b8181101561104f576000838383818110610fdd57fe5b905060200201356001600160a01b03169050806001600160a01b03166390ec71bd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b505060019093019250610fc7915050565b505050565b3360009081526003602052604090205460ff166110a7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8281146110fb576040805162461bcd60e51b815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015290519081900360640190fd5b60005b83811015610e2057600085858381811061111457fe5b905060200201356001600160a01b03169050600084848481811061113457fe5b905060200201359050816001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015611176573d6000803e3d6000fd5b50604080516001600160a01b03841681526020810183905281517ff35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575929181900390910190a150506001016110fe565b60005481565b6002602052600090815260409020546001600160a01b031681565b3360009081526003602052604090205460ff16611239576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060846001600160a01b03168484604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611299576040519150601f19603f3d011682016040523d82523d6000602084013e61129e565b606091505b50915091508115611393577f18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b968585858460405180856001600160a01b03166001600160a01b03168152602001806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611350578181015183820152602001611338565b50505050905090810190601f16801561137d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1610e20565b7faba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e62748585858460405180856001600160a01b03166001600160a01b03168152602001806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b8381101561143a578181015183820152602001611422565b50505050905090810190601f1680156114675780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050505050565b6005602052600090815260409020546001600160a01b031681565b3360009081526003602052604090205460ff166114ed576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114611541576040805162461bcd60e51b815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015290519081900360640190fd5b8460005b8481101561166b57600086868381811061155b57fe5b905060200201356001600160a01b03169050600085858481811061157b57fe5b905060200201359050836001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b505050506040513d602081101561160e57600080fd5b5051611661576040805162461bcd60e51b815260206004820152600e60248201527f7472616e736665722066616c7365000000000000000000000000000000000000604482015290519081900360640190fd5b5050600101611545565b50505050505050565b3360009081526003602052604090205460ff166116c7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b604080517fdfd1fb7a0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830190815260248301938452604483018590529087169263dfd1fb7a92879287928792606401848480828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561175e57600080fd5b505af1158015611772573d6000803e3d6000fd5b5050505050505050565b6000805460010190819055604080516000194301406020808301919091523060601b82840152605480830194909452825180830390940184526074909101909152815191012090565b60006001600160a01b038216611811576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b61181961177c565b60408051602080820183526001600160a01b03958616825260008481529690529420935184546001600160a01b031916931692909217909255919050565b600081815260208390526040812080546001600160a01b03166118c1576040805162461bcd60e51b815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015290519081900360640190fd5b546001600160a01b03169392505050565b600081815260026020526040812080546001600160a01b031661193c576040805162461bcd60e51b815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015290519081900360640190fd5b546001600160a01b03169291505056fea265627a7a723158200f8248edd1960308d40aec2f9c13cb529ca9b8c62a97292427d1c4666470783564736f6c63430005100032
[codex:450780]
[codex:450780]
[codex:450780]
[codex:450780] thinking
[codex:450780] **Decoding bytecode functions and access controls**
[codex:450780]
[codex:450780] I'm carefully analyzing the bytecode to map function selectors to their logic, inspecting storage slots for ownership and whitelist checks, and pinpointing any token or ETH transfers that might be exploitable. I’m tracking calls with arguments, especially those interacting with mappings and external calls, to verify if access control is enforced thoroughly before value transfers. This close reading helps me find any concrete extraction paths or missing protections.
[codex:450780] thinking
[codex:450780] **Examining token and ETH transfer functions**
[codex:450780]
[codex:450780] I'm analyzing functions that handle external calls like token transfers or ETH sends, checking if they have proper access control like owner or whitelist restrictions. While some functions for batch token transfers or ETH payments require whitelist, others allow anyone to create locks or deposits without transferring funds. I’m also looking for any missing protection on functions changing owner or whitelist, and any reentrancy risks in ETH transfer loops; so far, all critical operations seem properly restricted.
[codex:450780] thinking
[codex:450780] **Verifying owner initialization and access controls**
[codex:450780]
[codex:450780] I'm investigating whether the owner slot (slot1) is properly initialized and if there are any unprotected functions that can modify it. I examined the bytecode for storage writes to slot1 and checked functions with owner checks. I’m preparing to run a small Python script to scan the bytecode for any unsafe `sstore` operations that write to slot1 without access control. This should help confirm if ownership can be hijacked or left unset.
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re, textwrap
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] # simple disassembler
[codex:450780] opcodes = {
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',
[codex:450780] 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:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:450780] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:450780] }
[codex:450780] for i in range(0x80):
[codex:450780] opcodes[0x80+i]=f'DUP{i+1}'
[codex:450780] opcodes[0x90+i]=f'SWAP{i+1}'
[codex:450780] for i in range(0xA0,0xA5):
[codex:450780] opcodes[i]=f'LOG{i-0xA0}'
[codex:450780] opcodes.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:450780]
[codex:450780] b = bytes.fromhex(hexstr)
[codex:450780] # disassemble with offsets
[codex:450780] out = []
[codex:450780] pc=0
[codex:450780] while pc < len(b):
[codex:450780] op = b[pc]
[codex:450780] name = opcodes.get(op, f'OP{op:02x}')
[codex:450780] if name.startswith('PUSH'):
[codex:450780] n = int(name[4:])
[codex:450780] data = b[pc+1:pc+1+n]
[codex:450780] out.append((pc, name, data.hex()))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] out.append((pc, name, ''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # print key regions around SSTORE and CALL
[codex:450780] for pc,name,data in out:
[codex:450780] if name in ('SSTORE','CALL','DELEGATECALL','SELFDESTRUCT'):
[codex:450780] # show a small window
[codex:450780] start = max(0, out.index((pc,name,data))-5)
[codex:450780] end = min(len(out), start+15)
[codex:450780] print('--- around', hex(pc), name)
[codex:450780] for j in range(start,end):
[codex:450780] p,n,d = out[j]
[codex:450780] if d:
[codex:450780] print(f'{p:04x}: {n} {d}')
[codex:450780] else:
[codex:450780] print(f'{p:04x}: {n}')
[codex:450780] print()
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 39ms:
[codex:450780] --- around 0x8cb SSTORE
[codex:450780] 08c6: DUP17
[codex:450780] 08c7: DUP18
[codex:450780] 08c8: OR
[codex:450780] 08c9: DUP17
[codex:450780] 08ca: DUP19
[codex:450780] 08cb: SSTORE
[codex:450780] 08cc: DUP3
[codex:450780] 08cd: MLOAD
[codex:450780] 08ce: DUP5
[codex:450780] 08cf: DUP2
[codex:450780] 08d0: MSTORE
[codex:450780] 08d1: CALLER
[codex:450780] 08d2: DUP18
[codex:450780] 08d3: DUP2
[codex:450780] 08d4: ADD
[codex:450780]
[codex:450780] --- around 0x9ef SSTORE
[codex:450780] 09e9: SLOAD
[codex:450780] 09ea: PUSH1 ff
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping CALL instructions to functions**
[codex:450780]
[codex:450780] I'm considering creating a Python script to parse disassembly, identify function entry points via JUMPDESTs, and map each CALL opcode to its containing function. This should help determine if any CALL sends ETH without protection, by correlating call offsets with function boundaries found in the dispatch table. Let's explore this mapping approach!
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] # decode bytes
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble with offset
[codex:450780] ops = []
[codex:450780] pc=0
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60 <= op <= 0x7f:
[codex:450780] n = op-0x5f
[codex:450780] data = b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # map of function entry offsets from dispatcher (PUSH2 <offset> JUMPI). We'll parse first 0x200 bytes.
[codex:450780] entries=set()
[codex:450780] for i,(pc,op,data) in enumerate(ops):
[codex:450780] # look for PUSH2 <offset> JUMPI pattern early
[codex:450780] if op==0x61 and i+1<len(ops) and ops[i+1][1]==0x57:
[codex:450780] off=int.from_bytes(data,'big')
[codex:450780] if off< len(b):
[codex:450780] entries.add(off)
[codex:450780]
[codex:450780] # also include entry for 0x144? maybe fallback? but ok
[codex:450780] entries = sorted(entries)
[codex:450780] print('entries', [hex(e) for e in entries])
[codex:450780]
[codex:450780] # collect call offsets
[codex:450780] calls=[]
[codex:450780] for pc,op,data in ops:
[codex:450780] if op in (0xf1,0xf4,0xff):
[codex:450780] calls.append(pc)
[codex:450780]
[codex:450780] # assign each call to nearest preceding entry
[codex:450780] entries_sorted=entries
[codex:450780] for c in calls:
[codex:450780] # find last entry <= c
[codex:450780] prev = max([e for e in entries_sorted if e<=c], default=None)
[codex:450780] print(f'CALL at {hex(c)} in function entry {hex(prev) if prev is not None else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 35ms:
[codex:450780] entries ['0x59', '0x74', '0xa5', '0xc0', '0xfc', '0x117', '0x144', '0x180', '0x18c', '0x1a3', '0x1c6', '0x1d2', '0x1e9', '0x20b', '0x217', '0x22e', '0x23e', '0x24a', '0x261', '0x26a', '0x276', '0x28d', '0x2b8', '0x2ca', '0x2ec', '0x2f7', '0x303', '0x30c', '0x318', '0x32f', '0x336', '0x342', '0x359', '0x384', '0x396', '0x3b8', '0x3c3', '0x3cf', '0x3e6', '0x3f6', '0x402', '0x419', '0x420', '0x42c', '0x443', '0x467', '0x473', '0x48a', '0x4a5', '0x4b7', '0x4d9', '0x4e4', '0x4f0', '0x507', '0x522', '0x534', '0x556', '0x574', '0x586', '0x5a8', '0x5b3', '0x5bf', '0x5c8', '0x5d4', '0x5eb', '0x5f2', '0x5fe', '0x615', '0x640', '0x652', '0x674', '0x67f', '0x68b', '0x6a2', '0x6a9', '0x6b5', '0x6cc', '0x6f7', '0x709', '0x72b', '0x749', '0x75b', '0x77d', '0x788', '0x794', '0x7ab', '0x7df', '0x7f1', '0x813', '0x885', '0x9bf', '0xa99', '0xab2', '0xb1c', '0xb30', '0xb41', '0xba4', '0xc74', '0xc8e', '0xcf8', '0xd0c', '0xd22', '0xd99', '0xdad', '0xdc3', '0xe16', '0xe20', '0xed2', '0xfc4', '0xfdd', '0x102a', '0x103e', '0x104f', '0x10a7', '0x10fb', '0x1114', '0x1134', '0x1176', '0x1239', '0x1299', '0x1350', '0x137d', '0x1393', '0x143a', '0x1467', '0x14ed', '0x1541', '0x155b', '0x157b', '0x15e4', '0x15f8', '0x160e', '0x1661', '0x166b', '0x16c7', '0x175e', '0x1772', '0x1811', '0x18c1', '0x193c']
[codex:450780] CALL at 0xb1f in function entry 0xb1c
[codex:450780] CALL at 0xd9c in function entry 0xd99
[codex:450780] CALL at 0x102d in function entry 0x102a
[codex:450780] CALL at 0x1160 in function entry 0x1134
[codex:450780] CALL at 0x126a in function entry 0x1239
[codex:450780] CALL at 0x15e7 in function entry 0x15e4
[codex:450780] CALL at 0x1761 in function entry 0x175e
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping function selectors to implementation offsets**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # simple disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60 <= op <= 0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # find pattern DUP1 PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780] op1=ops[i][1]; op2=ops[i+1][1]; op3=ops[i+2][1]; op4=ops[i+3][1]; op5=ops[i+4][1]; op6=ops[i+5][1]
[codex:450780] if op1==0x80 and op2==0x63 and op3==0x14 and op4==0x61 and op5==0x57:
[codex:450780] sel=ops[i+1][2].hex()
[codex:450780] dest=int.from_bytes(ops[i+3][2], 'big')
[codex:450780] selectors.append((sel, dest, ops[i][0]))
[codex:450780]
[codex:450780] print('selectors:')
[codex:450780] for sel,dest,pc in selectors:
[codex:450780] print(sel, hex(dest))
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] selectors:
[codex:450780] efcab173 0x67f
[codex:450780] fa558b71 0x6a9
[codex:450780] fd404b4c 0x788
[codex:450780] cf6e4488 0x5c8
[codex:450780] dfd1fb7a 0x5f2
[codex:450780] 96aa7368 0x467
[codex:450780] 98a89897 0x4e4
[codex:450780] cb81fecf 0x5b3
[codex:450780] 6b2a8f65 0x3f6
[codex:450780] 801ead1d 0x420
[codex:450780] 3a8343ee 0x30c
[codex:450780] 3cd18ca0 0x336
[codex:450780] 3f53c36c 0x3c3
[codex:450780] 2e2d726c 0x26a
[codex:450780] 375b74c3 0x2f7
[codex:450780] 14ae3c09 0x180
[codex:450780] 15b21082 0x1c6
[codex:450780] 233ecf78 0x20b
[codex:450780] 2ca40a33 0x23e
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping external entries to internal functions**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble with names
[codex:450780] opnames={
[codex:450780] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780]
[codex:450780] # decode
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60 <= op <= 0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # map pc to index
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780]
[codex:450780] entries = [0x180,0x1c6,0x20b,0x23e,0x26a,0x2f7,0x30c,0x336,0x3c3,0x3f6,0x420,0x467,0x4e4,0x5b3,0x5c8,0x5f2,0x67f,0x6a9,0x788]
[codex:450780]
[codex:450780] for entry in entries:
[codex:450780] i=pc_to_idx.get(entry)
[codex:450780] if i is None:
[codex:450780] print('entry not found', hex(entry)); continue
[codex:450780] print('\\n=== entry', hex(entry))
[codex:450780] for j in range(i, min(i+40, len(ops))):
[codex:450780] pc,op,data=ops[j]
[codex:450780] name = opnames.get(op, f'OP{op:02x}')
[codex:450780] if op>=0x60 and op<=0x7f:
[codex:450780] print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780] else:
[codex:450780] print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 32ms:
[codex:450780]
[codex:450780] === entry 0x180
[codex:450780] 0180: JUMPDEST
[codex:450780] 0181: CALLVALUE
[codex:450780] 0182: OP80
[codex:450780] 0183: ISZERO
[codex:450780] 0184: OP61 018c
[codex:450780] 0187: JUMPI
[codex:450780] 0188: OP60 00
[codex:450780] 018a: OP80
[codex:450780] 018b: REVERT
[codex:450780] 018c: JUMPDEST
[codex:450780] 018d: POP
[codex:450780] 018e: OP61 01aa
[codex:450780] 0191: OP60 04
[codex:450780] 0193: OP80
[codex:450780] 0194: CALLDATASIZE
[codex:450780] 0195: SUB
[codex:450780] 0196: OP60 20
[codex:450780] 0198: OP81
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping function selectors to internal offsets**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] # parse dispatcher pattern for selectors and dests
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780] if ops[i][1]==0x80 and ops[i+1][1]==0x63 and ops[i+2][1]==0x14 and ops[i+3][1]==0x61 and ops[i+4][1]==0x57:
[codex:450780] sel=ops[i+1][2].hex()
[codex:450780] dest=int.from_bytes(ops[i+3][2],'big')
[codex:450780] selectors.append((sel,dest))
[codex:450780]
[codex:450780] print('selector -> entry -> internal jump (if any)')
[codex:450780]
[codex:450780] # find internal jump for each entry: look for last PUSH2 <internal> JUMP before function jump? We can read at entry and find first JUMP to internal code (push2).
[codex:450780] # We'll parse a few ops after entry for push2 and JUMP.
[codex:450780]
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780] for sel,entry in selectors:
[codex:450780] idx = pc_to_idx[entry]
[codex:450780] internal=None
[codex:450780] for j in range(idx, min(idx+60, len(ops))):
[codex:450780] # look for PUSH2 <dest> JUMP
[codex:450780] if ops[j][1]==0x61 and j+1 < len(ops) and ops[j+1][1]==0x56:
[codex:450780] internal=int.from_bytes(ops[j][2],'big')
[codex:450780] break
[codex:450780] print(sel, hex(entry), '->', hex(internal) if internal else None)
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] selector -> entry -> internal jump (if any)
[codex:450780] efcab173 0x67f -> 0x147f
[codex:450780] fa558b71 0x6a9 -> None
[codex:450780] fd404b4c 0x788 -> None
[codex:450780] cf6e4488 0x5c8 -> 0x11cb
[codex:450780] dfd1fb7a 0x5f2 -> None
[codex:450780] 96aa7368 0x467 -> None
[codex:450780] 98a89897 0x4e4 -> None
[codex:450780] cb81fecf 0x5b3 -> 0x11c5
[codex:450780] 6b2a8f65 0x3f6 -> 0xe84
[codex:450780] 801ead1d 0x420 -> 0xf5c
[codex:450780] 3a8343ee 0x30c -> 0xb56
[codex:450780] 3cd18ca0 0x336 -> None
[codex:450780] 3f53c36c 0x3c3 -> 0xe27
[codex:450780] 2e2d726c 0x26a -> None
[codex:450780] 375b74c3 0x2f7 -> 0xb47
[codex:450780] 14ae3c09 0x180 -> 0x81e
[codex:450780] 15b21082 0x1c6 -> 0x839
[codex:450780] 233ecf78 0x20b -> 0x914
[codex:450780] 2ca40a33 0x23e -> 0x971
[codex:450780]
[codex:450780] thinking
[codex:450780] **Extending search for internal calls**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # parse selectors
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780] if ops[i][1]==0x80 and ops[i+1][1]==0x63 and ops[i+2][1]==0x14 and ops[i+3][1]==0x61 and ops[i+4][1]==0x57:
[codex:450780] sel=ops[i+1][2].hex()
[codex:450780] dest=int.from_bytes(ops[i+3][2],'big')
[codex:450780] selectors.append((sel,dest))
[codex:450780]
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780]
[codex:450780] for sel,entry in selectors:
[codex:450780] idx=pc_to_idx[entry]
[codex:450780] internal=None
[codex:450780] # search next 200 ops for PUSH2 dest JUMP pattern; pick last one before STOP/RETURN? We'll take first JUMP after decoding.
[codex:450780] for j in range(idx, min(idx+200, len(ops)-1)):
[codex:450780] if ops[j][1]==0x61 and ops[j+1][1]==0x56:
[codex:450780] internal=int.from_bytes(ops[j][2],'big')
[codex:450780] break
[codex:450780] print(sel, hex(entry), '->', hex(internal) if internal else None)
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 32ms:
[codex:450780] efcab173 0x67f -> 0x147f
[codex:450780] fa558b71 0x6a9 -> 0x149a
[codex:450780] fd404b4c 0x788 -> 0x1674
[codex:450780] cf6e4488 0x5c8 -> 0x11cb
[codex:450780] dfd1fb7a 0x5f2 -> 0x11e6
[codex:450780] 96aa7368 0x467 -> 0xf71
[codex:450780] 98a89897 0x4e4 -> 0x1054
[codex:450780] cb81fecf 0x5b3 -> 0x11c5
[codex:450780] 6b2a8f65 0x3f6 -> 0xe84
[codex:450780] 801ead1d 0x420 -> 0xf5c
[codex:450780] 3a8343ee 0x30c -> 0xb56
[codex:450780] 3cd18ca0 0x336 -> 0xc21
[codex:450780] 3f53c36c 0x3c3 -> 0xe27
[codex:450780] 2e2d726c 0x26a -> 0xa46
[codex:450780] 375b74c3 0x2f7 -> 0xb47
[codex:450780] 14ae3c09 0x180 -> 0x81e
[codex:450780] 15b21082 0x1c6 -> 0x839
[codex:450780] 233ecf78 0x20b -> 0x914
[codex:450780] 2ca40a33 0x23e -> 0x971
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping call offsets to internal functions**
[codex:450780]
[codex:450780] I'm going through each internal function's role and access controls to check if any external calls or token/ETH transfers happen without protection. To confirm this, I'll map call offsets in the disassembly to their nearest preceding internal function entries, setting up a script to associate calls with internal functions precisely. This will help determine which functions might allow unprotected actions.
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # internal function entries as mapped earlier
[codex:450780] entries = [0x81e,0x839,0x914,0x971,0xa46,0xb47,0xb56,0xc21,0xe27,0xe84,0xf5c,0xf71,0x1054,0x11c5,0x11cb,0x11e6,0x147f,0x149a,0x1674]
[codex:450780] entries = sorted(entries)
[codex:450780]
[codex:450780] # find CALL opcodes
[codex:450780] calls=[]
[codex:450780] for pc,op,data in ops:
[codex:450780] if op==0xf1: # CALL
[codex:450780] calls.append(pc)
[codex:450780]
[codex:450780] # map call to nearest preceding entry
[codex:450780] for c in calls:
[codex:450780] prev = max([e for e in entries if e <= c], default=None)
[codex:450780] print(f'CALL at {hex(c)} -> function entry {hex(prev) if prev else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 29ms:
[codex:450780] CALL at 0xb1f -> function entry 0xa46
[codex:450780] CALL at 0xd9c -> function entry 0xc21
[codex:450780] CALL at 0x102d -> function entry 0xf71
[codex:450780] CALL at 0x1160 -> function entry 0x1054
[codex:450780] CALL at 0x126a -> function entry 0x11e6
[codex:450780] CALL at 0x15e7 -> function entry 0x149a
[codex:450780] CALL at 0x1761 -> function entry 0x1674
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping external calls and access controls**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] entries = [0x81e,0x839,0x914,0x971,0xa46,0xb47,0xb56,0xc21,0xe27,0xe84,0xf5c,0xf71,0x1054,0x11c5,0x11cb,0x11e6,0x147f,0x149a,0x1674]
[codex:450780] entries=sorted(entries)
[codex:450780]
[codex:450780] for pc,op,data in ops:
[codex:450780] if op==0x55: # SSTORE
[codex:450780] prev = max([e for e in entries if e <= pc], default=None)
[codex:450780] print(f'SSTORE at {hex(pc)} -> function {hex(prev) if prev else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] SSTORE at 0x8cb -> function 0x839
[codex:450780] SSTORE at 0x9ef -> function 0x971
[codex:450780] SSTORE at 0xa08 -> function 0x971
[codex:450780] SSTORE at 0xbcb -> function 0xb56
[codex:450780] SSTORE at 0xbe5 -> function 0xb56
[codex:450780] SSTORE at 0xf05 -> function 0xe84
[codex:450780] SSTORE at 0xf1e -> function 0xe84
[codex:450780] SSTORE at 0x1787 -> function 0x1674
[codex:450780] SSTORE at 0x1852 -> function 0x1674
[codex:450780]
[codex:450780] thinking
[codex:450780] **Mapping SSTORE operations and access control**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble
[codex:450780] opnames={}
[codex:450780] for i in range(256):
[codex:450780] opnames[i]=f'OP{i:02x}'
[codex:450780] # fill names for readability
[codex:450780] basic={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',
[codex:450780] 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:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:450780] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:450780] }
[codex:450780] opnames.update(basic)
[codex:450780]
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60 <= op <= 0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # find SSTORE positions and print window
[codex:450780] sstore_idxs=[i for i,(pc,op,data) in enumerate(ops) if op==0x55]
[codex:450780] for idx in sstore_idxs:
[codex:450780] pc,op,data = ops[idx]
[codex:450780] print('\\nSSTORE at', hex(pc))
[codex:450780] for j in range(max(0, idx-10), min(len(ops), idx+10)):
[codex:450780] pc2,op2,data2 = ops[j]
[codex:450780] name=opnames[op2]
[codex:450780] if 0x60<=op2<=0x7f:
[codex:450780] print(f'{pc2:04x}: {name} {data2.hex()}')
[codex:450780] else:
[codex:450780] print(f'{pc2:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780]
[codex:450780] SSTORE at 0x8cb
[codex:450780] 08c1: NOT
[codex:450780] 08c2: OP90
[codex:450780] 08c3: OP92
[codex:450780] 08c4: AND
[codex:450780] 08c5: OP91
[codex:450780] 08c6: OP90
[codex:450780] 08c7: OP91
[codex:450780] 08c8: OR
[codex:450780] 08c9: OP90
[codex:450780] 08ca: OP92
[codex:450780] 08cb: SSTORE
[codex:450780] 08cc: OP82
[codex:450780] 08cd: MLOAD
[codex:450780] 08ce: OP84
[codex:450780] 08cf: OP81
[codex:450780] 08d0: MSTORE
[codex:450780] 08d1: CALLER
[codex:450780] 08d2: OP91
[codex:450780]
[codex:450780] thinking
[codex:450780] **Analyzing storage writes and access control**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble with names
[codex:450780] opnames={}
[codex:450780] for i in range(256): opnames[i]=f'OP{i:02x}'
[codex:450780] name_map={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',
[codex:450780] 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:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:450780] 0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780] for k,v in name_map.items(): opnames[k]=v
[codex:450780]
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # print instructions from 0x0839 to 0x08e0
[codex:450780] start=0x0839; end=0x08e0
[codex:450780] for pc,op,data in ops:
[codex:450780] if start <= pc <= end:
[codex:450780] name=opnames[op]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780] else:
[codex:450780] print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 31ms:
[codex:450780] 0839: JUMPDEST
[codex:450780] 083a: OP60 00
[codex:450780] 083c: OP60 01
[codex:450780] 083e: OP60 01
[codex:450780] 0840: OP60 a0
[codex:450780] 0842: SHL
[codex:450780] 0843: SUB
[codex:450780] 0844: OP82
[codex:450780] 0845: AND
[codex:450780] 0846: OP61 0885
[codex:450780] 0849: JUMPI
[codex:450780] 084a: OP60 40
[codex:450780] 084c: OP80
[codex:450780] 084d: MLOAD
[codex:450780] 084e: OP62 461bcd
[codex:450780] 0852: OP60 e5
[codex:450780] 0854: SHL
[codex:450780] 0855: OP81
[codex:450780] 0856: MSTORE
[codex:450780] 0857: OP60 20
[codex:450780]
[codex:450780] thinking
[codex:450780] **Analyzing function calls and whitelist checks**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780]
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780]
[codex:450780] # disassemble
[codex:450780] opnames={}
[codex:450780] for i in range(256): opnames[i]=f'OP{i:02x}'
[codex:450780] name_map={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:450780] 0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780] for k,v in name_map.items(): opnames[k]=v
[codex:450780]
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780] op=b[pc]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] n=op-0x5f
[codex:450780] data=b[pc+1:pc+1+n]
[codex:450780] ops.append((pc,op,data))
[codex:450780] pc += 1+n
[codex:450780] else:
[codex:450780] ops.append((pc,op,b''))
[codex:450780] pc += 1
[codex:450780]
[codex:450780] # print function 0xa46 region 0xa46-0xb50
[codex:450780] start=0xa46; end=0xb50
[codex:450780] for pc,op,data in ops:
[codex:450780] if start <= pc <= end:
[codex:450780] name=opnames[op]
[codex:450780] if 0x60<=op<=0x7f:
[codex:450780] print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780] else:
[codex:450780] print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 29ms:
[codex:450780] 0a46: JUMPDEST
[codex:450780] 0a47: CALLER
[codex:450780] 0a48: OP60 00
[codex:450780] 0a4a: OP90
[codex:450780] 0a4b: OP81
[codex:450780] 0a4c: MSTORE
[codex:450780] 0a4d: OP60 03
[codex:450780] 0a4f: OP60 20
[codex:450780] 0a51: MSTORE
[codex:450780] 0a52: OP60 40
[codex:450780] 0a54: OP90
[codex:450780] 0a55: SHA3
[codex:450780] 0a56: SLOAD
[codex:450780] 0a57: OP60 ff
[codex:450780] 0a59: AND
[codex:450780] 0a5a: OP61 0a99
[codex:450780] 0a5d: JUMPI
[codex:450780] 0a5e: OP60 40
[codex:450780] 0a60: OP80
[codex:450780] 0a61: MLOAD
[codex:450780]
[codex:450780] thinking
[codex:450780] **Analyzing function behavior and output format**
[codex:450780] exec
[codex:450780] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-1zyi5_s9 succeeded in 5ms:
[codex:450780] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:450780]
[codex:450780] thinking
[codex:450780] **Preparing final JSON output**
[codex:450780] codex
[codex:450780] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.","findings":[]}
[codex:450780] tokens used
[codex:450780] 68,074
[codex:450780] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T19:50:46.207547+00:00",
"returncode": 0
},
"summary": "Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.",
"raw_final": {
"summary": "Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0144 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x6b2a8f65 00000019: GT 0000001a: PUSH2 0x00c0 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xcf6e4488 00000024: GT 00000025: PUSH2 0x0074 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xefcab173 0000002f: GT 00000030: PUSH2 0x0059 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xefcab173 0000003a: EQ 0000003b: PUSH2 0x067f 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xfa558b71 00000045: EQ 00000046: PUSH2 0x06a9 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xfd404b4c 00000050: EQ 00000051: PUSH2 0x0788 00000054: JUMPI 00000055: PUSH2 0x0144 00000058: JUMP 00000059: JUMPDEST 0000005a: DUP1 0000005b: PUSH4 0xcf6e4488 00000060: EQ 00000061: PUSH2 0x05c8 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0xdfd1fb7a 0000006b: EQ 0000006c: PUSH2 0x05f2 0000006f: JUMPI 00000070: PUSH2 0x0144 00000073: JUMP 00000074: JUMPDEST 00000075: DUP1 00000076: PUSH4 0x96aa7368 0000007b: GT 0000007c: PUSH2 0x00a5 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0x96aa7368 00000086: EQ 00000087: PUSH2 0x0467 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0x98a89897 00000091: EQ 00000092: PUSH2 0x04e4 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xcb81fecf 0000009c: EQ 0000009d: PUSH2 0x05b3 000000a0: JUMPI 000000a1: PUSH2 0x0144 000000a4: JUMP 000000a5: JUMPDEST 000000a6: DUP1 000000a7: PUSH4 0x6b2a8f65 000000ac: EQ 000000ad: PUSH2 0x03f6 000000b0: JUMPI 000000b1: DUP1 000000b2: PUSH4 0x801ead1d 000000b7: EQ 000000b8: PUSH2 0x0420 000000bb: JUMPI 000000bc: PUSH2 0x0144 000000bf: JUMP 000000c0: JUMPDEST 000000c1: DUP1 000000c2: PUSH4 0x2e2d726c 000000c7: GT 000000c8: PUSH2 0x0117 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0x3a8343ee 000000d2: GT 000000d3: PUSH2 0x00fc 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0x3a8343ee 000000dd: EQ 000000de: PUSH2 0x030c 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x3cd18ca0 000000e8: EQ 000000e9: PUSH2 0x0336 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x3f53c36c 000000f3: EQ 000000f4: PUSH2 0x03c3 000000f7: JUMPI 000000f8: PUSH2 0x0144 000000fb: JUMP 000000fc: JUMPDEST 000000fd: DUP1 000000fe: PUSH4 0x2e2d726c 00000103: EQ 00000104: PUSH2 0x026a 00000107: JUMPI 00000108: DUP1 00000109: PUSH4 0x375b74c3 0000010e: EQ 0000010f: PUSH2 0x02f7 00000112: JUMPI 00000113: PUSH2 0x0144 00000116: JUMP 00000117: JUMPDEST 00000118: DUP1 00000119: PUSH4 0x14ae3c09 0000011e: EQ 0000011f: PUSH2 0x0180 00000122: JUMPI 00000123: DUP1 00000124: PUSH4 0x15b21082 00000129: EQ 0000012a: PUSH2 0x01c6 0000012d: JUMPI 0000012e: DUP1 0000012f: PUSH4 0x233ecf78 00000134: EQ 00000135: PUSH2 0x020b 00000138: JUMPI 00000139: DUP1 0000013a: PUSH4 0x2ca40a33 0000013f: EQ 00000140: PUSH2 0x023e 00000143: JUMPI 00000144: JUMPDEST 00000145: PUSH1 0x40 00000147: DUP1 00000148: MLOAD 00000149: CALLER 0000014a: DUP2 0000014b: MSTORE 0000014c: CALLVALUE 0000014d: PUSH1 0x20 0000014f: DUP3 00000150: ADD 00000151: MSTORE 00000152: DUP2 00000153: MLOAD 00000154: PUSH32 0xa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1 00000175: SWAP3 00000176: SWAP2 00000177: DUP2 00000178: SWAP1 00000179: SUB 0000017a: SWAP1 0000017b: SWAP2 0000017c: ADD 0000017d: SWAP1 0000017e: LOG1 0000017f: STOP 00000180: JUMPDEST 00000181: CALLVALUE 00000182: DUP1 00000183: ISZERO 00000184: PUSH2 0x018c 00000187: JUMPI 00000188: PUSH1 0x00 0000018a: DUP1 0000018b: REVERT 0000018c: JUMPDEST 0000018d: POP 0000018e: PUSH2 0x01aa 00000191: PUSH1 0x04 00000193: DUP1 00000194: CALLDATASIZE 00000195: SUB 00000196: PUSH1 0x20 00000198: DUP2 00000199: LT 0000019a: ISZERO 0000019b: PUSH2 0x01a3 0000019e: JUMPI 0000019f: PUSH1 0x00 000001a1: DUP1 000001a2: REVERT 000001a3: JUMPDEST 000001a4: POP 000001a5: CALLDATALOAD 000001a6: PUSH2 0x081e 000001a9: JUMP 000001aa: JUMPDEST 000001ab: PUSH1 0x40 000001ad: DUP1 000001ae: MLOAD 000001af: PUSH1 0x01 000001b1: PUSH1 0x01 000001b3: PUSH1 0xa0 000001b5: SHL 000001b6: SUB 000001b7: SWAP1 000001b8: SWAP3 000001b9: AND 000001ba: DUP3 000001bb: MSTORE 000001bc: MLOAD 000001bd: SWAP1 000001be: DUP2 000001bf: SWAP1 000001c0: SUB 000001c1: PUSH1 0x20 000001c3: ADD 000001c4: SWAP1 000001c5: RETURN 000001c6: JUMPDEST 000001c7: CALLVALUE 000001c8: DUP1 000001c9: ISZERO 000001ca: PUSH2 0x01d2 000001cd: JUMPI 000001ce: PUSH1 0x00 000001d0: DUP1 000001d1: REVERT 000001d2: JUMPDEST 000001d3: POP 000001d4: PUSH2 0x01f9 000001d7: PUSH1 0x04 000001d9: DUP1 000001da: CALLDATASIZE 000001db: SUB 000001dc: PUSH1 0x20 000001de: DUP2 000001df: LT 000001e0: ISZERO 000001e1: PUSH2 0x01e9 000001e4: JUMPI 000001e5: PUSH1 0x00 000001e7: DUP1 000001e8: REVERT 000001e9: JUMPDEST 000001ea: POP 000001eb: CALLDATALOAD 000001ec: PUSH1 0x01 000001ee: PUSH1 0x01 000001f0: PUSH1 0xa0 000001f2: SHL 000001f3: SUB 000001f4: AND 000001f5: PUSH2 0x0839 000001f8: JUMP 000001f9: JUMPDEST 000001fa: PUSH1 0x40 000001fc: DUP1 000001fd: MLOAD 000001fe: SWAP2 000001ff: DUP3 00000200: MSTORE 00000201: MLOAD 00000202: SWAP1 00000203: DUP2 00000204: SWAP1 00000205: SUB 00000206: PUSH1 0x20 00000208: ADD 00000209: SWAP1 0000020a: RETURN 0000020b: JUMPDEST 0000020c: CALLVALUE 0000020d: DUP1 0000020e: ISZERO 0000020f: PUSH2 0x0217 00000212: JUMPI 00000213: PUSH1 0x00 00000215: DUP1 00000216: REVERT 00000217: JUMPDEST 00000218: POP 00000219: PUSH2 0x01f9 0000021c: PUSH1 0x04 0000021e: DUP1 0000021f: CALLDATASIZE 00000220: SUB 00000221: PUSH1 0x20 00000223: DUP2 00000224: LT 00000225: ISZERO 00000226: PUSH2 0x022e 00000229: JUMPI 0000022a: PUSH1 0x00 0000022c: DUP1 0000022d: REVERT 0000022e: JUMPDEST 0000022f: POP 00000230: CALLDATALOAD 00000231: PUSH1 0x01 00000233: PUSH1 0x01 00000235: PUSH1 0xa0 00000237: SHL 00000238: SUB 00000239: AND 0000023a: PUSH2 0x0914 0000023d: JUMP 0000023e: JUMPDEST 0000023f: CALLVALUE 00000240: DUP1 00000241: ISZERO 00000242: PUSH2 0x024a 00000245: JUMPI 00000246: PUSH1 0x00 00000248: DUP1 00000249: REVERT 0000024a: JUMPDEST 0000024b: POP 0000024c: PUSH2 0x0268 0000024f: PUSH1 0x04 00000251: DUP1 00000252: CALLDATASIZE 00000253: SUB 00000254: PUSH1 0x20 00000256: DUP2 00000257: LT 00000258: ISZERO 00000259: PUSH2 0x0261 0000025c: JUMPI 0000025d: PUSH1 0x00 0000025f: DUP1 00000260: REVERT 00000261: JUMPDEST 00000262: POP 00000263: CALLDATALOAD 00000264: PUSH2 0x0971 00000267: JUMP 00000268: JUMPDEST 00000269: STOP 0000026a: JUMPDEST 0000026b: CALLVALUE 0000026c: DUP1 0000026d: ISZERO 0000026e: PUSH2 0x0276 00000271: JUMPI 00000272: PUSH1 0x00 00000274: DUP1 00000275: REVERT 00000276: JUMPDEST 00000277: POP 00000278: PUSH2 0x0268 0000027b: PUSH1 0x04 0000027d: DUP1 0000027e: CALLDATASIZE 0000027f: SUB 00000280: PUSH1 0x40 00000282: DUP2 00000283: LT 00000284: ISZERO 00000285: PUSH2 0x028d 00000288: JUMPI 00000289: PUSH1 0x00 0000028b: DUP1 0000028c: REVERT 0000028d: JUMPDEST 0000028e: PUSH1 0x01 00000290: PUSH1 0x01 00000292: PUSH1 0xa0 00000294: SHL 00000295: SUB 00000296: DUP3 00000297: CALLDATALOAD 00000298: AND 00000299: SWAP2 0000029a: SWAP1 0000029b: DUP2 0000029c: ADD 0000029d: SWAP1 0000029e: PUSH1 0x40 000002a0: DUP2 000002a1: ADD 000002a2: PUSH1 0x20 000002a4: DUP3 000002a5: ADD 000002a6: CALLDATALOAD 000002a7: PUSH5 0x0100000000 000002ad: DUP2 000002ae: GT 000002af: ISZERO 000002b0: PUSH2 0x02b8 000002b3: JUMPI 000002b4: PUSH1 0x00 000002b6: DUP1 000002b7: REVERT 000002b8: JUMPDEST 000002b9: DUP3 000002ba: ADD 000002bb: DUP4 000002bc: PUSH1 0x20 000002be: DUP3 000002bf: ADD 000002c0: GT 000002c1: ISZERO 000002c2: PUSH2 0x02ca 000002c5: JUMPI 000002c6: PUSH1 0x00 000002c8: DUP1 000002c9: REVERT 000002ca: JUMPDEST 000002cb: DUP1 000002cc: CALLDATALOAD 000002cd: SWAP1 000002ce: PUSH1 0x20 000002d0: ADD 000002d1: SWAP2 000002d2: DUP5 000002d3: PUSH1 0x20 000002d5: DUP4 000002d6: MUL 000002d7: DUP5 000002d8: ADD 000002d9: GT 000002da: PUSH5 0x0100000000 000002e0: DUP4 000002e1: GT 000002e2: OR 000002e3: ISZERO 000002e4: PUSH2 0x02ec 000002e7: JUMPI 000002e8: PUSH1 0x00 000002ea: DUP1 000002eb: REVERT 000002ec: JUMPDEST 000002ed: POP 000002ee: SWAP1 000002ef: SWAP3 000002f0: POP 000002f1: SWAP1 000002f2: POP 000002f3: PUSH2 0x0a46 000002f6: JUMP 000002f7: JUMPDEST 000002f8: CALLVALUE 000002f9: DUP1 000002fa: ISZERO 000002fb: PUSH2 0x0303 000002fe: JUMPI 000002ff: PUSH1 0x00 00000301: DUP1 00000302: REVERT 00000303: JUMPDEST 00000304: POP 00000305: PUSH2 0x01aa 00000308: PUSH2 0x0b47 0000030b: JUMP 0000030c: JUMPDEST 0000030d: CALLVALUE 0000030e: DUP1 0000030f: ISZERO 00000310: PUSH2 0x0318 00000313: JUMPI 00000314: PUSH1 0x00 00000316: DUP1 00000317: REVERT 00000318: JUMPDEST 00000319: POP 0000031a: PUSH2 0x0268 0000031d: PUSH1 0x04 0000031f: DUP1 00000320: CALLDATASIZE 00000321: SUB 00000322: PUSH1 0x20 00000324: DUP2 00000325: LT 00000326: ISZERO 00000327: PUSH2 0x032f 0000032a: JUMPI 0000032b: PUSH1 0x00 0000032d: DUP1 0000032e: REVERT 0000032f: JUMPDEST 00000330: POP 00000331: CALLDATALOAD 00000332: PUSH2 0x0b56 00000335: JUMP 00000336: JUMPDEST 00000337: CALLVALUE 00000338: DUP1 00000339: ISZERO 0000033a: PUSH2 0x0342 0000033d: JUMPI 0000033e: PUSH1 0x00 00000340: DUP1 00000341: REVERT 00000342: JUMPDEST 00000343: POP 00000344: PUSH2 0x0268 00000347: PUSH1 0x04 00000349: DUP1 0000034a: CALLDATASIZE 0000034b: SUB 0000034c: PUSH1 0x40 0000034e: DUP2 0000034f: LT 00000350: ISZERO 00000351: PUSH2 0x0359 00000354: JUMPI 00000355: PUSH1 0x00 00000357: DUP1 00000358: REVERT 00000359: JUMPDEST 0000035a: PUSH1 0x01 0000035c: PUSH1 0x01 0000035e: PUSH1 0xa0 00000360: SHL 00000361: SUB 00000362: DUP3 00000363: CALLDATALOAD 00000364: AND 00000365: SWAP2 00000366: SWAP1 00000367: DUP2 00000368: ADD 00000369: SWAP1 0000036a: PUSH1 0x40 0000036c: DUP2 0000036d: ADD 0000036e: PUSH1 0x20 00000370: DUP3 00000371: ADD 00000372: CALLDATALOAD 00000373: PUSH5 0x0100000000 00000379: DUP2 0000037a: GT 0000037b: ISZERO 0000037c: PUSH2 0x0384 0000037f: JUMPI 00000380: PUSH1 0x00 00000382: DUP1 00000383: REVERT 00000384: JUMPDEST 00000385: DUP3 00000386: ADD 00000387: DUP4 00000388: PUSH1 0x20 0000038a: DUP3 0000038b: ADD 0000038c: GT 0000038d: ISZERO 0000038e: PUSH2 0x0396 00000391: JUMPI 00000392: PUSH1 0x00 00000394: DUP1 00000395: REVERT 00000396: JUMPDEST 00000397: DUP1 00000398: CALLDATALOAD 00000399: SWAP1 0000039a: PUSH1 0x20 0000039c: ADD 0000039d: SWAP2 0000039e: DUP5 0000039f: PUSH1 0x20 000003a1: DUP4 000003a2: MUL 000003a3: DUP5 000003a4: ADD 000003a5: GT 000003a6: PUSH5 0x0100000000 000003ac: DUP4 000003ad: GT 000003ae: OR 000003af: ISZERO 000003b0: PUSH2 0x03b8 000003b3: JUMPI 000003b4: PUSH1 0x00 000003b6: DUP1 000003b7: REVERT 000003b8: JUMPDEST 000003b9: POP 000003ba: SWAP1 000003bb: SWAP3 000003bc: POP 000003bd: SWAP1 000003be: POP 000003bf: PUSH2 0x0c21 000003c2: JUMP 000003c3: JUMPDEST 000003c4: CALLVALUE 000003c5: DUP1 000003c6: ISZERO 000003c7: PUSH2 0x03cf 000003ca: JUMPI 000003cb: PUSH1 0x00 000003cd: DUP1 000003ce: REVERT 000003cf: JUMPDEST 000003d0: POP 000003d1: PUSH2 0x01f9 000003d4: PUSH1 0x04 000003d6: DUP1 000003d7: CALLDATASIZE 000003d8: SUB 000003d9: PUSH1 0x20 000003db: DUP2 000003dc: LT 000003dd: ISZERO 000003de: PUSH2 0x03e6 000003e1: JUMPI 000003e2: PUSH1 0x00 000003e4: DUP1 000003e5: REVERT 000003e6: JUMPDEST 000003e7: POP 000003e8: CALLDATALOAD 000003e9: PUSH1 0x01 000003eb: PUSH1 0x01 000003ed: PUSH1 0xa0 000003ef: SHL 000003f0: SUB 000003f1: AND 000003f2: PUSH2 0x0e27 000003f5: JUMP 000003f6: JUMPDEST 000003f7: CALLVALUE 000003f8: DUP1 000003f9: ISZERO 000003fa: PUSH2 0x0402 000003fd: JUMPI 000003fe: PUSH1 0x00 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: POP 00000404: PUSH2 0x0268 00000407: PUSH1 0x04 00000409: DUP1 0000040a: CALLDATASIZE 0000040b: SUB 0000040c: PUSH1 0x20 0000040e: DUP2 0000040f: LT 00000410: ISZERO 00000411: PUSH2 0x0419 00000414: JUMPI 00000415: PUSH1 0x00 00000417: DUP1 00000418: REVERT 00000419: JUMPDEST 0000041a: POP 0000041b: CALLDATALOAD 0000041c: PUSH2 0x0e84 0000041f: JUMP 00000420: JUMPDEST 00000421: CALLVALUE 00000422: DUP1 00000423: ISZERO 00000424: PUSH2 0x042c 00000427: JUMPI 00000428: PUSH1 0x00 0000042a: DUP1 0000042b: REVERT 0000042c: JUMPDEST 0000042d: POP 0000042e: PUSH2 0x0453 00000431: PUSH1 0x04 00000433: DUP1 00000434: CALLDATASIZE 00000435: SUB 00000436: PUSH1 0x20 00000438: DUP2 00000439: LT 0000043a: ISZERO 0000043b: PUSH2 0x0443 0000043e: JUMPI 0000043f: PUSH1 0x00 00000441: DUP1 00000442: REVERT 00000443: JUMPDEST 00000444: POP 00000445: CALLDATALOAD 00000446: PUSH1 0x01 00000448: PUSH1 0x01 0000044a: PUSH1 0xa0 0000044c: SHL 0000044d: SUB 0000044e: AND 0000044f: PUSH2 0x0f5c 00000452: JUMP 00000453: JUMPDEST 00000454: PUSH1 0x40 00000456: DUP1 00000457: MLOAD 00000458: SWAP2 00000459: ISZERO 0000045a: ISZERO 0000045b: DUP3 0000045c: MSTORE 0000045d: MLOAD 0000045e: SWAP1 0000045f: DUP2 00000460: SWAP1 00000461: SUB 00000462: PUSH1 0x20 00000464: ADD 00000465: SWAP1 00000466: RETURN 00000467: JUMPDEST 00000468: CALLVALUE 00000469: DUP1 0000046a: ISZERO 0000046b: PUSH2 0x0473 0000046e: JUMPI 0000046f: PUSH1 0x00 00000471: DUP1 00000472: REVERT 00000473: JUMPDEST 00000474: POP 00000475: PUSH2 0x0268 00000478: PUSH1 0x04 0000047a: DUP1 0000047b: CALLDATASIZE 0000047c: SUB 0000047d: PUSH1 0x20 0000047f: DUP2 00000480: LT 00000481: ISZERO 00000482: PUSH2 0x048a 00000485: JUMPI 00000486: PUSH1 0x00 00000488: DUP1 00000489: REVERT 0000048a: JUMPDEST 0000048b: DUP2 0000048c: ADD 0000048d: SWAP1 0000048e: PUSH1 0x20 00000490: DUP2 00000491: ADD 00000492: DUP2 00000493: CALLDATALOAD 00000494: PUSH5 0x0100000000 0000049a: DUP2 0000049b: GT 0000049c: ISZERO 0000049d: PUSH2 0x04a5 000004a0: JUMPI 000004a1: PUSH1 0x00 000004a3: DUP1 000004a4: REVERT 000004a5: JUMPDEST 000004a6: DUP3 000004a7: ADD 000004a8: DUP4 000004a9: PUSH1 0x20 000004ab: DUP3 000004ac: ADD 000004ad: GT 000004ae: ISZERO 000004af: PUSH2 0x04b7 000004b2: JUMPI 000004b3: PUSH1 0x00 000004b5: DUP1 000004b6: REVERT 000004b7: JUMPDEST 000004b8: DUP1 000004b9: CALLDATALOAD 000004ba: SWAP1 000004bb: PUSH1 0x20 000004bd: ADD 000004be: SWAP2 000004bf: DUP5 000004c0: PUSH1 0x20 000004c2: DUP4 000004c3: MUL 000004c4: DUP5 000004c5: ADD 000004c6: GT 000004c7: PUSH5 0x0100000000 000004cd: DUP4 000004ce: GT 000004cf: OR 000004d0: ISZERO 000004d1: PUSH2 0x04d9 000004d4: JUMPI 000004d5: PUSH1 0x00 000004d7: DUP1 000004d8: REVERT 000004d9: JUMPDEST 000004da: POP 000004db: SWAP1 000004dc: SWAP3 000004dd: POP 000004de: SWAP1 000004df: POP 000004e0: PUSH2 0x0f71 000004e3: JUMP 000004e4: JUMPDEST 000004e5: CALLVALUE 000004e6: DUP1 000004e7: ISZERO 000004e8: PUSH2 0x04f0 000004eb: JUMPI 000004ec: PUSH1 0x00 000004ee: DUP1 000004ef: REVERT 000004f0: JUMPDEST 000004f1: POP 000004f2: PUSH2 0x0268 000004f5: PUSH1 0x04 000004f7: DUP1 000004f8: CALLDATASIZE 000004f9: SUB 000004fa: PUSH1 0x40 000004fc: DUP2 000004fd: LT 000004fe: ISZERO 000004ff: PUSH2 0x0507 00000502: JUMPI 00000503: PUSH1 0x00 00000505: DUP1 00000506: REVERT 00000507: JUMPDEST 00000508: DUP2 00000509: ADD 0000050a: SWAP1 0000050b: PUSH1 0x20 0000050d: DUP2 0000050e: ADD 0000050f: DUP2 00000510: CALLDATALOAD 00000511: PUSH5 0x0100000000 00000517: DUP2 00000518: GT 00000519: ISZERO 0000051a: PUSH2 0x0522 0000051d: JUMPI 0000051e: PUSH1 0x00 00000520: DUP1 00000521: REVERT 00000522: JUMPDEST 00000523: DUP3 00000524: ADD 00000525: DUP4 00000526: PUSH1 0x20 00000528: DUP3 00000529: ADD 0000052a: GT 0000052b: ISZERO 0000052c: PUSH2 0x0534 0000052f: JUMPI 00000530: PUSH1 0x00 00000532: DUP1 00000533: REVERT 00000534: JUMPDEST 00000535: DUP1 00000536: CALLDATALOAD 00000537: SWAP1 00000538: PUSH1 0x20 0000053a: ADD 0000053b: SWAP2 0000053c: DUP5 0000053d: PUSH1 0x20 0000053f: DUP4 00000540: MUL 00000541: DUP5 00000542: ADD 00000543: GT 00000544: PUSH5 0x0100000000 0000054a: DUP4 0000054b: GT 0000054c: OR 0000054d: ISZERO 0000054e: PUSH2 0x0556 00000551: JUMPI 00000552: PUSH1 0x00 00000554: DUP1 00000555: REVERT 00000556: JUMPDEST 00000557: SWAP2 00000558: SWAP4 00000559: SWAP1 0000055a: SWAP3 0000055b: SWAP1 0000055c: SWAP2 0000055d: PUSH1 0x20 0000055f: DUP2 00000560: ADD 00000561: SWAP1 00000562: CALLDATALOAD 00000563: PUSH5 0x0100000000 00000569: DUP2 0000056a: GT 0000056b: ISZERO 0000056c: PUSH2 0x0574 0000056f: JUMPI 00000570: PUSH1 0x00 00000572: DUP1 00000573: REVERT 00000574: JUMPDEST 00000575: DUP3 00000576: ADD 00000577: DUP4 00000578: PUSH1 0x20 0000057a: DUP3 0000057b: ADD 0000057c: GT 0000057d: ISZERO 0000057e: PUSH2 0x0586 00000581: JUMPI 00000582: PUSH1 0x00 00000584: DUP1 00000585: REVERT 00000586: JUMPDEST 00000587: DUP1 00000588: CALLDATALOAD 00000589: SWAP1 0000058a: PUSH1 0x20 0000058c: ADD 0000058d: SWAP2 0000058e: DUP5 0000058f: PUSH1 0x20 00000591: DUP4 00000592: MUL 00000593: DUP5 00000594: ADD 00000595: GT 00000596: PUSH5 0x0100000000 0000059c: DUP4 0000059d: GT 0000059e: OR 0000059f: ISZERO 000005a0: PUSH2 0x05a8 000005a3: JUMPI 000005a4: PUSH1 0x00 000005a6: DUP1 000005a7: REVERT 000005a8: JUMPDEST 000005a9: POP 000005aa: SWAP1 000005ab: SWAP3 000005ac: POP 000005ad: SWAP1 000005ae: POP 000005af: PUSH2 0x1054 000005b2: JUMP 000005b3: JUMPDEST 000005b4: CALLVALUE 000005b5: DUP1 000005b6: ISZERO 000005b7: PUSH2 0x05bf 000005ba: JUMPI 000005bb: PUSH1 0x00 000005bd: DUP1 000005be: REVERT 000005bf: JUMPDEST 000005c0: POP 000005c1: PUSH2 0x01f9 000005c4: PUSH2 0x11c5 000005c7: JUMP 000005c8: JUMPDEST 000005c9: CALLVALUE 000005ca: DUP1 000005cb: ISZERO 000005cc: PUSH2 0x05d4 000005cf: JUMPI 000005d0: PUSH1 0x00 000005d2: DUP1 000005d3: REVERT 000005d4: JUMPDEST 000005d5: POP 000005d6: PUSH2 0x01aa 000005d9: PUSH1 0x04 000005db: DUP1 000005dc: CALLDATASIZE 000005dd: SUB 000005de: PUSH1 0x20 000005e0: DUP2 000005e1: LT 000005e2: ISZERO 000005e3: PUSH2 0x05eb 000005e6: JUMPI 000005e7: PUSH1 0x00 000005e9: DUP1 000005ea: REVERT 000005eb: JUMPDEST 000005ec: POP 000005ed: CALLDATALOAD 000005ee: PUSH2 0x11cb 000005f1: JUMP 000005f2: JUMPDEST 000005f3: CALLVALUE 000005f4: DUP1 000005f5: ISZERO 000005f6: PUSH2 0x05fe 000005f9: JUMPI 000005fa: PUSH1 0x00 000005fc: DUP1 000005fd: REVERT 000005fe: JUMPDEST 000005ff: POP 00000600: PUSH2 0x0268 00000603: PUSH1 0x04 00000605: DUP1 00000606: CALLDATASIZE 00000607: SUB 00000608: PUSH1 0x40 0000060a: DUP2 0000060b: LT 0000060c: ISZERO 0000060d: PUSH2 0x0615 00000610: JUMPI 00000611: PUSH1 0x00 00000613: DUP1 00000614: REVERT 00000615: JUMPDEST 00000616: PUSH1 0x01 00000618: PUSH1 0x01 0000061a: PUSH1 0xa0 0000061c: SHL 0000061d: SUB 0000061e: DUP3 0000061f: CALLDATALOAD 00000620: AND 00000621: SWAP2 00000622: SWAP1 00000623: DUP2 00000624: ADD 00000625: SWAP1 00000626: PUSH1 0x40 00000628: DUP2 00000629: ADD 0000062a: PUSH1 0x20 0000062c: DUP3 0000062d: ADD 0000062e: CALLDATALOAD 0000062f: PUSH5 0x0100000000 00000635: DUP2 00000636: GT 00000637: ISZERO 00000638: PUSH2 0x0640 0000063b: JUMPI 0000063c: PUSH1 0x00 0000063e: DUP1 0000063f: REVERT 00000640: JUMPDEST 00000641: DUP3 00000642: ADD 00000643: DUP4 00000644: PUSH1 0x20 00000646: DUP3 00000647: ADD 00000648: GT 00000649: ISZERO 0000064a: PUSH2 0x0652 0000064d: JUMPI 0000064e: PUSH1 0x00 00000650: DUP1 00000651: REVERT 00000652: JUMPDEST 00000653: DUP1 00000654: CALLDATALOAD 00000655: SWAP1 00000656: PUSH1 0x20 00000658: ADD 00000659: SWAP2 0000065a: DUP5 0000065b: PUSH1 0x01 0000065d: DUP4 0000065e: MUL 0000065f: DUP5 00000660: ADD 00000661: GT 00000662: PUSH5 0x0100000000 00000668: DUP4 00000669: GT 0000066a: OR 0000066b: ISZERO 0000066c: PUSH2 0x0674 0000066f: JUMPI 00000670: PUSH1 0x00 00000672: DUP1 00000673: REVERT 00000674: JUMPDEST 00000675: POP 00000676: SWAP1 00000677: SWAP3 00000678: POP 00000679: SWAP1 0000067a: POP 0000067b: PUSH2 0x11e6 0000067e: JUMP 0000067f: JUMPDEST 00000680: CALLVALUE 00000681: DUP1 00000682: ISZERO 00000683: PUSH2 0x068b 00000686: JUMPI 00000687: PUSH1 0x00 00000689: DUP1 0000068a: REVERT 0000068b: JUMPDEST 0000068c: POP 0000068d: PUSH2 0x01aa 00000690: PUSH1 0x04 00000692: DUP1 00000693: CALLDATASIZE 00000694: SUB 00000695: PUSH1 0x20 00000697: DUP2 00000698: LT 00000699: ISZERO 0000069a: PUSH2 0x06a2 0000069d: JUMPI 0000069e: PUSH1 0x00 000006a0: DUP1 000006a1: REVERT 000006a2: JUMPDEST 000006a3: POP 000006a4: CALLDATALOAD 000006a5: PUSH2 0x147f 000006a8: JUMP 000006a9: JUMPDEST 000006aa: CALLVALUE 000006ab: DUP1 000006ac: ISZERO 000006ad: PUSH2 0x06b5 000006b0: JUMPI 000006b1: PUSH1 0x00 000006b3: DUP1 000006b4: REVERT 000006b5: JUMPDEST 000006b6: POP 000006b7: PUSH2 0x0268 000006ba: PUSH1 0x04 000006bc: DUP1 000006bd: CALLDATASIZE 000006be: SUB 000006bf: PUSH1 0x60 000006c1: DUP2 000006c2: LT 000006c3: ISZERO 000006c4: PUSH2 0x06cc 000006c7: JUMPI 000006c8: PUSH1 0x00 000006ca: DUP1 000006cb: REVERT 000006cc: JUMPDEST 000006cd: PUSH1 0x01 000006cf: PUSH1 0x01 000006d1: PUSH1 0xa0 000006d3: SHL 000006d4: SUB 000006d5: DUP3 000006d6: CALLDATALOAD 000006d7: AND 000006d8: SWAP2 000006d9: SWAP1 000006da: DUP2 000006db: ADD 000006dc: SWAP1 000006dd: PUSH1 0x40 000006df: DUP2 000006e0: ADD 000006e1: PUSH1 0x20 000006e3: DUP3 000006e4: ADD 000006e5: CALLDATALOAD 000006e6: PUSH5 0x0100000000 000006ec: DUP2 000006ed: GT 000006ee: ISZERO 000006ef: PUSH2 0x06f7 000006f2: JUMPI 000006f3: PUSH1 0x00 000006f5: DUP1 000006f6: REVERT 000006f7: JUMPDEST 000006f8: DUP3 000006f9: ADD 000006fa: DUP4 000006fb: PUSH1 0x20 000006fd: DUP3 000006fe: ADD 000006ff: GT 00000700: ISZERO 00000701: PUSH2 0x0709 00000704: JUMPI 00000705: PUSH1 0x00 00000707: DUP1 00000708: REVERT 00000709: JUMPDEST 0000070a: DUP1 0000070b: CALLDATALOAD 0000070c: SWAP1 0000070d: PUSH1 0x20 0000070f: ADD 00000710: SWAP2 00000711: DUP5 00000712: PUSH1 0x20 00000714: DUP4 00000715: MUL 00000716: DUP5 00000717: ADD 00000718: GT 00000719: PUSH5 0x0100000000 0000071f: DUP4 00000720: GT 00000721: OR 00000722: ISZERO 00000723: PUSH2 0x072b 00000726: JUMPI 00000727: PUSH1 0x00 00000729: DUP1 0000072a: REVERT 0000072b: JUMPDEST 0000072c: SWAP2 0000072d: SWAP4 0000072e: SWAP1 0000072f: SWAP3 00000730: SWAP1 00000731: SWAP2 00000732: PUSH1 0x20 00000734: DUP2 00000735: ADD 00000736: SWAP1 00000737: CALLDATALOAD 00000738: PUSH5 0x0100000000 0000073e: DUP2 0000073f: GT 00000740: ISZERO 00000741: PUSH2 0x0749 00000744: JUMPI 00000745: PUSH1 0x00 00000747: DUP1 00000748: REVERT 00000749: JUMPDEST 0000074a: DUP3 0000074b: ADD 0000074c: DUP4 0000074d: PUSH1 0x20 0000074f: DUP3 00000750: ADD 00000751: GT 00000752: ISZERO 00000753: PUSH2 0x075b 00000756: JUMPI 00000757: PUSH1 0x00 00000759: DUP1 0000075a: REVERT 0000075b: JUMPDEST 0000075c: DUP1 0000075d: CALLDATALOAD 0000075e: SWAP1 0000075f: PUSH1 0x20 00000761: ADD 00000762: SWAP2 00000763: DUP5 00000764: PUSH1 0x20 00000766: DUP4 00000767: MUL 00000768: DUP5 00000769: ADD 0000076a: GT 0000076b: PUSH5 0x0100000000 00000771: DUP4 00000772: GT 00000773: OR 00000774: ISZERO 00000775: PUSH2 0x077d 00000778: JUMPI 00000779: PUSH1 0x00 0000077b: DUP1 0000077c: REVERT 0000077d: JUMPDEST 0000077e: POP 0000077f: SWAP1 00000780: SWAP3 00000781: POP 00000782: SWAP1 00000783: POP 00000784: PUSH2 0x149a 00000787: JUMP 00000788: JUMPDEST 00000789: CALLVALUE 0000078a: DUP1 0000078b: ISZERO 0000078c: PUSH2 0x0794 0000078f: JUMPI 00000790: PUSH1 0x00 00000792: DUP1 00000793: REVERT 00000794: JUMPDEST 00000795: POP 00000796: PUSH2 0x0268 00000799: PUSH1 0x04 0000079b: DUP1 0000079c: CALLDATASIZE 0000079d: SUB 0000079e: PUSH1 0x60 000007a0: DUP2 000007a1: LT 000007a2: ISZERO 000007a3: PUSH2 0x07ab 000007a6: JUMPI 000007a7: PUSH1 0x00 000007a9: DUP1 000007aa: REVERT 000007ab: JUMPDEST 000007ac: PUSH1 0x01 000007ae: PUSH1 0x01 000007b0: PUSH1 0xa0 000007b2: SHL 000007b3: SUB 000007b4: DUP3 000007b5: CALLDATALOAD 000007b6: DUP2 000007b7: AND 000007b8: SWAP3 000007b9: PUSH1 0x20 000007bb: DUP2 000007bc: ADD 000007bd: CALLDATALOAD 000007be: SWAP1 000007bf: SWAP2 000007c0: AND 000007c1: SWAP2 000007c2: DUP2 000007c3: ADD 000007c4: SWAP1 000007c5: PUSH1 0x60 000007c7: DUP2 000007c8: ADD 000007c9: PUSH1 0x40 000007cb: DUP3 000007cc: ADD 000007cd: CALLDATALOAD 000007ce: PUSH5 0x0100000000 000007d4: DUP2 000007d5: GT 000007d6: ISZERO 000007d7: PUSH2 0x07df 000007da: JUMPI 000007db: PUSH1 0x00 000007dd: DUP1 000007de: REVERT 000007df: JUMPDEST 000007e0: DUP3 000007e1: ADD 000007e2: DUP4 000007e3: PUSH1 0x20 000007e5: DUP3 000007e6: ADD 000007e7: GT 000007e8: ISZERO 000007e9: PUSH2 0x07f1 000007ec: JUMPI 000007ed: PUSH1 0x00 000007ef: DUP1 000007f0: REVERT 000007f1: JUMPDEST 000007f2: DUP1 000007f3: CALLDATALOAD 000007f4: SWAP1 000007f5: PUSH1 0x20 000007f7: ADD 000007f8: SWAP2 000007f9: DUP5 000007fa: PUSH1 0x01 000007fc: DUP4 000007fd: MUL 000007fe: DUP5 000007ff: ADD 00000800: GT 00000801: PUSH5 0x0100000000 00000807: DUP4 00000808: GT 00000809: OR 0000080a: ISZERO 0000080b: PUSH2 0x0813 0000080e: JUMPI 0000080f: PUSH1 0x00 00000811: DUP1 00000812: REVERT 00000813: JUMPDEST 00000814: POP 00000815: SWAP1 00000816: SWAP3 00000817: POP 00000818: SWAP1 00000819: POP 0000081a: PUSH2 0x1674 0000081d: JUMP 0000081e: JUMPDEST 0000081f: PUSH1 0x04 00000821: PUSH1 0x20 00000823: MSTORE 00000824: PUSH1 0x00 00000826: SWAP1 00000827: DUP2 00000828: MSTORE 00000829: PUSH1 0x40 0000082b: SWAP1 0000082c: KECCAK256 0000082d: SLOAD 0000082e: PUSH1 0x01 00000830: PUSH1 0x01 00000832: PUSH1 0xa0 00000834: SHL 00000835: SUB 00000836: AND 00000837: DUP2 00000838: JUMP 00000839: JUMPDEST 0000083a: PUSH1 0x00 0000083c: PUSH1 0x01 0000083e: PUSH1 0x01 00000840: PUSH1 0xa0 00000842: SHL 00000843: SUB 00000844: DUP3 00000845: AND 00000846: PUSH2 0x0885 00000849: JUMPI 0000084a: PUSH1 0x40 0000084c: DUP1 0000084d: MLOAD 0000084e: PUSH3 0x461bcd 00000852: PUSH1 0xe5 00000854: SHL 00000855: DUP2 00000856: MSTORE 00000857: PUSH1 0x20 00000859: PUSH1 0x04 0000085b: DUP3 0000085c: ADD 0000085d: MSTORE 0000085e: PUSH1 0x0c 00000860: PUSH1 0x24 00000862: DUP3 00000863: ADD 00000864: MSTORE 00000865: PUSH12 0x7a65726f2061646472657373 00000872: PUSH1 0xa0 00000874: SHL 00000875: PUSH1 0x44 00000877: DUP3 00000878: ADD 00000879: MSTORE 0000087a: SWAP1 0000087b: MLOAD 0000087c: SWAP1 0000087d: DUP2 0000087e: SWAP1 0000087f: SUB 00000880: PUSH1 0x64 00000882: ADD 00000883: SWAP1 00000884: REVERT 00000885: JUMPDEST 00000886: PUSH2 0x088d 00000889: PUSH2 0x177c 0000088c: JUMP 0000088d: JUMPDEST 0000088e: PUSH1 0x40 00000890: DUP1 00000891: MLOAD 00000892: PUSH1 0x20 00000894: DUP1 00000895: DUP3 00000896: ADD 00000897: DUP4 00000898: MSTORE 00000899: PUSH1 0x01 0000089b: PUSH1 0x01 0000089d: PUSH1 0xa0 0000089f: SHL 000008a0: SUB 000008a1: DUP1 000008a2: DUP8 000008a3: AND 000008a4: DUP1 000008a5: DUP5 000008a6: MSTORE 000008a7: PUSH1 0x00 000008a9: DUP7 000008aa: DUP2 000008ab: MSTORE 000008ac: PUSH1 0x02 000008ae: DUP5 000008af: MSTORE 000008b0: DUP6 000008b1: SWAP1 000008b2: KECCAK256 000008b3: SWAP4 000008b4: MLOAD 000008b5: DUP5 000008b6: SLOAD 000008b7: SWAP3 000008b8: AND 000008b9: PUSH1 0x01 000008bb: PUSH1 0x01 000008bd: PUSH1 0xa0 000008bf: SHL 000008c0: SUB 000008c1: NOT 000008c2: SWAP1 000008c3: SWAP3 000008c4: AND 000008c5: SWAP2 000008c6: SWAP1 000008c7: SWAP2 000008c8: OR 000008c9: SWAP1 000008ca: SWAP3 000008cb: SSTORE 000008cc: DUP3 000008cd: MLOAD 000008ce: DUP5 000008cf: DUP2 000008d0: MSTORE 000008d1: CALLER 000008d2: SWAP2 000008d3: DUP2 000008d4: ADD 000008d5: SWAP2 000008d6: SWAP1 000008d7: SWAP2 000008d8: MSTORE 000008d9: DUP1 000008da: DUP4 000008db: ADD 000008dc: SWAP2 000008dd: SWAP1 000008de: SWAP2 000008df: MSTORE 000008e0: SWAP1 000008e1: MLOAD 000008e2: SWAP2 000008e3: SWAP3 000008e4: POP 000008e5: PUSH32 0xd76fc900a7e1a6fcf11d54b7ba943918df6c53a3128140658c389b3da1e997ba 00000906: SWAP2 00000907: SWAP1 00000908: DUP2 00000909: SWAP1 0000090a: SUB 0000090b: PUSH1 0x60 0000090d: ADD 0000090e: SWAP1 0000090f: LOG1 00000910: SWAP2 00000911: SWAP1 00000912: POP 00000913: JUMP 00000914: JUMPDEST 00000915: PUSH1 0x00 00000917: PUSH2 0x0921 0000091a: PUSH1 0x05 0000091c: DUP4 0000091d: PUSH2 0x17c5 00000920: JUMP 00000921: JUMPDEST 00000922: PUSH1 0x40 00000924: DUP1 00000925: MLOAD 00000926: DUP3 00000927: DUP2 00000928: MSTORE 00000929: CALLER 0000092a: PUSH1 0x20 0000092c: DUP3 0000092d: ADD 0000092e: MSTORE 0000092f: PUSH1 0x01 00000931: PUSH1 0x01 00000933: PUSH1 0xa0 00000935: SHL 00000936: SUB 00000937: DUP6 00000938: AND 00000939: DUP2 0000093a: DUP4 0000093b: ADD 0000093c: MSTORE 0000093d: SWAP1 0000093e: MLOAD 0000093f: SWAP2 00000940: SWAP3 00000941: POP 00000942: PUSH32 0x80484ea176012d2765209d6a93b423d605ad7bddfdd769252a85b53268f5a845 00000963: SWAP2 00000964: SWAP1 00000965: DUP2 00000966: SWAP1 00000967: SUB 00000968: PUSH1 0x60 0000096a: ADD 0000096b: SWAP1 0000096c: LOG1 0000096d: SWAP2 0000096e: SWAP1 0000096f: POP 00000970: JUMP 00000971: JUMPDEST 00000972: PUSH1 0x01 00000974: SLOAD 00000975: PUSH1 0x01 00000977: PUSH1 0x01 00000979: PUSH1 0xa0 0000097b: SHL 0000097c: SUB 0000097d: AND 0000097e: CALLER 0000097f: EQ 00000980: PUSH2 0x09bf 00000983: JUMPI 00000984: PUSH1 0x40 00000986: DUP1 00000987: MLOAD 00000988: PUSH3 0x461bcd 0000098c: PUSH1 0xe5 0000098e: SHL 0000098f: DUP2 00000990: MSTORE 00000991: PUSH1 0x20 00000993: PUSH1 0x04 00000995: DUP3 00000996: ADD 00000997: MSTORE 00000998: PUSH1 0x0c 0000099a: PUSH1 0x24 0000099c: DUP3 0000099d: ADD 0000099e: MSTORE 0000099f: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 000009ac: PUSH1 0xa2 000009ae: SHL 000009af: PUSH1 0x44 000009b1: DUP3 000009b2: ADD 000009b3: MSTORE 000009b4: SWAP1 000009b5: MLOAD 000009b6: SWAP1 000009b7: DUP2 000009b8: SWAP1 000009b9: SUB 000009ba: PUSH1 0x64 000009bc: ADD 000009bd: SWAP1 000009be: REVERT 000009bf: JUMPDEST 000009c0: PUSH1 0x00 000009c2: PUSH2 0x09cc 000009c5: PUSH1 0x05 000009c7: DUP4 000009c8: PUSH2 0x1857 000009cb: JUMP 000009cc: JUMPDEST 000009cd: PUSH1 0x01 000009cf: PUSH1 0x01 000009d1: PUSH1 0xa0 000009d3: SHL 000009d4: SUB 000009d5: DUP2 000009d6: AND 000009d7: PUSH1 0x00 000009d9: DUP2 000009da: DUP2 000009db: MSTORE 000009dc: PUSH1 0x03 000009de: PUSH1 0x20 000009e0: SWAP1 000009e1: DUP2 000009e2: MSTORE 000009e3: PUSH1 0x40 000009e5: DUP1 000009e6: DUP4 000009e7: KECCAK256 000009e8: DUP1 000009e9: SLOAD 000009ea: PUSH1 0xff 000009ec: NOT 000009ed: AND 000009ee: SWAP1 000009ef: SSTORE 000009f0: DUP7 000009f1: DUP4 000009f2: MSTORE 000009f3: PUSH1 0x05 000009f5: DUP3 000009f6: MSTORE 000009f7: SWAP2 000009f8: DUP3 000009f9: SWAP1 000009fa: KECCAK256 000009fb: DUP1 000009fc: SLOAD 000009fd: PUSH1 0x01 000009ff: PUSH1 0x01 00000a01: PUSH1 0xa0 00000a03: SHL 00000a04: SUB 00000a05: NOT 00000a06: AND 00000a07: SWAP1 00000a08: SSTORE 00000a09: DUP2 00000a0a: MLOAD 00000a0b: DUP7 00000a0c: DUP2 00000a0d: MSTORE 00000a0e: SWAP1 00000a0f: DUP2 00000a10: ADD 00000a11: SWAP3 00000a12: SWAP1 00000a13: SWAP3 00000a14: MSTORE 00000a15: DUP1 00000a16: MLOAD 00000a17: SWAP3 00000a18: SWAP4 00000a19: POP 00000a1a: PUSH32 0x18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c7383 00000a3b: SWAP3 00000a3c: SWAP2 00000a3d: DUP3 00000a3e: SWAP1 00000a3f: SUB 00000a40: ADD 00000a41: SWAP1 00000a42: LOG1 00000a43: POP 00000a44: POP 00000a45: JUMP 00000a46: JUMPDEST 00000a47: CALLER 00000a48: PUSH1 0x00 00000a4a: SWAP1 00000a4b: DUP2 00000a4c: MSTORE 00000a4d: PUSH1 0x03 00000a4f: PUSH1 0x20 00000a51: MSTORE 00000a52: PUSH1 0x40 00000a54: SWAP1 00000a55: KECCAK256 00000a56: SLOAD 00000a57: PUSH1 0xff 00000a59: AND 00000a5a: PUSH2 0x0a99 00000a5d: JUMPI 00000a5e: PUSH1 0x40 00000a60: DUP1 00000a61: MLOAD 00000a62: PUSH3 0x461bcd 00000a66: PUSH1 0xe5 00000a68: SHL 00000a69: DUP2 00000a6a: MSTORE 00000a6b: PUSH1 0x20 00000a6d: PUSH1 0x04 00000a6f: DUP3 00000a70: ADD 00000a71: MSTORE 00000a72: PUSH1 0x0c 00000a74: PUSH1 0x24 00000a76: DUP3 00000a77: ADD 00000a78: MSTORE 00000a79: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00000a86: PUSH1 0xa2 00000a88: SHL 00000a89: PUSH1 0x44 00000a8b: DUP3 00000a8c: ADD 00000a8d: MSTORE 00000a8e: SWAP1 00000a8f: MLOAD 00000a90: SWAP1 00000a91: DUP2 00000a92: SWAP1 00000a93: SUB 00000a94: PUSH1 0x64 00000a96: ADD 00000a97: SWAP1 00000a98: REVERT 00000a99: JUMPDEST 00000a9a: PUSH1 0x00 00000a9c: JUMPDEST 00000a9d: DUP2 00000a9e: DUP2 00000a9f: LT 00000aa0: ISZERO 00000aa1: PUSH2 0x0b41 00000aa4: JUMPI 00000aa5: PUSH1 0x00 00000aa7: DUP4 00000aa8: DUP4 00000aa9: DUP4 00000aaa: DUP2 00000aab: DUP2 00000aac: LT 00000aad: PUSH2 0x0ab2 00000ab0: JUMPI 00000ab1: INVALID 00000ab2: JUMPDEST 00000ab3: SWAP1 00000ab4: POP 00000ab5: PUSH1 0x20 00000ab7: MUL 00000ab8: ADD 00000ab9: CALLDATALOAD 00000aba: PUSH1 0x01 00000abc: PUSH1 0x01 00000abe: PUSH1 0xa0 00000ac0: SHL 00000ac1: SUB 00000ac2: AND 00000ac3: SWAP1 00000ac4: POP 00000ac5: DUP1 00000ac6: PUSH1 0x01 00000ac8: PUSH1 0x01 00000aca: PUSH1 0xa0 00000acc: SHL 00000acd: SUB 00000ace: AND 00000acf: PUSH4 0xe00af4a7 00000ad4: DUP7 00000ad5: PUSH1 0x40 00000ad7: MLOAD 00000ad8: DUP3 00000ad9: PUSH4 0xffffffff 00000ade: AND 00000adf: PUSH1 0xe0 00000ae1: SHL 00000ae2: DUP2 00000ae3: MSTORE 00000ae4: PUSH1 0x04 00000ae6: ADD 00000ae7: DUP1 00000ae8: DUP3 00000ae9: PUSH1 0x01 00000aeb: PUSH1 0x01 00000aed: PUSH1 0xa0 00000aef: SHL 00000af0: SUB 00000af1: AND 00000af2: PUSH1 0x01 00000af4: PUSH1 0x01 00000af6: PUSH1 0xa0 00000af8: SHL 00000af9: SUB 00000afa: AND 00000afb: DUP2 00000afc: MSTORE 00000afd: PUSH1 0x20 00000aff: ADD 00000b00: SWAP2 00000b01: POP 00000b02: POP 00000b03: PUSH1 0x00 00000b05: PUSH1 0x40 00000b07: MLOAD 00000b08: DUP1 00000b09: DUP4 00000b0a: SUB 00000b0b: DUP2 00000b0c: PUSH1 0x00 00000b0e: DUP8 00000b0f: DUP1 00000b10: EXTCODESIZE 00000b11: ISZERO 00000b12: DUP1 00000b13: ISZERO 00000b14: PUSH2 0x0b1c 00000b17: JUMPI 00000b18: PUSH1 0x00 00000b1a: DUP1 00000b1b: REVERT 00000b1c: JUMPDEST 00000b1d: POP 00000b1e: GAS 00000b1f: CALL 00000b20: ISZERO 00000b21: DUP1 00000b22: ISZERO 00000b23: PUSH2 0x0b30 00000b26: JUMPI 00000b27: RETURNDATASIZE 00000b28: PUSH1 0x00 00000b2a: DUP1 00000b2b: RETURNDATACOPY 00000b2c: RETURNDATASIZE 00000b2d: PUSH1 0x00 00000b2f: REVERT 00000b30: JUMPDEST 00000b31: POP 00000b32: POP 00000b33: PUSH1 0x01 00000b35: SWAP1 00000b36: SWAP4 00000b37: ADD 00000b38: SWAP3 00000b39: POP 00000b3a: PUSH2 0x0a9c 00000b3d: SWAP2 00000b3e: POP 00000b3f: POP 00000b40: JUMP 00000b41: JUMPDEST 00000b42: POP 00000b43: POP 00000b44: POP 00000b45: POP 00000b46: JUMP 00000b47: JUMPDEST 00000b48: PUSH1 0x01 00000b4a: SLOAD 00000b4b: PUSH1 0x01 00000b4d: PUSH1 0x01 00000b4f: PUSH1 0xa0 00000b51: SHL 00000b52: SUB 00000b53: AND 00000b54: DUP2 00000b55: JUMP 00000b56: JUMPDEST 00000b57: PUSH1 0x01 00000b59: SLOAD 00000b5a: PUSH1 0x01 00000b5c: PUSH1 0x01 00000b5e: PUSH1 0xa0 00000b60: SHL 00000b61: SUB 00000b62: AND 00000b63: CALLER 00000b64: EQ 00000b65: PUSH2 0x0ba4 00000b68: JUMPI 00000b69: PUSH1 0x40 00000b6b: DUP1 00000b6c: MLOAD 00000b6d: PUSH3 0x461bcd 00000b71: PUSH1 0xe5 00000b73: SHL 00000b74: DUP2 00000b75: MSTORE 00000b76: PUSH1 0x20 00000b78: PUSH1 0x04 00000b7a: DUP3 00000b7b: ADD 00000b7c: MSTORE 00000b7d: PUSH1 0x0c 00000b7f: PUSH1 0x24 00000b81: DUP3 00000b82: ADD 00000b83: MSTORE 00000b84: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00000b91: PUSH1 0xa2 00000b93: SHL 00000b94: PUSH1 0x44 00000b96: DUP3 00000b97: ADD 00000b98: MSTORE 00000b99: SWAP1 00000b9a: MLOAD 00000b9b: SWAP1 00000b9c: DUP2 00000b9d: SWAP1 00000b9e: SUB 00000b9f: PUSH1 0x64 00000ba1: ADD 00000ba2: SWAP1 00000ba3: REVERT 00000ba4: JUMPDEST 00000ba5: PUSH2 0x0bad 00000ba8: DUP2 00000ba9: PUSH2 0x18d2 00000bac: JUMP 00000bad: JUMPDEST 00000bae: PUSH1 0x01 00000bb0: DUP1 00000bb1: SLOAD 00000bb2: PUSH1 0x01 00000bb4: PUSH1 0x01 00000bb6: PUSH1 0xa0 00000bb8: SHL 00000bb9: SUB 00000bba: SWAP3 00000bbb: DUP4 00000bbc: AND 00000bbd: PUSH1 0x01 00000bbf: PUSH1 0x01 00000bc1: PUSH1 0xa0 00000bc3: SHL 00000bc4: SUB 00000bc5: NOT 00000bc6: SWAP2 00000bc7: DUP3 00000bc8: AND 00000bc9: OR 00000bca: DUP3 00000bcb: SSTORE 00000bcc: PUSH1 0x00 00000bce: DUP5 00000bcf: DUP2 00000bd0: MSTORE 00000bd1: PUSH1 0x02 00000bd3: PUSH1 0x20 00000bd5: SWAP1 00000bd6: DUP2 00000bd7: MSTORE 00000bd8: PUSH1 0x40 00000bda: SWAP2 00000bdb: DUP3 00000bdc: SWAP1 00000bdd: KECCAK256 00000bde: DUP1 00000bdf: SLOAD 00000be0: SWAP1 00000be1: SWAP4 00000be2: AND 00000be3: SWAP1 00000be4: SWAP3 00000be5: SSTORE 00000be6: SWAP2 00000be7: SLOAD 00000be8: DUP3 00000be9: MLOAD 00000bea: DUP6 00000beb: DUP2 00000bec: MSTORE 00000bed: SWAP4 00000bee: AND 00000bef: SWAP1 00000bf0: DUP4 00000bf1: ADD 00000bf2: MSTORE 00000bf3: DUP1 00000bf4: MLOAD 00000bf5: PUSH32 0x9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d 00000c16: SWAP3 00000c17: DUP2 00000c18: SWAP1 00000c19: SUB 00000c1a: SWAP1 00000c1b: SWAP2 00000c1c: ADD 00000c1d: SWAP1 00000c1e: LOG1 00000c1f: POP 00000c20: JUMP 00000c21: JUMPDEST 00000c22: CALLER 00000c23: PUSH1 0x00 00000c25: SWAP1 00000c26: DUP2 00000c27: MSTORE 00000c28: PUSH1 0x03 00000c2a: PUSH1 0x20 00000c2c: MSTORE 00000c2d: PUSH1 0x40 00000c2f: SWAP1 00000c30: KECCAK256 00000c31: SLOAD 00000c32: PUSH1 0xff 00000c34: AND 00000c35: PUSH2 0x0c74 00000c38: JUMPI 00000c39: PUSH1 0x40 00000c3b: DUP1 00000c3c: MLOAD 00000c3d: PUSH3 0x461bcd 00000c41: PUSH1 0xe5 00000c43: SHL 00000c44: DUP2 00000c45: MSTORE 00000c46: PUSH1 0x20 00000c48: PUSH1 0x04 00000c4a: DUP3 00000c4b: ADD 00000c4c: MSTORE 00000c4d: PUSH1 0x0c 00000c4f: PUSH1 0x24 00000c51: DUP3 00000c52: ADD 00000c53: MSTORE 00000c54: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00000c61: PUSH1 0xa2 00000c63: SHL 00000c64: PUSH1 0x44 00000c66: DUP3 00000c67: ADD 00000c68: MSTORE 00000c69: SWAP1 00000c6a: MLOAD 00000c6b: SWAP1 00000c6c: DUP2 00000c6d: SWAP1 00000c6e: SUB 00000c6f: PUSH1 0x64 00000c71: ADD 00000c72: SWAP1 00000c73: REVERT 00000c74: JUMPDEST 00000c75: DUP3 00000c76: PUSH1 0x00 00000c78: JUMPDEST 00000c79: DUP3 00000c7a: DUP2 00000c7b: LT 00000c7c: ISZERO 00000c7d: PUSH2 0x0e20 00000c80: JUMPI 00000c81: PUSH1 0x00 00000c83: DUP5 00000c84: DUP5 00000c85: DUP4 00000c86: DUP2 00000c87: DUP2 00000c88: LT 00000c89: PUSH2 0x0c8e 00000c8c: JUMPI 00000c8d: INVALID 00000c8e: JUMPDEST 00000c8f: SWAP1 00000c90: POP 00000c91: PUSH1 0x20 00000c93: MUL 00000c94: ADD 00000c95: CALLDATALOAD 00000c96: PUSH1 0x01 00000c98: PUSH1 0x01 00000c9a: PUSH1 0xa0 00000c9c: SHL 00000c9d: SUB 00000c9e: AND 00000c9f: SWAP1 00000ca0: POP 00000ca1: PUSH1 0x00 00000ca3: DUP4 00000ca4: PUSH1 0x01 00000ca6: PUSH1 0x01 00000ca8: PUSH1 0xa0 00000caa: SHL 00000cab: SUB 00000cac: AND 00000cad: PUSH4 0x70a08231 00000cb2: DUP4 00000cb3: PUSH1 0x40 00000cb5: MLOAD 00000cb6: DUP3 00000cb7: PUSH4 0xffffffff 00000cbc: AND 00000cbd: PUSH1 0xe0 00000cbf: SHL 00000cc0: DUP2 00000cc1: MSTORE 00000cc2: PUSH1 0x04 00000cc4: ADD 00000cc5: DUP1 00000cc6: DUP3 00000cc7: PUSH1 0x01 00000cc9: PUSH1 0x01 00000ccb: PUSH1 0xa0 00000ccd: SHL 00000cce: SUB 00000ccf: AND 00000cd0: PUSH1 0x01 00000cd2: PUSH1 0x01 00000cd4: PUSH1 0xa0 00000cd6: SHL 00000cd7: SUB 00000cd8: AND 00000cd9: DUP2 00000cda: MSTORE 00000cdb: PUSH1 0x20 00000cdd: ADD 00000cde: SWAP2 00000cdf: POP 00000ce0: POP 00000ce1: PUSH1 0x20 00000ce3: PUSH1 0x40 00000ce5: MLOAD 00000ce6: DUP1 00000ce7: DUP4 00000ce8: SUB 00000ce9: DUP2 00000cea: DUP7 00000ceb: DUP1 00000cec: EXTCODESIZE 00000ced: ISZERO 00000cee: DUP1 00000cef: ISZERO 00000cf0: PUSH2 0x0cf8 00000cf3: JUMPI 00000cf4: PUSH1 0x00 00000cf6: DUP1 00000cf7: REVERT 00000cf8: JUMPDEST 00000cf9: POP 00000cfa: GAS 00000cfb: STATICCALL 00000cfc: ISZERO 00000cfd: DUP1 00000cfe: ISZERO 00000cff: PUSH2 0x0d0c 00000d02: JUMPI 00000d03: RETURNDATASIZE 00000d04: PUSH1 0x00 00000d06: DUP1 00000d07: RETURNDATACOPY 00000d08: RETURNDATASIZE 00000d09: PUSH1 0x00 00000d0b: REVERT 00000d0c: JUMPDEST 00000d0d: POP 00000d0e: POP 00000d0f: POP 00000d10: POP 00000d11: PUSH1 0x40 00000d13: MLOAD 00000d14: RETURNDATASIZE 00000d15: PUSH1 0x20 00000d17: DUP2 00000d18: LT 00000d19: ISZERO 00000d1a: PUSH2 0x0d22 00000d1d: JUMPI 00000d1e: PUSH1 0x00 00000d20: DUP1 00000d21: REVERT 00000d22: JUMPDEST 00000d23: POP 00000d24: MLOAD 00000d25: PUSH1 0x40 00000d27: DUP1 00000d28: MLOAD 00000d29: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00000d4a: DUP2 00000d4b: MSTORE 00000d4c: PUSH1 0x01 00000d4e: PUSH1 0x01 00000d50: PUSH1 0xa0 00000d52: SHL 00000d53: SUB 00000d54: DUP6 00000d55: DUP2 00000d56: AND 00000d57: PUSH1 0x04 00000d59: DUP4 00000d5a: ADD 00000d5b: MSTORE 00000d5c: ADDRESS 00000d5d: PUSH1 0x24 00000d5f: DUP4 00000d60: ADD 00000d61: MSTORE 00000d62: PUSH1 0x44 00000d64: DUP3 00000d65: ADD 00000d66: DUP5 00000d67: SWAP1 00000d68: MSTORE 00000d69: SWAP2 00000d6a: MLOAD 00000d6b: SWAP3 00000d6c: SWAP4 00000d6d: POP 00000d6e: SWAP1 00000d6f: DUP7 00000d70: AND 00000d71: SWAP2 00000d72: PUSH4 0x23b872dd 00000d77: SWAP2 00000d78: PUSH1 0x64 00000d7a: DUP1 00000d7b: DUP3 00000d7c: ADD 00000d7d: SWAP3 00000d7e: PUSH1 0x20 00000d80: SWAP3 00000d81: SWAP1 00000d82: SWAP2 00000d83: SWAP1 00000d84: DUP3 00000d85: SWAP1 00000d86: SUB 00000d87: ADD 00000d88: DUP2 00000d89: PUSH1 0x00 00000d8b: DUP8 00000d8c: DUP1 00000d8d: EXTCODESIZE 00000d8e: ISZERO 00000d8f: DUP1 00000d90: ISZERO 00000d91: PUSH2 0x0d99 00000d94: JUMPI 00000d95: PUSH1 0x00 00000d97: DUP1 00000d98: REVERT 00000d99: JUMPDEST 00000d9a: POP 00000d9b: GAS 00000d9c: CALL 00000d9d: ISZERO 00000d9e: DUP1 00000d9f: ISZERO 00000da0: PUSH2 0x0dad 00000da3: JUMPI 00000da4: RETURNDATASIZE 00000da5: PUSH1 0x00 00000da7: DUP1 00000da8: RETURNDATACOPY 00000da9: RETURNDATASIZE 00000daa: PUSH1 0x00 00000dac: REVERT 00000dad: JUMPDEST 00000dae: POP 00000daf: POP 00000db0: POP 00000db1: POP 00000db2: PUSH1 0x40 00000db4: MLOAD 00000db5: RETURNDATASIZE 00000db6: PUSH1 0x20 00000db8: DUP2 00000db9: LT 00000dba: ISZERO 00000dbb: PUSH2 0x0dc3 00000dbe: JUMPI 00000dbf: PUSH1 0x00 00000dc1: DUP1 00000dc2: REVERT 00000dc3: JUMPDEST 00000dc4: POP 00000dc5: MLOAD 00000dc6: PUSH2 0x0e16 00000dc9: JUMPI 00000dca: PUSH1 0x40 00000dcc: DUP1 00000dcd: MLOAD 00000dce: PUSH3 0x461bcd 00000dd2: PUSH1 0xe5 00000dd4: SHL 00000dd5: DUP2 00000dd6: MSTORE 00000dd7: PUSH1 0x20 00000dd9: PUSH1 0x04 00000ddb: DUP3 00000ddc: ADD 00000ddd: MSTORE 00000dde: PUSH1 0x12 00000de0: PUSH1 0x24 00000de2: DUP3 00000de3: ADD 00000de4: MSTORE 00000de5: PUSH32 0x7472616e7366657246726f6d2066616c73650000000000000000000000000000 00000e06: PUSH1 0x44 00000e08: DUP3 00000e09: ADD 00000e0a: MSTORE 00000e0b: SWAP1 00000e0c: MLOAD 00000e0d: SWAP1 00000e0e: DUP2 00000e0f: SWAP1 00000e10: SUB 00000e11: PUSH1 0x64 00000e13: ADD 00000e14: SWAP1 00000e15: REVERT 00000e16: JUMPDEST 00000e17: POP 00000e18: POP 00000e19: PUSH1 0x01 00000e1b: ADD 00000e1c: PUSH2 0x0c78 00000e1f: JUMP 00000e20: JUMPDEST 00000e21: POP 00000e22: POP 00000e23: POP 00000e24: POP 00000e25: POP 00000e26: JUMP 00000e27: JUMPDEST 00000e28: PUSH1 0x00 00000e2a: PUSH2 0x0e34 00000e2d: PUSH1 0x04 00000e2f: DUP4 00000e30: PUSH2 0x17c5 00000e33: JUMP 00000e34: JUMPDEST 00000e35: PUSH1 0x40 00000e37: DUP1 00000e38: MLOAD 00000e39: DUP3 00000e3a: DUP2 00000e3b: MSTORE 00000e3c: CALLER 00000e3d: PUSH1 0x20 00000e3f: DUP3 00000e40: ADD 00000e41: MSTORE 00000e42: PUSH1 0x01 00000e44: PUSH1 0x01 00000e46: PUSH1 0xa0 00000e48: SHL 00000e49: SUB 00000e4a: DUP6 00000e4b: AND 00000e4c: DUP2 00000e4d: DUP4 00000e4e: ADD 00000e4f: MSTORE 00000e50: SWAP1 00000e51: MLOAD 00000e52: SWAP2 00000e53: SWAP3 00000e54: POP 00000e55: PUSH32 0x86347f0dc6401085afc2e65b03928402543790cfec1c26238fb9d5384a0d0150 00000e76: SWAP2 00000e77: SWAP1 00000e78: DUP2 00000e79: SWAP1 00000e7a: SUB 00000e7b: PUSH1 0x60 00000e7d: ADD 00000e7e: SWAP1 00000e7f: LOG1 00000e80: SWAP2 00000e81: SWAP1 00000e82: POP 00000e83: JUMP 00000e84: JUMPDEST 00000e85: PUSH1 0x01 00000e87: SLOAD 00000e88: PUSH1 0x01 00000e8a: PUSH1 0x01 00000e8c: PUSH1 0xa0 00000e8e: SHL 00000e8f: SUB 00000e90: AND 00000e91: CALLER 00000e92: EQ 00000e93: PUSH2 0x0ed2 00000e96: JUMPI 00000e97: PUSH1 0x40 00000e99: DUP1 00000e9a: MLOAD 00000e9b: PUSH3 0x461bcd 00000e9f: PUSH1 0xe5 00000ea1: SHL 00000ea2: DUP2 00000ea3: MSTORE 00000ea4: PUSH1 0x20 00000ea6: PUSH1 0x04 00000ea8: DUP3 00000ea9: ADD 00000eaa: MSTORE 00000eab: PUSH1 0x0c 00000ead: PUSH1 0x24 00000eaf: DUP3 00000eb0: ADD 00000eb1: MSTORE 00000eb2: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00000ebf: PUSH1 0xa2 00000ec1: SHL 00000ec2: PUSH1 0x44 00000ec4: DUP3 00000ec5: ADD 00000ec6: MSTORE 00000ec7: SWAP1 00000ec8: MLOAD 00000ec9: SWAP1 00000eca: DUP2 00000ecb: SWAP1 00000ecc: SUB 00000ecd: PUSH1 0x64 00000ecf: ADD 00000ed0: SWAP1 00000ed1: REVERT 00000ed2: JUMPDEST 00000ed3: PUSH1 0x00 00000ed5: PUSH2 0x0edf 00000ed8: PUSH1 0x04 00000eda: DUP4 00000edb: PUSH2 0x1857 00000ede: JUMP 00000edf: JUMPDEST 00000ee0: PUSH1 0x01 00000ee2: PUSH1 0x01 00000ee4: PUSH1 0xa0 00000ee6: SHL 00000ee7: SUB 00000ee8: DUP2 00000ee9: AND 00000eea: PUSH1 0x00 00000eec: DUP2 00000eed: DUP2 00000eee: MSTORE 00000eef: PUSH1 0x03 00000ef1: PUSH1 0x20 00000ef3: SWAP1 00000ef4: DUP2 00000ef5: MSTORE 00000ef6: PUSH1 0x40 00000ef8: DUP1 00000ef9: DUP4 00000efa: KECCAK256 00000efb: DUP1 00000efc: SLOAD 00000efd: PUSH1 0xff 00000eff: NOT 00000f00: AND 00000f01: PUSH1 0x01 00000f03: OR 00000f04: SWAP1 00000f05: SSTORE 00000f06: DUP7 00000f07: DUP4 00000f08: MSTORE 00000f09: PUSH1 0x04 00000f0b: DUP3 00000f0c: MSTORE 00000f0d: SWAP2 00000f0e: DUP3 00000f0f: SWAP1 00000f10: KECCAK256 00000f11: DUP1 00000f12: SLOAD 00000f13: PUSH1 0x01 00000f15: PUSH1 0x01 00000f17: PUSH1 0xa0 00000f19: SHL 00000f1a: SUB 00000f1b: NOT 00000f1c: AND 00000f1d: SWAP1 00000f1e: SSTORE 00000f1f: DUP2 00000f20: MLOAD 00000f21: DUP7 00000f22: DUP2 00000f23: MSTORE 00000f24: SWAP1 00000f25: DUP2 00000f26: ADD 00000f27: SWAP3 00000f28: SWAP1 00000f29: SWAP3 00000f2a: MSTORE 00000f2b: DUP1 00000f2c: MLOAD 00000f2d: SWAP3 00000f2e: SWAP4 00000f2f: POP 00000f30: PUSH32 0xd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb393 00000f51: SWAP3 00000f52: SWAP2 00000f53: DUP3 00000f54: SWAP1 00000f55: SUB 00000f56: ADD 00000f57: SWAP1 00000f58: LOG1 00000f59: POP 00000f5a: POP 00000f5b: JUMP 00000f5c: JUMPDEST 00000f5d: PUSH1 0x03 00000f5f: PUSH1 0x20 00000f61: MSTORE 00000f62: PUSH1 0x00 00000f64: SWAP1 00000f65: DUP2 00000f66: MSTORE 00000f67: PUSH1 0x40 00000f69: SWAP1 00000f6a: KECCAK256 00000f6b: SLOAD 00000f6c: PUSH1 0xff 00000f6e: AND 00000f6f: DUP2 00000f70: JUMP 00000f71: JUMPDEST 00000f72: CALLER 00000f73: PUSH1 0x00 00000f75: SWAP1 00000f76: DUP2 00000f77: MSTORE 00000f78: PUSH1 0x03 00000f7a: PUSH1 0x20 00000f7c: MSTORE 00000f7d: PUSH1 0x40 00000f7f: SWAP1 00000f80: KECCAK256 00000f81: SLOAD 00000f82: PUSH1 0xff 00000f84: AND 00000f85: PUSH2 0x0fc4 00000f88: JUMPI 00000f89: PUSH1 0x40 00000f8b: DUP1 00000f8c: MLOAD 00000f8d: PUSH3 0x461bcd 00000f91: PUSH1 0xe5 00000f93: SHL 00000f94: DUP2 00000f95: MSTORE 00000f96: PUSH1 0x20 00000f98: PUSH1 0x04 00000f9a: DUP3 00000f9b: ADD 00000f9c: MSTORE 00000f9d: PUSH1 0x0c 00000f9f: PUSH1 0x24 00000fa1: DUP3 00000fa2: ADD 00000fa3: MSTORE 00000fa4: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00000fb1: PUSH1 0xa2 00000fb3: SHL 00000fb4: PUSH1 0x44 00000fb6: DUP3 00000fb7: ADD 00000fb8: MSTORE 00000fb9: SWAP1 00000fba: MLOAD 00000fbb: SWAP1 00000fbc: DUP2 00000fbd: SWAP1 00000fbe: SUB 00000fbf: PUSH1 0x64 00000fc1: ADD 00000fc2: SWAP1 00000fc3: REVERT 00000fc4: JUMPDEST 00000fc5: PUSH1 0x00 00000fc7: JUMPDEST 00000fc8: DUP2 00000fc9: DUP2 00000fca: LT 00000fcb: ISZERO 00000fcc: PUSH2 0x104f 00000fcf: JUMPI 00000fd0: PUSH1 0x00 00000fd2: DUP4 00000fd3: DUP4 00000fd4: DUP4 00000fd5: DUP2 00000fd6: DUP2 00000fd7: LT 00000fd8: PUSH2 0x0fdd 00000fdb: JUMPI 00000fdc: INVALID 00000fdd: JUMPDEST 00000fde: SWAP1 00000fdf: POP 00000fe0: PUSH1 0x20 00000fe2: MUL 00000fe3: ADD 00000fe4: CALLDATALOAD 00000fe5: PUSH1 0x01 00000fe7: PUSH1 0x01 00000fe9: PUSH1 0xa0 00000feb: SHL 00000fec: SUB 00000fed: AND 00000fee: SWAP1 00000fef: POP 00000ff0: DUP1 00000ff1: PUSH1 0x01 00000ff3: PUSH1 0x01 00000ff5: PUSH1 0xa0 00000ff7: SHL 00000ff8: SUB 00000ff9: AND 00000ffa: PUSH4 0x90ec71bd 00000fff: PUSH1 0x40 00001001: MLOAD 00001002: DUP2 00001003: PUSH4 0xffffffff 00001008: AND 00001009: PUSH1 0xe0 0000100b: SHL 0000100c: DUP2 0000100d: MSTORE 0000100e: PUSH1 0x04 00001010: ADD 00001011: PUSH1 0x00 00001013: PUSH1 0x40 00001015: MLOAD 00001016: DUP1 00001017: DUP4 00001018: SUB 00001019: DUP2 0000101a: PUSH1 0x00 0000101c: DUP8 0000101d: DUP1 0000101e: EXTCODESIZE 0000101f: ISZERO 00001020: DUP1 00001021: ISZERO 00001022: PUSH2 0x102a 00001025: JUMPI 00001026: PUSH1 0x00 00001028: DUP1 00001029: REVERT 0000102a: JUMPDEST 0000102b: POP 0000102c: GAS 0000102d: CALL 0000102e: ISZERO 0000102f: DUP1 00001030: ISZERO 00001031: PUSH2 0x103e 00001034: JUMPI 00001035: RETURNDATASIZE 00001036: PUSH1 0x00 00001038: DUP1 00001039: RETURNDATACOPY 0000103a: RETURNDATASIZE 0000103b: PUSH1 0x00 0000103d: REVERT 0000103e: JUMPDEST 0000103f: POP 00001040: POP 00001041: PUSH1 0x01 00001043: SWAP1 00001044: SWAP4 00001045: ADD 00001046: SWAP3 00001047: POP 00001048: PUSH2 0x0fc7 0000104b: SWAP2 0000104c: POP 0000104d: POP 0000104e: JUMP 0000104f: JUMPDEST 00001050: POP 00001051: POP 00001052: POP 00001053: JUMP 00001054: JUMPDEST 00001055: CALLER 00001056: PUSH1 0x00 00001058: SWAP1 00001059: DUP2 0000105a: MSTORE 0000105b: PUSH1 0x03 0000105d: PUSH1 0x20 0000105f: MSTORE 00001060: PUSH1 0x40 00001062: SWAP1 00001063: KECCAK256 00001064: SLOAD 00001065: PUSH1 0xff 00001067: AND 00001068: PUSH2 0x10a7 0000106b: JUMPI 0000106c: PUSH1 0x40 0000106e: DUP1 0000106f: MLOAD 00001070: PUSH3 0x461bcd 00001074: PUSH1 0xe5 00001076: SHL 00001077: DUP2 00001078: MSTORE 00001079: PUSH1 0x20 0000107b: PUSH1 0x04 0000107d: DUP3 0000107e: ADD 0000107f: MSTORE 00001080: PUSH1 0x0c 00001082: PUSH1 0x24 00001084: DUP3 00001085: ADD 00001086: MSTORE 00001087: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00001094: PUSH1 0xa2 00001096: SHL 00001097: PUSH1 0x44 00001099: DUP3 0000109a: ADD 0000109b: MSTORE 0000109c: SWAP1 0000109d: MLOAD 0000109e: SWAP1 0000109f: DUP2 000010a0: SWAP1 000010a1: SUB 000010a2: PUSH1 0x64 000010a4: ADD 000010a5: SWAP1 000010a6: REVERT 000010a7: JUMPDEST 000010a8: DUP3 000010a9: DUP2 000010aa: EQ 000010ab: PUSH2 0x10fb 000010ae: JUMPI 000010af: PUSH1 0x40 000010b1: DUP1 000010b2: MLOAD 000010b3: PUSH3 0x461bcd 000010b7: PUSH1 0xe5 000010b9: SHL 000010ba: DUP2 000010bb: MSTORE 000010bc: PUSH1 0x20 000010be: PUSH1 0x04 000010c0: DUP3 000010c1: ADD 000010c2: MSTORE 000010c3: PUSH1 0x11 000010c5: PUSH1 0x24 000010c7: DUP3 000010c8: ADD 000010c9: MSTORE 000010ca: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000 000010eb: PUSH1 0x44 000010ed: DUP3 000010ee: ADD 000010ef: MSTORE 000010f0: SWAP1 000010f1: MLOAD 000010f2: SWAP1 000010f3: DUP2 000010f4: SWAP1 000010f5: SUB 000010f6: PUSH1 0x64 000010f8: ADD 000010f9: SWAP1 000010fa: REVERT 000010fb: JUMPDEST 000010fc: PUSH1 0x00 000010fe: JUMPDEST 000010ff: DUP4 00001100: DUP2 00001101: LT 00001102: ISZERO 00001103: PUSH2 0x0e20 00001106: JUMPI 00001107: PUSH1 0x00 00001109: DUP6 0000110a: DUP6 0000110b: DUP4 0000110c: DUP2 0000110d: DUP2 0000110e: LT 0000110f: PUSH2 0x1114 00001112: JUMPI 00001113: INVALID 00001114: JUMPDEST 00001115: SWAP1 00001116: POP 00001117: PUSH1 0x20 00001119: MUL 0000111a: ADD 0000111b: CALLDATALOAD 0000111c: PUSH1 0x01 0000111e: PUSH1 0x01 00001120: PUSH1 0xa0 00001122: SHL 00001123: SUB 00001124: AND 00001125: SWAP1 00001126: POP 00001127: PUSH1 0x00 00001129: DUP5 0000112a: DUP5 0000112b: DUP5 0000112c: DUP2 0000112d: DUP2 0000112e: LT 0000112f: PUSH2 0x1134 00001132: JUMPI 00001133: INVALID 00001134: JUMPDEST 00001135: SWAP1 00001136: POP 00001137: PUSH1 0x20 00001139: MUL 0000113a: ADD 0000113b: CALLDATALOAD 0000113c: SWAP1 0000113d: POP 0000113e: DUP2 0000113f: PUSH1 0x01 00001141: PUSH1 0x01 00001143: PUSH1 0xa0 00001145: SHL 00001146: SUB 00001147: AND 00001148: PUSH2 0x08fc 0000114b: DUP3 0000114c: SWAP1 0000114d: DUP2 0000114e: ISZERO 0000114f: MUL 00001150: SWAP1 00001151: PUSH1 0x40 00001153: MLOAD 00001154: PUSH1 0x00 00001156: PUSH1 0x40 00001158: MLOAD 00001159: DUP1 0000115a: DUP4 0000115b: SUB 0000115c: DUP2 0000115d: DUP6 0000115e: DUP9 0000115f: DUP9 00001160: CALL 00001161: SWAP4 00001162: POP 00001163: POP 00001164: POP 00001165: POP 00001166: ISZERO 00001167: DUP1 00001168: ISZERO 00001169: PUSH2 0x1176 0000116c: JUMPI 0000116d: RETURNDATASIZE 0000116e: PUSH1 0x00 00001170: DUP1 00001171: RETURNDATACOPY 00001172: RETURNDATASIZE 00001173: PUSH1 0x00 00001175: REVERT 00001176: JUMPDEST 00001177: POP 00001178: PUSH1 0x40 0000117a: DUP1 0000117b: MLOAD 0000117c: PUSH1 0x01 0000117e: PUSH1 0x01 00001180: PUSH1 0xa0 00001182: SHL 00001183: SUB 00001184: DUP5 00001185: AND 00001186: DUP2 00001187: MSTORE 00001188: PUSH1 0x20 0000118a: DUP2 0000118b: ADD 0000118c: DUP4 0000118d: SWAP1 0000118e: MSTORE 0000118f: DUP2 00001190: MLOAD 00001191: PUSH32 0xf35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575 000011b2: SWAP3 000011b3: SWAP2 000011b4: DUP2 000011b5: SWAP1 000011b6: SUB 000011b7: SWAP1 000011b8: SWAP2 000011b9: ADD 000011ba: SWAP1 000011bb: LOG1 000011bc: POP 000011bd: POP 000011be: PUSH1 0x01 000011c0: ADD 000011c1: PUSH2 0x10fe 000011c4: JUMP 000011c5: JUMPDEST 000011c6: PUSH1 0x00 000011c8: SLOAD 000011c9: DUP2 000011ca: JUMP 000011cb: JUMPDEST 000011cc: PUSH1 0x02 000011ce: PUSH1 0x20 000011d0: MSTORE 000011d1: PUSH1 0x00 000011d3: SWAP1 000011d4: DUP2 000011d5: MSTORE 000011d6: PUSH1 0x40 000011d8: SWAP1 000011d9: KECCAK256 000011da: SLOAD 000011db: PUSH1 0x01 000011dd: PUSH1 0x01 000011df: PUSH1 0xa0 000011e1: SHL 000011e2: SUB 000011e3: AND 000011e4: DUP2 000011e5: JUMP 000011e6: JUMPDEST 000011e7: CALLER 000011e8: PUSH1 0x00 000011ea: SWAP1 000011eb: DUP2 000011ec: MSTORE 000011ed: PUSH1 0x03 000011ef: PUSH1 0x20 000011f1: MSTORE 000011f2: PUSH1 0x40 000011f4: SWAP1 000011f5: KECCAK256 000011f6: SLOAD 000011f7: PUSH1 0xff 000011f9: AND 000011fa: PUSH2 0x1239 000011fd: JUMPI 000011fe: PUSH1 0x40 00001200: DUP1 00001201: MLOAD 00001202: PUSH3 0x461bcd 00001206: PUSH1 0xe5 00001208: SHL 00001209: DUP2 0000120a: MSTORE 0000120b: PUSH1 0x20 0000120d: PUSH1 0x04 0000120f: DUP3 00001210: ADD 00001211: MSTORE 00001212: PUSH1 0x0c 00001214: PUSH1 0x24 00001216: DUP3 00001217: ADD 00001218: MSTORE 00001219: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 00001226: PUSH1 0xa2 00001228: SHL 00001229: PUSH1 0x44 0000122b: DUP3 0000122c: ADD 0000122d: MSTORE 0000122e: SWAP1 0000122f: MLOAD 00001230: SWAP1 00001231: DUP2 00001232: SWAP1 00001233: SUB 00001234: PUSH1 0x64 00001236: ADD 00001237: SWAP1 00001238: REVERT 00001239: JUMPDEST 0000123a: PUSH1 0x00 0000123c: PUSH1 0x60 0000123e: DUP5 0000123f: PUSH1 0x01 00001241: PUSH1 0x01 00001243: PUSH1 0xa0 00001245: SHL 00001246: SUB 00001247: AND 00001248: DUP5 00001249: DUP5 0000124a: PUSH1 0x40 0000124c: MLOAD 0000124d: DUP1 0000124e: DUP4 0000124f: DUP4 00001250: DUP1 00001251: DUP3 00001252: DUP5 00001253: CALLDATACOPY 00001254: PUSH1 0x40 00001256: MLOAD 00001257: SWAP3 00001258: ADD 00001259: SWAP5 0000125a: POP 0000125b: PUSH1 0x00 0000125d: SWAP4 0000125e: POP 0000125f: SWAP1 00001260: SWAP2 00001261: POP 00001262: POP 00001263: DUP1 00001264: DUP4 00001265: SUB 00001266: DUP2 00001267: DUP4 00001268: DUP7 00001269: GAS 0000126a: CALL 0000126b: SWAP2 0000126c: POP 0000126d: POP 0000126e: RETURNDATASIZE 0000126f: DUP1 00001270: PUSH1 0x00 00001272: DUP2 00001273: EQ 00001274: PUSH2 0x1299 00001277: JUMPI 00001278: PUSH1 0x40 0000127a: MLOAD 0000127b: SWAP2 0000127c: POP 0000127d: PUSH1 0x1f 0000127f: NOT 00001280: PUSH1 0x3f 00001282: RETURNDATASIZE 00001283: ADD 00001284: AND 00001285: DUP3 00001286: ADD 00001287: PUSH1 0x40 00001289: MSTORE 0000128a: RETURNDATASIZE 0000128b: DUP3 0000128c: MSTORE 0000128d: RETURNDATASIZE 0000128e: PUSH1 0x00 00001290: PUSH1 0x20 00001292: DUP5 00001293: ADD 00001294: RETURNDATACOPY 00001295: PUSH2 0x129e 00001298: JUMP 00001299: JUMPDEST 0000129a: PUSH1 0x60 0000129c: SWAP2 0000129d: POP 0000129e: JUMPDEST 0000129f: POP 000012a0: SWAP2 000012a1: POP 000012a2: SWAP2 000012a3: POP 000012a4: DUP2 000012a5: ISZERO 000012a6: PUSH2 0x1393 000012a9: JUMPI 000012aa: PUSH32 0x18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b96 000012cb: DUP6 000012cc: DUP6 000012cd: DUP6 000012ce: DUP5 000012cf: PUSH1 0x40 000012d1: MLOAD 000012d2: DUP1 000012d3: DUP6 000012d4: PUSH1 0x01 000012d6: PUSH1 0x01 000012d8: PUSH1 0xa0 000012da: SHL 000012db: SUB 000012dc: AND 000012dd: PUSH1 0x01 000012df: PUSH1 0x01 000012e1: PUSH1 0xa0 000012e3: SHL 000012e4: SUB 000012e5: AND 000012e6: DUP2 000012e7: MSTORE 000012e8: PUSH1 0x20 000012ea: ADD 000012eb: DUP1 000012ec: PUSH1 0x20 000012ee: ADD 000012ef: DUP1 000012f0: PUSH1 0x20 000012f2: ADD 000012f3: DUP4 000012f4: DUP2 000012f5: SUB 000012f6: DUP4 000012f7: MSTORE 000012f8: DUP7 000012f9: DUP7 000012fa: DUP3 000012fb: DUP2 000012fc: DUP2 000012fd: MSTORE 000012fe: PUSH1 0x20 00001300: ADD 00001301: SWAP3 00001302: POP 00001303: DUP1 00001304: DUP3 00001305: DUP5 00001306: CALLDATACOPY 00001307: PUSH1 0x00 00001309: DUP4 0000130a: DUP3 0000130b: ADD 0000130c: DUP2 0000130d: SWAP1 0000130e: MSTORE 0000130f: PUSH1 0x1f 00001311: SWAP1 00001312: SWAP2 00001313: ADD 00001314: PUSH1 0x1f 00001316: NOT 00001317: AND 00001318: SWAP1 00001319: SWAP3 0000131a: ADD 0000131b: DUP6 0000131c: DUP2 0000131d: SUB 0000131e: DUP5 0000131f: MSTORE 00001320: DUP7 00001321: MLOAD 00001322: DUP2 00001323: MSTORE 00001324: DUP7 00001325: MLOAD 00001326: PUSH1 0x20 00001328: SWAP2 00001329: DUP3 0000132a: ADD 0000132b: SWAP4 0000132c: SWAP2 0000132d: DUP9 0000132e: ADD 0000132f: SWAP3 00001330: POP 00001331: SWAP1 00001332: DUP2 00001333: SWAP1 00001334: DUP5 00001335: SWAP1 00001336: DUP5 00001337: SWAP1 00001338: JUMPDEST 00001339: DUP4 0000133a: DUP2 0000133b: LT 0000133c: ISZERO 0000133d: PUSH2 0x1350 00001340: JUMPI 00001341: DUP2 00001342: DUP2 00001343: ADD 00001344: MLOAD 00001345: DUP4 00001346: DUP3 00001347: ADD 00001348: MSTORE 00001349: PUSH1 0x20 0000134b: ADD 0000134c: PUSH2 0x1338 0000134f: JUMP 00001350: JUMPDEST 00001351: POP 00001352: POP 00001353: POP 00001354: POP 00001355: SWAP1 00001356: POP 00001357: SWAP1 00001358: DUP2 00001359: ADD 0000135a: SWAP1 0000135b: PUSH1 0x1f 0000135d: AND 0000135e: DUP1 0000135f: ISZERO 00001360: PUSH2 0x137d 00001363: JUMPI 00001364: DUP1 00001365: DUP3 00001366: SUB 00001367: DUP1 00001368: MLOAD 00001369: PUSH1 0x01 0000136b: DUP4 0000136c: PUSH1 0x20 0000136e: SUB 0000136f: PUSH2 0x0100 00001372: EXP 00001373: SUB 00001374: NOT 00001375: AND 00001376: DUP2 00001377: MSTORE 00001378: PUSH1 0x20 0000137a: ADD 0000137b: SWAP2 0000137c: POP 0000137d: JUMPDEST 0000137e: POP 0000137f: SWAP7 00001380: POP 00001381: POP 00001382: POP 00001383: POP 00001384: POP 00001385: POP 00001386: POP 00001387: PUSH1 0x40 00001389: MLOAD 0000138a: DUP1 0000138b: SWAP2 0000138c: SUB 0000138d: SWAP1 0000138e: LOG1 0000138f: PUSH2 0x0e20 00001392: JUMP 00001393: JUMPDEST 00001394: PUSH32 0xaba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e6274 000013b5: DUP6 000013b6: DUP6 000013b7: DUP6 000013b8: DUP5 000013b9: PUSH1 0x40 000013bb: MLOAD 000013bc: DUP1 000013bd: DUP6 000013be: PUSH1 0x01 000013c0: PUSH1 0x01 000013c2: PUSH1 0xa0 000013c4: SHL 000013c5: SUB 000013c6: AND 000013c7: PUSH1 0x01 000013c9: PUSH1 0x01 000013cb: PUSH1 0xa0 000013cd: SHL 000013ce: SUB 000013cf: AND 000013d0: DUP2 000013d1: MSTORE 000013d2: PUSH1 0x20 000013d4: ADD 000013d5: DUP1 000013d6: PUSH1 0x20 000013d8: ADD 000013d9: DUP1 000013da: PUSH1 0x20 000013dc: ADD 000013dd: DUP4 000013de: DUP2 000013df: SUB 000013e0: DUP4 000013e1: MSTORE 000013e2: DUP7 000013e3: DUP7 000013e4: DUP3 000013e5: DUP2 000013e6: DUP2 000013e7: MSTORE 000013e8: PUSH1 0x20 000013ea: ADD 000013eb: SWAP3 000013ec: POP 000013ed: DUP1 000013ee: DUP3 000013ef: DUP5 000013f0: CALLDATACOPY 000013f1: PUSH1 0x00 000013f3: DUP4 000013f4: DUP3 000013f5: ADD 000013f6: DUP2 000013f7: SWAP1 000013f8: MSTORE 000013f9: PUSH1 0x1f 000013fb: SWAP1 000013fc: SWAP2 000013fd: ADD 000013fe: PUSH1 0x1f 00001400: NOT 00001401: AND 00001402: SWAP1 00001403: SWAP3 00001404: ADD 00001405: DUP6 00001406: DUP2 00001407: SUB 00001408: DUP5 00001409: MSTORE 0000140a: DUP7 0000140b: MLOAD 0000140c: DUP2 0000140d: MSTORE 0000140e: DUP7 0000140f: MLOAD 00001410: PUSH1 0x20 00001412: SWAP2 00001413: DUP3 00001414: ADD 00001415: SWAP4 00001416: SWAP2 00001417: DUP9 00001418: ADD 00001419: SWAP3 0000141a: POP 0000141b: SWAP1 0000141c: DUP2 0000141d: SWAP1 0000141e: DUP5 0000141f: SWAP1 00001420: DUP5 00001421: SWAP1 00001422: JUMPDEST 00001423: DUP4 00001424: DUP2 00001425: LT 00001426: ISZERO 00001427: PUSH2 0x143a 0000142a: JUMPI 0000142b: DUP2 0000142c: DUP2 0000142d: ADD 0000142e: MLOAD 0000142f: DUP4 00001430: DUP3 00001431: ADD 00001432: MSTORE 00001433: PUSH1 0x20 00001435: ADD 00001436: PUSH2 0x1422 00001439: JUMP 0000143a: JUMPDEST 0000143b: POP 0000143c: POP 0000143d: POP 0000143e: POP 0000143f: SWAP1 00001440: POP 00001441: SWAP1 00001442: DUP2 00001443: ADD 00001444: SWAP1 00001445: PUSH1 0x1f 00001447: AND 00001448: DUP1 00001449: ISZERO 0000144a: PUSH2 0x1467 0000144d: JUMPI 0000144e: DUP1 0000144f: DUP3 00001450: SUB 00001451: DUP1 00001452: MLOAD 00001453: PUSH1 0x01 00001455: DUP4 00001456: PUSH1 0x20 00001458: SUB 00001459: PUSH2 0x0100 0000145c: EXP 0000145d: SUB 0000145e: NOT 0000145f: AND 00001460: DUP2 00001461: MSTORE 00001462: PUSH1 0x20 00001464: ADD 00001465: SWAP2 00001466: POP 00001467: JUMPDEST 00001468: POP 00001469: SWAP7 0000146a: POP 0000146b: POP 0000146c: POP 0000146d: POP 0000146e: POP 0000146f: POP 00001470: POP 00001471: PUSH1 0x40 00001473: MLOAD 00001474: DUP1 00001475: SWAP2 00001476: SUB 00001477: SWAP1 00001478: LOG1 00001479: POP 0000147a: POP 0000147b: POP 0000147c: POP 0000147d: POP 0000147e: JUMP 0000147f: JUMPDEST 00001480: PUSH1 0x05 00001482: PUSH1 0x20 00001484: MSTORE 00001485: PUSH1 0x00 00001487: SWAP1 00001488: DUP2 00001489: MSTORE 0000148a: PUSH1 0x40 0000148c: SWAP1 0000148d: KECCAK256 0000148e: SLOAD 0000148f: PUSH1 0x01 00001491: PUSH1 0x01 00001493: PUSH1 0xa0 00001495: SHL 00001496: SUB 00001497: AND 00001498: DUP2 00001499: JUMP 0000149a: JUMPDEST 0000149b: CALLER 0000149c: PUSH1 0x00 0000149e: SWAP1 0000149f: DUP2 000014a0: MSTORE 000014a1: PUSH1 0x03 000014a3: PUSH1 0x20 000014a5: MSTORE 000014a6: PUSH1 0x40 000014a8: SWAP1 000014a9: KECCAK256 000014aa: SLOAD 000014ab: PUSH1 0xff 000014ad: AND 000014ae: PUSH2 0x14ed 000014b1: JUMPI 000014b2: PUSH1 0x40 000014b4: DUP1 000014b5: MLOAD 000014b6: PUSH3 0x461bcd 000014ba: PUSH1 0xe5 000014bc: SHL 000014bd: DUP2 000014be: MSTORE 000014bf: PUSH1 0x20 000014c1: PUSH1 0x04 000014c3: DUP3 000014c4: ADD 000014c5: MSTORE 000014c6: PUSH1 0x0c 000014c8: PUSH1 0x24 000014ca: DUP3 000014cb: ADD 000014cc: MSTORE 000014cd: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 000014da: PUSH1 0xa2 000014dc: SHL 000014dd: PUSH1 0x44 000014df: DUP3 000014e0: ADD 000014e1: MSTORE 000014e2: SWAP1 000014e3: MLOAD 000014e4: SWAP1 000014e5: DUP2 000014e6: SWAP1 000014e7: SUB 000014e8: PUSH1 0x64 000014ea: ADD 000014eb: SWAP1 000014ec: REVERT 000014ed: JUMPDEST 000014ee: DUP3 000014ef: DUP2 000014f0: EQ 000014f1: PUSH2 0x1541 000014f4: JUMPI 000014f5: PUSH1 0x40 000014f7: DUP1 000014f8: MLOAD 000014f9: PUSH3 0x461bcd 000014fd: PUSH1 0xe5 000014ff: SHL 00001500: DUP2 00001501: MSTORE 00001502: PUSH1 0x20 00001504: PUSH1 0x04 00001506: DUP3 00001507: ADD 00001508: MSTORE 00001509: PUSH1 0x11 0000150b: PUSH1 0x24 0000150d: DUP3 0000150e: ADD 0000150f: MSTORE 00001510: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000 00001531: PUSH1 0x44 00001533: DUP3 00001534: ADD 00001535: MSTORE 00001536: SWAP1 00001537: MLOAD 00001538: SWAP1 00001539: DUP2 0000153a: SWAP1 0000153b: SUB 0000153c: PUSH1 0x64 0000153e: ADD 0000153f: SWAP1 00001540: REVERT 00001541: JUMPDEST 00001542: DUP5 00001543: PUSH1 0x00 00001545: JUMPDEST 00001546: DUP5 00001547: DUP2 00001548: LT 00001549: ISZERO 0000154a: PUSH2 0x166b 0000154d: JUMPI 0000154e: PUSH1 0x00 00001550: DUP7 00001551: DUP7 00001552: DUP4 00001553: DUP2 00001554: DUP2 00001555: LT 00001556: PUSH2 0x155b 00001559: JUMPI 0000155a: INVALID 0000155b: JUMPDEST 0000155c: SWAP1 0000155d: POP 0000155e: PUSH1 0x20 00001560: MUL 00001561: ADD 00001562: CALLDATALOAD 00001563: PUSH1 0x01 00001565: PUSH1 0x01 00001567: PUSH1 0xa0 00001569: SHL 0000156a: SUB 0000156b: AND 0000156c: SWAP1 0000156d: POP 0000156e: PUSH1 0x00 00001570: DUP6 00001571: DUP6 00001572: DUP5 00001573: DUP2 00001574: DUP2 00001575: LT 00001576: PUSH2 0x157b 00001579: JUMPI 0000157a: INVALID 0000157b: JUMPDEST 0000157c: SWAP1 0000157d: POP 0000157e: PUSH1 0x20 00001580: MUL 00001581: ADD 00001582: CALLDATALOAD 00001583: SWAP1 00001584: POP 00001585: DUP4 00001586: PUSH1 0x01 00001588: PUSH1 0x01 0000158a: PUSH1 0xa0 0000158c: SHL 0000158d: SUB 0000158e: AND 0000158f: PUSH4 0xa9059cbb 00001594: DUP4 00001595: DUP4 00001596: PUSH1 0x40 00001598: MLOAD 00001599: DUP4 0000159a: PUSH4 0xffffffff 0000159f: AND 000015a0: PUSH1 0xe0 000015a2: SHL 000015a3: DUP2 000015a4: MSTORE 000015a5: PUSH1 0x04 000015a7: ADD 000015a8: DUP1 000015a9: DUP4 000015aa: PUSH1 0x01 000015ac: PUSH1 0x01 000015ae: PUSH1 0xa0 000015b0: SHL 000015b1: SUB 000015b2: AND 000015b3: PUSH1 0x01 000015b5: PUSH1 0x01 000015b7: PUSH1 0xa0 000015b9: SHL 000015ba: SUB 000015bb: AND 000015bc: DUP2 000015bd: MSTORE 000015be: PUSH1 0x20 000015c0: ADD 000015c1: DUP3 000015c2: DUP2 000015c3: MSTORE 000015c4: PUSH1 0x20 000015c6: ADD 000015c7: SWAP3 000015c8: POP 000015c9: POP 000015ca: POP 000015cb: PUSH1 0x20 000015cd: PUSH1 0x40 000015cf: MLOAD 000015d0: DUP1 000015d1: DUP4 000015d2: SUB 000015d3: DUP2 000015d4: PUSH1 0x00 000015d6: DUP8 000015d7: DUP1 000015d8: EXTCODESIZE 000015d9: ISZERO 000015da: DUP1 000015db: ISZERO 000015dc: PUSH2 0x15e4 000015df: JUMPI 000015e0: PUSH1 0x00 000015e2: DUP1 000015e3: REVERT 000015e4: JUMPDEST 000015e5: POP 000015e6: GAS 000015e7: CALL 000015e8: ISZERO 000015e9: DUP1 000015ea: ISZERO 000015eb: PUSH2 0x15f8 000015ee: JUMPI 000015ef: RETURNDATASIZE 000015f0: PUSH1 0x00 000015f2: DUP1 000015f3: RETURNDATACOPY 000015f4: RETURNDATASIZE 000015f5: PUSH1 0x00 000015f7: REVERT 000015f8: JUMPDEST 000015f9: POP 000015fa: POP 000015fb: POP 000015fc: POP 000015fd: PUSH1 0x40 000015ff: MLOAD 00001600: RETURNDATASIZE 00001601: PUSH1 0x20 00001603: DUP2 00001604: LT 00001605: ISZERO 00001606: PUSH2 0x160e 00001609: JUMPI 0000160a: PUSH1 0x00 0000160c: DUP1 0000160d: REVERT 0000160e: JUMPDEST 0000160f: POP 00001610: MLOAD 00001611: PUSH2 0x1661 00001614: JUMPI 00001615: PUSH1 0x40 00001617: DUP1 00001618: MLOAD 00001619: PUSH3 0x461bcd 0000161d: PUSH1 0xe5 0000161f: SHL 00001620: DUP2 00001621: MSTORE 00001622: PUSH1 0x20 00001624: PUSH1 0x04 00001626: DUP3 00001627: ADD 00001628: MSTORE 00001629: PUSH1 0x0e 0000162b: PUSH1 0x24 0000162d: DUP3 0000162e: ADD 0000162f: MSTORE 00001630: PUSH32 0x7472616e736665722066616c7365000000000000000000000000000000000000 00001651: PUSH1 0x44 00001653: DUP3 00001654: ADD 00001655: MSTORE 00001656: SWAP1 00001657: MLOAD 00001658: SWAP1 00001659: DUP2 0000165a: SWAP1 0000165b: SUB 0000165c: PUSH1 0x64 0000165e: ADD 0000165f: SWAP1 00001660: REVERT 00001661: JUMPDEST 00001662: POP 00001663: POP 00001664: PUSH1 0x01 00001666: ADD 00001667: PUSH2 0x1545 0000166a: JUMP 0000166b: JUMPDEST 0000166c: POP 0000166d: POP 0000166e: POP 0000166f: POP 00001670: POP 00001671: POP 00001672: POP 00001673: JUMP 00001674: JUMPDEST 00001675: CALLER 00001676: PUSH1 0x00 00001678: SWAP1 00001679: DUP2 0000167a: MSTORE 0000167b: PUSH1 0x03 0000167d: PUSH1 0x20 0000167f: MSTORE 00001680: PUSH1 0x40 00001682: SWAP1 00001683: KECCAK256 00001684: SLOAD 00001685: PUSH1 0xff 00001687: AND 00001688: PUSH2 0x16c7 0000168b: JUMPI 0000168c: PUSH1 0x40 0000168e: DUP1 0000168f: MLOAD 00001690: PUSH3 0x461bcd 00001694: PUSH1 0xe5 00001696: SHL 00001697: DUP2 00001698: MSTORE 00001699: PUSH1 0x20 0000169b: PUSH1 0x04 0000169d: DUP3 0000169e: ADD 0000169f: MSTORE 000016a0: PUSH1 0x0c 000016a2: PUSH1 0x24 000016a4: DUP3 000016a5: ADD 000016a6: MSTORE 000016a7: PUSH12 0x1d5b985d5d1a1bdc9a5e9959 000016b4: PUSH1 0xa2 000016b6: SHL 000016b7: PUSH1 0x44 000016b9: DUP3 000016ba: ADD 000016bb: MSTORE 000016bc: SWAP1 000016bd: MLOAD 000016be: SWAP1 000016bf: DUP2 000016c0: SWAP1 000016c1: SUB 000016c2: PUSH1 0x64 000016c4: ADD 000016c5: SWAP1 000016c6: REVERT 000016c7: JUMPDEST 000016c8: PUSH1 0x40 000016ca: DUP1 000016cb: MLOAD 000016cc: PUSH32 0xdfd1fb7a00000000000000000000000000000000000000000000000000000000 000016ed: DUP2 000016ee: MSTORE 000016ef: PUSH1 0x01 000016f1: PUSH1 0x01 000016f3: PUSH1 0xa0 000016f5: SHL 000016f6: SUB 000016f7: DUP6 000016f8: DUP2 000016f9: AND 000016fa: PUSH1 0x04 000016fc: DUP4 000016fd: ADD 000016fe: SWAP1 000016ff: DUP2 00001700: MSTORE 00001701: PUSH1 0x24 00001703: DUP4 00001704: ADD 00001705: SWAP4 00001706: DUP5 00001707: MSTORE 00001708: PUSH1 0x44 0000170a: DUP4 0000170b: ADD 0000170c: DUP6 0000170d: SWAP1 0000170e: MSTORE 0000170f: SWAP1 00001710: DUP8 00001711: AND 00001712: SWAP3 00001713: PUSH4 0xdfd1fb7a 00001718: SWAP3 00001719: DUP8 0000171a: SWAP3 0000171b: DUP8 0000171c: SWAP3 0000171d: DUP8 0000171e: SWAP3 0000171f: PUSH1 0x64 00001721: ADD 00001722: DUP5 00001723: DUP5 00001724: DUP1 00001725: DUP3 00001726: DUP5 00001727: CALLDATACOPY 00001728: PUSH1 0x00 0000172a: DUP2 0000172b: DUP5 0000172c: ADD 0000172d: MSTORE 0000172e: PUSH1 0x1f 00001730: NOT 00001731: PUSH1 0x1f 00001733: DUP3 00001734: ADD 00001735: AND 00001736: SWAP1 00001737: POP 00001738: DUP1 00001739: DUP4 0000173a: ADD 0000173b: SWAP3 0000173c: POP 0000173d: POP 0000173e: POP 0000173f: SWAP5 00001740: POP 00001741: POP 00001742: POP 00001743: POP 00001744: POP 00001745: PUSH1 0x00 00001747: PUSH1 0x40 00001749: MLOAD 0000174a: DUP1 0000174b: DUP4 0000174c: SUB 0000174d: DUP2 0000174e: PUSH1 0x00 00001750: DUP8 00001751: DUP1 00001752: EXTCODESIZE 00001753: ISZERO 00001754: DUP1 00001755: ISZERO 00001756: PUSH2 0x175e 00001759: JUMPI 0000175a: PUSH1 0x00 0000175c: DUP1 0000175d: REVERT 0000175e: JUMPDEST 0000175f: POP 00001760: GAS 00001761: CALL 00001762: ISZERO 00001763: DUP1 00001764: ISZERO 00001765: PUSH2 0x1772 00001768: JUMPI 00001769: RETURNDATASIZE 0000176a: PUSH1 0x00 0000176c: DUP1 0000176d: RETURNDATACOPY 0000176e: RETURNDATASIZE 0000176f: PUSH1 0x00 00001771: REVERT 00001772: JUMPDEST 00001773: POP 00001774: POP 00001775: POP 00001776: POP 00001777: POP 00001778: POP 00001779: POP 0000177a: POP 0000177b: JUMP 0000177c: JUMPDEST 0000177d: PUSH1 0x00 0000177f: DUP1 00001780: SLOAD 00001781: PUSH1 0x01 00001783: ADD 00001784: SWAP1 00001785: DUP2 00001786: SWAP1 00001787: SSTORE 00001788: PUSH1 0x40 0000178a: DUP1 0000178b: MLOAD 0000178c: PUSH1 0x00 0000178e: NOT 0000178f: NUMBER 00001790: ADD 00001791: BLOCKHASH 00001792: PUSH1 0x20 00001794: DUP1 00001795: DUP4 00001796: ADD 00001797: SWAP2 00001798: SWAP1 00001799: SWAP2 0000179a: MSTORE 0000179b: ADDRESS 0000179c: PUSH1 0x60 0000179e: SHL 0000179f: DUP3 000017a0: DUP5 000017a1: ADD 000017a2: MSTORE 000017a3: PUSH1 0x54 000017a5: DUP1 000017a6: DUP4 000017a7: ADD 000017a8: SWAP5 000017a9: SWAP1 000017aa: SWAP5 000017ab: MSTORE 000017ac: DUP3 000017ad: MLOAD 000017ae: DUP1 000017af: DUP4 000017b0: SUB 000017b1: SWAP1 000017b2: SWAP5 000017b3: ADD 000017b4: DUP5 000017b5: MSTORE 000017b6: PUSH1 0x74 000017b8: SWAP1 000017b9: SWAP2 000017ba: ADD 000017bb: SWAP1 000017bc: SWAP2 000017bd: MSTORE 000017be: DUP2 000017bf: MLOAD 000017c0: SWAP2 000017c1: ADD 000017c2: KECCAK256 000017c3: SWAP1 000017c4: JUMP 000017c5: JUMPDEST 000017c6: PUSH1 0x00 000017c8: PUSH1 0x01 000017ca: PUSH1 0x01 000017cc: PUSH1 0xa0 000017ce: SHL 000017cf: SUB 000017d0: DUP3 000017d1: AND 000017d2: PUSH2 0x1811 000017d5: JUMPI 000017d6: PUSH1 0x40 000017d8: DUP1 000017d9: MLOAD 000017da: PUSH3 0x461bcd 000017de: PUSH1 0xe5 000017e0: SHL 000017e1: DUP2 000017e2: MSTORE 000017e3: PUSH1 0x20 000017e5: PUSH1 0x04 000017e7: DUP3 000017e8: ADD 000017e9: MSTORE 000017ea: PUSH1 0x0c 000017ec: PUSH1 0x24 000017ee: DUP3 000017ef: ADD 000017f0: MSTORE 000017f1: PUSH12 0x7a65726f2061646472657373 000017fe: PUSH1 0xa0 00001800: SHL 00001801: PUSH1 0x44 00001803: DUP3 00001804: ADD 00001805: MSTORE 00001806: SWAP1 00001807: MLOAD 00001808: SWAP1 00001809: DUP2 0000180a: SWAP1 0000180b: SUB 0000180c: PUSH1 0x64 0000180e: ADD 0000180f: SWAP1 00001810: REVERT 00001811: JUMPDEST 00001812: PUSH2 0x1819 00001815: PUSH2 0x177c 00001818: JUMP 00001819: JUMPDEST 0000181a: PUSH1 0x40 0000181c: DUP1 0000181d: MLOAD 0000181e: PUSH1 0x20 00001820: DUP1 00001821: DUP3 00001822: ADD 00001823: DUP4 00001824: MSTORE 00001825: PUSH1 0x01 00001827: PUSH1 0x01 00001829: PUSH1 0xa0 0000182b: SHL 0000182c: SUB 0000182d: SWAP6 0000182e: DUP7 0000182f: AND 00001830: DUP3 00001831: MSTORE 00001832: PUSH1 0x00 00001834: DUP5 00001835: DUP2 00001836: MSTORE 00001837: SWAP7 00001838: SWAP1 00001839: MSTORE 0000183a: SWAP5 0000183b: KECCAK256 0000183c: SWAP4 0000183d: MLOAD 0000183e: DUP5 0000183f: SLOAD 00001840: PUSH1 0x01 00001842: PUSH1 0x01 00001844: PUSH1 0xa0 00001846: SHL 00001847: SUB 00001848: NOT 00001849: AND 0000184a: SWAP4 0000184b: AND 0000184c: SWAP3 0000184d: SWAP1 0000184e: SWAP3 0000184f: OR 00001850: SWAP1 00001851: SWAP3 00001852: SSTORE 00001853: SWAP2 00001854: SWAP1 00001855: POP 00001856: JUMP 00001857: JUMPDEST 00001858: PUSH1 0x00 0000185a: DUP2 0000185b: DUP2 0000185c: MSTORE 0000185d: PUSH1 0x20 0000185f: DUP4 00001860: SWAP1 00001861: MSTORE 00001862: PUSH1 0x40 00001864: DUP2 00001865: KECCAK256 00001866: DUP1 00001867: SLOAD 00001868: PUSH1 0x01 0000186a: PUSH1 0x01 0000186c: PUSH1 0xa0 0000186e: SHL 0000186f: SUB 00001870: AND 00001871: PUSH2 0x18c1 00001874: JUMPI 00001875: PUSH1 0x40 00001877: DUP1 00001878: MLOAD 00001879: PUSH3 0x461bcd 0000187d: PUSH1 0xe5 0000187f: SHL 00001880: DUP2 00001881: MSTORE 00001882: PUSH1 0x20 00001884: PUSH1 0x04 00001886: DUP3 00001887: ADD 00001888: MSTORE 00001889: PUSH1 0x0e 0000188b: PUSH1 0x24 0000188d: DUP3 0000188e: ADD 0000188f: MSTORE 00001890: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000 000018b1: PUSH1 0x44 000018b3: DUP3 000018b4: ADD 000018b5: MSTORE 000018b6: SWAP1 000018b7: MLOAD 000018b8: SWAP1 000018b9: DUP2 000018ba: SWAP1 000018bb: SUB 000018bc: PUSH1 0x64 000018be: ADD 000018bf: SWAP1 000018c0: REVERT 000018c1: JUMPDEST 000018c2: SLOAD 000018c3: PUSH1 0x01 000018c5: PUSH1 0x01 000018c7: PUSH1 0xa0 000018c9: SHL 000018ca: SUB 000018cb: AND 000018cc: SWAP4 000018cd: SWAP3 000018ce: POP 000018cf: POP 000018d0: POP 000018d1: JUMP 000018d2: JUMPDEST 000018d3: PUSH1 0x00 000018d5: DUP2 000018d6: DUP2 000018d7: MSTORE 000018d8: PUSH1 0x02 000018da: PUSH1 0x20 000018dc: MSTORE 000018dd: PUSH1 0x40 000018df: DUP2 000018e0: KECCAK256 000018e1: DUP1 000018e2: SLOAD 000018e3: PUSH1 0x01 000018e5: PUSH1 0x01 000018e7: PUSH1 0xa0 000018e9: SHL 000018ea: SUB 000018eb: AND 000018ec: PUSH2 0x193c 000018ef: JUMPI 000018f0: PUSH1 0x40 000018f2: DUP1 000018f3: MLOAD 000018f4: PUSH3 0x461bcd 000018f8: PUSH1 0xe5 000018fa: SHL 000018fb: DUP2 000018fc: MSTORE 000018fd: PUSH1 0x20 000018ff: PUSH1 0x04 00001901: DUP3 00001902: ADD 00001903: MSTORE 00001904: PUSH1 0x0e 00001906: PUSH1 0x24 00001908: DUP3 00001909: ADD 0000190a: MSTORE 0000190b: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000 0000192c: PUSH1 0x44 0000192e: DUP3 0000192f: ADD 00001930: MSTORE 00001931: SWAP1 00001932: MLOAD 00001933: SWAP1 00001934: DUP2 00001935: SWAP1 00001936: SUB 00001937: PUSH1 0x64 00001939: ADD 0000193a: SWAP1 0000193b: REVERT 0000193c: JUMPDEST 0000193d: SLOAD 0000193e: PUSH1 0x01 00001940: PUSH1 0x01 00001942: PUSH1 0xa0 00001944: SHL 00001945: SUB 00001946: AND 00001947: SWAP3 00001948: SWAP2 00001949: POP 0000194a: POP 0000194b: JUMP 0000194c: INVALID 0000194d: LOG2 0000194e: PUSH6 0x627a7a723158 00001955: KECCAK256 00001956: UNKNOWN(0x0F) 00001957: DUP3 00001958: BASEFEE 00001959: UNKNOWN(0xED) 0000195a: UNKNOWN(0xD1) 0000195b: SWAP7 0000195c: SUB 0000195d: ADDMOD 0000195e: UNKNOWN(0xD4) 0000195f: EXP 00001960: UNKNOWN(0xEC) 00001961: UNKNOWN(0x2F) 00001962: SWAP13 00001963: SGT 00001964: UNKNOWN(0xCB) 00001965: MSTORE 00001966: SWAP13 00001967: UNKNOWN(0xA9) 00001968: UNKNOWN(0xB8) 00001969: UNKNOWN(0xC6) 0000196a: UNKNOWN(0x2A) 0000196b: SWAP8 0000196c: UNKNOWN(0x29) 0000196d: UNKNOWN(0x24) 0000196e: UNKNOWN(0x27) 0000196f: UNKNOWN(0xD1) 00001970: UNKNOWN(0xC4) 00001971: PUSH7 0x6470783564736f 00001979: PUSH13
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591
call_targets:
0x5f65f7b609678448494de4c87521cdf6cef1e932
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5f65f7b609678448494de4c87521cdf6cef1e932"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xefcab173",
"selector": "0xefcab173",
"calldata_variants": [
"0xefcab173",
"0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa558b71",
"selector": "0xfa558b71",
"calldata_variants": [
"0xfa558b71",
"0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd404b4c",
"selector": "0xfd404b4c",
"calldata_variants": [
"0xfd404b4c",
"0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcf6e4488",
"selector": "0xcf6e4488",
"calldata_variants": [
"0xcf6e4488",
"0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdfd1fb7a",
"selector": "0xdfd1fb7a",
"calldata_variants": [
"0xdfd1fb7a",
"0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x96aa7368",
"selector": "0x96aa7368",
"calldata_variants": [
"0x96aa7368",
"0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x98a89897",
"selector": "0x98a89897",
"calldata_variants": [
"0x98a89897",
"0x98a898970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb81fecf",
"selector": "0xcb81fecf",
"calldata_variants": [
"0xcb81fecf",
"0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2847,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3484,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4141,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591
call_targets:
0x5f65f7b609678448494de4c87521cdf6cef1e932
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5f65f7b609678448494de4c87521cdf6cef1e932"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xefcab173",
"selector": "0xefcab173",
"calldata_variants": [
"0xefcab173",
"0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa558b71",
"selector": "0xfa558b71",
"calldata_variants": [
"0xfa558b71",
"0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd404b4c",
"selector": "0xfd404b4c",
"calldata_variants": [
"0xfd404b4c",
"0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcf6e4488",
"selector": "0xcf6e4488",
"calldata_variants": [
"0xcf6e4488",
"0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdfd1fb7a",
"selector": "0xdfd1fb7a",
"calldata_variants": [
"0xdfd1fb7a",
"0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x96aa7368",
"selector": "0x96aa7368",
"calldata_variants": [
"0x96aa7368",
"0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x98a89897",
"selector": "0x98a89897",
"calldata_variants": [
"0x98a89897",
"0x98a898970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb81fecf",
"selector": "0xcb81fecf",
"calldata_variants": [
"0xcb81fecf",
"0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2847,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3484,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4141,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 6
}
|