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

Analysis Run

1e1681f8-a33c-4956-8215-0fa8acbe219b

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 9:13 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
31340 report.consolidate complete 1 / 1 3 months ago
111038 artifact.fetch complete 1 / 3 1 week ago
111039 tool.cast_disasm complete 1 / 3 1 week ago
111040 analysis.bundle complete 1 / 3 1 week ago
111041 capability.graph complete 1 / 3 1 week ago
111042 detector.run complete 1 / 3 1 week ago
111043 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
Reviewed the runtime bytecode in `BYTECODE_BUNDLE.txt`; value-transfer CALLs appear gated by balance checks and caller/authorization logic, and no unprotected delegatecall/upgrade/selfdestruct or concrete withdrawal bypass was observable from bytecode alone.
View stderr
[codex:299844] OpenAI Codex v0.77.0 (research preview)
[codex:299844] --------
[codex:299844] workdir: /tmp/codex-multi-offn776v
[codex:299844] model: gpt-5.2-codex
[codex:299844] provider: openai
[codex:299844] approval: never
[codex:299844] sandbox: read-only
[codex:299844] reasoning effort: xhigh
[codex:299844] reasoning summaries: auto
[codex:299844] session id: 019b8083-d4b5-7a80-b35b-33e481b3c9d0
[codex:299844] --------
[codex:299844] user
[codex:299844] 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:299844] 
[codex:299844] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:299844] 
[codex:299844] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:299844] - Gas inefficiency, code quality, or best practices
[codex:299844] - Theoretical vulnerabilities without a clear extraction path
[codex:299844] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:299844] - Issues requiring social engineering or off-chain coordination
[codex:299844] 
[codex:299844] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:299844] - CALL/DELEGATECALL with controllable destination or calldata
[codex:299844] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:299844] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:299844] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:299844] - External calls before state updates (reentrancy)
[codex:299844] - SELFDESTRUCT with controllable beneficiary
[codex:299844] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:299844] 
[codex:299844] For each finding, you MUST explain:
[codex:299844] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:299844] 2. The concrete sequence of transactions to extract value
[codex:299844] 3. Why you believe this is exploitable (not just suspicious)
[codex:299844] 
[codex:299844] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:299844] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:299844] 
[codex:299844] Output MUST be valid JSON matching the provided schema.
[codex:299844] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:299844] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:299844] mcp startup: no servers
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Reading file contents**
[codex:299844] exec
[codex:299844] /bin/bash -lc ls in /tmp/codex-multi-offn776v succeeded in 5ms:
[codex:299844] BYTECODE_BUNDLE.txt
[codex:299844] codex-output-schema.json
[codex:299844] exec
[codex:299844] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-offn776v succeeded in 5ms:
[codex:299844] Runtime bytecode bundle for best-effort auditing.
[codex:299844] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:299844] 
[codex:299844] FILE: runtime_bytecode.hex
[codex:299844] 0x6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063061aad6e146100bf5780633dc17a521461018e5780637eadebfe146103135780637fb8b61e1461036a5780638da5cb5b146103c15780639cf40c0b14610418578063a10d09601461046c578063a26e1186146104ff578063b99152d01461055b578063e4860339146105b2578063e5188f5514610609578063f2fde38b14610634575b600080fd5b3480156100cb57600080fd5b5061018c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610677565b005b61031160048036038101908080356bffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610b5b565b005b34801561031f57600080fd5b50610354600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611017565b6040518082815260200191505060405180910390f35b34801561037657600080fd5b506103ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061102f565b6040518082815260200191505060405180910390f35b3480156103cd57600080fd5b506103d6611078565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042457600080fd5b5061045260048036038101908080356bffffffffffffffffffffffff1916906020019092919050505061109d565b604051808215151515815260200191505060405180910390f35b34801561047857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506110bd565b005b610559600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506113b1565b005b34801561056757600080fd5b5061059c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061154f565b6040518082815260200191505060405180910390f35b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611598565b6040518082815260200191505060405180910390f35b34801561061557600080fd5b5061061e6115b0565b6040518082815260200191505060405180910390f35b34801561064057600080fd5b50610675600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b6565b005b7f79470ec3f0acdfeae4153985471320f445a530e87c30c39c25b0eaf088c6dc223383858673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156106ff57600080fd5b505af1158015610713573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561073d57600080fd5b81019080805164010000000081111561075557600080fd5b8281019050602081018481111561076b57600080fd5b815185600182028301116401000000008211171561078857600080fd5b50509291905050508773ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156107f457600080fd5b505af1158015610808573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561083257600080fd5b81019080805164010000000081111561084a57600080fd5b8281019050602081018481111561086057600080fd5b815185600182028301116401000000008211171561087d57600080fd5b50509291905050508873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156108e957600080fd5b505af11580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b810190808051906020019092919050505087604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff1681526020018060200185810385528b818151815260200191508051906020019080838360005b838110156109e15780820151818401526020810190506109c6565b50505050905090810190601f168015610a0e5780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610a47578082015181840152602081019050610a2c565b50505050905090810190601f168015610a745780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b83811015610aad578082015181840152602081019050610a92565b50505050905090810190601f168015610ada5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610b13578082015181840152602081019050610af8565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a1505050565b60008060008060003073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614151515610b9e57600080fd5b60008a111515610bad57600080fd5b60001515600460008f6bffffffffffffffffffffffff19166bffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff161515141515610bfe57600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3857600080fd5b6000945060009350600094505b8851851015610cde576001850193505b8851841015610cd1578884815181101515610c6c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168986815181101515610c9a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515610cc457fe5b8380600101945050610c55565b8480600101955050610c45565b600094505b8851851015610ed3578c8c8c8c60405180856bffffffffffffffffffffffff19166bffffffffffffffffffffffff191681526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001945050505050604051809103902092506001838787815181101515610dc157fe5b906020019060200201518a88815181101515610dd957fe5b906020019060200201518a89815181101515610df157fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610e6c573d6000803e3d6000fd5b5050506020604051035191508173ffffffffffffffffffffffffffffffffffffffff168986815181101515610e9d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515610ec657fe5b8480600101955050610ce3565b60009050600094505b8851851015610f5d57610f4e600260008b88815181101515610efa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261170b90919063ffffffff16565b90508480600101955050610edc565b6003548111151515610f6b57fe5b6001600460008f6bffffffffffffffffffffffff19166bffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600354811515610fc357fe5b048111156110085760008c73ffffffffffffffffffffffffffffffffffffffff161415610ffa57610ff58d8c8c611729565b611007565b6110068d8d8d8d61193c565b5b5b50505050505050505050505050565b60026020528060005260406000206000915090505481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60008373ffffffffffffffffffffffffffffffffffffffff161115156110e257600080fd5b6000821115156110f157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b505050506040513d60208110156111f257600080fd5b8101908080519060200190929190505050151561120b57fe5b61125d82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170b90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9abc03496c1032d5360782ca78af72ed77b086c26cb5a6a98b01178546795ec083338484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561136f578082015181840152602081019050611354565b50505050905090810190601f16801561139c5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050565b6000341115156113c057600080fd5b61141234600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170b90919063ffffffff16565b600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9abc03496c1032d5360782ca78af72ed77b086c26cb5a6a98b01178546795ec06000333484604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561150f5780820151818401526020810190506114f4565b50505050905090810190601f16801561153c5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a150565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60016020528060005260406000206000915090505481565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561164d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828401905083811015151561171f57fe5b8091505092915050565b80600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561177457fe5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ab57fe5b6117fd81600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf090919063ffffffff16565b600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611886573d6000803e3d6000fd5b507f1f57a1c5b6fc2c932e07efa54e40446c010acc2e30e1d017e592b7d0f90bc8fc836000848460405180856bffffffffffffffffffffffff19166bffffffffffffffffffffffff191681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a1505050565b60008373ffffffffffffffffffffffffffffffffffffffff161415151561195f57fe5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156119aa57fe5b6119fc81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf090919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ae257600080fd5b505af1158015611af6573d6000803e3d6000fd5b505050506040513d6020811015611b0c57600080fd5b81019080805190602001909291905050501515611b2557fe5b7f1f57a1c5b6fc2c932e07efa54e40446c010acc2e30e1d017e592b7d0f90bc8fc8484848460405180856bffffffffffffffffffffffff19166bffffffffffffffffffffffff191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a150505050565b6000828211151515611bfe57fe5b8183039050929150505600a165627a7a72305820aa2ee27c32423095bc4b305c329d883f8c4d0fae55e4f64f5ddffd543dd6a0ae0029
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing contract bytecode for exploits**
[codex:299844] 
[codex:299844] I'm examining function selectors and storage patterns to identify possible unprotected ETH or token transfers. I want to detect any external calls with value that lack proper access control, focusing on suspicious CALL operations in the bytecode. Since the environment is read-only, I plan to use ephemeral Python scripts to disassemble and analyze opcodes without modifying files.
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] from binascii import unhexlify
[codex:299844] 
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] # extract runtime bytecode hex after 0x
[codex:299844] m=re.search(r'0x([0-9a-fA-F]+)',hexdata)
[codex:299844] if not m:
[codex:299844]     print('no hex')
[codex:299844]     raise SystemExit
[codex:299844] hexstr=m.group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] # EVM opcode map
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] # simple disassembly to find call-type opcodes with offsets
[codex:299844] call_ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:299844] 
[codex:299844] pc=0
[codex:299844] results=[]
[codex:299844] while pc < len(code):
[codex:299844]     op=code[pc]
[codex:299844]     if op in call_ops:
[codex:299844]         results.append((pc,call_ops[op]))
[codex:299844]         pc+=1
[codex:299844]         continue
[codex:299844]     if 0x60 <= op <= 0x7f:
[codex:299844]         pc += 1 + (op - 0x5f)
[codex:299844]     else:
[codex:299844]         pc+=1
[codex:299844] 
[codex:299844] print('call-like opcodes count',len(results))
[codex:299844] for off,op in results:
[codex:299844]     print(hex(off),op)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 34ms:
[codex:299844] call-like opcodes count 7
[codex:299844] 0x702 CALL
[codex:299844] 0x7f7 CALL
[codex:299844] 0x8ec CALL
[codex:299844] 0xe5b CALL
[codex:299844] 0x11cb CALL
[codex:299844] 0x1870 CALL
[codex:299844] 0x1ae5 CALL
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing CALL instructions and context**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] from binascii import unhexlify
[codex:299844] 
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] # show around call offsets
[codex:299844] for off in [0x702,0x7f7,0x8ec,0xe5b,0x11cb,0x1870,0x1ae5]:
[codex:299844]     print('\\n== around',hex(off))
[codex:299844]     disasm(off-20, off+20)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 27ms:
[codex:299844] 
[codex:299844] == around 0x702
[codex:299844] 06ee: DUP2
[codex:299844] 06ef: PUSH1 0x00
[codex:299844] 06f1: DUP8
[codex:299844] 06f2: DUP1
[codex:299844] 06f3: EXTCODESIZE
[codex:299844] 06f4: ISZERO
[codex:299844] 06f5: DUP1
[codex:299844] 06f6: ISZERO
[codex:299844] 06f7: PUSH2 0x06ff
[codex:299844] 06fa: JUMPI
[codex:299844] 06fb: PUSH1 0x00
[codex:299844] 06fd: DUP1
[codex:299844] 06fe: REVERT
[codex:299844] 06ff: JUMPDEST
[codex:299844] 0700: POP
[codex:299844] 0701: GAS
[codex:299844] 0702: CALL
[codex:299844] 0703: ISZERO
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing token and ETH transfer calls**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] from binascii import unhexlify
[codex:299844] 
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] # find jumpdest near 0x10bd
[codex:299844] for off in [0x10bd,0x13b1,0x154f,0x1598,0x15b0,0x15b6,0x170b,0x1729,0x193c]:
[codex:299844]     print('\\n== around',hex(off))
[codex:299844]     disasm(off-20, off+60)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 28ms:
[codex:299844] 
[codex:299844] == around 0x10bd
[codex:299844] 10a9: PUSH1 0x00
[codex:299844] 10ab: SHA3
[codex:299844] 10ac: PUSH1 0x00
[codex:299844] 10ae: SWAP2
[codex:299844] 10af: POP
[codex:299844] 10b0: SLOAD
[codex:299844] 10b1: SWAP1
[codex:299844] 10b2: PUSH2 0x0100
[codex:299844] 10b5: EXP
[codex:299844] 10b6: SWAP1
[codex:299844] 10b7: DIV
[codex:299844] 10b8: PUSH1 0xff
[codex:299844] 10ba: AND
[codex:299844] 10bb: DUP2
[codex:299844] 10bc: JUMP
[codex:299844] 10bd: JUMPDEST
[codex:299844] 10be: PUSH1 0x00
[codex:299844] 10c0: DUP4
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing function selectors and dispatch table**
[codex:299844] 
[codex:299844] I'm mapping function selectors to their jump destinations and identifying probable function roles based on parameter patterns and storage access. I want to clarify dispatcher behavior and better understand the contract's interface for deposits, withdrawals, balances, and ownership. I'll continue disassembling key functions, especially payable ones, to check for vulnerabilities or logic details.
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] # disassemble a chunk around 0x13b1
[codex:299844] start=0x13b1
[codex:299844] end=0x154f
[codex:299844] print('disasm',hex(start),hex(end))
[codex:299844] disasm(start,end)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 24ms:
[codex:299844] disasm 0x13b1 0x154f
[codex:299844] 13b1: JUMPDEST
[codex:299844] 13b2: PUSH1 0x00
[codex:299844] 13b4: CALLVALUE
[codex:299844] 13b5: GT
[codex:299844] 13b6: ISZERO
[codex:299844] 13b7: ISZERO
[codex:299844] 13b8: PUSH2 0x13c0
[codex:299844] 13bb: JUMPI
[codex:299844] 13bc: PUSH1 0x00
[codex:299844] 13be: DUP1
[codex:299844] 13bf: REVERT
[codex:299844] 13c0: JUMPDEST
[codex:299844] 13c1: PUSH2 0x1412
[codex:299844] 13c4: CALLVALUE
[codex:299844] 13c5: PUSH1 0x01
[codex:299844] 13c7: PUSH1 0x00
[codex:299844] 13c9: DUP1
[codex:299844] 13ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 13df: AND
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing ETH deposit function details**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('0x1017 func:')
[codex:299844] disasm(0x1017,0x1030)
[codex:299844] print('\\n0x102f func:')
[codex:299844] disasm(0x102f,0x1050)
[codex:299844] print('\\n0x109d func:')
[codex:299844] disasm(0x109d,0x10bd)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 24ms:
[codex:299844] 0x1017 func:
[codex:299844] 1017: JUMPDEST
[codex:299844] 1018: PUSH1 0x02
[codex:299844] 101a: PUSH1 0x20
[codex:299844] 101c: MSTORE
[codex:299844] 101d: DUP1
[codex:299844] 101e: PUSH1 0x00
[codex:299844] 1020: MSTORE
[codex:299844] 1021: PUSH1 0x40
[codex:299844] 1023: PUSH1 0x00
[codex:299844] 1025: SHA3
[codex:299844] 1026: PUSH1 0x00
[codex:299844] 1028: SWAP2
[codex:299844] 1029: POP
[codex:299844] 102a: SWAP1
[codex:299844] 102b: POP
[codex:299844] 102c: SLOAD
[codex:299844] 102d: DUP2
[codex:299844] 102e: JUMP
[codex:299844] 102f: JUMPDEST
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing mapping access patterns in bytecode**
[codex:299844] 
[codex:299844] I'm parsing how functions push and store memory to compute keccak slots for mappings, tracking how arguments are stacked and used to access mapping values like mapping[key][slot], especially for address-keyed mappings. I'm also connecting dispatch code to function calls to clarify parameter passing and stack usage during these operations.
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] # disassemble more of 0x102f function
[codex:299844] start=0x102f
[codex:299844] end=0x109d
[codex:299844] print('disasm',hex(start),hex(end))
[codex:299844] disasm(start,end)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 23ms:
[codex:299844] disasm 0x102f 0x109d
[codex:299844] 102f: JUMPDEST
[codex:299844] 1030: PUSH1 0x00
[codex:299844] 1032: PUSH1 0x02
[codex:299844] 1034: PUSH1 0x00
[codex:299844] 1036: DUP4
[codex:299844] 1037: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 104c: AND
[codex:299844] 104d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 1062: AND
[codex:299844] 1063: DUP2
[codex:299844] 1064: MSTORE
[codex:299844] 1065: PUSH1 0x20
[codex:299844] 1067: ADD
[codex:299844] 1068: SWAP1
[codex:299844] 1069: DUP2
[codex:299844] 106a: MSTORE
[codex:299844] 106b: PUSH1 0x20
[codex:299844] 106d: ADD
[codex:299844] 106e: PUSH1 0x00
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing EVM stack usage and storage slots**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] # disassemble and record opcodes with pc
[codex:299844] pc=0
[codex:299844] ops=[]
[codex:299844] while pc < len(code):
[codex:299844]     op=code[pc]
[codex:299844]     name=opcodes.get(op,'UNKNOWN')
[codex:299844]     if 0x60 <= op <= 0x7f:
[codex:299844]         l=op-0x5f
[codex:299844]         data=code[pc+1:pc+1+l]
[codex:299844]         ops.append((pc,name,data.hex()))
[codex:299844]         pc+=1+l
[codex:299844]     else:
[codex:299844]         ops.append((pc,name,None))
[codex:299844]         pc+=1
[codex:299844] 
[codex:299844] # find SSTOREs and print previous 8 ops
[codex:299844] for i,(pc,name,data) in enumerate(ops):
[codex:299844]     if name=='SSTORE':
[codex:299844]         print('\\nSSTORE at',hex(pc))
[codex:299844]         for j in range(max(0,i-8),i+1):
[codex:299844]             p,n,d=ops[j]
[codex:299844]             if d is None:
[codex:299844]                 print(f\" {p:04x}: {n}\")
[codex:299844]             else:
[codex:299844]                 print(f\" {p:04x}: {n} 0x{d}\")
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 32ms:
[codex:299844] 
[codex:299844] SSTORE at 0xfb4
[codex:299844]  0fac: AND
[codex:299844]  0fad: SWAP1
[codex:299844]  0fae: DUP4
[codex:299844]  0faf: ISZERO
[codex:299844]  0fb0: ISZERO
[codex:299844]  0fb1: MUL
[codex:299844]  0fb2: OR
[codex:299844]  0fb3: SWAP1
[codex:299844]  0fb4: SSTORE
[codex:299844] 
[codex:299844] SSTORE at 0x129f
[codex:299844]  1295: DUP2
[codex:299844]  1296: MSTORE
[codex:299844]  1297: PUSH1 0x20
[codex:299844]  1299: ADD
[codex:299844]  129a: PUSH1 0x00
[codex:299844]  129c: SHA3
[codex:299844]  129d: DUP2
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Investigating storage updates in code**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm around 0xf80-0x1010')
[codex:299844] disasm(0xf80,0x1010)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 25ms:
[codex:299844] disasm around 0xf80-0x1010
[codex:299844] 0f80: NOT
[codex:299844] 0f81: AND
[codex:299844] 0f82: PUSH12 0xffffffffffffffffffffffff
[codex:299844] 0f8f: NOT
[codex:299844] 0f90: AND
[codex:299844] 0f91: DUP2
[codex:299844] 0f92: MSTORE
[codex:299844] 0f93: PUSH1 0x20
[codex:299844] 0f95: ADD
[codex:299844] 0f96: SWAP1
[codex:299844] 0f97: DUP2
[codex:299844] 0f98: MSTORE
[codex:299844] 0f99: PUSH1 0x20
[codex:299844] 0f9b: ADD
[codex:299844] 0f9c: PUSH1 0x00
[codex:299844] 0f9e: SHA3
[codex:299844] 0f9f: PUSH1 0x00
[codex:299844] 0fa1: PUSH2 0x0100
[codex:299844] 0fa4: EXP
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing function control flow and transfers**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0x1729-0x18d0')
[codex:299844] disasm(0x1729,0x18d0)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 23ms:
[codex:299844] disasm 0x1729-0x18d0
[codex:299844] 1729: JUMPDEST
[codex:299844] 172a: DUP1
[codex:299844] 172b: PUSH1 0x01
[codex:299844] 172d: PUSH1 0x00
[codex:299844] 172f: DUP1
[codex:299844] 1730: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 1745: AND
[codex:299844] 1746: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 175b: AND
[codex:299844] 175c: DUP2
[codex:299844] 175d: MSTORE
[codex:299844] 175e: PUSH1 0x20
[codex:299844] 1760: ADD
[codex:299844] 1761: SWAP1
[codex:299844] 1762: DUP2
[codex:299844] 1763: MSTORE
[codex:299844] 1764: PUSH1 0x20
[codex:299844] 1766: ADD
[codex:299844] 1767: PUSH1 0x00
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing ETH withdrawal function**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0x193c-0x1b40')
[codex:299844] disasm(0x193c,0x1b40)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 29ms:
[codex:299844] disasm 0x193c-0x1b40
[codex:299844] 193c: JUMPDEST
[codex:299844] 193d: PUSH1 0x00
[codex:299844] 193f: DUP4
[codex:299844] 1940: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 1955: AND
[codex:299844] 1956: EQ
[codex:299844] 1957: ISZERO
[codex:299844] 1958: ISZERO
[codex:299844] 1959: ISZERO
[codex:299844] 195a: PUSH2 0x195f
[codex:299844] 195d: JUMPI
[codex:299844] 195e: INVALID
[codex:299844] 195f: JUMPDEST
[codex:299844] 1960: DUP1
[codex:299844] 1961: PUSH1 0x01
[codex:299844] 1963: PUSH1 0x00
[codex:299844] 1965: DUP6
[codex:299844] 1966: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 197b: AND
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing token withdrawal and signature checks**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0x0b5b-0x0e80')
[codex:299844] disasm(0x0b5b,0x0e80)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 24ms:
[codex:299844] disasm 0x0b5b-0x0e80
[codex:299844] 0b5b: JUMPDEST
[codex:299844] 0b5c: PUSH1 0x00
[codex:299844] 0b5e: DUP1
[codex:299844] 0b5f: PUSH1 0x00
[codex:299844] 0b61: DUP1
[codex:299844] 0b62: PUSH1 0x00
[codex:299844] 0b64: ADDRESS
[codex:299844] 0b65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 0b7a: AND
[codex:299844] 0b7b: DUP13
[codex:299844] 0b7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 0b91: AND
[codex:299844] 0b92: EQ
[codex:299844] 0b93: ISZERO
[codex:299844] 0b94: ISZERO
[codex:299844] 0b95: ISZERO
[codex:299844] 0b96: PUSH2 0x0b9e
[codex:299844] 0b99: JUMPI
[codex:299844] 0b9a: PUSH1 0x00
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing contract withdrawal and deposit logic**
[codex:299844] 
[codex:299844] I'm exploring a complex function that seems to handle secure multi-sig withdrawals, checking contract address matches, signer verification via ecrecover, and replay protection with a mapping. I'm reassured by state updates before external calls, minimizing reentrancy risk. Now I'm shifting focus to the deposit function, carefully inspecting its token transferFrom calls and validation to confirm it doesn't allow unauthorized token moves. There's a lot here to untangle!
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0x10bd-0x12c0')
[codex:299844] disasm(0x10bd,0x12c0)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 23ms:
[codex:299844] disasm 0x10bd-0x12c0
[codex:299844] 10bd: JUMPDEST
[codex:299844] 10be: PUSH1 0x00
[codex:299844] 10c0: DUP4
[codex:299844] 10c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 10d6: AND
[codex:299844] 10d7: GT
[codex:299844] 10d8: ISZERO
[codex:299844] 10d9: ISZERO
[codex:299844] 10da: PUSH2 0x10e2
[codex:299844] 10dd: JUMPI
[codex:299844] 10de: PUSH1 0x00
[codex:299844] 10e0: DUP1
[codex:299844] 10e1: REVERT
[codex:299844] 10e2: JUMPDEST
[codex:299844] 10e3: PUSH1 0x00
[codex:299844] 10e5: DUP3
[codex:299844] 10e6: GT
[codex:299844] 10e7: ISZERO
[codex:299844] 10e8: ISZERO
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing token deposit and contract mappings**
[codex:299844] Reconnecting... 1/5
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing complex contract functions for vulnerabilities**
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0xe70-0xf20')
[codex:299844] disasm(0xe70,0xf20)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 24ms:
[codex:299844] disasm 0xe70-0xf20
[codex:299844] 0e70: PUSH1 0x20
[codex:299844] 0e72: PUSH1 0x40
[codex:299844] 0e74: MLOAD
[codex:299844] 0e75: SUB
[codex:299844] 0e76: MLOAD
[codex:299844] 0e77: SWAP2
[codex:299844] 0e78: POP
[codex:299844] 0e79: DUP2
[codex:299844] 0e7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:299844] 0e8f: AND
[codex:299844] 0e90: DUP10
[codex:299844] 0e91: DUP7
[codex:299844] 0e92: DUP2
[codex:299844] 0e93: MLOAD
[codex:299844] 0e94: DUP2
[codex:299844] 0e95: LT
[codex:299844] 0e96: ISZERO
[codex:299844] 0e97: ISZERO
[codex:299844] 0e98: PUSH2 0x0e9d
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing signer verification logic**
[codex:299844] 
[codex:299844] I’m digging into how the code verifies recovered addresses against signer lists, trying to map stack positions and memory loads to function parameters. There’s a complex interplay of DUP instructions and memory access that suggests arrays of signers and tokens; I plan to disassemble the decoder region next to clarify parameter types and ordering.
[codex:299844] exec
[codex:299844] /bin/bash -lc "python - <<'PY'
[codex:299844] import re
[codex:299844] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:299844] hexstr=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:299844] code=bytes.fromhex(hexstr)
[codex:299844] 
[codex:299844] opcodes={
[codex:299844]     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:299844]     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:299844]     0x20:'SHA3',
[codex:299844]     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:299844]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:299844]     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:299844]     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:299844]     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:299844]     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:299844]     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:299844]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:299844]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:299844] }
[codex:299844] 
[codex:299844] def disasm(start, end):
[codex:299844]     pc=start
[codex:299844]     while pc<end and pc<len(code):
[codex:299844]         op=code[pc]
[codex:299844]         name=opcodes.get(op,'UNKNOWN')
[codex:299844]         if 0x60 <= op <= 0x7f:
[codex:299844]             l=op-0x5f
[codex:299844]             data=code[pc+1:pc+1+l]
[codex:299844]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:299844]             pc+=1+l
[codex:299844]         else:
[codex:299844]             print(f\"{pc:04x}: {name}\")
[codex:299844]             pc+=1
[codex:299844] 
[codex:299844] print('disasm 0x018e-0x0310')
[codex:299844] disasm(0x018e,0x0310)
[codex:299844] PY" in /tmp/codex-multi-offn776v succeeded in 33ms:
[codex:299844] disasm 0x018e-0x0310
[codex:299844] 018e: JUMPDEST
[codex:299844] 018f: PUSH2 0x0311
[codex:299844] 0192: PUSH1 0x04
[codex:299844] 0194: DUP1
[codex:299844] 0195: CALLDATASIZE
[codex:299844] 0196: SUB
[codex:299844] 0197: DUP2
[codex:299844] 0198: ADD
[codex:299844] 0199: SWAP1
[codex:299844] 019a: DUP1
[codex:299844] 019b: DUP1
[codex:299844] 019c: CALLDATALOAD
[codex:299844] 019d: PUSH12 0xffffffffffffffffffffffff
[codex:299844] 01aa: NOT
[codex:299844] 01ab: AND
[codex:299844] 01ac: SWAP1
[codex:299844] 01ad: PUSH1 0x20
[codex:299844] 01af: ADD
[codex:299844] 01b0: SWAP1
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Analyzing decoder and security checks**
[codex:299844] 
[codex:299844] This decoder handles many dynamic arrays, suggesting complex batch operations like multi-transfer or off-chain order settlement. I’m carefully comparing deposit and withdraw mappings to see if keys match user and token consistently, since mismatches could allow unauthorized withdrawals. Reviewing access controls and signature checks, I find no clear exploit paths or missing validations. The withdraw function’s signature verification looks robust, and no selfdestruct or delegatecall access issues appear. Given these deep checks and uncertainties around signature thresholds, I lean toward reporting no findings with a careful summary JSON. Let’s make sure to confirm no obvious flaws before finalizing.
[codex:299844] exec
[codex:299844] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-offn776v succeeded in 5ms:
[codex:299844] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:299844] 
[codex:299844] thinking
[codex:299844] **Preparing final JSON output**
[codex:299844] codex
[codex:299844] {"no_findings":true,"summary":"Reviewed the runtime bytecode in `BYTECODE_BUNDLE.txt`; value-transfer CALLs appear gated by balance checks and caller/authorization logic, and no unprotected delegatecall/upgrade/selfdestruct or concrete withdrawal bypass was observable from bytecode alone.","findings":[]}
[codex:299844] tokens used
[codex:299844] 153,728
[codex:299844] {"no_findings":true,"summary":"Reviewed the runtime bytecode in `BYTECODE_BUNDLE.txt`; value-transfer CALLs appear gated by balance checks and caller/authorization logic, and no unprotected delegatecall/upgrade/selfdestruct or concrete withdrawal bypass was observable from bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T21:13:02.461762+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the runtime bytecode in `BYTECODE_BUNDLE.txt`; value-transfer CALLs appear gated by balance checks and caller/authorization logic, and no unprotected delegatecall/upgrade/selfdestruct or concrete withdrawal bypass was observable from bytecode alone.",
    "raw_final": {
        "summary": "Reviewed the runtime bytecode in `BYTECODE_BUNDLE.txt`; value-transfer CALLs appear gated by balance checks and caller/authorization logic, and no unprotected delegatecall/upgrade/selfdestruct or concrete withdrawal bypass was observable from bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
5
Total opcodes
3824
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00ba
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002e: SWAP1
0000002f: DIV
00000030: PUSH4 0xffffffff
00000035: AND
00000036: DUP1
00000037: PUSH4 0x061aad6e
0000003c: EQ
0000003d: PUSH2 0x00bf
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0x3dc17a52
00000047: EQ
00000048: PUSH2 0x018e
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0x7eadebfe
00000052: EQ
00000053: PUSH2 0x0313
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0x7fb8b61e
0000005d: EQ
0000005e: PUSH2 0x036a
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0x8da5cb5b
00000068: EQ
00000069: PUSH2 0x03c1
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0x9cf40c0b
00000073: EQ
00000074: PUSH2 0x0418
00000077: JUMPI
00000078: DUP1
00000079: PUSH4 0xa10d0960
0000007e: EQ
0000007f: PUSH2 0x046c
00000082: JUMPI
00000083: DUP1
00000084: PUSH4 0xa26e1186
00000089: EQ
0000008a: PUSH2 0x04ff
0000008d: JUMPI
0000008e: DUP1
0000008f: PUSH4 0xb99152d0
00000094: EQ
00000095: PUSH2 0x055b
00000098: JUMPI
00000099: DUP1
0000009a: PUSH4 0xe4860339
0000009f: EQ
000000a0: PUSH2 0x05b2
000000a3: JUMPI
000000a4: DUP1
000000a5: PUSH4 0xe5188f55
000000aa: EQ
000000ab: PUSH2 0x0609
000000ae: JUMPI
000000af: DUP1
000000b0: PUSH4 0xf2fde38b
000000b5: EQ
000000b6: PUSH2 0x0634
000000b9: JUMPI
000000ba: JUMPDEST
000000bb: PUSH1 0x00
000000bd: DUP1
000000be: REVERT
000000bf: JUMPDEST
000000c0: CALLVALUE
000000c1: DUP1
000000c2: ISZERO
000000c3: PUSH2 0x00cb
000000c6: JUMPI
000000c7: PUSH1 0x00
000000c9: DUP1
000000ca: REVERT
000000cb: JUMPDEST
000000cc: POP
000000cd: PUSH2 0x018c
000000d0: PUSH1 0x04
000000d2: DUP1
000000d3: CALLDATASIZE
000000d4: SUB
000000d5: DUP2
000000d6: ADD
000000d7: SWAP1
000000d8: DUP1
000000d9: DUP1
000000da: CALLDATALOAD
000000db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000f0: AND
000000f1: SWAP1
000000f2: PUSH1 0x20
000000f4: ADD
000000f5: SWAP1
000000f6: SWAP3
000000f7: SWAP2
000000f8: SWAP1
000000f9: DUP1
000000fa: CALLDATALOAD
000000fb: SWAP1
000000fc: PUSH1 0x20
000000fe: ADD
000000ff: SWAP1
00000100: DUP3
00000101: ADD
00000102: DUP1
00000103: CALLDATALOAD
00000104: SWAP1
00000105: PUSH1 0x20
00000107: ADD
00000108: SWAP1
00000109: DUP1
0000010a: DUP1
0000010b: PUSH1 0x1f
0000010d: ADD
0000010e: PUSH1 0x20
00000110: DUP1
00000111: SWAP2
00000112: DIV
00000113: MUL
00000114: PUSH1 0x20
00000116: ADD
00000117: PUSH1 0x40
00000119: MLOAD
0000011a: SWAP1
0000011b: DUP2
0000011c: ADD
0000011d: PUSH1 0x40
0000011f: MSTORE
00000120: DUP1
00000121: SWAP4
00000122: SWAP3
00000123: SWAP2
00000124: SWAP1
00000125: DUP2
00000126: DUP2
00000127: MSTORE
00000128: PUSH1 0x20
0000012a: ADD
0000012b: DUP4
0000012c: DUP4
0000012d: DUP1
0000012e: DUP3
0000012f: DUP5
00000130: CALLDATACOPY
00000131: DUP3
00000132: ADD
00000133: SWAP2
00000134: POP
00000135: POP
00000136: POP
00000137: POP
00000138: POP
00000139: POP
0000013a: SWAP2
0000013b: SWAP3
0000013c: SWAP2
0000013d: SWAP3
0000013e: SWAP1
0000013f: DUP1
00000140: CALLDATALOAD
00000141: SWAP1
00000142: PUSH1 0x20
00000144: ADD
00000145: SWAP1
00000146: DUP3
00000147: ADD
00000148: DUP1
00000149: CALLDATALOAD
0000014a: SWAP1
0000014b: PUSH1 0x20
0000014d: ADD
0000014e: SWAP1
0000014f: DUP1
00000150: DUP1
00000151: PUSH1 0x1f
00000153: ADD
00000154: PUSH1 0x20
00000156: DUP1
00000157: SWAP2
00000158: DIV
00000159: MUL
0000015a: PUSH1 0x20
0000015c: ADD
0000015d: PUSH1 0x40
0000015f: MLOAD
00000160: SWAP1
00000161: DUP2
00000162: ADD
00000163: PUSH1 0x40
00000165: MSTORE
00000166: DUP1
00000167: SWAP4
00000168: SWAP3
00000169: SWAP2
0000016a: SWAP1
0000016b: DUP2
0000016c: DUP2
0000016d: MSTORE
0000016e: PUSH1 0x20
00000170: ADD
00000171: DUP4
00000172: DUP4
00000173: DUP1
00000174: DUP3
00000175: DUP5
00000176: CALLDATACOPY
00000177: DUP3
00000178: ADD
00000179: SWAP2
0000017a: POP
0000017b: POP
0000017c: POP
0000017d: POP
0000017e: POP
0000017f: POP
00000180: SWAP2
00000181: SWAP3
00000182: SWAP2
00000183: SWAP3
00000184: SWAP1
00000185: POP
00000186: POP
00000187: POP
00000188: PUSH2 0x0677
0000018b: JUMP
0000018c: JUMPDEST
0000018d: STOP
0000018e: JUMPDEST
0000018f: PUSH2 0x0311
00000192: PUSH1 0x04
00000194: DUP1
00000195: CALLDATASIZE
00000196: SUB
00000197: DUP2
00000198: ADD
00000199: SWAP1
0000019a: DUP1
0000019b: DUP1
0000019c: CALLDATALOAD
0000019d: PUSH12 0xffffffffffffffffffffffff
000001aa: NOT
000001ab: AND
000001ac: SWAP1
000001ad: PUSH1 0x20
000001af: ADD
000001b0: SWAP1
000001b1: SWAP3
000001b2: SWAP2
000001b3: SWAP1
000001b4: DUP1
000001b5: CALLDATALOAD
000001b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001cb: AND
000001cc: SWAP1
000001cd: PUSH1 0x20
000001cf: ADD
000001d0: SWAP1
000001d1: SWAP3
000001d2: SWAP2
000001d3: SWAP1
000001d4: DUP1
000001d5: CALLDATALOAD
000001d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001eb: AND
000001ec: SWAP1
000001ed: PUSH1 0x20
000001ef: ADD
000001f0: SWAP1
000001f1: SWAP3
000001f2: SWAP2
000001f3: SWAP1
000001f4: DUP1
000001f5: CALLDATALOAD
000001f6: SWAP1
000001f7: PUSH1 0x20
000001f9: ADD
000001fa: SWAP1
000001fb: SWAP3
000001fc: SWAP2
000001fd: SWAP1
000001fe: DUP1
000001ff: CALLDATALOAD
00000200: SWAP1
00000201: PUSH1 0x20
00000203: ADD
00000204: SWAP1
00000205: DUP3
00000206: ADD
00000207: DUP1
00000208: CALLDATALOAD
00000209: SWAP1
0000020a: PUSH1 0x20
0000020c: ADD
0000020d: SWAP1
0000020e: DUP1
0000020f: DUP1
00000210: PUSH1 0x20
00000212: MUL
00000213: PUSH1 0x20
00000215: ADD
00000216: PUSH1 0x40
00000218: MLOAD
00000219: SWAP1
0000021a: DUP2
0000021b: ADD
0000021c: PUSH1 0x40
0000021e: MSTORE
0000021f: DUP1
00000220: SWAP4
00000221: SWAP3
00000222: SWAP2
00000223: SWAP1
00000224: DUP2
00000225: DUP2
00000226: MSTORE
00000227: PUSH1 0x20
00000229: ADD
0000022a: DUP4
0000022b: DUP4
0000022c: PUSH1 0x20
0000022e: MUL
0000022f: DUP1
00000230: DUP3
00000231: DUP5
00000232: CALLDATACOPY
00000233: DUP3
00000234: ADD
00000235: SWAP2
00000236: POP
00000237: POP
00000238: POP
00000239: POP
0000023a: POP
0000023b: POP
0000023c: SWAP2
0000023d: SWAP3
0000023e: SWAP2
0000023f: SWAP3
00000240: SWAP1
00000241: DUP1
00000242: CALLDATALOAD
00000243: SWAP1
00000244: PUSH1 0x20
00000246: ADD
00000247: SWAP1
00000248: DUP3
00000249: ADD
0000024a: DUP1
0000024b: CALLDATALOAD
0000024c: SWAP1
0000024d: PUSH1 0x20
0000024f: ADD
00000250: SWAP1
00000251: DUP1
00000252: DUP1
00000253: PUSH1 0x20
00000255: MUL
00000256: PUSH1 0x20
00000258: ADD
00000259: PUSH1 0x40
0000025b: MLOAD
0000025c: SWAP1
0000025d: DUP2
0000025e: ADD
0000025f: PUSH1 0x40
00000261: MSTORE
00000262: DUP1
00000263: SWAP4
00000264: SWAP3
00000265: SWAP2
00000266: SWAP1
00000267: DUP2
00000268: DUP2
00000269: MSTORE
0000026a: PUSH1 0x20
0000026c: ADD
0000026d: DUP4
0000026e: DUP4
0000026f: PUSH1 0x20
00000271: MUL
00000272: DUP1
00000273: DUP3
00000274: DUP5
00000275: CALLDATACOPY
00000276: DUP3
00000277: ADD
00000278: SWAP2
00000279: POP
0000027a: POP
0000027b: POP
0000027c: POP
0000027d: POP
0000027e: POP
0000027f: SWAP2
00000280: SWAP3
00000281: SWAP2
00000282: SWAP3
00000283: SWAP1
00000284: DUP1
00000285: CALLDATALOAD
00000286: SWAP1
00000287: PUSH1 0x20
00000289: ADD
0000028a: SWAP1
0000028b: DUP3
0000028c: ADD
0000028d: DUP1
0000028e: CALLDATALOAD
0000028f: SWAP1
00000290: PUSH1 0x20
00000292: ADD
00000293: SWAP1
00000294: DUP1
00000295: DUP1
00000296: PUSH1 0x20
00000298: MUL
00000299: PUSH1 0x20
0000029b: ADD
0000029c: PUSH1 0x40
0000029e: MLOAD
0000029f: SWAP1
000002a0: DUP2
000002a1: ADD
000002a2: PUSH1 0x40
000002a4: MSTORE
000002a5: DUP1
000002a6: SWAP4
000002a7: SWAP3
000002a8: SWAP2
000002a9: SWAP1
000002aa: DUP2
000002ab: DUP2
000002ac: MSTORE
000002ad: PUSH1 0x20
000002af: ADD
000002b0: DUP4
000002b1: DUP4
000002b2: PUSH1 0x20
000002b4: MUL
000002b5: DUP1
000002b6: DUP3
000002b7: DUP5
000002b8: CALLDATACOPY
000002b9: DUP3
000002ba: ADD
000002bb: SWAP2
000002bc: POP
000002bd: POP
000002be: POP
000002bf: POP
000002c0: POP
000002c1: POP
000002c2: SWAP2
000002c3: SWAP3
000002c4: SWAP2
000002c5: SWAP3
000002c6: SWAP1
000002c7: DUP1
000002c8: CALLDATALOAD
000002c9: SWAP1
000002ca: PUSH1 0x20
000002cc: ADD
000002cd: SWAP1
000002ce: DUP3
000002cf: ADD
000002d0: DUP1
000002d1: CALLDATALOAD
000002d2: SWAP1
000002d3: PUSH1 0x20
000002d5: ADD
000002d6: SWAP1
000002d7: DUP1
000002d8: DUP1
000002d9: PUSH1 0x20
000002db: MUL
000002dc: PUSH1 0x20
000002de: ADD
000002df: PUSH1 0x40
000002e1: MLOAD
000002e2: SWAP1
000002e3: DUP2
000002e4: ADD
000002e5: PUSH1 0x40
000002e7: MSTORE
000002e8: DUP1
000002e9: SWAP4
000002ea: SWAP3
000002eb: SWAP2
000002ec: SWAP1
000002ed: DUP2
000002ee: DUP2
000002ef: MSTORE
000002f0: PUSH1 0x20
000002f2: ADD
000002f3: DUP4
000002f4: DUP4
000002f5: PUSH1 0x20
000002f7: MUL
000002f8: DUP1
000002f9: DUP3
000002fa: DUP5
000002fb: CALLDATACOPY
000002fc: DUP3
000002fd: ADD
000002fe: SWAP2
000002ff: POP
00000300: POP
00000301: POP
00000302: POP
00000303: POP
00000304: POP
00000305: SWAP2
00000306: SWAP3
00000307: SWAP2
00000308: SWAP3
00000309: SWAP1
0000030a: POP
0000030b: POP
0000030c: POP
0000030d: PUSH2 0x0b5b
00000310: JUMP
00000311: JUMPDEST
00000312: STOP
00000313: JUMPDEST
00000314: CALLVALUE
00000315: DUP1
00000316: ISZERO
00000317: PUSH2 0x031f
0000031a: JUMPI
0000031b: PUSH1 0x00
0000031d: DUP1
0000031e: REVERT
0000031f: JUMPDEST
00000320: POP
00000321: PUSH2 0x0354
00000324: PUSH1 0x04
00000326: DUP1
00000327: CALLDATASIZE
00000328: SUB
00000329: DUP2
0000032a: ADD
0000032b: SWAP1
0000032c: DUP1
0000032d: DUP1
0000032e: CALLDATALOAD
0000032f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000344: AND
00000345: SWAP1
00000346: PUSH1 0x20
00000348: ADD
00000349: SWAP1
0000034a: SWAP3
0000034b: SWAP2
0000034c: SWAP1
0000034d: POP
0000034e: POP
0000034f: POP
00000350: PUSH2 0x1017
00000353: JUMP
00000354: JUMPDEST
00000355: PUSH1 0x40
00000357: MLOAD
00000358: DUP1
00000359: DUP3
0000035a: DUP2
0000035b: MSTORE
0000035c: PUSH1 0x20
0000035e: ADD
0000035f: SWAP2
00000360: POP
00000361: POP
00000362: PUSH1 0x40
00000364: MLOAD
00000365: DUP1
00000366: SWAP2
00000367: SUB
00000368: SWAP1
00000369: RETURN
0000036a: JUMPDEST
0000036b: CALLVALUE
0000036c: DUP1
0000036d: ISZERO
0000036e: PUSH2 0x0376
00000371: JUMPI
00000372: PUSH1 0x00
00000374: DUP1
00000375: REVERT
00000376: JUMPDEST
00000377: POP
00000378: PUSH2 0x03ab
0000037b: PUSH1 0x04
0000037d: DUP1
0000037e: CALLDATASIZE
0000037f: SUB
00000380: DUP2
00000381: ADD
00000382: SWAP1
00000383: DUP1
00000384: DUP1
00000385: CALLDATALOAD
00000386: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000039b: AND
0000039c: SWAP1
0000039d: PUSH1 0x20
0000039f: ADD
000003a0: SWAP1
000003a1: SWAP3
000003a2: SWAP2
000003a3: SWAP1
000003a4: POP
000003a5: POP
000003a6: POP
000003a7: PUSH2 0x102f
000003aa: JUMP
000003ab: JUMPDEST
000003ac: PUSH1 0x40
000003ae: MLOAD
000003af: DUP1
000003b0: DUP3
000003b1: DUP2
000003b2: MSTORE
000003b3: PUSH1 0x20
000003b5: ADD
000003b6: SWAP2
000003b7: POP
000003b8: POP
000003b9: PUSH1 0x40
000003bb: MLOAD
000003bc: DUP1
000003bd: SWAP2
000003be: SUB
000003bf: SWAP1
000003c0: RETURN
000003c1: JUMPDEST
000003c2: CALLVALUE
000003c3: DUP1
000003c4: ISZERO
000003c5: PUSH2 0x03cd
000003c8: JUMPI
000003c9: PUSH1 0x00
000003cb: DUP1
000003cc: REVERT
000003cd: JUMPDEST
000003ce: POP
000003cf: PUSH2 0x03d6
000003d2: PUSH2 0x1078
000003d5: JUMP
000003d6: JUMPDEST
000003d7: PUSH1 0x40
000003d9: MLOAD
000003da: DUP1
000003db: DUP3
000003dc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003f1: AND
000003f2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000407: AND
00000408: DUP2
00000409: MSTORE
0000040a: PUSH1 0x20
0000040c: ADD
0000040d: SWAP2
0000040e: POP
0000040f: POP
00000410: PUSH1 0x40
00000412: MLOAD
00000413: DUP1
00000414: SWAP2
00000415: SUB
00000416: SWAP1
00000417: RETURN
00000418: JUMPDEST
00000419: CALLVALUE
0000041a: DUP1
0000041b: ISZERO
0000041c: PUSH2 0x0424
0000041f: JUMPI
00000420: PUSH1 0x00
00000422: DUP1
00000423: REVERT
00000424: JUMPDEST
00000425: POP
00000426: PUSH2 0x0452
00000429: PUSH1 0x04
0000042b: DUP1
0000042c: CALLDATASIZE
0000042d: SUB
0000042e: DUP2
0000042f: ADD
00000430: SWAP1
00000431: DUP1
00000432: DUP1
00000433: CALLDATALOAD
00000434: PUSH12 0xffffffffffffffffffffffff
00000441: NOT
00000442: AND
00000443: SWAP1
00000444: PUSH1 0x20
00000446: ADD
00000447: SWAP1
00000448: SWAP3
00000449: SWAP2
0000044a: SWAP1
0000044b: POP
0000044c: POP
0000044d: POP
0000044e: PUSH2 0x109d
00000451: JUMP
00000452: JUMPDEST
00000453: PUSH1 0x40
00000455: MLOAD
00000456: DUP1
00000457: DUP3
00000458: ISZERO
00000459: ISZERO
0000045a: ISZERO
0000045b: ISZERO
0000045c: DUP2
0000045d: MSTORE
0000045e: PUSH1 0x20
00000460: ADD
00000461: SWAP2
00000462: POP
00000463: POP
00000464: PUSH1 0x40
00000466: MLOAD
00000467: DUP1
00000468: SWAP2
00000469: SUB
0000046a: SWAP1
0000046b: RETURN
0000046c: JUMPDEST
0000046d: CALLVALUE
0000046e: DUP1
0000046f: ISZERO
00000470: PUSH2 0x0478
00000473: JUMPI
00000474: PUSH1 0x00
00000476: DUP1
00000477: REVERT
00000478: JUMPDEST
00000479: POP
0000047a: PUSH2 0x04fd
0000047d: PUSH1 0x04
0000047f: DUP1
00000480: CALLDATASIZE
00000481: SUB
00000482: DUP2
00000483: ADD
00000484: SWAP1
00000485: DUP1
00000486: DUP1
00000487: CALLDATALOAD
00000488: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000049d: AND
0000049e: SWAP1
0000049f: PUSH1 0x20
000004a1: ADD
000004a2: SWAP1
000004a3: SWAP3
000004a4: SWAP2
000004a5: SWAP1
000004a6: DUP1
000004a7: CALLDATALOAD
000004a8: SWAP1
000004a9: PUSH1 0x20
000004ab: ADD
000004ac: SWAP1
000004ad: SWAP3
000004ae: SWAP2
000004af: SWAP1
000004b0: DUP1
000004b1: CALLDATALOAD
000004b2: SWAP1
000004b3: PUSH1 0x20
000004b5: ADD
000004b6: SWAP1
000004b7: DUP3
000004b8: ADD
000004b9: DUP1
000004ba: CALLDATALOAD
000004bb: SWAP1
000004bc: PUSH1 0x20
000004be: ADD
000004bf: SWAP1
000004c0: DUP1
000004c1: DUP1
000004c2: PUSH1 0x1f
000004c4: ADD
000004c5: PUSH1 0x20
000004c7: DUP1
000004c8: SWAP2
000004c9: DIV
000004ca: MUL
000004cb: PUSH1 0x20
000004cd: ADD
000004ce: PUSH1 0x40
000004d0: MLOAD
000004d1: SWAP1
000004d2: DUP2
000004d3: ADD
000004d4: PUSH1 0x40
000004d6: MSTORE
000004d7: DUP1
000004d8: SWAP4
000004d9: SWAP3
000004da: SWAP2
000004db: SWAP1
000004dc: DUP2
000004dd: DUP2
000004de: MSTORE
000004df: PUSH1 0x20
000004e1: ADD
000004e2: DUP4
000004e3: DUP4
000004e4: DUP1
000004e5: DUP3
000004e6: DUP5
000004e7: CALLDATACOPY
000004e8: DUP3
000004e9: ADD
000004ea: SWAP2
000004eb: POP
000004ec: POP
000004ed: POP
000004ee: POP
000004ef: POP
000004f0: POP
000004f1: SWAP2
000004f2: SWAP3
000004f3: SWAP2
000004f4: SWAP3
000004f5: SWAP1
000004f6: POP
000004f7: POP
000004f8: POP
000004f9: PUSH2 0x10bd
000004fc: JUMP
000004fd: JUMPDEST
000004fe: STOP
000004ff: JUMPDEST
00000500: PUSH2 0x0559
00000503: PUSH1 0x04
00000505: DUP1
00000506: CALLDATASIZE
00000507: SUB
00000508: DUP2
00000509: ADD
0000050a: SWAP1
0000050b: DUP1
0000050c: DUP1
0000050d: CALLDATALOAD
0000050e: SWAP1
0000050f: PUSH1 0x20
00000511: ADD
00000512: SWAP1
00000513: DUP3
00000514: ADD
00000515: DUP1
00000516: CALLDATALOAD
00000517: SWAP1
00000518: PUSH1 0x20
0000051a: ADD
0000051b: SWAP1
0000051c: DUP1
0000051d: DUP1
0000051e: PUSH1 0x1f
00000520: ADD
00000521: PUSH1 0x20
00000523: DUP1
00000524: SWAP2
00000525: DIV
00000526: MUL
00000527: PUSH1 0x20
00000529: ADD
0000052a: PUSH1 0x40
0000052c: MLOAD
0000052d: SWAP1
0000052e: DUP2
0000052f: ADD
00000530: PUSH1 0x40
00000532: MSTORE
00000533: DUP1
00000534: SWAP4
00000535: SWAP3
00000536: SWAP2
00000537: SWAP1
00000538: DUP2
00000539: DUP2
0000053a: MSTORE
0000053b: PUSH1 0x20
0000053d: ADD
0000053e: DUP4
0000053f: DUP4
00000540: DUP1
00000541: DUP3
00000542: DUP5
00000543: CALLDATACOPY
00000544: DUP3
00000545: ADD
00000546: SWAP2
00000547: POP
00000548: POP
00000549: POP
0000054a: POP
0000054b: POP
0000054c: POP
0000054d: SWAP2
0000054e: SWAP3
0000054f: SWAP2
00000550: SWAP3
00000551: SWAP1
00000552: POP
00000553: POP
00000554: POP
00000555: PUSH2 0x13b1
00000558: JUMP
00000559: JUMPDEST
0000055a: STOP
0000055b: JUMPDEST
0000055c: CALLVALUE
0000055d: DUP1
0000055e: ISZERO
0000055f: PUSH2 0x0567
00000562: JUMPI
00000563: PUSH1 0x00
00000565: DUP1
00000566: REVERT
00000567: JUMPDEST
00000568: POP
00000569: PUSH2 0x059c
0000056c: PUSH1 0x04
0000056e: DUP1
0000056f: CALLDATASIZE
00000570: SUB
00000571: DUP2
00000572: ADD
00000573: SWAP1
00000574: DUP1
00000575: DUP1
00000576: CALLDATALOAD
00000577: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000058c: AND
0000058d: SWAP1
0000058e: PUSH1 0x20
00000590: ADD
00000591: SWAP1
00000592: SWAP3
00000593: SWAP2
00000594: SWAP1
00000595: POP
00000596: POP
00000597: POP
00000598: PUSH2 0x154f
0000059b: JUMP
0000059c: JUMPDEST
0000059d: PUSH1 0x40
0000059f: MLOAD
000005a0: DUP1
000005a1: DUP3
000005a2: DUP2
000005a3: MSTORE
000005a4: PUSH1 0x20
000005a6: ADD
000005a7: SWAP2
000005a8: POP
000005a9: POP
000005aa: PUSH1 0x40
000005ac: MLOAD
000005ad: DUP1
000005ae: SWAP2
000005af: SUB
000005b0: SWAP1
000005b1: RETURN
000005b2: JUMPDEST
000005b3: CALLVALUE
000005b4: DUP1
000005b5: ISZERO
000005b6: PUSH2 0x05be
000005b9: JUMPI
000005ba: PUSH1 0x00
000005bc: DUP1
000005bd: REVERT
000005be: JUMPDEST
000005bf: POP
000005c0: PUSH2 0x05f3
000005c3: PUSH1 0x04
000005c5: DUP1
000005c6: CALLDATASIZE
000005c7: SUB
000005c8: DUP2
000005c9: ADD
000005ca: SWAP1
000005cb: DUP1
000005cc: DUP1
000005cd: CALLDATALOAD
000005ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005e3: AND
000005e4: SWAP1
000005e5: PUSH1 0x20
000005e7: ADD
000005e8: SWAP1
000005e9: SWAP3
000005ea: SWAP2
000005eb: SWAP1
000005ec: POP
000005ed: POP
000005ee: POP
000005ef: PUSH2 0x1598
000005f2: JUMP
000005f3: JUMPDEST
000005f4: PUSH1 0x40
000005f6: MLOAD
000005f7: DUP1
000005f8: DUP3
000005f9: DUP2
000005fa: MSTORE
000005fb: PUSH1 0x20
000005fd: ADD
000005fe: SWAP2
000005ff: POP
00000600: POP
00000601: PUSH1 0x40
00000603: MLOAD
00000604: DUP1
00000605: SWAP2
00000606: SUB
00000607: SWAP1
00000608: RETURN
00000609: JUMPDEST
0000060a: CALLVALUE
0000060b: DUP1
0000060c: ISZERO
0000060d: PUSH2 0x0615
00000610: JUMPI
00000611: PUSH1 0x00
00000613: DUP1
00000614: REVERT
00000615: JUMPDEST
00000616: POP
00000617: PUSH2 0x061e
0000061a: PUSH2 0x15b0
0000061d: JUMP
0000061e: JUMPDEST
0000061f: PUSH1 0x40
00000621: MLOAD
00000622: DUP1
00000623: DUP3
00000624: DUP2
00000625: MSTORE
00000626: PUSH1 0x20
00000628: ADD
00000629: SWAP2
0000062a: POP
0000062b: POP
0000062c: PUSH1 0x40
0000062e: MLOAD
0000062f: DUP1
00000630: SWAP2
00000631: SUB
00000632: SWAP1
00000633: RETURN
00000634: JUMPDEST
00000635: CALLVALUE
00000636: DUP1
00000637: ISZERO
00000638: PUSH2 0x0640
0000063b: JUMPI
0000063c: PUSH1 0x00
0000063e: DUP1
0000063f: REVERT
00000640: JUMPDEST
00000641: POP
00000642: PUSH2 0x0675
00000645: PUSH1 0x04
00000647: DUP1
00000648: CALLDATASIZE
00000649: SUB
0000064a: DUP2
0000064b: ADD
0000064c: SWAP1
0000064d: DUP1
0000064e: DUP1
0000064f: CALLDATALOAD
00000650: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000665: AND
00000666: SWAP1
00000667: PUSH1 0x20
00000669: ADD
0000066a: SWAP1
0000066b: SWAP3
0000066c: SWAP2
0000066d: SWAP1
0000066e: POP
0000066f: POP
00000670: POP
00000671: PUSH2 0x15b6
00000674: JUMP
00000675: JUMPDEST
00000676: STOP
00000677: JUMPDEST
00000678: PUSH32 0x79470ec3f0acdfeae4153985471320f445a530e87c30c39c25b0eaf088c6dc22
00000699: CALLER
0000069a: DUP4
0000069b: DUP6
0000069c: DUP7
0000069d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006b2: AND
000006b3: PUSH4 0x95d89b41
000006b8: PUSH1 0x40
000006ba: MLOAD
000006bb: DUP2
000006bc: PUSH4 0xffffffff
000006c1: AND
000006c2: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000006e0: MUL
000006e1: DUP2
000006e2: MSTORE
000006e3: PUSH1 0x04
000006e5: ADD
000006e6: PUSH1 0x00
000006e8: PUSH1 0x40
000006ea: MLOAD
000006eb: DUP1
000006ec: DUP4
000006ed: SUB
000006ee: DUP2
000006ef: PUSH1 0x00
000006f1: DUP8
000006f2: DUP1
000006f3: EXTCODESIZE
000006f4: ISZERO
000006f5: DUP1
000006f6: ISZERO
000006f7: PUSH2 0x06ff
000006fa: JUMPI
000006fb: PUSH1 0x00
000006fd: DUP1
000006fe: REVERT
000006ff: JUMPDEST
00000700: POP
00000701: GAS
00000702: CALL
00000703: ISZERO
00000704: DUP1
00000705: ISZERO
00000706: PUSH2 0x0713
00000709: JUMPI
0000070a: RETURNDATASIZE
0000070b: PUSH1 0x00
0000070d: DUP1
0000070e: RETURNDATACOPY
0000070f: RETURNDATASIZE
00000710: PUSH1 0x00
00000712: REVERT
00000713: JUMPDEST
00000714: POP
00000715: POP
00000716: POP
00000717: POP
00000718: PUSH1 0x40
0000071a: MLOAD
0000071b: RETURNDATASIZE
0000071c: PUSH1 0x00
0000071e: DUP3
0000071f: RETURNDATACOPY
00000720: RETURNDATASIZE
00000721: PUSH1 0x1f
00000723: NOT
00000724: PUSH1 0x1f
00000726: DUP3
00000727: ADD
00000728: AND
00000729: DUP3
0000072a: ADD
0000072b: DUP1
0000072c: PUSH1 0x40
0000072e: MSTORE
0000072f: POP
00000730: PUSH1 0x20
00000732: DUP2
00000733: LT
00000734: ISZERO
00000735: PUSH2 0x073d
00000738: JUMPI
00000739: PUSH1 0x00
0000073b: DUP1
0000073c: REVERT
0000073d: JUMPDEST
0000073e: DUP2
0000073f: ADD
00000740: SWAP1
00000741: DUP1
00000742: DUP1
00000743: MLOAD
00000744: PUSH5 0x0100000000
0000074a: DUP2
0000074b: GT
0000074c: ISZERO
0000074d: PUSH2 0x0755
00000750: JUMPI
00000751: PUSH1 0x00
00000753: DUP1
00000754: REVERT
00000755: JUMPDEST
00000756: DUP3
00000757: DUP2
00000758: ADD
00000759: SWAP1
0000075a: POP
0000075b: PUSH1 0x20
0000075d: DUP2
0000075e: ADD
0000075f: DUP5
00000760: DUP2
00000761: GT
00000762: ISZERO
00000763: PUSH2 0x076b
00000766: JUMPI
00000767: PUSH1 0x00
00000769: DUP1
0000076a: REVERT
0000076b: JUMPDEST
0000076c: DUP2
0000076d: MLOAD
0000076e: DUP6
0000076f: PUSH1 0x01
00000771: DUP3
00000772: MUL
00000773: DUP4
00000774: ADD
00000775: GT
00000776: PUSH5 0x0100000000
0000077c: DUP3
0000077d: GT
0000077e: OR
0000077f: ISZERO
00000780: PUSH2 0x0788
00000783: JUMPI
00000784: PUSH1 0x00
00000786: DUP1
00000787: REVERT
00000788: JUMPDEST
00000789: POP
0000078a: POP
0000078b: SWAP3
0000078c: SWAP2
0000078d: SWAP1
0000078e: POP
0000078f: POP
00000790: POP
00000791: DUP8
00000792: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007a7: AND
000007a8: PUSH4 0x06fdde03
000007ad: PUSH1 0x40
000007af: MLOAD
000007b0: DUP2
000007b1: PUSH4 0xffffffff
000007b6: AND
000007b7: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000007d5: MUL
000007d6: DUP2
000007d7: MSTORE
000007d8: PUSH1 0x04
000007da: ADD
000007db: PUSH1 0x00
000007dd: PUSH1 0x40
000007df: MLOAD
000007e0: DUP1
000007e1: DUP4
000007e2: SUB
000007e3: DUP2
000007e4: PUSH1 0x00
000007e6: DUP8
000007e7: DUP1
000007e8: EXTCODESIZE
000007e9: ISZERO
000007ea: DUP1
000007eb: ISZERO
000007ec: PUSH2 0x07f4
000007ef: JUMPI
000007f0: PUSH1 0x00
000007f2: DUP1
000007f3: REVERT
000007f4: JUMPDEST
000007f5: POP
000007f6: GAS
000007f7: CALL
000007f8: ISZERO
000007f9: DUP1
000007fa: ISZERO
000007fb: PUSH2 0x0808
000007fe: JUMPI
000007ff: RETURNDATASIZE
00000800: PUSH1 0x00
00000802: DUP1
00000803: RETURNDATACOPY
00000804: RETURNDATASIZE
00000805: PUSH1 0x00
00000807: REVERT
00000808: JUMPDEST
00000809: POP
0000080a: POP
0000080b: POP
0000080c: POP
0000080d: PUSH1 0x40
0000080f: MLOAD
00000810: RETURNDATASIZE
00000811: PUSH1 0x00
00000813: DUP3
00000814: RETURNDATACOPY
00000815: RETURNDATASIZE
00000816: PUSH1 0x1f
00000818: NOT
00000819: PUSH1 0x1f
0000081b: DUP3
0000081c: ADD
0000081d: AND
0000081e: DUP3
0000081f: ADD
00000820: DUP1
00000821: PUSH1 0x40
00000823: MSTORE
00000824: POP
00000825: PUSH1 0x20
00000827: DUP2
00000828: LT
00000829: ISZERO
0000082a: PUSH2 0x0832
0000082d: JUMPI
0000082e: PUSH1 0x00
00000830: DUP1
00000831: REVERT
00000832: JUMPDEST
00000833: DUP2
00000834: ADD
00000835: SWAP1
00000836: DUP1
00000837: DUP1
00000838: MLOAD
00000839: PUSH5 0x0100000000
0000083f: DUP2
00000840: GT
00000841: ISZERO
00000842: PUSH2 0x084a
00000845: JUMPI
00000846: PUSH1 0x00
00000848: DUP1
00000849: REVERT
0000084a: JUMPDEST
0000084b: DUP3
0000084c: DUP2
0000084d: ADD
0000084e: SWAP1
0000084f: POP
00000850: PUSH1 0x20
00000852: DUP2
00000853: ADD
00000854: DUP5
00000855: DUP2
00000856: GT
00000857: ISZERO
00000858: PUSH2 0x0860
0000085b: JUMPI
0000085c: PUSH1 0x00
0000085e: DUP1
0000085f: REVERT
00000860: JUMPDEST
00000861: DUP2
00000862: MLOAD
00000863: DUP6
00000864: PUSH1 0x01
00000866: DUP3
00000867: MUL
00000868: DUP4
00000869: ADD
0000086a: GT
0000086b: PUSH5 0x0100000000
00000871: DUP3
00000872: GT
00000873: OR
00000874: ISZERO
00000875: PUSH2 0x087d
00000878: JUMPI
00000879: PUSH1 0x00
0000087b: DUP1
0000087c: REVERT
0000087d: JUMPDEST
0000087e: POP
0000087f: POP
00000880: SWAP3
00000881: SWAP2
00000882: SWAP1
00000883: POP
00000884: POP
00000885: POP
00000886: DUP9
00000887: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000089c: AND
0000089d: PUSH4 0x313ce567
000008a2: PUSH1 0x40
000008a4: MLOAD
000008a5: DUP2
000008a6: PUSH4 0xffffffff
000008ab: AND
000008ac: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000008ca: MUL
000008cb: DUP2
000008cc: MSTORE
000008cd: PUSH1 0x04
000008cf: ADD
000008d0: PUSH1 0x20
000008d2: PUSH1 0x40
000008d4: MLOAD
000008d5: DUP1
000008d6: DUP4
000008d7: SUB
000008d8: DUP2
000008d9: PUSH1 0x00
000008db: DUP8
000008dc: DUP1
000008dd: EXTCODESIZE
000008de: ISZERO
000008df: DUP1
000008e0: ISZERO
000008e1: PUSH2 0x08e9
000008e4: JUMPI
000008e5: PUSH1 0x00
000008e7: DUP1
000008e8: REVERT
000008e9: JUMPDEST
000008ea: POP
000008eb: GAS
000008ec: CALL
000008ed: ISZERO
000008ee: DUP1
000008ef: ISZERO
000008f0: PUSH2 0x08fd
000008f3: JUMPI
000008f4: RETURNDATASIZE
000008f5: PUSH1 0x00
000008f7: DUP1
000008f8: RETURNDATACOPY
000008f9: RETURNDATASIZE
000008fa: PUSH1 0x00
000008fc: REVERT
000008fd: JUMPDEST
000008fe: POP
000008ff: POP
00000900: POP
00000901: POP
00000902: PUSH1 0x40
00000904: MLOAD
00000905: RETURNDATASIZE
00000906: PUSH1 0x20
00000908: DUP2
00000909: LT
0000090a: ISZERO
0000090b: PUSH2 0x0913
0000090e: JUMPI
0000090f: PUSH1 0x00
00000911: DUP1
00000912: REVERT
00000913: JUMPDEST
00000914: DUP2
00000915: ADD
00000916: SWAP1
00000917: DUP1
00000918: DUP1
00000919: MLOAD
0000091a: SWAP1
0000091b: PUSH1 0x20
0000091d: ADD
0000091e: SWAP1
0000091f: SWAP3
00000920: SWAP2
00000921: SWAP1
00000922: POP
00000923: POP
00000924: POP
00000925: DUP8
00000926: PUSH1 0x40
00000928: MLOAD
00000929: DUP1
0000092a: DUP9
0000092b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000940: AND
00000941: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000956: AND
00000957: DUP2
00000958: MSTORE
00000959: PUSH1 0x20
0000095b: ADD
0000095c: DUP1
0000095d: PUSH1 0x20
0000095f: ADD
00000960: DUP8
00000961: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000976: AND
00000977: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000098c: AND
0000098d: DUP2
0000098e: MSTORE
0000098f: PUSH1 0x20
00000991: ADD
00000992: DUP1
00000993: PUSH1 0x20
00000995: ADD
00000996: DUP1
00000997: PUSH1 0x20
00000999: ADD
0000099a: DUP7
0000099b: PUSH1 0xff
0000099d: AND
0000099e: PUSH1 0xff
000009a0: AND
000009a1: DUP2
000009a2: MSTORE
000009a3: PUSH1 0x20
000009a5: ADD
000009a6: DUP1
000009a7: PUSH1 0x20
000009a9: ADD
000009aa: DUP6
000009ab: DUP2
000009ac: SUB
000009ad: DUP6
000009ae: MSTORE
000009af: DUP12
000009b0: DUP2
000009b1: DUP2
000009b2: MLOAD
000009b3: DUP2
000009b4: MSTORE
000009b5: PUSH1 0x20
000009b7: ADD
000009b8: SWAP2
000009b9: POP
000009ba: DUP1
000009bb: MLOAD
000009bc: SWAP1
000009bd: PUSH1 0x20
000009bf: ADD
000009c0: SWAP1
000009c1: DUP1
000009c2: DUP4
000009c3: DUP4
000009c4: PUSH1 0x00
000009c6: JUMPDEST
000009c7: DUP4
000009c8: DUP2
000009c9: LT
000009ca: ISZERO
000009cb: PUSH2 0x09e1
000009ce: JUMPI
000009cf: DUP1
000009d0: DUP3
000009d1: ADD
000009d2: MLOAD
000009d3: DUP2
000009d4: DUP5
000009d5: ADD
000009d6: MSTORE
000009d7: PUSH1 0x20
000009d9: DUP2
000009da: ADD
000009db: SWAP1
000009dc: POP
000009dd: PUSH2 0x09c6
000009e0: JUMP
000009e1: JUMPDEST
000009e2: POP
000009e3: POP
000009e4: POP
000009e5: POP
000009e6: SWAP1
000009e7: POP
000009e8: SWAP1
000009e9: DUP2
000009ea: ADD
000009eb: SWAP1
000009ec: PUSH1 0x1f
000009ee: AND
000009ef: DUP1
000009f0: ISZERO
000009f1: PUSH2 0x0a0e
000009f4: JUMPI
000009f5: DUP1
000009f6: DUP3
000009f7: SUB
000009f8: DUP1
000009f9: MLOAD
000009fa: PUSH1 0x01
000009fc: DUP4
000009fd: PUSH1 0x20
000009ff: SUB
00000a00: PUSH2 0x0100
00000a03: EXP
00000a04: SUB
00000a05: NOT
00000a06: AND
00000a07: DUP2
00000a08: MSTORE
00000a09: PUSH1 0x20
00000a0b: ADD
00000a0c: SWAP2
00000a0d: POP
00000a0e: JUMPDEST
00000a0f: POP
00000a10: DUP6
00000a11: DUP2
00000a12: SUB
00000a13: DUP5
00000a14: MSTORE
00000a15: DUP10
00000a16: DUP2
00000a17: DUP2
00000a18: MLOAD
00000a19: DUP2
00000a1a: MSTORE
00000a1b: PUSH1 0x20
00000a1d: ADD
00000a1e: SWAP2
00000a1f: POP
00000a20: DUP1
00000a21: MLOAD
00000a22: SWAP1
00000a23: PUSH1 0x20
00000a25: ADD
00000a26: SWAP1
00000a27: DUP1
00000a28: DUP4
00000a29: DUP4
00000a2a: PUSH1 0x00
00000a2c: JUMPDEST
00000a2d: DUP4
00000a2e: DUP2
00000a2f: LT
00000a30: ISZERO
00000a31: PUSH2 0x0a47
00000a34: JUMPI
00000a35: DUP1
00000a36: DUP3
00000a37: ADD
00000a38: MLOAD
00000a39: DUP2
00000a3a: DUP5
00000a3b: ADD
00000a3c: MSTORE
00000a3d: PUSH1 0x20
00000a3f: DUP2
00000a40: ADD
00000a41: SWAP1
00000a42: POP
00000a43: PUSH2 0x0a2c
00000a46: JUMP
00000a47: JUMPDEST
00000a48: POP
00000a49: POP
00000a4a: POP
00000a4b: POP
00000a4c: SWAP1
00000a4d: POP
00000a4e: SWAP1
00000a4f: DUP2
00000a50: ADD
00000a51: SWAP1
00000a52: PUSH1 0x1f
00000a54: AND
00000a55: DUP1
00000a56: ISZERO
00000a57: PUSH2 0x0a74
00000a5a: JUMPI
00000a5b: DUP1
00000a5c: DUP3
00000a5d: SUB
00000a5e: DUP1
00000a5f: MLOAD
00000a60: PUSH1 0x01
00000a62: DUP4
00000a63: PUSH1 0x20
00000a65: SUB
00000a66: PUSH2 0x0100
00000a69: EXP
00000a6a: SUB
00000a6b: NOT
00000a6c: AND
00000a6d: DUP2
00000a6e: MSTORE
00000a6f: PUSH1 0x20
00000a71: ADD
00000a72: SWAP2
00000a73: POP
00000a74: JUMPDEST
00000a75: POP
00000a76: DUP6
00000a77: DUP2
00000a78: SUB
00000a79: DUP4
00000a7a: MSTORE
00000a7b: DUP9
00000a7c: DUP2
00000a7d: DUP2
00000a7e: MLOAD
00000a7f: DUP2
00000a80: MSTORE
00000a81: PUSH1 0x20
00000a83: ADD
00000a84: SWAP2
00000a85: POP
00000a86: DUP1
00000a87: MLOAD
00000a88: SWAP1
00000a89: PUSH1 0x20
00000a8b: ADD
00000a8c: SWAP1
00000a8d: DUP1
00000a8e: DUP4
00000a8f: DUP4
00000a90: PUSH1 0x00
00000a92: JUMPDEST
00000a93: DUP4
00000a94: DUP2
00000a95: LT
00000a96: ISZERO
00000a97: PUSH2 0x0aad
00000a9a: JUMPI
00000a9b: DUP1
00000a9c: DUP3
00000a9d: ADD
00000a9e: MLOAD
00000a9f: DUP2
00000aa0: DUP5
00000aa1: ADD
00000aa2: MSTORE
00000aa3: PUSH1 0x20
00000aa5: DUP2
00000aa6: ADD
00000aa7: SWAP1
00000aa8: POP
00000aa9: PUSH2 0x0a92
00000aac: JUMP
00000aad: JUMPDEST
00000aae: POP
00000aaf: POP
00000ab0: POP
00000ab1: POP
00000ab2: SWAP1
00000ab3: POP
00000ab4: SWAP1
00000ab5: DUP2
00000ab6: ADD
00000ab7: SWAP1
00000ab8: PUSH1 0x1f
00000aba: AND
00000abb: DUP1
00000abc: ISZERO
00000abd: PUSH2 0x0ada
00000ac0: JUMPI
00000ac1: DUP1
00000ac2: DUP3
00000ac3: SUB
00000ac4: DUP1
00000ac5: MLOAD
00000ac6: PUSH1 0x01
00000ac8: DUP4
00000ac9: PUSH1 0x20
00000acb: SUB
00000acc: PUSH2 0x0100
00000acf: EXP
00000ad0: SUB
00000ad1: NOT
00000ad2: AND
00000ad3: DUP2
00000ad4: MSTORE
00000ad5: PUSH1 0x20
00000ad7: ADD
00000ad8: SWAP2
00000ad9: POP
00000ada: JUMPDEST
00000adb: POP
00000adc: DUP6
00000add: DUP2
00000ade: SUB
00000adf: DUP3
00000ae0: MSTORE
00000ae1: DUP7
00000ae2: DUP2
00000ae3: DUP2
00000ae4: MLOAD
00000ae5: DUP2
00000ae6: MSTORE
00000ae7: PUSH1 0x20
00000ae9: ADD
00000aea: SWAP2
00000aeb: POP
00000aec: DUP1
00000aed: MLOAD
00000aee: SWAP1
00000aef: PUSH1 0x20
00000af1: ADD
00000af2: SWAP1
00000af3: DUP1
00000af4: DUP4
00000af5: DUP4
00000af6: PUSH1 0x00
00000af8: JUMPDEST
00000af9: DUP4
00000afa: DUP2
00000afb: LT
00000afc: ISZERO
00000afd: PUSH2 0x0b13
00000b00: JUMPI
00000b01: DUP1
00000b02: DUP3
00000b03: ADD
00000b04: MLOAD
00000b05: DUP2
00000b06: DUP5
00000b07: ADD
00000b08: MSTORE
00000b09: PUSH1 0x20
00000b0b: DUP2
00000b0c: ADD
00000b0d: SWAP1
00000b0e: POP
00000b0f: PUSH2 0x0af8
00000b12: JUMP
00000b13: JUMPDEST
00000b14: POP
00000b15: POP
00000b16: POP
00000b17: POP
00000b18: SWAP1
00000b19: POP
00000b1a: SWAP1
00000b1b: DUP2
00000b1c: ADD
00000b1d: SWAP1
00000b1e: PUSH1 0x1f
00000b20: AND
00000b21: DUP1
00000b22: ISZERO
00000b23: PUSH2 0x0b40
00000b26: JUMPI
00000b27: DUP1
00000b28: DUP3
00000b29: SUB
00000b2a: DUP1
00000b2b: MLOAD
00000b2c: PUSH1 0x01
00000b2e: DUP4
00000b2f: PUSH1 0x20
00000b31: SUB
00000b32: PUSH2 0x0100
00000b35: EXP
00000b36: SUB
00000b37: NOT
00000b38: AND
00000b39: DUP2
00000b3a: MSTORE
00000b3b: PUSH1 0x20
00000b3d: ADD
00000b3e: SWAP2
00000b3f: POP
00000b40: JUMPDEST
00000b41: POP
00000b42: SWAP12
00000b43: POP
00000b44: POP
00000b45: POP
00000b46: POP
00000b47: POP
00000b48: POP
00000b49: POP
00000b4a: POP
00000b4b: POP
00000b4c: POP
00000b4d: POP
00000b4e: POP
00000b4f: PUSH1 0x40
00000b51: MLOAD
00000b52: DUP1
00000b53: SWAP2
00000b54: SUB
00000b55: SWAP1
00000b56: LOG1
00000b57: POP
00000b58: POP
00000b59: POP
00000b5a: JUMP
00000b5b: JUMPDEST
00000b5c: PUSH1 0x00
00000b5e: DUP1
00000b5f: PUSH1 0x00
00000b61: DUP1
00000b62: PUSH1 0x00
00000b64: ADDRESS
00000b65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b7a: AND
00000b7b: DUP13
00000b7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b91: AND
00000b92: EQ
00000b93: ISZERO
00000b94: ISZERO
00000b95: ISZERO
00000b96: PUSH2 0x0b9e
00000b99: JUMPI
00000b9a: PUSH1 0x00
00000b9c: DUP1
00000b9d: REVERT
00000b9e: JUMPDEST
00000b9f: PUSH1 0x00
00000ba1: DUP11
00000ba2: GT
00000ba3: ISZERO
00000ba4: ISZERO
00000ba5: PUSH2 0x0bad
00000ba8: JUMPI
00000ba9: PUSH1 0x00
00000bab: DUP1
00000bac: REVERT
00000bad: JUMPDEST
00000bae: PUSH1 0x00
00000bb0: ISZERO
00000bb1: ISZERO
00000bb2: PUSH1 0x04
00000bb4: PUSH1 0x00
00000bb6: DUP16
00000bb7: PUSH12 0xffffffffffffffffffffffff
00000bc4: NOT
00000bc5: AND
00000bc6: PUSH12 0xffffffffffffffffffffffff
00000bd3: NOT
00000bd4: AND
00000bd5: DUP2
00000bd6: MSTORE
00000bd7: PUSH1 0x20
00000bd9: ADD
00000bda: SWAP1
00000bdb: DUP2
00000bdc: MSTORE
00000bdd: PUSH1 0x20
00000bdf: ADD
00000be0: PUSH1 0x00
00000be2: KECCAK256
00000be3: PUSH1 0x00
00000be5: SWAP1
00000be6: SLOAD
00000be7: SWAP1
00000be8: PUSH2 0x0100
00000beb: EXP
00000bec: SWAP1
00000bed: DIV
00000bee: PUSH1 0xff
00000bf0: AND
00000bf1: ISZERO
00000bf2: ISZERO
00000bf3: EQ
00000bf4: ISZERO
00000bf5: ISZERO
00000bf6: PUSH2 0x0bfe
00000bf9: JUMPI
00000bfa: PUSH1 0x00
00000bfc: DUP1
00000bfd: REVERT
00000bfe: JUMPDEST
00000bff: DUP11
00000c00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c15: AND
00000c16: CALLER
00000c17: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c2c: AND
00000c2d: EQ
00000c2e: ISZERO
00000c2f: ISZERO
00000c30: PUSH2 0x0c38
00000c33: JUMPI
00000c34: PUSH1 0x00
00000c36: DUP1
00000c37: REVERT
00000c38: JUMPDEST
00000c39: PUSH1 0x00
00000c3b: SWAP5
00000c3c: POP
00000c3d: PUSH1 0x00
00000c3f: SWAP4
00000c40: POP
00000c41: PUSH1 0x00
00000c43: SWAP5
00000c44: POP
00000c45: JUMPDEST
00000c46: DUP9
00000c47: MLOAD
00000c48: DUP6
00000c49: LT
00000c4a: ISZERO
00000c4b: PUSH2 0x0cde
00000c4e: JUMPI
00000c4f: PUSH1 0x01
00000c51: DUP6
00000c52: ADD
00000c53: SWAP4
00000c54: POP
00000c55: JUMPDEST
00000c56: DUP9
00000c57: MLOAD
00000c58: DUP5
00000c59: LT
00000c5a: ISZERO
00000c5b: PUSH2 0x0cd1
00000c5e: JUMPI
00000c5f: DUP9
00000c60: DUP5
00000c61: DUP2
00000c62: MLOAD
00000c63: DUP2
00000c64: LT
00000c65: ISZERO
00000c66: ISZERO
00000c67: PUSH2 0x0c6c
00000c6a: JUMPI
00000c6b: INVALID
00000c6c: JUMPDEST
00000c6d: SWAP1
00000c6e: PUSH1 0x20
00000c70: ADD
00000c71: SWAP1
00000c72: PUSH1 0x20
00000c74: MUL
00000c75: ADD
00000c76: MLOAD
00000c77: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c8c: AND
00000c8d: DUP10
00000c8e: DUP7
00000c8f: DUP2
00000c90: MLOAD
00000c91: DUP2
00000c92: LT
00000c93: ISZERO
00000c94: ISZERO
00000c95: PUSH2 0x0c9a
00000c98: JUMPI
00000c99: INVALID
00000c9a: JUMPDEST
00000c9b: SWAP1
00000c9c: PUSH1 0x20
00000c9e: ADD
00000c9f: SWAP1
00000ca0: PUSH1 0x20
00000ca2: MUL
00000ca3: ADD
00000ca4: MLOAD
00000ca5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cba: AND
00000cbb: EQ
00000cbc: ISZERO
00000cbd: ISZERO
00000cbe: ISZERO
00000cbf: PUSH2 0x0cc4
00000cc2: JUMPI
00000cc3: INVALID
00000cc4: JUMPDEST
00000cc5: DUP4
00000cc6: DUP1
00000cc7: PUSH1 0x01
00000cc9: ADD
00000cca: SWAP5
00000ccb: POP
00000ccc: POP
00000ccd: PUSH2 0x0c55
00000cd0: JUMP
00000cd1: JUMPDEST
00000cd2: DUP5
00000cd3: DUP1
00000cd4: PUSH1 0x01
00000cd6: ADD
00000cd7: SWAP6
00000cd8: POP
00000cd9: POP
00000cda: PUSH2 0x0c45
00000cdd: JUMP
00000cde: JUMPDEST
00000cdf: PUSH1 0x00
00000ce1: SWAP5
00000ce2: POP
00000ce3: JUMPDEST
00000ce4: DUP9
00000ce5: MLOAD
00000ce6: DUP6
00000ce7: LT
00000ce8: ISZERO
00000ce9: PUSH2 0x0ed3
00000cec: JUMPI
00000ced: DUP13
00000cee: DUP13
00000cef: DUP13
00000cf0: DUP13
00000cf1: PUSH1 0x40
00000cf3: MLOAD
00000cf4: DUP1
00000cf5: DUP6
00000cf6: PUSH12 0xffffffffffffffffffffffff
00000d03: NOT
00000d04: AND
00000d05: PUSH12 0xffffffffffffffffffffffff
00000d12: NOT
00000d13: AND
00000d14: DUP2
00000d15: MSTORE
00000d16: PUSH1 0x14
00000d18: ADD
00000d19: DUP5
00000d1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d2f: AND
00000d30: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d45: AND
00000d46: PUSH13 0x01000000000000000000000000
00000d54: MUL
00000d55: DUP2
00000d56: MSTORE
00000d57: PUSH1 0x14
00000d59: ADD
00000d5a: DUP4
00000d5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d70: AND
00000d71: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d86: AND
00000d87: PUSH13 0x01000000000000000000000000
00000d95: MUL
00000d96: DUP2
00000d97: MSTORE
00000d98: PUSH1 0x14
00000d9a: ADD
00000d9b: DUP3
00000d9c: DUP2
00000d9d: MSTORE
00000d9e: PUSH1 0x20
00000da0: ADD
00000da1: SWAP5
00000da2: POP
00000da3: POP
00000da4: POP
00000da5: POP
00000da6: POP
00000da7: PUSH1 0x40
00000da9: MLOAD
00000daa: DUP1
00000dab: SWAP2
00000dac: SUB
00000dad: SWAP1
00000dae: KECCAK256
00000daf: SWAP3
00000db0: POP
00000db1: PUSH1 0x01
00000db3: DUP4
00000db4: DUP8
00000db5: DUP8
00000db6: DUP2
00000db7: MLOAD
00000db8: DUP2
00000db9: LT
00000dba: ISZERO
00000dbb: ISZERO
00000dbc: PUSH2 0x0dc1
00000dbf: JUMPI
00000dc0: INVALID
00000dc1: JUMPDEST
00000dc2: SWAP1
00000dc3: PUSH1 0x20
00000dc5: ADD
00000dc6: SWAP1
00000dc7: PUSH1 0x20
00000dc9: MUL
00000dca: ADD
00000dcb: MLOAD
00000dcc: DUP11
00000dcd: DUP9
00000dce: DUP2
00000dcf: MLOAD
00000dd0: DUP2
00000dd1: LT
00000dd2: ISZERO
00000dd3: ISZERO
00000dd4: PUSH2 0x0dd9
00000dd7: JUMPI
00000dd8: INVALID
00000dd9: JUMPDEST
00000dda: SWAP1
00000ddb: PUSH1 0x20
00000ddd: ADD
00000dde: SWAP1
00000ddf: PUSH1 0x20
00000de1: MUL
00000de2: ADD
00000de3: MLOAD
00000de4: DUP11
00000de5: DUP10
00000de6: DUP2
00000de7: MLOAD
00000de8: DUP2
00000de9: LT
00000dea: ISZERO
00000deb: ISZERO
00000dec: PUSH2 0x0df1
00000def: JUMPI
00000df0: INVALID
00000df1: JUMPDEST
00000df2: SWAP1
00000df3: PUSH1 0x20
00000df5: ADD
00000df6: SWAP1
00000df7: PUSH1 0x20
00000df9: MUL
00000dfa: ADD
00000dfb: MLOAD
00000dfc: PUSH1 0x40
00000dfe: MLOAD
00000dff: PUSH1 0x00
00000e01: DUP2
00000e02: MSTORE
00000e03: PUSH1 0x20
00000e05: ADD
00000e06: PUSH1 0x40
00000e08: MSTORE
00000e09: PUSH1 0x40
00000e0b: MLOAD
00000e0c: DUP1
00000e0d: DUP6
00000e0e: PUSH1 0x00
00000e10: NOT
00000e11: AND
00000e12: PUSH1 0x00
00000e14: NOT
00000e15: AND
00000e16: DUP2
00000e17: MSTORE
00000e18: PUSH1 0x20
00000e1a: ADD
00000e1b: DUP5
00000e1c: PUSH1 0xff
00000e1e: AND
00000e1f: PUSH1 0xff
00000e21: AND
00000e22: DUP2
00000e23: MSTORE
00000e24: PUSH1 0x20
00000e26: ADD
00000e27: DUP4
00000e28: PUSH1 0x00
00000e2a: NOT
00000e2b: AND
00000e2c: PUSH1 0x00
00000e2e: NOT
00000e2f: AND
00000e30: DUP2
00000e31: MSTORE
00000e32: PUSH1 0x20
00000e34: ADD
00000e35: DUP3
00000e36: PUSH1 0x00
00000e38: NOT
00000e39: AND
00000e3a: PUSH1 0x00
00000e3c: NOT
00000e3d: AND
00000e3e: DUP2
00000e3f: MSTORE
00000e40: PUSH1 0x20
00000e42: ADD
00000e43: SWAP5
00000e44: POP
00000e45: POP
00000e46: POP
00000e47: POP
00000e48: POP
00000e49: PUSH1 0x20
00000e4b: PUSH1 0x40
00000e4d: MLOAD
00000e4e: PUSH1 0x20
00000e50: DUP2
00000e51: SUB
00000e52: SWAP1
00000e53: DUP1
00000e54: DUP5
00000e55: SUB
00000e56: SWAP1
00000e57: PUSH1 0x00
00000e59: DUP7
00000e5a: GAS
00000e5b: CALL
00000e5c: ISZERO
00000e5d: DUP1
00000e5e: ISZERO
00000e5f: PUSH2 0x0e6c
00000e62: JUMPI
00000e63: RETURNDATASIZE
00000e64: PUSH1 0x00
00000e66: DUP1
00000e67: RETURNDATACOPY
00000e68: RETURNDATASIZE
00000e69: PUSH1 0x00
00000e6b: REVERT
00000e6c: JUMPDEST
00000e6d: POP
00000e6e: POP
00000e6f: POP
00000e70: PUSH1 0x20
00000e72: PUSH1 0x40
00000e74: MLOAD
00000e75: SUB
00000e76: MLOAD
00000e77: SWAP2
00000e78: POP
00000e79: DUP2
00000e7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e8f: AND
00000e90: DUP10
00000e91: DUP7
00000e92: DUP2
00000e93: MLOAD
00000e94: DUP2
00000e95: LT
00000e96: ISZERO
00000e97: ISZERO
00000e98: PUSH2 0x0e9d
00000e9b: JUMPI
00000e9c: INVALID
00000e9d: JUMPDEST
00000e9e: SWAP1
00000e9f: PUSH1 0x20
00000ea1: ADD
00000ea2: SWAP1
00000ea3: PUSH1 0x20
00000ea5: MUL
00000ea6: ADD
00000ea7: MLOAD
00000ea8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ebd: AND
00000ebe: EQ
00000ebf: ISZERO
00000ec0: ISZERO
00000ec1: PUSH2 0x0ec6
00000ec4: JUMPI
00000ec5: INVALID
00000ec6: JUMPDEST
00000ec7: DUP5
00000ec8: DUP1
00000ec9: PUSH1 0x01
00000ecb: ADD
00000ecc: SWAP6
00000ecd: POP
00000ece: POP
00000ecf: PUSH2 0x0ce3
00000ed2: JUMP
00000ed3: JUMPDEST
00000ed4: PUSH1 0x00
00000ed6: SWAP1
00000ed7: POP
00000ed8: PUSH1 0x00
00000eda: SWAP5
00000edb: POP
00000edc: JUMPDEST
00000edd: DUP9
00000ede: MLOAD
00000edf: DUP6
00000ee0: LT
00000ee1: ISZERO
00000ee2: PUSH2 0x0f5d
00000ee5: JUMPI
00000ee6: PUSH2 0x0f4e
00000ee9: PUSH1 0x02
00000eeb: PUSH1 0x00
00000eed: DUP12
00000eee: DUP9
00000eef: DUP2
00000ef0: MLOAD
00000ef1: DUP2
00000ef2: LT
00000ef3: ISZERO
00000ef4: ISZERO
00000ef5: PUSH2 0x0efa
00000ef8: JUMPI
00000ef9: INVALID
00000efa: JUMPDEST
00000efb: SWAP1
00000efc: PUSH1 0x20
00000efe: ADD
00000eff: SWAP1
00000f00: PUSH1 0x20
00000f02: MUL
00000f03: ADD
00000f04: MLOAD
00000f05: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f1a: AND
00000f1b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f30: AND
00000f31: DUP2
00000f32: MSTORE
00000f33: PUSH1 0x20
00000f35: ADD
00000f36: SWAP1
00000f37: DUP2
00000f38: MSTORE
00000f39: PUSH1 0x20
00000f3b: ADD
00000f3c: PUSH1 0x00
00000f3e: KECCAK256
00000f3f: SLOAD
00000f40: DUP3
00000f41: PUSH2 0x170b
00000f44: SWAP1
00000f45: SWAP2
00000f46: SWAP1
00000f47: PUSH4 0xffffffff
00000f4c: AND
00000f4d: JUMP
00000f4e: JUMPDEST
00000f4f: SWAP1
00000f50: POP
00000f51: DUP5
00000f52: DUP1
00000f53: PUSH1 0x01
00000f55: ADD
00000f56: SWAP6
00000f57: POP
00000f58: POP
00000f59: PUSH2 0x0edc
00000f5c: JUMP
00000f5d: JUMPDEST
00000f5e: PUSH1 0x03
00000f60: SLOAD
00000f61: DUP2
00000f62: GT
00000f63: ISZERO
00000f64: ISZERO
00000f65: ISZERO
00000f66: PUSH2 0x0f6b
00000f69: JUMPI
00000f6a: INVALID
00000f6b: JUMPDEST
00000f6c: PUSH1 0x01
00000f6e: PUSH1 0x04
00000f70: PUSH1 0x00
00000f72: DUP16
00000f73: PUSH12 0xffffffffffffffffffffffff
00000f80: NOT
00000f81: AND
00000f82: PUSH12 0xffffffffffffffffffffffff
00000f8f: NOT
00000f90: AND
00000f91: DUP2
00000f92: MSTORE
00000f93: PUSH1 0x20
00000f95: ADD
00000f96: SWAP1
00000f97: DUP2
00000f98: MSTORE
00000f99: PUSH1 0x20
00000f9b: ADD
00000f9c: PUSH1 0x00
00000f9e: KECCAK256
00000f9f: PUSH1 0x00
00000fa1: PUSH2 0x0100
00000fa4: EXP
00000fa5: DUP2
00000fa6: SLOAD
00000fa7: DUP2
00000fa8: PUSH1 0xff
00000faa: MUL
00000fab: NOT
00000fac: AND
00000fad: SWAP1
00000fae: DUP4
00000faf: ISZERO
00000fb0: ISZERO
00000fb1: MUL
00000fb2: OR
00000fb3: SWAP1
00000fb4: SSTORE
00000fb5: POP
00000fb6: PUSH1 0x02
00000fb8: PUSH1 0x03
00000fba: SLOAD
00000fbb: DUP2
00000fbc: ISZERO
00000fbd: ISZERO
00000fbe: PUSH2 0x0fc3
00000fc1: JUMPI
00000fc2: INVALID
00000fc3: JUMPDEST
00000fc4: DIV
00000fc5: DUP2
00000fc6: GT
00000fc7: ISZERO
00000fc8: PUSH2 0x1008
00000fcb: JUMPI
00000fcc: PUSH1 0x00
00000fce: DUP13
00000fcf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fe4: AND
00000fe5: EQ
00000fe6: ISZERO
00000fe7: PUSH2 0x0ffa
00000fea: JUMPI
00000feb: PUSH2 0x0ff5
00000fee: DUP14
00000fef: DUP13
00000ff0: DUP13
00000ff1: PUSH2 0x1729
00000ff4: JUMP
00000ff5: JUMPDEST
00000ff6: PUSH2 0x1007
00000ff9: JUMP
00000ffa: JUMPDEST
00000ffb: PUSH2 0x1006
00000ffe: DUP14
00000fff: DUP14
00001000: DUP14
00001001: DUP14
00001002: PUSH2 0x193c
00001005: JUMP
00001006: JUMPDEST
00001007: JUMPDEST
00001008: JUMPDEST
00001009: POP
0000100a: POP
0000100b: POP
0000100c: POP
0000100d: POP
0000100e: POP
0000100f: POP
00001010: POP
00001011: POP
00001012: POP
00001013: POP
00001014: POP
00001015: POP
00001016: JUMP
00001017: JUMPDEST
00001018: PUSH1 0x02
0000101a: PUSH1 0x20
0000101c: MSTORE
0000101d: DUP1
0000101e: PUSH1 0x00
00001020: MSTORE
00001021: PUSH1 0x40
00001023: PUSH1 0x00
00001025: KECCAK256
00001026: PUSH1 0x00
00001028: SWAP2
00001029: POP
0000102a: SWAP1
0000102b: POP
0000102c: SLOAD
0000102d: DUP2
0000102e: JUMP
0000102f: JUMPDEST
00001030: PUSH1 0x00
00001032: PUSH1 0x02
00001034: PUSH1 0x00
00001036: DUP4
00001037: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000104c: AND
0000104d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001062: AND
00001063: DUP2
00001064: MSTORE
00001065: PUSH1 0x20
00001067: ADD
00001068: SWAP1
00001069: DUP2
0000106a: MSTORE
0000106b: PUSH1 0x20
0000106d: ADD
0000106e: PUSH1 0x00
00001070: KECCAK256
00001071: SLOAD
00001072: SWAP1
00001073: POP
00001074: SWAP2
00001075: SWAP1
00001076: POP
00001077: JUMP
00001078: JUMPDEST
00001079: PUSH1 0x00
0000107b: DUP1
0000107c: SWAP1
0000107d: SLOAD
0000107e: SWAP1
0000107f: PUSH2 0x0100
00001082: EXP
00001083: SWAP1
00001084: DIV
00001085: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000109a: AND
0000109b: DUP2
0000109c: JUMP
0000109d: JUMPDEST
0000109e: PUSH1 0x04
000010a0: PUSH1 0x20
000010a2: MSTORE
000010a3: DUP1
000010a4: PUSH1 0x00
000010a6: MSTORE
000010a7: PUSH1 0x40
000010a9: PUSH1 0x00
000010ab: KECCAK256
000010ac: PUSH1 0x00
000010ae: SWAP2
000010af: POP
000010b0: SLOAD
000010b1: SWAP1
000010b2: PUSH2 0x0100
000010b5: EXP
000010b6: SWAP1
000010b7: DIV
000010b8: PUSH1 0xff
000010ba: AND
000010bb: DUP2
000010bc: JUMP
000010bd: JUMPDEST
000010be: PUSH1 0x00
000010c0: DUP4
000010c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010d6: AND
000010d7: GT
000010d8: ISZERO
000010d9: ISZERO
000010da: PUSH2 0x10e2
000010dd: JUMPI
000010de: PUSH1 0x00
000010e0: DUP1
000010e1: REVERT
000010e2: JUMPDEST
000010e3: PUSH1 0x00
000010e5: DUP3
000010e6: GT
000010e7: ISZERO
000010e8: ISZERO
000010e9: PUSH2 0x10f1
000010ec: JUMPI
000010ed: PUSH1 0x00
000010ef: DUP1
000010f0: REVERT
000010f1: JUMPDEST
000010f2: DUP3
000010f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001108: AND
00001109: PUSH4 0x23b872dd
0000110e: CALLER
0000110f: ADDRESS
00001110: DUP6
00001111: PUSH1 0x40
00001113: MLOAD
00001114: DUP5
00001115: PUSH4 0xffffffff
0000111a: AND
0000111b: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001139: MUL
0000113a: DUP2
0000113b: MSTORE
0000113c: PUSH1 0x04
0000113e: ADD
0000113f: DUP1
00001140: DUP5
00001141: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001156: AND
00001157: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000116c: AND
0000116d: DUP2
0000116e: MSTORE
0000116f: PUSH1 0x20
00001171: ADD
00001172: DUP4
00001173: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001188: AND
00001189: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000119e: AND
0000119f: DUP2
000011a0: MSTORE
000011a1: PUSH1 0x20
000011a3: ADD
000011a4: DUP3
000011a5: DUP2
000011a6: MSTORE
000011a7: PUSH1 0x20
000011a9: ADD
000011aa: SWAP4
000011ab: POP
000011ac: POP
000011ad: POP
000011ae: POP
000011af: PUSH1 0x20
000011b1: PUSH1 0x40
000011b3: MLOAD
000011b4: DUP1
000011b5: DUP4
000011b6: SUB
000011b7: DUP2
000011b8: PUSH1 0x00
000011ba: DUP8
000011bb: DUP1
000011bc: EXTCODESIZE
000011bd: ISZERO
000011be: DUP1
000011bf: ISZERO
000011c0: PUSH2 0x11c8
000011c3: JUMPI
000011c4: PUSH1 0x00
000011c6: DUP1
000011c7: REVERT
000011c8: JUMPDEST
000011c9: POP
000011ca: GAS
000011cb: CALL
000011cc: ISZERO
000011cd: DUP1
000011ce: ISZERO
000011cf: PUSH2 0x11dc
000011d2: JUMPI
000011d3: RETURNDATASIZE
000011d4: PUSH1 0x00
000011d6: DUP1
000011d7: RETURNDATACOPY
000011d8: RETURNDATASIZE
000011d9: PUSH1 0x00
000011db: REVERT
000011dc: JUMPDEST
000011dd: POP
000011de: POP
000011df: POP
000011e0: POP
000011e1: PUSH1 0x40
000011e3: MLOAD
000011e4: RETURNDATASIZE
000011e5: PUSH1 0x20
000011e7: DUP2
000011e8: LT
000011e9: ISZERO
000011ea: PUSH2 0x11f2
000011ed: JUMPI
000011ee: PUSH1 0x00
000011f0: DUP1
000011f1: REVERT
000011f2: JUMPDEST
000011f3: DUP2
000011f4: ADD
000011f5: SWAP1
000011f6: DUP1
000011f7: DUP1
000011f8: MLOAD
000011f9: SWAP1
000011fa: PUSH1 0x20
000011fc: ADD
000011fd: SWAP1
000011fe: SWAP3
000011ff: SWAP2
00001200: SWAP1
00001201: POP
00001202: POP
00001203: POP
00001204: ISZERO
00001205: ISZERO
00001206: PUSH2 0x120b
00001209: JUMPI
0000120a: INVALID
0000120b: JUMPDEST
0000120c: PUSH2 0x125d
0000120f: DUP3
00001210: PUSH1 0x01
00001212: PUSH1 0x00
00001214: DUP7
00001215: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000122a: AND
0000122b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001240: AND
00001241: DUP2
00001242: MSTORE
00001243: PUSH1 0x20
00001245: ADD
00001246: SWAP1
00001247: DUP2
00001248: MSTORE
00001249: PUSH1 0x20
0000124b: ADD
0000124c: PUSH1 0x00
0000124e: KECCAK256
0000124f: SLOAD
00001250: PUSH2 0x170b
00001253: SWAP1
00001254: SWAP2
00001255: SWAP1
00001256: PUSH4 0xffffffff
0000125b: AND
0000125c: JUMP
0000125d: JUMPDEST
0000125e: PUSH1 0x01
00001260: PUSH1 0x00
00001262: DUP6
00001263: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001278: AND
00001279: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000128e: AND
0000128f: DUP2
00001290: MSTORE
00001291: PUSH1 0x20
00001293: ADD
00001294: SWAP1
00001295: DUP2
00001296: MSTORE
00001297: PUSH1 0x20
00001299: ADD
0000129a: PUSH1 0x00
0000129c: KECCAK256
0000129d: DUP2
0000129e: SWAP1
0000129f: SSTORE
000012a0: POP
000012a1: PUSH32 0x9abc03496c1032d5360782ca78af72ed77b086c26cb5a6a98b01178546795ec0
000012c2: DUP4
000012c3: CALLER
000012c4: DUP5
000012c5: DUP5
000012c6: PUSH1 0x40
000012c8: MLOAD
000012c9: DUP1
000012ca: DUP6
000012cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012e0: AND
000012e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012f6: AND
000012f7: DUP2
000012f8: MSTORE
000012f9: PUSH1 0x20
000012fb: ADD
000012fc: DUP5
000012fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001312: AND
00001313: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001328: AND
00001329: DUP2
0000132a: MSTORE
0000132b: PUSH1 0x20
0000132d: ADD
0000132e: DUP4
0000132f: DUP2
00001330: MSTORE
00001331: PUSH1 0x20
00001333: ADD
00001334: DUP1
00001335: PUSH1 0x20
00001337: ADD
00001338: DUP3
00001339: DUP2
0000133a: SUB
0000133b: DUP3
0000133c: MSTORE
0000133d: DUP4
0000133e: DUP2
0000133f: DUP2
00001340: MLOAD
00001341: DUP2
00001342: MSTORE
00001343: PUSH1 0x20
00001345: ADD
00001346: SWAP2
00001347: POP
00001348: DUP1
00001349: MLOAD
0000134a: SWAP1
0000134b: PUSH1 0x20
0000134d: ADD
0000134e: SWAP1
0000134f: DUP1
00001350: DUP4
00001351: DUP4
00001352: PUSH1 0x00
00001354: JUMPDEST
00001355: DUP4
00001356: DUP2
00001357: LT
00001358: ISZERO
00001359: PUSH2 0x136f
0000135c: JUMPI
0000135d: DUP1
0000135e: DUP3
0000135f: ADD
00001360: MLOAD
00001361: DUP2
00001362: DUP5
00001363: ADD
00001364: MSTORE
00001365: PUSH1 0x20
00001367: DUP2
00001368: ADD
00001369: SWAP1
0000136a: POP
0000136b: PUSH2 0x1354
0000136e: JUMP
0000136f: JUMPDEST
00001370: POP
00001371: POP
00001372: POP
00001373: POP
00001374: SWAP1
00001375: POP
00001376: SWAP1
00001377: DUP2
00001378: ADD
00001379: SWAP1
0000137a: PUSH1 0x1f
0000137c: AND
0000137d: DUP1
0000137e: ISZERO
0000137f: PUSH2 0x139c
00001382: JUMPI
00001383: DUP1
00001384: DUP3
00001385: SUB
00001386: DUP1
00001387: MLOAD
00001388: PUSH1 0x01
0000138a: DUP4
0000138b: PUSH1 0x20
0000138d: SUB
0000138e: PUSH2 0x0100
00001391: EXP
00001392: SUB
00001393: NOT
00001394: AND
00001395: DUP2
00001396: MSTORE
00001397: PUSH1 0x20
00001399: ADD
0000139a: SWAP2
0000139b: POP
0000139c: JUMPDEST
0000139d: POP
0000139e: SWAP6
0000139f: POP
000013a0: POP
000013a1: POP
000013a2: POP
000013a3: POP
000013a4: POP
000013a5: PUSH1 0x40
000013a7: MLOAD
000013a8: DUP1
000013a9: SWAP2
000013aa: SUB
000013ab: SWAP1
000013ac: LOG1
000013ad: POP
000013ae: POP
000013af: POP
000013b0: JUMP
000013b1: JUMPDEST
000013b2: PUSH1 0x00
000013b4: CALLVALUE
000013b5: GT
000013b6: ISZERO
000013b7: ISZERO
000013b8: PUSH2 0x13c0
000013bb: JUMPI
000013bc: PUSH1 0x00
000013be: DUP1
000013bf: REVERT
000013c0: JUMPDEST
000013c1: PUSH2 0x1412
000013c4: CALLVALUE
000013c5: PUSH1 0x01
000013c7: PUSH1 0x00
000013c9: DUP1
000013ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013df: AND
000013e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013f5: AND
000013f6: DUP2
000013f7: MSTORE
000013f8: PUSH1 0x20
000013fa: ADD
000013fb: SWAP1
000013fc: DUP2
000013fd: MSTORE
000013fe: PUSH1 0x20
00001400: ADD
00001401: PUSH1 0x00
00001403: KECCAK256
00001404: SLOAD
00001405: PUSH2 0x170b
00001408: SWAP1
00001409: SWAP2
0000140a: SWAP1
0000140b: PUSH4 0xffffffff
00001410: AND
00001411: JUMP
00001412: JUMPDEST
00001413: PUSH1 0x01
00001415: PUSH1 0x00
00001417: DUP1
00001418: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000142d: AND
0000142e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001443: AND
00001444: DUP2
00001445: MSTORE
00001446: PUSH1 0x20
00001448: ADD
00001449: SWAP1
0000144a: DUP2
0000144b: MSTORE
0000144c: PUSH1 0x20
0000144e: ADD
0000144f: PUSH1 0x00
00001451: KECCAK256
00001452: DUP2
00001453: SWAP1
00001454: SSTORE
00001455: POP
00001456: PUSH32 0x9abc03496c1032d5360782ca78af72ed77b086c26cb5a6a98b01178546795ec0
00001477: PUSH1 0x00
00001479: CALLER
0000147a: CALLVALUE
0000147b: DUP5
0000147c: PUSH1 0x40
0000147e: MLOAD
0000147f: DUP1
00001480: DUP6
00001481: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001496: AND
00001497: DUP2
00001498: MSTORE
00001499: PUSH1 0x20
0000149b: ADD
0000149c: DUP5
0000149d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014b2: AND
000014b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014c8: AND
000014c9: DUP2
000014ca: MSTORE
000014cb: PUSH1 0x20
000014cd: ADD
000014ce: DUP4
000014cf: DUP2
000014d0: MSTORE
000014d1: PUSH1 0x20
000014d3: ADD
000014d4: DUP1
000014d5: PUSH1 0x20
000014d7: ADD
000014d8: DUP3
000014d9: DUP2
000014da: SUB
000014db: DUP3
000014dc: MSTORE
000014dd: DUP4
000014de: DUP2
000014df: DUP2
000014e0: MLOAD
000014e1: DUP2
000014e2: MSTORE
000014e3: PUSH1 0x20
000014e5: ADD
000014e6: SWAP2
000014e7: POP
000014e8: DUP1
000014e9: MLOAD
000014ea: SWAP1
000014eb: PUSH1 0x20
000014ed: ADD
000014ee: SWAP1
000014ef: DUP1
000014f0: DUP4
000014f1: DUP4
000014f2: PUSH1 0x00
000014f4: JUMPDEST
000014f5: DUP4
000014f6: DUP2
000014f7: LT
000014f8: ISZERO
000014f9: PUSH2 0x150f
000014fc: JUMPI
000014fd: DUP1
000014fe: DUP3
000014ff: ADD
00001500: MLOAD
00001501: DUP2
00001502: DUP5
00001503: ADD
00001504: MSTORE
00001505: PUSH1 0x20
00001507: DUP2
00001508: ADD
00001509: SWAP1
0000150a: POP
0000150b: PUSH2 0x14f4
0000150e: JUMP
0000150f: JUMPDEST
00001510: POP
00001511: POP
00001512: POP
00001513: POP
00001514: SWAP1
00001515: POP
00001516: SWAP1
00001517: DUP2
00001518: ADD
00001519: SWAP1
0000151a: PUSH1 0x1f
0000151c: AND
0000151d: DUP1
0000151e: ISZERO
0000151f: PUSH2 0x153c
00001522: JUMPI
00001523: DUP1
00001524: DUP3
00001525: SUB
00001526: DUP1
00001527: MLOAD
00001528: PUSH1 0x01
0000152a: DUP4
0000152b: PUSH1 0x20
0000152d: SUB
0000152e: PUSH2 0x0100
00001531: EXP
00001532: SUB
00001533: NOT
00001534: AND
00001535: DUP2
00001536: MSTORE
00001537: PUSH1 0x20
00001539: ADD
0000153a: SWAP2
0000153b: POP
0000153c: JUMPDEST
0000153d: POP
0000153e: SWAP6
0000153f: POP
00001540: POP
00001541: POP
00001542: POP
00001543: POP
00001544: POP
00001545: PUSH1 0x40
00001547: MLOAD
00001548: DUP1
00001549: SWAP2
0000154a: SUB
0000154b: SWAP1
0000154c: LOG1
0000154d: POP
0000154e: JUMP
0000154f: JUMPDEST
00001550: PUSH1 0x00
00001552: PUSH1 0x01
00001554: PUSH1 0x00
00001556: DUP4
00001557: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000156c: AND
0000156d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001582: AND
00001583: DUP2
00001584: MSTORE
00001585: PUSH1 0x20
00001587: ADD
00001588: SWAP1
00001589: DUP2
0000158a: MSTORE
0000158b: PUSH1 0x20
0000158d: ADD
0000158e: PUSH1 0x00
00001590: KECCAK256
00001591: SLOAD
00001592: SWAP1
00001593: POP
00001594: SWAP2
00001595: SWAP1
00001596: POP
00001597: JUMP
00001598: JUMPDEST
00001599: PUSH1 0x01
0000159b: PUSH1 0x20
0000159d: MSTORE
0000159e: DUP1
0000159f: PUSH1 0x00
000015a1: MSTORE
000015a2: PUSH1 0x40
000015a4: PUSH1 0x00
000015a6: KECCAK256
000015a7: PUSH1 0x00
000015a9: SWAP2
000015aa: POP
000015ab: SWAP1
000015ac: POP
000015ad: SLOAD
000015ae: DUP2
000015af: JUMP
000015b0: JUMPDEST
000015b1: PUSH1 0x03
000015b3: SLOAD
000015b4: DUP2
000015b5: JUMP
000015b6: JUMPDEST
000015b7: PUSH1 0x00
000015b9: DUP1
000015ba: SWAP1
000015bb: SLOAD
000015bc: SWAP1
000015bd: PUSH2 0x0100
000015c0: EXP
000015c1: SWAP1
000015c2: DIV
000015c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d8: AND
000015d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015ee: AND
000015ef: CALLER
000015f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001605: AND
00001606: EQ
00001607: ISZERO
00001608: ISZERO
00001609: PUSH2 0x1611
0000160c: JUMPI
0000160d: PUSH1 0x00
0000160f: DUP1
00001610: REVERT
00001611: JUMPDEST
00001612: PUSH1 0x00
00001614: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001629: AND
0000162a: DUP2
0000162b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001640: AND
00001641: EQ
00001642: ISZERO
00001643: ISZERO
00001644: ISZERO
00001645: PUSH2 0x164d
00001648: JUMPI
00001649: PUSH1 0x00
0000164b: DUP1
0000164c: REVERT
0000164d: JUMPDEST
0000164e: DUP1
0000164f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001664: AND
00001665: PUSH1 0x00
00001667: DUP1
00001668: SWAP1
00001669: SLOAD
0000166a: SWAP1
0000166b: PUSH2 0x0100
0000166e: EXP
0000166f: SWAP1
00001670: DIV
00001671: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001686: AND
00001687: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000169c: AND
0000169d: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000016be: PUSH1 0x40
000016c0: MLOAD
000016c1: PUSH1 0x40
000016c3: MLOAD
000016c4: DUP1
000016c5: SWAP2
000016c6: SUB
000016c7: SWAP1
000016c8: LOG3
000016c9: DUP1
000016ca: PUSH1 0x00
000016cc: DUP1
000016cd: PUSH2 0x0100
000016d0: EXP
000016d1: DUP2
000016d2: SLOAD
000016d3: DUP2
000016d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016e9: MUL
000016ea: NOT
000016eb: AND
000016ec: SWAP1
000016ed: DUP4
000016ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001703: AND
00001704: MUL
00001705: OR
00001706: SWAP1
00001707: SSTORE
00001708: POP
00001709: POP
0000170a: JUMP
0000170b: JUMPDEST
0000170c: PUSH1 0x00
0000170e: DUP1
0000170f: DUP3
00001710: DUP5
00001711: ADD
00001712: SWAP1
00001713: POP
00001714: DUP4
00001715: DUP2
00001716: LT
00001717: ISZERO
00001718: ISZERO
00001719: ISZERO
0000171a: PUSH2 0x171f
0000171d: JUMPI
0000171e: INVALID
0000171f: JUMPDEST
00001720: DUP1
00001721: SWAP2
00001722: POP
00001723: POP
00001724: SWAP3
00001725: SWAP2
00001726: POP
00001727: POP
00001728: JUMP
00001729: JUMPDEST
0000172a: DUP1
0000172b: PUSH1 0x01
0000172d: PUSH1 0x00
0000172f: DUP1
00001730: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001745: AND
00001746: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000175b: AND
0000175c: DUP2
0000175d: MSTORE
0000175e: PUSH1 0x20
00001760: ADD
00001761: SWAP1
00001762: DUP2
00001763: MSTORE
00001764: PUSH1 0x20
00001766: ADD
00001767: PUSH1 0x00
00001769: KECCAK256
0000176a: SLOAD
0000176b: LT
0000176c: ISZERO
0000176d: ISZERO
0000176e: ISZERO
0000176f: PUSH2 0x1774
00001772: JUMPI
00001773: INVALID
00001774: JUMPDEST
00001775: DUP2
00001776: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000178b: AND
0000178c: CALLER
0000178d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017a2: AND
000017a3: EQ
000017a4: ISZERO
000017a5: ISZERO
000017a6: PUSH2 0x17ab
000017a9: JUMPI
000017aa: INVALID
000017ab: JUMPDEST
000017ac: PUSH2 0x17fd
000017af: DUP2
000017b0: PUSH1 0x01
000017b2: PUSH1 0x00
000017b4: DUP1
000017b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017ca: AND
000017cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017e0: AND
000017e1: DUP2
000017e2: MSTORE
000017e3: PUSH1 0x20
000017e5: ADD
000017e6: SWAP1
000017e7: DUP2
000017e8: MSTORE
000017e9: PUSH1 0x20
000017eb: ADD
000017ec: PUSH1 0x00
000017ee: KECCAK256
000017ef: SLOAD
000017f0: PUSH2 0x1bf0
000017f3: SWAP1
000017f4: SWAP2
000017f5: SWAP1
000017f6: PUSH4 0xffffffff
000017fb: AND
000017fc: JUMP
000017fd: JUMPDEST
000017fe: PUSH1 0x01
00001800: PUSH1 0x00
00001802: DUP1
00001803: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001818: AND
00001819: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000182e: AND
0000182f: DUP2
00001830: MSTORE
00001831: PUSH1 0x20
00001833: ADD
00001834: SWAP1
00001835: DUP2
00001836: MSTORE
00001837: PUSH1 0x20
00001839: ADD
0000183a: PUSH1 0x00
0000183c: KECCAK256
0000183d: DUP2
0000183e: SWAP1
0000183f: SSTORE
00001840: POP
00001841: CALLER
00001842: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001857: AND
00001858: PUSH2 0x08fc
0000185b: DUP3
0000185c: SWAP1
0000185d: DUP2
0000185e: ISZERO
0000185f: MUL
00001860: SWAP1
00001861: PUSH1 0x40
00001863: MLOAD
00001864: PUSH1 0x00
00001866: PUSH1 0x40
00001868: MLOAD
00001869: DUP1
0000186a: DUP4
0000186b: SUB
0000186c: DUP2
0000186d: DUP6
0000186e: DUP9
0000186f: DUP9
00001870: CALL
00001871: SWAP4
00001872: POP
00001873: POP
00001874: POP
00001875: POP
00001876: ISZERO
00001877: DUP1
00001878: ISZERO
00001879: PUSH2 0x1886
0000187c: JUMPI
0000187d: RETURNDATASIZE
0000187e: PUSH1 0x00
00001880: DUP1
00001881: RETURNDATACOPY
00001882: RETURNDATASIZE
00001883: PUSH1 0x00
00001885: REVERT
00001886: JUMPDEST
00001887: POP
00001888: PUSH32 0x1f57a1c5b6fc2c932e07efa54e40446c010acc2e30e1d017e592b7d0f90bc8fc
000018a9: DUP4
000018aa: PUSH1 0x00
000018ac: DUP5
000018ad: DUP5
000018ae: PUSH1 0x40
000018b0: MLOAD
000018b1: DUP1
000018b2: DUP6
000018b3: PUSH12 0xffffffffffffffffffffffff
000018c0: NOT
000018c1: AND
000018c2: PUSH12 0xffffffffffffffffffffffff
000018cf: NOT
000018d0: AND
000018d1: DUP2
000018d2: MSTORE
000018d3: PUSH1 0x20
000018d5: ADD
000018d6: DUP5
000018d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018ec: AND
000018ed: DUP2
000018ee: MSTORE
000018ef: PUSH1 0x20
000018f1: ADD
000018f2: DUP4
000018f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001908: AND
00001909: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000191e: AND
0000191f: DUP2
00001920: MSTORE
00001921: PUSH1 0x20
00001923: ADD
00001924: DUP3
00001925: DUP2
00001926: MSTORE
00001927: PUSH1 0x20
00001929: ADD
0000192a: SWAP5
0000192b: POP
0000192c: POP
0000192d: POP
0000192e: POP
0000192f: POP
00001930: PUSH1 0x40
00001932: MLOAD
00001933: DUP1
00001934: SWAP2
00001935: SUB
00001936: SWAP1
00001937: LOG1
00001938: POP
00001939: POP
0000193a: POP
0000193b: JUMP
0000193c: JUMPDEST
0000193d: PUSH1 0x00
0000193f: DUP4
00001940: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001955: AND
00001956: EQ
00001957: ISZERO
00001958: ISZERO
00001959: ISZERO
0000195a: PUSH2 0x195f
0000195d: JUMPI
0000195e: INVALID
0000195f: JUMPDEST
00001960: DUP1
00001961: PUSH1 0x01
00001963: PUSH1 0x00
00001965: DUP6
00001966: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000197b: AND
0000197c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001991: AND
00001992: DUP2
00001993: MSTORE
00001994: PUSH1 0x20
00001996: ADD
00001997: SWAP1
00001998: DUP2
00001999: MSTORE
0000199a: PUSH1 0x20
0000199c: ADD
0000199d: PUSH1 0x00
0000199f: KECCAK256
000019a0: SLOAD
000019a1: LT
000019a2: ISZERO
000019a3: ISZERO
000019a4: ISZERO
000019a5: PUSH2 0x19aa
000019a8: JUMPI
000019a9: INVALID
000019aa: JUMPDEST
000019ab: PUSH2 0x19fc
000019ae: DUP2
000019af: PUSH1 0x01
000019b1: PUSH1 0x00
000019b3: DUP7
000019b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019c9: AND
000019ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019df: AND
000019e0: DUP2
000019e1: MSTORE
000019e2: PUSH1 0x20
000019e4: ADD
000019e5: SWAP1
000019e6: DUP2
000019e7: MSTORE
000019e8: PUSH1 0x20
000019ea: ADD
000019eb: PUSH1 0x00
000019ed: KECCAK256
000019ee: SLOAD
000019ef: PUSH2 0x1bf0
000019f2: SWAP1
000019f3: SWAP2
000019f4: SWAP1
000019f5: PUSH4 0xffffffff
000019fa: AND
000019fb: JUMP
000019fc: JUMPDEST
000019fd: PUSH1 0x01
000019ff: PUSH1 0x00
00001a01: DUP6
00001a02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a17: AND
00001a18: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a2d: AND
00001a2e: DUP2
00001a2f: MSTORE
00001a30: PUSH1 0x20
00001a32: ADD
00001a33: SWAP1
00001a34: DUP2
00001a35: MSTORE
00001a36: PUSH1 0x20
00001a38: ADD
00001a39: PUSH1 0x00
00001a3b: KECCAK256
00001a3c: DUP2
00001a3d: SWAP1
00001a3e: SSTORE
00001a3f: POP
00001a40: DUP3
00001a41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a56: AND
00001a57: PUSH4 0xa9059cbb
00001a5c: DUP4
00001a5d: DUP4
00001a5e: PUSH1 0x40
00001a60: MLOAD
00001a61: DUP4
00001a62: PUSH4 0xffffffff
00001a67: AND
00001a68: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001a86: MUL
00001a87: DUP2
00001a88: MSTORE
00001a89: PUSH1 0x04
00001a8b: ADD
00001a8c: DUP1
00001a8d: DUP4
00001a8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001aa3: AND
00001aa4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ab9: AND
00001aba: DUP2
00001abb: MSTORE
00001abc: PUSH1 0x20
00001abe: ADD
00001abf: DUP3
00001ac0: DUP2
00001ac1: MSTORE
00001ac2: PUSH1 0x20
00001ac4: ADD
00001ac5: SWAP3
00001ac6: POP
00001ac7: POP
00001ac8: POP
00001ac9: PUSH1 0x20
00001acb: PUSH1 0x40
00001acd: MLOAD
00001ace: DUP1
00001acf: DUP4
00001ad0: SUB
00001ad1: DUP2
00001ad2: PUSH1 0x00
00001ad4: DUP8
00001ad5: DUP1
00001ad6: EXTCODESIZE
00001ad7: ISZERO
00001ad8: DUP1
00001ad9: ISZERO
00001ada: PUSH2 0x1ae2
00001add: JUMPI
00001ade: PUSH1 0x00
00001ae0: DUP1
00001ae1: REVERT
00001ae2: JUMPDEST
00001ae3: POP
00001ae4: GAS
00001ae5: CALL
00001ae6: ISZERO
00001ae7: DUP1
00001ae8: ISZERO
00001ae9: PUSH2 0x1af6
00001aec: JUMPI
00001aed: RETURNDATASIZE
00001aee: PUSH1 0x00
00001af0: DUP1
00001af1: RETURNDATACOPY
00001af2: RETURNDATASIZE
00001af3: PUSH1 0x00
00001af5: REVERT
00001af6: JUMPDEST
00001af7: POP
00001af8: POP
00001af9: POP
00001afa: POP
00001afb: PUSH1 0x40
00001afd: MLOAD
00001afe: RETURNDATASIZE
00001aff: PUSH1 0x20
00001b01: DUP2
00001b02: LT
00001b03: ISZERO
00001b04: PUSH2 0x1b0c
00001b07: JUMPI
00001b08: PUSH1 0x00
00001b0a: DUP1
00001b0b: REVERT
00001b0c: JUMPDEST
00001b0d: DUP2
00001b0e: ADD
00001b0f: SWAP1
00001b10: DUP1
00001b11: DUP1
00001b12: MLOAD
00001b13: SWAP1
00001b14: PUSH1 0x20
00001b16: ADD
00001b17: SWAP1
00001b18: SWAP3
00001b19: SWAP2
00001b1a: SWAP1
00001b1b: POP
00001b1c: POP
00001b1d: POP
00001b1e: ISZERO
00001b1f: ISZERO
00001b20: PUSH2 0x1b25
00001b23: JUMPI
00001b24: INVALID
00001b25: JUMPDEST
00001b26: PUSH32 0x1f57a1c5b6fc2c932e07efa54e40446c010acc2e30e1d017e592b7d0f90bc8fc
00001b47: DUP5
00001b48: DUP5
00001b49: DUP5
00001b4a: DUP5
00001b4b: PUSH1 0x40
00001b4d: MLOAD
00001b4e: DUP1
00001b4f: DUP6
00001b50: PUSH12 0xffffffffffffffffffffffff
00001b5d: NOT
00001b5e: AND
00001b5f: PUSH12 0xffffffffffffffffffffffff
00001b6c: NOT
00001b6d: AND
00001b6e: DUP2
00001b6f: MSTORE
00001b70: PUSH1 0x20
00001b72: ADD
00001b73: DUP5
00001b74: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b89: AND
00001b8a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b9f: AND
00001ba0: DUP2
00001ba1: MSTORE
00001ba2: PUSH1 0x20
00001ba4: ADD
00001ba5: DUP4
00001ba6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bbb: AND
00001bbc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bd1: AND
00001bd2: DUP2
00001bd3: MSTORE
00001bd4: PUSH1 0x20
00001bd6: ADD
00001bd7: DUP3
00001bd8: DUP2
00001bd9: MSTORE
00001bda: PUSH1 0x20
00001bdc: ADD
00001bdd: SWAP5
00001bde: POP
00001bdf: POP
00001be0: POP
00001be1: POP
00001be2: POP
00001be3: PUSH1 0x40
00001be5: MLOAD
00001be6: DUP1
00001be7: SWAP2
00001be8: SUB
00001be9: SWAP1
00001bea: LOG1
00001beb: POP
00001bec: POP
00001bed: POP
00001bee: POP
00001bef: JUMP
00001bf0: JUMPDEST
00001bf1: PUSH1 0x00
00001bf3: DUP3
00001bf4: DUP3
00001bf5: GT
00001bf6: ISZERO
00001bf7: ISZERO
00001bf8: ISZERO
00001bf9: PUSH2 0x1bfe
00001bfc: JUMPI
00001bfd: INVALID
00001bfe: JUMPDEST
00001bff: DUP2
00001c00: DUP4
00001c01: SUB
00001c02: SWAP1
00001c03: POP
00001c04: SWAP3
00001c05: SWAP2
00001c06: POP
00001c07: POP
00001c08: JUMP
00001c09: STOP
00001c0a: LOG1
00001c0b: PUSH6 0x627a7a723058
00001c12: KECCAK256
00001c13: UNKNOWN(0xAA)
00001c14: UNKNOWN(0x2E)
00001c15: UNKNOWN(0xE2)
00001c16: PUSH29 0x32423095bc4b305c329d883f8c4d0fae55e4f64f5ddffd543dd6a0ae00
00001c34: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xbadb06cc77666370a95eec41924d8b640fc65317bccac6960d3b4f78c64fcbcd
call_targets: 0x075af08596c26a81384e1f06757f96c96bb1e896
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbadb06cc77666370a95eec41924d8b640fc65317bccac6960d3b4f78c64fcbcd",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x075af08596c26a81384e1f06757f96c96bb1e896"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x061aad6e",
            "selector": "0x061aad6e",
            "calldata_variants": [
                "0x061aad6e",
                "0x061aad6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3dc17a52",
            "selector": "0x3dc17a52",
            "calldata_variants": [
                "0x3dc17a52",
                "0x3dc17a520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7eadebfe",
            "selector": "0x7eadebfe",
            "calldata_variants": [
                "0x7eadebfe",
                "0x7eadebfe0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7fb8b61e",
            "selector": "0x7fb8b61e",
            "calldata_variants": [
                "0x7fb8b61e",
                "0x7fb8b61e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9cf40c0b",
            "selector": "0x9cf40c0b",
            "calldata_variants": [
                "0x9cf40c0b",
                "0x9cf40c0b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa10d0960",
            "selector": "0xa10d0960",
            "calldata_variants": [
                "0xa10d0960",
                "0xa10d09600000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1794,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2039,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2284,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [
        {
            "pc": 3094,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5615,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6028,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 7
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xbadb06cc77666370a95eec41924d8b640fc65317bccac6960d3b4f78c64fcbcd
call_targets: 0x075af08596c26a81384e1f06757f96c96bb1e896
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbadb06cc77666370a95eec41924d8b640fc65317bccac6960d3b4f78c64fcbcd",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x075af08596c26a81384e1f06757f96c96bb1e896"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x061aad6e",
            "selector": "0x061aad6e",
            "calldata_variants": [
                "0x061aad6e",
                "0x061aad6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3dc17a52",
            "selector": "0x3dc17a52",
            "calldata_variants": [
                "0x3dc17a52",
                "0x3dc17a520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7eadebfe",
            "selector": "0x7eadebfe",
            "calldata_variants": [
                "0x7eadebfe",
                "0x7eadebfe0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7fb8b61e",
            "selector": "0x7fb8b61e",
            "calldata_variants": [
                "0x7fb8b61e",
                "0x7fb8b61e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9cf40c0b",
            "selector": "0x9cf40c0b",
            "calldata_variants": [
                "0x9cf40c0b",
                "0x9cf40c0b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa10d0960",
            "selector": "0xa10d0960",
            "calldata_variants": [
                "0xa10d0960",
                "0xa10d09600000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1794,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2039,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2284,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": [
        {
            "pc": 3094,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5615,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6028,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}