ec2e7590-4f5d-47d4-aab6-58122eb71633
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 |
|---|---|---|---|---|
| 31394 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 111362 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 111363 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 111364 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 111365 | capability.graph | complete | 1 / 3 | 1 week ago |
| 111366 | detector.run | complete | 1 / 3 | 1 week ago |
| 111367 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1344852] OpenAI Codex v0.77.0 (research preview)
[codex:1344852] --------
[codex:1344852] workdir: /tmp/codex-multi-m3b50o_i
[codex:1344852] model: gpt-5.2-codex
[codex:1344852] provider: openai
[codex:1344852] approval: never
[codex:1344852] sandbox: read-only
[codex:1344852] reasoning effort: xhigh
[codex:1344852] reasoning summaries: auto
[codex:1344852] session id: 019b8124-73df-78c2-98e7-c77a67038b25
[codex:1344852] --------
[codex:1344852] user
[codex:1344852] 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:1344852]
[codex:1344852] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1344852]
[codex:1344852] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1344852] - Gas inefficiency, code quality, or best practices
[codex:1344852] - Theoretical vulnerabilities without a clear extraction path
[codex:1344852] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1344852] - Issues requiring social engineering or off-chain coordination
[codex:1344852]
[codex:1344852] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1344852] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1344852] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1344852] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1344852] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1344852] - External calls before state updates (reentrancy)
[codex:1344852] - SELFDESTRUCT with controllable beneficiary
[codex:1344852] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1344852]
[codex:1344852] For each finding, you MUST explain:
[codex:1344852] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1344852] 2. The concrete sequence of transactions to extract value
[codex:1344852] 3. Why you believe this is exploitable (not just suspicious)
[codex:1344852]
[codex:1344852] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1344852] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1344852]
[codex:1344852] Output MUST be valid JSON matching the provided schema.
[codex:1344852] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1344852] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1344852] mcp startup: no servers
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Reviewing bytecode bundle file**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc ls in /tmp/codex-multi-m3b50o_i succeeded in 5ms:
[codex:1344852] BYTECODE_BUNDLE.txt
[codex:1344852] codex-output-schema.json
[codex:1344852] exec
[codex:1344852] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-m3b50o_i succeeded in 5ms:
[codex:1344852] Runtime bytecode bundle for best-effort auditing.
[codex:1344852] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1344852]
[codex:1344852] FILE: runtime_bytecode.hex
[codex:1344852] 0x6080604052600436106100dc575f3560e01c8063715018a61161007c5780638da5cb5b116100575780638da5cb5b1461025b578063dbe7e3bd14610284578063f2fde38b146102b2578063f3fef3a3146102d1575f80fd5b8063715018a61461020c5780638456cb591461022057806384b0196e14610234575f80fd5b80633644e515116100b75780633644e5151461017d5780633f4ba83a1461019f5780635c975abb146101b35780636c19e783146101ed575f80fd5b806301e33667146100e757806319b2288714610108578063238ac93314610127575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061010661010136600461159e565b6102f0565b005b348015610113575f80fd5b5061010661012236600461161f565b6103d3565b348015610132575f80fd5b506004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610188575f80fd5b50610191610874565b604051908152602001610174565b3480156101aa575f80fd5b50610106610882565b3480156101be575f80fd5b505f5474010000000000000000000000000000000000000000900460ff165b6040519015158152602001610174565b3480156101f8575f80fd5b506101066102073660046116ef565b610894565b348015610217575f80fd5b5061010661098c565b34801561022b575f80fd5b5061010661099d565b34801561023f575f80fd5b506102486109ad565b604051610174979695949392919061175b565b348015610266575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610153565b34801561028f575f80fd5b506101dd61029e36600461181b565b60056020525f908152604090205460ff1681565b3480156102bd575f80fd5b506101066102cc3660046116ef565b610a0b565b3480156102dc575f80fd5b506101066102eb366004611832565b610aa8565b6102f8610b21565b73ffffffffffffffffffffffffffffffffffffffff83166103605760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103c35760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b6103ce838383610b87565b505050565b6103db610cd8565b6103e3610d1b565b8584146104325760405162461bcd60e51b815260206004820152601160248201527f4d69736d617463686564206172726179730000000000000000000000000000006044820152606401610357565b73ffffffffffffffffffffffffffffffffffffffff83166104955760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b5f61057b7f5cffa6fb7ce27d00e223ca6efa7cd0ae989d0a3927c853d97037ab35cdd29a2989896040516020016104cd92919061185a565b6040516020818303038152906040528051906020012088886040516020016104f692919061185a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915273ffffffffffffffffffffffffffffffffffffffff8616608082015260a00160405160208183030381529060405280519060200120610d6f565b90505f6105bd8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610dbc92505050565b60045490915073ffffffffffffffffffffffffffffffffffffffff80831691161461062a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206261746368207369676e61747572650000000000000000006044820152606401610357565b5f805b898110156107b8575f8b8b838181106106485761064861189a565b9050602002013590505f8a8a848181106106645761066461189a565b5f858152600560209081526040909120549102929092013592505060ff16156106fd57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600f908201527f416c726561647920636c61696d65640000000000000000000000000000000000606082015260800190565b60405180910390a250506107b0565b805f0361076b57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600e908201527f496e76616c696420616d6f756e74000000000000000000000000000000000000606082015260800190565b5f82815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107ab81856118c7565b935050505b60010161062d565b505f81116108085760405162461bcd60e51b815260206004820152600f60248201527f4e6f2076616c696420636c61696d7300000000000000000000000000000000006044820152606401610357565b6108128682610de4565b60405181815273ffffffffffffffffffffffffffffffffffffffff87169033907fd1156c83da18470c12fae89ffa811f65a38db2f5b87da6aacd2eecf395d2cceb9060200160405180910390a350505061086b60018055565b50505050505050565b5f61087d610ed0565b905090565b61088a610b21565b610892611006565b565b61089c610b21565b73ffffffffffffffffffffffffffffffffffffffff81166108ff5760405162461bcd60e51b815260206004820152601d60248201527f5369676e65722063616e6e6f74206265207a65726f20616464726573730000006044820152606401610357565b60045460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb905f90a3600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610994610b21565b6108925f611082565b6109a5610b21565b6108926110f6565b5f6060805f805f60606109be611164565b6109c6611191565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610a13610b21565b73ffffffffffffffffffffffffffffffffffffffff8116610a9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610357565b610aa581611082565b50565b610ab0610b21565b73ffffffffffffffffffffffffffffffffffffffff8216610b135760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b610b1d8282610de4565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610357565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691610c1d91906118ff565b5f604051808303815f865af19150503d805f8114610c56576040519150601f19603f3d011682016040523d82523d5f602084013e610c5b565b606091505b5091509150818015610c85575080511580610c85575080806020019051810190610c859190611915565b610cd15760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610357565b5050505050565b600260015403610d14576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b5f5474010000000000000000000000000000000000000000900460ff1615610892576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610db6610d7b610ed0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b5f805f80610dca86866111be565b925092509250610dda8282611207565b5090949350505050565b604080515f8082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051610e1a91906118ff565b5f6040518083038185875af1925050503d805f8114610e54576040519150601f19603f3d011682016040523d82523d5f602084013e610e59565b606091505b50509050806103ce5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201527f4c454400000000000000000000000000000000000000000000000000000000006064820152608401610357565b5f3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a4245f5d3de21db029642f6ee4a31fe513fc5ad816148015610f3557507f000000000000000000000000000000000000000000000000000000000000000146145b15610f5f57507f380b34c5a494a535a5b8ff9962de9f1ab23c2e3ffea11bed416208f015705ff590565b61087d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7d6a0cef142f1dae5db126c788fa78d30d48228eed89afa40425c12d00e4cf37918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b61100e61130a565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110fe610d1b565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110583390565b606061087d7f4d61657374726f436173686261636b000000000000000000000000000000000f600261135d565b606061087d7f3100000000000000000000000000000000000000000000000000000000000001600361135d565b5f805f83516041036111f5576020840151604085015160608601515f1a6111e788828585611406565b955095509550505050611200565b505081515f91506002905b9250925092565b5f82600381111561121a5761121a611934565b03611223575050565b600182600381111561123757611237611934565b0361126e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561128257611282611934565b036112bc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b60038260038111156112d0576112d0611934565b03610b1d576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b5f5474010000000000000000000000000000000000000000900460ff16610892576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060ff831461137757611370836114f9565b9050610db6565b81805461138390611961565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90611961565b80156113fa5780601f106113d1576101008083540402835291602001916113fa565b820191905f5260205f20905b8154815290600101906020018083116113dd57829003601f168201915b50505050509050610db6565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561143f57505f915060039050826114ef565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611490573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166114e657505f9250600191508290506114ef565b92505f91508190505b9450945094915050565b60605f61150583611536565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610db6576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611599575f80fd5b919050565b5f805f606084860312156115b0575f80fd5b6115b984611576565b92506115c760208501611576565b9150604084013590509250925092565b5f8083601f8401126115e7575f80fd5b50813567ffffffffffffffff8111156115fe575f80fd5b6020830191508360208260051b8501011115611618575f80fd5b9250929050565b5f805f805f805f6080888a031215611635575f80fd5b873567ffffffffffffffff8082111561164c575f80fd5b6116588b838c016115d7565b909950975060208a0135915080821115611670575f80fd5b61167c8b838c016115d7565b909750955085915061169060408b01611576565b945060608a01359150808211156116a5575f80fd5b818a0191508a601f8301126116b8575f80fd5b8135818111156116c6575f80fd5b8b60208285010111156116d7575f80fd5b60208301945080935050505092959891949750929550565b5f602082840312156116ff575f80fd5b61170882611576565b9392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261179760e084018a61170f565b83810360408501526117a9818a61170f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611809578351835292840192918401916001016117ed565b50909c9b505050505050505050505050565b5f6020828403121561182b575f80fd5b5035919050565b5f8060408385031215611843575f80fd5b61184c83611576565b946020939093013593505050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611887575f80fd5b8260051b80858437919091019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820180821115610db6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215611925575f80fd5b81518015158114611708575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600181811c9082168061197557607f821691505b6020821081036119ac577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5091905056fea26469706673582212203b0d0809eefbe5375b9ed7eadc1898a503e0466bf2585615ca84debd1e7f0b6164736f6c63430008190033
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Examining contract for vulnerabilities**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, textwrap, sys
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1344852] # extract hex string starting with 0x
[codex:1344852] import re
[codex:1344852] m=re.search(r'0x[0-9a-fA-F]+', code)
[codex:1344852] hexstr=m.group(0)[2:]
[codex:1344852] # disassemble
[codex:1344852] opcodes={
[codex:1344852] 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:1344852] 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:1344852] 0x20:'SHA3',
[codex:1344852] 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:1344852] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1344852] 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:1344852] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1344852] 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:1344852] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1344852] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1344852] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1344852] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if op>=0x60 and op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append(f\"{pc:04x}: {opcodes.get(op, hex(op))} 0x{data.hex()}\")
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append(f\"{pc:04x}: {opcodes.get(op, hex(op))}\")
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] # print a subset around 0x02f0 etc
[codex:1344852] for line in out[0:300]:
[codex:1344852] pass
[codex:1344852]
[codex:1344852] # Print around 0x02f0,0x03d0 etc
[codex:1344852]
[codex:1344852] def print_range(start,end):
[codex:1344852] for line in out:
[codex:1344852] pc=int(line.split(':')[0],16)
[codex:1344852] if start<=pc<=end:
[codex:1344852] print(line)
[codex:1344852]
[codex:1344852] print('---0x02e0-0x0400---')
[codex:1344852] print_range(0x02e0,0x0400)
[codex:1344852] print('---0x0b00-0x0c80---')
[codex:1344852] print_range(0x0b00,0x0c80)
[codex:1344852] print('---0x03d0-0x0800---')
[codex:1344852] print_range(0x03d0,0x0800)
[codex:1344852] print('---0x0d70-0x0e90---')
[codex:1344852] print_range(0x0d70,0x0e90)
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 38ms:
[codex:1344852] ---0x02e0-0x0400---
[codex:1344852] 02e1: PUSH2 0x02eb
[codex:1344852] 02e4: CALLDATASIZE
[codex:1344852] 02e5: PUSH1 0x04
[codex:1344852] 02e7: PUSH2 0x1832
[codex:1344852] 02ea: JUMP
[codex:1344852] 02eb: JUMPDEST
[codex:1344852] 02ec: PUSH2 0x0aa8
[codex:1344852] 02ef: JUMP
[codex:1344852] 02f0: JUMPDEST
[codex:1344852] 02f1: PUSH2 0x02f8
[codex:1344852] 02f4: PUSH2 0x0b21
[codex:1344852] 02f7: JUMP
[codex:1344852] 02f8: JUMPDEST
[codex:1344852] 02f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1344852] 030e: DUP4
[codex:1344852] 030f: AND
[codex:1344852] 0310: PUSH2 0x0360
[codex:1344852] 0313: JUMPI
[codex:1344852] 0314: PUSH1 0x40
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing function access and ETH transfers**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852] # simple disasm
[codex:1344852] opcodes={
[codex:1344852] 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:1344852] 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:1344852] 0x20:'SHA3',
[codex:1344852] 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:1344852] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1344852] 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:1344852] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1344852] 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:1344852] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1344852] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1344852] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1344852] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] # print range
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0a80<=pc<=0x0b60:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 30ms:
[codex:1344852] 0a90: PUSH1 0x64
[codex:1344852] 0a92: DUP3
[codex:1344852] 0a93: ADD
[codex:1344852] 0a94: MSTORE
[codex:1344852] 0a95: PUSH1 0x84
[codex:1344852] 0a97: ADD
[codex:1344852] 0a98: PUSH2 0x0357
[codex:1344852] 0a9b: JUMP
[codex:1344852] 0a9c: JUMPDEST
[codex:1344852] 0a9d: PUSH2 0x0aa5
[codex:1344852] 0aa0: DUP2
[codex:1344852] 0aa1: PUSH2 0x1082
[codex:1344852] 0aa4: JUMP
[codex:1344852] 0aa5: JUMPDEST
[codex:1344852] 0aa6: POP
[codex:1344852] 0aa7: JUMP
[codex:1344852] 0aa8: JUMPDEST
[codex:1344852] 0aa9: PUSH2 0x0ab0
[codex:1344852] 0aac: PUSH2 0x0b21
[codex:1344852] 0aaf: JUMP
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing ETH transfer and owner-only functions**
[codex:1344852]
[codex:1344852] I'm exploring a likely owner-only function that transfers ETH by calling a helper at 0x0de4, which seems to perform a low-level CALL to send ETH to a recipient address with a specific amount. I’m also mapping other external functions to guess their purpose, such as paused states and signer settings, while checking for proper access control. This disassembly leads me to suspect functions like `withdraw(address,uint256)` or `transferETH(address,uint256)` with owner restrictions, so I’m carefully verifying no unguarded owner or signer changes exist.
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0830<=pc<=0x0920:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 36ms:
[codex:1344852] 0830: SWAP1
[codex:1344852] 0831: CALLER
[codex:1344852] 0832: SWAP1
[codex:1344852] 0833: PUSH32 0xd1156c83da18470c12fae89ffa811f65a38db2f5b87da6aacd2eecf395d2cceb
[codex:1344852] 0854: SWAP1
[codex:1344852] 0855: PUSH1 0x20
[codex:1344852] 0857: ADD
[codex:1344852] 0858: PUSH1 0x40
[codex:1344852] 085a: MLOAD
[codex:1344852] 085b: DUP1
[codex:1344852] 085c: SWAP2
[codex:1344852] 085d: SUB
[codex:1344852] 085e: SWAP1
[codex:1344852] 085f: LOG3
[codex:1344852] 0860: POP
[codex:1344852] 0861: POP
[codex:1344852] 0862: POP
[codex:1344852] 0863: PUSH2 0x086b
[codex:1344852] 0866: PUSH1 0x01
[codex:1344852] 0868: DUP1
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing storage slots in disassembly**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x18a0<=pc<=0x1900:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 26ms:
[codex:1344852] 18bc: 0x5f
[codex:1344852] 18bd: MSTORE
[codex:1344852] 18be: PUSH1 0x32
[codex:1344852] 18c0: PUSH1 0x04
[codex:1344852] 18c2: MSTORE
[codex:1344852] 18c3: PUSH1 0x24
[codex:1344852] 18c5: 0x5f
[codex:1344852] 18c6: REVERT
[codex:1344852] 18c7: JUMPDEST
[codex:1344852] 18c8: DUP1
[codex:1344852] 18c9: DUP3
[codex:1344852] 18ca: ADD
[codex:1344852] 18cb: DUP1
[codex:1344852] 18cc: DUP3
[codex:1344852] 18cd: GT
[codex:1344852] 18ce: ISZERO
[codex:1344852] 18cf: PUSH2 0x0db6
[codex:1344852] 18d2: JUMPI
[codex:1344852] 18d3: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
[codex:1344852] 18f4: 0x5f
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing safe math helper and transfer calls**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x07f0<=pc<=0x0875:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 31ms:
[codex:1344852] 07fc: PUSH1 0x44
[codex:1344852] 07fe: DUP3
[codex:1344852] 07ff: ADD
[codex:1344852] 0800: MSTORE
[codex:1344852] 0801: PUSH1 0x64
[codex:1344852] 0803: ADD
[codex:1344852] 0804: PUSH2 0x0357
[codex:1344852] 0807: JUMP
[codex:1344852] 0808: JUMPDEST
[codex:1344852] 0809: PUSH2 0x0812
[codex:1344852] 080c: DUP7
[codex:1344852] 080d: DUP3
[codex:1344852] 080e: PUSH2 0x0de4
[codex:1344852] 0811: JUMP
[codex:1344852] 0812: JUMPDEST
[codex:1344852] 0813: PUSH1 0x40
[codex:1344852] 0815: MLOAD
[codex:1344852] 0816: DUP2
[codex:1344852] 0817: DUP2
[codex:1344852] 0818: MSTORE
[codex:1344852]
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing ETH transfer helper and claim logic**
[codex:1344852]
[codex:1344852] I'm dissecting the function at 0x0de4 and confirming it’s an ETH transfer helper using a raw CALL with value but no calldata, likely for sending ETH in the claim function. I’m also inspecting the stack and mapping usage around the claim process to understand how claimed amounts and flags are stored and validated, checking for access controls and potential vulnerabilities in the signature and claim logic.
[codex:1344852] thinking
[codex:1344852] **Examining claim loop and event emission**
[codex:1344852]
[codex:1344852] I'm simulating stack behavior to clarify how the claim function processes arrays of recipients and amounts, and how it emits events logging claims. It looks like batch claims let a caller submit multiple recipients’ claims, and the contract transfers ETH accordingly while logging `Claimed` events referencing both recipient and caller.
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] # disasm helper
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x1600<=pc<=0x1685:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 26ms:
[codex:1344852] 1601: DUP4
[codex:1344852] 1602: ADD
[codex:1344852] 1603: SWAP2
[codex:1344852] 1604: POP
[codex:1344852] 1605: DUP4
[codex:1344852] 1606: PUSH1 0x20
[codex:1344852] 1608: DUP3
[codex:1344852] 1609: PUSH1 0x05
[codex:1344852] 160b: SHL
[codex:1344852] 160c: DUP6
[codex:1344852] 160d: ADD
[codex:1344852] 160e: ADD
[codex:1344852] 160f: GT
[codex:1344852] 1610: ISZERO
[codex:1344852] 1611: PUSH2 0x1618
[codex:1344852] 1614: JUMPI
[codex:1344852] 1615: 0x5f
[codex:1344852] 1616: DUP1
[codex:1344852] 1617: REVERT
[codex:1344852] 1618: JUMPDEST
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing ABI decoder setup**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x1680<=pc<=0x16f5:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 26ms:
[codex:1344852] 1680: SWAP6
[codex:1344852] 1681: POP
[codex:1344852] 1682: DUP6
[codex:1344852] 1683: SWAP2
[codex:1344852] 1684: POP
[codex:1344852] 1685: PUSH2 0x1690
[codex:1344852] 1688: PUSH1 0x40
[codex:1344852] 168a: DUP12
[codex:1344852] 168b: ADD
[codex:1344852] 168c: PUSH2 0x1576
[codex:1344852] 168f: JUMP
[codex:1344852] 1690: JUMPDEST
[codex:1344852] 1691: SWAP5
[codex:1344852] 1692: POP
[codex:1344852] 1693: PUSH1 0x60
[codex:1344852] 1695: DUP11
[codex:1344852] 1696: ADD
[codex:1344852] 1697: CALLDATALOAD
[codex:1344852] 1698: SWAP2
[codex:1344852] 1699: POP
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing batch claim function and signature verification**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0ec0<=pc<=0x1040:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 26ms:
[codex:1344852] 0ec4: PUSH1 0x64
[codex:1344852] 0ec6: DUP3
[codex:1344852] 0ec7: ADD
[codex:1344852] 0ec8: MSTORE
[codex:1344852] 0ec9: PUSH1 0x84
[codex:1344852] 0ecb: ADD
[codex:1344852] 0ecc: PUSH2 0x0357
[codex:1344852] 0ecf: JUMP
[codex:1344852] 0ed0: JUMPDEST
[codex:1344852] 0ed1: 0x5f
[codex:1344852] 0ed2: ADDRESS
[codex:1344852] 0ed3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1344852] 0ee8: PUSH32 0x000000000000000000000000a4245f5d3de21db029642f6ee4a31fe513fc5ad8
[codex:1344852] 0f09: AND
[codex:1344852] 0f0a: EQ
[codex:1344852] 0f0b: DUP1
[codex:1344852] 0f0c: ISZERO
[codex:1344852] 0f0d: PUSH2 0x0f35
[codex:1344852] 0f10: JUMPI
[codex:1344852] 0f11: POP
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing access control and dispatch functions**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0960<=pc<=0x0a60:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 25ms:
[codex:1344852] 096b: AND
[codex:1344852] 096c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1344852] 0981: SWAP3
[codex:1344852] 0982: SWAP1
[codex:1344852] 0983: SWAP3
[codex:1344852] 0984: AND
[codex:1344852] 0985: SWAP2
[codex:1344852] 0986: SWAP1
[codex:1344852] 0987: SWAP2
[codex:1344852] 0988: OR
[codex:1344852] 0989: SWAP1
[codex:1344852] 098a: SSTORE
[codex:1344852] 098b: JUMP
[codex:1344852] 098c: JUMPDEST
[codex:1344852] 098d: PUSH2 0x0994
[codex:1344852] 0990: PUSH2 0x0b21
[codex:1344852] 0993: JUMP
[codex:1344852] 0994: JUMPDEST
[codex:1344852] 0995: PUSH2 0x0892
[codex:1344852] 0998: 0x5f
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing owner-only functions and reentrancy guards**
[codex:1344852]
[codex:1344852] I'm investigating owner-only functions to confirm no unprotected admin actions, focusing on external calls that could transfer value. The claim function sets state before transfers, which might prevent reentrancy, and I’m examining storage at slot1 and calls around 0x0cd8 and 0x0d1b that suggest a reentrancy guard mechanism. I'll keep unpacking these details to understand protection mechanisms better.
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0cc0<=pc<=0x0d30:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 25ms:
[codex:1344852] 0cc5: PUSH1 0x44
[codex:1344852] 0cc7: DUP3
[codex:1344852] 0cc8: ADD
[codex:1344852] 0cc9: MSTORE
[codex:1344852] 0cca: PUSH1 0x64
[codex:1344852] 0ccc: ADD
[codex:1344852] 0ccd: PUSH2 0x0357
[codex:1344852] 0cd0: JUMP
[codex:1344852] 0cd1: JUMPDEST
[codex:1344852] 0cd2: POP
[codex:1344852] 0cd3: POP
[codex:1344852] 0cd4: POP
[codex:1344852] 0cd5: POP
[codex:1344852] 0cd6: POP
[codex:1344852] 0cd7: JUMP
[codex:1344852] 0cd8: JUMPDEST
[codex:1344852] 0cd9: PUSH1 0x02
[codex:1344852] 0cdb: PUSH1 0x01
[codex:1344852] 0cdd: SLOAD
[codex:1344852] 0cde: SUB
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing reentrancy guard logic**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] # disasm
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x0d1b<=pc<=0x0d70:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 34ms:
[codex:1344852] 0d1b: JUMPDEST
[codex:1344852] 0d1c: 0x5f
[codex:1344852] 0d1d: SLOAD
[codex:1344852] 0d1e: PUSH21 0x010000000000000000000000000000000000000000
[codex:1344852] 0d34: SWAP1
[codex:1344852] 0d35: DIV
[codex:1344852] 0d36: PUSH1 0xff
[codex:1344852] 0d38: AND
[codex:1344852] 0d39: ISZERO
[codex:1344852] 0d3a: PUSH2 0x0892
[codex:1344852] 0d3d: JUMPI
[codex:1344852] 0d3e: PUSH1 0x40
[codex:1344852] 0d40: MLOAD
[codex:1344852] 0d41: PUSH32 0xd93c066500000000000000000000000000000000000000000000000000000000
[codex:1344852] 0d62: DUP2
[codex:1344852] 0d63: MSTORE
[codex:1344852] 0d64: PUSH1 0x04
[codex:1344852] 0d66: ADD
[codex:1344852] 0d67: PUSH1 0x40
[codex:1344852] 0d69: MLOAD
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing reentrancy and signature checks**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] # disasm
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x11a0<=pc<=0x1250:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 28ms:
[codex:1344852] 11b8: PUSH1 0x03
[codex:1344852] 11ba: PUSH2 0x135d
[codex:1344852] 11bd: JUMP
[codex:1344852] 11be: JUMPDEST
[codex:1344852] 11bf: 0x5f
[codex:1344852] 11c0: DUP1
[codex:1344852] 11c1: 0x5f
[codex:1344852] 11c2: DUP4
[codex:1344852] 11c3: MLOAD
[codex:1344852] 11c4: PUSH1 0x41
[codex:1344852] 11c6: SUB
[codex:1344852] 11c7: PUSH2 0x11f5
[codex:1344852] 11ca: JUMPI
[codex:1344852] 11cb: PUSH1 0x20
[codex:1344852] 11cd: DUP5
[codex:1344852] 11ce: ADD
[codex:1344852] 11cf: MLOAD
[codex:1344852] 11d0: PUSH1 0x40
[codex:1344852] 11d2: DUP6
[codex:1344852] 11d3: ADD
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Analyzing signature parsing constants**
[codex:1344852] exec
[codex:1344852] /bin/bash -lc "python - <<'PY'
[codex:1344852] import binascii, re
[codex:1344852] code=open('/tmp/codex-multi-m3b50o_i/BYTECODE_BUNDLE.txt').read()
[codex:1344852] hexstr=re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:1344852] b=binascii.unhexlify(hexstr)
[codex:1344852]
[codex:1344852] # disasm
[codex:1344852] opcodes={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',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',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1344852]
[codex:1344852] pc=0
[codex:1344852] out=[]
[codex:1344852] while pc<len(b):
[codex:1344852] op=b[pc]
[codex:1344852] if 0x60<=op<=0x7f:
[codex:1344852] n=op-0x5f
[codex:1344852] data=b[pc+1:pc+1+n]
[codex:1344852] out.append((pc,f\"{opcodes.get(op,hex(op))} 0x{data.hex()}\"))
[codex:1344852] pc+=1+n
[codex:1344852] else:
[codex:1344852] out.append((pc,opcodes.get(op,hex(op))))
[codex:1344852] pc+=1
[codex:1344852]
[codex:1344852] for pc,ins in out:
[codex:1344852] if 0x13f0<=pc<=0x1455:
[codex:1344852] print(f\"{pc:04x}: {ins}\")
[codex:1344852] PY" in /tmp/codex-multi-m3b50o_i succeeded in 30ms:
[codex:1344852] 13f0: JUMPI
[codex:1344852] 13f1: DUP3
[codex:1344852] 13f2: SWAP1
[codex:1344852] 13f3: SUB
[codex:1344852] 13f4: PUSH1 0x1f
[codex:1344852] 13f6: AND
[codex:1344852] 13f7: DUP3
[codex:1344852] 13f8: ADD
[codex:1344852] 13f9: SWAP2
[codex:1344852] 13fa: JUMPDEST
[codex:1344852] 13fb: POP
[codex:1344852] 13fc: POP
[codex:1344852] 13fd: POP
[codex:1344852] 13fe: POP
[codex:1344852] 13ff: POP
[codex:1344852] 1400: SWAP1
[codex:1344852] 1401: POP
[codex:1344852] 1402: PUSH2 0x0db6
[codex:1344852] 1405: JUMP
[codex:1344852] 1406: JUMPDEST
[codex:1344852]
[codex:1344852] thinking
[codex:1344852] **Confirming no exploitable paths**
[codex:1344852] codex
[codex:1344852] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided runtime bytecode alone.","findings":[]}
[codex:1344852] tokens used
[codex:1344852] 89,849
[codex:1344852] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided runtime bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2026-01-03T00:07:12.432874+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path identified from the provided runtime bytecode alone.",
"raw_final": {
"summary": "No concrete, exploitable profit path identified from the provided runtime bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00dc 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x715018a6 00000018: GT 00000019: PUSH2 0x007c 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0x8da5cb5b 00000023: GT 00000024: PUSH2 0x0057 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0x8da5cb5b 0000002e: EQ 0000002f: PUSH2 0x025b 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xdbe7e3bd 00000039: EQ 0000003a: PUSH2 0x0284 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xf2fde38b 00000044: EQ 00000045: PUSH2 0x02b2 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xf3fef3a3 0000004f: EQ 00000050: PUSH2 0x02d1 00000053: JUMPI 00000054: PUSH0 00000055: DUP1 00000056: REVERT 00000057: JUMPDEST 00000058: DUP1 00000059: PUSH4 0x715018a6 0000005e: EQ 0000005f: PUSH2 0x020c 00000062: JUMPI 00000063: DUP1 00000064: PUSH4 0x8456cb59 00000069: EQ 0000006a: PUSH2 0x0220 0000006d: JUMPI 0000006e: DUP1 0000006f: PUSH4 0x84b0196e 00000074: EQ 00000075: PUSH2 0x0234 00000078: JUMPI 00000079: PUSH0 0000007a: DUP1 0000007b: REVERT 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x3644e515 00000083: GT 00000084: PUSH2 0x00b7 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x3644e515 0000008e: EQ 0000008f: PUSH2 0x017d 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x3f4ba83a 00000099: EQ 0000009a: PUSH2 0x019f 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x5c975abb 000000a4: EQ 000000a5: PUSH2 0x01b3 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x6c19e783 000000af: EQ 000000b0: PUSH2 0x01ed 000000b3: JUMPI 000000b4: PUSH0 000000b5: DUP1 000000b6: REVERT 000000b7: JUMPDEST 000000b8: DUP1 000000b9: PUSH4 0x01e33667 000000be: EQ 000000bf: PUSH2 0x00e7 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x19b22887 000000c9: EQ 000000ca: PUSH2 0x0108 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x238ac933 000000d4: EQ 000000d5: PUSH2 0x0127 000000d8: JUMPI 000000d9: PUSH0 000000da: DUP1 000000db: REVERT 000000dc: JUMPDEST 000000dd: CALLDATASIZE 000000de: PUSH2 0x00e3 000000e1: JUMPI 000000e2: STOP 000000e3: JUMPDEST 000000e4: PUSH0 000000e5: DUP1 000000e6: REVERT 000000e7: JUMPDEST 000000e8: CALLVALUE 000000e9: DUP1 000000ea: ISZERO 000000eb: PUSH2 0x00f2 000000ee: JUMPI 000000ef: PUSH0 000000f0: DUP1 000000f1: REVERT 000000f2: JUMPDEST 000000f3: POP 000000f4: PUSH2 0x0106 000000f7: PUSH2 0x0101 000000fa: CALLDATASIZE 000000fb: PUSH1 0x04 000000fd: PUSH2 0x159e 00000100: JUMP 00000101: JUMPDEST 00000102: PUSH2 0x02f0 00000105: JUMP 00000106: JUMPDEST 00000107: STOP 00000108: JUMPDEST 00000109: CALLVALUE 0000010a: DUP1 0000010b: ISZERO 0000010c: PUSH2 0x0113 0000010f: JUMPI 00000110: PUSH0 00000111: DUP1 00000112: REVERT 00000113: JUMPDEST 00000114: POP 00000115: PUSH2 0x0106 00000118: PUSH2 0x0122 0000011b: CALLDATASIZE 0000011c: PUSH1 0x04 0000011e: PUSH2 0x161f 00000121: JUMP 00000122: JUMPDEST 00000123: PUSH2 0x03d3 00000126: JUMP 00000127: JUMPDEST 00000128: CALLVALUE 00000129: DUP1 0000012a: ISZERO 0000012b: PUSH2 0x0132 0000012e: JUMPI 0000012f: PUSH0 00000130: DUP1 00000131: REVERT 00000132: JUMPDEST 00000133: POP 00000134: PUSH1 0x04 00000136: SLOAD 00000137: PUSH2 0x0153 0000013a: SWAP1 0000013b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000150: AND 00000151: DUP2 00000152: JUMP 00000153: JUMPDEST 00000154: PUSH1 0x40 00000156: MLOAD 00000157: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000016c: SWAP1 0000016d: SWAP2 0000016e: AND 0000016f: DUP2 00000170: MSTORE 00000171: PUSH1 0x20 00000173: ADD 00000174: JUMPDEST 00000175: PUSH1 0x40 00000177: MLOAD 00000178: DUP1 00000179: SWAP2 0000017a: SUB 0000017b: SWAP1 0000017c: RETURN 0000017d: JUMPDEST 0000017e: CALLVALUE 0000017f: DUP1 00000180: ISZERO 00000181: PUSH2 0x0188 00000184: JUMPI 00000185: PUSH0 00000186: DUP1 00000187: REVERT 00000188: JUMPDEST 00000189: POP 0000018a: PUSH2 0x0191 0000018d: PUSH2 0x0874 00000190: JUMP 00000191: JUMPDEST 00000192: PUSH1 0x40 00000194: MLOAD 00000195: SWAP1 00000196: DUP2 00000197: MSTORE 00000198: PUSH1 0x20 0000019a: ADD 0000019b: PUSH2 0x0174 0000019e: JUMP 0000019f: JUMPDEST 000001a0: CALLVALUE 000001a1: DUP1 000001a2: ISZERO 000001a3: PUSH2 0x01aa 000001a6: JUMPI 000001a7: PUSH0 000001a8: DUP1 000001a9: REVERT 000001aa: JUMPDEST 000001ab: POP 000001ac: PUSH2 0x0106 000001af: PUSH2 0x0882 000001b2: JUMP 000001b3: JUMPDEST 000001b4: CALLVALUE 000001b5: DUP1 000001b6: ISZERO 000001b7: PUSH2 0x01be 000001ba: JUMPI 000001bb: PUSH0 000001bc: DUP1 000001bd: REVERT 000001be: JUMPDEST 000001bf: POP 000001c0: PUSH0 000001c1: SLOAD 000001c2: PUSH21 0x010000000000000000000000000000000000000000 000001d8: SWAP1 000001d9: DIV 000001da: PUSH1 0xff 000001dc: AND 000001dd: JUMPDEST 000001de: PUSH1 0x40 000001e0: MLOAD 000001e1: SWAP1 000001e2: ISZERO 000001e3: ISZERO 000001e4: DUP2 000001e5: MSTORE 000001e6: PUSH1 0x20 000001e8: ADD 000001e9: PUSH2 0x0174 000001ec: JUMP 000001ed: JUMPDEST 000001ee: CALLVALUE 000001ef: DUP1 000001f0: ISZERO 000001f1: PUSH2 0x01f8 000001f4: JUMPI 000001f5: PUSH0 000001f6: DUP1 000001f7: REVERT 000001f8: JUMPDEST 000001f9: POP 000001fa: PUSH2 0x0106 000001fd: PUSH2 0x0207 00000200: CALLDATASIZE 00000201: PUSH1 0x04 00000203: PUSH2 0x16ef 00000206: JUMP 00000207: JUMPDEST 00000208: PUSH2 0x0894 0000020b: JUMP 0000020c: JUMPDEST 0000020d: CALLVALUE 0000020e: DUP1 0000020f: ISZERO 00000210: PUSH2 0x0217 00000213: JUMPI 00000214: PUSH0 00000215: DUP1 00000216: REVERT 00000217: JUMPDEST 00000218: POP 00000219: PUSH2 0x0106 0000021c: PUSH2 0x098c 0000021f: JUMP 00000220: JUMPDEST 00000221: CALLVALUE 00000222: DUP1 00000223: ISZERO 00000224: PUSH2 0x022b 00000227: JUMPI 00000228: PUSH0 00000229: DUP1 0000022a: REVERT 0000022b: JUMPDEST 0000022c: POP 0000022d: PUSH2 0x0106 00000230: PUSH2 0x099d 00000233: JUMP 00000234: JUMPDEST 00000235: CALLVALUE 00000236: DUP1 00000237: ISZERO 00000238: PUSH2 0x023f 0000023b: JUMPI 0000023c: PUSH0 0000023d: DUP1 0000023e: REVERT 0000023f: JUMPDEST 00000240: POP 00000241: PUSH2 0x0248 00000244: PUSH2 0x09ad 00000247: JUMP 00000248: JUMPDEST 00000249: PUSH1 0x40 0000024b: MLOAD 0000024c: PUSH2 0x0174 0000024f: SWAP8 00000250: SWAP7 00000251: SWAP6 00000252: SWAP5 00000253: SWAP4 00000254: SWAP3 00000255: SWAP2 00000256: SWAP1 00000257: PUSH2 0x175b 0000025a: JUMP 0000025b: JUMPDEST 0000025c: CALLVALUE 0000025d: DUP1 0000025e: ISZERO 0000025f: PUSH2 0x0266 00000262: JUMPI 00000263: PUSH0 00000264: DUP1 00000265: REVERT 00000266: JUMPDEST 00000267: POP 00000268: PUSH0 00000269: SLOAD 0000026a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000027f: AND 00000280: PUSH2 0x0153 00000283: JUMP 00000284: JUMPDEST 00000285: CALLVALUE 00000286: DUP1 00000287: ISZERO 00000288: PUSH2 0x028f 0000028b: JUMPI 0000028c: PUSH0 0000028d: DUP1 0000028e: REVERT 0000028f: JUMPDEST 00000290: POP 00000291: PUSH2 0x01dd 00000294: PUSH2 0x029e 00000297: CALLDATASIZE 00000298: PUSH1 0x04 0000029a: PUSH2 0x181b 0000029d: JUMP 0000029e: JUMPDEST 0000029f: PUSH1 0x05 000002a1: PUSH1 0x20 000002a3: MSTORE 000002a4: PUSH0 000002a5: SWAP1 000002a6: DUP2 000002a7: MSTORE 000002a8: PUSH1 0x40 000002aa: SWAP1 000002ab: KECCAK256 000002ac: SLOAD 000002ad: PUSH1 0xff 000002af: AND 000002b0: DUP2 000002b1: JUMP 000002b2: JUMPDEST 000002b3: CALLVALUE 000002b4: DUP1 000002b5: ISZERO 000002b6: PUSH2 0x02bd 000002b9: JUMPI 000002ba: PUSH0 000002bb: DUP1 000002bc: REVERT 000002bd: JUMPDEST 000002be: POP 000002bf: PUSH2 0x0106 000002c2: PUSH2 0x02cc 000002c5: CALLDATASIZE 000002c6: PUSH1 0x04 000002c8: PUSH2 0x16ef 000002cb: JUMP 000002cc: JUMPDEST 000002cd: PUSH2 0x0a0b 000002d0: JUMP 000002d1: JUMPDEST 000002d2: CALLVALUE 000002d3: DUP1 000002d4: ISZERO 000002d5: PUSH2 0x02dc 000002d8: JUMPI 000002d9: PUSH0 000002da: DUP1 000002db: REVERT 000002dc: JUMPDEST 000002dd: POP 000002de: PUSH2 0x0106 000002e1: PUSH2 0x02eb 000002e4: CALLDATASIZE 000002e5: PUSH1 0x04 000002e7: PUSH2 0x1832 000002ea: JUMP 000002eb: JUMPDEST 000002ec: PUSH2 0x0aa8 000002ef: JUMP 000002f0: JUMPDEST 000002f1: PUSH2 0x02f8 000002f4: PUSH2 0x0b21 000002f7: JUMP 000002f8: JUMPDEST 000002f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000030e: DUP4 0000030f: AND 00000310: PUSH2 0x0360 00000313: JUMPI 00000314: PUSH1 0x40 00000316: MLOAD 00000317: PUSH3 0x461bcd 0000031b: PUSH1 0xe5 0000031d: SHL 0000031e: DUP2 0000031f: MSTORE 00000320: PUSH1 0x20 00000322: PUSH1 0x04 00000324: DUP3 00000325: ADD 00000326: MSTORE 00000327: PUSH1 0x0d 00000329: PUSH1 0x24 0000032b: DUP3 0000032c: ADD 0000032d: MSTORE 0000032e: PUSH32 0x496e76616c696420746f6b656e00000000000000000000000000000000000000 0000034f: PUSH1 0x44 00000351: DUP3 00000352: ADD 00000353: MSTORE 00000354: PUSH1 0x64 00000356: ADD 00000357: JUMPDEST 00000358: PUSH1 0x40 0000035a: MLOAD 0000035b: DUP1 0000035c: SWAP2 0000035d: SUB 0000035e: SWAP1 0000035f: REVERT 00000360: JUMPDEST 00000361: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000376: DUP3 00000377: AND 00000378: PUSH2 0x03c3 0000037b: JUMPI 0000037c: PUSH1 0x40 0000037e: MLOAD 0000037f: PUSH3 0x461bcd 00000383: PUSH1 0xe5 00000385: SHL 00000386: DUP2 00000387: MSTORE 00000388: PUSH1 0x20 0000038a: PUSH1 0x04 0000038c: DUP3 0000038d: ADD 0000038e: MSTORE 0000038f: PUSH1 0x11 00000391: PUSH1 0x24 00000393: DUP3 00000394: ADD 00000395: MSTORE 00000396: PUSH32 0x496e76616c696420726563697069656e74000000000000000000000000000000 000003b7: PUSH1 0x44 000003b9: DUP3 000003ba: ADD 000003bb: MSTORE 000003bc: PUSH1 0x64 000003be: ADD 000003bf: PUSH2 0x0357 000003c2: JUMP 000003c3: JUMPDEST 000003c4: PUSH2 0x03ce 000003c7: DUP4 000003c8: DUP4 000003c9: DUP4 000003ca: PUSH2 0x0b87 000003cd: JUMP 000003ce: JUMPDEST 000003cf: POP 000003d0: POP 000003d1: POP 000003d2: JUMP 000003d3: JUMPDEST 000003d4: PUSH2 0x03db 000003d7: PUSH2 0x0cd8 000003da: JUMP 000003db: JUMPDEST 000003dc: PUSH2 0x03e3 000003df: PUSH2 0x0d1b 000003e2: JUMP 000003e3: JUMPDEST 000003e4: DUP6 000003e5: DUP5 000003e6: EQ 000003e7: PUSH2 0x0432 000003ea: JUMPI 000003eb: PUSH1 0x40 000003ed: MLOAD 000003ee: PUSH3 0x461bcd 000003f2: PUSH1 0xe5 000003f4: SHL 000003f5: DUP2 000003f6: MSTORE 000003f7: PUSH1 0x20 000003f9: PUSH1 0x04 000003fb: DUP3 000003fc: ADD 000003fd: MSTORE 000003fe: PUSH1 0x11 00000400: PUSH1 0x24 00000402: DUP3 00000403: ADD 00000404: MSTORE 00000405: PUSH32 0x4d69736d61746368656420617272617973000000000000000000000000000000 00000426: PUSH1 0x44 00000428: DUP3 00000429: ADD 0000042a: MSTORE 0000042b: PUSH1 0x64 0000042d: ADD 0000042e: PUSH2 0x0357 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000448: DUP4 00000449: AND 0000044a: PUSH2 0x0495 0000044d: JUMPI 0000044e: PUSH1 0x40 00000450: MLOAD 00000451: PUSH3 0x461bcd 00000455: PUSH1 0xe5 00000457: SHL 00000458: DUP2 00000459: MSTORE 0000045a: PUSH1 0x20 0000045c: PUSH1 0x04 0000045e: DUP3 0000045f: ADD 00000460: MSTORE 00000461: PUSH1 0x11 00000463: PUSH1 0x24 00000465: DUP3 00000466: ADD 00000467: MSTORE 00000468: PUSH32 0x496e76616c696420726563697069656e74000000000000000000000000000000 00000489: PUSH1 0x44 0000048b: DUP3 0000048c: ADD 0000048d: MSTORE 0000048e: PUSH1 0x64 00000490: ADD 00000491: PUSH2 0x0357 00000494: JUMP 00000495: JUMPDEST 00000496: PUSH0 00000497: PUSH2 0x057b 0000049a: PUSH32 0x5cffa6fb7ce27d00e223ca6efa7cd0ae989d0a3927c853d97037ab35cdd29a29 000004bb: DUP10 000004bc: DUP10 000004bd: PUSH1 0x40 000004bf: MLOAD 000004c0: PUSH1 0x20 000004c2: ADD 000004c3: PUSH2 0x04cd 000004c6: SWAP3 000004c7: SWAP2 000004c8: SWAP1 000004c9: PUSH2 0x185a 000004cc: JUMP 000004cd: JUMPDEST 000004ce: PUSH1 0x40 000004d0: MLOAD 000004d1: PUSH1 0x20 000004d3: DUP2 000004d4: DUP4 000004d5: SUB 000004d6: SUB 000004d7: DUP2 000004d8: MSTORE 000004d9: SWAP1 000004da: PUSH1 0x40 000004dc: MSTORE 000004dd: DUP1 000004de: MLOAD 000004df: SWAP1 000004e0: PUSH1 0x20 000004e2: ADD 000004e3: KECCAK256 000004e4: DUP9 000004e5: DUP9 000004e6: PUSH1 0x40 000004e8: MLOAD 000004e9: PUSH1 0x20 000004eb: ADD 000004ec: PUSH2 0x04f6 000004ef: SWAP3 000004f0: SWAP2 000004f1: SWAP1 000004f2: PUSH2 0x185a 000004f5: JUMP 000004f6: JUMPDEST 000004f7: PUSH1 0x40 000004f9: DUP1 000004fa: MLOAD 000004fb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000051c: DUP2 0000051d: DUP5 0000051e: SUB 0000051f: ADD 00000520: DUP2 00000521: MSTORE 00000522: DUP3 00000523: DUP3 00000524: MSTORE 00000525: DUP1 00000526: MLOAD 00000527: PUSH1 0x20 00000529: SWAP2 0000052a: DUP3 0000052b: ADD 0000052c: KECCAK256 0000052d: SWAP1 0000052e: DUP4 0000052f: ADD 00000530: SWAP5 00000531: SWAP1 00000532: SWAP5 00000533: MSTORE 00000534: DUP2 00000535: ADD 00000536: SWAP2 00000537: SWAP1 00000538: SWAP2 00000539: MSTORE 0000053a: PUSH1 0x60 0000053c: DUP2 0000053d: ADD 0000053e: SWAP2 0000053f: SWAP1 00000540: SWAP2 00000541: MSTORE 00000542: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000557: DUP7 00000558: AND 00000559: PUSH1 0x80 0000055b: DUP3 0000055c: ADD 0000055d: MSTORE 0000055e: PUSH1 0xa0 00000560: ADD 00000561: PUSH1 0x40 00000563: MLOAD 00000564: PUSH1 0x20 00000566: DUP2 00000567: DUP4 00000568: SUB 00000569: SUB 0000056a: DUP2 0000056b: MSTORE 0000056c: SWAP1 0000056d: PUSH1 0x40 0000056f: MSTORE 00000570: DUP1 00000571: MLOAD 00000572: SWAP1 00000573: PUSH1 0x20 00000575: ADD 00000576: KECCAK256 00000577: PUSH2 0x0d6f 0000057a: JUMP 0000057b: JUMPDEST 0000057c: SWAP1 0000057d: POP 0000057e: PUSH0 0000057f: PUSH2 0x05bd 00000582: DUP3 00000583: DUP6 00000584: DUP6 00000585: DUP1 00000586: DUP1 00000587: PUSH1 0x1f 00000589: ADD 0000058a: PUSH1 0x20 0000058c: DUP1 0000058d: SWAP2 0000058e: DIV 0000058f: MUL 00000590: PUSH1 0x20 00000592: ADD 00000593: PUSH1 0x40 00000595: MLOAD 00000596: SWAP1 00000597: DUP2 00000598: ADD 00000599: PUSH1 0x40 0000059b: MSTORE 0000059c: DUP1 0000059d: SWAP4 0000059e: SWAP3 0000059f: SWAP2 000005a0: SWAP1 000005a1: DUP2 000005a2: DUP2 000005a3: MSTORE 000005a4: PUSH1 0x20 000005a6: ADD 000005a7: DUP4 000005a8: DUP4 000005a9: DUP1 000005aa: DUP3 000005ab: DUP5 000005ac: CALLDATACOPY 000005ad: PUSH0 000005ae: SWAP3 000005af: ADD 000005b0: SWAP2 000005b1: SWAP1 000005b2: SWAP2 000005b3: MSTORE 000005b4: POP 000005b5: PUSH2 0x0dbc 000005b8: SWAP3 000005b9: POP 000005ba: POP 000005bb: POP 000005bc: JUMP 000005bd: JUMPDEST 000005be: PUSH1 0x04 000005c0: SLOAD 000005c1: SWAP1 000005c2: SWAP2 000005c3: POP 000005c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005d9: DUP1 000005da: DUP4 000005db: AND 000005dc: SWAP2 000005dd: AND 000005de: EQ 000005df: PUSH2 0x062a 000005e2: JUMPI 000005e3: PUSH1 0x40 000005e5: MLOAD 000005e6: PUSH3 0x461bcd 000005ea: PUSH1 0xe5 000005ec: SHL 000005ed: DUP2 000005ee: MSTORE 000005ef: PUSH1 0x20 000005f1: PUSH1 0x04 000005f3: DUP3 000005f4: ADD 000005f5: MSTORE 000005f6: PUSH1 0x17 000005f8: PUSH1 0x24 000005fa: DUP3 000005fb: ADD 000005fc: MSTORE 000005fd: PUSH32 0x496e76616c6964206261746368207369676e6174757265000000000000000000 0000061e: PUSH1 0x44 00000620: DUP3 00000621: ADD 00000622: MSTORE 00000623: PUSH1 0x64 00000625: ADD 00000626: PUSH2 0x0357 00000629: JUMP 0000062a: JUMPDEST 0000062b: PUSH0 0000062c: DUP1 0000062d: JUMPDEST 0000062e: DUP10 0000062f: DUP2 00000630: LT 00000631: ISZERO 00000632: PUSH2 0x07b8 00000635: JUMPI 00000636: PUSH0 00000637: DUP12 00000638: DUP12 00000639: DUP4 0000063a: DUP2 0000063b: DUP2 0000063c: LT 0000063d: PUSH2 0x0648 00000640: JUMPI 00000641: PUSH2 0x0648 00000644: PUSH2 0x189a 00000647: JUMP 00000648: JUMPDEST 00000649: SWAP1 0000064a: POP 0000064b: PUSH1 0x20 0000064d: MUL 0000064e: ADD 0000064f: CALLDATALOAD 00000650: SWAP1 00000651: POP 00000652: PUSH0 00000653: DUP11 00000654: DUP11 00000655: DUP5 00000656: DUP2 00000657: DUP2 00000658: LT 00000659: PUSH2 0x0664 0000065c: JUMPI 0000065d: PUSH2 0x0664 00000660: PUSH2 0x189a 00000663: JUMP 00000664: JUMPDEST 00000665: PUSH0 00000666: DUP6 00000667: DUP2 00000668: MSTORE 00000669: PUSH1 0x05 0000066b: PUSH1 0x20 0000066d: SWAP1 0000066e: DUP2 0000066f: MSTORE 00000670: PUSH1 0x40 00000672: SWAP1 00000673: SWAP2 00000674: KECCAK256 00000675: SLOAD 00000676: SWAP2 00000677: MUL 00000678: SWAP3 00000679: SWAP1 0000067a: SWAP3 0000067b: ADD 0000067c: CALLDATALOAD 0000067d: SWAP3 0000067e: POP 0000067f: POP 00000680: PUSH1 0xff 00000682: AND 00000683: ISZERO 00000684: PUSH2 0x06fd 00000687: JUMPI 00000688: DUP2 00000689: PUSH32 0xa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a 000006aa: DUP3 000006ab: PUSH1 0x40 000006ad: MLOAD 000006ae: PUSH2 0x06ee 000006b1: SWAP2 000006b2: DUP2 000006b3: MSTORE 000006b4: PUSH1 0x40 000006b6: PUSH1 0x20 000006b8: DUP3 000006b9: ADD 000006ba: DUP2 000006bb: SWAP1 000006bc: MSTORE 000006bd: PUSH1 0x0f 000006bf: SWAP1 000006c0: DUP3 000006c1: ADD 000006c2: MSTORE 000006c3: PUSH32 0x416c726561647920636c61696d65640000000000000000000000000000000000 000006e4: PUSH1 0x60 000006e6: DUP3 000006e7: ADD 000006e8: MSTORE 000006e9: PUSH1 0x80 000006eb: ADD 000006ec: SWAP1 000006ed: JUMP 000006ee: JUMPDEST 000006ef: PUSH1 0x40 000006f1: MLOAD 000006f2: DUP1 000006f3: SWAP2 000006f4: SUB 000006f5: SWAP1 000006f6: LOG2 000006f7: POP 000006f8: POP 000006f9: PUSH2 0x07b0 000006fc: JUMP 000006fd: JUMPDEST 000006fe: DUP1 000006ff: PUSH0 00000700: SUB 00000701: PUSH2 0x076b 00000704: JUMPI 00000705: DUP2 00000706: PUSH32 0xa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a 00000727: DUP3 00000728: PUSH1 0x40 0000072a: MLOAD 0000072b: PUSH2 0x06ee 0000072e: SWAP2 0000072f: DUP2 00000730: MSTORE 00000731: PUSH1 0x40 00000733: PUSH1 0x20 00000735: DUP3 00000736: ADD 00000737: DUP2 00000738: SWAP1 00000739: MSTORE 0000073a: PUSH1 0x0e 0000073c: SWAP1 0000073d: DUP3 0000073e: ADD 0000073f: MSTORE 00000740: PUSH32 0x496e76616c696420616d6f756e74000000000000000000000000000000000000 00000761: PUSH1 0x60 00000763: DUP3 00000764: ADD 00000765: MSTORE 00000766: PUSH1 0x80 00000768: ADD 00000769: SWAP1 0000076a: JUMP 0000076b: JUMPDEST 0000076c: PUSH0 0000076d: DUP3 0000076e: DUP2 0000076f: MSTORE 00000770: PUSH1 0x05 00000772: PUSH1 0x20 00000774: MSTORE 00000775: PUSH1 0x40 00000777: SWAP1 00000778: KECCAK256 00000779: DUP1 0000077a: SLOAD 0000077b: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000079c: AND 0000079d: PUSH1 0x01 0000079f: OR 000007a0: SWAP1 000007a1: SSTORE 000007a2: PUSH2 0x07ab 000007a5: DUP2 000007a6: DUP6 000007a7: PUSH2 0x18c7 000007aa: JUMP 000007ab: JUMPDEST 000007ac: SWAP4 000007ad: POP 000007ae: POP 000007af: POP 000007b0: JUMPDEST 000007b1: PUSH1 0x01 000007b3: ADD 000007b4: PUSH2 0x062d 000007b7: JUMP 000007b8: JUMPDEST 000007b9: POP 000007ba: PUSH0 000007bb: DUP2 000007bc: GT 000007bd: PUSH2 0x0808 000007c0: JUMPI 000007c1: PUSH1 0x40 000007c3: MLOAD 000007c4: PUSH3 0x461bcd 000007c8: PUSH1 0xe5 000007ca: SHL 000007cb: DUP2 000007cc: MSTORE 000007cd: PUSH1 0x20 000007cf: PUSH1 0x04 000007d1: DUP3 000007d2: ADD 000007d3: MSTORE 000007d4: PUSH1 0x0f 000007d6: PUSH1 0x24 000007d8: DUP3 000007d9: ADD 000007da: MSTORE 000007db: PUSH32 0x4e6f2076616c696420636c61696d730000000000000000000000000000000000 000007fc: PUSH1 0x44 000007fe: DUP3 000007ff: ADD 00000800: MSTORE 00000801: PUSH1 0x64 00000803: ADD 00000804: PUSH2 0x0357 00000807: JUMP 00000808: JUMPDEST 00000809: PUSH2 0x0812 0000080c: DUP7 0000080d: DUP3 0000080e: PUSH2 0x0de4 00000811: JUMP 00000812: JUMPDEST 00000813: PUSH1 0x40 00000815: MLOAD 00000816: DUP2 00000817: DUP2 00000818: MSTORE 00000819: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000082e: DUP8 0000082f: AND 00000830: SWAP1 00000831: CALLER 00000832: SWAP1 00000833: PUSH32 0xd1156c83da18470c12fae89ffa811f65a38db2f5b87da6aacd2eecf395d2cceb 00000854: SWAP1 00000855: PUSH1 0x20 00000857: ADD 00000858: PUSH1 0x40 0000085a: MLOAD 0000085b: DUP1 0000085c: SWAP2 0000085d: SUB 0000085e: SWAP1 0000085f: LOG3 00000860: POP 00000861: POP 00000862: POP 00000863: PUSH2 0x086b 00000866: PUSH1 0x01 00000868: DUP1 00000869: SSTORE 0000086a: JUMP 0000086b: JUMPDEST 0000086c: POP 0000086d: POP 0000086e: POP 0000086f: POP 00000870: POP 00000871: POP 00000872: POP 00000873: JUMP 00000874: JUMPDEST 00000875: PUSH0 00000876: PUSH2 0x087d 00000879: PUSH2 0x0ed0 0000087c: JUMP 0000087d: JUMPDEST 0000087e: SWAP1 0000087f: POP 00000880: SWAP1 00000881: JUMP 00000882: JUMPDEST 00000883: PUSH2 0x088a 00000886: PUSH2 0x0b21 00000889: JUMP 0000088a: JUMPDEST 0000088b: PUSH2 0x0892 0000088e: PUSH2 0x1006 00000891: JUMP 00000892: JUMPDEST 00000893: JUMP 00000894: JUMPDEST 00000895: PUSH2 0x089c 00000898: PUSH2 0x0b21 0000089b: JUMP 0000089c: JUMPDEST 0000089d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b2: DUP2 000008b3: AND 000008b4: PUSH2 0x08ff 000008b7: JUMPI 000008b8: PUSH1 0x40 000008ba: MLOAD 000008bb: PUSH3 0x461bcd 000008bf: PUSH1 0xe5 000008c1: SHL 000008c2: DUP2 000008c3: MSTORE 000008c4: PUSH1 0x20 000008c6: PUSH1 0x04 000008c8: DUP3 000008c9: ADD 000008ca: MSTORE 000008cb: PUSH1 0x1d 000008cd: PUSH1 0x24 000008cf: DUP3 000008d0: ADD 000008d1: MSTORE 000008d2: PUSH32 0x5369676e65722063616e6e6f74206265207a65726f2061646472657373000000 000008f3: PUSH1 0x44 000008f5: DUP3 000008f6: ADD 000008f7: MSTORE 000008f8: PUSH1 0x64 000008fa: ADD 000008fb: PUSH2 0x0357 000008fe: JUMP 000008ff: JUMPDEST 00000900: PUSH1 0x04 00000902: SLOAD 00000903: PUSH1 0x40 00000905: MLOAD 00000906: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000091b: DUP1 0000091c: DUP5 0000091d: AND 0000091e: SWAP3 0000091f: AND 00000920: SWAP1 00000921: PUSH32 0x2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb 00000942: SWAP1 00000943: PUSH0 00000944: SWAP1 00000945: LOG3 00000946: PUSH1 0x04 00000948: DUP1 00000949: SLOAD 0000094a: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 0000096b: AND 0000096c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000981: SWAP3 00000982: SWAP1 00000983: SWAP3 00000984: AND 00000985: SWAP2 00000986: SWAP1 00000987: SWAP2 00000988: OR 00000989: SWAP1 0000098a: SSTORE 0000098b: JUMP 0000098c: JUMPDEST 0000098d: PUSH2 0x0994 00000990: PUSH2 0x0b21 00000993: JUMP 00000994: JUMPDEST 00000995: PUSH2 0x0892 00000998: PUSH0 00000999: PUSH2 0x1082 0000099c: JUMP 0000099d: JUMPDEST 0000099e: PUSH2 0x09a5 000009a1: PUSH2 0x0b21 000009a4: JUMP 000009a5: JUMPDEST 000009a6: PUSH2 0x0892 000009a9: PUSH2 0x10f6 000009ac: JUMP 000009ad: JUMPDEST 000009ae: PUSH0 000009af: PUSH1 0x60 000009b1: DUP1 000009b2: PUSH0 000009b3: DUP1 000009b4: PUSH0 000009b5: PUSH1 0x60 000009b7: PUSH2 0x09be 000009ba: PUSH2 0x1164 000009bd: JUMP 000009be: JUMPDEST 000009bf: PUSH2 0x09c6 000009c2: PUSH2 0x1191 000009c5: JUMP 000009c6: JUMPDEST 000009c7: PUSH1 0x40 000009c9: DUP1 000009ca: MLOAD 000009cb: PUSH0 000009cc: DUP1 000009cd: DUP3 000009ce: MSTORE 000009cf: PUSH1 0x20 000009d1: DUP3 000009d2: ADD 000009d3: SWAP1 000009d4: SWAP3 000009d5: MSTORE 000009d6: PUSH32 0x0f00000000000000000000000000000000000000000000000000000000000000 000009f7: SWAP12 000009f8: SWAP4 000009f9: SWAP11 000009fa: POP 000009fb: SWAP2 000009fc: SWAP9 000009fd: POP 000009fe: CHAINID 000009ff: SWAP8 00000a00: POP 00000a01: ADDRESS 00000a02: SWAP7 00000a03: POP 00000a04: SWAP5 00000a05: POP 00000a06: SWAP3 00000a07: POP 00000a08: SWAP1 00000a09: POP 00000a0a: JUMP 00000a0b: JUMPDEST 00000a0c: PUSH2 0x0a13 00000a0f: PUSH2 0x0b21 00000a12: JUMP 00000a13: JUMPDEST 00000a14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a29: DUP2 00000a2a: AND 00000a2b: PUSH2 0x0a9c 00000a2e: JUMPI 00000a2f: PUSH1 0x40 00000a31: MLOAD 00000a32: PUSH3 0x461bcd 00000a36: PUSH1 0xe5 00000a38: SHL 00000a39: DUP2 00000a3a: MSTORE 00000a3b: PUSH1 0x20 00000a3d: PUSH1 0x04 00000a3f: DUP3 00000a40: ADD 00000a41: MSTORE 00000a42: PUSH1 0x26 00000a44: PUSH1 0x24 00000a46: DUP3 00000a47: ADD 00000a48: MSTORE 00000a49: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00000a6a: PUSH1 0x44 00000a6c: DUP3 00000a6d: ADD 00000a6e: MSTORE 00000a6f: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 00000a90: PUSH1 0x64 00000a92: DUP3 00000a93: ADD 00000a94: MSTORE 00000a95: PUSH1 0x84 00000a97: ADD 00000a98: PUSH2 0x0357 00000a9b: JUMP 00000a9c: JUMPDEST 00000a9d: PUSH2 0x0aa5 00000aa0: DUP2 00000aa1: PUSH2 0x1082 00000aa4: JUMP 00000aa5: JUMPDEST 00000aa6: POP 00000aa7: JUMP 00000aa8: JUMPDEST 00000aa9: PUSH2 0x0ab0 00000aac: PUSH2 0x0b21 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ac6: DUP3 00000ac7: AND 00000ac8: PUSH2 0x0b13 00000acb: JUMPI 00000acc: PUSH1 0x40 00000ace: MLOAD 00000acf: PUSH3 0x461bcd 00000ad3: PUSH1 0xe5 00000ad5: SHL 00000ad6: DUP2 00000ad7: MSTORE 00000ad8: PUSH1 0x20 00000ada: PUSH1 0x04 00000adc: DUP3 00000add: ADD 00000ade: MSTORE 00000adf: PUSH1 0x11 00000ae1: PUSH1 0x24 00000ae3: DUP3 00000ae4: ADD 00000ae5: MSTORE 00000ae6: PUSH32 0x496e76616c696420726563697069656e74000000000000000000000000000000 00000b07: PUSH1 0x44 00000b09: DUP3 00000b0a: ADD 00000b0b: MSTORE 00000b0c: PUSH1 0x64 00000b0e: ADD 00000b0f: PUSH2 0x0357 00000b12: JUMP 00000b13: JUMPDEST 00000b14: PUSH2 0x0b1d 00000b17: DUP3 00000b18: DUP3 00000b19: PUSH2 0x0de4 00000b1c: JUMP 00000b1d: JUMPDEST 00000b1e: POP 00000b1f: POP 00000b20: JUMP 00000b21: JUMPDEST 00000b22: PUSH0 00000b23: SLOAD 00000b24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b39: AND 00000b3a: CALLER 00000b3b: EQ 00000b3c: PUSH2 0x0892 00000b3f: JUMPI 00000b40: PUSH1 0x40 00000b42: MLOAD 00000b43: PUSH3 0x461bcd 00000b47: PUSH1 0xe5 00000b49: SHL 00000b4a: DUP2 00000b4b: MSTORE 00000b4c: PUSH1 0x20 00000b4e: PUSH1 0x04 00000b50: DUP3 00000b51: ADD 00000b52: DUP2 00000b53: SWAP1 00000b54: MSTORE 00000b55: PUSH1 0x24 00000b57: DUP3 00000b58: ADD 00000b59: MSTORE 00000b5a: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000b7b: PUSH1 0x44 00000b7d: DUP3 00000b7e: ADD 00000b7f: MSTORE 00000b80: PUSH1 0x64 00000b82: ADD 00000b83: PUSH2 0x0357 00000b86: JUMP 00000b87: JUMPDEST 00000b88: PUSH1 0x40 00000b8a: DUP1 00000b8b: MLOAD 00000b8c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ba1: DUP5 00000ba2: DUP2 00000ba3: AND 00000ba4: PUSH1 0x24 00000ba6: DUP4 00000ba7: ADD 00000ba8: MSTORE 00000ba9: PUSH1 0x44 00000bab: DUP1 00000bac: DUP4 00000bad: ADD 00000bae: DUP6 00000baf: SWAP1 00000bb0: MSTORE 00000bb1: DUP4 00000bb2: MLOAD 00000bb3: DUP1 00000bb4: DUP5 00000bb5: SUB 00000bb6: SWAP1 00000bb7: SWAP2 00000bb8: ADD 00000bb9: DUP2 00000bba: MSTORE 00000bbb: PUSH1 0x64 00000bbd: SWAP1 00000bbe: SWAP3 00000bbf: ADD 00000bc0: DUP4 00000bc1: MSTORE 00000bc2: PUSH1 0x20 00000bc4: DUP3 00000bc5: ADD 00000bc6: DUP1 00000bc7: MLOAD 00000bc8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000be5: AND 00000be6: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00000c07: OR 00000c08: SWAP1 00000c09: MSTORE 00000c0a: SWAP2 00000c0b: MLOAD 00000c0c: PUSH0 00000c0d: SWAP3 00000c0e: DUP4 00000c0f: SWAP3 00000c10: SWAP1 00000c11: DUP8 00000c12: AND 00000c13: SWAP2 00000c14: PUSH2 0x0c1d 00000c17: SWAP2 00000c18: SWAP1 00000c19: PUSH2 0x18ff 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH0 00000c1f: PUSH1 0x40 00000c21: MLOAD 00000c22: DUP1 00000c23: DUP4 00000c24: SUB 00000c25: DUP2 00000c26: PUSH0 00000c27: DUP7 00000c28: GAS 00000c29: CALL 00000c2a: SWAP2 00000c2b: POP 00000c2c: POP 00000c2d: RETURNDATASIZE 00000c2e: DUP1 00000c2f: PUSH0 00000c30: DUP2 00000c31: EQ 00000c32: PUSH2 0x0c56 00000c35: JUMPI 00000c36: PUSH1 0x40 00000c38: MLOAD 00000c39: SWAP2 00000c3a: POP 00000c3b: PUSH1 0x1f 00000c3d: NOT 00000c3e: PUSH1 0x3f 00000c40: RETURNDATASIZE 00000c41: ADD 00000c42: AND 00000c43: DUP3 00000c44: ADD 00000c45: PUSH1 0x40 00000c47: MSTORE 00000c48: RETURNDATASIZE 00000c49: DUP3 00000c4a: MSTORE 00000c4b: RETURNDATASIZE 00000c4c: PUSH0 00000c4d: PUSH1 0x20 00000c4f: DUP5 00000c50: ADD 00000c51: RETURNDATACOPY 00000c52: PUSH2 0x0c5b 00000c55: JUMP 00000c56: JUMPDEST 00000c57: PUSH1 0x60 00000c59: SWAP2 00000c5a: POP 00000c5b: JUMPDEST 00000c5c: POP 00000c5d: SWAP2 00000c5e: POP 00000c5f: SWAP2 00000c60: POP 00000c61: DUP2 00000c62: DUP1 00000c63: ISZERO 00000c64: PUSH2 0x0c85 00000c67: JUMPI 00000c68: POP 00000c69: DUP1 00000c6a: MLOAD 00000c6b: ISZERO 00000c6c: DUP1 00000c6d: PUSH2 0x0c85 00000c70: JUMPI 00000c71: POP 00000c72: DUP1 00000c73: DUP1 00000c74: PUSH1 0x20 00000c76: ADD 00000c77: SWAP1 00000c78: MLOAD 00000c79: DUP2 00000c7a: ADD 00000c7b: SWAP1 00000c7c: PUSH2 0x0c85 00000c7f: SWAP2 00000c80: SWAP1 00000c81: PUSH2 0x1915 00000c84: JUMP 00000c85: JUMPDEST 00000c86: PUSH2 0x0cd1 00000c89: JUMPI 00000c8a: PUSH1 0x40 00000c8c: MLOAD 00000c8d: PUSH3 0x461bcd 00000c91: PUSH1 0xe5 00000c93: SHL 00000c94: DUP2 00000c95: MSTORE 00000c96: PUSH1 0x20 00000c98: PUSH1 0x04 00000c9a: DUP3 00000c9b: ADD 00000c9c: MSTORE 00000c9d: PUSH1 0x1f 00000c9f: PUSH1 0x24 00000ca1: DUP3 00000ca2: ADD 00000ca3: MSTORE 00000ca4: PUSH32 0x5472616e7366657248656c7065723a205452414e534645525f4641494c454400 00000cc5: PUSH1 0x44 00000cc7: DUP3 00000cc8: ADD 00000cc9: MSTORE 00000cca: PUSH1 0x64 00000ccc: ADD 00000ccd: PUSH2 0x0357 00000cd0: JUMP 00000cd1: JUMPDEST 00000cd2: POP 00000cd3: POP 00000cd4: POP 00000cd5: POP 00000cd6: POP 00000cd7: JUMP 00000cd8: JUMPDEST 00000cd9: PUSH1 0x02 00000cdb: PUSH1 0x01 00000cdd: SLOAD 00000cde: SUB 00000cdf: PUSH2 0x0d14 00000ce2: JUMPI 00000ce3: PUSH1 0x40 00000ce5: MLOAD 00000ce6: PUSH32 0x3ee5aeb500000000000000000000000000000000000000000000000000000000 00000d07: DUP2 00000d08: MSTORE 00000d09: PUSH1 0x04 00000d0b: ADD 00000d0c: PUSH1 0x40 00000d0e: MLOAD 00000d0f: DUP1 00000d10: SWAP2 00000d11: SUB 00000d12: SWAP1 00000d13: REVERT 00000d14: JUMPDEST 00000d15: PUSH1 0x02 00000d17: PUSH1 0x01 00000d19: SSTORE 00000d1a: JUMP 00000d1b: JUMPDEST 00000d1c: PUSH0 00000d1d: SLOAD 00000d1e: PUSH21 0x010000000000000000000000000000000000000000 00000d34: SWAP1 00000d35: DIV 00000d36: PUSH1 0xff 00000d38: AND 00000d39: ISZERO 00000d3a: PUSH2 0x0892 00000d3d: JUMPI 00000d3e: PUSH1 0x40 00000d40: MLOAD 00000d41: PUSH32 0xd93c066500000000000000000000000000000000000000000000000000000000 00000d62: DUP2 00000d63: MSTORE 00000d64: PUSH1 0x04 00000d66: ADD 00000d67: PUSH1 0x40 00000d69: MLOAD 00000d6a: DUP1 00000d6b: SWAP2 00000d6c: SUB 00000d6d: SWAP1 00000d6e: REVERT 00000d6f: JUMPDEST 00000d70: PUSH0 00000d71: PUSH2 0x0db6 00000d74: PUSH2 0x0d7b 00000d77: PUSH2 0x0ed0 00000d7a: JUMP 00000d7b: JUMPDEST 00000d7c: DUP4 00000d7d: PUSH1 0x40 00000d7f: MLOAD 00000d80: PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 00000da1: DUP2 00000da2: MSTORE 00000da3: PUSH1 0x02 00000da5: DUP2 00000da6: ADD 00000da7: SWAP3 00000da8: SWAP1 00000da9: SWAP3 00000daa: MSTORE 00000dab: PUSH1 0x22 00000dad: DUP3 00000dae: ADD 00000daf: MSTORE 00000db0: PUSH1 0x42 00000db2: SWAP1 00000db3: KECCAK256 00000db4: SWAP1 00000db5: JUMP 00000db6: JUMPDEST 00000db7: SWAP3 00000db8: SWAP2 00000db9: POP 00000dba: POP 00000dbb: JUMP 00000dbc: JUMPDEST 00000dbd: PUSH0 00000dbe: DUP1 00000dbf: PUSH0 00000dc0: DUP1 00000dc1: PUSH2 0x0dca 00000dc4: DUP7 00000dc5: DUP7 00000dc6: PUSH2 0x11be 00000dc9: JUMP 00000dca: JUMPDEST 00000dcb: SWAP3 00000dcc: POP 00000dcd: SWAP3 00000dce: POP 00000dcf: SWAP3 00000dd0: POP 00000dd1: PUSH2 0x0dda 00000dd4: DUP3 00000dd5: DUP3 00000dd6: PUSH2 0x1207 00000dd9: JUMP 00000dda: JUMPDEST 00000ddb: POP 00000ddc: SWAP1 00000ddd: SWAP5 00000dde: SWAP4 00000ddf: POP 00000de0: POP 00000de1: POP 00000de2: POP 00000de3: JUMP 00000de4: JUMPDEST 00000de5: PUSH1 0x40 00000de7: DUP1 00000de8: MLOAD 00000de9: PUSH0 00000dea: DUP1 00000deb: DUP3 00000dec: MSTORE 00000ded: PUSH1 0x20 00000def: DUP3 00000df0: ADD 00000df1: SWAP1 00000df2: SWAP3 00000df3: MSTORE 00000df4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e09: DUP5 00000e0a: AND 00000e0b: SWAP1 00000e0c: DUP4 00000e0d: SWAP1 00000e0e: PUSH1 0x40 00000e10: MLOAD 00000e11: PUSH2 0x0e1a 00000e14: SWAP2 00000e15: SWAP1 00000e16: PUSH2 0x18ff 00000e19: JUMP 00000e1a: JUMPDEST 00000e1b: PUSH0 00000e1c: PUSH1 0x40 00000e1e: MLOAD 00000e1f: DUP1 00000e20: DUP4 00000e21: SUB 00000e22: DUP2 00000e23: DUP6 00000e24: DUP8 00000e25: GAS 00000e26: CALL 00000e27: SWAP3 00000e28: POP 00000e29: POP 00000e2a: POP 00000e2b: RETURNDATASIZE 00000e2c: DUP1 00000e2d: PUSH0 00000e2e: DUP2 00000e2f: EQ 00000e30: PUSH2 0x0e54 00000e33: JUMPI 00000e34: PUSH1 0x40 00000e36: MLOAD 00000e37: SWAP2 00000e38: POP 00000e39: PUSH1 0x1f 00000e3b: NOT 00000e3c: PUSH1 0x3f 00000e3e: RETURNDATASIZE 00000e3f: ADD 00000e40: AND 00000e41: DUP3 00000e42: ADD 00000e43: PUSH1 0x40 00000e45: MSTORE 00000e46: RETURNDATASIZE 00000e47: DUP3 00000e48: MSTORE 00000e49: RETURNDATASIZE 00000e4a: PUSH0 00000e4b: PUSH1 0x20 00000e4d: DUP5 00000e4e: ADD 00000e4f: RETURNDATACOPY 00000e50: PUSH2 0x0e59 00000e53: JUMP 00000e54: JUMPDEST 00000e55: PUSH1 0x60 00000e57: SWAP2 00000e58: POP 00000e59: JUMPDEST 00000e5a: POP 00000e5b: POP 00000e5c: SWAP1 00000e5d: POP 00000e5e: DUP1 00000e5f: PUSH2 0x03ce 00000e62: JUMPI 00000e63: PUSH1 0x40 00000e65: MLOAD 00000e66: PUSH3 0x461bcd 00000e6a: PUSH1 0xe5 00000e6c: SHL 00000e6d: DUP2 00000e6e: MSTORE 00000e6f: PUSH1 0x20 00000e71: PUSH1 0x04 00000e73: DUP3 00000e74: ADD 00000e75: MSTORE 00000e76: PUSH1 0x23 00000e78: PUSH1 0x24 00000e7a: DUP3 00000e7b: ADD 00000e7c: MSTORE 00000e7d: PUSH32 0x5472616e7366657248656c7065723a204554485f5452414e534645525f464149 00000e9e: PUSH1 0x44 00000ea0: DUP3 00000ea1: ADD 00000ea2: MSTORE 00000ea3: PUSH32 0x4c45440000000000000000000000000000000000000000000000000000000000 00000ec4: PUSH1 0x64 00000ec6: DUP3 00000ec7: ADD 00000ec8: MSTORE 00000ec9: PUSH1 0x84 00000ecb: ADD 00000ecc: PUSH2 0x0357 00000ecf: JUMP 00000ed0: JUMPDEST 00000ed1: PUSH0 00000ed2: ADDRESS 00000ed3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ee8: PUSH32 0x000000000000000000000000a4245f5d3de21db029642f6ee4a31fe513fc5ad8 00000f09: AND 00000f0a: EQ 00000f0b: DUP1 00000f0c: ISZERO 00000f0d: PUSH2 0x0f35 00000f10: JUMPI 00000f11: POP 00000f12: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 00000f33: CHAINID 00000f34: EQ 00000f35: JUMPDEST 00000f36: ISZERO 00000f37: PUSH2 0x0f5f 00000f3a: JUMPI 00000f3b: POP 00000f3c: PUSH32 0x380b34c5a494a535a5b8ff9962de9f1ab23c2e3ffea11bed416208f015705ff5 00000f5d: SWAP1 00000f5e: JUMP 00000f5f: JUMPDEST 00000f60: PUSH2 0x087d 00000f63: PUSH1 0x40 00000f65: DUP1 00000f66: MLOAD 00000f67: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 00000f88: PUSH1 0x20 00000f8a: DUP3 00000f8b: ADD 00000f8c: MSTORE 00000f8d: PUSH32 0x7d6a0cef142f1dae5db126c788fa78d30d48228eed89afa40425c12d00e4cf37 00000fae: SWAP2 00000faf: DUP2 00000fb0: ADD 00000fb1: SWAP2 00000fb2: SWAP1 00000fb3: SWAP2 00000fb4: MSTORE 00000fb5: PUSH32 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6 00000fd6: PUSH1 0x60 00000fd8: DUP3 00000fd9: ADD 00000fda: MSTORE 00000fdb: CHAINID 00000fdc: PUSH1 0x80 00000fde: DUP3 00000fdf: ADD 00000fe0: MSTORE 00000fe1: ADDRESS 00000fe2: PUSH1 0xa0 00000fe4: DUP3 00000fe5: ADD 00000fe6: MSTORE 00000fe7: PUSH0 00000fe8: SWAP1 00000fe9: PUSH1 0xc0 00000feb: ADD 00000fec: PUSH1 0x40 00000fee: MLOAD 00000fef: PUSH1 0x20 00000ff1: DUP2 00000ff2: DUP4 00000ff3: SUB 00000ff4: SUB 00000ff5: DUP2 00000ff6: MSTORE 00000ff7: SWAP1 00000ff8: PUSH1 0x40 00000ffa: MSTORE 00000ffb: DUP1 00000ffc: MLOAD 00000ffd: SWAP1 00000ffe: PUSH1 0x20 00001000: ADD 00001001: KECCAK256 00001002: SWAP1 00001003: POP 00001004: SWAP1 00001005: JUMP 00001006: JUMPDEST 00001007: PUSH2 0x100e 0000100a: PUSH2 0x130a 0000100d: JUMP 0000100e: JUMPDEST 0000100f: PUSH0 00001010: DUP1 00001011: SLOAD 00001012: PUSH32 0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff 00001033: AND 00001034: SWAP1 00001035: SSTORE 00001036: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa 00001057: CALLER 00001058: JUMPDEST 00001059: PUSH1 0x40 0000105b: MLOAD 0000105c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001071: SWAP1 00001072: SWAP2 00001073: AND 00001074: DUP2 00001075: MSTORE 00001076: PUSH1 0x20 00001078: ADD 00001079: PUSH1 0x40 0000107b: MLOAD 0000107c: DUP1 0000107d: SWAP2 0000107e: SUB 0000107f: SWAP1 00001080: LOG1 00001081: JUMP 00001082: JUMPDEST 00001083: PUSH0 00001084: DUP1 00001085: SLOAD 00001086: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000109b: DUP4 0000109c: DUP2 0000109d: AND 0000109e: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000010bf: DUP4 000010c0: AND 000010c1: DUP2 000010c2: OR 000010c3: DUP5 000010c4: SSTORE 000010c5: PUSH1 0x40 000010c7: MLOAD 000010c8: SWAP2 000010c9: SWAP1 000010ca: SWAP3 000010cb: AND 000010cc: SWAP3 000010cd: DUP4 000010ce: SWAP2 000010cf: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000010f0: SWAP2 000010f1: SWAP1 000010f2: LOG3 000010f3: POP 000010f4: POP 000010f5: JUMP 000010f6: JUMPDEST 000010f7: PUSH2 0x10fe 000010fa: PUSH2 0x0d1b 000010fd: JUMP 000010fe: JUMPDEST 000010ff: PUSH0 00001100: DUP1 00001101: SLOAD 00001102: PUSH32 0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff 00001123: AND 00001124: PUSH21 0x010000000000000000000000000000000000000000 0000113a: OR 0000113b: SWAP1 0000113c: SSTORE 0000113d: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 0000115e: PUSH2 0x1058 00001161: CALLER 00001162: SWAP1 00001163: JUMP 00001164: JUMPDEST 00001165: PUSH1 0x60 00001167: PUSH2 0x087d 0000116a: PUSH32 0x4d61657374726f436173686261636b000000000000000000000000000000000f 0000118b: PUSH1 0x02 0000118d: PUSH2 0x135d 00001190: JUMP 00001191: JUMPDEST 00001192: PUSH1 0x60 00001194: PUSH2 0x087d 00001197: PUSH32 0x3100000000000000000000000000000000000000000000000000000000000001 000011b8: PUSH1 0x03 000011ba: PUSH2 0x135d 000011bd: JUMP 000011be: JUMPDEST 000011bf: PUSH0 000011c0: DUP1 000011c1: PUSH0 000011c2: DUP4 000011c3: MLOAD 000011c4: PUSH1 0x41 000011c6: SUB 000011c7: PUSH2 0x11f5 000011ca: JUMPI 000011cb: PUSH1 0x20 000011cd: DUP5 000011ce: ADD 000011cf: MLOAD 000011d0: PUSH1 0x40 000011d2: DUP6 000011d3: ADD 000011d4: MLOAD 000011d5: PUSH1 0x60 000011d7: DUP7 000011d8: ADD 000011d9: MLOAD 000011da: PUSH0 000011db: BYTE 000011dc: PUSH2 0x11e7 000011df: DUP9 000011e0: DUP3 000011e1: DUP6 000011e2: DUP6 000011e3: PUSH2 0x1406 000011e6: JUMP 000011e7: JUMPDEST 000011e8: SWAP6 000011e9: POP 000011ea: SWAP6 000011eb: POP 000011ec: SWAP6 000011ed: POP 000011ee: POP 000011ef: POP 000011f0: POP 000011f1: PUSH2 0x1200 000011f4: JUMP 000011f5: JUMPDEST 000011f6: POP 000011f7: POP 000011f8: DUP2 000011f9: MLOAD 000011fa: PUSH0 000011fb: SWAP2 000011fc: POP 000011fd: PUSH1 0x02 000011ff: SWAP1 00001200: JUMPDEST 00001201: SWAP3 00001202: POP 00001203: SWAP3 00001204: POP 00001205: SWAP3 00001206: JUMP 00001207: JUMPDEST 00001208: PUSH0 00001209: DUP3 0000120a: PUSH1 0x03 0000120c: DUP2 0000120d: GT 0000120e: ISZERO 0000120f: PUSH2 0x121a 00001212: JUMPI 00001213: PUSH2 0x121a 00001216: PUSH2 0x1934 00001219: JUMP 0000121a: JUMPDEST 0000121b: SUB 0000121c: PUSH2 0x1223 0000121f: JUMPI 00001220: POP 00001221: POP 00001222: JUMP 00001223: JUMPDEST 00001224: PUSH1 0x01 00001226: DUP3 00001227: PUSH1 0x03 00001229: DUP2 0000122a: GT 0000122b: ISZERO 0000122c: PUSH2 0x1237 0000122f: JUMPI 00001230: PUSH2 0x1237 00001233: PUSH2 0x1934 00001236: JUMP 00001237: JUMPDEST 00001238: SUB 00001239: PUSH2 0x126e 0000123c: JUMPI 0000123d: PUSH1 0x40 0000123f: MLOAD 00001240: PUSH32 0xf645eedf00000000000000000000000000000000000000000000000000000000 00001261: DUP2 00001262: MSTORE 00001263: PUSH1 0x04 00001265: ADD 00001266: PUSH1 0x40 00001268: MLOAD 00001269: DUP1 0000126a: SWAP2 0000126b: SUB 0000126c: SWAP1 0000126d: REVERT 0000126e: JUMPDEST 0000126f: PUSH1 0x02 00001271: DUP3 00001272: PUSH1 0x03 00001274: DUP2 00001275: GT 00001276: ISZERO 00001277: PUSH2 0x1282 0000127a: JUMPI 0000127b: PUSH2 0x1282 0000127e: PUSH2 0x1934 00001281: JUMP 00001282: JUMPDEST 00001283: SUB 00001284: PUSH2 0x12bc 00001287: JUMPI 00001288: PUSH1 0x40 0000128a: MLOAD 0000128b: PUSH32 0xfce698f700000000000000000000000000000000000000000000000000000000 000012ac: DUP2 000012ad: MSTORE 000012ae: PUSH1 0x04 000012b0: DUP2 000012b1: ADD 000012b2: DUP3 000012b3: SWAP1 000012b4: MSTORE 000012b5: PUSH1 0x24 000012b7: ADD 000012b8: PUSH2 0x0357 000012bb: JUMP 000012bc: JUMPDEST 000012bd: PUSH1 0x03 000012bf: DUP3 000012c0: PUSH1 0x03 000012c2: DUP2 000012c3: GT 000012c4: ISZERO 000012c5: PUSH2 0x12d0 000012c8: JUMPI 000012c9: PUSH2 0x12d0 000012cc: PUSH2 0x1934 000012cf: JUMP 000012d0: JUMPDEST 000012d1: SUB 000012d2: PUSH2 0x0b1d 000012d5: JUMPI 000012d6: PUSH1 0x40 000012d8: MLOAD 000012d9: PUSH32 0xd78bce0c00000000000000000000000000000000000000000000000000000000 000012fa: DUP2 000012fb: MSTORE 000012fc: PUSH1 0x04 000012fe: DUP2 000012ff: ADD 00001300: DUP3 00001301: SWAP1 00001302: MSTORE 00001303: PUSH1 0x24 00001305: ADD 00001306: PUSH2 0x0357 00001309: JUMP 0000130a: JUMPDEST 0000130b: PUSH0 0000130c: SLOAD 0000130d: PUSH21 0x010000000000000000000000000000000000000000 00001323: SWAP1 00001324: DIV 00001325: PUSH1 0xff 00001327: AND 00001328: PUSH2 0x0892 0000132b: JUMPI 0000132c: PUSH1 0x40 0000132e: MLOAD 0000132f: PUSH32 0x8dfc202b00000000000000000000000000000000000000000000000000000000 00001350: DUP2 00001351: MSTORE 00001352: PUSH1 0x04 00001354: ADD 00001355: PUSH1 0x40 00001357: MLOAD 00001358: DUP1 00001359: SWAP2 0000135a: SUB 0000135b: SWAP1 0000135c: REVERT 0000135d: JUMPDEST 0000135e: PUSH1 0x60 00001360: PUSH1 0xff 00001362: DUP4 00001363: EQ 00001364: PUSH2 0x1377 00001367: JUMPI 00001368: PUSH2 0x1370 0000136b: DUP4 0000136c: PUSH2 0x14f9 0000136f: JUMP 00001370: JUMPDEST 00001371: SWAP1 00001372: POP 00001373: PUSH2 0x0db6 00001376: JUMP 00001377: JUMPDEST 00001378: DUP2 00001379: DUP1 0000137a: SLOAD 0000137b: PUSH2 0x1383 0000137e: SWAP1 0000137f: PUSH2 0x1961 00001382: JUMP 00001383: JUMPDEST 00001384: DUP1 00001385: PUSH1 0x1f 00001387: ADD 00001388: PUSH1 0x20 0000138a: DUP1 0000138b: SWAP2 0000138c: DIV 0000138d: MUL 0000138e: PUSH1 0x20 00001390: ADD 00001391: PUSH1 0x40 00001393: MLOAD 00001394: SWAP1 00001395: DUP2 00001396: ADD 00001397: PUSH1 0x40 00001399: MSTORE 0000139a: DUP1 0000139b: SWAP3 0000139c: SWAP2 0000139d: SWAP1 0000139e: DUP2 0000139f: DUP2 000013a0: MSTORE 000013a1: PUSH1 0x20 000013a3: ADD 000013a4: DUP3 000013a5: DUP1 000013a6: SLOAD 000013a7: PUSH2 0x13af 000013aa: SWAP1 000013ab: PUSH2 0x1961 000013ae: JUMP 000013af: JUMPDEST 000013b0: DUP1 000013b1: ISZERO 000013b2: PUSH2 0x13fa 000013b5: JUMPI 000013b6: DUP1 000013b7: PUSH1 0x1f 000013b9: LT 000013ba: PUSH2 0x13d1 000013bd: JUMPI 000013be: PUSH2 0x0100 000013c1: DUP1 000013c2: DUP4 000013c3: SLOAD 000013c4: DIV 000013c5: MUL 000013c6: DUP4 000013c7: MSTORE 000013c8: SWAP2 000013c9: PUSH1 0x20 000013cb: ADD 000013cc: SWAP2 000013cd: PUSH2 0x13fa 000013d0: JUMP 000013d1: JUMPDEST 000013d2: DUP3 000013d3: ADD 000013d4: SWAP2 000013d5: SWAP1 000013d6: PUSH0 000013d7: MSTORE 000013d8: PUSH1 0x20 000013da: PUSH0 000013db: KECCAK256 000013dc: SWAP1 000013dd: JUMPDEST 000013de: DUP2 000013df: SLOAD 000013e0: DUP2 000013e1: MSTORE 000013e2: SWAP1 000013e3: PUSH1 0x01 000013e5: ADD 000013e6: SWAP1 000013e7: PUSH1 0x20 000013e9: ADD 000013ea: DUP1 000013eb: DUP4 000013ec: GT 000013ed: PUSH2 0x13dd 000013f0: JUMPI 000013f1: DUP3 000013f2: SWAP1 000013f3: SUB 000013f4: PUSH1 0x1f 000013f6: AND 000013f7: DUP3 000013f8: ADD 000013f9: SWAP2 000013fa: JUMPDEST 000013fb: POP 000013fc: POP 000013fd: POP 000013fe: POP 000013ff: POP 00001400: SWAP1 00001401: POP 00001402: PUSH2 0x0db6 00001405: JUMP 00001406: JUMPDEST 00001407: PUSH0 00001408: DUP1 00001409: DUP1 0000140a: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 0000142b: DUP5 0000142c: GT 0000142d: ISZERO 0000142e: PUSH2 0x143f 00001431: JUMPI 00001432: POP 00001433: PUSH0 00001434: SWAP2 00001435: POP 00001436: PUSH1 0x03 00001438: SWAP1 00001439: POP 0000143a: DUP3 0000143b: PUSH2 0x14ef 0000143e: JUMP 0000143f: JUMPDEST 00001440: PUSH1 0x40 00001442: DUP1 00001443: MLOAD 00001444: PUSH0 00001445: DUP1 00001446: DUP3 00001447: MSTORE 00001448: PUSH1 0x20 0000144a: DUP3 0000144b: ADD 0000144c: DUP1 0000144d: DUP5 0000144e: MSTORE 0000144f: DUP11 00001450: SWAP1 00001451: MSTORE 00001452: PUSH1 0xff 00001454: DUP10 00001455: AND 00001456: SWAP3 00001457: DUP3 00001458: ADD 00001459: SWAP3 0000145a: SWAP1 0000145b: SWAP3 0000145c: MSTORE 0000145d: PUSH1 0x60 0000145f: DUP2 00001460: ADD 00001461: DUP8 00001462: SWAP1 00001463: MSTORE 00001464: PUSH1 0x80 00001466: DUP2 00001467: ADD 00001468: DUP7 00001469: SWAP1 0000146a: MSTORE 0000146b: PUSH1 0x01 0000146d: SWAP1 0000146e: PUSH1 0xa0 00001470: ADD 00001471: PUSH1 0x20 00001473: PUSH1 0x40 00001475: MLOAD 00001476: PUSH1 0x20 00001478: DUP2 00001479: SUB 0000147a: SWAP1 0000147b: DUP1 0000147c: DUP5 0000147d: SUB 0000147e: SWAP1 0000147f: DUP6 00001480: GAS 00001481: STATICCALL 00001482: ISZERO 00001483: DUP1 00001484: ISZERO 00001485: PUSH2 0x1490 00001488: JUMPI 00001489: RETURNDATASIZE 0000148a: PUSH0 0000148b: DUP1 0000148c: RETURNDATACOPY 0000148d: RETURNDATASIZE 0000148e: PUSH0 0000148f: REVERT 00001490: JUMPDEST 00001491: POP 00001492: POP 00001493: PUSH1 0x40 00001495: MLOAD 00001496: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 000014b7: ADD 000014b8: MLOAD 000014b9: SWAP2 000014ba: POP 000014bb: POP 000014bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014d1: DUP2 000014d2: AND 000014d3: PUSH2 0x14e6 000014d6: JUMPI 000014d7: POP 000014d8: PUSH0 000014d9: SWAP3 000014da: POP 000014db: PUSH1 0x01 000014dd: SWAP2 000014de: POP 000014df: DUP3 000014e0: SWAP1 000014e1: POP 000014e2: PUSH2 0x14ef 000014e5: JUMP 000014e6: JUMPDEST 000014e7: SWAP3 000014e8: POP 000014e9: PUSH0 000014ea: SWAP2 000014eb: POP 000014ec: DUP2 000014ed: SWAP1 000014ee: POP 000014ef: JUMPDEST 000014f0: SWAP5 000014f1: POP 000014f2: SWAP5 000014f3: POP 000014f4: SWAP5 000014f5: SWAP2 000014f6: POP 000014f7: POP 000014f8: JUMP 000014f9: JUMPDEST 000014fa: PUSH1 0x60 000014fc: PUSH0 000014fd: PUSH2 0x1505 00001500: DUP4 00001501: PUSH2 0x1536 00001504: JUMP 00001505: JUMPDEST 00001506: PUSH1 0x40 00001508: DUP1 00001509: MLOAD 0000150a: PUSH1 0x20 0000150c: DUP1 0000150d: DUP3 0000150e: MSTORE 0000150f: DUP2 00001510: DUP4 00001511: ADD 00001512: SWAP1 00001513: SWAP3 00001514: MSTORE 00001515: SWAP2 00001516: SWAP3 00001517: POP 00001518: PUSH0 00001519: SWAP2 0000151a: SWAP1 0000151b: PUSH1 0x20 0000151d: DUP3 0000151e: ADD 0000151f: DUP2 00001520: DUP1 00001521: CALLDATASIZE 00001522: DUP4 00001523: CALLDATACOPY 00001524: POP 00001525: POP 00001526: POP 00001527: SWAP2 00001528: DUP3 00001529: MSTORE 0000152a: POP 0000152b: PUSH1 0x20 0000152d: DUP2 0000152e: ADD 0000152f: SWAP3 00001530: SWAP1 00001531: SWAP3 00001532: MSTORE 00001533: POP 00001534: SWAP1 00001535: JUMP 00001536: JUMPDEST 00001537: PUSH0 00001538: PUSH1 0xff 0000153a: DUP3 0000153b: AND 0000153c: PUSH1 0x1f 0000153e: DUP2 0000153f: GT 00001540: ISZERO 00001541: PUSH2 0x0db6 00001544: JUMPI 00001545: PUSH1 0x40 00001547: MLOAD 00001548: PUSH32 0xb3512b0c00000000000000000000000000000000000000000000000000000000 00001569: DUP2 0000156a: MSTORE 0000156b: PUSH1 0x04 0000156d: ADD 0000156e: PUSH1 0x40 00001570: MLOAD 00001571: DUP1 00001572: SWAP2 00001573: SUB 00001574: SWAP1 00001575: REVERT 00001576: JUMPDEST 00001577: DUP1 00001578: CALLDATALOAD 00001579: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000158e: DUP2 0000158f: AND 00001590: DUP2 00001591: EQ 00001592: PUSH2 0x1599 00001595: JUMPI 00001596: PUSH0 00001597: DUP1 00001598: REVERT 00001599: JUMPDEST 0000159a: SWAP2 0000159b: SWAP1 0000159c: POP 0000159d: JUMP 0000159e: JUMPDEST 0000159f: PUSH0 000015a0: DUP1 000015a1: PUSH0 000015a2: PUSH1 0x60 000015a4: DUP5 000015a5: DUP7 000015a6: SUB 000015a7: SLT 000015a8: ISZERO 000015a9: PUSH2 0x15b0 000015ac: JUMPI 000015ad: PUSH0 000015ae: DUP1 000015af: REVERT 000015b0: JUMPDEST 000015b1: PUSH2 0x15b9 000015b4: DUP5 000015b5: PUSH2 0x1576 000015b8: JUMP 000015b9: JUMPDEST 000015ba: SWAP3 000015bb: POP 000015bc: PUSH2 0x15c7 000015bf: PUSH1 0x20 000015c1: DUP6 000015c2: ADD 000015c3: PUSH2 0x1576 000015c6: JUMP 000015c7: JUMPDEST 000015c8: SWAP2 000015c9: POP 000015ca: PUSH1 0x40 000015cc: DUP5 000015cd: ADD 000015ce: CALLDATALOAD 000015cf: SWAP1 000015d0: POP 000015d1: SWAP3 000015d2: POP 000015d3: SWAP3 000015d4: POP 000015d5: SWAP3 000015d6: JUMP 000015d7: JUMPDEST 000015d8: PUSH0 000015d9: DUP1 000015da: DUP4 000015db: PUSH1 0x1f 000015dd: DUP5 000015de: ADD 000015df: SLT 000015e0: PUSH2 0x15e7 000015e3: JUMPI 000015e4: PUSH0 000015e5: DUP1 000015e6: REVERT 000015e7: JUMPDEST 000015e8: POP 000015e9: DUP2 000015ea: CALLDATALOAD 000015eb: PUSH8 0xffffffffffffffff 000015f4: DUP2 000015f5: GT 000015f6: ISZERO 000015f7: PUSH2 0x15fe 000015fa: JUMPI 000015fb: PUSH0 000015fc: DUP1 000015fd: REVERT 000015fe: JUMPDEST 000015ff: PUSH1 0x20 00001601: DUP4 00001602: ADD 00001603: SWAP2 00001604: POP 00001605: DUP4 00001606: PUSH1 0x20 00001608: DUP3 00001609: PUSH1 0x05 0000160b: SHL 0000160c: DUP6 0000160d: ADD 0000160e: ADD 0000160f: GT 00001610: ISZERO 00001611: PUSH2 0x1618 00001614: JUMPI 00001615: PUSH0 00001616: DUP1 00001617: REVERT 00001618: JUMPDEST 00001619: SWAP3 0000161a: POP 0000161b: SWAP3 0000161c: SWAP1 0000161d: POP 0000161e: JUMP 0000161f: JUMPDEST 00001620: PUSH0 00001621: DUP1 00001622: PUSH0 00001623: DUP1 00001624: PUSH0 00001625: DUP1 00001626: PUSH0 00001627: PUSH1 0x80 00001629: DUP9 0000162a: DUP11 0000162b: SUB 0000162c: SLT 0000162d: ISZERO 0000162e: PUSH2 0x1635 00001631: JUMPI 00001632: PUSH0 00001633: DUP1 00001634: REVERT 00001635: JUMPDEST 00001636: DUP8 00001637: CALLDATALOAD 00001638: PUSH8 0xffffffffffffffff 00001641: DUP1 00001642: DUP3 00001643: GT 00001644: ISZERO 00001645: PUSH2 0x164c 00001648: JUMPI 00001649: PUSH0 0000164a: DUP1 0000164b: REVERT 0000164c: JUMPDEST 0000164d: PUSH2 0x1658 00001650: DUP12 00001651: DUP4 00001652: DUP13 00001653: ADD 00001654: PUSH2 0x15d7 00001657: JUMP 00001658: JUMPDEST 00001659: SWAP1 0000165a: SWAP10 0000165b: POP 0000165c: SWAP8 0000165d: POP 0000165e: PUSH1 0x20 00001660: DUP11 00001661: ADD 00001662: CALLDATALOAD 00001663: SWAP2 00001664: POP 00001665: DUP1 00001666: DUP3 00001667: GT 00001668: ISZERO 00001669: PUSH2 0x1670 0000166c: JUMPI 0000166d: PUSH0 0000166e: DUP1 0000166f: REVERT 00001670: JUMPDEST 00001671: PUSH2 0x167c 00001674: DUP12 00001675: DUP4 00001676: DUP13 00001677: ADD 00001678: PUSH2 0x15d7 0000167b: JUMP 0000167c: JUMPDEST 0000167d: SWAP1 0000167e: SWAP8 0000167f: POP 00001680: SWAP6 00001681: POP 00001682: DUP6 00001683: SWAP2 00001684: POP 00001685: PUSH2 0x1690 00001688: PUSH1 0x40 0000168a: DUP12 0000168b: ADD 0000168c: PUSH2 0x1576 0000168f: JUMP 00001690: JUMPDEST 00001691: SWAP5 00001692: POP 00001693: PUSH1 0x60 00001695: DUP11 00001696: ADD 00001697: CALLDATALOAD 00001698: SWAP2 00001699: POP 0000169a: DUP1 0000169b: DUP3 0000169c: GT 0000169d: ISZERO 0000169e: PUSH2 0x16a5 000016a1: JUMPI 000016a2: PUSH0 000016a3: DUP1 000016a4: REVERT 000016a5: JUMPDEST 000016a6: DUP2 000016a7: DUP11 000016a8: ADD 000016a9: SWAP2 000016aa: POP 000016ab: DUP11 000016ac: PUSH1 0x1f 000016ae: DUP4 000016af: ADD 000016b0: SLT 000016b1: PUSH2 0x16b8 000016b4: JUMPI 000016b5: PUSH0 000016b6: DUP1 000016b7: REVERT 000016b8: JUMPDEST 000016b9: DUP2 000016ba: CALLDATALOAD 000016bb: DUP2 000016bc: DUP2 000016bd: GT 000016be: ISZERO 000016bf: PUSH2 0x16c6 000016c2: JUMPI 000016c3: PUSH0 000016c4: DUP1 000016c5: REVERT 000016c6: JUMPDEST 000016c7: DUP12 000016c8: PUSH1 0x20 000016ca: DUP3 000016cb: DUP6 000016cc: ADD 000016cd: ADD 000016ce: GT 000016cf: ISZERO 000016d0: PUSH2 0x16d7 000016d3: JUMPI 000016d4: PUSH0 000016d5: DUP1 000016d6: REVERT 000016d7: JUMPDEST 000016d8: PUSH1 0x20 000016da: DUP4 000016db: ADD 000016dc: SWAP5 000016dd: POP 000016de: DUP1 000016df: SWAP4 000016e0: POP 000016e1: POP 000016e2: POP 000016e3: POP 000016e4: SWAP3 000016e5: SWAP6 000016e6: SWAP9 000016e7: SWAP2 000016e8: SWAP5 000016e9: SWAP8 000016ea: POP 000016eb: SWAP3 000016ec: SWAP6 000016ed: POP 000016ee: JUMP 000016ef: JUMPDEST 000016f0: PUSH0 000016f1: PUSH1 0x20 000016f3: DUP3 000016f4: DUP5 000016f5: SUB 000016f6: SLT 000016f7: ISZERO 000016f8: PUSH2 0x16ff 000016fb: JUMPI 000016fc: PUSH0 000016fd: DUP1 000016fe: REVERT 000016ff: JUMPDEST 00001700: PUSH2 0x1708 00001703: DUP3 00001704: PUSH2 0x1576 00001707: JUMP 00001708: JUMPDEST 00001709: SWAP4 0000170a: SWAP3 0000170b: POP 0000170c: POP 0000170d: POP 0000170e: JUMP 0000170f: JUMPDEST 00001710: PUSH0 00001711: DUP2 00001712: MLOAD 00001713: DUP1 00001714: DUP5 00001715: MSTORE 00001716: DUP1 00001717: PUSH1 0x20 00001719: DUP5 0000171a: ADD 0000171b: PUSH1 0x20 0000171d: DUP7 0000171e: ADD 0000171f: MCOPY 00001720: PUSH0 00001721: PUSH1 0x20 00001723: DUP3 00001724: DUP7 00001725: ADD 00001726: ADD 00001727: MSTORE 00001728: PUSH1 0x20 0000172a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000174b: PUSH1 0x1f 0000174d: DUP4 0000174e: ADD 0000174f: AND 00001750: DUP6 00001751: ADD 00001752: ADD 00001753: SWAP2 00001754: POP 00001755: POP 00001756: SWAP3 00001757: SWAP2 00001758: POP 00001759: POP 0000175a: JUMP 0000175b: JUMPDEST 0000175c: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 0000177d: DUP9 0000177e: AND 0000177f: DUP2 00001780: MSTORE 00001781: PUSH0 00001782: PUSH1 0x20 00001784: PUSH1 0xe0 00001786: PUSH1 0x20 00001788: DUP5 00001789: ADD 0000178a: MSTORE 0000178b: PUSH2 0x1797 0000178e: PUSH1 0xe0 00001790: DUP5 00001791: ADD 00001792: DUP11 00001793: PUSH2 0x170f 00001796: JUMP 00001797: JUMPDEST 00001798: DUP4 00001799: DUP2 0000179a: SUB 0000179b: PUSH1 0x40 0000179d: DUP6 0000179e: ADD 0000179f: MSTORE 000017a0: PUSH2 0x17a9 000017a3: DUP2 000017a4: DUP11 000017a5: PUSH2 0x170f 000017a8: JUMP 000017a9: JUMPDEST 000017aa: PUSH1 0x60 000017ac: DUP6 000017ad: ADD 000017ae: DUP10 000017af: SWAP1 000017b0: MSTORE 000017b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017c6: DUP9 000017c7: AND 000017c8: PUSH1 0x80 000017ca: DUP7 000017cb: ADD 000017cc: MSTORE 000017cd: PUSH1 0xa0 000017cf: DUP6 000017d0: ADD 000017d1: DUP8 000017d2: SWAP1 000017d3: MSTORE 000017d4: DUP5 000017d5: DUP2 000017d6: SUB 000017d7: PUSH1 0xc0 000017d9: DUP7 000017da: ADD 000017db: MSTORE 000017dc: DUP6 000017dd: MLOAD 000017de: DUP1 000017df: DUP3 000017e0: MSTORE 000017e1: PUSH1 0x20 000017e3: DUP1 000017e4: DUP9 000017e5: ADD 000017e6: SWAP4 000017e7: POP 000017e8: SWAP1 000017e9: SWAP2 000017ea: ADD 000017eb: SWAP1 000017ec: PUSH0 000017ed: JUMPDEST 000017ee: DUP2 000017ef: DUP2 000017f0: LT 000017f1: ISZERO 000017f2: PUSH2 0x1809 000017f5: JUMPI 000017f6: DUP4 000017f7: MLOAD 000017f8: DUP4 000017f9: MSTORE 000017fa: SWAP3 000017fb: DUP5 000017fc: ADD 000017fd: SWAP3 000017fe: SWAP2 000017ff: DUP5 00001800: ADD 00001801: SWAP2 00001802: PUSH1 0x01 00001804: ADD 00001805: PUSH2 0x17ed 00001808: JUMP 00001809: JUMPDEST 0000180a: POP 0000180b: SWAP1 0000180c: SWAP13 0000180d: SWAP12 0000180e: POP 0000180f: POP 00001810: POP 00001811: POP 00001812: POP 00001813: POP 00001814: POP 00001815: POP 00001816: POP 00001817: POP 00001818: POP 00001819: POP 0000181a: JUMP 0000181b: JUMPDEST 0000181c: PUSH0 0000181d: PUSH1 0x20 0000181f: DUP3 00001820: DUP5 00001821: SUB 00001822: SLT 00001823: ISZERO 00001824: PUSH2 0x182b 00001827: JUMPI 00001828: PUSH0 00001829: DUP1 0000182a: REVERT 0000182b: JUMPDEST 0000182c: POP 0000182d: CALLDATALOAD 0000182e: SWAP2 0000182f: SWAP1 00001830: POP 00001831: JUMP 00001832: JUMPDEST 00001833: PUSH0 00001834: DUP1 00001835: PUSH1 0x40 00001837: DUP4 00001838: DUP6 00001839: SUB 0000183a: SLT 0000183b: ISZERO 0000183c: PUSH2 0x1843 0000183f: JUMPI 00001840: PUSH0 00001841: DUP1 00001842: REVERT 00001843: JUMPDEST 00001844: PUSH2 0x184c 00001847: DUP4 00001848: PUSH2 0x1576 0000184b: JUMP 0000184c: JUMPDEST 0000184d: SWAP5 0000184e: PUSH1 0x20 00001850: SWAP4 00001851: SWAP1 00001852: SWAP4 00001853: ADD 00001854: CALLDATALOAD 00001855: SWAP4 00001856: POP 00001857: POP 00001858: POP 00001859: JUMP 0000185a: JUMPDEST 0000185b: PUSH0 0000185c: PUSH32 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000187d: DUP4 0000187e: GT 0000187f: ISZERO 00001880: PUSH2 0x1887 00001883: JUMPI 00001884: PUSH0 00001885: DUP1 00001886: REVERT 00001887: JUMPDEST 00001888: DUP3 00001889: PUSH1 0x05 0000188b: SHL 0000188c: DUP1 0000188d: DUP6 0000188e: DUP5 0000188f: CALLDATACOPY 00001890: SWAP2 00001891: SWAP1 00001892: SWAP2 00001893: ADD 00001894: SWAP4 00001895: SWAP3 00001896: POP 00001897: POP 00001898: POP 00001899: JUMP 0000189a: JUMPDEST 0000189b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000018bc: PUSH0 000018bd: MSTORE 000018be: PUSH1 0x32 000018c0: PUSH1 0x04 000018c2: MSTORE 000018c3: PUSH1 0x24 000018c5: PUSH0 000018c6: REVERT 000018c7: JUMPDEST 000018c8: DUP1 000018c9: DUP3 000018ca: ADD 000018cb: DUP1 000018cc: DUP3 000018cd: GT 000018ce: ISZERO 000018cf: PUSH2 0x0db6 000018d2: JUMPI 000018d3: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000018f4: PUSH0 000018f5: MSTORE 000018f6: PUSH1 0x11 000018f8: PUSH1 0x04 000018fa: MSTORE 000018fb: PUSH1 0x24 000018fd: PUSH0 000018fe: REVERT 000018ff: JUMPDEST 00001900: PUSH0 00001901: DUP3 00001902: MLOAD 00001903: DUP1 00001904: PUSH1 0x20 00001906: DUP6 00001907: ADD 00001908: DUP5 00001909: MCOPY 0000190a: PUSH0 0000190b: SWAP3 0000190c: ADD 0000190d: SWAP2 0000190e: DUP3 0000190f: MSTORE 00001910: POP 00001911: SWAP2 00001912: SWAP1 00001913: POP 00001914: JUMP 00001915: JUMPDEST 00001916: PUSH0 00001917: PUSH1 0x20 00001919: DUP3 0000191a: DUP5 0000191b: SUB 0000191c: SLT 0000191d: ISZERO 0000191e: PUSH2 0x1925 00001921: JUMPI 00001922: PUSH0 00001923: DUP1 00001924: REVERT 00001925: JUMPDEST 00001926: DUP2 00001927: MLOAD 00001928: DUP1 00001929: ISZERO 0000192a: ISZERO 0000192b: DUP2 0000192c: EQ 0000192d: PUSH2 0x1708 00001930: JUMPI 00001931: PUSH0 00001932: DUP1 00001933: REVERT 00001934: JUMPDEST 00001935: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00001956: PUSH0 00001957: MSTORE 00001958: PUSH1 0x21 0000195a: PUSH1 0x04 0000195c: MSTORE 0000195d: PUSH1 0x24 0000195f: PUSH0 00001960: REVERT 00001961: JUMPDEST 00001962: PUSH1 0x01 00001964: DUP2 00001965: DUP2 00001966: SHR 00001967: SWAP1 00001968: DUP3 00001969: AND 0000196a: DUP1 0000196b: PUSH2 0x1975 0000196e: JUMPI 0000196f: PUSH1 0x7f 00001971: DUP3 00001972: AND 00001973: SWAP2 00001974: POP 00001975: JUMPDEST 00001976: PUSH1 0x20 00001978: DUP3 00001979: LT 0000197a: DUP2 0000197b: SUB 0000197c: PUSH2 0x19ac 0000197f: JUMPI 00001980: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000019a1: PUSH0 000019a2: MSTORE 000019a3: PUSH1 0x22 000019a5: PUSH1 0x04 000019a7: MSTORE 000019a8: PUSH1 0x24 000019aa: PUSH0 000019ab: REVERT 000019ac: JUMPDEST 000019ad: POP 000019ae: SWAP2 000019af: SWAP1 000019b0: POP 000019b1: JUMP 000019b2: INVALID 000019b3: LOG2 000019b4: PUSH5 0x6970667358 000019ba: UNKNOWN(0x22) 000019bb: SLT 000019bc: KECCAK256 000019bd: EXTCODESIZE 000019be: UNKNOWN(0x0D) 000019bf: ADDMOD 000019c0: MULMOD 000019c1: UNKNOWN(0xEE) 000019c2: UNKNOWN(0xFB) 000019c3: UNKNOWN(0xE5) 000019c4: CALLDATACOPY 000019c5: JUMPDEST 000019c6: SWAP15 000019c7: UNKNOWN(0xD7) 000019c8: UNKNOWN(0xEA) 000019c9: UNKNOWN(0xDC) 000019ca: XOR 000019cb: SWAP9 000019cc: UNKNOWN(0xA5) 000019cd: SUB 000019ce: UNKNOWN(0xE0) 000019cf: CHAINID 000019d0: PUSH12 0xf2585615ca84debd1e7f0b61 000019dd: PUSH5 0x736f6c6343 000019e3: STOP 000019e4: ADDMOD 000019e5: NOT 000019e6: STOP 000019e7: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x377e2f09dcd4debcd59e2fdccd07010b3080430bd12489d39ffb1307132d6931
call_targets:
0xa4245f5d3de21db029642f6ee4a31fe513fc5ad8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x377e2f09dcd4debcd59e2fdccd07010b3080430bd12489d39ffb1307132d6931",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa4245f5d3de21db029642f6ee4a31fe513fc5ad8"
],
"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": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdbe7e3bd",
"selector": "0xdbe7e3bd",
"calldata_variants": [
"0xdbe7e3bd",
"0xdbe7e3bd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fef3a3",
"selector": "0xf3fef3a3",
"calldata_variants": [
"0xf3fef3a3",
"0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8456cb59",
"selector": "0x8456cb59",
"calldata_variants": [
"0x8456cb59",
"0x8456cb590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x84b0196e",
"selector": "0x84b0196e",
"calldata_variants": [
"0x84b0196e",
"0x84b0196e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3644e515",
"selector": "0x3644e515",
"calldata_variants": [
"0x3644e515",
"0x3644e5150000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3113,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3622,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x377e2f09dcd4debcd59e2fdccd07010b3080430bd12489d39ffb1307132d6931
call_targets:
0xa4245f5d3de21db029642f6ee4a31fe513fc5ad8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x377e2f09dcd4debcd59e2fdccd07010b3080430bd12489d39ffb1307132d6931",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa4245f5d3de21db029642f6ee4a31fe513fc5ad8"
],
"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": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdbe7e3bd",
"selector": "0xdbe7e3bd",
"calldata_variants": [
"0xdbe7e3bd",
"0xdbe7e3bd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fef3a3",
"selector": "0xf3fef3a3",
"calldata_variants": [
"0xf3fef3a3",
"0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8456cb59",
"selector": "0x8456cb59",
"calldata_variants": [
"0x8456cb59",
"0x8456cb590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x84b0196e",
"selector": "0x84b0196e",
"calldata_variants": [
"0x84b0196e",
"0x84b0196e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3644e515",
"selector": "0x3644e515",
"calldata_variants": [
"0x3644e515",
"0x3644e5150000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3113,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3622,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|