b4530aee-c617-483e-86a3-b553d5f4b924
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 |
|---|---|---|---|---|
| 31319 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110912 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110913 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110914 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110915 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110916 | detector.run | complete | 1 / 3 | 1 week ago |
| 110917 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:512175] OpenAI Codex v0.77.0 (research preview)
[codex:512175] --------
[codex:512175] workdir: /tmp/codex-multi-tzwbif0b
[codex:512175] model: gpt-5.2-codex
[codex:512175] provider: openai
[codex:512175] approval: never
[codex:512175] sandbox: read-only
[codex:512175] reasoning effort: xhigh
[codex:512175] reasoning summaries: auto
[codex:512175] session id: 019b800a-3d73-7d10-b972-9fce10974621
[codex:512175] --------
[codex:512175] user
[codex:512175] 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:512175]
[codex:512175] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:512175]
[codex:512175] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:512175] - Gas inefficiency, code quality, or best practices
[codex:512175] - Theoretical vulnerabilities without a clear extraction path
[codex:512175] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:512175] - Issues requiring social engineering or off-chain coordination
[codex:512175]
[codex:512175] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:512175] - CALL/DELEGATECALL with controllable destination or calldata
[codex:512175] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:512175] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:512175] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:512175] - External calls before state updates (reentrancy)
[codex:512175] - SELFDESTRUCT with controllable beneficiary
[codex:512175] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:512175]
[codex:512175] For each finding, you MUST explain:
[codex:512175] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:512175] 2. The concrete sequence of transactions to extract value
[codex:512175] 3. Why you believe this is exploitable (not just suspicious)
[codex:512175]
[codex:512175] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:512175] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:512175]
[codex:512175] Output MUST be valid JSON matching the provided schema.
[codex:512175] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:512175] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:512175] mcp startup: no servers
[codex:512175]
[codex:512175] thinking
[codex:512175] **Reading BYTECODE_BUNDLE.txt file**
[codex:512175] exec
[codex:512175] /bin/bash -lc ls in /tmp/codex-multi-tzwbif0b succeeded in 5ms:
[codex:512175] BYTECODE_BUNDLE.txt
[codex:512175] codex-output-schema.json
[codex:512175] exec
[codex:512175] /bin/bash -lc 'wc -l BYTECODE_BUNDLE.txt' in /tmp/codex-multi-tzwbif0b succeeded in 5ms:
[codex:512175] 5 BYTECODE_BUNDLE.txt
[codex:512175] exec
[codex:512175] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-tzwbif0b succeeded in 5ms:
[codex:512175] Runtime bytecode bundle for best-effort auditing.
[codex:512175] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:512175]
[codex:512175] FILE: runtime_bytecode.hex
[codex:512175] 0x6080604052600436106101095760003560e01c80639babdd4011610095578063affed0e011610064578063affed0e0146105a7578063ba9a91a5146105bc578063cd2cc740146105d1578063d1af6462146105e6578063f698da25146105fb57610109565b80639babdd40146102bb5780639e4e7318146102d0578063a0ab9653146102e5578063a0e67e2b1461054257610109565b80632f54bf6e116100dc5780632f54bf6e1461022057806342cde4e8146102675780635b768ee91461027c578063619c129514610291578063877ba46a146102a657610109565b806304622c2e146101455780630c8bd6701461016c5780631279991b146101f65780631ed23c8c1461020b575b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1005b34801561015157600080fd5b5061015a610610565b60408051918252519081900360200190f35b34801561017857600080fd5b50610181610634565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bb5781810151838201526020016101a3565b50505050905090810190601f1680156101e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020257600080fd5b5061015a610650565b34801561021757600080fd5b5061015a610674565b34801561022c57600080fd5b506102536004803603602081101561024357600080fd5b50356001600160a01b0316610698565b604080519115158252519081900360200190f35b34801561027357600080fd5b5061015a6106ad565b34801561028857600080fd5b506101816106b3565b34801561029d57600080fd5b506101816106ec565b3480156102b257600080fd5b50610181610716565b3480156102c757600080fd5b5061018161074f565b3480156102dc57600080fd5b5061015a61077c565b3480156102f157600080fd5b50610540600480360361010081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460208302840111600160201b8311171561035657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103a557600080fd5b8201836020820111156103b757600080fd5b803590602001918460208302840111600160201b831117156103d857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561042757600080fd5b82018360208201111561043957600080fd5b803590602001918460208302840111600160201b8311171561045a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b0385351695602086013595919450925060608101915060400135600160201b8111156104be57600080fd5b8201836020820111156104d057600080fd5b803590602001918460018302840111600160201b831117156104f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b0383351693505050602001356107a0565b005b34801561054e57600080fd5b50610557610e59565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561059357818101518382015260200161057b565b505050509050019250505060405180910390f35b3480156105b357600080fd5b5061015a610ebb565b3480156105c857600080fd5b5061015a610ec1565b3480156105dd57600080fd5b50610181610ee5565b3480156105f257600080fd5b50610181610f10565b34801561060757600080fd5b5061015a610f3e565b7f32f3de0d7fc1cdd909bb4d992a94061e800669c611b9d07f137df1f4bb85f09781565b604051806060016040528060238152602001610f516023913981565b7f3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d781565b7fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac5647281565b60026020526000908152604090205460ff1681565b60015481565b6040518060400160405280601f81526020017f46554e4354494f4e2043414c4c20544f204e4f524d414c204143434f554e540081525081565b6040518060400160405280600e81526020016d2ba927a7239022ac22a1aaaa27a960911b81525081565b6040518060400160405280601c81526020017f494e56414c4944205448524553484f4c442f5349472d4c454e4754480000000081525081565b604051806040016040528060118152602001705448524553484f4c442f5349474e45525360781b81525081565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6001548751146040518060400160405280601c81526020017f494e56414c4944205448524553484f4c442f5349472d4c454e47544800000000815250906108655760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561082a578181015183820152602001610812565b50505050905090810190601f1680156108575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5085518751148015610878575087518751145b6040518060400160405280601c81526020017f494e56414c4944205448524553484f4c442f5349472d4c454e47544800000000815250906108fa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561082a578181015183820152602001610812565b506001600160a01b03821633148061091957506001600160a01b038216155b6040518060400160405280600e81526020016d2ba927a7239022ac22a1aaaa27a960911b8152509061098c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561082a578181015183820152602001610812565b50825160208085019190912060008054604080517f3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d7818701526001600160a01b03808c1682840152606082018b9052608082019590955260a081019290925292861660c082015260e0808201869052835180830390910181526101008201845280519085012060045461190160f01b6101208401526101228301526101428083018290528451808403909101815261016290920190935280519301929092209091805b600154811015610bb55760006001848e8481518110610a6a57fe5b60200260200101518e8581518110610a7e57fe5b60200260200101518e8681518110610a9257fe5b602002602001015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610af1573d6000803e3d6000fd5b505050602060405103519050826001600160a01b0316816001600160a01b0316118015610b3657506001600160a01b03811660009081526002602052604090205460ff165b6040518060400160405280600f81526020016e57524f4e47205349474e415455524560881b81525090610baa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561082a578181015183820152602001610812565b509150600101610a4f565b50600080546001019055855115610c5357610bcf88610f44565b6040518060400160405280601f81526020017f46554e4354494f4e2043414c4c20544f204e4f524d414c204143434f554e540081525090610c515760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561082a578181015183820152602001610812565b505b6000886001600160a01b03168589896040518082805190602001908083835b60208310610c915780518252601f199092019160209182019101610c72565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381858888f193505050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b50509050806040518060400160405280601281526020017112539511549390530815160811905253115160721b81525090610d755760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561082a578181015183820152602001610812565b507f187ae0bfb8619f02a4db1cfef70a54e5722d00d8fcfe6811f1a1f044633ca0a7338a8a8a60405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e0e578181015183820152602001610df6565b50505050905090810190601f168015610e3b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610eb157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e93575b5050505050905090565b60005481565b7f72dc1dc597006ea524d75bd3377c4663827629e52e27fd2169cca6f90f6d1ef981565b6040518060400160405280600f81526020016e57524f4e47205349474e415455524560881b81525081565b6040518060400160405280601281526020017112539511549390530815160811905253115160721b81525081565b60045481565b3b63ffffffff1615159056fe5349474e455253204d55535420424520494e20494e4352454153494e47204f52444552a265627a7a723158206a40336a351188a254b9c1ec83afb626e0684c15434025a81ae3b80afc5af4fc64736f6c63430005110032
[codex:512175]
[codex:512175] thinking
[codex:512175] **Investigating potential multisig bytecode exploits**
[codex:512175] exec
[codex:512175] /bin/bash -lc 'which evm' in /tmp/codex-multi-tzwbif0b exited 1 in 5ms:
[codex:512175]
[codex:512175]
[codex:512175] thinking
[codex:512175] **Planning EVM bytecode disassembly**
[codex:512175] exec
[codex:512175] /bin/bash -lc "python - <<'PY'
[codex:512175] from binascii import unhexlify
[codex:512175] import textwrap
[codex:512175]
[codex:512175] with open('BYTECODE_BUNDLE.txt','r') as f:
[codex:512175] data=f.read()
[codex:512175] # extract hex after 0x
[codex:512175] import re
[codex:512175] m=re.search(r'0x([0-9a-fA-F]+)', data)
[codex:512175] if not m:
[codex:512175] print('no hex found'); exit()
[codex:512175] hexstr=m.group(1)
[codex:512175] code=unhexlify(hexstr)
[codex:512175]
[codex:512175] # EVM opcode mapping
[codex:512175] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:512175] opcodes.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:512175] opcodes.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:512175] opcodes.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:512175] # Basic opcodes
[codex:512175] ops = {
[codex:512175] 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:512175] 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:512175] 0x20:'SHA3',
[codex:512175] 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:512175] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:512175] 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:512175] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:512175] }
[codex:512175] ops.update(opcodes)
[codex:512175]
[codex:512175] pc=0
[codex:512175] lines=[]
[codex:512175] while pc < len(code):
[codex:512175] op=code[pc]
[codex:512175] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:512175] pc0=pc
[codex:512175] pc+=1
[codex:512175] arg=None
[codex:512175] if name.startswith('PUSH'):
[codex:512175] n=int(name[4:])
[codex:512175] arg=code[pc:pc+n]
[codex:512175] pc+=n
[codex:512175] lines.append((pc0,name,arg.hex()))
[codex:512175] else:
[codex:512175] lines.append((pc0,name,None))
[codex:512175]
[codex:512175] # Print interesting ops positions
[codex:512175] interesting={'CALL','DELEGATECALL','CALLCODE','SELFDESTRUCT','SSTORE','STATICCALL','CREATE','CREATE2'}
[codex:512175] for pc0,name,arg in lines:
[codex:512175] if name in interesting:
[codex:512175] print(f'{pc0:04x}: {name}')
[codex:512175]
[codex:512175] print('Total ops',len(lines))
[codex:512175] PY" in /tmp/codex-multi-tzwbif0b succeeded in 29ms:
[codex:512175] 0ae0: STATICCALL
[codex:512175] 0bbf: SSTORE
[codex:512175] 0cc3: CALL
[codex:512175] 0f5a: SSTORE
[codex:512175] 0f9b: DELEGATECALL
[codex:512175] Total ops 2651
[codex:512175]
[codex:512175] thinking
[codex:512175] **Analyzing CALL and DELEGATECALL regions**
[codex:512175] exec
[codex:512175] /bin/bash -lc "python - <<'PY'
[codex:512175] from binascii import unhexlify
[codex:512175] import re
[codex:512175]
[codex:512175] with open('BYTECODE_BUNDLE.txt','r') as f:
[codex:512175] data=f.read()
[codex:512175] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:512175] code=unhexlify(hexstr)
[codex:512175]
[codex:512175] # opcode mapping
[codex:512175] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:512175] opcodes.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:512175] opcodes.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:512175] opcodes.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:512175] ops = {
[codex:512175] 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:512175] 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:512175] 0x20:'SHA3',
[codex:512175] 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:512175] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:512175] 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:512175] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:512175] }
[codex:512175] ops.update(opcodes)
[codex:512175]
[codex:512175] # disassemble to list with pc
[codex:512175] pc=0
[codex:512175] inst=[]
[codex:512175] while pc < len(code):
[codex:512175] op=code[pc]
[codex:512175] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:512175] pc0=pc
[codex:512175] pc+=1
[codex:512175] arg=None
[codex:512175] if name.startswith('PUSH'):
[codex:512175] n=int(name[4:])
[codex:512175] arg=code[pc:pc+n]
[codex:512175] pc+=n
[codex:512175] inst.append((pc0,name,arg.hex()))
[codex:512175] else:
[codex:512175] inst.append((pc0,name,None))
[codex:512175]
[codex:512175] # function to print around range
[codex:512175]
[codex:512175] def dump(start,end):
[codex:512175] for pc0,name,arg in inst:
[codex:512175] if start <= pc0 <= end:
[codex:512175] if arg is not None:
[codex:512175] print(f'{pc0:04x}: {name} 0x{arg}')
[codex:512175] else:
[codex:512175] print(f'{pc0:04x}: {name}')
[codex:512175]
[codex:512175] print('--- around CALL at 0xcc3 ---')
[codex:512175] dump(0xc70,0xd20)
[codex:512175] print('--- around DELEGATECALL at 0xf9b ---')
[codex:512175] dump(0xf60,0xfc5)
[codex:512175] print('--- around STATICCALL at 0xae0 ---')
[codex:512175] dump(0xa80,0xb10)
[codex:512175] print('--- around SSTORE at 0xbbf ---')
[codex:512175] dump(0xb80,0xc10)
[codex:512175] print('--- around SSTORE at 0xf5a ---')
[codex:512175] dump(0xf20,0xf80)
[codex:512175] PY" in /tmp/codex-multi-tzwbif0b succeeded in 27ms:
[codex:512175] --- around CALL at 0xcc3 ---
[codex:512175] 0c70: DUP4
[codex:512175] 0c71: DUP4
[codex:512175] 0c72: JUMPDEST
[codex:512175] 0c73: PUSH1 0x20
[codex:512175] 0c75: DUP4
[codex:512175] 0c76: LT
[codex:512175] 0c77: PUSH2 0x0c91
[codex:512175] 0c7a: JUMPI
[codex:512175] 0c7b: DUP1
[codex:512175] 0c7c: MLOAD
[codex:512175] 0c7d: DUP3
[codex:512175] 0c7e: MSTORE
[codex:512175] 0c7f: PUSH1 0x1f
[codex:512175] 0c81: NOT
[codex:512175] 0c82: SWAP1
[codex:512175] 0c83: SWAP3
[codex:512175] 0c84: ADD
[codex:512175] 0c85: SWAP2
[codex:512175] 0c86: PUSH1 0x20
[codex:512175]
[codex:512175] thinking
[codex:512175] **Analyzing code boundaries and metadata**
[codex:512175]
[codex:512175] I'm carefully distinguishing executable code from appended metadata by locating the `fe` invalid opcode that signals runtime code end and metadata start; this helps clarify that `DELEGATECALL` at 0xf9b is inside metadata and unreachable, while important calls like `CALL` at 0xcc3 and `STATICCALL` at 0xae0 happen in the actual execution flow. I’m also trying to match function selectors to known Gnosis Safe methods to assess access control and potential vulnerabilities.
[codex:512175] exec
[codex:512175] /bin/bash -lc "python - <<'PY'
[codex:512175] from binascii import unhexlify
[codex:512175] import re
[codex:512175]
[codex:512175] with open('BYTECODE_BUNDLE.txt','r') as f:
[codex:512175] data=f.read()
[codex:512175] hexstr=re.search(r'0x([0-9a-fA-F]+)', data).group(1)
[codex:512175] code=unhexlify(hexstr)
[codex:512175]
[codex:512175] needle=b'SIGNERS MUST BE IN INCREASING ORDER'
[codex:512175] idx=code.find(needle)
[codex:512175] print('needle idx', idx)
[codex:512175] # find preceding byte
[codex:512175] if idx"'!=-1:
[codex:512175] print('"'byte before', code[idx-1:idx+1].hex())
[codex:512175]
[codex:512175] # find last 0xfe before needle
[codex:512175] if idx"'!=-1:
[codex:512175] last_fe = code.rfind(b'"'\\xfe', 0, idx)
[codex:512175] print('last fe before needle', last_fe)
[codex:512175]
[codex:512175] # show bytes around last_fe
[codex:512175] if idx"'!=-1 and last_fe!=-1:
[codex:512175] print(code[last_fe:last_fe+20].hex())
[codex:512175]
[codex:512175] print('"'code length', len(code))
[codex:512175] PY" in /tmp/codex-multi-tzwbif0b succeeded in 26ms:
[codex:512175] needle idx 3921
[codex:512175] byte before fe53
[codex:512175] last fe before needle 3920
[codex:512175] fe5349474e455253204d55535420424520494e20
[codex:512175] code length 4008
[codex:512175]
[codex:512175] thinking
[codex:512175] **Analyzing bytecode for exploits**
[codex:512175]
[codex:512175] I’m reviewing the bytecode carefully to see if any reachable instructions could enable an exploit, especially around signature validation and transaction execution. Since only one storage write appears and DELEGATECALL seems unreachable, it looks like a simple multisig contract with no concrete exploit path found. I’ll prepare a JSON output confirming no findings and summarizing these points.
[codex:512175] codex
[codex:512175] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the runtime bytecode; the only reachable external CALL appears gated by signature/threshold checks, and no reachable delegatecall/selfdestruct was found.","findings":[]}
[codex:512175] tokens used
[codex:512175] 27,737
[codex:512175] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the runtime bytecode; the only reachable external CALL appears gated by signature/threshold checks, and no reachable delegatecall/selfdestruct was found.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T18:50:37.590484+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path identified from the runtime bytecode; the only reachable external CALL appears gated by signature/threshold checks, and no reachable delegatecall/selfdestruct was found.",
"raw_final": {
"summary": "No concrete, exploitable profit path identified from the runtime bytecode; the only reachable external CALL appears gated by signature/threshold checks, and no reachable delegatecall/selfdestruct was found.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0109 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x9babdd40 00000019: GT 0000001a: PUSH2 0x0095 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xaffed0e0 00000024: GT 00000025: PUSH2 0x0064 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xaffed0e0 0000002f: EQ 00000030: PUSH2 0x05a7 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xba9a91a5 0000003a: EQ 0000003b: PUSH2 0x05bc 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xcd2cc740 00000045: EQ 00000046: PUSH2 0x05d1 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xd1af6462 00000050: EQ 00000051: PUSH2 0x05e6 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf698da25 0000005b: EQ 0000005c: PUSH2 0x05fb 0000005f: JUMPI 00000060: PUSH2 0x0109 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x9babdd40 0000006b: EQ 0000006c: PUSH2 0x02bb 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x9e4e7318 00000076: EQ 00000077: PUSH2 0x02d0 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xa0ab9653 00000081: EQ 00000082: PUSH2 0x02e5 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xa0e67e2b 0000008c: EQ 0000008d: PUSH2 0x0542 00000090: JUMPI 00000091: PUSH2 0x0109 00000094: JUMP 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0x2f54bf6e 0000009c: GT 0000009d: PUSH2 0x00dc 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x2f54bf6e 000000a7: EQ 000000a8: PUSH2 0x0220 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x42cde4e8 000000b2: EQ 000000b3: PUSH2 0x0267 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x5b768ee9 000000bd: EQ 000000be: PUSH2 0x027c 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x619c1295 000000c8: EQ 000000c9: PUSH2 0x0291 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x877ba46a 000000d3: EQ 000000d4: PUSH2 0x02a6 000000d7: JUMPI 000000d8: PUSH2 0x0109 000000db: JUMP 000000dc: JUMPDEST 000000dd: DUP1 000000de: PUSH4 0x04622c2e 000000e3: EQ 000000e4: PUSH2 0x0145 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x0c8bd670 000000ee: EQ 000000ef: PUSH2 0x016c 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x1279991b 000000f9: EQ 000000fa: PUSH2 0x01f6 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x1ed23c8c 00000104: EQ 00000105: PUSH2 0x020b 00000108: JUMPI 00000109: JUMPDEST 0000010a: PUSH1 0x40 0000010c: DUP1 0000010d: MLOAD 0000010e: CALLER 0000010f: DUP2 00000110: MSTORE 00000111: CALLVALUE 00000112: PUSH1 0x20 00000114: DUP3 00000115: ADD 00000116: MSTORE 00000117: DUP2 00000118: MLOAD 00000119: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 0000013a: SWAP3 0000013b: SWAP2 0000013c: DUP2 0000013d: SWAP1 0000013e: SUB 0000013f: SWAP1 00000140: SWAP2 00000141: ADD 00000142: SWAP1 00000143: LOG1 00000144: STOP 00000145: JUMPDEST 00000146: CALLVALUE 00000147: DUP1 00000148: ISZERO 00000149: PUSH2 0x0151 0000014c: JUMPI 0000014d: PUSH1 0x00 0000014f: DUP1 00000150: REVERT 00000151: JUMPDEST 00000152: POP 00000153: PUSH2 0x015a 00000156: PUSH2 0x0610 00000159: JUMP 0000015a: JUMPDEST 0000015b: PUSH1 0x40 0000015d: DUP1 0000015e: MLOAD 0000015f: SWAP2 00000160: DUP3 00000161: MSTORE 00000162: MLOAD 00000163: SWAP1 00000164: DUP2 00000165: SWAP1 00000166: SUB 00000167: PUSH1 0x20 00000169: ADD 0000016a: SWAP1 0000016b: RETURN 0000016c: JUMPDEST 0000016d: CALLVALUE 0000016e: DUP1 0000016f: ISZERO 00000170: PUSH2 0x0178 00000173: JUMPI 00000174: PUSH1 0x00 00000176: DUP1 00000177: REVERT 00000178: JUMPDEST 00000179: POP 0000017a: PUSH2 0x0181 0000017d: PUSH2 0x0634 00000180: JUMP 00000181: JUMPDEST 00000182: PUSH1 0x40 00000184: DUP1 00000185: MLOAD 00000186: PUSH1 0x20 00000188: DUP1 00000189: DUP3 0000018a: MSTORE 0000018b: DUP4 0000018c: MLOAD 0000018d: DUP2 0000018e: DUP4 0000018f: ADD 00000190: MSTORE 00000191: DUP4 00000192: MLOAD 00000193: SWAP2 00000194: SWAP3 00000195: DUP4 00000196: SWAP3 00000197: SWAP1 00000198: DUP4 00000199: ADD 0000019a: SWAP2 0000019b: DUP6 0000019c: ADD 0000019d: SWAP1 0000019e: DUP1 0000019f: DUP4 000001a0: DUP4 000001a1: PUSH1 0x00 000001a3: JUMPDEST 000001a4: DUP4 000001a5: DUP2 000001a6: LT 000001a7: ISZERO 000001a8: PUSH2 0x01bb 000001ab: JUMPI 000001ac: DUP2 000001ad: DUP2 000001ae: ADD 000001af: MLOAD 000001b0: DUP4 000001b1: DUP3 000001b2: ADD 000001b3: MSTORE 000001b4: PUSH1 0x20 000001b6: ADD 000001b7: PUSH2 0x01a3 000001ba: JUMP 000001bb: JUMPDEST 000001bc: POP 000001bd: POP 000001be: POP 000001bf: POP 000001c0: SWAP1 000001c1: POP 000001c2: SWAP1 000001c3: DUP2 000001c4: ADD 000001c5: SWAP1 000001c6: PUSH1 0x1f 000001c8: AND 000001c9: DUP1 000001ca: ISZERO 000001cb: PUSH2 0x01e8 000001ce: JUMPI 000001cf: DUP1 000001d0: DUP3 000001d1: SUB 000001d2: DUP1 000001d3: MLOAD 000001d4: PUSH1 0x01 000001d6: DUP4 000001d7: PUSH1 0x20 000001d9: SUB 000001da: PUSH2 0x0100 000001dd: EXP 000001de: SUB 000001df: NOT 000001e0: AND 000001e1: DUP2 000001e2: MSTORE 000001e3: PUSH1 0x20 000001e5: ADD 000001e6: SWAP2 000001e7: POP 000001e8: JUMPDEST 000001e9: POP 000001ea: SWAP3 000001eb: POP 000001ec: POP 000001ed: POP 000001ee: PUSH1 0x40 000001f0: MLOAD 000001f1: DUP1 000001f2: SWAP2 000001f3: SUB 000001f4: SWAP1 000001f5: RETURN 000001f6: JUMPDEST 000001f7: CALLVALUE 000001f8: DUP1 000001f9: ISZERO 000001fa: PUSH2 0x0202 000001fd: JUMPI 000001fe: PUSH1 0x00 00000200: DUP1 00000201: REVERT 00000202: JUMPDEST 00000203: POP 00000204: PUSH2 0x015a 00000207: PUSH2 0x0650 0000020a: JUMP 0000020b: JUMPDEST 0000020c: CALLVALUE 0000020d: DUP1 0000020e: ISZERO 0000020f: PUSH2 0x0217 00000212: JUMPI 00000213: PUSH1 0x00 00000215: DUP1 00000216: REVERT 00000217: JUMPDEST 00000218: POP 00000219: PUSH2 0x015a 0000021c: PUSH2 0x0674 0000021f: JUMP 00000220: JUMPDEST 00000221: CALLVALUE 00000222: DUP1 00000223: ISZERO 00000224: PUSH2 0x022c 00000227: JUMPI 00000228: PUSH1 0x00 0000022a: DUP1 0000022b: REVERT 0000022c: JUMPDEST 0000022d: POP 0000022e: PUSH2 0x0253 00000231: PUSH1 0x04 00000233: DUP1 00000234: CALLDATASIZE 00000235: SUB 00000236: PUSH1 0x20 00000238: DUP2 00000239: LT 0000023a: ISZERO 0000023b: PUSH2 0x0243 0000023e: JUMPI 0000023f: PUSH1 0x00 00000241: DUP1 00000242: REVERT 00000243: JUMPDEST 00000244: POP 00000245: CALLDATALOAD 00000246: PUSH1 0x01 00000248: PUSH1 0x01 0000024a: PUSH1 0xa0 0000024c: SHL 0000024d: SUB 0000024e: AND 0000024f: PUSH2 0x0698 00000252: JUMP 00000253: JUMPDEST 00000254: PUSH1 0x40 00000256: DUP1 00000257: MLOAD 00000258: SWAP2 00000259: ISZERO 0000025a: ISZERO 0000025b: DUP3 0000025c: MSTORE 0000025d: MLOAD 0000025e: SWAP1 0000025f: DUP2 00000260: SWAP1 00000261: SUB 00000262: PUSH1 0x20 00000264: ADD 00000265: SWAP1 00000266: RETURN 00000267: JUMPDEST 00000268: CALLVALUE 00000269: DUP1 0000026a: ISZERO 0000026b: PUSH2 0x0273 0000026e: JUMPI 0000026f: PUSH1 0x00 00000271: DUP1 00000272: REVERT 00000273: JUMPDEST 00000274: POP 00000275: PUSH2 0x015a 00000278: PUSH2 0x06ad 0000027b: JUMP 0000027c: JUMPDEST 0000027d: CALLVALUE 0000027e: DUP1 0000027f: ISZERO 00000280: PUSH2 0x0288 00000283: JUMPI 00000284: PUSH1 0x00 00000286: DUP1 00000287: REVERT 00000288: JUMPDEST 00000289: POP 0000028a: PUSH2 0x0181 0000028d: PUSH2 0x06b3 00000290: JUMP 00000291: JUMPDEST 00000292: CALLVALUE 00000293: DUP1 00000294: ISZERO 00000295: PUSH2 0x029d 00000298: JUMPI 00000299: PUSH1 0x00 0000029b: DUP1 0000029c: REVERT 0000029d: JUMPDEST 0000029e: POP 0000029f: PUSH2 0x0181 000002a2: PUSH2 0x06ec 000002a5: JUMP 000002a6: JUMPDEST 000002a7: CALLVALUE 000002a8: DUP1 000002a9: ISZERO 000002aa: PUSH2 0x02b2 000002ad: JUMPI 000002ae: PUSH1 0x00 000002b0: DUP1 000002b1: REVERT 000002b2: JUMPDEST 000002b3: POP 000002b4: PUSH2 0x0181 000002b7: PUSH2 0x0716 000002ba: JUMP 000002bb: JUMPDEST 000002bc: CALLVALUE 000002bd: DUP1 000002be: ISZERO 000002bf: PUSH2 0x02c7 000002c2: JUMPI 000002c3: PUSH1 0x00 000002c5: DUP1 000002c6: REVERT 000002c7: JUMPDEST 000002c8: POP 000002c9: PUSH2 0x0181 000002cc: PUSH2 0x074f 000002cf: JUMP 000002d0: JUMPDEST 000002d1: CALLVALUE 000002d2: DUP1 000002d3: ISZERO 000002d4: PUSH2 0x02dc 000002d7: JUMPI 000002d8: PUSH1 0x00 000002da: DUP1 000002db: REVERT 000002dc: JUMPDEST 000002dd: POP 000002de: PUSH2 0x015a 000002e1: PUSH2 0x077c 000002e4: JUMP 000002e5: JUMPDEST 000002e6: CALLVALUE 000002e7: DUP1 000002e8: ISZERO 000002e9: PUSH2 0x02f1 000002ec: JUMPI 000002ed: PUSH1 0x00 000002ef: DUP1 000002f0: REVERT 000002f1: JUMPDEST 000002f2: POP 000002f3: PUSH2 0x0540 000002f6: PUSH1 0x04 000002f8: DUP1 000002f9: CALLDATASIZE 000002fa: SUB 000002fb: PUSH2 0x0100 000002fe: DUP2 000002ff: LT 00000300: ISZERO 00000301: PUSH2 0x0309 00000304: JUMPI 00000305: PUSH1 0x00 00000307: DUP1 00000308: REVERT 00000309: JUMPDEST 0000030a: DUP2 0000030b: ADD 0000030c: SWAP1 0000030d: PUSH1 0x20 0000030f: DUP2 00000310: ADD 00000311: DUP2 00000312: CALLDATALOAD 00000313: PUSH1 0x01 00000315: PUSH1 0x20 00000317: SHL 00000318: DUP2 00000319: GT 0000031a: ISZERO 0000031b: PUSH2 0x0323 0000031e: JUMPI 0000031f: PUSH1 0x00 00000321: DUP1 00000322: REVERT 00000323: JUMPDEST 00000324: DUP3 00000325: ADD 00000326: DUP4 00000327: PUSH1 0x20 00000329: DUP3 0000032a: ADD 0000032b: GT 0000032c: ISZERO 0000032d: PUSH2 0x0335 00000330: JUMPI 00000331: PUSH1 0x00 00000333: DUP1 00000334: REVERT 00000335: JUMPDEST 00000336: DUP1 00000337: CALLDATALOAD 00000338: SWAP1 00000339: PUSH1 0x20 0000033b: ADD 0000033c: SWAP2 0000033d: DUP5 0000033e: PUSH1 0x20 00000340: DUP4 00000341: MUL 00000342: DUP5 00000343: ADD 00000344: GT 00000345: PUSH1 0x01 00000347: PUSH1 0x20 00000349: SHL 0000034a: DUP4 0000034b: GT 0000034c: OR 0000034d: ISZERO 0000034e: PUSH2 0x0356 00000351: JUMPI 00000352: PUSH1 0x00 00000354: DUP1 00000355: REVERT 00000356: JUMPDEST 00000357: SWAP2 00000358: SWAP1 00000359: DUP1 0000035a: DUP1 0000035b: PUSH1 0x20 0000035d: MUL 0000035e: PUSH1 0x20 00000360: ADD 00000361: PUSH1 0x40 00000363: MLOAD 00000364: SWAP1 00000365: DUP2 00000366: ADD 00000367: PUSH1 0x40 00000369: MSTORE 0000036a: DUP1 0000036b: SWAP4 0000036c: SWAP3 0000036d: SWAP2 0000036e: SWAP1 0000036f: DUP2 00000370: DUP2 00000371: MSTORE 00000372: PUSH1 0x20 00000374: ADD 00000375: DUP4 00000376: DUP4 00000377: PUSH1 0x20 00000379: MUL 0000037a: DUP1 0000037b: DUP3 0000037c: DUP5 0000037d: CALLDATACOPY 0000037e: PUSH1 0x00 00000380: SWAP3 00000381: ADD 00000382: SWAP2 00000383: SWAP1 00000384: SWAP2 00000385: MSTORE 00000386: POP 00000387: SWAP3 00000388: SWAP6 00000389: SWAP5 0000038a: SWAP4 0000038b: PUSH1 0x20 0000038d: DUP2 0000038e: ADD 0000038f: SWAP4 00000390: POP 00000391: CALLDATALOAD 00000392: SWAP2 00000393: POP 00000394: POP 00000395: PUSH1 0x01 00000397: PUSH1 0x20 00000399: SHL 0000039a: DUP2 0000039b: GT 0000039c: ISZERO 0000039d: PUSH2 0x03a5 000003a0: JUMPI 000003a1: PUSH1 0x00 000003a3: DUP1 000003a4: REVERT 000003a5: JUMPDEST 000003a6: DUP3 000003a7: ADD 000003a8: DUP4 000003a9: PUSH1 0x20 000003ab: DUP3 000003ac: ADD 000003ad: GT 000003ae: ISZERO 000003af: PUSH2 0x03b7 000003b2: JUMPI 000003b3: PUSH1 0x00 000003b5: DUP1 000003b6: REVERT 000003b7: JUMPDEST 000003b8: DUP1 000003b9: CALLDATALOAD 000003ba: SWAP1 000003bb: PUSH1 0x20 000003bd: ADD 000003be: SWAP2 000003bf: DUP5 000003c0: PUSH1 0x20 000003c2: DUP4 000003c3: MUL 000003c4: DUP5 000003c5: ADD 000003c6: GT 000003c7: PUSH1 0x01 000003c9: PUSH1 0x20 000003cb: SHL 000003cc: DUP4 000003cd: GT 000003ce: OR 000003cf: ISZERO 000003d0: PUSH2 0x03d8 000003d3: JUMPI 000003d4: PUSH1 0x00 000003d6: DUP1 000003d7: REVERT 000003d8: JUMPDEST 000003d9: SWAP2 000003da: SWAP1 000003db: DUP1 000003dc: DUP1 000003dd: PUSH1 0x20 000003df: MUL 000003e0: PUSH1 0x20 000003e2: ADD 000003e3: PUSH1 0x40 000003e5: MLOAD 000003e6: SWAP1 000003e7: DUP2 000003e8: ADD 000003e9: PUSH1 0x40 000003eb: MSTORE 000003ec: DUP1 000003ed: SWAP4 000003ee: SWAP3 000003ef: SWAP2 000003f0: SWAP1 000003f1: DUP2 000003f2: DUP2 000003f3: MSTORE 000003f4: PUSH1 0x20 000003f6: ADD 000003f7: DUP4 000003f8: DUP4 000003f9: PUSH1 0x20 000003fb: MUL 000003fc: DUP1 000003fd: DUP3 000003fe: DUP5 000003ff: CALLDATACOPY 00000400: PUSH1 0x00 00000402: SWAP3 00000403: ADD 00000404: SWAP2 00000405: SWAP1 00000406: SWAP2 00000407: MSTORE 00000408: POP 00000409: SWAP3 0000040a: SWAP6 0000040b: SWAP5 0000040c: SWAP4 0000040d: PUSH1 0x20 0000040f: DUP2 00000410: ADD 00000411: SWAP4 00000412: POP 00000413: CALLDATALOAD 00000414: SWAP2 00000415: POP 00000416: POP 00000417: PUSH1 0x01 00000419: PUSH1 0x20 0000041b: SHL 0000041c: DUP2 0000041d: GT 0000041e: ISZERO 0000041f: PUSH2 0x0427 00000422: JUMPI 00000423: PUSH1 0x00 00000425: DUP1 00000426: REVERT 00000427: JUMPDEST 00000428: DUP3 00000429: ADD 0000042a: DUP4 0000042b: PUSH1 0x20 0000042d: DUP3 0000042e: ADD 0000042f: GT 00000430: ISZERO 00000431: PUSH2 0x0439 00000434: JUMPI 00000435: PUSH1 0x00 00000437: DUP1 00000438: REVERT 00000439: JUMPDEST 0000043a: DUP1 0000043b: CALLDATALOAD 0000043c: SWAP1 0000043d: PUSH1 0x20 0000043f: ADD 00000440: SWAP2 00000441: DUP5 00000442: PUSH1 0x20 00000444: DUP4 00000445: MUL 00000446: DUP5 00000447: ADD 00000448: GT 00000449: PUSH1 0x01 0000044b: PUSH1 0x20 0000044d: SHL 0000044e: DUP4 0000044f: GT 00000450: OR 00000451: ISZERO 00000452: PUSH2 0x045a 00000455: JUMPI 00000456: PUSH1 0x00 00000458: DUP1 00000459: REVERT 0000045a: JUMPDEST 0000045b: SWAP2 0000045c: SWAP1 0000045d: DUP1 0000045e: DUP1 0000045f: PUSH1 0x20 00000461: MUL 00000462: PUSH1 0x20 00000464: ADD 00000465: PUSH1 0x40 00000467: MLOAD 00000468: SWAP1 00000469: DUP2 0000046a: ADD 0000046b: PUSH1 0x40 0000046d: MSTORE 0000046e: DUP1 0000046f: SWAP4 00000470: SWAP3 00000471: SWAP2 00000472: SWAP1 00000473: DUP2 00000474: DUP2 00000475: MSTORE 00000476: PUSH1 0x20 00000478: ADD 00000479: DUP4 0000047a: DUP4 0000047b: PUSH1 0x20 0000047d: MUL 0000047e: DUP1 0000047f: DUP3 00000480: DUP5 00000481: CALLDATACOPY 00000482: PUSH1 0x00 00000484: SWAP3 00000485: ADD 00000486: SWAP2 00000487: SWAP1 00000488: SWAP2 00000489: MSTORE 0000048a: POP 0000048b: SWAP3 0000048c: SWAP6 0000048d: PUSH1 0x01 0000048f: PUSH1 0x01 00000491: PUSH1 0xa0 00000493: SHL 00000494: SUB 00000495: DUP6 00000496: CALLDATALOAD 00000497: AND 00000498: SWAP6 00000499: PUSH1 0x20 0000049b: DUP7 0000049c: ADD 0000049d: CALLDATALOAD 0000049e: SWAP6 0000049f: SWAP2 000004a0: SWAP5 000004a1: POP 000004a2: SWAP3 000004a3: POP 000004a4: PUSH1 0x60 000004a6: DUP2 000004a7: ADD 000004a8: SWAP2 000004a9: POP 000004aa: PUSH1 0x40 000004ac: ADD 000004ad: CALLDATALOAD 000004ae: PUSH1 0x01 000004b0: PUSH1 0x20 000004b2: SHL 000004b3: DUP2 000004b4: GT 000004b5: ISZERO 000004b6: PUSH2 0x04be 000004b9: JUMPI 000004ba: PUSH1 0x00 000004bc: DUP1 000004bd: REVERT 000004be: JUMPDEST 000004bf: DUP3 000004c0: ADD 000004c1: DUP4 000004c2: PUSH1 0x20 000004c4: DUP3 000004c5: ADD 000004c6: GT 000004c7: ISZERO 000004c8: PUSH2 0x04d0 000004cb: JUMPI 000004cc: PUSH1 0x00 000004ce: DUP1 000004cf: REVERT 000004d0: JUMPDEST 000004d1: DUP1 000004d2: CALLDATALOAD 000004d3: SWAP1 000004d4: PUSH1 0x20 000004d6: ADD 000004d7: SWAP2 000004d8: DUP5 000004d9: PUSH1 0x01 000004db: DUP4 000004dc: MUL 000004dd: DUP5 000004de: ADD 000004df: GT 000004e0: PUSH1 0x01 000004e2: PUSH1 0x20 000004e4: SHL 000004e5: DUP4 000004e6: GT 000004e7: OR 000004e8: ISZERO 000004e9: PUSH2 0x04f1 000004ec: JUMPI 000004ed: PUSH1 0x00 000004ef: DUP1 000004f0: REVERT 000004f1: JUMPDEST 000004f2: SWAP2 000004f3: SWAP1 000004f4: DUP1 000004f5: DUP1 000004f6: PUSH1 0x1f 000004f8: ADD 000004f9: PUSH1 0x20 000004fb: DUP1 000004fc: SWAP2 000004fd: DIV 000004fe: MUL 000004ff: PUSH1 0x20 00000501: ADD 00000502: PUSH1 0x40 00000504: MLOAD 00000505: SWAP1 00000506: DUP2 00000507: ADD 00000508: PUSH1 0x40 0000050a: MSTORE 0000050b: DUP1 0000050c: SWAP4 0000050d: SWAP3 0000050e: SWAP2 0000050f: SWAP1 00000510: DUP2 00000511: DUP2 00000512: MSTORE 00000513: PUSH1 0x20 00000515: ADD 00000516: DUP4 00000517: DUP4 00000518: DUP1 00000519: DUP3 0000051a: DUP5 0000051b: CALLDATACOPY 0000051c: PUSH1 0x00 0000051e: SWAP3 0000051f: ADD 00000520: SWAP2 00000521: SWAP1 00000522: SWAP2 00000523: MSTORE 00000524: POP 00000525: SWAP3 00000526: SWAP6 00000527: POP 00000528: POP 00000529: PUSH1 0x01 0000052b: PUSH1 0x01 0000052d: PUSH1 0xa0 0000052f: SHL 00000530: SUB 00000531: DUP4 00000532: CALLDATALOAD 00000533: AND 00000534: SWAP4 00000535: POP 00000536: POP 00000537: POP 00000538: PUSH1 0x20 0000053a: ADD 0000053b: CALLDATALOAD 0000053c: PUSH2 0x07a0 0000053f: JUMP 00000540: JUMPDEST 00000541: STOP 00000542: JUMPDEST 00000543: CALLVALUE 00000544: DUP1 00000545: ISZERO 00000546: PUSH2 0x054e 00000549: JUMPI 0000054a: PUSH1 0x00 0000054c: DUP1 0000054d: REVERT 0000054e: JUMPDEST 0000054f: POP 00000550: PUSH2 0x0557 00000553: PUSH2 0x0e59 00000556: JUMP 00000557: JUMPDEST 00000558: PUSH1 0x40 0000055a: DUP1 0000055b: MLOAD 0000055c: PUSH1 0x20 0000055e: DUP1 0000055f: DUP3 00000560: MSTORE 00000561: DUP4 00000562: MLOAD 00000563: DUP2 00000564: DUP4 00000565: ADD 00000566: MSTORE 00000567: DUP4 00000568: MLOAD 00000569: SWAP2 0000056a: SWAP3 0000056b: DUP4 0000056c: SWAP3 0000056d: SWAP1 0000056e: DUP4 0000056f: ADD 00000570: SWAP2 00000571: DUP6 00000572: DUP2 00000573: ADD 00000574: SWAP2 00000575: MUL 00000576: DUP1 00000577: DUP4 00000578: DUP4 00000579: PUSH1 0x00 0000057b: JUMPDEST 0000057c: DUP4 0000057d: DUP2 0000057e: LT 0000057f: ISZERO 00000580: PUSH2 0x0593 00000583: JUMPI 00000584: DUP2 00000585: DUP2 00000586: ADD 00000587: MLOAD 00000588: DUP4 00000589: DUP3 0000058a: ADD 0000058b: MSTORE 0000058c: PUSH1 0x20 0000058e: ADD 0000058f: PUSH2 0x057b 00000592: JUMP 00000593: JUMPDEST 00000594: POP 00000595: POP 00000596: POP 00000597: POP 00000598: SWAP1 00000599: POP 0000059a: ADD 0000059b: SWAP3 0000059c: POP 0000059d: POP 0000059e: POP 0000059f: PUSH1 0x40 000005a1: MLOAD 000005a2: DUP1 000005a3: SWAP2 000005a4: SUB 000005a5: SWAP1 000005a6: RETURN 000005a7: JUMPDEST 000005a8: CALLVALUE 000005a9: DUP1 000005aa: ISZERO 000005ab: PUSH2 0x05b3 000005ae: JUMPI 000005af: PUSH1 0x00 000005b1: DUP1 000005b2: REVERT 000005b3: JUMPDEST 000005b4: POP 000005b5: PUSH2 0x015a 000005b8: PUSH2 0x0ebb 000005bb: JUMP 000005bc: JUMPDEST 000005bd: CALLVALUE 000005be: DUP1 000005bf: ISZERO 000005c0: PUSH2 0x05c8 000005c3: JUMPI 000005c4: PUSH1 0x00 000005c6: DUP1 000005c7: REVERT 000005c8: JUMPDEST 000005c9: POP 000005ca: PUSH2 0x015a 000005cd: PUSH2 0x0ec1 000005d0: JUMP 000005d1: JUMPDEST 000005d2: CALLVALUE 000005d3: DUP1 000005d4: ISZERO 000005d5: PUSH2 0x05dd 000005d8: JUMPI 000005d9: PUSH1 0x00 000005db: DUP1 000005dc: REVERT 000005dd: JUMPDEST 000005de: POP 000005df: PUSH2 0x0181 000005e2: PUSH2 0x0ee5 000005e5: JUMP 000005e6: JUMPDEST 000005e7: CALLVALUE 000005e8: DUP1 000005e9: ISZERO 000005ea: PUSH2 0x05f2 000005ed: JUMPI 000005ee: PUSH1 0x00 000005f0: DUP1 000005f1: REVERT 000005f2: JUMPDEST 000005f3: POP 000005f4: PUSH2 0x0181 000005f7: PUSH2 0x0f10 000005fa: JUMP 000005fb: JUMPDEST 000005fc: CALLVALUE 000005fd: DUP1 000005fe: ISZERO 000005ff: PUSH2 0x0607 00000602: JUMPI 00000603: PUSH1 0x00 00000605: DUP1 00000606: REVERT 00000607: JUMPDEST 00000608: POP 00000609: PUSH2 0x015a 0000060c: PUSH2 0x0f3e 0000060f: JUMP 00000610: JUMPDEST 00000611: PUSH32 0x32f3de0d7fc1cdd909bb4d992a94061e800669c611b9d07f137df1f4bb85f097 00000632: DUP2 00000633: JUMP 00000634: JUMPDEST 00000635: PUSH1 0x40 00000637: MLOAD 00000638: DUP1 00000639: PUSH1 0x60 0000063b: ADD 0000063c: PUSH1 0x40 0000063e: MSTORE 0000063f: DUP1 00000640: PUSH1 0x23 00000642: DUP2 00000643: MSTORE 00000644: PUSH1 0x20 00000646: ADD 00000647: PUSH2 0x0f51 0000064a: PUSH1 0x23 0000064c: SWAP2 0000064d: CODECOPY 0000064e: DUP2 0000064f: JUMP 00000650: JUMPDEST 00000651: PUSH32 0x3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d7 00000672: DUP2 00000673: JUMP 00000674: JUMPDEST 00000675: PUSH32 0xd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac56472 00000696: DUP2 00000697: JUMP 00000698: JUMPDEST 00000699: PUSH1 0x02 0000069b: PUSH1 0x20 0000069d: MSTORE 0000069e: PUSH1 0x00 000006a0: SWAP1 000006a1: DUP2 000006a2: MSTORE 000006a3: PUSH1 0x40 000006a5: SWAP1 000006a6: KECCAK256 000006a7: SLOAD 000006a8: PUSH1 0xff 000006aa: AND 000006ab: DUP2 000006ac: JUMP 000006ad: JUMPDEST 000006ae: PUSH1 0x01 000006b0: SLOAD 000006b1: DUP2 000006b2: JUMP 000006b3: JUMPDEST 000006b4: PUSH1 0x40 000006b6: MLOAD 000006b7: DUP1 000006b8: PUSH1 0x40 000006ba: ADD 000006bb: PUSH1 0x40 000006bd: MSTORE 000006be: DUP1 000006bf: PUSH1 0x1f 000006c1: DUP2 000006c2: MSTORE 000006c3: PUSH1 0x20 000006c5: ADD 000006c6: PUSH32 0x46554e4354494f4e2043414c4c20544f204e4f524d414c204143434f554e5400 000006e7: DUP2 000006e8: MSTORE 000006e9: POP 000006ea: DUP2 000006eb: JUMP 000006ec: JUMPDEST 000006ed: PUSH1 0x40 000006ef: MLOAD 000006f0: DUP1 000006f1: PUSH1 0x40 000006f3: ADD 000006f4: PUSH1 0x40 000006f6: MSTORE 000006f7: DUP1 000006f8: PUSH1 0x0e 000006fa: DUP2 000006fb: MSTORE 000006fc: PUSH1 0x20 000006fe: ADD 000006ff: PUSH14 0x2ba927a7239022ac22a1aaaa27a9 0000070e: PUSH1 0x91 00000710: SHL 00000711: DUP2 00000712: MSTORE 00000713: POP 00000714: DUP2 00000715: JUMP 00000716: JUMPDEST 00000717: PUSH1 0x40 00000719: MLOAD 0000071a: DUP1 0000071b: PUSH1 0x40 0000071d: ADD 0000071e: PUSH1 0x40 00000720: MSTORE 00000721: DUP1 00000722: PUSH1 0x1c 00000724: DUP2 00000725: MSTORE 00000726: PUSH1 0x20 00000728: ADD 00000729: PUSH32 0x494e56414c4944205448524553484f4c442f5349472d4c454e47544800000000 0000074a: DUP2 0000074b: MSTORE 0000074c: POP 0000074d: DUP2 0000074e: JUMP 0000074f: JUMPDEST 00000750: PUSH1 0x40 00000752: MLOAD 00000753: DUP1 00000754: PUSH1 0x40 00000756: ADD 00000757: PUSH1 0x40 00000759: MSTORE 0000075a: DUP1 0000075b: PUSH1 0x11 0000075d: DUP2 0000075e: MSTORE 0000075f: PUSH1 0x20 00000761: ADD 00000762: PUSH17 0x5448524553484f4c442f5349474e455253 00000774: PUSH1 0x78 00000776: SHL 00000777: DUP2 00000778: MSTORE 00000779: POP 0000077a: DUP2 0000077b: JUMP 0000077c: JUMPDEST 0000077d: PUSH32 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6 0000079e: DUP2 0000079f: JUMP 000007a0: JUMPDEST 000007a1: PUSH1 0x01 000007a3: SLOAD 000007a4: DUP8 000007a5: MLOAD 000007a6: EQ 000007a7: PUSH1 0x40 000007a9: MLOAD 000007aa: DUP1 000007ab: PUSH1 0x40 000007ad: ADD 000007ae: PUSH1 0x40 000007b0: MSTORE 000007b1: DUP1 000007b2: PUSH1 0x1c 000007b4: DUP2 000007b5: MSTORE 000007b6: PUSH1 0x20 000007b8: ADD 000007b9: PUSH32 0x494e56414c4944205448524553484f4c442f5349472d4c454e47544800000000 000007da: DUP2 000007db: MSTORE 000007dc: POP 000007dd: SWAP1 000007de: PUSH2 0x0865 000007e1: JUMPI 000007e2: PUSH1 0x40 000007e4: MLOAD 000007e5: PUSH3 0x461bcd 000007e9: PUSH1 0xe5 000007eb: SHL 000007ec: DUP2 000007ed: MSTORE 000007ee: PUSH1 0x04 000007f0: ADD 000007f1: DUP1 000007f2: DUP1 000007f3: PUSH1 0x20 000007f5: ADD 000007f6: DUP3 000007f7: DUP2 000007f8: SUB 000007f9: DUP3 000007fa: MSTORE 000007fb: DUP4 000007fc: DUP2 000007fd: DUP2 000007fe: MLOAD 000007ff: DUP2 00000800: MSTORE 00000801: PUSH1 0x20 00000803: ADD 00000804: SWAP2 00000805: POP 00000806: DUP1 00000807: MLOAD 00000808: SWAP1 00000809: PUSH1 0x20 0000080b: ADD 0000080c: SWAP1 0000080d: DUP1 0000080e: DUP4 0000080f: DUP4 00000810: PUSH1 0x00 00000812: JUMPDEST 00000813: DUP4 00000814: DUP2 00000815: LT 00000816: ISZERO 00000817: PUSH2 0x082a 0000081a: JUMPI 0000081b: DUP2 0000081c: DUP2 0000081d: ADD 0000081e: MLOAD 0000081f: DUP4 00000820: DUP3 00000821: ADD 00000822: MSTORE 00000823: PUSH1 0x20 00000825: ADD 00000826: PUSH2 0x0812 00000829: JUMP 0000082a: JUMPDEST 0000082b: POP 0000082c: POP 0000082d: POP 0000082e: POP 0000082f: SWAP1 00000830: POP 00000831: SWAP1 00000832: DUP2 00000833: ADD 00000834: SWAP1 00000835: PUSH1 0x1f 00000837: AND 00000838: DUP1 00000839: ISZERO 0000083a: PUSH2 0x0857 0000083d: JUMPI 0000083e: DUP1 0000083f: DUP3 00000840: SUB 00000841: DUP1 00000842: MLOAD 00000843: PUSH1 0x01 00000845: DUP4 00000846: PUSH1 0x20 00000848: SUB 00000849: PUSH2 0x0100 0000084c: EXP 0000084d: SUB 0000084e: NOT 0000084f: AND 00000850: DUP2 00000851: MSTORE 00000852: PUSH1 0x20 00000854: ADD 00000855: SWAP2 00000856: POP 00000857: JUMPDEST 00000858: POP 00000859: SWAP3 0000085a: POP 0000085b: POP 0000085c: POP 0000085d: PUSH1 0x40 0000085f: MLOAD 00000860: DUP1 00000861: SWAP2 00000862: SUB 00000863: SWAP1 00000864: REVERT 00000865: JUMPDEST 00000866: POP 00000867: DUP6 00000868: MLOAD 00000869: DUP8 0000086a: MLOAD 0000086b: EQ 0000086c: DUP1 0000086d: ISZERO 0000086e: PUSH2 0x0878 00000871: JUMPI 00000872: POP 00000873: DUP8 00000874: MLOAD 00000875: DUP8 00000876: MLOAD 00000877: EQ 00000878: JUMPDEST 00000879: PUSH1 0x40 0000087b: MLOAD 0000087c: DUP1 0000087d: PUSH1 0x40 0000087f: ADD 00000880: PUSH1 0x40 00000882: MSTORE 00000883: DUP1 00000884: PUSH1 0x1c 00000886: DUP2 00000887: MSTORE 00000888: PUSH1 0x20 0000088a: ADD 0000088b: PUSH32 0x494e56414c4944205448524553484f4c442f5349472d4c454e47544800000000 000008ac: DUP2 000008ad: MSTORE 000008ae: POP 000008af: SWAP1 000008b0: PUSH2 0x08fa 000008b3: JUMPI 000008b4: PUSH1 0x40 000008b6: MLOAD 000008b7: PUSH3 0x461bcd 000008bb: PUSH1 0xe5 000008bd: SHL 000008be: DUP2 000008bf: MSTORE 000008c0: PUSH1 0x20 000008c2: PUSH1 0x04 000008c4: DUP3 000008c5: ADD 000008c6: DUP2 000008c7: DUP2 000008c8: MSTORE 000008c9: DUP4 000008ca: MLOAD 000008cb: PUSH1 0x24 000008cd: DUP5 000008ce: ADD 000008cf: MSTORE 000008d0: DUP4 000008d1: MLOAD 000008d2: SWAP1 000008d3: SWAP3 000008d4: DUP4 000008d5: SWAP3 000008d6: PUSH1 0x44 000008d8: SWAP1 000008d9: SWAP2 000008da: ADD 000008db: SWAP2 000008dc: SWAP1 000008dd: DUP6 000008de: ADD 000008df: SWAP1 000008e0: DUP1 000008e1: DUP4 000008e2: DUP4 000008e3: PUSH1 0x00 000008e5: DUP4 000008e6: ISZERO 000008e7: PUSH2 0x082a 000008ea: JUMPI 000008eb: DUP2 000008ec: DUP2 000008ed: ADD 000008ee: MLOAD 000008ef: DUP4 000008f0: DUP3 000008f1: ADD 000008f2: MSTORE 000008f3: PUSH1 0x20 000008f5: ADD 000008f6: PUSH2 0x0812 000008f9: JUMP 000008fa: JUMPDEST 000008fb: POP 000008fc: PUSH1 0x01 000008fe: PUSH1 0x01 00000900: PUSH1 0xa0 00000902: SHL 00000903: SUB 00000904: DUP3 00000905: AND 00000906: CALLER 00000907: EQ 00000908: DUP1 00000909: PUSH2 0x0919 0000090c: JUMPI 0000090d: POP 0000090e: PUSH1 0x01 00000910: PUSH1 0x01 00000912: PUSH1 0xa0 00000914: SHL 00000915: SUB 00000916: DUP3 00000917: AND 00000918: ISZERO 00000919: JUMPDEST 0000091a: PUSH1 0x40 0000091c: MLOAD 0000091d: DUP1 0000091e: PUSH1 0x40 00000920: ADD 00000921: PUSH1 0x40 00000923: MSTORE 00000924: DUP1 00000925: PUSH1 0x0e 00000927: DUP2 00000928: MSTORE 00000929: PUSH1 0x20 0000092b: ADD 0000092c: PUSH14 0x2ba927a7239022ac22a1aaaa27a9 0000093b: PUSH1 0x91 0000093d: SHL 0000093e: DUP2 0000093f: MSTORE 00000940: POP 00000941: SWAP1 00000942: PUSH2 0x098c 00000945: JUMPI 00000946: PUSH1 0x40 00000948: MLOAD 00000949: PUSH3 0x461bcd 0000094d: PUSH1 0xe5 0000094f: SHL 00000950: DUP2 00000951: MSTORE 00000952: PUSH1 0x20 00000954: PUSH1 0x04 00000956: DUP3 00000957: ADD 00000958: DUP2 00000959: DUP2 0000095a: MSTORE 0000095b: DUP4 0000095c: MLOAD 0000095d: PUSH1 0x24 0000095f: DUP5 00000960: ADD 00000961: MSTORE 00000962: DUP4 00000963: MLOAD 00000964: SWAP1 00000965: SWAP3 00000966: DUP4 00000967: SWAP3 00000968: PUSH1 0x44 0000096a: SWAP1 0000096b: SWAP2 0000096c: ADD 0000096d: SWAP2 0000096e: SWAP1 0000096f: DUP6 00000970: ADD 00000971: SWAP1 00000972: DUP1 00000973: DUP4 00000974: DUP4 00000975: PUSH1 0x00 00000977: DUP4 00000978: ISZERO 00000979: PUSH2 0x082a 0000097c: JUMPI 0000097d: DUP2 0000097e: DUP2 0000097f: ADD 00000980: MLOAD 00000981: DUP4 00000982: DUP3 00000983: ADD 00000984: MSTORE 00000985: PUSH1 0x20 00000987: ADD 00000988: PUSH2 0x0812 0000098b: JUMP 0000098c: JUMPDEST 0000098d: POP 0000098e: DUP3 0000098f: MLOAD 00000990: PUSH1 0x20 00000992: DUP1 00000993: DUP6 00000994: ADD 00000995: SWAP2 00000996: SWAP1 00000997: SWAP2 00000998: KECCAK256 00000999: PUSH1 0x00 0000099b: DUP1 0000099c: SLOAD 0000099d: PUSH1 0x40 0000099f: DUP1 000009a0: MLOAD 000009a1: PUSH32 0x3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d7 000009c2: DUP2 000009c3: DUP8 000009c4: ADD 000009c5: MSTORE 000009c6: PUSH1 0x01 000009c8: PUSH1 0x01 000009ca: PUSH1 0xa0 000009cc: SHL 000009cd: SUB 000009ce: DUP1 000009cf: DUP13 000009d0: AND 000009d1: DUP3 000009d2: DUP5 000009d3: ADD 000009d4: MSTORE 000009d5: PUSH1 0x60 000009d7: DUP3 000009d8: ADD 000009d9: DUP12 000009da: SWAP1 000009db: MSTORE 000009dc: PUSH1 0x80 000009de: DUP3 000009df: ADD 000009e0: SWAP6 000009e1: SWAP1 000009e2: SWAP6 000009e3: MSTORE 000009e4: PUSH1 0xa0 000009e6: DUP2 000009e7: ADD 000009e8: SWAP3 000009e9: SWAP1 000009ea: SWAP3 000009eb: MSTORE 000009ec: SWAP3 000009ed: DUP7 000009ee: AND 000009ef: PUSH1 0xc0 000009f1: DUP3 000009f2: ADD 000009f3: MSTORE 000009f4: PUSH1 0xe0 000009f6: DUP1 000009f7: DUP3 000009f8: ADD 000009f9: DUP7 000009fa: SWAP1 000009fb: MSTORE 000009fc: DUP4 000009fd: MLOAD 000009fe: DUP1 000009ff: DUP4 00000a00: SUB 00000a01: SWAP1 00000a02: SWAP2 00000a03: ADD 00000a04: DUP2 00000a05: MSTORE 00000a06: PUSH2 0x0100 00000a09: DUP3 00000a0a: ADD 00000a0b: DUP5 00000a0c: MSTORE 00000a0d: DUP1 00000a0e: MLOAD 00000a0f: SWAP1 00000a10: DUP6 00000a11: ADD 00000a12: KECCAK256 00000a13: PUSH1 0x04 00000a15: SLOAD 00000a16: PUSH2 0x1901 00000a19: PUSH1 0xf0 00000a1b: SHL 00000a1c: PUSH2 0x0120 00000a1f: DUP5 00000a20: ADD 00000a21: MSTORE 00000a22: PUSH2 0x0122 00000a25: DUP4 00000a26: ADD 00000a27: MSTORE 00000a28: PUSH2 0x0142 00000a2b: DUP1 00000a2c: DUP4 00000a2d: ADD 00000a2e: DUP3 00000a2f: SWAP1 00000a30: MSTORE 00000a31: DUP5 00000a32: MLOAD 00000a33: DUP1 00000a34: DUP5 00000a35: SUB 00000a36: SWAP1 00000a37: SWAP2 00000a38: ADD 00000a39: DUP2 00000a3a: MSTORE 00000a3b: PUSH2 0x0162 00000a3e: SWAP1 00000a3f: SWAP3 00000a40: ADD 00000a41: SWAP1 00000a42: SWAP4 00000a43: MSTORE 00000a44: DUP1 00000a45: MLOAD 00000a46: SWAP4 00000a47: ADD 00000a48: SWAP3 00000a49: SWAP1 00000a4a: SWAP3 00000a4b: KECCAK256 00000a4c: SWAP1 00000a4d: SWAP2 00000a4e: DUP1 00000a4f: JUMPDEST 00000a50: PUSH1 0x01 00000a52: SLOAD 00000a53: DUP2 00000a54: LT 00000a55: ISZERO 00000a56: PUSH2 0x0bb5 00000a59: JUMPI 00000a5a: PUSH1 0x00 00000a5c: PUSH1 0x01 00000a5e: DUP5 00000a5f: DUP15 00000a60: DUP5 00000a61: DUP2 00000a62: MLOAD 00000a63: DUP2 00000a64: LT 00000a65: PUSH2 0x0a6a 00000a68: JUMPI 00000a69: INVALID 00000a6a: JUMPDEST 00000a6b: PUSH1 0x20 00000a6d: MUL 00000a6e: PUSH1 0x20 00000a70: ADD 00000a71: ADD 00000a72: MLOAD 00000a73: DUP15 00000a74: DUP6 00000a75: DUP2 00000a76: MLOAD 00000a77: DUP2 00000a78: LT 00000a79: PUSH2 0x0a7e 00000a7c: JUMPI 00000a7d: INVALID 00000a7e: JUMPDEST 00000a7f: PUSH1 0x20 00000a81: MUL 00000a82: PUSH1 0x20 00000a84: ADD 00000a85: ADD 00000a86: MLOAD 00000a87: DUP15 00000a88: DUP7 00000a89: DUP2 00000a8a: MLOAD 00000a8b: DUP2 00000a8c: LT 00000a8d: PUSH2 0x0a92 00000a90: JUMPI 00000a91: INVALID 00000a92: JUMPDEST 00000a93: PUSH1 0x20 00000a95: MUL 00000a96: PUSH1 0x20 00000a98: ADD 00000a99: ADD 00000a9a: MLOAD 00000a9b: PUSH1 0x40 00000a9d: MLOAD 00000a9e: PUSH1 0x00 00000aa0: DUP2 00000aa1: MSTORE 00000aa2: PUSH1 0x20 00000aa4: ADD 00000aa5: PUSH1 0x40 00000aa7: MSTORE 00000aa8: PUSH1 0x40 00000aaa: MLOAD 00000aab: DUP1 00000aac: DUP6 00000aad: DUP2 00000aae: MSTORE 00000aaf: PUSH1 0x20 00000ab1: ADD 00000ab2: DUP5 00000ab3: PUSH1 0xff 00000ab5: AND 00000ab6: PUSH1 0xff 00000ab8: AND 00000ab9: DUP2 00000aba: MSTORE 00000abb: PUSH1 0x20 00000abd: ADD 00000abe: DUP4 00000abf: DUP2 00000ac0: MSTORE 00000ac1: PUSH1 0x20 00000ac3: ADD 00000ac4: DUP3 00000ac5: DUP2 00000ac6: MSTORE 00000ac7: PUSH1 0x20 00000ac9: ADD 00000aca: SWAP5 00000acb: POP 00000acc: POP 00000acd: POP 00000ace: POP 00000acf: POP 00000ad0: PUSH1 0x20 00000ad2: PUSH1 0x40 00000ad4: MLOAD 00000ad5: PUSH1 0x20 00000ad7: DUP2 00000ad8: SUB 00000ad9: SWAP1 00000ada: DUP1 00000adb: DUP5 00000adc: SUB 00000add: SWAP1 00000ade: DUP6 00000adf: GAS 00000ae0: STATICCALL 00000ae1: ISZERO 00000ae2: DUP1 00000ae3: ISZERO 00000ae4: PUSH2 0x0af1 00000ae7: JUMPI 00000ae8: RETURNDATASIZE 00000ae9: PUSH1 0x00 00000aeb: DUP1 00000aec: RETURNDATACOPY 00000aed: RETURNDATASIZE 00000aee: PUSH1 0x00 00000af0: REVERT 00000af1: JUMPDEST 00000af2: POP 00000af3: POP 00000af4: POP 00000af5: PUSH1 0x20 00000af7: PUSH1 0x40 00000af9: MLOAD 00000afa: SUB 00000afb: MLOAD 00000afc: SWAP1 00000afd: POP 00000afe: DUP3 00000aff: PUSH1 0x01 00000b01: PUSH1 0x01 00000b03: PUSH1 0xa0 00000b05: SHL 00000b06: SUB 00000b07: AND 00000b08: DUP2 00000b09: PUSH1 0x01 00000b0b: PUSH1 0x01 00000b0d: PUSH1 0xa0 00000b0f: SHL 00000b10: SUB 00000b11: AND 00000b12: GT 00000b13: DUP1 00000b14: ISZERO 00000b15: PUSH2 0x0b36 00000b18: JUMPI 00000b19: POP 00000b1a: PUSH1 0x01 00000b1c: PUSH1 0x01 00000b1e: PUSH1 0xa0 00000b20: SHL 00000b21: SUB 00000b22: DUP2 00000b23: AND 00000b24: PUSH1 0x00 00000b26: SWAP1 00000b27: DUP2 00000b28: MSTORE 00000b29: PUSH1 0x02 00000b2b: PUSH1 0x20 00000b2d: MSTORE 00000b2e: PUSH1 0x40 00000b30: SWAP1 00000b31: KECCAK256 00000b32: SLOAD 00000b33: PUSH1 0xff 00000b35: AND 00000b36: JUMPDEST 00000b37: PUSH1 0x40 00000b39: MLOAD 00000b3a: DUP1 00000b3b: PUSH1 0x40 00000b3d: ADD 00000b3e: PUSH1 0x40 00000b40: MSTORE 00000b41: DUP1 00000b42: PUSH1 0x0f 00000b44: DUP2 00000b45: MSTORE 00000b46: PUSH1 0x20 00000b48: ADD 00000b49: PUSH15 0x57524f4e47205349474e4154555245 00000b59: PUSH1 0x88 00000b5b: SHL 00000b5c: DUP2 00000b5d: MSTORE 00000b5e: POP 00000b5f: SWAP1 00000b60: PUSH2 0x0baa 00000b63: JUMPI 00000b64: PUSH1 0x40 00000b66: MLOAD 00000b67: PUSH3 0x461bcd 00000b6b: PUSH1 0xe5 00000b6d: SHL 00000b6e: DUP2 00000b6f: MSTORE 00000b70: PUSH1 0x20 00000b72: PUSH1 0x04 00000b74: DUP3 00000b75: ADD 00000b76: DUP2 00000b77: DUP2 00000b78: MSTORE 00000b79: DUP4 00000b7a: MLOAD 00000b7b: PUSH1 0x24 00000b7d: DUP5 00000b7e: ADD 00000b7f: MSTORE 00000b80: DUP4 00000b81: MLOAD 00000b82: SWAP1 00000b83: SWAP3 00000b84: DUP4 00000b85: SWAP3 00000b86: PUSH1 0x44 00000b88: SWAP1 00000b89: SWAP2 00000b8a: ADD 00000b8b: SWAP2 00000b8c: SWAP1 00000b8d: DUP6 00000b8e: ADD 00000b8f: SWAP1 00000b90: DUP1 00000b91: DUP4 00000b92: DUP4 00000b93: PUSH1 0x00 00000b95: DUP4 00000b96: ISZERO 00000b97: PUSH2 0x082a 00000b9a: JUMPI 00000b9b: DUP2 00000b9c: DUP2 00000b9d: ADD 00000b9e: MLOAD 00000b9f: DUP4 00000ba0: DUP3 00000ba1: ADD 00000ba2: MSTORE 00000ba3: PUSH1 0x20 00000ba5: ADD 00000ba6: PUSH2 0x0812 00000ba9: JUMP 00000baa: JUMPDEST 00000bab: POP 00000bac: SWAP2 00000bad: POP 00000bae: PUSH1 0x01 00000bb0: ADD 00000bb1: PUSH2 0x0a4f 00000bb4: JUMP 00000bb5: JUMPDEST 00000bb6: POP 00000bb7: PUSH1 0x00 00000bb9: DUP1 00000bba: SLOAD 00000bbb: PUSH1 0x01 00000bbd: ADD 00000bbe: SWAP1 00000bbf: SSTORE 00000bc0: DUP6 00000bc1: MLOAD 00000bc2: ISZERO 00000bc3: PUSH2 0x0c53 00000bc6: JUMPI 00000bc7: PUSH2 0x0bcf 00000bca: DUP9 00000bcb: PUSH2 0x0f44 00000bce: JUMP 00000bcf: JUMPDEST 00000bd0: PUSH1 0x40 00000bd2: MLOAD 00000bd3: DUP1 00000bd4: PUSH1 0x40 00000bd6: ADD 00000bd7: PUSH1 0x40 00000bd9: MSTORE 00000bda: DUP1 00000bdb: PUSH1 0x1f 00000bdd: DUP2 00000bde: MSTORE 00000bdf: PUSH1 0x20 00000be1: ADD 00000be2: PUSH32 0x46554e4354494f4e2043414c4c20544f204e4f524d414c204143434f554e5400 00000c03: DUP2 00000c04: MSTORE 00000c05: POP 00000c06: SWAP1 00000c07: PUSH2 0x0c51 00000c0a: JUMPI 00000c0b: PUSH1 0x40 00000c0d: MLOAD 00000c0e: PUSH3 0x461bcd 00000c12: PUSH1 0xe5 00000c14: SHL 00000c15: DUP2 00000c16: MSTORE 00000c17: PUSH1 0x20 00000c19: PUSH1 0x04 00000c1b: DUP3 00000c1c: ADD 00000c1d: DUP2 00000c1e: DUP2 00000c1f: MSTORE 00000c20: DUP4 00000c21: MLOAD 00000c22: PUSH1 0x24 00000c24: DUP5 00000c25: ADD 00000c26: MSTORE 00000c27: DUP4 00000c28: MLOAD 00000c29: SWAP1 00000c2a: SWAP3 00000c2b: DUP4 00000c2c: SWAP3 00000c2d: PUSH1 0x44 00000c2f: SWAP1 00000c30: SWAP2 00000c31: ADD 00000c32: SWAP2 00000c33: SWAP1 00000c34: DUP6 00000c35: ADD 00000c36: SWAP1 00000c37: DUP1 00000c38: DUP4 00000c39: DUP4 00000c3a: PUSH1 0x00 00000c3c: DUP4 00000c3d: ISZERO 00000c3e: PUSH2 0x082a 00000c41: JUMPI 00000c42: DUP2 00000c43: DUP2 00000c44: ADD 00000c45: MLOAD 00000c46: DUP4 00000c47: DUP3 00000c48: ADD 00000c49: MSTORE 00000c4a: PUSH1 0x20 00000c4c: ADD 00000c4d: PUSH2 0x0812 00000c50: JUMP 00000c51: JUMPDEST 00000c52: POP 00000c53: JUMPDEST 00000c54: PUSH1 0x00 00000c56: DUP9 00000c57: PUSH1 0x01 00000c59: PUSH1 0x01 00000c5b: PUSH1 0xa0 00000c5d: SHL 00000c5e: SUB 00000c5f: AND 00000c60: DUP6 00000c61: DUP10 00000c62: DUP10 00000c63: PUSH1 0x40 00000c65: MLOAD 00000c66: DUP1 00000c67: DUP3 00000c68: DUP1 00000c69: MLOAD 00000c6a: SWAP1 00000c6b: PUSH1 0x20 00000c6d: ADD 00000c6e: SWAP1 00000c6f: DUP1 00000c70: DUP4 00000c71: DUP4 00000c72: JUMPDEST 00000c73: PUSH1 0x20 00000c75: DUP4 00000c76: LT 00000c77: PUSH2 0x0c91 00000c7a: JUMPI 00000c7b: DUP1 00000c7c: MLOAD 00000c7d: DUP3 00000c7e: MSTORE 00000c7f: PUSH1 0x1f 00000c81: NOT 00000c82: SWAP1 00000c83: SWAP3 00000c84: ADD 00000c85: SWAP2 00000c86: PUSH1 0x20 00000c88: SWAP2 00000c89: DUP3 00000c8a: ADD 00000c8b: SWAP2 00000c8c: ADD 00000c8d: PUSH2 0x0c72 00000c90: JUMP 00000c91: JUMPDEST 00000c92: PUSH1 0x01 00000c94: DUP4 00000c95: PUSH1 0x20 00000c97: SUB 00000c98: PUSH2 0x0100 00000c9b: EXP 00000c9c: SUB 00000c9d: DUP1 00000c9e: NOT 00000c9f: DUP3 00000ca0: MLOAD 00000ca1: AND 00000ca2: DUP2 00000ca3: DUP5 00000ca4: MLOAD 00000ca5: AND 00000ca6: DUP1 00000ca7: DUP3 00000ca8: OR 00000ca9: DUP6 00000caa: MSTORE 00000cab: POP 00000cac: POP 00000cad: POP 00000cae: POP 00000caf: POP 00000cb0: POP 00000cb1: SWAP1 00000cb2: POP 00000cb3: ADD 00000cb4: SWAP2 00000cb5: POP 00000cb6: POP 00000cb7: PUSH1 0x00 00000cb9: PUSH1 0x40 00000cbb: MLOAD 00000cbc: DUP1 00000cbd: DUP4 00000cbe: SUB 00000cbf: DUP2 00000cc0: DUP6 00000cc1: DUP9 00000cc2: DUP9 00000cc3: CALL 00000cc4: SWAP4 00000cc5: POP 00000cc6: POP 00000cc7: POP 00000cc8: POP 00000cc9: RETURNDATASIZE 00000cca: DUP1 00000ccb: PUSH1 0x00 00000ccd: DUP2 00000cce: EQ 00000ccf: PUSH2 0x0cf4 00000cd2: JUMPI 00000cd3: PUSH1 0x40 00000cd5: MLOAD 00000cd6: SWAP2 00000cd7: POP 00000cd8: PUSH1 0x1f 00000cda: NOT 00000cdb: PUSH1 0x3f 00000cdd: RETURNDATASIZE 00000cde: ADD 00000cdf: AND 00000ce0: DUP3 00000ce1: ADD 00000ce2: PUSH1 0x40 00000ce4: MSTORE 00000ce5: RETURNDATASIZE 00000ce6: DUP3 00000ce7: MSTORE 00000ce8: RETURNDATASIZE 00000ce9: PUSH1 0x00 00000ceb: PUSH1 0x20 00000ced: DUP5 00000cee: ADD 00000cef: RETURNDATACOPY 00000cf0: PUSH2 0x0cf9 00000cf3: JUMP 00000cf4: JUMPDEST 00000cf5: PUSH1 0x60 00000cf7: SWAP2 00000cf8: POP 00000cf9: JUMPDEST 00000cfa: POP 00000cfb: POP 00000cfc: SWAP1 00000cfd: POP 00000cfe: DUP1 00000cff: PUSH1 0x40 00000d01: MLOAD 00000d02: DUP1 00000d03: PUSH1 0x40 00000d05: ADD 00000d06: PUSH1 0x40 00000d08: MSTORE 00000d09: DUP1 00000d0a: PUSH1 0x12 00000d0c: DUP2 00000d0d: MSTORE 00000d0e: PUSH1 0x20 00000d10: ADD 00000d11: PUSH18 0x125395115493905308151608119052531151 00000d24: PUSH1 0x72 00000d26: SHL 00000d27: DUP2 00000d28: MSTORE 00000d29: POP 00000d2a: SWAP1 00000d2b: PUSH2 0x0d75 00000d2e: JUMPI 00000d2f: PUSH1 0x40 00000d31: MLOAD 00000d32: PUSH3 0x461bcd 00000d36: PUSH1 0xe5 00000d38: SHL 00000d39: DUP2 00000d3a: MSTORE 00000d3b: PUSH1 0x20 00000d3d: PUSH1 0x04 00000d3f: DUP3 00000d40: ADD 00000d41: DUP2 00000d42: DUP2 00000d43: MSTORE 00000d44: DUP4 00000d45: MLOAD 00000d46: PUSH1 0x24 00000d48: DUP5 00000d49: ADD 00000d4a: MSTORE 00000d4b: DUP4 00000d4c: MLOAD 00000d4d: SWAP1 00000d4e: SWAP3 00000d4f: DUP4 00000d50: SWAP3 00000d51: PUSH1 0x44 00000d53: SWAP1 00000d54: SWAP2 00000d55: ADD 00000d56: SWAP2 00000d57: SWAP1 00000d58: DUP6 00000d59: ADD 00000d5a: SWAP1 00000d5b: DUP1 00000d5c: DUP4 00000d5d: DUP4 00000d5e: PUSH1 0x00 00000d60: DUP4 00000d61: ISZERO 00000d62: PUSH2 0x082a 00000d65: JUMPI 00000d66: DUP2 00000d67: DUP2 00000d68: ADD 00000d69: MLOAD 00000d6a: DUP4 00000d6b: DUP3 00000d6c: ADD 00000d6d: MSTORE 00000d6e: PUSH1 0x20 00000d70: ADD 00000d71: PUSH2 0x0812 00000d74: JUMP 00000d75: JUMPDEST 00000d76: POP 00000d77: PUSH32 0x187ae0bfb8619f02a4db1cfef70a54e5722d00d8fcfe6811f1a1f044633ca0a7 00000d98: CALLER 00000d99: DUP11 00000d9a: DUP11 00000d9b: DUP11 00000d9c: PUSH1 0x40 00000d9e: MLOAD 00000d9f: DUP1 00000da0: DUP6 00000da1: PUSH1 0x01 00000da3: PUSH1 0x01 00000da5: PUSH1 0xa0 00000da7: SHL 00000da8: SUB 00000da9: AND 00000daa: PUSH1 0x01 00000dac: PUSH1 0x01 00000dae: PUSH1 0xa0 00000db0: SHL 00000db1: SUB 00000db2: AND 00000db3: DUP2 00000db4: MSTORE 00000db5: PUSH1 0x20 00000db7: ADD 00000db8: DUP5 00000db9: PUSH1 0x01 00000dbb: PUSH1 0x01 00000dbd: PUSH1 0xa0 00000dbf: SHL 00000dc0: SUB 00000dc1: AND 00000dc2: PUSH1 0x01 00000dc4: PUSH1 0x01 00000dc6: PUSH1 0xa0 00000dc8: SHL 00000dc9: SUB 00000dca: AND 00000dcb: DUP2 00000dcc: MSTORE 00000dcd: PUSH1 0x20 00000dcf: ADD 00000dd0: DUP4 00000dd1: DUP2 00000dd2: MSTORE 00000dd3: PUSH1 0x20 00000dd5: ADD 00000dd6: DUP1 00000dd7: PUSH1 0x20 00000dd9: ADD 00000dda: DUP3 00000ddb: DUP2 00000ddc: SUB 00000ddd: DUP3 00000dde: MSTORE 00000ddf: DUP4 00000de0: DUP2 00000de1: DUP2 00000de2: MLOAD 00000de3: DUP2 00000de4: MSTORE 00000de5: PUSH1 0x20 00000de7: ADD 00000de8: SWAP2 00000de9: POP 00000dea: DUP1 00000deb: MLOAD 00000dec: SWAP1 00000ded: PUSH1 0x20 00000def: ADD 00000df0: SWAP1 00000df1: DUP1 00000df2: DUP4 00000df3: DUP4 00000df4: PUSH1 0x00 00000df6: JUMPDEST 00000df7: DUP4 00000df8: DUP2 00000df9: LT 00000dfa: ISZERO 00000dfb: PUSH2 0x0e0e 00000dfe: JUMPI 00000dff: DUP2 00000e00: DUP2 00000e01: ADD 00000e02: MLOAD 00000e03: DUP4 00000e04: DUP3 00000e05: ADD 00000e06: MSTORE 00000e07: PUSH1 0x20 00000e09: ADD 00000e0a: PUSH2 0x0df6 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: POP 00000e10: POP 00000e11: POP 00000e12: POP 00000e13: SWAP1 00000e14: POP 00000e15: SWAP1 00000e16: DUP2 00000e17: ADD 00000e18: SWAP1 00000e19: PUSH1 0x1f 00000e1b: AND 00000e1c: DUP1 00000e1d: ISZERO 00000e1e: PUSH2 0x0e3b 00000e21: JUMPI 00000e22: DUP1 00000e23: DUP3 00000e24: SUB 00000e25: DUP1 00000e26: MLOAD 00000e27: PUSH1 0x01 00000e29: DUP4 00000e2a: PUSH1 0x20 00000e2c: SUB 00000e2d: PUSH2 0x0100 00000e30: EXP 00000e31: SUB 00000e32: NOT 00000e33: AND 00000e34: DUP2 00000e35: MSTORE 00000e36: PUSH1 0x20 00000e38: ADD 00000e39: SWAP2 00000e3a: POP 00000e3b: JUMPDEST 00000e3c: POP 00000e3d: SWAP6 00000e3e: POP 00000e3f: POP 00000e40: POP 00000e41: POP 00000e42: POP 00000e43: POP 00000e44: PUSH1 0x40 00000e46: MLOAD 00000e47: DUP1 00000e48: SWAP2 00000e49: SUB 00000e4a: SWAP1 00000e4b: LOG1 00000e4c: POP 00000e4d: POP 00000e4e: POP 00000e4f: POP 00000e50: POP 00000e51: POP 00000e52: POP 00000e53: POP 00000e54: POP 00000e55: POP 00000e56: POP 00000e57: POP 00000e58: JUMP 00000e59: JUMPDEST 00000e5a: PUSH1 0x60 00000e5c: PUSH1 0x03 00000e5e: DUP1 00000e5f: SLOAD 00000e60: DUP1 00000e61: PUSH1 0x20 00000e63: MUL 00000e64: PUSH1 0x20 00000e66: ADD 00000e67: PUSH1 0x40 00000e69: MLOAD 00000e6a: SWAP1 00000e6b: DUP2 00000e6c: ADD 00000e6d: PUSH1 0x40 00000e6f: MSTORE 00000e70: DUP1 00000e71: SWAP3 00000e72: SWAP2 00000e73: SWAP1 00000e74: DUP2 00000e75: DUP2 00000e76: MSTORE 00000e77: PUSH1 0x20 00000e79: ADD 00000e7a: DUP3 00000e7b: DUP1 00000e7c: SLOAD 00000e7d: DUP1 00000e7e: ISZERO 00000e7f: PUSH2 0x0eb1 00000e82: JUMPI 00000e83: PUSH1 0x20 00000e85: MUL 00000e86: DUP3 00000e87: ADD 00000e88: SWAP2 00000e89: SWAP1 00000e8a: PUSH1 0x00 00000e8c: MSTORE 00000e8d: PUSH1 0x20 00000e8f: PUSH1 0x00 00000e91: KECCAK256 00000e92: SWAP1 00000e93: JUMPDEST 00000e94: DUP2 00000e95: SLOAD 00000e96: PUSH1 0x01 00000e98: PUSH1 0x01 00000e9a: PUSH1 0xa0 00000e9c: SHL 00000e9d: SUB 00000e9e: AND 00000e9f: DUP2 00000ea0: MSTORE 00000ea1: PUSH1 0x01 00000ea3: SWAP1 00000ea4: SWAP2 00000ea5: ADD 00000ea6: SWAP1 00000ea7: PUSH1 0x20 00000ea9: ADD 00000eaa: DUP1 00000eab: DUP4 00000eac: GT 00000ead: PUSH2 0x0e93 00000eb0: JUMPI 00000eb1: JUMPDEST 00000eb2: POP 00000eb3: POP 00000eb4: POP 00000eb5: POP 00000eb6: POP 00000eb7: SWAP1 00000eb8: POP 00000eb9: SWAP1 00000eba: JUMP 00000ebb: JUMPDEST 00000ebc: PUSH1 0x00 00000ebe: SLOAD 00000ebf: DUP2 00000ec0: JUMP 00000ec1: JUMPDEST 00000ec2: PUSH32 0x72dc1dc597006ea524d75bd3377c4663827629e52e27fd2169cca6f90f6d1ef9 00000ee3: DUP2 00000ee4: JUMP 00000ee5: JUMPDEST 00000ee6: PUSH1 0x40 00000ee8: MLOAD 00000ee9: DUP1 00000eea: PUSH1 0x40 00000eec: ADD 00000eed: PUSH1 0x40 00000eef: MSTORE 00000ef0: DUP1 00000ef1: PUSH1 0x0f 00000ef3: DUP2 00000ef4: MSTORE 00000ef5: PUSH1 0x20 00000ef7: ADD 00000ef8: PUSH15 0x57524f4e47205349474e4154555245 00000f08: PUSH1 0x88 00000f0a: SHL 00000f0b: DUP2 00000f0c: MSTORE 00000f0d: POP 00000f0e: DUP2 00000f0f: JUMP 00000f10: JUMPDEST 00000f11: PUSH1 0x40 00000f13: MLOAD 00000f14: DUP1 00000f15: PUSH1 0x40 00000f17: ADD 00000f18: PUSH1 0x40 00000f1a: MSTORE 00000f1b: DUP1 00000f1c: PUSH1 0x12 00000f1e: DUP2 00000f1f: MSTORE 00000f20: PUSH1 0x20 00000f22: ADD 00000f23: PUSH18 0x125395115493905308151608119052531151 00000f36: PUSH1 0x72 00000f38: SHL 00000f39: DUP2 00000f3a: MSTORE 00000f3b: POP 00000f3c: DUP2 00000f3d: JUMP 00000f3e: JUMPDEST 00000f3f: PUSH1 0x04 00000f41: SLOAD 00000f42: DUP2 00000f43: JUMP 00000f44: JUMPDEST 00000f45: EXTCODESIZE 00000f46: PUSH4 0xffffffff 00000f4b: AND 00000f4c: ISZERO 00000f4d: ISZERO 00000f4e: SWAP1 00000f4f: JUMP 00000f50: INVALID 00000f51: MSTORE8 00000f52: BLOBHASH 00000f53: SELFBALANCE 00000f54: UNKNOWN(0x4E) 00000f55: GASLIMIT 00000f56: MSTORE 00000f57: MSTORE8 00000f58: KECCAK256 00000f59: UNKNOWN(0x4D) 00000f5a: SSTORE 00000f5b: MSTORE8 00000f5c: SLOAD 00000f5d: KECCAK256 00000f5e: TIMESTAMP 00000f5f: GASLIMIT 00000f60: KECCAK256 00000f61: BLOBHASH 00000f62: UNKNOWN(0x4E) 00000f63: KECCAK256 00000f64: BLOBHASH 00000f65: UNKNOWN(0x4E) 00000f66: NUMBER 00000f67: MSTORE 00000f68: GASLIMIT 00000f69: COINBASE 00000f6a: MSTORE8 00000f6b: BLOBHASH 00000f6c: UNKNOWN(0x4E) 00000f6d: SELFBALANCE 00000f6e: KECCAK256 00000f6f: UNKNOWN(0x4F) 00000f70: MSTORE 00000f71: DIFFICULTY 00000f72: GASLIMIT 00000f73: MSTORE 00000f74: LOG2 00000f75: PUSH6 0x627a7a723158 00000f7c: KECCAK256 00000f7d: PUSH11 0x40336a351188a254b9c1ec 00000f89: DUP4 00000f8a: UNKNOWN(0xAF) 00000f8b: UNKNOWN(0xB6) 00000f8c: UNKNOWN(0x26) 00000f8d: UNKNOWN(0xE0) 00000f8e: PUSH9 0x4c15434025a81ae3b8 00000f98: EXP 00000f99: UNKNOWN(0xFC) 00000f9a: GAS 00000f9b: DELEGATECALL 00000f9c: UNKNOWN(0xFC) 00000f9d: PUSH5 0x736f6c6343 00000fa3: STOP 00000fa4: SDIV 00000fa5: GT 00000fa6: STOP 00000fa7: ORIGIN
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0x110eec72fc0a0010d86aea36908c1f885f00560de25167cdf1a4438ec3ebb479
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x110eec72fc0a0010d86aea36908c1f885f00560de25167cdf1a4438ec3ebb479",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xaffed0e0",
"selector": "0xaffed0e0",
"calldata_variants": [
"0xaffed0e0",
"0xaffed0e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xba9a91a5",
"selector": "0xba9a91a5",
"calldata_variants": [
"0xba9a91a5",
"0xba9a91a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd2cc740",
"selector": "0xcd2cc740",
"calldata_variants": [
"0xcd2cc740",
"0xcd2cc7400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd1af6462",
"selector": "0xd1af6462",
"calldata_variants": [
"0xd1af6462",
"0xd1af64620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf698da25",
"selector": "0xf698da25",
"calldata_variants": [
"0xf698da25",
"0xf698da250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9babdd40",
"selector": "0x9babdd40",
"calldata_variants": [
"0x9babdd40",
"0x9babdd400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e4e7318",
"selector": "0x9e4e7318",
"calldata_variants": [
"0x9e4e7318",
"0x9e4e73180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0ab9653",
"selector": "0xa0ab9653",
"calldata_variants": [
"0xa0ab9653",
"0xa0ab96530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3995,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 4007,
"type": "tx_origin_used"
}
],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xaffed0e0",
"selector": "0xaffed0e0",
"calldata_variants": [
"0xaffed0e0",
"0xaffed0e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xba9a91a5",
"selector": "0xba9a91a5",
"calldata_variants": [
"0xba9a91a5",
"0xba9a91a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd2cc740",
"selector": "0xcd2cc740",
"calldata_variants": [
"0xcd2cc740",
"0xcd2cc7400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd1af6462",
"selector": "0xd1af6462",
"calldata_variants": [
"0xd1af6462",
"0xd1af64620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf698da25",
"selector": "0xf698da25",
"calldata_variants": [
"0xf698da25",
"0xf698da250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9babdd40",
"selector": "0x9babdd40",
"calldata_variants": [
"0x9babdd40",
"0x9babdd400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e4e7318",
"selector": "0x9e4e7318",
"calldata_variants": [
"0x9e4e7318",
"0x9e4e73180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0ab9653",
"selector": "0xa0ab9653",
"calldata_variants": [
"0xa0ab9653",
"0xa0ab96530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 4007,
"type": "tx_origin_used"
}
]
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x62f4032b26e6e258c13c30affdc584c59ead6207a1b3bb242176addd5c22b4fc
call_targets:
0xea6e8e629dbc2b190660658165efac33a130553a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x62f4032b26e6e258c13c30affdc584c59ead6207a1b3bb242176addd5c22b4fc",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xea6e8e629dbc2b190660658165efac33a130553a"
],
"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": "0xaffed0e0",
"selector": "0xaffed0e0",
"calldata_variants": [
"0xaffed0e0",
"0xaffed0e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xba9a91a5",
"selector": "0xba9a91a5",
"calldata_variants": [
"0xba9a91a5",
"0xba9a91a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd2cc740",
"selector": "0xcd2cc740",
"calldata_variants": [
"0xcd2cc740",
"0xcd2cc7400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd1af6462",
"selector": "0xd1af6462",
"calldata_variants": [
"0xd1af6462",
"0xd1af64620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf698da25",
"selector": "0xf698da25",
"calldata_variants": [
"0xf698da25",
"0xf698da250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9babdd40",
"selector": "0x9babdd40",
"calldata_variants": [
"0x9babdd40",
"0x9babdd400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e4e7318",
"selector": "0x9e4e7318",
"calldata_variants": [
"0x9e4e7318",
"0x9e4e73180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0ab9653",
"selector": "0xa0ab9653",
"calldata_variants": [
"0xa0ab9653",
"0xa0ab96530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3267,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 4007,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x62f4032b26e6e258c13c30affdc584c59ead6207a1b3bb242176addd5c22b4fc
call_targets:
0xea6e8e629dbc2b190660658165efac33a130553a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x62f4032b26e6e258c13c30affdc584c59ead6207a1b3bb242176addd5c22b4fc",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xea6e8e629dbc2b190660658165efac33a130553a"
],
"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": "0xaffed0e0",
"selector": "0xaffed0e0",
"calldata_variants": [
"0xaffed0e0",
"0xaffed0e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xba9a91a5",
"selector": "0xba9a91a5",
"calldata_variants": [
"0xba9a91a5",
"0xba9a91a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd2cc740",
"selector": "0xcd2cc740",
"calldata_variants": [
"0xcd2cc740",
"0xcd2cc7400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd1af6462",
"selector": "0xd1af6462",
"calldata_variants": [
"0xd1af6462",
"0xd1af64620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf698da25",
"selector": "0xf698da25",
"calldata_variants": [
"0xf698da25",
"0xf698da250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9babdd40",
"selector": "0x9babdd40",
"calldata_variants": [
"0x9babdd40",
"0x9babdd400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9e4e7318",
"selector": "0x9e4e7318",
"calldata_variants": [
"0x9e4e7318",
"0x9e4e73180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0ab9653",
"selector": "0xa0ab9653",
"calldata_variants": [
"0xa0ab9653",
"0xa0ab96530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3267,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 4007,
"type": "tx_origin_used"
}
]
}
|