2c200662-dc1e-4f93-8744-a4c62f11ea59
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 |
|---|---|---|---|---|
| 31353 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 111116 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 111117 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 111118 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 111119 | capability.graph | complete | 1 / 3 | 1 week ago |
| 111120 | detector.run | complete | 1 / 3 | 1 week ago |
| 111121 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:298409] OpenAI Codex v0.77.0 (research preview)
[codex:298409] --------
[codex:298409] workdir: /tmp/codex-multi-oniikbb4
[codex:298409] model: gpt-5.2-codex
[codex:298409] provider: openai
[codex:298409] approval: never
[codex:298409] sandbox: read-only
[codex:298409] reasoning effort: xhigh
[codex:298409] reasoning summaries: auto
[codex:298409] session id: 019b80aa-e868-77d1-809c-25580cf8d259
[codex:298409] --------
[codex:298409] user
[codex:298409] 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:298409]
[codex:298409] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:298409]
[codex:298409] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:298409] - Gas inefficiency, code quality, or best practices
[codex:298409] - Theoretical vulnerabilities without a clear extraction path
[codex:298409] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:298409] - Issues requiring social engineering or off-chain coordination
[codex:298409]
[codex:298409] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:298409] - CALL/DELEGATECALL with controllable destination or calldata
[codex:298409] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:298409] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:298409] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:298409] - External calls before state updates (reentrancy)
[codex:298409] - SELFDESTRUCT with controllable beneficiary
[codex:298409] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:298409]
[codex:298409] For each finding, you MUST explain:
[codex:298409] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:298409] 2. The concrete sequence of transactions to extract value
[codex:298409] 3. Why you believe this is exploitable (not just suspicious)
[codex:298409]
[codex:298409] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:298409] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:298409]
[codex:298409] Output MUST be valid JSON matching the provided schema.
[codex:298409] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:298409] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:298409] mcp startup: no servers
[codex:298409]
[codex:298409] thinking
[codex:298409] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:298409] exec
[codex:298409] /bin/bash -lc ls in /tmp/codex-multi-oniikbb4 succeeded in 6ms:
[codex:298409] BYTECODE_BUNDLE.txt
[codex:298409] codex-output-schema.json
[codex:298409] exec
[codex:298409] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-oniikbb4 succeeded in 5ms:
[codex:298409] Runtime bytecode bundle for best-effort auditing.
[codex:298409] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:298409]
[codex:298409] FILE: runtime_bytecode.hex
[codex:298409] 0x60606040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c278114610165578063173825d91461019757806320ea8d86146101b65780632f54bf6e146101cc5780633411c81c146101ff57806354741525146102215780637065cb4814610250578063784547a71461026f5780638b51d13f146102855780639ace38c21461029b578063a0e67e2b1461035a578063a8abe69a146103c0578063b5dc40c3146103e3578063b77bf600146103f9578063ba51a6df1461040c578063c01a8c8414610422578063c642747414610438578063d74f8edd1461049d578063dc8452cd146104b0578063e20056e6146104c3578063ee22610b146104e8575b60003411156101635733600160a060020a03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405190815260200160405180910390a25b005b341561017057600080fd5b61017b6004356104fe565b604051600160a060020a03909116815260200160405180910390f35b34156101a257600080fd5b610163600160a060020a0360043516610526565b34156101c157600080fd5b6101636004356106bb565b34156101d757600080fd5b6101eb600160a060020a0360043516610799565b604051901515815260200160405180910390f35b341561020a57600080fd5b6101eb600435600160a060020a03602435166107ae565b341561022c57600080fd5b61023e600435151560243515156107ce565b60405190815260200160405180910390f35b341561025b57600080fd5b610163600160a060020a036004351661083a565b341561027a57600080fd5b6101eb60043561096e565b341561029057600080fd5b61023e6004356109f2565b34156102a657600080fd5b6102b1600435610a61565b604051600160a060020a03851681526020810184905281151560608201526080604082018181528454600260001961010060018416150201909116049183018290529060a0830190859080156103485780601f1061031d57610100808354040283529160200191610348565b820191906000526020600020905b81548152906001019060200180831161032b57829003601f168201915b50509550505050505060405180910390f35b341561036557600080fd5b61036d610a95565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156103ac578082015183820152602001610394565b505050509050019250505060405180910390f35b34156103cb57600080fd5b61036d60043560243560443515156064351515610afe565b34156103ee57600080fd5b61036d600435610c26565b341561040457600080fd5b61023e610d8a565b341561041757600080fd5b610163600435610d90565b341561042d57600080fd5b610163600435610e1b565b341561044357600080fd5b61023e60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610f0995505050505050565b34156104a857600080fd5b61023e610f28565b34156104bb57600080fd5b61023e610f2d565b34156104ce57600080fd5b610163600160a060020a0360043581169060243516610f33565b34156104f357600080fd5b6101636004356110e1565b600380548290811061050c57fe5b600091825260209091200154600160a060020a0316905081565b600030600160a060020a031633600160a060020a031614151561054857600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057157600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105bb57fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105e857fe5b60009182526020909120015460038054600160a060020a03909216918490811061060e57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055610654565b600190910190610594565b600380546000190190610667908261133a565b5060035460045411156106805760035461068090610d90565b82600160a060020a03167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600160a060020a03811660009081526002602052604090205460ff1615156106e357600080fd5b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff16151561071857600080fd5b600084815260208190526040902060030154849060ff161561073957600080fd5b6000858152600160209081526040808320600160a060020a033316808552925291829020805460ff1916905586917ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e9905160405180910390a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b600554811015610833578380156107fb575060008181526020819052604090206003015460ff16155b8061081f575082801561081f575060008181526020819052604090206003015460ff165b1561082b576001820191505b6001016107d2565b5092915050565b30600160a060020a031633600160a060020a031614151561085a57600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561088257600080fd5b81600160a060020a038116151561089857600080fd5b60038054905060010160045460328211806108b257508181115b806108bb575080155b806108c4575081155b156108ce57600080fd5b600160a060020a0385166000908152600260205260409020805460ff191660019081179091556003805490918101610906838261133a565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387169081179091557ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600080805b6003548110156109eb576000848152600160205260408120600380549192918490811061099c57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156109d0576001820191505b6004548214156109e357600192506109eb565b600101610973565b5050919050565b6000805b600354811015610a5b5760008381526001602052604081206003805491929184908110610a1f57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a53576001820191505b6001016109f6565b50919050565b6000602081905290815260409020805460018201546003830154600160a060020a0390921692909160029091019060ff1684565b610a9d61135e565b6003805480602002602001604051908101604052809291908181526020018280548015610af357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610ad5575b505050505090505b90565b610b0661135e565b610b0e61135e565b600080600554604051805910610b215750595b9080825280602002602001820160405250925060009150600090505b600554811015610bb657858015610b66575060008181526020819052604090206003015460ff16155b80610b8a5750848015610b8a575060008181526020819052604090206003015460ff165b15610bae5780838381518110610b9c57fe5b60209081029091010152600191909101905b600101610b3d565b878703604051805910610bc65750595b908082528060200260200182016040525093508790505b86811015610c1b57828181518110610bf157fe5b906020019060200201518489830381518110610c0957fe5b60209081029091010152600101610bdd565b505050949350505050565b610c2e61135e565b610c3661135e565b6003546000908190604051805910610c4b5750595b9080825280602002602001820160405250925060009150600090505b600354811015610d135760008581526001602052604081206003805491929184908110610c9057fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d0b576003805482908110610ccb57fe5b600091825260209091200154600160a060020a0316838381518110610cec57fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610c67565b81604051805910610d215750595b90808252806020026020018201604052509350600090505b81811015610d8257828181518110610d4d57fe5b90602001906020020151848281518110610d6357fe5b600160a060020a03909216602092830290910190910152600101610d39565b505050919050565b60055481565b30600160a060020a031633600160a060020a0316141515610db057600080fd5b600354816032821180610dc257508181115b80610dcb575080155b80610dd4575081155b15610dde57600080fd5b60048390557fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a8360405190815260200160405180910390a1505050565b33600160a060020a03811660009081526002602052604090205460ff161515610e4357600080fd5b6000828152602081905260409020548290600160a060020a03161515610e6857600080fd5b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff1615610e9c57600080fd5b6000858152600160208181526040808420600160a060020a033316808652925292839020805460ff191690921790915586917f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef905160405180910390a3610f02856110e1565b5050505050565b6000610f1684848461123d565b9050610f2181610e1b565b9392505050565b603281565b60045481565b600030600160a060020a031633600160a060020a0316141515610f5557600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610f7e57600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fa657600080fd5b600092505b60035483101561103f5784600160a060020a0316600384815481101515610fce57fe5b600091825260209091200154600160a060020a031614156110345783600384815481101515610ff957fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561103f565b600190920191610fab565b600160a060020a03808616600081815260026020526040808220805460ff199081169091559388168252908190208054909316600117909255907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90905160405180910390a283600160a060020a03167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600081815260208190526040812060030154829060ff161561110257600080fd5b61110b8361096e565b15611238576000838152602081905260409081902060038101805460ff19166001908117909155815490820154919450600160a060020a03169160028501905180828054600181600116156101000203166002900480156111ad5780601f10611182576101008083540402835291602001916111ad565b820191906000526020600020905b81548152906001019060200180831161119057829003601f168201915b505091505060006040518083038185876187965a03f192505050156111fe57827f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611238565b827f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260038201805460ff191690555b505050565b600083600160a060020a038116151561125557600080fd5b600554915060806040519081016040908152600160a060020a0387168252602080830187905281830186905260006060840181905285815290819052208151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0391909116178155602082015181600101556040820151816002019080516112e0929160200190611370565b506060820151600391909101805460ff191691151591909117905550600580546001019055817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b815481835581811511611238576000838152602090206112389181019083016113ee565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113b157805160ff19168380011785556113de565b828001600101855582156113de579182015b828111156113de5782518255916020019190600101906113c3565b506113ea9291506113ee565b5090565b610afb91905b808211156113ea57600081556001016113f45600a165627a7a723058209e9fb4cd25e4c8feed41aafaa24a2af7b3efa766cbf18d17733703378abb30ae0029
[codex:298409]
[codex:298409] thinking
[codex:298409] **Preparing bytecode analysis script**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read().split('runtime_bytecode.hex',1)[1]
[codex:298409] # extract hex 0x...
[codex:298409] import re
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] # map opcode to (name, immediate bytes)
[codex:298409] # EVM opcodes mapping simplified
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] calls=[]
[codex:298409] for i,b in enumerate(code_bytes):
[codex:298409] if b in (0xf1,0xf4,0xff):
[codex:298409] calls.append((i,b))
[codex:298409]
[codex:298409] print('len',len(code_bytes),'calls',calls[:20])
[codex:298409] # disassemble with offsets around CALL/DELEGATECALL/SELFDESTRUCT
[codex:298409] for off,op in calls:
[codex:298409] name=ops.get(op,hex(op))
[codex:298409] start=max(0,off-20)
[codex:298409] end=min(len(code_bytes),off+20)
[codex:298409] snippet=code_bytes[start:end]
[codex:298409] # produce offset->opcode lines in snippet
[codex:298409] j=start
[codex:298409] out=[]
[codex:298409] while j<end:
[codex:298409] b=code_bytes[j]
[codex:298409] opn=ops.get(b,hex(b))
[codex:298409] if 0x60<=b<=0x7f:
[codex:298409] n=b-0x5f
[codex:298409] data=code_bytes[j+1:j+1+n]
[codex:298409] out.append(f'{j:04x}: {opn} 0x{data.hex()}')
[codex:298409] j+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{j:04x}: {opn}')
[codex:298409] j+=1
[codex:298409] print('\\n'.join(out))
[codex:298409] print('---')
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 30ms:
[codex:298409] len 5172 calls [(14, 255), (15, 255), (16, 255), (17, 255), (106, 255), (306, 255), (314, 244), (1381, 255), (1421, 255), (1565, 255), (1566, 255), (1567, 255), (1568, 255), (1569, 255), (1570, 255), (1571, 255), (1572, 255), (1573, 255), (1574, 255), (1575, 255)]
[codex:298409] 0000: PUSH1 0x60
[codex:298409] 0002: PUSH1 0x40
[codex:298409] 0004: MSTORE
[codex:298409] 0005: PUSH1 0x04
[codex:298409] 0007: CALLDATASIZE
[codex:298409] 0008: LT
[codex:298409] 0009: PUSH2 0x011c
[codex:298409] 000c: JUMPI
[codex:298409] 000d: PUSH4 0xffffffff
[codex:298409] 0012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
[codex:298409] ---
[codex:298409] 0000: PUSH1 0x60
[codex:298409] 0002: PUSH1 0x40
[codex:298409] 0004: MSTORE
[codex:298409] 0005: PUSH1 0x04
[codex:298409] 0007: CALLDATASIZE
[codex:298409] 0008: LT
[codex:298409] 0009: PUSH2 0x011c
[codex:298409] 000c: JUMPI
[codex:298409]
[codex:298409] thinking
[codex:298409] **Improving opcode detection accuracy**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] op_positions=[]
[codex:298409]
[codex:298409] pc=0
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] op_name=ops.get(op, None)
[codex:298409] if op_name is None:
[codex:298409] op_name=f'UNKNOWN_{op:02x}'
[codex:298409] op_positions.append((pc,op,op_name))
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] # find CALL/DELEGATECALL/SELFDESTRUCT
[codex:298409] interesting=[(pc,op,name) for pc,op,name in op_positions if op in (0xf1,0xf4,0xff)]
[codex:298409] print('interesting',interesting)
[codex:298409]
[codex:298409] # Print small window around each interesting opcode
[codex:298409] for pc,op,name in interesting:
[codex:298409] # print 8 opcodes before/after
[codex:298409] idx=[i for i,(p,o,n) in enumerate(op_positions) if p==pc][0]
[codex:298409] start=max(0,idx-8)
[codex:298409] end=min(len(op_positions),idx+9)
[codex:298409] print('\\n---',name,'at',hex(pc),'---')
[codex:298409] for p,o,n in op_positions[start:end]:
[codex:298409] if 0x60<=o<=0x7f:
[codex:298409] nbytes=o-0x5f
[codex:298409] data=code_bytes[p+1:p+1+nbytes].hex()
[codex:298409] print(f'{p:04x}: {n} 0x{data}')
[codex:298409] else:
[codex:298409] print(f'{p:04x}: {n}')
[codex:298409]
[codex:298409] # Also list DELEGATECALL or SELFDESTRUCT, if any
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 29ms:
[codex:298409] interesting [(4547, 241, 'CALL')]
[codex:298409]
[codex:298409] --- CALL at 0x11c3 ---
[codex:298409] 11b9: DUP4
[codex:298409] 11ba: SUB
[codex:298409] 11bb: DUP2
[codex:298409] 11bc: DUP6
[codex:298409] 11bd: DUP8
[codex:298409] 11be: PUSH2 0x8796
[codex:298409] 11c1: GAS
[codex:298409] 11c2: SUB
[codex:298409] 11c3: CALL
[codex:298409] 11c4: SWAP3
[codex:298409] 11c5: POP
[codex:298409] 11c6: POP
[codex:298409] 11c7: POP
[codex:298409] 11c8: ISZERO
[codex:298409] 11c9: PUSH2 0x11fe
[codex:298409] 11cc: JUMPI
[codex:298409] 11cd: DUP3
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing CALL instruction context**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] # disassemble between start and end pc in range
[codex:298409] start=0x1100
[codex:298409] end=0x1240
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 27ms:
[codex:298409] 1100: DUP1
[codex:298409] 1101: REVERT
[codex:298409] 1102: JUMPDEST
[codex:298409] 1103: PUSH2 0x110b
[codex:298409] 1106: DUP4
[codex:298409] 1107: PUSH2 0x096e
[codex:298409] 110a: JUMP
[codex:298409] 110b: JUMPDEST
[codex:298409] 110c: ISZERO
[codex:298409] 110d: PUSH2 0x1238
[codex:298409] 1110: JUMPI
[codex:298409] 1111: PUSH1 0x00
[codex:298409] 1113: DUP4
[codex:298409] 1114: DUP2
[codex:298409] 1115: MSTORE
[codex:298409] 1116: PUSH1 0x20
[codex:298409] 1118: DUP2
[codex:298409] 1119: SWAP1
[codex:298409] 111a: MSTORE
[codex:298409] 111b: PUSH1 0x40
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing potential multisig contract structure**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] start=0x0520
[codex:298409] end=0x0660
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 25ms:
[codex:298409] 0520: SUB
[codex:298409] 0521: AND
[codex:298409] 0522: SWAP1
[codex:298409] 0523: POP
[codex:298409] 0524: DUP2
[codex:298409] 0525: JUMP
[codex:298409] 0526: JUMPDEST
[codex:298409] 0527: PUSH1 0x00
[codex:298409] 0529: ADDRESS
[codex:298409] 052a: PUSH1 0x01
[codex:298409] 052c: PUSH1 0xa0
[codex:298409] 052e: PUSH1 0x02
[codex:298409] 0530: EXP
[codex:298409] 0531: SUB
[codex:298409] 0532: AND
[codex:298409] 0533: CALLER
[codex:298409] 0534: PUSH1 0x01
[codex:298409] 0536: PUSH1 0xa0
[codex:298409] 0538: PUSH1 0x02
[codex:298409] 053a: EXP
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing MultiSigWallet internals and security**
[codex:298409]
[codex:298409] I'm examining the contract’s structure and function selectors to confirm it’s a Gnosis MultiSigWallet variant and checking for common vulnerabilities like improper access control or reentrancy. I’m comparing storage slots, function behaviors, and selector mappings to known MultiSigWallet implementations to identify any potential exploit paths or bugs.
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] start=0x0e00
[codex:298409] end=0x0f40
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 28ms:
[codex:298409] 0e05: DUP4
[codex:298409] 0e06: PUSH1 0x40
[codex:298409] 0e08: MLOAD
[codex:298409] 0e09: SWAP1
[codex:298409] 0e0a: DUP2
[codex:298409] 0e0b: MSTORE
[codex:298409] 0e0c: PUSH1 0x20
[codex:298409] 0e0e: ADD
[codex:298409] 0e0f: PUSH1 0x40
[codex:298409] 0e11: MLOAD
[codex:298409] 0e12: DUP1
[codex:298409] 0e13: SWAP2
[codex:298409] 0e14: SUB
[codex:298409] 0e15: SWAP1
[codex:298409] 0e16: LOG1
[codex:298409] 0e17: POP
[codex:298409] 0e18: POP
[codex:298409] 0e19: POP
[codex:298409] 0e1a: JUMP
[codex:298409] 0e1b: JUMPDEST
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing ownership checks and transaction flow**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] start=0x123d
[codex:298409] end=0x12f0
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 25ms:
[codex:298409] 123d: JUMPDEST
[codex:298409] 123e: PUSH1 0x00
[codex:298409] 1240: DUP4
[codex:298409] 1241: PUSH1 0x01
[codex:298409] 1243: PUSH1 0xa0
[codex:298409] 1245: PUSH1 0x02
[codex:298409] 1247: EXP
[codex:298409] 1248: SUB
[codex:298409] 1249: DUP2
[codex:298409] 124a: AND
[codex:298409] 124b: ISZERO
[codex:298409] 124c: ISZERO
[codex:298409] 124d: PUSH2 0x1255
[codex:298409] 1250: JUMPI
[codex:298409] 1251: PUSH1 0x00
[codex:298409] 1253: DUP1
[codex:298409] 1254: REVERT
[codex:298409] 1255: JUMPDEST
[codex:298409] 1256: PUSH1 0x05
[codex:298409] 1258: SLOAD
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing transaction addition and confirmation flow**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] start=0x0940
[codex:298409] end=0x09f5
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 25ms:
[codex:298409] 095d: PUSH1 0x40
[codex:298409] 095f: MLOAD
[codex:298409] 0960: PUSH1 0x40
[codex:298409] 0962: MLOAD
[codex:298409] 0963: DUP1
[codex:298409] 0964: SWAP2
[codex:298409] 0965: SUB
[codex:298409] 0966: SWAP1
[codex:298409] 0967: LOG2
[codex:298409] 0968: POP
[codex:298409] 0969: POP
[codex:298409] 096a: POP
[codex:298409] 096b: POP
[codex:298409] 096c: POP
[codex:298409] 096d: JUMP
[codex:298409] 096e: JUMPDEST
[codex:298409] 096f: PUSH1 0x00
[codex:298409] 0971: DUP1
[codex:298409] 0972: DUP1
[codex:298409] 0973: JUMPDEST
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing confirmation logic and requirements validation**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import re
[codex:298409] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:298409] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:298409] code=m.group(1)
[codex:298409] code_bytes=bytes.fromhex(code)
[codex:298409]
[codex:298409] ops={
[codex:298409] 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:298409] 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:298409] 0x20:'SHA3',
[codex:298409] 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:298409] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:298409] 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:298409] 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:298409] 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:298409] 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:298409] 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:298409] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:298409] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:298409] }
[codex:298409]
[codex:298409] start=0x0d80
[codex:298409] end=0x0e00
[codex:298409] pc=0
[codex:298409] out=[]
[codex:298409] while pc<len(code_bytes):
[codex:298409] op=code_bytes[pc]
[codex:298409] if pc>=start and pc<end:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] n=op-0x5f
[codex:298409] data=code_bytes[pc+1:pc+1+n]
[codex:298409] out.append(f'{pc:04x}: {ops.get(op)} 0x{data.hex()}')
[codex:298409] pc+=1+n
[codex:298409] else:
[codex:298409] out.append(f'{pc:04x}: {ops.get(op, hex(op))}')
[codex:298409] pc+=1
[codex:298409] else:
[codex:298409] if 0x60<=op<=0x7f:
[codex:298409] pc+=1+(op-0x5f)
[codex:298409] else:
[codex:298409] pc+=1
[codex:298409]
[codex:298409] print('\\n'.join(out))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 27ms:
[codex:298409] 0d81: JUMP
[codex:298409] 0d82: JUMPDEST
[codex:298409] 0d83: POP
[codex:298409] 0d84: POP
[codex:298409] 0d85: POP
[codex:298409] 0d86: SWAP2
[codex:298409] 0d87: SWAP1
[codex:298409] 0d88: POP
[codex:298409] 0d89: JUMP
[codex:298409] 0d8a: JUMPDEST
[codex:298409] 0d8b: PUSH1 0x05
[codex:298409] 0d8d: SLOAD
[codex:298409] 0d8e: DUP2
[codex:298409] 0d8f: JUMP
[codex:298409] 0d90: JUMPDEST
[codex:298409] 0d91: ADDRESS
[codex:298409] 0d92: PUSH1 0x01
[codex:298409] 0d94: PUSH1 0xa0
[codex:298409] 0d96: PUSH1 0x02
[codex:298409] 0d98: EXP
[codex:298409]
[codex:298409] thinking
[codex:298409] **Analyzing MultiSig contract safety checks**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] import hashlib, sys
[codex:298409] print('sha3_256', hashlib.sha3_256(b'confirmTransaction(uint256)').hexdigest()[:8])
[codex:298409] try:
[codex:298409] import sha3
[codex:298409] print('keccak_256', sha3.keccak_256(b'confirmTransaction(uint256)').hexdigest()[:8])
[codex:298409] except Exception as e:
[codex:298409] print('no sha3/keccak', e)
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 19ms:
[codex:298409] sha3_256 593c9bda
[codex:298409] no sha3/keccak No module named 'sha3'
[codex:298409]
[codex:298409] thinking
[codex:298409] **Checking options for keccak implementation**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] try:
[codex:298409] from Crypto.Hash import keccak
[codex:298409] k=keccak.new(digest_bits=256)
[codex:298409] k.update(b'confirmTransaction(uint256)')
[codex:298409] print(k.hexdigest()[:8])
[codex:298409] except Exception as e:
[codex:298409] print('no crypto keccak',e)
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 38ms:
[codex:298409] c01a8c84
[codex:298409]
[codex:298409] thinking
[codex:298409] **Preparing MultiSig function selectors**
[codex:298409] exec
[codex:298409] /bin/bash -lc "python - <<'PY'
[codex:298409] from Crypto.Hash import keccak
[codex:298409]
[codex:298409] def sel(sig):
[codex:298409] k=keccak.new(digest_bits=256)
[codex:298409] k.update(sig.encode())
[codex:298409] return k.hexdigest()[:8]
[codex:298409]
[codex:298409] candidates=[
[codex:298409] 'addOwner(address)',
[codex:298409] 'removeOwner(address)',
[codex:298409] 'replaceOwner(address,address)',
[codex:298409] 'changeRequirement(uint256)',
[codex:298409] 'submitTransaction(address,uint256,bytes)',
[codex:298409] 'confirmTransaction(uint256)',
[codex:298409] 'revokeConfirmation(uint256)',
[codex:298409] 'executeTransaction(uint256)',
[codex:298409] 'isConfirmed(uint256)',
[codex:298409] 'getConfirmationCount(uint256)',
[codex:298409] 'getTransactionCount(bool,bool)',
[codex:298409] 'getOwners()',
[codex:298409] 'getConfirmations(uint256)',
[codex:298409] 'getTransactionIds(uint256,uint256,bool,bool)',
[codex:298409] 'transactions(uint256)',
[codex:298409] 'confirmations(uint256,address)',
[codex:298409] 'isOwner(address)',
[codex:298409] 'owners(uint256)',
[codex:298409] 'required()',
[codex:298409] 'transactionCount()',
[codex:298409] 'MAX_OWNER_COUNT()',
[codex:298409] ]
[codex:298409]
[codex:298409] for sig in candidates:
[codex:298409] print(sig, sel(sig))
[codex:298409] PY" in /tmp/codex-multi-oniikbb4 succeeded in 37ms:
[codex:298409] addOwner(address) 7065cb48
[codex:298409] removeOwner(address) 173825d9
[codex:298409] replaceOwner(address,address) e20056e6
[codex:298409] changeRequirement(uint256) ba51a6df
[codex:298409] submitTransaction(address,uint256,bytes) c6427474
[codex:298409] confirmTransaction(uint256) c01a8c84
[codex:298409] revokeConfirmation(uint256) 20ea8d86
[codex:298409] executeTransaction(uint256) ee22610b
[codex:298409] isConfirmed(uint256) 784547a7
[codex:298409] getConfirmationCount(uint256) 8b51d13f
[codex:298409] getTransactionCount(bool,bool) 54741525
[codex:298409] getOwners() a0e67e2b
[codex:298409] getConfirmations(uint256) b5dc40c3
[codex:298409] getTransactionIds(uint256,uint256,bool,bool) a8abe69a
[codex:298409] transactions(uint256) 9ace38c2
[codex:298409] confirmations(uint256,address) 3411c81c
[codex:298409] isOwner(address) 2f54bf6e
[codex:298409] owners(uint256) 025e7c27
[codex:298409] required() dc8452cd
[codex:298409] transactionCount() b77bf600
[codex:298409]
[codex:298409] thinking
[codex:298409] **Summarizing security analysis of MultiSigWallet bytecode**
[codex:298409]
[codex:298409] I've thoroughly examined the bytecode and confirmed it matches the standard Gnosis MultiSigWallet, with all critical calls gated by owner confirmations and no hidden vulnerabilities that would allow value extraction or misuse. The evidence supports reporting no exploitable paths and a clean security posture.
[codex:298409] codex
[codex:298409] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the runtime bytecode; the only external CALL (at 0x11c3) is gated by the standard MultiSigWallet confirmation flow, and there is no DELEGATECALL/SELFDESTRUCT or unprotected value transfer visible.","findings":[]}
[codex:298409] tokens used
[codex:298409] 86,091
[codex:298409] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the runtime bytecode; the only external CALL (at 0x11c3) is gated by the standard MultiSigWallet confirmation flow, and there is no DELEGATECALL/SELFDESTRUCT or unprotected value transfer visible.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T21:50:37.857769+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path identified from the runtime bytecode; the only external CALL (at 0x11c3) is gated by the standard MultiSigWallet confirmation flow, and there is no DELEGATECALL/SELFDESTRUCT or unprotected value transfer visible.",
"raw_final": {
"summary": "No concrete, exploitable profit path identified from the runtime bytecode; the only external CALL (at 0x11c3) is gated by the standard MultiSigWallet confirmation flow, and there is no DELEGATECALL/SELFDESTRUCT or unprotected value transfer visible.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x011c 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH4 0x025e7c27 0000003a: DUP2 0000003b: EQ 0000003c: PUSH2 0x0165 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x173825d9 00000046: EQ 00000047: PUSH2 0x0197 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x20ea8d86 00000051: EQ 00000052: PUSH2 0x01b6 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x2f54bf6e 0000005c: EQ 0000005d: PUSH2 0x01cc 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x3411c81c 00000067: EQ 00000068: PUSH2 0x01ff 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x54741525 00000072: EQ 00000073: PUSH2 0x0221 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x7065cb48 0000007d: EQ 0000007e: PUSH2 0x0250 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x784547a7 00000088: EQ 00000089: PUSH2 0x026f 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0x8b51d13f 00000093: EQ 00000094: PUSH2 0x0285 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x9ace38c2 0000009e: EQ 0000009f: PUSH2 0x029b 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xa0e67e2b 000000a9: EQ 000000aa: PUSH2 0x035a 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xa8abe69a 000000b4: EQ 000000b5: PUSH2 0x03c0 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xb5dc40c3 000000bf: EQ 000000c0: PUSH2 0x03e3 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xb77bf600 000000ca: EQ 000000cb: PUSH2 0x03f9 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0xba51a6df 000000d5: EQ 000000d6: PUSH2 0x040c 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0xc01a8c84 000000e0: EQ 000000e1: PUSH2 0x0422 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0xc6427474 000000eb: EQ 000000ec: PUSH2 0x0438 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0xd74f8edd 000000f6: EQ 000000f7: PUSH2 0x049d 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0xdc8452cd 00000101: EQ 00000102: PUSH2 0x04b0 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0xe20056e6 0000010c: EQ 0000010d: PUSH2 0x04c3 00000110: JUMPI 00000111: DUP1 00000112: PUSH4 0xee22610b 00000117: EQ 00000118: PUSH2 0x04e8 0000011b: JUMPI 0000011c: JUMPDEST 0000011d: PUSH1 0x00 0000011f: CALLVALUE 00000120: GT 00000121: ISZERO 00000122: PUSH2 0x0163 00000125: JUMPI 00000126: CALLER 00000127: PUSH1 0x01 00000129: PUSH1 0xa0 0000012b: PUSH1 0x02 0000012d: EXP 0000012e: SUB 0000012f: AND 00000130: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 00000151: CALLVALUE 00000152: PUSH1 0x40 00000154: MLOAD 00000155: SWAP1 00000156: DUP2 00000157: MSTORE 00000158: PUSH1 0x20 0000015a: ADD 0000015b: PUSH1 0x40 0000015d: MLOAD 0000015e: DUP1 0000015f: SWAP2 00000160: SUB 00000161: SWAP1 00000162: LOG2 00000163: JUMPDEST 00000164: STOP 00000165: JUMPDEST 00000166: CALLVALUE 00000167: ISZERO 00000168: PUSH2 0x0170 0000016b: JUMPI 0000016c: PUSH1 0x00 0000016e: DUP1 0000016f: REVERT 00000170: JUMPDEST 00000171: PUSH2 0x017b 00000174: PUSH1 0x04 00000176: CALLDATALOAD 00000177: PUSH2 0x04fe 0000017a: JUMP 0000017b: JUMPDEST 0000017c: PUSH1 0x40 0000017e: MLOAD 0000017f: PUSH1 0x01 00000181: PUSH1 0xa0 00000183: PUSH1 0x02 00000185: EXP 00000186: SUB 00000187: SWAP1 00000188: SWAP2 00000189: AND 0000018a: DUP2 0000018b: MSTORE 0000018c: PUSH1 0x20 0000018e: ADD 0000018f: PUSH1 0x40 00000191: MLOAD 00000192: DUP1 00000193: SWAP2 00000194: SUB 00000195: SWAP1 00000196: RETURN 00000197: JUMPDEST 00000198: CALLVALUE 00000199: ISZERO 0000019a: PUSH2 0x01a2 0000019d: JUMPI 0000019e: PUSH1 0x00 000001a0: DUP1 000001a1: REVERT 000001a2: JUMPDEST 000001a3: PUSH2 0x0163 000001a6: PUSH1 0x01 000001a8: PUSH1 0xa0 000001aa: PUSH1 0x02 000001ac: EXP 000001ad: SUB 000001ae: PUSH1 0x04 000001b0: CALLDATALOAD 000001b1: AND 000001b2: PUSH2 0x0526 000001b5: JUMP 000001b6: JUMPDEST 000001b7: CALLVALUE 000001b8: ISZERO 000001b9: PUSH2 0x01c1 000001bc: JUMPI 000001bd: PUSH1 0x00 000001bf: DUP1 000001c0: REVERT 000001c1: JUMPDEST 000001c2: PUSH2 0x0163 000001c5: PUSH1 0x04 000001c7: CALLDATALOAD 000001c8: PUSH2 0x06bb 000001cb: JUMP 000001cc: JUMPDEST 000001cd: CALLVALUE 000001ce: ISZERO 000001cf: PUSH2 0x01d7 000001d2: JUMPI 000001d3: PUSH1 0x00 000001d5: DUP1 000001d6: REVERT 000001d7: JUMPDEST 000001d8: PUSH2 0x01eb 000001db: PUSH1 0x01 000001dd: PUSH1 0xa0 000001df: PUSH1 0x02 000001e1: EXP 000001e2: SUB 000001e3: PUSH1 0x04 000001e5: CALLDATALOAD 000001e6: AND 000001e7: PUSH2 0x0799 000001ea: JUMP 000001eb: JUMPDEST 000001ec: PUSH1 0x40 000001ee: MLOAD 000001ef: SWAP1 000001f0: ISZERO 000001f1: ISZERO 000001f2: DUP2 000001f3: MSTORE 000001f4: PUSH1 0x20 000001f6: ADD 000001f7: PUSH1 0x40 000001f9: MLOAD 000001fa: DUP1 000001fb: SWAP2 000001fc: SUB 000001fd: SWAP1 000001fe: RETURN 000001ff: JUMPDEST 00000200: CALLVALUE 00000201: ISZERO 00000202: PUSH2 0x020a 00000205: JUMPI 00000206: PUSH1 0x00 00000208: DUP1 00000209: REVERT 0000020a: JUMPDEST 0000020b: PUSH2 0x01eb 0000020e: PUSH1 0x04 00000210: CALLDATALOAD 00000211: PUSH1 0x01 00000213: PUSH1 0xa0 00000215: PUSH1 0x02 00000217: EXP 00000218: SUB 00000219: PUSH1 0x24 0000021b: CALLDATALOAD 0000021c: AND 0000021d: PUSH2 0x07ae 00000220: JUMP 00000221: JUMPDEST 00000222: CALLVALUE 00000223: ISZERO 00000224: PUSH2 0x022c 00000227: JUMPI 00000228: PUSH1 0x00 0000022a: DUP1 0000022b: REVERT 0000022c: JUMPDEST 0000022d: PUSH2 0x023e 00000230: PUSH1 0x04 00000232: CALLDATALOAD 00000233: ISZERO 00000234: ISZERO 00000235: PUSH1 0x24 00000237: CALLDATALOAD 00000238: ISZERO 00000239: ISZERO 0000023a: PUSH2 0x07ce 0000023d: JUMP 0000023e: JUMPDEST 0000023f: PUSH1 0x40 00000241: MLOAD 00000242: SWAP1 00000243: DUP2 00000244: MSTORE 00000245: PUSH1 0x20 00000247: ADD 00000248: PUSH1 0x40 0000024a: MLOAD 0000024b: DUP1 0000024c: SWAP2 0000024d: SUB 0000024e: SWAP1 0000024f: RETURN 00000250: JUMPDEST 00000251: CALLVALUE 00000252: ISZERO 00000253: PUSH2 0x025b 00000256: JUMPI 00000257: PUSH1 0x00 00000259: DUP1 0000025a: REVERT 0000025b: JUMPDEST 0000025c: PUSH2 0x0163 0000025f: PUSH1 0x01 00000261: PUSH1 0xa0 00000263: PUSH1 0x02 00000265: EXP 00000266: SUB 00000267: PUSH1 0x04 00000269: CALLDATALOAD 0000026a: AND 0000026b: PUSH2 0x083a 0000026e: JUMP 0000026f: JUMPDEST 00000270: CALLVALUE 00000271: ISZERO 00000272: PUSH2 0x027a 00000275: JUMPI 00000276: PUSH1 0x00 00000278: DUP1 00000279: REVERT 0000027a: JUMPDEST 0000027b: PUSH2 0x01eb 0000027e: PUSH1 0x04 00000280: CALLDATALOAD 00000281: PUSH2 0x096e 00000284: JUMP 00000285: JUMPDEST 00000286: CALLVALUE 00000287: ISZERO 00000288: PUSH2 0x0290 0000028b: JUMPI 0000028c: PUSH1 0x00 0000028e: DUP1 0000028f: REVERT 00000290: JUMPDEST 00000291: PUSH2 0x023e 00000294: PUSH1 0x04 00000296: CALLDATALOAD 00000297: PUSH2 0x09f2 0000029a: JUMP 0000029b: JUMPDEST 0000029c: CALLVALUE 0000029d: ISZERO 0000029e: PUSH2 0x02a6 000002a1: JUMPI 000002a2: PUSH1 0x00 000002a4: DUP1 000002a5: REVERT 000002a6: JUMPDEST 000002a7: PUSH2 0x02b1 000002aa: PUSH1 0x04 000002ac: CALLDATALOAD 000002ad: PUSH2 0x0a61 000002b0: JUMP 000002b1: JUMPDEST 000002b2: PUSH1 0x40 000002b4: MLOAD 000002b5: PUSH1 0x01 000002b7: PUSH1 0xa0 000002b9: PUSH1 0x02 000002bb: EXP 000002bc: SUB 000002bd: DUP6 000002be: AND 000002bf: DUP2 000002c0: MSTORE 000002c1: PUSH1 0x20 000002c3: DUP2 000002c4: ADD 000002c5: DUP5 000002c6: SWAP1 000002c7: MSTORE 000002c8: DUP2 000002c9: ISZERO 000002ca: ISZERO 000002cb: PUSH1 0x60 000002cd: DUP3 000002ce: ADD 000002cf: MSTORE 000002d0: PUSH1 0x80 000002d2: PUSH1 0x40 000002d4: DUP3 000002d5: ADD 000002d6: DUP2 000002d7: DUP2 000002d8: MSTORE 000002d9: DUP5 000002da: SLOAD 000002db: PUSH1 0x02 000002dd: PUSH1 0x00 000002df: NOT 000002e0: PUSH2 0x0100 000002e3: PUSH1 0x01 000002e5: DUP5 000002e6: AND 000002e7: ISZERO 000002e8: MUL 000002e9: ADD 000002ea: SWAP1 000002eb: SWAP2 000002ec: AND 000002ed: DIV 000002ee: SWAP2 000002ef: DUP4 000002f0: ADD 000002f1: DUP3 000002f2: SWAP1 000002f3: MSTORE 000002f4: SWAP1 000002f5: PUSH1 0xa0 000002f7: DUP4 000002f8: ADD 000002f9: SWAP1 000002fa: DUP6 000002fb: SWAP1 000002fc: DUP1 000002fd: ISZERO 000002fe: PUSH2 0x0348 00000301: JUMPI 00000302: DUP1 00000303: PUSH1 0x1f 00000305: LT 00000306: PUSH2 0x031d 00000309: JUMPI 0000030a: PUSH2 0x0100 0000030d: DUP1 0000030e: DUP4 0000030f: SLOAD 00000310: DIV 00000311: MUL 00000312: DUP4 00000313: MSTORE 00000314: SWAP2 00000315: PUSH1 0x20 00000317: ADD 00000318: SWAP2 00000319: PUSH2 0x0348 0000031c: JUMP 0000031d: JUMPDEST 0000031e: DUP3 0000031f: ADD 00000320: SWAP2 00000321: SWAP1 00000322: PUSH1 0x00 00000324: MSTORE 00000325: PUSH1 0x20 00000327: PUSH1 0x00 00000329: KECCAK256 0000032a: SWAP1 0000032b: JUMPDEST 0000032c: DUP2 0000032d: SLOAD 0000032e: DUP2 0000032f: MSTORE 00000330: SWAP1 00000331: PUSH1 0x01 00000333: ADD 00000334: SWAP1 00000335: PUSH1 0x20 00000337: ADD 00000338: DUP1 00000339: DUP4 0000033a: GT 0000033b: PUSH2 0x032b 0000033e: JUMPI 0000033f: DUP3 00000340: SWAP1 00000341: SUB 00000342: PUSH1 0x1f 00000344: AND 00000345: DUP3 00000346: ADD 00000347: SWAP2 00000348: JUMPDEST 00000349: POP 0000034a: POP 0000034b: SWAP6 0000034c: POP 0000034d: POP 0000034e: POP 0000034f: POP 00000350: POP 00000351: POP 00000352: PUSH1 0x40 00000354: MLOAD 00000355: DUP1 00000356: SWAP2 00000357: SUB 00000358: SWAP1 00000359: RETURN 0000035a: JUMPDEST 0000035b: CALLVALUE 0000035c: ISZERO 0000035d: PUSH2 0x0365 00000360: JUMPI 00000361: PUSH1 0x00 00000363: DUP1 00000364: REVERT 00000365: JUMPDEST 00000366: PUSH2 0x036d 00000369: PUSH2 0x0a95 0000036c: JUMP 0000036d: JUMPDEST 0000036e: PUSH1 0x40 00000370: MLOAD 00000371: PUSH1 0x20 00000373: DUP1 00000374: DUP3 00000375: MSTORE 00000376: DUP2 00000377: SWAP1 00000378: DUP2 00000379: ADD 0000037a: DUP4 0000037b: DUP2 0000037c: DUP2 0000037d: MLOAD 0000037e: DUP2 0000037f: MSTORE 00000380: PUSH1 0x20 00000382: ADD 00000383: SWAP2 00000384: POP 00000385: DUP1 00000386: MLOAD 00000387: SWAP1 00000388: PUSH1 0x20 0000038a: ADD 0000038b: SWAP1 0000038c: PUSH1 0x20 0000038e: MUL 0000038f: DUP1 00000390: DUP4 00000391: DUP4 00000392: PUSH1 0x00 00000394: JUMPDEST 00000395: DUP4 00000396: DUP2 00000397: LT 00000398: ISZERO 00000399: PUSH2 0x03ac 0000039c: JUMPI 0000039d: DUP1 0000039e: DUP3 0000039f: ADD 000003a0: MLOAD 000003a1: DUP4 000003a2: DUP3 000003a3: ADD 000003a4: MSTORE 000003a5: PUSH1 0x20 000003a7: ADD 000003a8: PUSH2 0x0394 000003ab: JUMP 000003ac: JUMPDEST 000003ad: POP 000003ae: POP 000003af: POP 000003b0: POP 000003b1: SWAP1 000003b2: POP 000003b3: ADD 000003b4: SWAP3 000003b5: POP 000003b6: POP 000003b7: POP 000003b8: PUSH1 0x40 000003ba: MLOAD 000003bb: DUP1 000003bc: SWAP2 000003bd: SUB 000003be: SWAP1 000003bf: RETURN 000003c0: JUMPDEST 000003c1: CALLVALUE 000003c2: ISZERO 000003c3: PUSH2 0x03cb 000003c6: JUMPI 000003c7: PUSH1 0x00 000003c9: DUP1 000003ca: REVERT 000003cb: JUMPDEST 000003cc: PUSH2 0x036d 000003cf: PUSH1 0x04 000003d1: CALLDATALOAD 000003d2: PUSH1 0x24 000003d4: CALLDATALOAD 000003d5: PUSH1 0x44 000003d7: CALLDATALOAD 000003d8: ISZERO 000003d9: ISZERO 000003da: PUSH1 0x64 000003dc: CALLDATALOAD 000003dd: ISZERO 000003de: ISZERO 000003df: PUSH2 0x0afe 000003e2: JUMP 000003e3: JUMPDEST 000003e4: CALLVALUE 000003e5: ISZERO 000003e6: PUSH2 0x03ee 000003e9: JUMPI 000003ea: PUSH1 0x00 000003ec: DUP1 000003ed: REVERT 000003ee: JUMPDEST 000003ef: PUSH2 0x036d 000003f2: PUSH1 0x04 000003f4: CALLDATALOAD 000003f5: PUSH2 0x0c26 000003f8: JUMP 000003f9: JUMPDEST 000003fa: CALLVALUE 000003fb: ISZERO 000003fc: PUSH2 0x0404 000003ff: JUMPI 00000400: PUSH1 0x00 00000402: DUP1 00000403: REVERT 00000404: JUMPDEST 00000405: PUSH2 0x023e 00000408: PUSH2 0x0d8a 0000040b: JUMP 0000040c: JUMPDEST 0000040d: CALLVALUE 0000040e: ISZERO 0000040f: PUSH2 0x0417 00000412: JUMPI 00000413: PUSH1 0x00 00000415: DUP1 00000416: REVERT 00000417: JUMPDEST 00000418: PUSH2 0x0163 0000041b: PUSH1 0x04 0000041d: CALLDATALOAD 0000041e: PUSH2 0x0d90 00000421: JUMP 00000422: JUMPDEST 00000423: CALLVALUE 00000424: ISZERO 00000425: PUSH2 0x042d 00000428: JUMPI 00000429: PUSH1 0x00 0000042b: DUP1 0000042c: REVERT 0000042d: JUMPDEST 0000042e: PUSH2 0x0163 00000431: PUSH1 0x04 00000433: CALLDATALOAD 00000434: PUSH2 0x0e1b 00000437: JUMP 00000438: JUMPDEST 00000439: CALLVALUE 0000043a: ISZERO 0000043b: PUSH2 0x0443 0000043e: JUMPI 0000043f: PUSH1 0x00 00000441: DUP1 00000442: REVERT 00000443: JUMPDEST 00000444: PUSH2 0x023e 00000447: PUSH1 0x04 00000449: DUP1 0000044a: CALLDATALOAD 0000044b: PUSH1 0x01 0000044d: PUSH1 0xa0 0000044f: PUSH1 0x02 00000451: EXP 00000452: SUB 00000453: AND 00000454: SWAP1 00000455: PUSH1 0x24 00000457: DUP1 00000458: CALLDATALOAD 00000459: SWAP2 0000045a: SWAP1 0000045b: PUSH1 0x64 0000045d: SWAP1 0000045e: PUSH1 0x44 00000460: CALLDATALOAD 00000461: SWAP1 00000462: DUP2 00000463: ADD 00000464: SWAP1 00000465: DUP4 00000466: ADD 00000467: CALLDATALOAD 00000468: DUP1 00000469: PUSH1 0x20 0000046b: PUSH1 0x1f 0000046d: DUP3 0000046e: ADD 0000046f: DUP2 00000470: SWAP1 00000471: DIV 00000472: DUP2 00000473: MUL 00000474: ADD 00000475: PUSH1 0x40 00000477: MLOAD 00000478: SWAP1 00000479: DUP2 0000047a: ADD 0000047b: PUSH1 0x40 0000047d: MSTORE 0000047e: DUP2 0000047f: DUP2 00000480: MSTORE 00000481: SWAP3 00000482: SWAP2 00000483: SWAP1 00000484: PUSH1 0x20 00000486: DUP5 00000487: ADD 00000488: DUP4 00000489: DUP4 0000048a: DUP1 0000048b: DUP3 0000048c: DUP5 0000048d: CALLDATACOPY 0000048e: POP 0000048f: SWAP5 00000490: SWAP7 00000491: POP 00000492: PUSH2 0x0f09 00000495: SWAP6 00000496: POP 00000497: POP 00000498: POP 00000499: POP 0000049a: POP 0000049b: POP 0000049c: JUMP 0000049d: JUMPDEST 0000049e: CALLVALUE 0000049f: ISZERO 000004a0: PUSH2 0x04a8 000004a3: JUMPI 000004a4: PUSH1 0x00 000004a6: DUP1 000004a7: REVERT 000004a8: JUMPDEST 000004a9: PUSH2 0x023e 000004ac: PUSH2 0x0f28 000004af: JUMP 000004b0: JUMPDEST 000004b1: CALLVALUE 000004b2: ISZERO 000004b3: PUSH2 0x04bb 000004b6: JUMPI 000004b7: PUSH1 0x00 000004b9: DUP1 000004ba: REVERT 000004bb: JUMPDEST 000004bc: PUSH2 0x023e 000004bf: PUSH2 0x0f2d 000004c2: JUMP 000004c3: JUMPDEST 000004c4: CALLVALUE 000004c5: ISZERO 000004c6: PUSH2 0x04ce 000004c9: JUMPI 000004ca: PUSH1 0x00 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: PUSH2 0x0163 000004d2: PUSH1 0x01 000004d4: PUSH1 0xa0 000004d6: PUSH1 0x02 000004d8: EXP 000004d9: SUB 000004da: PUSH1 0x04 000004dc: CALLDATALOAD 000004dd: DUP2 000004de: AND 000004df: SWAP1 000004e0: PUSH1 0x24 000004e2: CALLDATALOAD 000004e3: AND 000004e4: PUSH2 0x0f33 000004e7: JUMP 000004e8: JUMPDEST 000004e9: CALLVALUE 000004ea: ISZERO 000004eb: PUSH2 0x04f3 000004ee: JUMPI 000004ef: PUSH1 0x00 000004f1: DUP1 000004f2: REVERT 000004f3: JUMPDEST 000004f4: PUSH2 0x0163 000004f7: PUSH1 0x04 000004f9: CALLDATALOAD 000004fa: PUSH2 0x10e1 000004fd: JUMP 000004fe: JUMPDEST 000004ff: PUSH1 0x03 00000501: DUP1 00000502: SLOAD 00000503: DUP3 00000504: SWAP1 00000505: DUP2 00000506: LT 00000507: PUSH2 0x050c 0000050a: JUMPI 0000050b: INVALID 0000050c: JUMPDEST 0000050d: PUSH1 0x00 0000050f: SWAP2 00000510: DUP3 00000511: MSTORE 00000512: PUSH1 0x20 00000514: SWAP1 00000515: SWAP2 00000516: KECCAK256 00000517: ADD 00000518: SLOAD 00000519: PUSH1 0x01 0000051b: PUSH1 0xa0 0000051d: PUSH1 0x02 0000051f: EXP 00000520: SUB 00000521: AND 00000522: SWAP1 00000523: POP 00000524: DUP2 00000525: JUMP 00000526: JUMPDEST 00000527: PUSH1 0x00 00000529: ADDRESS 0000052a: PUSH1 0x01 0000052c: PUSH1 0xa0 0000052e: PUSH1 0x02 00000530: EXP 00000531: SUB 00000532: AND 00000533: CALLER 00000534: PUSH1 0x01 00000536: PUSH1 0xa0 00000538: PUSH1 0x02 0000053a: EXP 0000053b: SUB 0000053c: AND 0000053d: EQ 0000053e: ISZERO 0000053f: ISZERO 00000540: PUSH2 0x0548 00000543: JUMPI 00000544: PUSH1 0x00 00000546: DUP1 00000547: REVERT 00000548: JUMPDEST 00000549: PUSH1 0x01 0000054b: PUSH1 0xa0 0000054d: PUSH1 0x02 0000054f: EXP 00000550: SUB 00000551: DUP3 00000552: AND 00000553: PUSH1 0x00 00000555: SWAP1 00000556: DUP2 00000557: MSTORE 00000558: PUSH1 0x02 0000055a: PUSH1 0x20 0000055c: MSTORE 0000055d: PUSH1 0x40 0000055f: SWAP1 00000560: KECCAK256 00000561: SLOAD 00000562: DUP3 00000563: SWAP1 00000564: PUSH1 0xff 00000566: AND 00000567: ISZERO 00000568: ISZERO 00000569: PUSH2 0x0571 0000056c: JUMPI 0000056d: PUSH1 0x00 0000056f: DUP1 00000570: REVERT 00000571: JUMPDEST 00000572: PUSH1 0x01 00000574: PUSH1 0xa0 00000576: PUSH1 0x02 00000578: EXP 00000579: SUB 0000057a: DUP4 0000057b: AND 0000057c: PUSH1 0x00 0000057e: SWAP1 0000057f: DUP2 00000580: MSTORE 00000581: PUSH1 0x02 00000583: PUSH1 0x20 00000585: MSTORE 00000586: PUSH1 0x40 00000588: DUP2 00000589: KECCAK256 0000058a: DUP1 0000058b: SLOAD 0000058c: PUSH1 0xff 0000058e: NOT 0000058f: AND 00000590: SWAP1 00000591: SSTORE 00000592: SWAP2 00000593: POP 00000594: JUMPDEST 00000595: PUSH1 0x03 00000597: SLOAD 00000598: PUSH1 0x00 0000059a: NOT 0000059b: ADD 0000059c: DUP3 0000059d: LT 0000059e: ISZERO 0000059f: PUSH2 0x0654 000005a2: JUMPI 000005a3: DUP3 000005a4: PUSH1 0x01 000005a6: PUSH1 0xa0 000005a8: PUSH1 0x02 000005aa: EXP 000005ab: SUB 000005ac: AND 000005ad: PUSH1 0x03 000005af: DUP4 000005b0: DUP2 000005b1: SLOAD 000005b2: DUP2 000005b3: LT 000005b4: ISZERO 000005b5: ISZERO 000005b6: PUSH2 0x05bb 000005b9: JUMPI 000005ba: INVALID 000005bb: JUMPDEST 000005bc: PUSH1 0x00 000005be: SWAP2 000005bf: DUP3 000005c0: MSTORE 000005c1: PUSH1 0x20 000005c3: SWAP1 000005c4: SWAP2 000005c5: KECCAK256 000005c6: ADD 000005c7: SLOAD 000005c8: PUSH1 0x01 000005ca: PUSH1 0xa0 000005cc: PUSH1 0x02 000005ce: EXP 000005cf: SUB 000005d0: AND 000005d1: EQ 000005d2: ISZERO 000005d3: PUSH2 0x0649 000005d6: JUMPI 000005d7: PUSH1 0x03 000005d9: DUP1 000005da: SLOAD 000005db: PUSH1 0x00 000005dd: NOT 000005de: DUP2 000005df: ADD 000005e0: SWAP1 000005e1: DUP2 000005e2: LT 000005e3: PUSH2 0x05e8 000005e6: JUMPI 000005e7: INVALID 000005e8: JUMPDEST 000005e9: PUSH1 0x00 000005eb: SWAP2 000005ec: DUP3 000005ed: MSTORE 000005ee: PUSH1 0x20 000005f0: SWAP1 000005f1: SWAP2 000005f2: KECCAK256 000005f3: ADD 000005f4: SLOAD 000005f5: PUSH1 0x03 000005f7: DUP1 000005f8: SLOAD 000005f9: PUSH1 0x01 000005fb: PUSH1 0xa0 000005fd: PUSH1 0x02 000005ff: EXP 00000600: SUB 00000601: SWAP1 00000602: SWAP3 00000603: AND 00000604: SWAP2 00000605: DUP5 00000606: SWAP1 00000607: DUP2 00000608: LT 00000609: PUSH2 0x060e 0000060c: JUMPI 0000060d: INVALID 0000060e: JUMPDEST 0000060f: PUSH1 0x00 00000611: SWAP2 00000612: DUP3 00000613: MSTORE 00000614: PUSH1 0x20 00000616: SWAP1 00000617: SWAP2 00000618: KECCAK256 00000619: ADD 0000061a: DUP1 0000061b: SLOAD 0000061c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000631: NOT 00000632: AND 00000633: PUSH1 0x01 00000635: PUSH1 0xa0 00000637: PUSH1 0x02 00000639: EXP 0000063a: SUB 0000063b: SWAP3 0000063c: SWAP1 0000063d: SWAP3 0000063e: AND 0000063f: SWAP2 00000640: SWAP1 00000641: SWAP2 00000642: OR 00000643: SWAP1 00000644: SSTORE 00000645: PUSH2 0x0654 00000648: JUMP 00000649: JUMPDEST 0000064a: PUSH1 0x01 0000064c: SWAP1 0000064d: SWAP2 0000064e: ADD 0000064f: SWAP1 00000650: PUSH2 0x0594 00000653: JUMP 00000654: JUMPDEST 00000655: PUSH1 0x03 00000657: DUP1 00000658: SLOAD 00000659: PUSH1 0x00 0000065b: NOT 0000065c: ADD 0000065d: SWAP1 0000065e: PUSH2 0x0667 00000661: SWAP1 00000662: DUP3 00000663: PUSH2 0x133a 00000666: JUMP 00000667: JUMPDEST 00000668: POP 00000669: PUSH1 0x03 0000066b: SLOAD 0000066c: PUSH1 0x04 0000066e: SLOAD 0000066f: GT 00000670: ISZERO 00000671: PUSH2 0x0680 00000674: JUMPI 00000675: PUSH1 0x03 00000677: SLOAD 00000678: PUSH2 0x0680 0000067b: SWAP1 0000067c: PUSH2 0x0d90 0000067f: JUMP 00000680: JUMPDEST 00000681: DUP3 00000682: PUSH1 0x01 00000684: PUSH1 0xa0 00000686: PUSH1 0x02 00000688: EXP 00000689: SUB 0000068a: AND 0000068b: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 000006ac: PUSH1 0x40 000006ae: MLOAD 000006af: PUSH1 0x40 000006b1: MLOAD 000006b2: DUP1 000006b3: SWAP2 000006b4: SUB 000006b5: SWAP1 000006b6: LOG2 000006b7: POP 000006b8: POP 000006b9: POP 000006ba: JUMP 000006bb: JUMPDEST 000006bc: CALLER 000006bd: PUSH1 0x01 000006bf: PUSH1 0xa0 000006c1: PUSH1 0x02 000006c3: EXP 000006c4: SUB 000006c5: DUP2 000006c6: AND 000006c7: PUSH1 0x00 000006c9: SWAP1 000006ca: DUP2 000006cb: MSTORE 000006cc: PUSH1 0x02 000006ce: PUSH1 0x20 000006d0: MSTORE 000006d1: PUSH1 0x40 000006d3: SWAP1 000006d4: KECCAK256 000006d5: SLOAD 000006d6: PUSH1 0xff 000006d8: AND 000006d9: ISZERO 000006da: ISZERO 000006db: PUSH2 0x06e3 000006de: JUMPI 000006df: PUSH1 0x00 000006e1: DUP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: PUSH1 0x00 000006e6: DUP3 000006e7: DUP2 000006e8: MSTORE 000006e9: PUSH1 0x01 000006eb: PUSH1 0x20 000006ed: SWAP1 000006ee: DUP2 000006ef: MSTORE 000006f0: PUSH1 0x40 000006f2: DUP1 000006f3: DUP4 000006f4: KECCAK256 000006f5: CALLER 000006f6: PUSH1 0x01 000006f8: PUSH1 0xa0 000006fa: PUSH1 0x02 000006fc: EXP 000006fd: SUB 000006fe: DUP2 000006ff: AND 00000700: DUP6 00000701: MSTORE 00000702: SWAP3 00000703: MSTORE 00000704: SWAP1 00000705: SWAP2 00000706: KECCAK256 00000707: SLOAD 00000708: DUP4 00000709: SWAP2 0000070a: SWAP1 0000070b: PUSH1 0xff 0000070d: AND 0000070e: ISZERO 0000070f: ISZERO 00000710: PUSH2 0x0718 00000713: JUMPI 00000714: PUSH1 0x00 00000716: DUP1 00000717: REVERT 00000718: JUMPDEST 00000719: PUSH1 0x00 0000071b: DUP5 0000071c: DUP2 0000071d: MSTORE 0000071e: PUSH1 0x20 00000720: DUP2 00000721: SWAP1 00000722: MSTORE 00000723: PUSH1 0x40 00000725: SWAP1 00000726: KECCAK256 00000727: PUSH1 0x03 00000729: ADD 0000072a: SLOAD 0000072b: DUP5 0000072c: SWAP1 0000072d: PUSH1 0xff 0000072f: AND 00000730: ISZERO 00000731: PUSH2 0x0739 00000734: JUMPI 00000735: PUSH1 0x00 00000737: DUP1 00000738: REVERT 00000739: JUMPDEST 0000073a: PUSH1 0x00 0000073c: DUP6 0000073d: DUP2 0000073e: MSTORE 0000073f: PUSH1 0x01 00000741: PUSH1 0x20 00000743: SWAP1 00000744: DUP2 00000745: MSTORE 00000746: PUSH1 0x40 00000748: DUP1 00000749: DUP4 0000074a: KECCAK256 0000074b: PUSH1 0x01 0000074d: PUSH1 0xa0 0000074f: PUSH1 0x02 00000751: EXP 00000752: SUB 00000753: CALLER 00000754: AND 00000755: DUP1 00000756: DUP6 00000757: MSTORE 00000758: SWAP3 00000759: MSTORE 0000075a: SWAP2 0000075b: DUP3 0000075c: SWAP1 0000075d: KECCAK256 0000075e: DUP1 0000075f: SLOAD 00000760: PUSH1 0xff 00000762: NOT 00000763: AND 00000764: SWAP1 00000765: SSTORE 00000766: DUP7 00000767: SWAP2 00000768: PUSH32 0xf6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e9 00000789: SWAP1 0000078a: MLOAD 0000078b: PUSH1 0x40 0000078d: MLOAD 0000078e: DUP1 0000078f: SWAP2 00000790: SUB 00000791: SWAP1 00000792: LOG3 00000793: POP 00000794: POP 00000795: POP 00000796: POP 00000797: POP 00000798: JUMP 00000799: JUMPDEST 0000079a: PUSH1 0x02 0000079c: PUSH1 0x20 0000079e: MSTORE 0000079f: PUSH1 0x00 000007a1: SWAP1 000007a2: DUP2 000007a3: MSTORE 000007a4: PUSH1 0x40 000007a6: SWAP1 000007a7: KECCAK256 000007a8: SLOAD 000007a9: PUSH1 0xff 000007ab: AND 000007ac: DUP2 000007ad: JUMP 000007ae: JUMPDEST 000007af: PUSH1 0x01 000007b1: PUSH1 0x20 000007b3: SWAP1 000007b4: DUP2 000007b5: MSTORE 000007b6: PUSH1 0x00 000007b8: SWAP3 000007b9: DUP4 000007ba: MSTORE 000007bb: PUSH1 0x40 000007bd: DUP1 000007be: DUP5 000007bf: KECCAK256 000007c0: SWAP1 000007c1: SWAP2 000007c2: MSTORE 000007c3: SWAP1 000007c4: DUP3 000007c5: MSTORE 000007c6: SWAP1 000007c7: KECCAK256 000007c8: SLOAD 000007c9: PUSH1 0xff 000007cb: AND 000007cc: DUP2 000007cd: JUMP 000007ce: JUMPDEST 000007cf: PUSH1 0x00 000007d1: DUP1 000007d2: JUMPDEST 000007d3: PUSH1 0x05 000007d5: SLOAD 000007d6: DUP2 000007d7: LT 000007d8: ISZERO 000007d9: PUSH2 0x0833 000007dc: JUMPI 000007dd: DUP4 000007de: DUP1 000007df: ISZERO 000007e0: PUSH2 0x07fb 000007e3: JUMPI 000007e4: POP 000007e5: PUSH1 0x00 000007e7: DUP2 000007e8: DUP2 000007e9: MSTORE 000007ea: PUSH1 0x20 000007ec: DUP2 000007ed: SWAP1 000007ee: MSTORE 000007ef: PUSH1 0x40 000007f1: SWAP1 000007f2: KECCAK256 000007f3: PUSH1 0x03 000007f5: ADD 000007f6: SLOAD 000007f7: PUSH1 0xff 000007f9: AND 000007fa: ISZERO 000007fb: JUMPDEST 000007fc: DUP1 000007fd: PUSH2 0x081f 00000800: JUMPI 00000801: POP 00000802: DUP3 00000803: DUP1 00000804: ISZERO 00000805: PUSH2 0x081f 00000808: JUMPI 00000809: POP 0000080a: PUSH1 0x00 0000080c: DUP2 0000080d: DUP2 0000080e: MSTORE 0000080f: PUSH1 0x20 00000811: DUP2 00000812: SWAP1 00000813: MSTORE 00000814: PUSH1 0x40 00000816: SWAP1 00000817: KECCAK256 00000818: PUSH1 0x03 0000081a: ADD 0000081b: SLOAD 0000081c: PUSH1 0xff 0000081e: AND 0000081f: JUMPDEST 00000820: ISZERO 00000821: PUSH2 0x082b 00000824: JUMPI 00000825: PUSH1 0x01 00000827: DUP3 00000828: ADD 00000829: SWAP2 0000082a: POP 0000082b: JUMPDEST 0000082c: PUSH1 0x01 0000082e: ADD 0000082f: PUSH2 0x07d2 00000832: JUMP 00000833: JUMPDEST 00000834: POP 00000835: SWAP3 00000836: SWAP2 00000837: POP 00000838: POP 00000839: JUMP 0000083a: JUMPDEST 0000083b: ADDRESS 0000083c: PUSH1 0x01 0000083e: PUSH1 0xa0 00000840: PUSH1 0x02 00000842: EXP 00000843: SUB 00000844: AND 00000845: CALLER 00000846: PUSH1 0x01 00000848: PUSH1 0xa0 0000084a: PUSH1 0x02 0000084c: EXP 0000084d: SUB 0000084e: AND 0000084f: EQ 00000850: ISZERO 00000851: ISZERO 00000852: PUSH2 0x085a 00000855: JUMPI 00000856: PUSH1 0x00 00000858: DUP1 00000859: REVERT 0000085a: JUMPDEST 0000085b: PUSH1 0x01 0000085d: PUSH1 0xa0 0000085f: PUSH1 0x02 00000861: EXP 00000862: SUB 00000863: DUP2 00000864: AND 00000865: PUSH1 0x00 00000867: SWAP1 00000868: DUP2 00000869: MSTORE 0000086a: PUSH1 0x02 0000086c: PUSH1 0x20 0000086e: MSTORE 0000086f: PUSH1 0x40 00000871: SWAP1 00000872: KECCAK256 00000873: SLOAD 00000874: DUP2 00000875: SWAP1 00000876: PUSH1 0xff 00000878: AND 00000879: ISZERO 0000087a: PUSH2 0x0882 0000087d: JUMPI 0000087e: PUSH1 0x00 00000880: DUP1 00000881: REVERT 00000882: JUMPDEST 00000883: DUP2 00000884: PUSH1 0x01 00000886: PUSH1 0xa0 00000888: PUSH1 0x02 0000088a: EXP 0000088b: SUB 0000088c: DUP2 0000088d: AND 0000088e: ISZERO 0000088f: ISZERO 00000890: PUSH2 0x0898 00000893: JUMPI 00000894: PUSH1 0x00 00000896: DUP1 00000897: REVERT 00000898: JUMPDEST 00000899: PUSH1 0x03 0000089b: DUP1 0000089c: SLOAD 0000089d: SWAP1 0000089e: POP 0000089f: PUSH1 0x01 000008a1: ADD 000008a2: PUSH1 0x04 000008a4: SLOAD 000008a5: PUSH1 0x32 000008a7: DUP3 000008a8: GT 000008a9: DUP1 000008aa: PUSH2 0x08b2 000008ad: JUMPI 000008ae: POP 000008af: DUP2 000008b0: DUP2 000008b1: GT 000008b2: JUMPDEST 000008b3: DUP1 000008b4: PUSH2 0x08bb 000008b7: JUMPI 000008b8: POP 000008b9: DUP1 000008ba: ISZERO 000008bb: JUMPDEST 000008bc: DUP1 000008bd: PUSH2 0x08c4 000008c0: JUMPI 000008c1: POP 000008c2: DUP2 000008c3: ISZERO 000008c4: JUMPDEST 000008c5: ISZERO 000008c6: PUSH2 0x08ce 000008c9: JUMPI 000008ca: PUSH1 0x00 000008cc: DUP1 000008cd: REVERT 000008ce: JUMPDEST 000008cf: PUSH1 0x01 000008d1: PUSH1 0xa0 000008d3: PUSH1 0x02 000008d5: EXP 000008d6: SUB 000008d7: DUP6 000008d8: AND 000008d9: PUSH1 0x00 000008db: SWAP1 000008dc: DUP2 000008dd: MSTORE 000008de: PUSH1 0x02 000008e0: PUSH1 0x20 000008e2: MSTORE 000008e3: PUSH1 0x40 000008e5: SWAP1 000008e6: KECCAK256 000008e7: DUP1 000008e8: SLOAD 000008e9: PUSH1 0xff 000008eb: NOT 000008ec: AND 000008ed: PUSH1 0x01 000008ef: SWAP1 000008f0: DUP2 000008f1: OR 000008f2: SWAP1 000008f3: SWAP2 000008f4: SSTORE 000008f5: PUSH1 0x03 000008f7: DUP1 000008f8: SLOAD 000008f9: SWAP1 000008fa: SWAP2 000008fb: DUP2 000008fc: ADD 000008fd: PUSH2 0x0906 00000900: DUP4 00000901: DUP3 00000902: PUSH2 0x133a 00000905: JUMP 00000906: JUMPDEST 00000907: POP 00000908: PUSH1 0x00 0000090a: SWAP2 0000090b: DUP3 0000090c: MSTORE 0000090d: PUSH1 0x20 0000090f: SWAP1 00000910: SWAP2 00000911: KECCAK256 00000912: ADD 00000913: DUP1 00000914: SLOAD 00000915: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000092a: NOT 0000092b: AND 0000092c: PUSH1 0x01 0000092e: PUSH1 0xa0 00000930: PUSH1 0x02 00000932: EXP 00000933: SUB 00000934: DUP8 00000935: AND 00000936: SWAP1 00000937: DUP2 00000938: OR 00000939: SWAP1 0000093a: SWAP2 0000093b: SSTORE 0000093c: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 0000095d: PUSH1 0x40 0000095f: MLOAD 00000960: PUSH1 0x40 00000962: MLOAD 00000963: DUP1 00000964: SWAP2 00000965: SUB 00000966: SWAP1 00000967: LOG2 00000968: POP 00000969: POP 0000096a: POP 0000096b: POP 0000096c: POP 0000096d: JUMP 0000096e: JUMPDEST 0000096f: PUSH1 0x00 00000971: DUP1 00000972: DUP1 00000973: JUMPDEST 00000974: PUSH1 0x03 00000976: SLOAD 00000977: DUP2 00000978: LT 00000979: ISZERO 0000097a: PUSH2 0x09eb 0000097d: JUMPI 0000097e: PUSH1 0x00 00000980: DUP5 00000981: DUP2 00000982: MSTORE 00000983: PUSH1 0x01 00000985: PUSH1 0x20 00000987: MSTORE 00000988: PUSH1 0x40 0000098a: DUP2 0000098b: KECCAK256 0000098c: PUSH1 0x03 0000098e: DUP1 0000098f: SLOAD 00000990: SWAP2 00000991: SWAP3 00000992: SWAP2 00000993: DUP5 00000994: SWAP1 00000995: DUP2 00000996: LT 00000997: PUSH2 0x099c 0000099a: JUMPI 0000099b: INVALID 0000099c: JUMPDEST 0000099d: PUSH1 0x00 0000099f: SWAP2 000009a0: DUP3 000009a1: MSTORE 000009a2: PUSH1 0x20 000009a4: DUP1 000009a5: DUP4 000009a6: KECCAK256 000009a7: SWAP1 000009a8: SWAP2 000009a9: ADD 000009aa: SLOAD 000009ab: PUSH1 0x01 000009ad: PUSH1 0xa0 000009af: PUSH1 0x02 000009b1: EXP 000009b2: SUB 000009b3: AND 000009b4: DUP4 000009b5: MSTORE 000009b6: DUP3 000009b7: ADD 000009b8: SWAP3 000009b9: SWAP1 000009ba: SWAP3 000009bb: MSTORE 000009bc: PUSH1 0x40 000009be: ADD 000009bf: SWAP1 000009c0: KECCAK256 000009c1: SLOAD 000009c2: PUSH1 0xff 000009c4: AND 000009c5: ISZERO 000009c6: PUSH2 0x09d0 000009c9: JUMPI 000009ca: PUSH1 0x01 000009cc: DUP3 000009cd: ADD 000009ce: SWAP2 000009cf: POP 000009d0: JUMPDEST 000009d1: PUSH1 0x04 000009d3: SLOAD 000009d4: DUP3 000009d5: EQ 000009d6: ISZERO 000009d7: PUSH2 0x09e3 000009da: JUMPI 000009db: PUSH1 0x01 000009dd: SWAP3 000009de: POP 000009df: PUSH2 0x09eb 000009e2: JUMP 000009e3: JUMPDEST 000009e4: PUSH1 0x01 000009e6: ADD 000009e7: PUSH2 0x0973 000009ea: JUMP 000009eb: JUMPDEST 000009ec: POP 000009ed: POP 000009ee: SWAP2 000009ef: SWAP1 000009f0: POP 000009f1: JUMP 000009f2: JUMPDEST 000009f3: PUSH1 0x00 000009f5: DUP1 000009f6: JUMPDEST 000009f7: PUSH1 0x03 000009f9: SLOAD 000009fa: DUP2 000009fb: LT 000009fc: ISZERO 000009fd: PUSH2 0x0a5b 00000a00: JUMPI 00000a01: PUSH1 0x00 00000a03: DUP4 00000a04: DUP2 00000a05: MSTORE 00000a06: PUSH1 0x01 00000a08: PUSH1 0x20 00000a0a: MSTORE 00000a0b: PUSH1 0x40 00000a0d: DUP2 00000a0e: KECCAK256 00000a0f: PUSH1 0x03 00000a11: DUP1 00000a12: SLOAD 00000a13: SWAP2 00000a14: SWAP3 00000a15: SWAP2 00000a16: DUP5 00000a17: SWAP1 00000a18: DUP2 00000a19: LT 00000a1a: PUSH2 0x0a1f 00000a1d: JUMPI 00000a1e: INVALID 00000a1f: JUMPDEST 00000a20: PUSH1 0x00 00000a22: SWAP2 00000a23: DUP3 00000a24: MSTORE 00000a25: PUSH1 0x20 00000a27: DUP1 00000a28: DUP4 00000a29: KECCAK256 00000a2a: SWAP1 00000a2b: SWAP2 00000a2c: ADD 00000a2d: SLOAD 00000a2e: PUSH1 0x01 00000a30: PUSH1 0xa0 00000a32: PUSH1 0x02 00000a34: EXP 00000a35: SUB 00000a36: AND 00000a37: DUP4 00000a38: MSTORE 00000a39: DUP3 00000a3a: ADD 00000a3b: SWAP3 00000a3c: SWAP1 00000a3d: SWAP3 00000a3e: MSTORE 00000a3f: PUSH1 0x40 00000a41: ADD 00000a42: SWAP1 00000a43: KECCAK256 00000a44: SLOAD 00000a45: PUSH1 0xff 00000a47: AND 00000a48: ISZERO 00000a49: PUSH2 0x0a53 00000a4c: JUMPI 00000a4d: PUSH1 0x01 00000a4f: DUP3 00000a50: ADD 00000a51: SWAP2 00000a52: POP 00000a53: JUMPDEST 00000a54: PUSH1 0x01 00000a56: ADD 00000a57: PUSH2 0x09f6 00000a5a: JUMP 00000a5b: JUMPDEST 00000a5c: POP 00000a5d: SWAP2 00000a5e: SWAP1 00000a5f: POP 00000a60: JUMP 00000a61: JUMPDEST 00000a62: PUSH1 0x00 00000a64: PUSH1 0x20 00000a66: DUP2 00000a67: SWAP1 00000a68: MSTORE 00000a69: SWAP1 00000a6a: DUP2 00000a6b: MSTORE 00000a6c: PUSH1 0x40 00000a6e: SWAP1 00000a6f: KECCAK256 00000a70: DUP1 00000a71: SLOAD 00000a72: PUSH1 0x01 00000a74: DUP3 00000a75: ADD 00000a76: SLOAD 00000a77: PUSH1 0x03 00000a79: DUP4 00000a7a: ADD 00000a7b: SLOAD 00000a7c: PUSH1 0x01 00000a7e: PUSH1 0xa0 00000a80: PUSH1 0x02 00000a82: EXP 00000a83: SUB 00000a84: SWAP1 00000a85: SWAP3 00000a86: AND 00000a87: SWAP3 00000a88: SWAP1 00000a89: SWAP2 00000a8a: PUSH1 0x02 00000a8c: SWAP1 00000a8d: SWAP2 00000a8e: ADD 00000a8f: SWAP1 00000a90: PUSH1 0xff 00000a92: AND 00000a93: DUP5 00000a94: JUMP 00000a95: JUMPDEST 00000a96: PUSH2 0x0a9d 00000a99: PUSH2 0x135e 00000a9c: JUMP 00000a9d: JUMPDEST 00000a9e: PUSH1 0x03 00000aa0: DUP1 00000aa1: SLOAD 00000aa2: DUP1 00000aa3: PUSH1 0x20 00000aa5: MUL 00000aa6: PUSH1 0x20 00000aa8: ADD 00000aa9: PUSH1 0x40 00000aab: MLOAD 00000aac: SWAP1 00000aad: DUP2 00000aae: ADD 00000aaf: PUSH1 0x40 00000ab1: MSTORE 00000ab2: DUP1 00000ab3: SWAP3 00000ab4: SWAP2 00000ab5: SWAP1 00000ab6: DUP2 00000ab7: DUP2 00000ab8: MSTORE 00000ab9: PUSH1 0x20 00000abb: ADD 00000abc: DUP3 00000abd: DUP1 00000abe: SLOAD 00000abf: DUP1 00000ac0: ISZERO 00000ac1: PUSH2 0x0af3 00000ac4: JUMPI 00000ac5: PUSH1 0x20 00000ac7: MUL 00000ac8: DUP3 00000ac9: ADD 00000aca: SWAP2 00000acb: SWAP1 00000acc: PUSH1 0x00 00000ace: MSTORE 00000acf: PUSH1 0x20 00000ad1: PUSH1 0x00 00000ad3: KECCAK256 00000ad4: SWAP1 00000ad5: JUMPDEST 00000ad6: DUP2 00000ad7: SLOAD 00000ad8: PUSH1 0x01 00000ada: PUSH1 0xa0 00000adc: PUSH1 0x02 00000ade: EXP 00000adf: SUB 00000ae0: AND 00000ae1: DUP2 00000ae2: MSTORE 00000ae3: PUSH1 0x01 00000ae5: SWAP1 00000ae6: SWAP2 00000ae7: ADD 00000ae8: SWAP1 00000ae9: PUSH1 0x20 00000aeb: ADD 00000aec: DUP1 00000aed: DUP4 00000aee: GT 00000aef: PUSH2 0x0ad5 00000af2: JUMPI 00000af3: JUMPDEST 00000af4: POP 00000af5: POP 00000af6: POP 00000af7: POP 00000af8: POP 00000af9: SWAP1 00000afa: POP 00000afb: JUMPDEST 00000afc: SWAP1 00000afd: JUMP 00000afe: JUMPDEST 00000aff: PUSH2 0x0b06 00000b02: PUSH2 0x135e 00000b05: JUMP 00000b06: JUMPDEST 00000b07: PUSH2 0x0b0e 00000b0a: PUSH2 0x135e 00000b0d: JUMP 00000b0e: JUMPDEST 00000b0f: PUSH1 0x00 00000b11: DUP1 00000b12: PUSH1 0x05 00000b14: SLOAD 00000b15: PUSH1 0x40 00000b17: MLOAD 00000b18: DUP1 00000b19: MSIZE 00000b1a: LT 00000b1b: PUSH2 0x0b21 00000b1e: JUMPI 00000b1f: POP 00000b20: MSIZE 00000b21: JUMPDEST 00000b22: SWAP1 00000b23: DUP1 00000b24: DUP3 00000b25: MSTORE 00000b26: DUP1 00000b27: PUSH1 0x20 00000b29: MUL 00000b2a: PUSH1 0x20 00000b2c: ADD 00000b2d: DUP3 00000b2e: ADD 00000b2f: PUSH1 0x40 00000b31: MSTORE 00000b32: POP 00000b33: SWAP3 00000b34: POP 00000b35: PUSH1 0x00 00000b37: SWAP2 00000b38: POP 00000b39: PUSH1 0x00 00000b3b: SWAP1 00000b3c: POP 00000b3d: JUMPDEST 00000b3e: PUSH1 0x05 00000b40: SLOAD 00000b41: DUP2 00000b42: LT 00000b43: ISZERO 00000b44: PUSH2 0x0bb6 00000b47: JUMPI 00000b48: DUP6 00000b49: DUP1 00000b4a: ISZERO 00000b4b: PUSH2 0x0b66 00000b4e: JUMPI 00000b4f: POP 00000b50: PUSH1 0x00 00000b52: DUP2 00000b53: DUP2 00000b54: MSTORE 00000b55: PUSH1 0x20 00000b57: DUP2 00000b58: SWAP1 00000b59: MSTORE 00000b5a: PUSH1 0x40 00000b5c: SWAP1 00000b5d: KECCAK256 00000b5e: PUSH1 0x03 00000b60: ADD 00000b61: SLOAD 00000b62: PUSH1 0xff 00000b64: AND 00000b65: ISZERO 00000b66: JUMPDEST 00000b67: DUP1 00000b68: PUSH2 0x0b8a 00000b6b: JUMPI 00000b6c: POP 00000b6d: DUP5 00000b6e: DUP1 00000b6f: ISZERO 00000b70: PUSH2 0x0b8a 00000b73: JUMPI 00000b74: POP 00000b75: PUSH1 0x00 00000b77: DUP2 00000b78: DUP2 00000b79: MSTORE 00000b7a: PUSH1 0x20 00000b7c: DUP2 00000b7d: SWAP1 00000b7e: MSTORE 00000b7f: PUSH1 0x40 00000b81: SWAP1 00000b82: KECCAK256 00000b83: PUSH1 0x03 00000b85: ADD 00000b86: SLOAD 00000b87: PUSH1 0xff 00000b89: AND 00000b8a: JUMPDEST 00000b8b: ISZERO 00000b8c: PUSH2 0x0bae 00000b8f: JUMPI 00000b90: DUP1 00000b91: DUP4 00000b92: DUP4 00000b93: DUP2 00000b94: MLOAD 00000b95: DUP2 00000b96: LT 00000b97: PUSH2 0x0b9c 00000b9a: JUMPI 00000b9b: INVALID 00000b9c: JUMPDEST 00000b9d: PUSH1 0x20 00000b9f: SWAP1 00000ba0: DUP2 00000ba1: MUL 00000ba2: SWAP1 00000ba3: SWAP2 00000ba4: ADD 00000ba5: ADD 00000ba6: MSTORE 00000ba7: PUSH1 0x01 00000ba9: SWAP2 00000baa: SWAP1 00000bab: SWAP2 00000bac: ADD 00000bad: SWAP1 00000bae: JUMPDEST 00000baf: PUSH1 0x01 00000bb1: ADD 00000bb2: PUSH2 0x0b3d 00000bb5: JUMP 00000bb6: JUMPDEST 00000bb7: DUP8 00000bb8: DUP8 00000bb9: SUB 00000bba: PUSH1 0x40 00000bbc: MLOAD 00000bbd: DUP1 00000bbe: MSIZE 00000bbf: LT 00000bc0: PUSH2 0x0bc6 00000bc3: JUMPI 00000bc4: POP 00000bc5: MSIZE 00000bc6: JUMPDEST 00000bc7: SWAP1 00000bc8: DUP1 00000bc9: DUP3 00000bca: MSTORE 00000bcb: DUP1 00000bcc: PUSH1 0x20 00000bce: MUL 00000bcf: PUSH1 0x20 00000bd1: ADD 00000bd2: DUP3 00000bd3: ADD 00000bd4: PUSH1 0x40 00000bd6: MSTORE 00000bd7: POP 00000bd8: SWAP4 00000bd9: POP 00000bda: DUP8 00000bdb: SWAP1 00000bdc: POP 00000bdd: JUMPDEST 00000bde: DUP7 00000bdf: DUP2 00000be0: LT 00000be1: ISZERO 00000be2: PUSH2 0x0c1b 00000be5: JUMPI 00000be6: DUP3 00000be7: DUP2 00000be8: DUP2 00000be9: MLOAD 00000bea: DUP2 00000beb: LT 00000bec: PUSH2 0x0bf1 00000bef: JUMPI 00000bf0: INVALID 00000bf1: JUMPDEST 00000bf2: SWAP1 00000bf3: PUSH1 0x20 00000bf5: ADD 00000bf6: SWAP1 00000bf7: PUSH1 0x20 00000bf9: MUL 00000bfa: ADD 00000bfb: MLOAD 00000bfc: DUP5 00000bfd: DUP10 00000bfe: DUP4 00000bff: SUB 00000c00: DUP2 00000c01: MLOAD 00000c02: DUP2 00000c03: LT 00000c04: PUSH2 0x0c09 00000c07: JUMPI 00000c08: INVALID 00000c09: JUMPDEST 00000c0a: PUSH1 0x20 00000c0c: SWAP1 00000c0d: DUP2 00000c0e: MUL 00000c0f: SWAP1 00000c10: SWAP2 00000c11: ADD 00000c12: ADD 00000c13: MSTORE 00000c14: PUSH1 0x01 00000c16: ADD 00000c17: PUSH2 0x0bdd 00000c1a: JUMP 00000c1b: JUMPDEST 00000c1c: POP 00000c1d: POP 00000c1e: POP 00000c1f: SWAP5 00000c20: SWAP4 00000c21: POP 00000c22: POP 00000c23: POP 00000c24: POP 00000c25: JUMP 00000c26: JUMPDEST 00000c27: PUSH2 0x0c2e 00000c2a: PUSH2 0x135e 00000c2d: JUMP 00000c2e: JUMPDEST 00000c2f: PUSH2 0x0c36 00000c32: PUSH2 0x135e 00000c35: JUMP 00000c36: JUMPDEST 00000c37: PUSH1 0x03 00000c39: SLOAD 00000c3a: PUSH1 0x00 00000c3c: SWAP1 00000c3d: DUP2 00000c3e: SWAP1 00000c3f: PUSH1 0x40 00000c41: MLOAD 00000c42: DUP1 00000c43: MSIZE 00000c44: LT 00000c45: PUSH2 0x0c4b 00000c48: JUMPI 00000c49: POP 00000c4a: MSIZE 00000c4b: JUMPDEST 00000c4c: SWAP1 00000c4d: DUP1 00000c4e: DUP3 00000c4f: MSTORE 00000c50: DUP1 00000c51: PUSH1 0x20 00000c53: MUL 00000c54: PUSH1 0x20 00000c56: ADD 00000c57: DUP3 00000c58: ADD 00000c59: PUSH1 0x40 00000c5b: MSTORE 00000c5c: POP 00000c5d: SWAP3 00000c5e: POP 00000c5f: PUSH1 0x00 00000c61: SWAP2 00000c62: POP 00000c63: PUSH1 0x00 00000c65: SWAP1 00000c66: POP 00000c67: JUMPDEST 00000c68: PUSH1 0x03 00000c6a: SLOAD 00000c6b: DUP2 00000c6c: LT 00000c6d: ISZERO 00000c6e: PUSH2 0x0d13 00000c71: JUMPI 00000c72: PUSH1 0x00 00000c74: DUP6 00000c75: DUP2 00000c76: MSTORE 00000c77: PUSH1 0x01 00000c79: PUSH1 0x20 00000c7b: MSTORE 00000c7c: PUSH1 0x40 00000c7e: DUP2 00000c7f: KECCAK256 00000c80: PUSH1 0x03 00000c82: DUP1 00000c83: SLOAD 00000c84: SWAP2 00000c85: SWAP3 00000c86: SWAP2 00000c87: DUP5 00000c88: SWAP1 00000c89: DUP2 00000c8a: LT 00000c8b: PUSH2 0x0c90 00000c8e: JUMPI 00000c8f: INVALID 00000c90: JUMPDEST 00000c91: PUSH1 0x00 00000c93: SWAP2 00000c94: DUP3 00000c95: MSTORE 00000c96: PUSH1 0x20 00000c98: DUP1 00000c99: DUP4 00000c9a: KECCAK256 00000c9b: SWAP1 00000c9c: SWAP2 00000c9d: ADD 00000c9e: SLOAD 00000c9f: PUSH1 0x01 00000ca1: PUSH1 0xa0 00000ca3: PUSH1 0x02 00000ca5: EXP 00000ca6: SUB 00000ca7: AND 00000ca8: DUP4 00000ca9: MSTORE 00000caa: DUP3 00000cab: ADD 00000cac: SWAP3 00000cad: SWAP1 00000cae: SWAP3 00000caf: MSTORE 00000cb0: PUSH1 0x40 00000cb2: ADD 00000cb3: SWAP1 00000cb4: KECCAK256 00000cb5: SLOAD 00000cb6: PUSH1 0xff 00000cb8: AND 00000cb9: ISZERO 00000cba: PUSH2 0x0d0b 00000cbd: JUMPI 00000cbe: PUSH1 0x03 00000cc0: DUP1 00000cc1: SLOAD 00000cc2: DUP3 00000cc3: SWAP1 00000cc4: DUP2 00000cc5: LT 00000cc6: PUSH2 0x0ccb 00000cc9: JUMPI 00000cca: INVALID 00000ccb: JUMPDEST 00000ccc: PUSH1 0x00 00000cce: SWAP2 00000ccf: DUP3 00000cd0: MSTORE 00000cd1: PUSH1 0x20 00000cd3: SWAP1 00000cd4: SWAP2 00000cd5: KECCAK256 00000cd6: ADD 00000cd7: SLOAD 00000cd8: PUSH1 0x01 00000cda: PUSH1 0xa0 00000cdc: PUSH1 0x02 00000cde: EXP 00000cdf: SUB 00000ce0: AND 00000ce1: DUP4 00000ce2: DUP4 00000ce3: DUP2 00000ce4: MLOAD 00000ce5: DUP2 00000ce6: LT 00000ce7: PUSH2 0x0cec 00000cea: JUMPI 00000ceb: INVALID 00000cec: JUMPDEST 00000ced: PUSH1 0x01 00000cef: PUSH1 0xa0 00000cf1: PUSH1 0x02 00000cf3: EXP 00000cf4: SUB 00000cf5: SWAP1 00000cf6: SWAP3 00000cf7: AND 00000cf8: PUSH1 0x20 00000cfa: SWAP3 00000cfb: DUP4 00000cfc: MUL 00000cfd: SWAP1 00000cfe: SWAP2 00000cff: ADD 00000d00: SWAP1 00000d01: SWAP2 00000d02: ADD 00000d03: MSTORE 00000d04: PUSH1 0x01 00000d06: SWAP2 00000d07: SWAP1 00000d08: SWAP2 00000d09: ADD 00000d0a: SWAP1 00000d0b: JUMPDEST 00000d0c: PUSH1 0x01 00000d0e: ADD 00000d0f: PUSH2 0x0c67 00000d12: JUMP 00000d13: JUMPDEST 00000d14: DUP2 00000d15: PUSH1 0x40 00000d17: MLOAD 00000d18: DUP1 00000d19: MSIZE 00000d1a: LT 00000d1b: PUSH2 0x0d21 00000d1e: JUMPI 00000d1f: POP 00000d20: MSIZE 00000d21: JUMPDEST 00000d22: SWAP1 00000d23: DUP1 00000d24: DUP3 00000d25: MSTORE 00000d26: DUP1 00000d27: PUSH1 0x20 00000d29: MUL 00000d2a: PUSH1 0x20 00000d2c: ADD 00000d2d: DUP3 00000d2e: ADD 00000d2f: PUSH1 0x40 00000d31: MSTORE 00000d32: POP 00000d33: SWAP4 00000d34: POP 00000d35: PUSH1 0x00 00000d37: SWAP1 00000d38: POP 00000d39: JUMPDEST 00000d3a: DUP2 00000d3b: DUP2 00000d3c: LT 00000d3d: ISZERO 00000d3e: PUSH2 0x0d82 00000d41: JUMPI 00000d42: DUP3 00000d43: DUP2 00000d44: DUP2 00000d45: MLOAD 00000d46: DUP2 00000d47: LT 00000d48: PUSH2 0x0d4d 00000d4b: JUMPI 00000d4c: INVALID 00000d4d: JUMPDEST 00000d4e: SWAP1 00000d4f: PUSH1 0x20 00000d51: ADD 00000d52: SWAP1 00000d53: PUSH1 0x20 00000d55: MUL 00000d56: ADD 00000d57: MLOAD 00000d58: DUP5 00000d59: DUP3 00000d5a: DUP2 00000d5b: MLOAD 00000d5c: DUP2 00000d5d: LT 00000d5e: PUSH2 0x0d63 00000d61: JUMPI 00000d62: INVALID 00000d63: JUMPDEST 00000d64: PUSH1 0x01 00000d66: PUSH1 0xa0 00000d68: PUSH1 0x02 00000d6a: EXP 00000d6b: SUB 00000d6c: SWAP1 00000d6d: SWAP3 00000d6e: AND 00000d6f: PUSH1 0x20 00000d71: SWAP3 00000d72: DUP4 00000d73: MUL 00000d74: SWAP1 00000d75: SWAP2 00000d76: ADD 00000d77: SWAP1 00000d78: SWAP2 00000d79: ADD 00000d7a: MSTORE 00000d7b: PUSH1 0x01 00000d7d: ADD 00000d7e: PUSH2 0x0d39 00000d81: JUMP 00000d82: JUMPDEST 00000d83: POP 00000d84: POP 00000d85: POP 00000d86: SWAP2 00000d87: SWAP1 00000d88: POP 00000d89: JUMP 00000d8a: JUMPDEST 00000d8b: PUSH1 0x05 00000d8d: SLOAD 00000d8e: DUP2 00000d8f: JUMP 00000d90: JUMPDEST 00000d91: ADDRESS 00000d92: PUSH1 0x01 00000d94: PUSH1 0xa0 00000d96: PUSH1 0x02 00000d98: EXP 00000d99: SUB 00000d9a: AND 00000d9b: CALLER 00000d9c: PUSH1 0x01 00000d9e: PUSH1 0xa0 00000da0: PUSH1 0x02 00000da2: EXP 00000da3: SUB 00000da4: AND 00000da5: EQ 00000da6: ISZERO 00000da7: ISZERO 00000da8: PUSH2 0x0db0 00000dab: JUMPI 00000dac: PUSH1 0x00 00000dae: DUP1 00000daf: REVERT 00000db0: JUMPDEST 00000db1: PUSH1 0x03 00000db3: SLOAD 00000db4: DUP2 00000db5: PUSH1 0x32 00000db7: DUP3 00000db8: GT 00000db9: DUP1 00000dba: PUSH2 0x0dc2 00000dbd: JUMPI 00000dbe: POP 00000dbf: DUP2 00000dc0: DUP2 00000dc1: GT 00000dc2: JUMPDEST 00000dc3: DUP1 00000dc4: PUSH2 0x0dcb 00000dc7: JUMPI 00000dc8: POP 00000dc9: DUP1 00000dca: ISZERO 00000dcb: JUMPDEST 00000dcc: DUP1 00000dcd: PUSH2 0x0dd4 00000dd0: JUMPI 00000dd1: POP 00000dd2: DUP2 00000dd3: ISZERO 00000dd4: JUMPDEST 00000dd5: ISZERO 00000dd6: PUSH2 0x0dde 00000dd9: JUMPI 00000dda: PUSH1 0x00 00000ddc: DUP1 00000ddd: REVERT 00000dde: JUMPDEST 00000ddf: PUSH1 0x04 00000de1: DUP4 00000de2: SWAP1 00000de3: SSTORE 00000de4: PUSH32 0xa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a 00000e05: DUP4 00000e06: PUSH1 0x40 00000e08: MLOAD 00000e09: SWAP1 00000e0a: DUP2 00000e0b: MSTORE 00000e0c: PUSH1 0x20 00000e0e: ADD 00000e0f: PUSH1 0x40 00000e11: MLOAD 00000e12: DUP1 00000e13: SWAP2 00000e14: SUB 00000e15: SWAP1 00000e16: LOG1 00000e17: POP 00000e18: POP 00000e19: POP 00000e1a: JUMP 00000e1b: JUMPDEST 00000e1c: CALLER 00000e1d: PUSH1 0x01 00000e1f: PUSH1 0xa0 00000e21: PUSH1 0x02 00000e23: EXP 00000e24: SUB 00000e25: DUP2 00000e26: AND 00000e27: PUSH1 0x00 00000e29: SWAP1 00000e2a: DUP2 00000e2b: MSTORE 00000e2c: PUSH1 0x02 00000e2e: PUSH1 0x20 00000e30: MSTORE 00000e31: PUSH1 0x40 00000e33: SWAP1 00000e34: KECCAK256 00000e35: SLOAD 00000e36: PUSH1 0xff 00000e38: AND 00000e39: ISZERO 00000e3a: ISZERO 00000e3b: PUSH2 0x0e43 00000e3e: JUMPI 00000e3f: PUSH1 0x00 00000e41: DUP1 00000e42: REVERT 00000e43: JUMPDEST 00000e44: PUSH1 0x00 00000e46: DUP3 00000e47: DUP2 00000e48: MSTORE 00000e49: PUSH1 0x20 00000e4b: DUP2 00000e4c: SWAP1 00000e4d: MSTORE 00000e4e: PUSH1 0x40 00000e50: SWAP1 00000e51: KECCAK256 00000e52: SLOAD 00000e53: DUP3 00000e54: SWAP1 00000e55: PUSH1 0x01 00000e57: PUSH1 0xa0 00000e59: PUSH1 0x02 00000e5b: EXP 00000e5c: SUB 00000e5d: AND 00000e5e: ISZERO 00000e5f: ISZERO 00000e60: PUSH2 0x0e68 00000e63: JUMPI 00000e64: PUSH1 0x00 00000e66: DUP1 00000e67: REVERT 00000e68: JUMPDEST 00000e69: PUSH1 0x00 00000e6b: DUP4 00000e6c: DUP2 00000e6d: MSTORE 00000e6e: PUSH1 0x01 00000e70: PUSH1 0x20 00000e72: SWAP1 00000e73: DUP2 00000e74: MSTORE 00000e75: PUSH1 0x40 00000e77: DUP1 00000e78: DUP4 00000e79: KECCAK256 00000e7a: CALLER 00000e7b: PUSH1 0x01 00000e7d: PUSH1 0xa0 00000e7f: PUSH1 0x02 00000e81: EXP 00000e82: SUB 00000e83: DUP2 00000e84: AND 00000e85: DUP6 00000e86: MSTORE 00000e87: SWAP3 00000e88: MSTORE 00000e89: SWAP1 00000e8a: SWAP2 00000e8b: KECCAK256 00000e8c: SLOAD 00000e8d: DUP5 00000e8e: SWAP2 00000e8f: SWAP1 00000e90: PUSH1 0xff 00000e92: AND 00000e93: ISZERO 00000e94: PUSH2 0x0e9c 00000e97: JUMPI 00000e98: PUSH1 0x00 00000e9a: DUP1 00000e9b: REVERT 00000e9c: JUMPDEST 00000e9d: PUSH1 0x00 00000e9f: DUP6 00000ea0: DUP2 00000ea1: MSTORE 00000ea2: PUSH1 0x01 00000ea4: PUSH1 0x20 00000ea6: DUP2 00000ea7: DUP2 00000ea8: MSTORE 00000ea9: PUSH1 0x40 00000eab: DUP1 00000eac: DUP5 00000ead: KECCAK256 00000eae: PUSH1 0x01 00000eb0: PUSH1 0xa0 00000eb2: PUSH1 0x02 00000eb4: EXP 00000eb5: SUB 00000eb6: CALLER 00000eb7: AND 00000eb8: DUP1 00000eb9: DUP7 00000eba: MSTORE 00000ebb: SWAP3 00000ebc: MSTORE 00000ebd: SWAP3 00000ebe: DUP4 00000ebf: SWAP1 00000ec0: KECCAK256 00000ec1: DUP1 00000ec2: SLOAD 00000ec3: PUSH1 0xff 00000ec5: NOT 00000ec6: AND 00000ec7: SWAP1 00000ec8: SWAP3 00000ec9: OR 00000eca: SWAP1 00000ecb: SWAP2 00000ecc: SSTORE 00000ecd: DUP7 00000ece: SWAP2 00000ecf: PUSH32 0x4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef 00000ef0: SWAP1 00000ef1: MLOAD 00000ef2: PUSH1 0x40 00000ef4: MLOAD 00000ef5: DUP1 00000ef6: SWAP2 00000ef7: SUB 00000ef8: SWAP1 00000ef9: LOG3 00000efa: PUSH2 0x0f02 00000efd: DUP6 00000efe: PUSH2 0x10e1 00000f01: JUMP 00000f02: JUMPDEST 00000f03: POP 00000f04: POP 00000f05: POP 00000f06: POP 00000f07: POP 00000f08: JUMP 00000f09: JUMPDEST 00000f0a: PUSH1 0x00 00000f0c: PUSH2 0x0f16 00000f0f: DUP5 00000f10: DUP5 00000f11: DUP5 00000f12: PUSH2 0x123d 00000f15: JUMP 00000f16: JUMPDEST 00000f17: SWAP1 00000f18: POP 00000f19: PUSH2 0x0f21 00000f1c: DUP2 00000f1d: PUSH2 0x0e1b 00000f20: JUMP 00000f21: JUMPDEST 00000f22: SWAP4 00000f23: SWAP3 00000f24: POP 00000f25: POP 00000f26: POP 00000f27: JUMP 00000f28: JUMPDEST 00000f29: PUSH1 0x32 00000f2b: DUP2 00000f2c: JUMP 00000f2d: JUMPDEST 00000f2e: PUSH1 0x04 00000f30: SLOAD 00000f31: DUP2 00000f32: JUMP 00000f33: JUMPDEST 00000f34: PUSH1 0x00 00000f36: ADDRESS 00000f37: PUSH1 0x01 00000f39: PUSH1 0xa0 00000f3b: PUSH1 0x02 00000f3d: EXP 00000f3e: SUB 00000f3f: AND 00000f40: CALLER 00000f41: PUSH1 0x01 00000f43: PUSH1 0xa0 00000f45: PUSH1 0x02 00000f47: EXP 00000f48: SUB 00000f49: AND 00000f4a: EQ 00000f4b: ISZERO 00000f4c: ISZERO 00000f4d: PUSH2 0x0f55 00000f50: JUMPI 00000f51: PUSH1 0x00 00000f53: DUP1 00000f54: REVERT 00000f55: JUMPDEST 00000f56: PUSH1 0x01 00000f58: PUSH1 0xa0 00000f5a: PUSH1 0x02 00000f5c: EXP 00000f5d: SUB 00000f5e: DUP4 00000f5f: AND 00000f60: PUSH1 0x00 00000f62: SWAP1 00000f63: DUP2 00000f64: MSTORE 00000f65: PUSH1 0x02 00000f67: PUSH1 0x20 00000f69: MSTORE 00000f6a: PUSH1 0x40 00000f6c: SWAP1 00000f6d: KECCAK256 00000f6e: SLOAD 00000f6f: DUP4 00000f70: SWAP1 00000f71: PUSH1 0xff 00000f73: AND 00000f74: ISZERO 00000f75: ISZERO 00000f76: PUSH2 0x0f7e 00000f79: JUMPI 00000f7a: PUSH1 0x00 00000f7c: DUP1 00000f7d: REVERT 00000f7e: JUMPDEST 00000f7f: PUSH1 0x01 00000f81: PUSH1 0xa0 00000f83: PUSH1 0x02 00000f85: EXP 00000f86: SUB 00000f87: DUP4 00000f88: AND 00000f89: PUSH1 0x00 00000f8b: SWAP1 00000f8c: DUP2 00000f8d: MSTORE 00000f8e: PUSH1 0x02 00000f90: PUSH1 0x20 00000f92: MSTORE 00000f93: PUSH1 0x40 00000f95: SWAP1 00000f96: KECCAK256 00000f97: SLOAD 00000f98: DUP4 00000f99: SWAP1 00000f9a: PUSH1 0xff 00000f9c: AND 00000f9d: ISZERO 00000f9e: PUSH2 0x0fa6 00000fa1: JUMPI 00000fa2: PUSH1 0x00 00000fa4: DUP1 00000fa5: REVERT 00000fa6: JUMPDEST 00000fa7: PUSH1 0x00 00000fa9: SWAP3 00000faa: POP 00000fab: JUMPDEST 00000fac: PUSH1 0x03 00000fae: SLOAD 00000faf: DUP4 00000fb0: LT 00000fb1: ISZERO 00000fb2: PUSH2 0x103f 00000fb5: JUMPI 00000fb6: DUP5 00000fb7: PUSH1 0x01 00000fb9: PUSH1 0xa0 00000fbb: PUSH1 0x02 00000fbd: EXP 00000fbe: SUB 00000fbf: AND 00000fc0: PUSH1 0x03 00000fc2: DUP5 00000fc3: DUP2 00000fc4: SLOAD 00000fc5: DUP2 00000fc6: LT 00000fc7: ISZERO 00000fc8: ISZERO 00000fc9: PUSH2 0x0fce 00000fcc: JUMPI 00000fcd: INVALID 00000fce: JUMPDEST 00000fcf: PUSH1 0x00 00000fd1: SWAP2 00000fd2: DUP3 00000fd3: MSTORE 00000fd4: PUSH1 0x20 00000fd6: SWAP1 00000fd7: SWAP2 00000fd8: KECCAK256 00000fd9: ADD 00000fda: SLOAD 00000fdb: PUSH1 0x01 00000fdd: PUSH1 0xa0 00000fdf: PUSH1 0x02 00000fe1: EXP 00000fe2: SUB 00000fe3: AND 00000fe4: EQ 00000fe5: ISZERO 00000fe6: PUSH2 0x1034 00000fe9: JUMPI 00000fea: DUP4 00000feb: PUSH1 0x03 00000fed: DUP5 00000fee: DUP2 00000fef: SLOAD 00000ff0: DUP2 00000ff1: LT 00000ff2: ISZERO 00000ff3: ISZERO 00000ff4: PUSH2 0x0ff9 00000ff7: JUMPI 00000ff8: INVALID 00000ff9: JUMPDEST 00000ffa: PUSH1 0x00 00000ffc: SWAP2 00000ffd: DUP3 00000ffe: MSTORE 00000fff: PUSH1 0x20 00001001: SWAP1 00001002: SWAP2 00001003: KECCAK256 00001004: ADD 00001005: DUP1 00001006: SLOAD 00001007: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000101c: NOT 0000101d: AND 0000101e: PUSH1 0x01 00001020: PUSH1 0xa0 00001022: PUSH1 0x02 00001024: EXP 00001025: SUB 00001026: SWAP3 00001027: SWAP1 00001028: SWAP3 00001029: AND 0000102a: SWAP2 0000102b: SWAP1 0000102c: SWAP2 0000102d: OR 0000102e: SWAP1 0000102f: SSTORE 00001030: PUSH2 0x103f 00001033: JUMP 00001034: JUMPDEST 00001035: PUSH1 0x01 00001037: SWAP1 00001038: SWAP3 00001039: ADD 0000103a: SWAP2 0000103b: PUSH2 0x0fab 0000103e: JUMP 0000103f: JUMPDEST 00001040: PUSH1 0x01 00001042: PUSH1 0xa0 00001044: PUSH1 0x02 00001046: EXP 00001047: SUB 00001048: DUP1 00001049: DUP7 0000104a: AND 0000104b: PUSH1 0x00 0000104d: DUP2 0000104e: DUP2 0000104f: MSTORE 00001050: PUSH1 0x02 00001052: PUSH1 0x20 00001054: MSTORE 00001055: PUSH1 0x40 00001057: DUP1 00001058: DUP3 00001059: KECCAK256 0000105a: DUP1 0000105b: SLOAD 0000105c: PUSH1 0xff 0000105e: NOT 0000105f: SWAP1 00001060: DUP2 00001061: AND 00001062: SWAP1 00001063: SWAP2 00001064: SSTORE 00001065: SWAP4 00001066: DUP9 00001067: AND 00001068: DUP3 00001069: MSTORE 0000106a: SWAP1 0000106b: DUP2 0000106c: SWAP1 0000106d: KECCAK256 0000106e: DUP1 0000106f: SLOAD 00001070: SWAP1 00001071: SWAP4 00001072: AND 00001073: PUSH1 0x01 00001075: OR 00001076: SWAP1 00001077: SWAP3 00001078: SSTORE 00001079: SWAP1 0000107a: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 0000109b: SWAP1 0000109c: MLOAD 0000109d: PUSH1 0x40 0000109f: MLOAD 000010a0: DUP1 000010a1: SWAP2 000010a2: SUB 000010a3: SWAP1 000010a4: LOG2 000010a5: DUP4 000010a6: PUSH1 0x01 000010a8: PUSH1 0xa0 000010aa: PUSH1 0x02 000010ac: EXP 000010ad: SUB 000010ae: AND 000010af: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 000010d0: PUSH1 0x40 000010d2: MLOAD 000010d3: PUSH1 0x40 000010d5: MLOAD 000010d6: DUP1 000010d7: SWAP2 000010d8: SUB 000010d9: SWAP1 000010da: LOG2 000010db: POP 000010dc: POP 000010dd: POP 000010de: POP 000010df: POP 000010e0: JUMP 000010e1: JUMPDEST 000010e2: PUSH1 0x00 000010e4: DUP2 000010e5: DUP2 000010e6: MSTORE 000010e7: PUSH1 0x20 000010e9: DUP2 000010ea: SWAP1 000010eb: MSTORE 000010ec: PUSH1 0x40 000010ee: DUP2 000010ef: KECCAK256 000010f0: PUSH1 0x03 000010f2: ADD 000010f3: SLOAD 000010f4: DUP3 000010f5: SWAP1 000010f6: PUSH1 0xff 000010f8: AND 000010f9: ISZERO 000010fa: PUSH2 0x1102 000010fd: JUMPI 000010fe: PUSH1 0x00 00001100: DUP1 00001101: REVERT 00001102: JUMPDEST 00001103: PUSH2 0x110b 00001106: DUP4 00001107: PUSH2 0x096e 0000110a: JUMP 0000110b: JUMPDEST 0000110c: ISZERO 0000110d: PUSH2 0x1238 00001110: JUMPI 00001111: PUSH1 0x00 00001113: DUP4 00001114: DUP2 00001115: MSTORE 00001116: PUSH1 0x20 00001118: DUP2 00001119: SWAP1 0000111a: MSTORE 0000111b: PUSH1 0x40 0000111d: SWAP1 0000111e: DUP2 0000111f: SWAP1 00001120: KECCAK256 00001121: PUSH1 0x03 00001123: DUP2 00001124: ADD 00001125: DUP1 00001126: SLOAD 00001127: PUSH1 0xff 00001129: NOT 0000112a: AND 0000112b: PUSH1 0x01 0000112d: SWAP1 0000112e: DUP2 0000112f: OR 00001130: SWAP1 00001131: SWAP2 00001132: SSTORE 00001133: DUP2 00001134: SLOAD 00001135: SWAP1 00001136: DUP3 00001137: ADD 00001138: SLOAD 00001139: SWAP2 0000113a: SWAP5 0000113b: POP 0000113c: PUSH1 0x01 0000113e: PUSH1 0xa0 00001140: PUSH1 0x02 00001142: EXP 00001143: SUB 00001144: AND 00001145: SWAP2 00001146: PUSH1 0x02 00001148: DUP6 00001149: ADD 0000114a: SWAP1 0000114b: MLOAD 0000114c: DUP1 0000114d: DUP3 0000114e: DUP1 0000114f: SLOAD 00001150: PUSH1 0x01 00001152: DUP2 00001153: PUSH1 0x01 00001155: AND 00001156: ISZERO 00001157: PUSH2 0x0100 0000115a: MUL 0000115b: SUB 0000115c: AND 0000115d: PUSH1 0x02 0000115f: SWAP1 00001160: DIV 00001161: DUP1 00001162: ISZERO 00001163: PUSH2 0x11ad 00001166: JUMPI 00001167: DUP1 00001168: PUSH1 0x1f 0000116a: LT 0000116b: PUSH2 0x1182 0000116e: JUMPI 0000116f: PUSH2 0x0100 00001172: DUP1 00001173: DUP4 00001174: SLOAD 00001175: DIV 00001176: MUL 00001177: DUP4 00001178: MSTORE 00001179: SWAP2 0000117a: PUSH1 0x20 0000117c: ADD 0000117d: SWAP2 0000117e: PUSH2 0x11ad 00001181: JUMP 00001182: JUMPDEST 00001183: DUP3 00001184: ADD 00001185: SWAP2 00001186: SWAP1 00001187: PUSH1 0x00 00001189: MSTORE 0000118a: PUSH1 0x20 0000118c: PUSH1 0x00 0000118e: KECCAK256 0000118f: SWAP1 00001190: JUMPDEST 00001191: DUP2 00001192: SLOAD 00001193: DUP2 00001194: MSTORE 00001195: SWAP1 00001196: PUSH1 0x01 00001198: ADD 00001199: SWAP1 0000119a: PUSH1 0x20 0000119c: ADD 0000119d: DUP1 0000119e: DUP4 0000119f: GT 000011a0: PUSH2 0x1190 000011a3: JUMPI 000011a4: DUP3 000011a5: SWAP1 000011a6: SUB 000011a7: PUSH1 0x1f 000011a9: AND 000011aa: DUP3 000011ab: ADD 000011ac: SWAP2 000011ad: JUMPDEST 000011ae: POP 000011af: POP 000011b0: SWAP2 000011b1: POP 000011b2: POP 000011b3: PUSH1 0x00 000011b5: PUSH1 0x40 000011b7: MLOAD 000011b8: DUP1 000011b9: DUP4 000011ba: SUB 000011bb: DUP2 000011bc: DUP6 000011bd: DUP8 000011be: PUSH2 0x8796 000011c1: GAS 000011c2: SUB 000011c3: CALL 000011c4: SWAP3 000011c5: POP 000011c6: POP 000011c7: POP 000011c8: ISZERO 000011c9: PUSH2 0x11fe 000011cc: JUMPI 000011cd: DUP3 000011ce: PUSH32 0x33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed75 000011ef: PUSH1 0x40 000011f1: MLOAD 000011f2: PUSH1 0x40 000011f4: MLOAD 000011f5: DUP1 000011f6: SWAP2 000011f7: SUB 000011f8: SWAP1 000011f9: LOG2 000011fa: PUSH2 0x1238 000011fd: JUMP 000011fe: JUMPDEST 000011ff: DUP3 00001200: PUSH32 0x526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b79236 00001221: PUSH1 0x40 00001223: MLOAD 00001224: PUSH1 0x40 00001226: MLOAD 00001227: DUP1 00001228: SWAP2 00001229: SUB 0000122a: SWAP1 0000122b: LOG2 0000122c: PUSH1 0x03 0000122e: DUP3 0000122f: ADD 00001230: DUP1 00001231: SLOAD 00001232: PUSH1 0xff 00001234: NOT 00001235: AND 00001236: SWAP1 00001237: SSTORE 00001238: JUMPDEST 00001239: POP 0000123a: POP 0000123b: POP 0000123c: JUMP 0000123d: JUMPDEST 0000123e: PUSH1 0x00 00001240: DUP4 00001241: PUSH1 0x01 00001243: PUSH1 0xa0 00001245: PUSH1 0x02 00001247: EXP 00001248: SUB 00001249: DUP2 0000124a: AND 0000124b: ISZERO 0000124c: ISZERO 0000124d: PUSH2 0x1255 00001250: JUMPI 00001251: PUSH1 0x00 00001253: DUP1 00001254: REVERT 00001255: JUMPDEST 00001256: PUSH1 0x05 00001258: SLOAD 00001259: SWAP2 0000125a: POP 0000125b: PUSH1 0x80 0000125d: PUSH1 0x40 0000125f: MLOAD 00001260: SWAP1 00001261: DUP2 00001262: ADD 00001263: PUSH1 0x40 00001265: SWAP1 00001266: DUP2 00001267: MSTORE 00001268: PUSH1 0x01 0000126a: PUSH1 0xa0 0000126c: PUSH1 0x02 0000126e: EXP 0000126f: SUB 00001270: DUP8 00001271: AND 00001272: DUP3 00001273: MSTORE 00001274: PUSH1 0x20 00001276: DUP1 00001277: DUP4 00001278: ADD 00001279: DUP8 0000127a: SWAP1 0000127b: MSTORE 0000127c: DUP2 0000127d: DUP4 0000127e: ADD 0000127f: DUP7 00001280: SWAP1 00001281: MSTORE 00001282: PUSH1 0x00 00001284: PUSH1 0x60 00001286: DUP5 00001287: ADD 00001288: DUP2 00001289: SWAP1 0000128a: MSTORE 0000128b: DUP6 0000128c: DUP2 0000128d: MSTORE 0000128e: SWAP1 0000128f: DUP2 00001290: SWAP1 00001291: MSTORE 00001292: KECCAK256 00001293: DUP2 00001294: MLOAD 00001295: DUP2 00001296: SLOAD 00001297: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012ac: NOT 000012ad: AND 000012ae: PUSH1 0x01 000012b0: PUSH1 0xa0 000012b2: PUSH1 0x02 000012b4: EXP 000012b5: SUB 000012b6: SWAP2 000012b7: SWAP1 000012b8: SWAP2 000012b9: AND 000012ba: OR 000012bb: DUP2 000012bc: SSTORE 000012bd: PUSH1 0x20 000012bf: DUP3 000012c0: ADD 000012c1: MLOAD 000012c2: DUP2 000012c3: PUSH1 0x01 000012c5: ADD 000012c6: SSTORE 000012c7: PUSH1 0x40 000012c9: DUP3 000012ca: ADD 000012cb: MLOAD 000012cc: DUP2 000012cd: PUSH1 0x02 000012cf: ADD 000012d0: SWAP1 000012d1: DUP1 000012d2: MLOAD 000012d3: PUSH2 0x12e0 000012d6: SWAP3 000012d7: SWAP2 000012d8: PUSH1 0x20 000012da: ADD 000012db: SWAP1 000012dc: PUSH2 0x1370 000012df: JUMP 000012e0: JUMPDEST 000012e1: POP 000012e2: PUSH1 0x60 000012e4: DUP3 000012e5: ADD 000012e6: MLOAD 000012e7: PUSH1 0x03 000012e9: SWAP2 000012ea: SWAP1 000012eb: SWAP2 000012ec: ADD 000012ed: DUP1 000012ee: SLOAD 000012ef: PUSH1 0xff 000012f1: NOT 000012f2: AND 000012f3: SWAP2 000012f4: ISZERO 000012f5: ISZERO 000012f6: SWAP2 000012f7: SWAP1 000012f8: SWAP2 000012f9: OR 000012fa: SWAP1 000012fb: SSTORE 000012fc: POP 000012fd: PUSH1 0x05 000012ff: DUP1 00001300: SLOAD 00001301: PUSH1 0x01 00001303: ADD 00001304: SWAP1 00001305: SSTORE 00001306: DUP2 00001307: PUSH32 0xc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e51 00001328: PUSH1 0x40 0000132a: MLOAD 0000132b: PUSH1 0x40 0000132d: MLOAD 0000132e: DUP1 0000132f: SWAP2 00001330: SUB 00001331: SWAP1 00001332: LOG2 00001333: POP 00001334: SWAP4 00001335: SWAP3 00001336: POP 00001337: POP 00001338: POP 00001339: JUMP 0000133a: JUMPDEST 0000133b: DUP2 0000133c: SLOAD 0000133d: DUP2 0000133e: DUP4 0000133f: SSTORE 00001340: DUP2 00001341: DUP2 00001342: ISZERO 00001343: GT 00001344: PUSH2 0x1238 00001347: JUMPI 00001348: PUSH1 0x00 0000134a: DUP4 0000134b: DUP2 0000134c: MSTORE 0000134d: PUSH1 0x20 0000134f: SWAP1 00001350: KECCAK256 00001351: PUSH2 0x1238 00001354: SWAP2 00001355: DUP2 00001356: ADD 00001357: SWAP1 00001358: DUP4 00001359: ADD 0000135a: PUSH2 0x13ee 0000135d: JUMP 0000135e: JUMPDEST 0000135f: PUSH1 0x20 00001361: PUSH1 0x40 00001363: MLOAD 00001364: SWAP1 00001365: DUP2 00001366: ADD 00001367: PUSH1 0x40 00001369: MSTORE 0000136a: PUSH1 0x00 0000136c: DUP2 0000136d: MSTORE 0000136e: SWAP1 0000136f: JUMP 00001370: JUMPDEST 00001371: DUP3 00001372: DUP1 00001373: SLOAD 00001374: PUSH1 0x01 00001376: DUP2 00001377: PUSH1 0x01 00001379: AND 0000137a: ISZERO 0000137b: PUSH2 0x0100 0000137e: MUL 0000137f: SUB 00001380: AND 00001381: PUSH1 0x02 00001383: SWAP1 00001384: DIV 00001385: SWAP1 00001386: PUSH1 0x00 00001388: MSTORE 00001389: PUSH1 0x20 0000138b: PUSH1 0x00 0000138d: KECCAK256 0000138e: SWAP1 0000138f: PUSH1 0x1f 00001391: ADD 00001392: PUSH1 0x20 00001394: SWAP1 00001395: DIV 00001396: DUP2 00001397: ADD 00001398: SWAP3 00001399: DUP3 0000139a: PUSH1 0x1f 0000139c: LT 0000139d: PUSH2 0x13b1 000013a0: JUMPI 000013a1: DUP1 000013a2: MLOAD 000013a3: PUSH1 0xff 000013a5: NOT 000013a6: AND 000013a7: DUP4 000013a8: DUP1 000013a9: ADD 000013aa: OR 000013ab: DUP6 000013ac: SSTORE 000013ad: PUSH2 0x13de 000013b0: JUMP 000013b1: JUMPDEST 000013b2: DUP3 000013b3: DUP1 000013b4: ADD 000013b5: PUSH1 0x01 000013b7: ADD 000013b8: DUP6 000013b9: SSTORE 000013ba: DUP3 000013bb: ISZERO 000013bc: PUSH2 0x13de 000013bf: JUMPI 000013c0: SWAP2 000013c1: DUP3 000013c2: ADD 000013c3: JUMPDEST 000013c4: DUP3 000013c5: DUP2 000013c6: GT 000013c7: ISZERO 000013c8: PUSH2 0x13de 000013cb: JUMPI 000013cc: DUP3 000013cd: MLOAD 000013ce: DUP3 000013cf: SSTORE 000013d0: SWAP2 000013d1: PUSH1 0x20 000013d3: ADD 000013d4: SWAP2 000013d5: SWAP1 000013d6: PUSH1 0x01 000013d8: ADD 000013d9: SWAP1 000013da: PUSH2 0x13c3 000013dd: JUMP 000013de: JUMPDEST 000013df: POP 000013e0: PUSH2 0x13ea 000013e3: SWAP3 000013e4: SWAP2 000013e5: POP 000013e6: PUSH2 0x13ee 000013e9: JUMP 000013ea: JUMPDEST 000013eb: POP 000013ec: SWAP1 000013ed: JUMP 000013ee: JUMPDEST 000013ef: PUSH2 0x0afb 000013f2: SWAP2 000013f3: SWAP1 000013f4: JUMPDEST 000013f5: DUP1 000013f6: DUP3 000013f7: GT 000013f8: ISZERO 000013f9: PUSH2 0x13ea 000013fc: JUMPI 000013fd: PUSH1 0x00 000013ff: DUP2 00001400: SSTORE 00001401: PUSH1 0x01 00001403: ADD 00001404: PUSH2 0x13f4 00001407: JUMP 00001408: STOP 00001409: LOG1 0000140a: PUSH6 0x627a7a723058 00001411: KECCAK256 00001412: SWAP15 00001413: SWAP16 00001414: UNKNOWN(0xB4) 00001415: UNKNOWN(0xCD) 00001416: UNKNOWN(0x25) 00001417: UNKNOWN(0xE4) 00001418: UNKNOWN(0xC8) 00001419: INVALID 0000141a: UNKNOWN(0xED) 0000141b: COINBASE 0000141c: UNKNOWN(0xAA) 0000141d: STATICCALL 0000141e: LOG2 0000141f: BLOBBASEFEE 00001420: UNKNOWN(0x2A) 00001421: UNKNOWN(0xF7) 00001422: UNKNOWN(0xB3) 00001423: UNKNOWN(0xEF) 00001424: UNKNOWN(0xA7) 00001425: PUSH7 0xcbf18d17733703 0000142d: CALLDATACOPY 0000142e: DUP11 0000142f: UNKNOWN(0xBB) 00001430: ADDRESS 00001431: UNKNOWN(0xAE) 00001432: STOP 00001433: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x8e636cb2cb4b70eaa552192fd52fb7ca35fe30a969825dbafe48dfd8f927e624
call_targets:
0x8c74dfa27be1b4fa867490a2698419a98c0bd221
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8e636cb2cb4b70eaa552192fd52fb7ca35fe30a969825dbafe48dfd8f927e624",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8c74dfa27be1b4fa867490a2698419a98c0bd221"
],
"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": "0x025e7c27",
"selector": "0x025e7c27",
"calldata_variants": [
"0x025e7c27",
"0x025e7c270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20ea8d86",
"selector": "0x20ea8d86",
"calldata_variants": [
"0x20ea8d86",
"0x20ea8d860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f54bf6e",
"selector": "0x2f54bf6e",
"calldata_variants": [
"0x2f54bf6e",
"0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3411c81c",
"selector": "0x3411c81c",
"calldata_variants": [
"0x3411c81c",
"0x3411c81c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x54741525",
"selector": "0x54741525",
"calldata_variants": [
"0x54741525",
"0x547415250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7065cb48",
"selector": "0x7065cb48",
"calldata_variants": [
"0x7065cb48",
"0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x784547a7",
"selector": "0x784547a7",
"calldata_variants": [
"0x784547a7",
"0x784547a70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4547,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x8e636cb2cb4b70eaa552192fd52fb7ca35fe30a969825dbafe48dfd8f927e624
call_targets:
0x8c74dfa27be1b4fa867490a2698419a98c0bd221
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8e636cb2cb4b70eaa552192fd52fb7ca35fe30a969825dbafe48dfd8f927e624",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8c74dfa27be1b4fa867490a2698419a98c0bd221"
],
"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": "0x025e7c27",
"selector": "0x025e7c27",
"calldata_variants": [
"0x025e7c27",
"0x025e7c270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20ea8d86",
"selector": "0x20ea8d86",
"calldata_variants": [
"0x20ea8d86",
"0x20ea8d860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f54bf6e",
"selector": "0x2f54bf6e",
"calldata_variants": [
"0x2f54bf6e",
"0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3411c81c",
"selector": "0x3411c81c",
"calldata_variants": [
"0x3411c81c",
"0x3411c81c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x54741525",
"selector": "0x54741525",
"calldata_variants": [
"0x54741525",
"0x547415250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7065cb48",
"selector": "0x7065cb48",
"calldata_variants": [
"0x7065cb48",
"0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x784547a7",
"selector": "0x784547a7",
"calldata_variants": [
"0x784547a7",
"0x784547a70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4547,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|