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

Analysis Run

2c200662-dc1e-4f93-8744-a4c62f11ea59

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 9:50 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable 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.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
0
Total opcodes
3538
Flags
No heuristic flags raised.
View cast disassembly output
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)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_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
view
trace_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": []
}