aba7d455-958d-45f4-99e5-807c87d03857
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31273 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110636 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110637 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110638 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110639 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110640 | detector.run | complete | 1 / 3 | 1 week ago |
| 110641 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:543046] OpenAI Codex v0.77.0 (research preview)
[codex:543046] --------
[codex:543046] workdir: /tmp/codex-multi-7_9jik4t
[codex:543046] model: gpt-5.2-codex
[codex:543046] provider: openai
[codex:543046] approval: never
[codex:543046] sandbox: read-only
[codex:543046] reasoning effort: xhigh
[codex:543046] reasoning summaries: auto
[codex:543046] session id: 019b7f3e-7e25-73b1-9985-c022c57bd81e
[codex:543046] --------
[codex:543046] user
[codex:543046] 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:543046]
[codex:543046] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:543046]
[codex:543046] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:543046] - Gas inefficiency, code quality, or best practices
[codex:543046] - Theoretical vulnerabilities without a clear extraction path
[codex:543046] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:543046] - Issues requiring social engineering or off-chain coordination
[codex:543046]
[codex:543046] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:543046] - CALL/DELEGATECALL with controllable destination or calldata
[codex:543046] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:543046] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:543046] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:543046] - External calls before state updates (reentrancy)
[codex:543046] - SELFDESTRUCT with controllable beneficiary
[codex:543046] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:543046]
[codex:543046] For each finding, you MUST explain:
[codex:543046] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:543046] 2. The concrete sequence of transactions to extract value
[codex:543046] 3. Why you believe this is exploitable (not just suspicious)
[codex:543046]
[codex:543046] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:543046] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:543046]
[codex:543046] Output MUST be valid JSON matching the provided schema.
[codex:543046] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:543046] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:543046] mcp startup: no servers
[codex:543046]
[codex:543046] thinking
[codex:543046] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:543046] exec
[codex:543046] /bin/bash -lc ls in /tmp/codex-multi-7_9jik4t succeeded in 6ms:
[codex:543046] BYTECODE_BUNDLE.txt
[codex:543046] codex-output-schema.json
[codex:543046] exec
[codex:543046] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7_9jik4t succeeded in 5ms:
[codex:543046] Runtime bytecode bundle for best-effort auditing.
[codex:543046] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:543046]
[codex:543046] FILE: runtime_bytecode.hex
[codex:543046] 0x6080604052600436106100ab5760003560e01c806396de31e01161006457806396de31e01461016757806399f5e5cb14610187578063ade9b3741461019a578063c0ee0b8a146101c7578063ed3dae64146101e7578063f50c1ed1146101fa576100b2565b806306c74e8d146100b45780630f032cbe146100c757806310d1e85c146100f2578063709dd40e1461011257806374764850146101275780638b41871314610147576100b2565b366100b257005b005b6100b26100c236600461168b565b61020d565b3480156100d357600080fd5b506100dc610507565b6040516100e991906119fe565b60405180910390f35b3480156100fe57600080fd5b506100b261010d3660046113bf565b61050d565b34801561011e57600080fd5b506100b261075f565b34801561013357600080fd5b506100b261014236600461133b565b6107b8565b34801561015357600080fd5b506100b261016236600461129c565b610845565b34801561017357600080fd5b506100b261018236600461125d565b6108c8565b6100b261019536600461156d565b610914565b3480156101a657600080fd5b506101ba6101b536600461125d565b610992565b6040516100e991906118af565b3480156101d357600080fd5b506100b26101e2366004611366565b610aba565b6100b26101f5366004611426565b610ac0565b6100b2610208366004611613565b610af3565b60408051600380825260808201909252600091816020015b61022d610fb0565b815260200190600190039081610225575050604080516101008101825260018152600060208083018290528351608081018552828152949550919392840192918201908152602001600081526020018781525081526020016000815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816000815181106102c957fe5b602090810291909101015260408051610100810190915280600881526020016000815260200160405180608001604052806000151581526020016000600181111561031057fe5b815260200160008152602001600081525081526020016000815260200160008152602001306001600160a01b0316815260200160008152602001848460405160200161035d9291906118ba565b6040516020818303038152906040528152508160018151811061037c57fe5b60209081029190910101526040805161010081019091528060008152602001600081526020016040518060800160405280600115158152602001600060018111156103c357fe5b8152602001600081526020018760020181525081526020016000815260200160008152602001306001600160a01b0316815260200160008152602001604051806020016040528060008152508152508160028151811061041f57fe5b6020908102919091010152604080516001808252818301909252600091816020015b610449611002565b8152602001906001900390816104415790505090506040518060400160405280306001600160a01b0316815260200160018152508160008151811061048a57fe5b602090810291909101015260405163a67a6a4560e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e9063a67a6a45906104ce908490869060040161178f565b600060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b505050505050505050565b60001981565b6000336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105809190611280565b90506000336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156105bd57600080fd5b505afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190611280565b60405163e6a4390560e01b8152909150735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a43905906106319085908590600401611775565b60206040518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106819190611280565b6001600160a01b0316336001600160a01b0316146106ba5760405162461bcd60e51b81526004016106b190611933565b60405180910390fd5b6001600160a01b03871630146106e25760405162461bcd60e51b81526004016106b1906119e1565b600080806106f2868801886115bc565b9250925092508060001461074957811561072a578089116107255760405162461bcd60e51b81526004016106b190611916565b610749565b8088116107495760405162461bcd60e51b81526004016106b1906119c4565b61075283610b45565b5050505050505050505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106b190611950565b60405133904780156108fc02916000818181858888f193505050501580156107b5573d6000803e3d6000fd5b50565b6040516370a0823160e01b815281906001600160a01b038416906370a08231906107e6903090600401611748565b60206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108369190611673565b101561084157600080fd5b5050565b33731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e146108785760405162461bcd60e51b81526004016106b19061196d565b6001600160a01b03831630146108a05760405162461bcd60e51b81526004016106b1906119e1565b6000818060200190518101906108b69190611458565b90506108c181610b45565b5050505050565b6000546001600160a01b031633146108f25760405162461bcd60e51b81526004016106b190611950565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461093e5760405162461bcd60e51b81526004016106b190611950565b416001600160a01b03821614156109675760405162461bcd60e51b81526004016106b19061198a565b416109845760405162461bcd60e51b81526004016106b1906119a7565b61098d82610b45565b505050565b600080546001600160a01b031633146109bd5760405162461bcd60e51b81526004016106b190611950565b6040516370a0823160e01b81526001600160a01b0383169063a9059cbb90339083906370a08231906109f3903090600401611748565b60206040518083038186803b158015610a0b57600080fd5b505afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611673565b6040518363ffffffff1660e01b8152600401610a6092919061175c565b602060405180830381600087803b158015610a7a57600080fd5b505af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611657565b90505b919050565b50505050565b6000546001600160a01b03163314610aea5760405162461bcd60e51b81526004016106b190611950565b61084181610b45565b6000546001600160a01b03163314610b1d5760405162461bcd60e51b81526004016106b190611950565b806001600160801b031643146109675760405162461bcd60e51b81526004016106b1906118f9565b6000805b8251811015610faa576000838281518110610b6057fe5b60200260200101516000015190506000848381518110610b7c57fe5b6020026020010151604001516001600160801b0316905060038260ff16901c60011660ff1660011415610c165773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bf857600080fd5b505af1158015610c0c573d6000803e3d6000fd5b5050505050600090505b6001600483901c81161415610c29575060005b6000858481518110610c3757fe5b60200260200101516020015190506000868581518110610c5357fe5b602002602001015160800151905060005a905060016001600160a01b03841615610c8757600080845160208601888887f190505b60018087161415610cb5578060ff16600114610cb55760405162461bcd60e51b81526004016106b1906118dc565b8060ff16600114610ce85760ff8816610ccf5786600a0197505b600186811c81161415610ce85750505050505050610ab5565b6001600487901c81161415610eb5576000898881518110610d0557fe5b6020026020010151604001516001600160801b031690508060001415610db3576040516370a0823160e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610d5c903090600401611748565b60206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dac9190611673565b9050610e4a565b8060011415610e4a576040516370a0823160e01b815260029073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610df6903090600401611748565b60206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190611673565b0390505b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90610e819084906004016119fe565b600060405180830381600087803b158015610e9b57600080fd5b505af1158015610eaf573d6000803e3d6000fd5b50505050505b6000898881518110610ec357fe5b6020026020010151606001516001600160801b0316905080600014610f97576001600288901c81161415610f8b576040516370a0823160e01b8152819073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610f2a903090600401611748565b60206040518083038186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a9190611673565b470111610f8657600080fd5b610f97565b804711610f9757600080fd5b505060019095019450610b499350505050565b50919050565b604080516101008101825260008082526020820152908101610fd0611019565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035610ab581611a9e565b8051610ab581611a9e565b600082601f830112611068578081fd5b8135602061107d61107883611a2a565b611a07565b82815281810190858301855b85811015611147578135880160a080601f19838d030112156110a9578889fd5b604080518281016001600160401b0382821081831117156110c657fe5b8184526110d48b8701611247565b83526110e1848701611042565b8b840152606091506110f4828701611231565b8484015260809350611107848701611231565b8383015293850135938085111561111c578c8dfd5b505061112c8d8a8587010161119a565b91810191909152865250509284019290840190600101611089565b5090979650505050505050565b60008083601f840112611165578182fd5b5081356001600160401b0381111561117b578182fd5b60208301915083602082850101111561119357600080fd5b9250929050565b600082601f8301126111aa578081fd5b81356111b861107882611a47565b8181528460208386010111156111cc578283fd5b816020850160208301379081016020019190915292915050565b600082601f8301126111f6578081fd5b815161120461107882611a47565b818152846020838601011115611218578283fd5b611229826020830160208701611a68565b949350505050565b8035610ab581611ac1565b8051610ab581611ac1565b8035610ab581611ad6565b8051610ab581611ad6565b60006020828403121561126e578081fd5b813561127981611a9e565b9392505050565b600060208284031215611291578081fd5b815161127981611a9e565b600080600083850360808112156112b1578283fd5b84356112bc81611a9e565b93506040601f19820112156112cf578283fd5b50604051604081016001600160401b0382821081831117156112ed57fe5b816040526020870135915061130182611a9e565b8183526040870135602084015291935060608601359180831115611323578384fd5b50506113318682870161119a565b9150509250925092565b6000806040838503121561134d578182fd5b823561135881611a9e565b946020939093013593505050565b6000806000806060858703121561137b578182fd5b843561138681611a9e565b93506020850135925060408501356001600160401b038111156113a7578283fd5b6113b387828801611154565b95989497509550505050565b6000806000806000608086880312156113d6578283fd5b85356113e181611a9e565b9450602086013593506040860135925060608601356001600160401b03811115611409578182fd5b61141588828901611154565b969995985093965092949392505050565b600060208284031215611437578081fd5b81356001600160401b0381111561144c578182fd5b61122984828501611058565b6000602080838503121561146a578182fd5b82516001600160401b0380821115611480578384fd5b818501915085601f830112611493578384fd5b81516114a161107882611a2a565b81815284810190848601875b8481101561155e578151870160a080601f19838f030112156114cd578a8bfd5b604080518281018181108b821117156114e257fe5b82526114ef848d01611252565b81526114fc82850161104d565b8c820152606061150d81860161123c565b838301526080925061152083860161123c565b90820152918301519189831115611535578c8dfd5b6115438f8d858701016111e6565b918101919091528652505092870192908701906001016114ad565b50909998505050505050505050565b6000806040838503121561157f578182fd5b82356001600160401b03811115611594578283fd5b6115a085828601611058565b92505060208301356115b181611a9e565b809150509250929050565b6000806000606084860312156115d0578081fd5b83356001600160401b038111156115e5578182fd5b6115f186828701611058565b935050602084013561160281611ab3565b929592945050506040919091013590565b60008060408385031215611625578182fd5b82356001600160401b0381111561163a578283fd5b61164685828601611058565b92505060208301356115b181611ac1565b600060208284031215611668578081fd5b815161127981611ab3565b600060208284031215611684578081fd5b5051919050565b60008060006060848603121561169f578081fd5b8335925060208401356001600160401b038111156116bb578182fd5b6116c78682870161119a565b925050604084013590509250925092565b6001600160a01b03169052565b600081518084526116fd816020860160208601611a68565b601f01601f19169290920160200192915050565b805115158252602081015161172581611a94565b6020830152604081015161173881611a94565b6040830152606090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6040808252835182820181905260009190606090818501906020808901865b838110156117dc57815180516001600160a01b031686528301518386015293860193908201906001016117ae565b5050868303818801528751808452818401925080820284018201898301885b8381101561189e57601f19878403018652815161016081516009811061181d57fe5b855281870151878601528a8201516118378c870182611711565b508982015160c081818801526080840151915060e0828189015260a085015192506118666101008901846116d8565b90840151610120880152909201516101408601829052915061188a818601836116e5565b9787019794505050908401906001016117fb565b50909b9a5050505050505050505050565b901515815260200190565b6000604082526118cd60408301856116e5565b90508260208301529392505050565b60208082526003908201526267727760e81b604082015260600190565b60208082526003908201526231b7b760e91b604082015260600190565b60208082526003908201526206263360ec1b604082015260600190565b6020808252600390820152621d58dd60ea1b604082015260600190565b60208082526003908201526262727360e81b604082015260600190565b602080825260039082015262736d6360e81b604082015260600190565b60208082526003908201526263686d60e81b604082015260600190565b60208082526003908201526231b43d60e91b604082015260600190565b60208082526003908201526262633160e81b604082015260600190565b6020808252600390820152620eaced60eb1b604082015260600190565b90815260200190565b6040518181016001600160401b0381118282101715611a2257fe5b604052919050565b60006001600160401b03821115611a3d57fe5b5060209081020190565b60006001600160401b03821115611a5a57fe5b50601f01601f191660200190565b60005b83811015611a83578181015183820152602001611a6b565b83811115610aba5750506000910152565b600281106107b557fe5b6001600160a01b03811681146107b557600080fd5b80151581146107b557600080fd5b6001600160801b03811681146107b557600080fd5b60ff811681146107b557600080fdfea2646970667358221220b50aa32462c73d238da4b4e2d33c7886f89adaba289b1589c9e80adb7926cebe64736f6c63430007060033
[codex:543046]
[codex:543046] thinking
[codex:543046] **Parsing and analyzing bytecode functions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] # extract hex after 0x
[codex:543046] m=re.search(r'0x([0-9a-fA-F]+)',code)
[codex:543046] hexstr=m.group(1)
[codex:543046] # disassemble
[codex:543046] opcodes=[]
[codex:543046] # opcode names
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # disassemble with pc
[codex:543046] pc=0
[codex:543046] ops=[]
[codex:543046] while pc<len(bs):
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] ops.append((pc,name,data.hex()))
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] ops.append((pc,name,None))
[codex:543046] pc+=1
[codex:543046]
[codex:543046] # find dangerous ops
[codex:543046] for op in ['DELEGATECALL','CALLCODE','SELFDESTRUCT']:
[codex:543046] locs=[pc for pc,name,data in ops if name==op]
[codex:543046] print(op,locs)
[codex:543046]
[codex:543046] # count CALLs
[codex:543046] call_locs=[pc for pc,name,data in ops if name=='CALL']
[codex:543046] print('CALL count',len(call_locs))
[codex:543046] print('first 20 CALL pcs',call_locs[:20])
[codex:543046]
[codex:543046] # find SSTORE
[codex:543046] sstore_locs=[pc for pc,name,data in ops if name=='SSTORE']
[codex:543046] print('SSTORE pcs',sstore_locs)
[codex:543046]
[codex:543046] # find ecrecover: looking for precompile address 1? It's STATICCALL to address 0x01? We'll search for PUSH4 0x... not easy.
[codex:543046]
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 38ms:
[codex:543046] DELEGATECALL []
[codex:543046] CALLCODE []
[codex:543046] SELFDESTRUCT []
[codex:543046] CALL count 6
[codex:543046] first 20 CALL pcs [1259, 1951, 2685, 3067, 3204, 3742]
[codex:543046] SSTORE pcs [2322]
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing CALL instructions for control flow**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] m=re.search(r'0x([0-9a-fA-F]+)',code)
[codex:543046] hexstr=m.group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode map
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] # disassemble into list
[codex:543046] ops=[]
[codex:543046] pc=0
[codex:543046] while pc<len(bs):
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] ops.append((pc,name,data.hex()))
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] ops.append((pc,name,None))
[codex:543046] pc+=1
[codex:543046]
[codex:543046] # map pc to index
[codex:543046] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:543046] call_pcs=[pc for pc,name,_ in ops if name=='CALL']
[codex:543046] for pc in call_pcs:
[codex:543046] idx=pc_to_idx[pc]
[codex:543046] start=max(0,idx-15)
[codex:543046] end=min(len(ops),idx+10)
[codex:543046] print('--- CALL at pc',pc,'---')
[codex:543046] for i in range(start,end):
[codex:543046] p,n,d=ops[i]
[codex:543046] if d is None:
[codex:543046] print(f'{p:04x}: {n}')
[codex:543046] else:
[codex:543046] print(f'{p:04x}: {n} {d}')
[codex:543046]
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] --- CALL at pc 1259 ---
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046] 04e8: JUMPDEST
[codex:543046] 04e9: POP
[codex:543046] 04ea: GAS
[codex:543046] 04eb: CALL
[codex:543046] 04ec: ISZERO
[codex:543046] 04ed: DUP1
[codex:543046] 04ee: ISZERO
[codex:543046]
[codex:543046] thinking
[codex:543046] **Mapping CALL instructions to functions and access control**
[codex:543046]
[codex:543046] I’m inspecting the CALL instructions at various program counters to understand if any are user-controllable or lack access control. By mapping each CALL to its enclosing function via nearby JUMPDESTs and analyzing the dispatcher’s function selectors, I’ll check for owner restrictions or unprotected external calls that could pose vulnerabilities. This involves disassembling around function entries and parsing dispatcher jump addresses to confirm which functions require authorization before issuing CALLs.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # Quick parse: find pattern PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:543046] # We'll scan for opcodes 0x63 (PUSH4) etc.
[codex:543046]
[codex:543046] pc=0
[codex:543046] entries=[]
[codex:543046] # simple disasm
[codex:543046] while pc<len(bs):
[codex:543046] op=bs[pc]
[codex:543046] if op==0x63: # PUSH4
[codex:543046] sel=int.from_bytes(bs[pc+1:pc+5],'big')
[codex:543046] # check pattern: PUSH4 sel, ???, EQ, PUSH2 dest, JUMPI
[codex:543046] # Actually dispatcher: DUP1 PUSH4 sel EQ PUSH2 dest JUMPI. We'll just parse next bytes to find PUSH2 dest after EQ.
[codex:543046] # Let's just search forward 10 bytes for PUSH2.
[codex:543046] for off in range(5,20):
[codex:543046] if pc+off < len(bs) and bs[pc+off]==0x61: # PUSH2
[codex:543046] dest=int.from_bytes(bs[pc+off+1:pc+off+3],'big')
[codex:543046] # ensure JUMPI later
[codex:543046] # We will record and break
[codex:543046] entries.append((sel,dest,pc))
[codex:543046] break
[codex:543046] pc+=1
[codex:543046]
[codex:543046] # Remove duplicates by selector
[codex:543046] seen=set();
[codex:543046] unique=[]
[codex:543046] for sel,dest,pc in entries:
[codex:543046] if sel not in seen:
[codex:543046] seen.add(sel)
[codex:543046] unique.append((sel,dest))
[codex:543046]
[codex:543046] print('selectors:')
[codex:543046] for sel,dest in unique:
[codex:543046] print(hex(sel), hex(dest))
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 25ms:
[codex:543046] selectors:
[codex:543046] 0x96de31e0 0x64
[codex:543046] 0x99f5e5cb 0x187
[codex:543046] 0xade9b374 0x19a
[codex:543046] 0xc0ee0b8a 0x1c7
[codex:543046] 0xed3dae64 0x1e7
[codex:543046] 0xf50c1ed1 0x1fa
[codex:543046] 0x6c74e8d 0xb4
[codex:543046] 0xf032cbe 0xc7
[codex:543046] 0x10d1e85c 0xf2
[codex:543046] 0x709dd40e 0x112
[codex:543046] 0x74764850 0x127
[codex:543046] 0x8b418713 0x147
[codex:543046] 0xa67a6a45 0x4ce
[codex:543046] 0xe6a43905 0x631
[codex:543046] 0x70a08231 0x7e6
[codex:543046] 0xa9059cbb 0x9f3
[codex:543046] 0xffffffff 0xa60
[codex:543046] 0x2e1a7d4d 0xe81
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing function entries for access control**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names map for readability
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] entries=[0x00b4,0x00c7,0x00f2,0x0112,0x0127,0x0147,0x0167,0x0187,0x019a,0x01c7,0x01e7,0x01fa]
[codex:543046]
[codex:543046] def disasm_from(pc,count=30):
[codex:543046] i=0
[codex:543046] cur=pc
[codex:543046] res=[]
[codex:543046] while i<count and cur<len(bs):
[codex:543046] op=bs[cur]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[cur+1:cur+1+n]
[codex:543046] res.append(f'{cur:04x}: {name} {data.hex()}')
[codex:543046] cur+=1+n
[codex:543046] else:
[codex:543046] res.append(f'{cur:04x}: {name}')
[codex:543046] cur+=1
[codex:543046] i+=1
[codex:543046] return res
[codex:543046]
[codex:543046] for pc in entries:
[codex:543046] print(f'== function at {pc:04x} ==')
[codex:543046] print('\\n'.join(disasm_from(pc,25)))
[codex:543046] print()
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 30ms:
[codex:543046] == function at 00b4 ==
[codex:543046] 00b4: JUMPDEST
[codex:543046] 00b5: PUSH2 00b2
[codex:543046] 00b8: PUSH2 00c2
[codex:543046] 00bb: CALLDATASIZE
[codex:543046] 00bc: PUSH1 04
[codex:543046] 00be: PUSH2 168b
[codex:543046] 00c1: JUMP
[codex:543046] 00c2: JUMPDEST
[codex:543046] 00c3: PUSH2 020d
[codex:543046] 00c6: JUMP
[codex:543046] 00c7: JUMPDEST
[codex:543046] 00c8: CALLVALUE
[codex:543046] 00c9: DUP1
[codex:543046] 00ca: ISZERO
[codex:543046] 00cb: PUSH2 00d3
[codex:543046] 00ce: JUMPI
[codex:543046] 00cf: PUSH1 00
[codex:543046] 00d1: DUP1
[codex:543046] 00d2: REVERT
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing function selectors and callvalue checks**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] # disasm around 0x04c0-0x0505
[codex:543046] start=0x04b0; end=0x0508
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 26ms:
[codex:543046] 04b0: PUSH10 4b0c3659614e4e9063a6
[codex:543046] 04bb: PUSH27 6a45906104ce908490869060040161178f565b6000604051808303
[codex:543046] 04d7: DUP2
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046] 04e8: JUMPDEST
[codex:543046] 04e9: POP
[codex:543046] 04ea: GAS
[codex:543046] 04eb: CALL
[codex:543046] 04ec: ISZERO
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing disassembly starting points**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # list JUMPDESTs around 0x0400-0x0500
[codex:543046] for pc,b in enumerate(bs):
[codex:543046] if b==0x5b and 0x0400<=pc<=0x0500:
[codex:543046] print(hex(pc))
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 27ms:
[codex:543046] 0x41f
[codex:543046] 0x441
[codex:543046] 0x449
[codex:543046] 0x48a
[codex:543046] 0x4ce
[codex:543046] 0x4e8
[codex:543046] 0x4fc
[codex:543046]
[codex:543046] thinking
[codex:543046] **Examining code from 0x4ce to 0x4ff**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names map (short)
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x4ce; end=0x50a
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 26ms:
[codex:543046] 04ce: JUMPDEST
[codex:543046] 04cf: PUSH1 00
[codex:543046] 04d1: PUSH1 40
[codex:543046] 04d3: MLOAD
[codex:543046] 04d4: DUP1
[codex:543046] 04d5: DUP4
[codex:543046] 04d6: SUB
[codex:543046] 04d7: DUP2
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing CALL arguments and contract addresses**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map abbreviated
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x050d; end=0x06f0
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 25ms:
[codex:543046] 050d: JUMPDEST
[codex:543046] 050e: PUSH1 00
[codex:543046] 0510: CALLER
[codex:543046] 0511: PUSH1 01
[codex:543046] 0513: PUSH1 01
[codex:543046] 0515: PUSH1 a0
[codex:543046] 0517: SHL
[codex:543046] 0518: SUB
[codex:543046] 0519: AND
[codex:543046] 051a: PUSH4 0dfe1681
[codex:543046] 051f: PUSH1 40
[codex:543046] 0521: MLOAD
[codex:543046] 0522: DUP2
[codex:543046] 0523: PUSH4 ffffffff
[codex:543046] 0528: AND
[codex:543046] 0529: PUSH1 e0
[codex:543046] 052b: SHL
[codex:543046] 052c: DUP2
[codex:543046] 052d: MSTORE
[codex:543046] 052e: PUSH1 04
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing Uniswap V2 pair validation functions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x07b8; end=0x0846
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] 07b8: JUMPDEST
[codex:543046] 07b9: PUSH1 40
[codex:543046] 07bb: MLOAD
[codex:543046] 07bc: PUSH4 70a08231
[codex:543046] 07c1: PUSH1 e0
[codex:543046] 07c3: SHL
[codex:543046] 07c4: DUP2
[codex:543046] 07c5: MSTORE
[codex:543046] 07c6: DUP2
[codex:543046] 07c7: SWAP1
[codex:543046] 07c8: PUSH1 01
[codex:543046] 07ca: PUSH1 01
[codex:543046] 07cc: PUSH1 a0
[codex:543046] 07ce: SHL
[codex:543046] 07cf: SUB
[codex:543046] 07d0: DUP5
[codex:543046] 07d1: AND
[codex:543046] 07d2: SWAP1
[codex:543046] 07d3: PUSH4 70a08231
[codex:543046] 07d8: SWAP1
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing contract functions 0x07b8 and 0x0845**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x0845; end=0x0900
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 0845: JUMPDEST
[codex:543046] 0846: CALLER
[codex:543046] 0847: PUSH20 1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e
[codex:543046] 085c: EQ
[codex:543046] 085d: PUSH2 0878
[codex:543046] 0860: JUMPI
[codex:543046] 0861: PUSH1 40
[codex:543046] 0863: MLOAD
[codex:543046] 0864: PUSH3 461bcd
[codex:543046] 0868: PUSH1 e5
[codex:543046] 086a: SHL
[codex:543046] 086b: DUP2
[codex:543046] 086c: MSTORE
[codex:543046] 086d: PUSH1 04
[codex:543046] 086f: ADD
[codex:543046] 0870: PUSH2 06b1
[codex:543046] 0873: SWAP1
[codex:543046] 0874: PUSH2 196d
[codex:543046] 0877: JUMP
[codex:543046] 0878: JUMPDEST
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing function access restrictions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x0914; end=0x0993
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] 0914: JUMPDEST
[codex:543046] 0915: PUSH1 00
[codex:543046] 0917: SLOAD
[codex:543046] 0918: PUSH1 01
[codex:543046] 091a: PUSH1 01
[codex:543046] 091c: PUSH1 a0
[codex:543046] 091e: SHL
[codex:543046] 091f: SUB
[codex:543046] 0920: AND
[codex:543046] 0921: CALLER
[codex:543046] 0922: EQ
[codex:543046] 0923: PUSH2 093e
[codex:543046] 0926: JUMPI
[codex:543046] 0927: PUSH1 40
[codex:543046] 0929: MLOAD
[codex:543046] 092a: PUSH3 461bcd
[codex:543046] 092e: PUSH1 e5
[codex:543046] 0930: SHL
[codex:543046] 0931: DUP2
[codex:543046] 0932: MSTORE
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing owner-only functions and coinbase checks**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x0af3; end=0x0b30
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 0af3: JUMPDEST
[codex:543046] 0af4: PUSH1 00
[codex:543046] 0af6: SLOAD
[codex:543046] 0af7: PUSH1 01
[codex:543046] 0af9: PUSH1 01
[codex:543046] 0afb: PUSH1 a0
[codex:543046] 0afd: SHL
[codex:543046] 0afe: SUB
[codex:543046] 0aff: AND
[codex:543046] 0b00: CALLER
[codex:543046] 0b01: EQ
[codex:543046] 0b02: PUSH2 0b1d
[codex:543046] 0b05: JUMPI
[codex:543046] 0b06: PUSH1 40
[codex:543046] 0b08: MLOAD
[codex:543046] 0b09: PUSH3 461bcd
[codex:543046] 0b0d: PUSH1 e5
[codex:543046] 0b0f: SHL
[codex:543046] 0b10: DUP2
[codex:543046] 0b11: MSTORE
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing potential unprotected executor vulnerability**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] caller_pcs=[i for i,b in enumerate(bs) if b==0x33]
[codex:543046] print('CALLER pcs', [hex(pc) for pc in caller_pcs])
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] CALLER pcs ['0x12d', '0x510', '0x585', '0x68b', '0x6af', '0x76c', '0x78d', '0x846', '0x8d5', '0x921', '0x9a0', '0x9dc', '0xacd', '0xb00', '0x1925', '0x1b1a']
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing CALLER usage and contract interactions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] # search for selector 095ea7b3
[codex:543046] print('095ea7b3' in hexstr)
[codex:543046] # list occurrences of push4 095ea7b3
[codex:543046] for m in re.finditer('63'+'095ea7b3',hexstr):
[codex:543046] print('occ at',m.start()//2)
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] False
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing Uniswap V2 callback security**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x0675; end=0x0720
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 28ms:
[codex:543046] 0675: DUP2
[codex:543046] 0676: ADD
[codex:543046] 0677: SWAP1
[codex:543046] 0678: PUSH2 0681
[codex:543046] 067b: SWAP2
[codex:543046] 067c: SWAP1
[codex:543046] 067d: PUSH2 1280
[codex:543046] 0680: JUMP
[codex:543046] 0681: JUMPDEST
[codex:543046] 0682: PUSH1 01
[codex:543046] 0684: PUSH1 01
[codex:543046] 0686: PUSH1 a0
[codex:543046] 0688: SHL
[codex:543046] 0689: SUB
[codex:543046] 068a: AND
[codex:543046] 068b: CALLER
[codex:543046] 068c: PUSH1 01
[codex:543046] 068e: PUSH1 01
[codex:543046] 0690: PUSH1 a0
[codex:543046] 0692: SHL
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing contract function access and safety**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x00b0; end=0x00b8
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 00b0: JUMPI
[codex:543046] 00b1: STOP
[codex:543046] 00b2: JUMPDEST
[codex:543046] 00b3: STOP
[codex:543046] 00b4: JUMPDEST
[codex:543046] 00b5: PUSH2 00b2
[codex:543046]
[codex:543046] thinking
[codex:543046] **Tracing call arguments and external call**
[codex:543046]
[codex:543046] I'm examining the memory setup and function calls around 0x020d to understand parameters and whether an external call uses contract funds to send value to an attacker. To confirm this, I'm planning to disassemble the code from 0x041f to 0x04ce to reconstruct the CALL stack and verify the value argument passed, focusing on the external call’s security implications.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x041f; end=0x04cf
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] 041f: JUMPDEST
[codex:543046] 0420: PUSH1 20
[codex:543046] 0422: SWAP1
[codex:543046] 0423: DUP2
[codex:543046] 0424: MUL
[codex:543046] 0425: SWAP2
[codex:543046] 0426: SWAP1
[codex:543046] 0427: SWAP2
[codex:543046] 0428: ADD
[codex:543046] 0429: ADD
[codex:543046] 042a: MSTORE
[codex:543046] 042b: PUSH1 40
[codex:543046] 042d: DUP1
[codex:543046] 042e: MLOAD
[codex:543046] 042f: PUSH1 01
[codex:543046] 0431: DUP1
[codex:543046] 0432: DUP3
[codex:543046] 0433: MSTORE
[codex:543046] 0434: DUP2
[codex:543046] 0435: DUP4
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing external contract calls and value handling**
[codex:543046]
[codex:543046] I'm working through the call data preparation and stack setup for an external contract call, focusing on how value and calldata offsets are managed. It looks like this function doesn't forward ETH (`value` is zero), uses `address(this)` in calls possibly for security, and carefully sets call parameters. I'm also checking owner-only functions for safe ETH transfer logic and potential reentrancy risks, concluding no obvious exploits so far but want to verify related owner checks and call sequences around 0x0aba.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x0aba; end=0x0b1e
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 27ms:
[codex:543046] 0aba: JUMPDEST
[codex:543046] 0abb: POP
[codex:543046] 0abc: POP
[codex:543046] 0abd: POP
[codex:543046] 0abe: POP
[codex:543046] 0abf: JUMP
[codex:543046] 0ac0: JUMPDEST
[codex:543046] 0ac1: PUSH1 00
[codex:543046] 0ac3: SLOAD
[codex:543046] 0ac4: PUSH1 01
[codex:543046] 0ac6: PUSH1 01
[codex:543046] 0ac8: PUSH1 a0
[codex:543046] 0aca: SHL
[codex:543046] 0acb: SUB
[codex:543046] 0acc: AND
[codex:543046] 0acd: CALLER
[codex:543046] 0ace: EQ
[codex:543046] 0acf: PUSH2 0aea
[codex:543046] 0ad2: JUMPI
[codex:543046] 0ad3: PUSH1 40
[codex:543046]
[codex:543046] thinking
[codex:543046] **Analyzing function access and storage safety**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:543046] 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:543046] 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:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046]
[codex:543046] start=0x08f0; end=0x0920
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046] op=bs[pc]
[codex:543046] name=names.get(op,'UNKNOWN')
[codex:543046] if 0x60<=op<=0x7f:
[codex:543046] n=op-0x5f
[codex:543046] data=bs[pc+1:pc+1+n]
[codex:543046] print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046] pc+=1+n
[codex:543046] else:
[codex:543046] print(f'{pc:04x}: {name}')
[codex:543046] pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] 08f0: POP
[codex:543046] 08f1: JUMP
[codex:543046] 08f2: JUMPDEST
[codex:543046] 08f3: PUSH1 00
[codex:543046] 08f5: DUP1
[codex:543046] 08f6: SLOAD
[codex:543046] 08f7: PUSH1 01
[codex:543046] 08f9: PUSH1 01
[codex:543046] 08fb: PUSH1 a0
[codex:543046] 08fd: SHL
[codex:543046] 08fe: SUB
[codex:543046] 08ff: NOT
[codex:543046] 0900: AND
[codex:543046] 0901: PUSH1 01
[codex:543046] 0903: PUSH1 01
[codex:543046] 0905: PUSH1 a0
[codex:543046] 0907: SHL
[codex:543046] 0908: SUB
[codex:543046] 0909: SWAP3
[codex:543046] 090a: SWAP1
[codex:543046]
[codex:543046] thinking
[codex:543046] **Evaluating contract for exploits**
[codex:543046] codex
[codex:543046] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.","findings":[]}
[codex:543046] tokens used
[codex:543046] 91,060
[codex:543046] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T15:16:39.817206+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00ab 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x96de31e0 00000019: GT 0000001a: PUSH2 0x0064 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x96de31e0 00000024: EQ 00000025: PUSH2 0x0167 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0x99f5e5cb 0000002f: EQ 00000030: PUSH2 0x0187 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xade9b374 0000003a: EQ 0000003b: PUSH2 0x019a 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xc0ee0b8a 00000045: EQ 00000046: PUSH2 0x01c7 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xed3dae64 00000050: EQ 00000051: PUSH2 0x01e7 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf50c1ed1 0000005b: EQ 0000005c: PUSH2 0x01fa 0000005f: JUMPI 00000060: PUSH2 0x00b2 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x06c74e8d 0000006b: EQ 0000006c: PUSH2 0x00b4 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x0f032cbe 00000076: EQ 00000077: PUSH2 0x00c7 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x10d1e85c 00000081: EQ 00000082: PUSH2 0x00f2 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x709dd40e 0000008c: EQ 0000008d: PUSH2 0x0112 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x74764850 00000097: EQ 00000098: PUSH2 0x0127 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0x8b418713 000000a2: EQ 000000a3: PUSH2 0x0147 000000a6: JUMPI 000000a7: PUSH2 0x00b2 000000aa: JUMP 000000ab: JUMPDEST 000000ac: CALLDATASIZE 000000ad: PUSH2 0x00b2 000000b0: JUMPI 000000b1: STOP 000000b2: JUMPDEST 000000b3: STOP 000000b4: JUMPDEST 000000b5: PUSH2 0x00b2 000000b8: PUSH2 0x00c2 000000bb: CALLDATASIZE 000000bc: PUSH1 0x04 000000be: PUSH2 0x168b 000000c1: JUMP 000000c2: JUMPDEST 000000c3: PUSH2 0x020d 000000c6: JUMP 000000c7: JUMPDEST 000000c8: CALLVALUE 000000c9: DUP1 000000ca: ISZERO 000000cb: PUSH2 0x00d3 000000ce: JUMPI 000000cf: PUSH1 0x00 000000d1: DUP1 000000d2: REVERT 000000d3: JUMPDEST 000000d4: POP 000000d5: PUSH2 0x00dc 000000d8: PUSH2 0x0507 000000db: JUMP 000000dc: JUMPDEST 000000dd: PUSH1 0x40 000000df: MLOAD 000000e0: PUSH2 0x00e9 000000e3: SWAP2 000000e4: SWAP1 000000e5: PUSH2 0x19fe 000000e8: JUMP 000000e9: JUMPDEST 000000ea: PUSH1 0x40 000000ec: MLOAD 000000ed: DUP1 000000ee: SWAP2 000000ef: SUB 000000f0: SWAP1 000000f1: RETURN 000000f2: JUMPDEST 000000f3: CALLVALUE 000000f4: DUP1 000000f5: ISZERO 000000f6: PUSH2 0x00fe 000000f9: JUMPI 000000fa: PUSH1 0x00 000000fc: DUP1 000000fd: REVERT 000000fe: JUMPDEST 000000ff: POP 00000100: PUSH2 0x00b2 00000103: PUSH2 0x010d 00000106: CALLDATASIZE 00000107: PUSH1 0x04 00000109: PUSH2 0x13bf 0000010c: JUMP 0000010d: JUMPDEST 0000010e: PUSH2 0x050d 00000111: JUMP 00000112: JUMPDEST 00000113: CALLVALUE 00000114: DUP1 00000115: ISZERO 00000116: PUSH2 0x011e 00000119: JUMPI 0000011a: PUSH1 0x00 0000011c: DUP1 0000011d: REVERT 0000011e: JUMPDEST 0000011f: POP 00000120: PUSH2 0x00b2 00000123: PUSH2 0x075f 00000126: JUMP 00000127: JUMPDEST 00000128: CALLVALUE 00000129: DUP1 0000012a: ISZERO 0000012b: PUSH2 0x0133 0000012e: JUMPI 0000012f: PUSH1 0x00 00000131: DUP1 00000132: REVERT 00000133: JUMPDEST 00000134: POP 00000135: PUSH2 0x00b2 00000138: PUSH2 0x0142 0000013b: CALLDATASIZE 0000013c: PUSH1 0x04 0000013e: PUSH2 0x133b 00000141: JUMP 00000142: JUMPDEST 00000143: PUSH2 0x07b8 00000146: JUMP 00000147: JUMPDEST 00000148: CALLVALUE 00000149: DUP1 0000014a: ISZERO 0000014b: PUSH2 0x0153 0000014e: JUMPI 0000014f: PUSH1 0x00 00000151: DUP1 00000152: REVERT 00000153: JUMPDEST 00000154: POP 00000155: PUSH2 0x00b2 00000158: PUSH2 0x0162 0000015b: CALLDATASIZE 0000015c: PUSH1 0x04 0000015e: PUSH2 0x129c 00000161: JUMP 00000162: JUMPDEST 00000163: PUSH2 0x0845 00000166: JUMP 00000167: JUMPDEST 00000168: CALLVALUE 00000169: DUP1 0000016a: ISZERO 0000016b: PUSH2 0x0173 0000016e: JUMPI 0000016f: PUSH1 0x00 00000171: DUP1 00000172: REVERT 00000173: JUMPDEST 00000174: POP 00000175: PUSH2 0x00b2 00000178: PUSH2 0x0182 0000017b: CALLDATASIZE 0000017c: PUSH1 0x04 0000017e: PUSH2 0x125d 00000181: JUMP 00000182: JUMPDEST 00000183: PUSH2 0x08c8 00000186: JUMP 00000187: JUMPDEST 00000188: PUSH2 0x00b2 0000018b: PUSH2 0x0195 0000018e: CALLDATASIZE 0000018f: PUSH1 0x04 00000191: PUSH2 0x156d 00000194: JUMP 00000195: JUMPDEST 00000196: PUSH2 0x0914 00000199: JUMP 0000019a: JUMPDEST 0000019b: CALLVALUE 0000019c: DUP1 0000019d: ISZERO 0000019e: PUSH2 0x01a6 000001a1: JUMPI 000001a2: PUSH1 0x00 000001a4: DUP1 000001a5: REVERT 000001a6: JUMPDEST 000001a7: POP 000001a8: PUSH2 0x01ba 000001ab: PUSH2 0x01b5 000001ae: CALLDATASIZE 000001af: PUSH1 0x04 000001b1: PUSH2 0x125d 000001b4: JUMP 000001b5: JUMPDEST 000001b6: PUSH2 0x0992 000001b9: JUMP 000001ba: JUMPDEST 000001bb: PUSH1 0x40 000001bd: MLOAD 000001be: PUSH2 0x00e9 000001c1: SWAP2 000001c2: SWAP1 000001c3: PUSH2 0x18af 000001c6: JUMP 000001c7: JUMPDEST 000001c8: CALLVALUE 000001c9: DUP1 000001ca: ISZERO 000001cb: PUSH2 0x01d3 000001ce: JUMPI 000001cf: PUSH1 0x00 000001d1: DUP1 000001d2: REVERT 000001d3: JUMPDEST 000001d4: POP 000001d5: PUSH2 0x00b2 000001d8: PUSH2 0x01e2 000001db: CALLDATASIZE 000001dc: PUSH1 0x04 000001de: PUSH2 0x1366 000001e1: JUMP 000001e2: JUMPDEST 000001e3: PUSH2 0x0aba 000001e6: JUMP 000001e7: JUMPDEST 000001e8: PUSH2 0x00b2 000001eb: PUSH2 0x01f5 000001ee: CALLDATASIZE 000001ef: PUSH1 0x04 000001f1: PUSH2 0x1426 000001f4: JUMP 000001f5: JUMPDEST 000001f6: PUSH2 0x0ac0 000001f9: JUMP 000001fa: JUMPDEST 000001fb: PUSH2 0x00b2 000001fe: PUSH2 0x0208 00000201: CALLDATASIZE 00000202: PUSH1 0x04 00000204: PUSH2 0x1613 00000207: JUMP 00000208: JUMPDEST 00000209: PUSH2 0x0af3 0000020c: JUMP 0000020d: JUMPDEST 0000020e: PUSH1 0x40 00000210: DUP1 00000211: MLOAD 00000212: PUSH1 0x03 00000214: DUP1 00000215: DUP3 00000216: MSTORE 00000217: PUSH1 0x80 00000219: DUP3 0000021a: ADD 0000021b: SWAP1 0000021c: SWAP3 0000021d: MSTORE 0000021e: PUSH1 0x00 00000220: SWAP2 00000221: DUP2 00000222: PUSH1 0x20 00000224: ADD 00000225: JUMPDEST 00000226: PUSH2 0x022d 00000229: PUSH2 0x0fb0 0000022c: JUMP 0000022d: JUMPDEST 0000022e: DUP2 0000022f: MSTORE 00000230: PUSH1 0x20 00000232: ADD 00000233: SWAP1 00000234: PUSH1 0x01 00000236: SWAP1 00000237: SUB 00000238: SWAP1 00000239: DUP2 0000023a: PUSH2 0x0225 0000023d: JUMPI 0000023e: POP 0000023f: POP 00000240: PUSH1 0x40 00000242: DUP1 00000243: MLOAD 00000244: PUSH2 0x0100 00000247: DUP2 00000248: ADD 00000249: DUP3 0000024a: MSTORE 0000024b: PUSH1 0x01 0000024d: DUP2 0000024e: MSTORE 0000024f: PUSH1 0x00 00000251: PUSH1 0x20 00000253: DUP1 00000254: DUP4 00000255: ADD 00000256: DUP3 00000257: SWAP1 00000258: MSTORE 00000259: DUP4 0000025a: MLOAD 0000025b: PUSH1 0x80 0000025d: DUP2 0000025e: ADD 0000025f: DUP6 00000260: MSTORE 00000261: DUP3 00000262: DUP2 00000263: MSTORE 00000264: SWAP5 00000265: SWAP6 00000266: POP 00000267: SWAP2 00000268: SWAP4 00000269: SWAP3 0000026a: DUP5 0000026b: ADD 0000026c: SWAP3 0000026d: SWAP2 0000026e: DUP3 0000026f: ADD 00000270: SWAP1 00000271: DUP2 00000272: MSTORE 00000273: PUSH1 0x20 00000275: ADD 00000276: PUSH1 0x00 00000278: DUP2 00000279: MSTORE 0000027a: PUSH1 0x20 0000027c: ADD 0000027d: DUP8 0000027e: DUP2 0000027f: MSTORE 00000280: POP 00000281: DUP2 00000282: MSTORE 00000283: PUSH1 0x20 00000285: ADD 00000286: PUSH1 0x00 00000288: DUP2 00000289: MSTORE 0000028a: PUSH1 0x20 0000028c: ADD 0000028d: PUSH1 0x00 0000028f: DUP2 00000290: MSTORE 00000291: PUSH1 0x20 00000293: ADD 00000294: ADDRESS 00000295: PUSH1 0x01 00000297: PUSH1 0x01 00000299: PUSH1 0xa0 0000029b: SHL 0000029c: SUB 0000029d: AND 0000029e: DUP2 0000029f: MSTORE 000002a0: PUSH1 0x20 000002a2: ADD 000002a3: PUSH1 0x00 000002a5: DUP2 000002a6: MSTORE 000002a7: PUSH1 0x20 000002a9: ADD 000002aa: PUSH1 0x40 000002ac: MLOAD 000002ad: DUP1 000002ae: PUSH1 0x20 000002b0: ADD 000002b1: PUSH1 0x40 000002b3: MSTORE 000002b4: DUP1 000002b5: PUSH1 0x00 000002b7: DUP2 000002b8: MSTORE 000002b9: POP 000002ba: DUP2 000002bb: MSTORE 000002bc: POP 000002bd: DUP2 000002be: PUSH1 0x00 000002c0: DUP2 000002c1: MLOAD 000002c2: DUP2 000002c3: LT 000002c4: PUSH2 0x02c9 000002c7: JUMPI 000002c8: INVALID 000002c9: JUMPDEST 000002ca: PUSH1 0x20 000002cc: SWAP1 000002cd: DUP2 000002ce: MUL 000002cf: SWAP2 000002d0: SWAP1 000002d1: SWAP2 000002d2: ADD 000002d3: ADD 000002d4: MSTORE 000002d5: PUSH1 0x40 000002d7: DUP1 000002d8: MLOAD 000002d9: PUSH2 0x0100 000002dc: DUP2 000002dd: ADD 000002de: SWAP1 000002df: SWAP2 000002e0: MSTORE 000002e1: DUP1 000002e2: PUSH1 0x08 000002e4: DUP2 000002e5: MSTORE 000002e6: PUSH1 0x20 000002e8: ADD 000002e9: PUSH1 0x00 000002eb: DUP2 000002ec: MSTORE 000002ed: PUSH1 0x20 000002ef: ADD 000002f0: PUSH1 0x40 000002f2: MLOAD 000002f3: DUP1 000002f4: PUSH1 0x80 000002f6: ADD 000002f7: PUSH1 0x40 000002f9: MSTORE 000002fa: DUP1 000002fb: PUSH1 0x00 000002fd: ISZERO 000002fe: ISZERO 000002ff: DUP2 00000300: MSTORE 00000301: PUSH1 0x20 00000303: ADD 00000304: PUSH1 0x00 00000306: PUSH1 0x01 00000308: DUP2 00000309: GT 0000030a: ISZERO 0000030b: PUSH2 0x0310 0000030e: JUMPI 0000030f: INVALID 00000310: JUMPDEST 00000311: DUP2 00000312: MSTORE 00000313: PUSH1 0x20 00000315: ADD 00000316: PUSH1 0x00 00000318: DUP2 00000319: MSTORE 0000031a: PUSH1 0x20 0000031c: ADD 0000031d: PUSH1 0x00 0000031f: DUP2 00000320: MSTORE 00000321: POP 00000322: DUP2 00000323: MSTORE 00000324: PUSH1 0x20 00000326: ADD 00000327: PUSH1 0x00 00000329: DUP2 0000032a: MSTORE 0000032b: PUSH1 0x20 0000032d: ADD 0000032e: PUSH1 0x00 00000330: DUP2 00000331: MSTORE 00000332: PUSH1 0x20 00000334: ADD 00000335: ADDRESS 00000336: PUSH1 0x01 00000338: PUSH1 0x01 0000033a: PUSH1 0xa0 0000033c: SHL 0000033d: SUB 0000033e: AND 0000033f: DUP2 00000340: MSTORE 00000341: PUSH1 0x20 00000343: ADD 00000344: PUSH1 0x00 00000346: DUP2 00000347: MSTORE 00000348: PUSH1 0x20 0000034a: ADD 0000034b: DUP5 0000034c: DUP5 0000034d: PUSH1 0x40 0000034f: MLOAD 00000350: PUSH1 0x20 00000352: ADD 00000353: PUSH2 0x035d 00000356: SWAP3 00000357: SWAP2 00000358: SWAP1 00000359: PUSH2 0x18ba 0000035c: JUMP 0000035d: JUMPDEST 0000035e: PUSH1 0x40 00000360: MLOAD 00000361: PUSH1 0x20 00000363: DUP2 00000364: DUP4 00000365: SUB 00000366: SUB 00000367: DUP2 00000368: MSTORE 00000369: SWAP1 0000036a: PUSH1 0x40 0000036c: MSTORE 0000036d: DUP2 0000036e: MSTORE 0000036f: POP 00000370: DUP2 00000371: PUSH1 0x01 00000373: DUP2 00000374: MLOAD 00000375: DUP2 00000376: LT 00000377: PUSH2 0x037c 0000037a: JUMPI 0000037b: INVALID 0000037c: JUMPDEST 0000037d: PUSH1 0x20 0000037f: SWAP1 00000380: DUP2 00000381: MUL 00000382: SWAP2 00000383: SWAP1 00000384: SWAP2 00000385: ADD 00000386: ADD 00000387: MSTORE 00000388: PUSH1 0x40 0000038a: DUP1 0000038b: MLOAD 0000038c: PUSH2 0x0100 0000038f: DUP2 00000390: ADD 00000391: SWAP1 00000392: SWAP2 00000393: MSTORE 00000394: DUP1 00000395: PUSH1 0x00 00000397: DUP2 00000398: MSTORE 00000399: PUSH1 0x20 0000039b: ADD 0000039c: PUSH1 0x00 0000039e: DUP2 0000039f: MSTORE 000003a0: PUSH1 0x20 000003a2: ADD 000003a3: PUSH1 0x40 000003a5: MLOAD 000003a6: DUP1 000003a7: PUSH1 0x80 000003a9: ADD 000003aa: PUSH1 0x40 000003ac: MSTORE 000003ad: DUP1 000003ae: PUSH1 0x01 000003b0: ISZERO 000003b1: ISZERO 000003b2: DUP2 000003b3: MSTORE 000003b4: PUSH1 0x20 000003b6: ADD 000003b7: PUSH1 0x00 000003b9: PUSH1 0x01 000003bb: DUP2 000003bc: GT 000003bd: ISZERO 000003be: PUSH2 0x03c3 000003c1: JUMPI 000003c2: INVALID 000003c3: JUMPDEST 000003c4: DUP2 000003c5: MSTORE 000003c6: PUSH1 0x20 000003c8: ADD 000003c9: PUSH1 0x00 000003cb: DUP2 000003cc: MSTORE 000003cd: PUSH1 0x20 000003cf: ADD 000003d0: DUP8 000003d1: PUSH1 0x02 000003d3: ADD 000003d4: DUP2 000003d5: MSTORE 000003d6: POP 000003d7: DUP2 000003d8: MSTORE 000003d9: PUSH1 0x20 000003db: ADD 000003dc: PUSH1 0x00 000003de: DUP2 000003df: MSTORE 000003e0: PUSH1 0x20 000003e2: ADD 000003e3: PUSH1 0x00 000003e5: DUP2 000003e6: MSTORE 000003e7: PUSH1 0x20 000003e9: ADD 000003ea: ADDRESS 000003eb: PUSH1 0x01 000003ed: PUSH1 0x01 000003ef: PUSH1 0xa0 000003f1: SHL 000003f2: SUB 000003f3: AND 000003f4: DUP2 000003f5: MSTORE 000003f6: PUSH1 0x20 000003f8: ADD 000003f9: PUSH1 0x00 000003fb: DUP2 000003fc: MSTORE 000003fd: PUSH1 0x20 000003ff: ADD 00000400: PUSH1 0x40 00000402: MLOAD 00000403: DUP1 00000404: PUSH1 0x20 00000406: ADD 00000407: PUSH1 0x40 00000409: MSTORE 0000040a: DUP1 0000040b: PUSH1 0x00 0000040d: DUP2 0000040e: MSTORE 0000040f: POP 00000410: DUP2 00000411: MSTORE 00000412: POP 00000413: DUP2 00000414: PUSH1 0x02 00000416: DUP2 00000417: MLOAD 00000418: DUP2 00000419: LT 0000041a: PUSH2 0x041f 0000041d: JUMPI 0000041e: INVALID 0000041f: JUMPDEST 00000420: PUSH1 0x20 00000422: SWAP1 00000423: DUP2 00000424: MUL 00000425: SWAP2 00000426: SWAP1 00000427: SWAP2 00000428: ADD 00000429: ADD 0000042a: MSTORE 0000042b: PUSH1 0x40 0000042d: DUP1 0000042e: MLOAD 0000042f: PUSH1 0x01 00000431: DUP1 00000432: DUP3 00000433: MSTORE 00000434: DUP2 00000435: DUP4 00000436: ADD 00000437: SWAP1 00000438: SWAP3 00000439: MSTORE 0000043a: PUSH1 0x00 0000043c: SWAP2 0000043d: DUP2 0000043e: PUSH1 0x20 00000440: ADD 00000441: JUMPDEST 00000442: PUSH2 0x0449 00000445: PUSH2 0x1002 00000448: JUMP 00000449: JUMPDEST 0000044a: DUP2 0000044b: MSTORE 0000044c: PUSH1 0x20 0000044e: ADD 0000044f: SWAP1 00000450: PUSH1 0x01 00000452: SWAP1 00000453: SUB 00000454: SWAP1 00000455: DUP2 00000456: PUSH2 0x0441 00000459: JUMPI 0000045a: SWAP1 0000045b: POP 0000045c: POP 0000045d: SWAP1 0000045e: POP 0000045f: PUSH1 0x40 00000461: MLOAD 00000462: DUP1 00000463: PUSH1 0x40 00000465: ADD 00000466: PUSH1 0x40 00000468: MSTORE 00000469: DUP1 0000046a: ADDRESS 0000046b: PUSH1 0x01 0000046d: PUSH1 0x01 0000046f: PUSH1 0xa0 00000471: SHL 00000472: SUB 00000473: AND 00000474: DUP2 00000475: MSTORE 00000476: PUSH1 0x20 00000478: ADD 00000479: PUSH1 0x01 0000047b: DUP2 0000047c: MSTORE 0000047d: POP 0000047e: DUP2 0000047f: PUSH1 0x00 00000481: DUP2 00000482: MLOAD 00000483: DUP2 00000484: LT 00000485: PUSH2 0x048a 00000488: JUMPI 00000489: INVALID 0000048a: JUMPDEST 0000048b: PUSH1 0x20 0000048d: SWAP1 0000048e: DUP2 0000048f: MUL 00000490: SWAP2 00000491: SWAP1 00000492: SWAP2 00000493: ADD 00000494: ADD 00000495: MSTORE 00000496: PUSH1 0x40 00000498: MLOAD 00000499: PUSH4 0xa67a6a45 0000049e: PUSH1 0xe0 000004a0: SHL 000004a1: DUP2 000004a2: MSTORE 000004a3: PUSH20 0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e 000004b8: SWAP1 000004b9: PUSH4 0xa67a6a45 000004be: SWAP1 000004bf: PUSH2 0x04ce 000004c2: SWAP1 000004c3: DUP5 000004c4: SWAP1 000004c5: DUP7 000004c6: SWAP1 000004c7: PUSH1 0x04 000004c9: ADD 000004ca: PUSH2 0x178f 000004cd: JUMP 000004ce: JUMPDEST 000004cf: PUSH1 0x00 000004d1: PUSH1 0x40 000004d3: MLOAD 000004d4: DUP1 000004d5: DUP4 000004d6: SUB 000004d7: DUP2 000004d8: PUSH1 0x00 000004da: DUP8 000004db: DUP1 000004dc: EXTCODESIZE 000004dd: ISZERO 000004de: DUP1 000004df: ISZERO 000004e0: PUSH2 0x04e8 000004e3: JUMPI 000004e4: PUSH1 0x00 000004e6: DUP1 000004e7: REVERT 000004e8: JUMPDEST 000004e9: POP 000004ea: GAS 000004eb: CALL 000004ec: ISZERO 000004ed: DUP1 000004ee: ISZERO 000004ef: PUSH2 0x04fc 000004f2: JUMPI 000004f3: RETURNDATASIZE 000004f4: PUSH1 0x00 000004f6: DUP1 000004f7: RETURNDATACOPY 000004f8: RETURNDATASIZE 000004f9: PUSH1 0x00 000004fb: REVERT 000004fc: JUMPDEST 000004fd: POP 000004fe: POP 000004ff: POP 00000500: POP 00000501: POP 00000502: POP 00000503: POP 00000504: POP 00000505: POP 00000506: JUMP 00000507: JUMPDEST 00000508: PUSH1 0x00 0000050a: NOT 0000050b: DUP2 0000050c: JUMP 0000050d: JUMPDEST 0000050e: PUSH1 0x00 00000510: CALLER 00000511: PUSH1 0x01 00000513: PUSH1 0x01 00000515: PUSH1 0xa0 00000517: SHL 00000518: SUB 00000519: AND 0000051a: PUSH4 0x0dfe1681 0000051f: PUSH1 0x40 00000521: MLOAD 00000522: DUP2 00000523: PUSH4 0xffffffff 00000528: AND 00000529: PUSH1 0xe0 0000052b: SHL 0000052c: DUP2 0000052d: MSTORE 0000052e: PUSH1 0x04 00000530: ADD 00000531: PUSH1 0x20 00000533: PUSH1 0x40 00000535: MLOAD 00000536: DUP1 00000537: DUP4 00000538: SUB 00000539: DUP2 0000053a: DUP7 0000053b: DUP1 0000053c: EXTCODESIZE 0000053d: ISZERO 0000053e: DUP1 0000053f: ISZERO 00000540: PUSH2 0x0548 00000543: JUMPI 00000544: PUSH1 0x00 00000546: DUP1 00000547: REVERT 00000548: JUMPDEST 00000549: POP 0000054a: GAS 0000054b: STATICCALL 0000054c: ISZERO 0000054d: DUP1 0000054e: ISZERO 0000054f: PUSH2 0x055c 00000552: JUMPI 00000553: RETURNDATASIZE 00000554: PUSH1 0x00 00000556: DUP1 00000557: RETURNDATACOPY 00000558: RETURNDATASIZE 00000559: PUSH1 0x00 0000055b: REVERT 0000055c: JUMPDEST 0000055d: POP 0000055e: POP 0000055f: POP 00000560: POP 00000561: PUSH1 0x40 00000563: MLOAD 00000564: RETURNDATASIZE 00000565: PUSH1 0x1f 00000567: NOT 00000568: PUSH1 0x1f 0000056a: DUP3 0000056b: ADD 0000056c: AND 0000056d: DUP3 0000056e: ADD 0000056f: DUP1 00000570: PUSH1 0x40 00000572: MSTORE 00000573: POP 00000574: DUP2 00000575: ADD 00000576: SWAP1 00000577: PUSH2 0x0580 0000057a: SWAP2 0000057b: SWAP1 0000057c: PUSH2 0x1280 0000057f: JUMP 00000580: JUMPDEST 00000581: SWAP1 00000582: POP 00000583: PUSH1 0x00 00000585: CALLER 00000586: PUSH1 0x01 00000588: PUSH1 0x01 0000058a: PUSH1 0xa0 0000058c: SHL 0000058d: SUB 0000058e: AND 0000058f: PUSH4 0xd21220a7 00000594: PUSH1 0x40 00000596: MLOAD 00000597: DUP2 00000598: PUSH4 0xffffffff 0000059d: AND 0000059e: PUSH1 0xe0 000005a0: SHL 000005a1: DUP2 000005a2: MSTORE 000005a3: PUSH1 0x04 000005a5: ADD 000005a6: PUSH1 0x20 000005a8: PUSH1 0x40 000005aa: MLOAD 000005ab: DUP1 000005ac: DUP4 000005ad: SUB 000005ae: DUP2 000005af: DUP7 000005b0: DUP1 000005b1: EXTCODESIZE 000005b2: ISZERO 000005b3: DUP1 000005b4: ISZERO 000005b5: PUSH2 0x05bd 000005b8: JUMPI 000005b9: PUSH1 0x00 000005bb: DUP1 000005bc: REVERT 000005bd: JUMPDEST 000005be: POP 000005bf: GAS 000005c0: STATICCALL 000005c1: ISZERO 000005c2: DUP1 000005c3: ISZERO 000005c4: PUSH2 0x05d1 000005c7: JUMPI 000005c8: RETURNDATASIZE 000005c9: PUSH1 0x00 000005cb: DUP1 000005cc: RETURNDATACOPY 000005cd: RETURNDATASIZE 000005ce: PUSH1 0x00 000005d0: REVERT 000005d1: JUMPDEST 000005d2: POP 000005d3: POP 000005d4: POP 000005d5: POP 000005d6: PUSH1 0x40 000005d8: MLOAD 000005d9: RETURNDATASIZE 000005da: PUSH1 0x1f 000005dc: NOT 000005dd: PUSH1 0x1f 000005df: DUP3 000005e0: ADD 000005e1: AND 000005e2: DUP3 000005e3: ADD 000005e4: DUP1 000005e5: PUSH1 0x40 000005e7: MSTORE 000005e8: POP 000005e9: DUP2 000005ea: ADD 000005eb: SWAP1 000005ec: PUSH2 0x05f5 000005ef: SWAP2 000005f0: SWAP1 000005f1: PUSH2 0x1280 000005f4: JUMP 000005f5: JUMPDEST 000005f6: PUSH1 0x40 000005f8: MLOAD 000005f9: PUSH4 0xe6a43905 000005fe: PUSH1 0xe0 00000600: SHL 00000601: DUP2 00000602: MSTORE 00000603: SWAP1 00000604: SWAP2 00000605: POP 00000606: PUSH20 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f 0000061b: SWAP1 0000061c: PUSH4 0xe6a43905 00000621: SWAP1 00000622: PUSH2 0x0631 00000625: SWAP1 00000626: DUP6 00000627: SWAP1 00000628: DUP6 00000629: SWAP1 0000062a: PUSH1 0x04 0000062c: ADD 0000062d: PUSH2 0x1775 00000630: JUMP 00000631: JUMPDEST 00000632: PUSH1 0x20 00000634: PUSH1 0x40 00000636: MLOAD 00000637: DUP1 00000638: DUP4 00000639: SUB 0000063a: DUP2 0000063b: DUP7 0000063c: DUP1 0000063d: EXTCODESIZE 0000063e: ISZERO 0000063f: DUP1 00000640: ISZERO 00000641: PUSH2 0x0649 00000644: JUMPI 00000645: PUSH1 0x00 00000647: DUP1 00000648: REVERT 00000649: JUMPDEST 0000064a: POP 0000064b: GAS 0000064c: STATICCALL 0000064d: ISZERO 0000064e: DUP1 0000064f: ISZERO 00000650: PUSH2 0x065d 00000653: JUMPI 00000654: RETURNDATASIZE 00000655: PUSH1 0x00 00000657: DUP1 00000658: RETURNDATACOPY 00000659: RETURNDATASIZE 0000065a: PUSH1 0x00 0000065c: REVERT 0000065d: JUMPDEST 0000065e: POP 0000065f: POP 00000660: POP 00000661: POP 00000662: PUSH1 0x40 00000664: MLOAD 00000665: RETURNDATASIZE 00000666: PUSH1 0x1f 00000668: NOT 00000669: PUSH1 0x1f 0000066b: DUP3 0000066c: ADD 0000066d: AND 0000066e: DUP3 0000066f: ADD 00000670: DUP1 00000671: PUSH1 0x40 00000673: MSTORE 00000674: POP 00000675: DUP2 00000676: ADD 00000677: SWAP1 00000678: PUSH2 0x0681 0000067b: SWAP2 0000067c: SWAP1 0000067d: PUSH2 0x1280 00000680: JUMP 00000681: JUMPDEST 00000682: PUSH1 0x01 00000684: PUSH1 0x01 00000686: PUSH1 0xa0 00000688: SHL 00000689: SUB 0000068a: AND 0000068b: CALLER 0000068c: PUSH1 0x01 0000068e: PUSH1 0x01 00000690: PUSH1 0xa0 00000692: SHL 00000693: SUB 00000694: AND 00000695: EQ 00000696: PUSH2 0x06ba 00000699: JUMPI 0000069a: PUSH1 0x40 0000069c: MLOAD 0000069d: PUSH3 0x461bcd 000006a1: PUSH1 0xe5 000006a3: SHL 000006a4: DUP2 000006a5: MSTORE 000006a6: PUSH1 0x04 000006a8: ADD 000006a9: PUSH2 0x06b1 000006ac: SWAP1 000006ad: PUSH2 0x1933 000006b0: JUMP 000006b1: JUMPDEST 000006b2: PUSH1 0x40 000006b4: MLOAD 000006b5: DUP1 000006b6: SWAP2 000006b7: SUB 000006b8: SWAP1 000006b9: REVERT 000006ba: JUMPDEST 000006bb: PUSH1 0x01 000006bd: PUSH1 0x01 000006bf: PUSH1 0xa0 000006c1: SHL 000006c2: SUB 000006c3: DUP8 000006c4: AND 000006c5: ADDRESS 000006c6: EQ 000006c7: PUSH2 0x06e2 000006ca: JUMPI 000006cb: PUSH1 0x40 000006cd: MLOAD 000006ce: PUSH3 0x461bcd 000006d2: PUSH1 0xe5 000006d4: SHL 000006d5: DUP2 000006d6: MSTORE 000006d7: PUSH1 0x04 000006d9: ADD 000006da: PUSH2 0x06b1 000006dd: SWAP1 000006de: PUSH2 0x19e1 000006e1: JUMP 000006e2: JUMPDEST 000006e3: PUSH1 0x00 000006e5: DUP1 000006e6: DUP1 000006e7: PUSH2 0x06f2 000006ea: DUP7 000006eb: DUP9 000006ec: ADD 000006ed: DUP9 000006ee: PUSH2 0x15bc 000006f1: JUMP 000006f2: JUMPDEST 000006f3: SWAP3 000006f4: POP 000006f5: SWAP3 000006f6: POP 000006f7: SWAP3 000006f8: POP 000006f9: DUP1 000006fa: PUSH1 0x00 000006fc: EQ 000006fd: PUSH2 0x0749 00000700: JUMPI 00000701: DUP2 00000702: ISZERO 00000703: PUSH2 0x072a 00000706: JUMPI 00000707: DUP1 00000708: DUP10 00000709: GT 0000070a: PUSH2 0x0725 0000070d: JUMPI 0000070e: PUSH1 0x40 00000710: MLOAD 00000711: PUSH3 0x461bcd 00000715: PUSH1 0xe5 00000717: SHL 00000718: DUP2 00000719: MSTORE 0000071a: PUSH1 0x04 0000071c: ADD 0000071d: PUSH2 0x06b1 00000720: SWAP1 00000721: PUSH2 0x1916 00000724: JUMP 00000725: JUMPDEST 00000726: PUSH2 0x0749 00000729: JUMP 0000072a: JUMPDEST 0000072b: DUP1 0000072c: DUP9 0000072d: GT 0000072e: PUSH2 0x0749 00000731: JUMPI 00000732: PUSH1 0x40 00000734: MLOAD 00000735: PUSH3 0x461bcd 00000739: PUSH1 0xe5 0000073b: SHL 0000073c: DUP2 0000073d: MSTORE 0000073e: PUSH1 0x04 00000740: ADD 00000741: PUSH2 0x06b1 00000744: SWAP1 00000745: PUSH2 0x19c4 00000748: JUMP 00000749: JUMPDEST 0000074a: PUSH2 0x0752 0000074d: DUP4 0000074e: PUSH2 0x0b45 00000751: JUMP 00000752: JUMPDEST 00000753: POP 00000754: POP 00000755: POP 00000756: POP 00000757: POP 00000758: POP 00000759: POP 0000075a: POP 0000075b: POP 0000075c: POP 0000075d: POP 0000075e: JUMP 0000075f: JUMPDEST 00000760: PUSH1 0x00 00000762: SLOAD 00000763: PUSH1 0x01 00000765: PUSH1 0x01 00000767: PUSH1 0xa0 00000769: SHL 0000076a: SUB 0000076b: AND 0000076c: CALLER 0000076d: EQ 0000076e: PUSH2 0x0789 00000771: JUMPI 00000772: PUSH1 0x40 00000774: MLOAD 00000775: PUSH3 0x461bcd 00000779: PUSH1 0xe5 0000077b: SHL 0000077c: DUP2 0000077d: MSTORE 0000077e: PUSH1 0x04 00000780: ADD 00000781: PUSH2 0x06b1 00000784: SWAP1 00000785: PUSH2 0x1950 00000788: JUMP 00000789: JUMPDEST 0000078a: PUSH1 0x40 0000078c: MLOAD 0000078d: CALLER 0000078e: SWAP1 0000078f: SELFBALANCE 00000790: DUP1 00000791: ISZERO 00000792: PUSH2 0x08fc 00000795: MUL 00000796: SWAP2 00000797: PUSH1 0x00 00000799: DUP2 0000079a: DUP2 0000079b: DUP2 0000079c: DUP6 0000079d: DUP9 0000079e: DUP9 0000079f: CALL 000007a0: SWAP4 000007a1: POP 000007a2: POP 000007a3: POP 000007a4: POP 000007a5: ISZERO 000007a6: DUP1 000007a7: ISZERO 000007a8: PUSH2 0x07b5 000007ab: JUMPI 000007ac: RETURNDATASIZE 000007ad: PUSH1 0x00 000007af: DUP1 000007b0: RETURNDATACOPY 000007b1: RETURNDATASIZE 000007b2: PUSH1 0x00 000007b4: REVERT 000007b5: JUMPDEST 000007b6: POP 000007b7: JUMP 000007b8: JUMPDEST 000007b9: PUSH1 0x40 000007bb: MLOAD 000007bc: PUSH4 0x70a08231 000007c1: PUSH1 0xe0 000007c3: SHL 000007c4: DUP2 000007c5: MSTORE 000007c6: DUP2 000007c7: SWAP1 000007c8: PUSH1 0x01 000007ca: PUSH1 0x01 000007cc: PUSH1 0xa0 000007ce: SHL 000007cf: SUB 000007d0: DUP5 000007d1: AND 000007d2: SWAP1 000007d3: PUSH4 0x70a08231 000007d8: SWAP1 000007d9: PUSH2 0x07e6 000007dc: SWAP1 000007dd: ADDRESS 000007de: SWAP1 000007df: PUSH1 0x04 000007e1: ADD 000007e2: PUSH2 0x1748 000007e5: JUMP 000007e6: JUMPDEST 000007e7: PUSH1 0x20 000007e9: PUSH1 0x40 000007eb: MLOAD 000007ec: DUP1 000007ed: DUP4 000007ee: SUB 000007ef: DUP2 000007f0: DUP7 000007f1: DUP1 000007f2: EXTCODESIZE 000007f3: ISZERO 000007f4: DUP1 000007f5: ISZERO 000007f6: PUSH2 0x07fe 000007f9: JUMPI 000007fa: PUSH1 0x00 000007fc: DUP1 000007fd: REVERT 000007fe: JUMPDEST 000007ff: POP 00000800: GAS 00000801: STATICCALL 00000802: ISZERO 00000803: DUP1 00000804: ISZERO 00000805: PUSH2 0x0812 00000808: JUMPI 00000809: RETURNDATASIZE 0000080a: PUSH1 0x00 0000080c: DUP1 0000080d: RETURNDATACOPY 0000080e: RETURNDATASIZE 0000080f: PUSH1 0x00 00000811: REVERT 00000812: JUMPDEST 00000813: POP 00000814: POP 00000815: POP 00000816: POP 00000817: PUSH1 0x40 00000819: MLOAD 0000081a: RETURNDATASIZE 0000081b: PUSH1 0x1f 0000081d: NOT 0000081e: PUSH1 0x1f 00000820: DUP3 00000821: ADD 00000822: AND 00000823: DUP3 00000824: ADD 00000825: DUP1 00000826: PUSH1 0x40 00000828: MSTORE 00000829: POP 0000082a: DUP2 0000082b: ADD 0000082c: SWAP1 0000082d: PUSH2 0x0836 00000830: SWAP2 00000831: SWAP1 00000832: PUSH2 0x1673 00000835: JUMP 00000836: JUMPDEST 00000837: LT 00000838: ISZERO 00000839: PUSH2 0x0841 0000083c: JUMPI 0000083d: PUSH1 0x00 0000083f: DUP1 00000840: REVERT 00000841: JUMPDEST 00000842: POP 00000843: POP 00000844: JUMP 00000845: JUMPDEST 00000846: CALLER 00000847: PUSH20 0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e 0000085c: EQ 0000085d: PUSH2 0x0878 00000860: JUMPI 00000861: PUSH1 0x40 00000863: MLOAD 00000864: PUSH3 0x461bcd 00000868: PUSH1 0xe5 0000086a: SHL 0000086b: DUP2 0000086c: MSTORE 0000086d: PUSH1 0x04 0000086f: ADD 00000870: PUSH2 0x06b1 00000873: SWAP1 00000874: PUSH2 0x196d 00000877: JUMP 00000878: JUMPDEST 00000879: PUSH1 0x01 0000087b: PUSH1 0x01 0000087d: PUSH1 0xa0 0000087f: SHL 00000880: SUB 00000881: DUP4 00000882: AND 00000883: ADDRESS 00000884: EQ 00000885: PUSH2 0x08a0 00000888: JUMPI 00000889: PUSH1 0x40 0000088b: MLOAD 0000088c: PUSH3 0x461bcd 00000890: PUSH1 0xe5 00000892: SHL 00000893: DUP2 00000894: MSTORE 00000895: PUSH1 0x04 00000897: ADD 00000898: PUSH2 0x06b1 0000089b: SWAP1 0000089c: PUSH2 0x19e1 0000089f: JUMP 000008a0: JUMPDEST 000008a1: PUSH1 0x00 000008a3: DUP2 000008a4: DUP1 000008a5: PUSH1 0x20 000008a7: ADD 000008a8: SWAP1 000008a9: MLOAD 000008aa: DUP2 000008ab: ADD 000008ac: SWAP1 000008ad: PUSH2 0x08b6 000008b0: SWAP2 000008b1: SWAP1 000008b2: PUSH2 0x1458 000008b5: JUMP 000008b6: JUMPDEST 000008b7: SWAP1 000008b8: POP 000008b9: PUSH2 0x08c1 000008bc: DUP2 000008bd: PUSH2 0x0b45 000008c0: JUMP 000008c1: JUMPDEST 000008c2: POP 000008c3: POP 000008c4: POP 000008c5: POP 000008c6: POP 000008c7: JUMP 000008c8: JUMPDEST 000008c9: PUSH1 0x00 000008cb: SLOAD 000008cc: PUSH1 0x01 000008ce: PUSH1 0x01 000008d0: PUSH1 0xa0 000008d2: SHL 000008d3: SUB 000008d4: AND 000008d5: CALLER 000008d6: EQ 000008d7: PUSH2 0x08f2 000008da: JUMPI 000008db: PUSH1 0x40 000008dd: MLOAD 000008de: PUSH3 0x461bcd 000008e2: PUSH1 0xe5 000008e4: SHL 000008e5: DUP2 000008e6: MSTORE 000008e7: PUSH1 0x04 000008e9: ADD 000008ea: PUSH2 0x06b1 000008ed: SWAP1 000008ee: PUSH2 0x1950 000008f1: JUMP 000008f2: JUMPDEST 000008f3: PUSH1 0x00 000008f5: DUP1 000008f6: SLOAD 000008f7: PUSH1 0x01 000008f9: PUSH1 0x01 000008fb: PUSH1 0xa0 000008fd: SHL 000008fe: SUB 000008ff: NOT 00000900: AND 00000901: PUSH1 0x01 00000903: PUSH1 0x01 00000905: PUSH1 0xa0 00000907: SHL 00000908: SUB 00000909: SWAP3 0000090a: SWAP1 0000090b: SWAP3 0000090c: AND 0000090d: SWAP2 0000090e: SWAP1 0000090f: SWAP2 00000910: OR 00000911: SWAP1 00000912: SSTORE 00000913: JUMP 00000914: JUMPDEST 00000915: PUSH1 0x00 00000917: SLOAD 00000918: PUSH1 0x01 0000091a: PUSH1 0x01 0000091c: PUSH1 0xa0 0000091e: SHL 0000091f: SUB 00000920: AND 00000921: CALLER 00000922: EQ 00000923: PUSH2 0x093e 00000926: JUMPI 00000927: PUSH1 0x40 00000929: MLOAD 0000092a: PUSH3 0x461bcd 0000092e: PUSH1 0xe5 00000930: SHL 00000931: DUP2 00000932: MSTORE 00000933: PUSH1 0x04 00000935: ADD 00000936: PUSH2 0x06b1 00000939: SWAP1 0000093a: PUSH2 0x1950 0000093d: JUMP 0000093e: JUMPDEST 0000093f: COINBASE 00000940: PUSH1 0x01 00000942: PUSH1 0x01 00000944: PUSH1 0xa0 00000946: SHL 00000947: SUB 00000948: DUP3 00000949: AND 0000094a: EQ 0000094b: ISZERO 0000094c: PUSH2 0x0967 0000094f: JUMPI 00000950: PUSH1 0x40 00000952: MLOAD 00000953: PUSH3 0x461bcd 00000957: PUSH1 0xe5 00000959: SHL 0000095a: DUP2 0000095b: MSTORE 0000095c: PUSH1 0x04 0000095e: ADD 0000095f: PUSH2 0x06b1 00000962: SWAP1 00000963: PUSH2 0x198a 00000966: JUMP 00000967: JUMPDEST 00000968: COINBASE 00000969: PUSH2 0x0984 0000096c: JUMPI 0000096d: PUSH1 0x40 0000096f: MLOAD 00000970: PUSH3 0x461bcd 00000974: PUSH1 0xe5 00000976: SHL 00000977: DUP2 00000978: MSTORE 00000979: PUSH1 0x04 0000097b: ADD 0000097c: PUSH2 0x06b1 0000097f: SWAP1 00000980: PUSH2 0x19a7 00000983: JUMP 00000984: JUMPDEST 00000985: PUSH2 0x098d 00000988: DUP3 00000989: PUSH2 0x0b45 0000098c: JUMP 0000098d: JUMPDEST 0000098e: POP 0000098f: POP 00000990: POP 00000991: JUMP 00000992: JUMPDEST 00000993: PUSH1 0x00 00000995: DUP1 00000996: SLOAD 00000997: PUSH1 0x01 00000999: PUSH1 0x01 0000099b: PUSH1 0xa0 0000099d: SHL 0000099e: SUB 0000099f: AND 000009a0: CALLER 000009a1: EQ 000009a2: PUSH2 0x09bd 000009a5: JUMPI 000009a6: PUSH1 0x40 000009a8: MLOAD 000009a9: PUSH3 0x461bcd 000009ad: PUSH1 0xe5 000009af: SHL 000009b0: DUP2 000009b1: MSTORE 000009b2: PUSH1 0x04 000009b4: ADD 000009b5: PUSH2 0x06b1 000009b8: SWAP1 000009b9: PUSH2 0x1950 000009bc: JUMP 000009bd: JUMPDEST 000009be: PUSH1 0x40 000009c0: MLOAD 000009c1: PUSH4 0x70a08231 000009c6: PUSH1 0xe0 000009c8: SHL 000009c9: DUP2 000009ca: MSTORE 000009cb: PUSH1 0x01 000009cd: PUSH1 0x01 000009cf: PUSH1 0xa0 000009d1: SHL 000009d2: SUB 000009d3: DUP4 000009d4: AND 000009d5: SWAP1 000009d6: PUSH4 0xa9059cbb 000009db: SWAP1 000009dc: CALLER 000009dd: SWAP1 000009de: DUP4 000009df: SWAP1 000009e0: PUSH4 0x70a08231 000009e5: SWAP1 000009e6: PUSH2 0x09f3 000009e9: SWAP1 000009ea: ADDRESS 000009eb: SWAP1 000009ec: PUSH1 0x04 000009ee: ADD 000009ef: PUSH2 0x1748 000009f2: JUMP 000009f3: JUMPDEST 000009f4: PUSH1 0x20 000009f6: PUSH1 0x40 000009f8: MLOAD 000009f9: DUP1 000009fa: DUP4 000009fb: SUB 000009fc: DUP2 000009fd: DUP7 000009fe: DUP1 000009ff: EXTCODESIZE 00000a00: ISZERO 00000a01: DUP1 00000a02: ISZERO 00000a03: PUSH2 0x0a0b 00000a06: JUMPI 00000a07: PUSH1 0x00 00000a09: DUP1 00000a0a: REVERT 00000a0b: JUMPDEST 00000a0c: POP 00000a0d: GAS 00000a0e: STATICCALL 00000a0f: ISZERO 00000a10: DUP1 00000a11: ISZERO 00000a12: PUSH2 0x0a1f 00000a15: JUMPI 00000a16: RETURNDATASIZE 00000a17: PUSH1 0x00 00000a19: DUP1 00000a1a: RETURNDATACOPY 00000a1b: RETURNDATASIZE 00000a1c: PUSH1 0x00 00000a1e: REVERT 00000a1f: JUMPDEST 00000a20: POP 00000a21: POP 00000a22: POP 00000a23: POP 00000a24: PUSH1 0x40 00000a26: MLOAD 00000a27: RETURNDATASIZE 00000a28: PUSH1 0x1f 00000a2a: NOT 00000a2b: PUSH1 0x1f 00000a2d: DUP3 00000a2e: ADD 00000a2f: AND 00000a30: DUP3 00000a31: ADD 00000a32: DUP1 00000a33: PUSH1 0x40 00000a35: MSTORE 00000a36: POP 00000a37: DUP2 00000a38: ADD 00000a39: SWAP1 00000a3a: PUSH2 0x0a43 00000a3d: SWAP2 00000a3e: SWAP1 00000a3f: PUSH2 0x1673 00000a42: JUMP 00000a43: JUMPDEST 00000a44: PUSH1 0x40 00000a46: MLOAD 00000a47: DUP4 00000a48: PUSH4 0xffffffff 00000a4d: AND 00000a4e: PUSH1 0xe0 00000a50: SHL 00000a51: DUP2 00000a52: MSTORE 00000a53: PUSH1 0x04 00000a55: ADD 00000a56: PUSH2 0x0a60 00000a59: SWAP3 00000a5a: SWAP2 00000a5b: SWAP1 00000a5c: PUSH2 0x175c 00000a5f: JUMP 00000a60: JUMPDEST 00000a61: PUSH1 0x20 00000a63: PUSH1 0x40 00000a65: MLOAD 00000a66: DUP1 00000a67: DUP4 00000a68: SUB 00000a69: DUP2 00000a6a: PUSH1 0x00 00000a6c: DUP8 00000a6d: DUP1 00000a6e: EXTCODESIZE 00000a6f: ISZERO 00000a70: DUP1 00000a71: ISZERO 00000a72: PUSH2 0x0a7a 00000a75: JUMPI 00000a76: PUSH1 0x00 00000a78: DUP1 00000a79: REVERT 00000a7a: JUMPDEST 00000a7b: POP 00000a7c: GAS 00000a7d: CALL 00000a7e: ISZERO 00000a7f: DUP1 00000a80: ISZERO 00000a81: PUSH2 0x0a8e 00000a84: JUMPI 00000a85: RETURNDATASIZE 00000a86: PUSH1 0x00 00000a88: DUP1 00000a89: RETURNDATACOPY 00000a8a: RETURNDATASIZE 00000a8b: PUSH1 0x00 00000a8d: REVERT 00000a8e: JUMPDEST 00000a8f: POP 00000a90: POP 00000a91: POP 00000a92: POP 00000a93: PUSH1 0x40 00000a95: MLOAD 00000a96: RETURNDATASIZE 00000a97: PUSH1 0x1f 00000a99: NOT 00000a9a: PUSH1 0x1f 00000a9c: DUP3 00000a9d: ADD 00000a9e: AND 00000a9f: DUP3 00000aa0: ADD 00000aa1: DUP1 00000aa2: PUSH1 0x40 00000aa4: MSTORE 00000aa5: POP 00000aa6: DUP2 00000aa7: ADD 00000aa8: SWAP1 00000aa9: PUSH2 0x0ab2 00000aac: SWAP2 00000aad: SWAP1 00000aae: PUSH2 0x1657 00000ab1: JUMP 00000ab2: JUMPDEST 00000ab3: SWAP1 00000ab4: POP 00000ab5: JUMPDEST 00000ab6: SWAP2 00000ab7: SWAP1 00000ab8: POP 00000ab9: JUMP 00000aba: JUMPDEST 00000abb: POP 00000abc: POP 00000abd: POP 00000abe: POP 00000abf: JUMP 00000ac0: JUMPDEST 00000ac1: PUSH1 0x00 00000ac3: SLOAD 00000ac4: PUSH1 0x01 00000ac6: PUSH1 0x01 00000ac8: PUSH1 0xa0 00000aca: SHL 00000acb: SUB 00000acc: AND 00000acd: CALLER 00000ace: EQ 00000acf: PUSH2 0x0aea 00000ad2: JUMPI 00000ad3: PUSH1 0x40 00000ad5: MLOAD 00000ad6: PUSH3 0x461bcd 00000ada: PUSH1 0xe5 00000adc: SHL 00000add: DUP2 00000ade: MSTORE 00000adf: PUSH1 0x04 00000ae1: ADD 00000ae2: PUSH2 0x06b1 00000ae5: SWAP1 00000ae6: PUSH2 0x1950 00000ae9: JUMP 00000aea: JUMPDEST 00000aeb: PUSH2 0x0841 00000aee: DUP2 00000aef: PUSH2 0x0b45 00000af2: JUMP 00000af3: JUMPDEST 00000af4: PUSH1 0x00 00000af6: SLOAD 00000af7: PUSH1 0x01 00000af9: PUSH1 0x01 00000afb: PUSH1 0xa0 00000afd: SHL 00000afe: SUB 00000aff: AND 00000b00: CALLER 00000b01: EQ 00000b02: PUSH2 0x0b1d 00000b05: JUMPI 00000b06: PUSH1 0x40 00000b08: MLOAD 00000b09: PUSH3 0x461bcd 00000b0d: PUSH1 0xe5 00000b0f: SHL 00000b10: DUP2 00000b11: MSTORE 00000b12: PUSH1 0x04 00000b14: ADD 00000b15: PUSH2 0x06b1 00000b18: SWAP1 00000b19: PUSH2 0x1950 00000b1c: JUMP 00000b1d: JUMPDEST 00000b1e: DUP1 00000b1f: PUSH1 0x01 00000b21: PUSH1 0x01 00000b23: PUSH1 0x80 00000b25: SHL 00000b26: SUB 00000b27: AND 00000b28: NUMBER 00000b29: EQ 00000b2a: PUSH2 0x0967 00000b2d: JUMPI 00000b2e: PUSH1 0x40 00000b30: MLOAD 00000b31: PUSH3 0x461bcd 00000b35: PUSH1 0xe5 00000b37: SHL 00000b38: DUP2 00000b39: MSTORE 00000b3a: PUSH1 0x04 00000b3c: ADD 00000b3d: PUSH2 0x06b1 00000b40: SWAP1 00000b41: PUSH2 0x18f9 00000b44: JUMP 00000b45: JUMPDEST 00000b46: PUSH1 0x00 00000b48: DUP1 00000b49: JUMPDEST 00000b4a: DUP3 00000b4b: MLOAD 00000b4c: DUP2 00000b4d: LT 00000b4e: ISZERO 00000b4f: PUSH2 0x0faa 00000b52: JUMPI 00000b53: PUSH1 0x00 00000b55: DUP4 00000b56: DUP3 00000b57: DUP2 00000b58: MLOAD 00000b59: DUP2 00000b5a: LT 00000b5b: PUSH2 0x0b60 00000b5e: JUMPI 00000b5f: INVALID 00000b60: JUMPDEST 00000b61: PUSH1 0x20 00000b63: MUL 00000b64: PUSH1 0x20 00000b66: ADD 00000b67: ADD 00000b68: MLOAD 00000b69: PUSH1 0x00 00000b6b: ADD 00000b6c: MLOAD 00000b6d: SWAP1 00000b6e: POP 00000b6f: PUSH1 0x00 00000b71: DUP5 00000b72: DUP4 00000b73: DUP2 00000b74: MLOAD 00000b75: DUP2 00000b76: LT 00000b77: PUSH2 0x0b7c 00000b7a: JUMPI 00000b7b: INVALID 00000b7c: JUMPDEST 00000b7d: PUSH1 0x20 00000b7f: MUL 00000b80: PUSH1 0x20 00000b82: ADD 00000b83: ADD 00000b84: MLOAD 00000b85: PUSH1 0x40 00000b87: ADD 00000b88: MLOAD 00000b89: PUSH1 0x01 00000b8b: PUSH1 0x01 00000b8d: PUSH1 0x80 00000b8f: SHL 00000b90: SUB 00000b91: AND 00000b92: SWAP1 00000b93: POP 00000b94: PUSH1 0x03 00000b96: DUP3 00000b97: PUSH1 0xff 00000b99: AND 00000b9a: SWAP1 00000b9b: SHR 00000b9c: PUSH1 0x01 00000b9e: AND 00000b9f: PUSH1 0xff 00000ba1: AND 00000ba2: PUSH1 0x01 00000ba4: EQ 00000ba5: ISZERO 00000ba6: PUSH2 0x0c16 00000ba9: JUMPI 00000baa: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000bbf: PUSH1 0x01 00000bc1: PUSH1 0x01 00000bc3: PUSH1 0xa0 00000bc5: SHL 00000bc6: SUB 00000bc7: AND 00000bc8: PUSH4 0xd0e30db0 00000bcd: DUP3 00000bce: PUSH1 0x40 00000bd0: MLOAD 00000bd1: DUP3 00000bd2: PUSH4 0xffffffff 00000bd7: AND 00000bd8: PUSH1 0xe0 00000bda: SHL 00000bdb: DUP2 00000bdc: MSTORE 00000bdd: PUSH1 0x04 00000bdf: ADD 00000be0: PUSH1 0x00 00000be2: PUSH1 0x40 00000be4: MLOAD 00000be5: DUP1 00000be6: DUP4 00000be7: SUB 00000be8: DUP2 00000be9: DUP6 00000bea: DUP9 00000beb: DUP1 00000bec: EXTCODESIZE 00000bed: ISZERO 00000bee: DUP1 00000bef: ISZERO 00000bf0: PUSH2 0x0bf8 00000bf3: JUMPI 00000bf4: PUSH1 0x00 00000bf6: DUP1 00000bf7: REVERT 00000bf8: JUMPDEST 00000bf9: POP 00000bfa: GAS 00000bfb: CALL 00000bfc: ISZERO 00000bfd: DUP1 00000bfe: ISZERO 00000bff: PUSH2 0x0c0c 00000c02: JUMPI 00000c03: RETURNDATASIZE 00000c04: PUSH1 0x00 00000c06: DUP1 00000c07: RETURNDATACOPY 00000c08: RETURNDATASIZE 00000c09: PUSH1 0x00 00000c0b: REVERT 00000c0c: JUMPDEST 00000c0d: POP 00000c0e: POP 00000c0f: POP 00000c10: POP 00000c11: POP 00000c12: PUSH1 0x00 00000c14: SWAP1 00000c15: POP 00000c16: JUMPDEST 00000c17: PUSH1 0x01 00000c19: PUSH1 0x04 00000c1b: DUP4 00000c1c: SWAP1 00000c1d: SHR 00000c1e: DUP2 00000c1f: AND 00000c20: EQ 00000c21: ISZERO 00000c22: PUSH2 0x0c29 00000c25: JUMPI 00000c26: POP 00000c27: PUSH1 0x00 00000c29: JUMPDEST 00000c2a: PUSH1 0x00 00000c2c: DUP6 00000c2d: DUP5 00000c2e: DUP2 00000c2f: MLOAD 00000c30: DUP2 00000c31: LT 00000c32: PUSH2 0x0c37 00000c35: JUMPI 00000c36: INVALID 00000c37: JUMPDEST 00000c38: PUSH1 0x20 00000c3a: MUL 00000c3b: PUSH1 0x20 00000c3d: ADD 00000c3e: ADD 00000c3f: MLOAD 00000c40: PUSH1 0x20 00000c42: ADD 00000c43: MLOAD 00000c44: SWAP1 00000c45: POP 00000c46: PUSH1 0x00 00000c48: DUP7 00000c49: DUP6 00000c4a: DUP2 00000c4b: MLOAD 00000c4c: DUP2 00000c4d: LT 00000c4e: PUSH2 0x0c53 00000c51: JUMPI 00000c52: INVALID 00000c53: JUMPDEST 00000c54: PUSH1 0x20 00000c56: MUL 00000c57: PUSH1 0x20 00000c59: ADD 00000c5a: ADD 00000c5b: MLOAD 00000c5c: PUSH1 0x80 00000c5e: ADD 00000c5f: MLOAD 00000c60: SWAP1 00000c61: POP 00000c62: PUSH1 0x00 00000c64: GAS 00000c65: SWAP1 00000c66: POP 00000c67: PUSH1 0x01 00000c69: PUSH1 0x01 00000c6b: PUSH1 0x01 00000c6d: PUSH1 0xa0 00000c6f: SHL 00000c70: SUB 00000c71: DUP5 00000c72: AND 00000c73: ISZERO 00000c74: PUSH2 0x0c87 00000c77: JUMPI 00000c78: PUSH1 0x00 00000c7a: DUP1 00000c7b: DUP5 00000c7c: MLOAD 00000c7d: PUSH1 0x20 00000c7f: DUP7 00000c80: ADD 00000c81: DUP9 00000c82: DUP9 00000c83: DUP8 00000c84: CALL 00000c85: SWAP1 00000c86: POP 00000c87: JUMPDEST 00000c88: PUSH1 0x01 00000c8a: DUP1 00000c8b: DUP8 00000c8c: AND 00000c8d: EQ 00000c8e: ISZERO 00000c8f: PUSH2 0x0cb5 00000c92: JUMPI 00000c93: DUP1 00000c94: PUSH1 0xff 00000c96: AND 00000c97: PUSH1 0x01 00000c99: EQ 00000c9a: PUSH2 0x0cb5 00000c9d: JUMPI 00000c9e: PUSH1 0x40 00000ca0: MLOAD 00000ca1: PUSH3 0x461bcd 00000ca5: PUSH1 0xe5 00000ca7: SHL 00000ca8: DUP2 00000ca9: MSTORE 00000caa: PUSH1 0x04 00000cac: ADD 00000cad: PUSH2 0x06b1 00000cb0: SWAP1 00000cb1: PUSH2 0x18dc 00000cb4: JUMP 00000cb5: JUMPDEST 00000cb6: DUP1 00000cb7: PUSH1 0xff 00000cb9: AND 00000cba: PUSH1 0x01 00000cbc: EQ 00000cbd: PUSH2 0x0ce8 00000cc0: JUMPI 00000cc1: PUSH1 0xff 00000cc3: DUP9 00000cc4: AND 00000cc5: PUSH2 0x0ccf 00000cc8: JUMPI 00000cc9: DUP7 00000cca: PUSH1 0x0a 00000ccc: ADD 00000ccd: SWAP8 00000cce: POP 00000ccf: JUMPDEST 00000cd0: PUSH1 0x01 00000cd2: DUP7 00000cd3: DUP2 00000cd4: SHR 00000cd5: DUP2 00000cd6: AND 00000cd7: EQ 00000cd8: ISZERO 00000cd9: PUSH2 0x0ce8 00000cdc: JUMPI 00000cdd: POP 00000cde: POP 00000cdf: POP 00000ce0: POP 00000ce1: POP 00000ce2: POP 00000ce3: POP 00000ce4: PUSH2 0x0ab5 00000ce7: JUMP 00000ce8: JUMPDEST 00000ce9: PUSH1 0x01 00000ceb: PUSH1 0x04 00000ced: DUP8 00000cee: SWAP1 00000cef: SHR 00000cf0: DUP2 00000cf1: AND 00000cf2: EQ 00000cf3: ISZERO 00000cf4: PUSH2 0x0eb5 00000cf7: JUMPI 00000cf8: PUSH1 0x00 00000cfa: DUP10 00000cfb: DUP9 00000cfc: DUP2 00000cfd: MLOAD 00000cfe: DUP2 00000cff: LT 00000d00: PUSH2 0x0d05 00000d03: JUMPI 00000d04: INVALID 00000d05: JUMPDEST 00000d06: PUSH1 0x20 00000d08: MUL 00000d09: PUSH1 0x20 00000d0b: ADD 00000d0c: ADD 00000d0d: MLOAD 00000d0e: PUSH1 0x40 00000d10: ADD 00000d11: MLOAD 00000d12: PUSH1 0x01 00000d14: PUSH1 0x01 00000d16: PUSH1 0x80 00000d18: SHL 00000d19: SUB 00000d1a: AND 00000d1b: SWAP1 00000d1c: POP 00000d1d: DUP1 00000d1e: PUSH1 0x00 00000d20: EQ 00000d21: ISZERO 00000d22: PUSH2 0x0db3 00000d25: JUMPI 00000d26: PUSH1 0x40 00000d28: MLOAD 00000d29: PUSH4 0x70a08231 00000d2e: PUSH1 0xe0 00000d30: SHL 00000d31: DUP2 00000d32: MSTORE 00000d33: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000d48: SWAP1 00000d49: PUSH4 0x70a08231 00000d4e: SWAP1 00000d4f: PUSH2 0x0d5c 00000d52: SWAP1 00000d53: ADDRESS 00000d54: SWAP1 00000d55: PUSH1 0x04 00000d57: ADD 00000d58: PUSH2 0x1748 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: PUSH1 0x20 00000d5f: PUSH1 0x40 00000d61: MLOAD 00000d62: DUP1 00000d63: DUP4 00000d64: SUB 00000d65: DUP2 00000d66: DUP7 00000d67: DUP1 00000d68: EXTCODESIZE 00000d69: ISZERO 00000d6a: DUP1 00000d6b: ISZERO 00000d6c: PUSH2 0x0d74 00000d6f: JUMPI 00000d70: PUSH1 0x00 00000d72: DUP1 00000d73: REVERT 00000d74: JUMPDEST 00000d75: POP 00000d76: GAS 00000d77: STATICCALL 00000d78: ISZERO 00000d79: DUP1 00000d7a: ISZERO 00000d7b: PUSH2 0x0d88 00000d7e: JUMPI 00000d7f: RETURNDATASIZE 00000d80: PUSH1 0x00 00000d82: DUP1 00000d83: RETURNDATACOPY 00000d84: RETURNDATASIZE 00000d85: PUSH1 0x00 00000d87: REVERT 00000d88: JUMPDEST 00000d89: POP 00000d8a: POP 00000d8b: POP 00000d8c: POP 00000d8d: PUSH1 0x40 00000d8f: MLOAD 00000d90: RETURNDATASIZE 00000d91: PUSH1 0x1f 00000d93: NOT 00000d94: PUSH1 0x1f 00000d96: DUP3 00000d97: ADD 00000d98: AND 00000d99: DUP3 00000d9a: ADD 00000d9b: DUP1 00000d9c: PUSH1 0x40 00000d9e: MSTORE 00000d9f: POP 00000da0: DUP2 00000da1: ADD 00000da2: SWAP1 00000da3: PUSH2 0x0dac 00000da6: SWAP2 00000da7: SWAP1 00000da8: PUSH2 0x1673 00000dab: JUMP 00000dac: JUMPDEST 00000dad: SWAP1 00000dae: POP 00000daf: PUSH2 0x0e4a 00000db2: JUMP 00000db3: JUMPDEST 00000db4: DUP1 00000db5: PUSH1 0x01 00000db7: EQ 00000db8: ISZERO 00000db9: PUSH2 0x0e4a 00000dbc: JUMPI 00000dbd: PUSH1 0x40 00000dbf: MLOAD 00000dc0: PUSH4 0x70a08231 00000dc5: PUSH1 0xe0 00000dc7: SHL 00000dc8: DUP2 00000dc9: MSTORE 00000dca: PUSH1 0x02 00000dcc: SWAP1 00000dcd: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000de2: SWAP1 00000de3: PUSH4 0x70a08231 00000de8: SWAP1 00000de9: PUSH2 0x0df6 00000dec: SWAP1 00000ded: ADDRESS 00000dee: SWAP1 00000def: PUSH1 0x04 00000df1: ADD 00000df2: PUSH2 0x1748 00000df5: JUMP 00000df6: JUMPDEST 00000df7: PUSH1 0x20 00000df9: PUSH1 0x40 00000dfb: MLOAD 00000dfc: DUP1 00000dfd: DUP4 00000dfe: SUB 00000dff: DUP2 00000e00: DUP7 00000e01: DUP1 00000e02: EXTCODESIZE 00000e03: ISZERO 00000e04: DUP1 00000e05: ISZERO 00000e06: PUSH2 0x0e0e 00000e09: JUMPI 00000e0a: PUSH1 0x00 00000e0c: DUP1 00000e0d: REVERT 00000e0e: JUMPDEST 00000e0f: POP 00000e10: GAS 00000e11: STATICCALL 00000e12: ISZERO 00000e13: DUP1 00000e14: ISZERO 00000e15: PUSH2 0x0e22 00000e18: JUMPI 00000e19: RETURNDATASIZE 00000e1a: PUSH1 0x00 00000e1c: DUP1 00000e1d: RETURNDATACOPY 00000e1e: RETURNDATASIZE 00000e1f: PUSH1 0x00 00000e21: REVERT 00000e22: JUMPDEST 00000e23: POP 00000e24: POP 00000e25: POP 00000e26: POP 00000e27: PUSH1 0x40 00000e29: MLOAD 00000e2a: RETURNDATASIZE 00000e2b: PUSH1 0x1f 00000e2d: NOT 00000e2e: PUSH1 0x1f 00000e30: DUP3 00000e31: ADD 00000e32: AND 00000e33: DUP3 00000e34: ADD 00000e35: DUP1 00000e36: PUSH1 0x40 00000e38: MSTORE 00000e39: POP 00000e3a: DUP2 00000e3b: ADD 00000e3c: SWAP1 00000e3d: PUSH2 0x0e46 00000e40: SWAP2 00000e41: SWAP1 00000e42: PUSH2 0x1673 00000e45: JUMP 00000e46: JUMPDEST 00000e47: SUB 00000e48: SWAP1 00000e49: POP 00000e4a: JUMPDEST 00000e4b: PUSH1 0x40 00000e4d: MLOAD 00000e4e: PUSH4 0x2e1a7d4d 00000e53: PUSH1 0xe0 00000e55: SHL 00000e56: DUP2 00000e57: MSTORE 00000e58: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000e6d: SWAP1 00000e6e: PUSH4 0x2e1a7d4d 00000e73: SWAP1 00000e74: PUSH2 0x0e81 00000e77: SWAP1 00000e78: DUP5 00000e79: SWAP1 00000e7a: PUSH1 0x04 00000e7c: ADD 00000e7d: PUSH2 0x19fe 00000e80: JUMP 00000e81: JUMPDEST 00000e82: PUSH1 0x00 00000e84: PUSH1 0x40 00000e86: MLOAD 00000e87: DUP1 00000e88: DUP4 00000e89: SUB 00000e8a: DUP2 00000e8b: PUSH1 0x00 00000e8d: DUP8 00000e8e: DUP1 00000e8f: EXTCODESIZE 00000e90: ISZERO 00000e91: DUP1 00000e92: ISZERO 00000e93: PUSH2 0x0e9b 00000e96: JUMPI 00000e97: PUSH1 0x00 00000e99: DUP1 00000e9a: REVERT 00000e9b: JUMPDEST 00000e9c: POP 00000e9d: GAS 00000e9e: CALL 00000e9f: ISZERO 00000ea0: DUP1 00000ea1: ISZERO 00000ea2: PUSH2 0x0eaf 00000ea5: JUMPI 00000ea6: RETURNDATASIZE 00000ea7: PUSH1 0x00 00000ea9: DUP1 00000eaa: RETURNDATACOPY 00000eab: RETURNDATASIZE 00000eac: PUSH1 0x00 00000eae: REVERT 00000eaf: JUMPDEST 00000eb0: POP 00000eb1: POP 00000eb2: POP 00000eb3: POP 00000eb4: POP 00000eb5: JUMPDEST 00000eb6: PUSH1 0x00 00000eb8: DUP10 00000eb9: DUP9 00000eba: DUP2 00000ebb: MLOAD 00000ebc: DUP2 00000ebd: LT 00000ebe: PUSH2 0x0ec3 00000ec1: JUMPI 00000ec2: INVALID 00000ec3: JUMPDEST 00000ec4: PUSH1 0x20 00000ec6: MUL 00000ec7: PUSH1 0x20 00000ec9: ADD 00000eca: ADD 00000ecb: MLOAD 00000ecc: PUSH1 0x60 00000ece: ADD 00000ecf: MLOAD 00000ed0: PUSH1 0x01 00000ed2: PUSH1 0x01 00000ed4: PUSH1 0x80 00000ed6: SHL 00000ed7: SUB 00000ed8: AND 00000ed9: SWAP1 00000eda: POP 00000edb: DUP1 00000edc: PUSH1 0x00 00000ede: EQ 00000edf: PUSH2 0x0f97 00000ee2: JUMPI 00000ee3: PUSH1 0x01 00000ee5: PUSH1 0x02 00000ee7: DUP9 00000ee8: SWAP1 00000ee9: SHR 00000eea: DUP2 00000eeb: AND 00000eec: EQ 00000eed: ISZERO 00000eee: PUSH2 0x0f8b 00000ef1: JUMPI 00000ef2: PUSH1 0x40 00000ef4: MLOAD 00000ef5: PUSH4 0x70a08231 00000efa: PUSH1 0xe0 00000efc: SHL 00000efd: DUP2 00000efe: MSTORE 00000eff: DUP2 00000f00: SWAP1 00000f01: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000f16: SWAP1 00000f17: PUSH4 0x70a08231 00000f1c: SWAP1 00000f1d: PUSH2 0x0f2a 00000f20: SWAP1 00000f21: ADDRESS 00000f22: SWAP1 00000f23: PUSH1 0x04 00000f25: ADD 00000f26: PUSH2 0x1748 00000f29: JUMP 00000f2a: JUMPDEST 00000f2b: PUSH1 0x20 00000f2d: PUSH1 0x40 00000f2f: MLOAD 00000f30: DUP1 00000f31: DUP4 00000f32: SUB 00000f33: DUP2 00000f34: DUP7 00000f35: DUP1 00000f36: EXTCODESIZE 00000f37: ISZERO 00000f38: DUP1 00000f39: ISZERO 00000f3a: PUSH2 0x0f42 00000f3d: JUMPI 00000f3e: PUSH1 0x00 00000f40: DUP1 00000f41: REVERT 00000f42: JUMPDEST 00000f43: POP 00000f44: GAS 00000f45: STATICCALL 00000f46: ISZERO 00000f47: DUP1 00000f48: ISZERO 00000f49: PUSH2 0x0f56 00000f4c: JUMPI 00000f4d: RETURNDATASIZE 00000f4e: PUSH1 0x00 00000f50: DUP1 00000f51: RETURNDATACOPY 00000f52: RETURNDATASIZE 00000f53: PUSH1 0x00 00000f55: REVERT 00000f56: JUMPDEST 00000f57: POP 00000f58: POP 00000f59: POP 00000f5a: POP 00000f5b: PUSH1 0x40 00000f5d: MLOAD 00000f5e: RETURNDATASIZE 00000f5f: PUSH1 0x1f 00000f61: NOT 00000f62: PUSH1 0x1f 00000f64: DUP3 00000f65: ADD 00000f66: AND 00000f67: DUP3 00000f68: ADD 00000f69: DUP1 00000f6a: PUSH1 0x40 00000f6c: MSTORE 00000f6d: POP 00000f6e: DUP2 00000f6f: ADD 00000f70: SWAP1 00000f71: PUSH2 0x0f7a 00000f74: SWAP2 00000f75: SWAP1 00000f76: PUSH2 0x1673 00000f79: JUMP 00000f7a: JUMPDEST 00000f7b: SELFBALANCE 00000f7c: ADD 00000f7d: GT 00000f7e: PUSH2 0x0f86 00000f81: JUMPI 00000f82: PUSH1 0x00 00000f84: DUP1 00000f85: REVERT 00000f86: JUMPDEST 00000f87: PUSH2 0x0f97 00000f8a: JUMP 00000f8b: JUMPDEST 00000f8c: DUP1 00000f8d: SELFBALANCE 00000f8e: GT 00000f8f: PUSH2 0x0f97 00000f92: JUMPI 00000f93: PUSH1 0x00 00000f95: DUP1 00000f96: REVERT 00000f97: JUMPDEST 00000f98: POP 00000f99: POP 00000f9a: PUSH1 0x01 00000f9c: SWAP1 00000f9d: SWAP6 00000f9e: ADD 00000f9f: SWAP5 00000fa0: POP 00000fa1: PUSH2 0x0b49 00000fa4: SWAP4 00000fa5: POP 00000fa6: POP 00000fa7: POP 00000fa8: POP 00000fa9: JUMP 00000faa: JUMPDEST 00000fab: POP 00000fac: SWAP2 00000fad: SWAP1 00000fae: POP 00000faf: JUMP 00000fb0: JUMPDEST 00000fb1: PUSH1 0x40 00000fb3: DUP1 00000fb4: MLOAD 00000fb5: PUSH2 0x0100 00000fb8: DUP2 00000fb9: ADD 00000fba: DUP3 00000fbb: MSTORE 00000fbc: PUSH1 0x00 00000fbe: DUP1 00000fbf: DUP3 00000fc0: MSTORE 00000fc1: PUSH1 0x20 00000fc3: DUP3 00000fc4: ADD 00000fc5: MSTORE 00000fc6: SWAP1 00000fc7: DUP2 00000fc8: ADD 00000fc9: PUSH2 0x0fd0 00000fcc: PUSH2 0x1019 00000fcf: JUMP 00000fd0: JUMPDEST 00000fd1: DUP2 00000fd2: MSTORE 00000fd3: PUSH1 0x20 00000fd5: ADD 00000fd6: PUSH1 0x00 00000fd8: DUP2 00000fd9: MSTORE 00000fda: PUSH1 0x20 00000fdc: ADD 00000fdd: PUSH1 0x00 00000fdf: DUP2 00000fe0: MSTORE 00000fe1: PUSH1 0x20 00000fe3: ADD 00000fe4: PUSH1 0x00 00000fe6: PUSH1 0x01 00000fe8: PUSH1 0x01 00000fea: PUSH1 0xa0 00000fec: SHL 00000fed: SUB 00000fee: AND 00000fef: DUP2 00000ff0: MSTORE 00000ff1: PUSH1 0x20 00000ff3: ADD 00000ff4: PUSH1 0x00 00000ff6: DUP2 00000ff7: MSTORE 00000ff8: PUSH1 0x20 00000ffa: ADD 00000ffb: PUSH1 0x60 00000ffd: DUP2 00000ffe: MSTORE 00000fff: POP 00001000: SWAP1 00001001: JUMP 00001002: JUMPDEST 00001003: PUSH1 0x40 00001005: DUP1 00001006: MLOAD 00001007: DUP1 00001008: DUP3 00001009: ADD 0000100a: SWAP1 0000100b: SWAP2 0000100c: MSTORE 0000100d: PUSH1 0x00 0000100f: DUP1 00001010: DUP3 00001011: MSTORE 00001012: PUSH1 0x20 00001014: DUP3 00001015: ADD 00001016: MSTORE 00001017: SWAP1 00001018: JUMP 00001019: JUMPDEST 0000101a: PUSH1 0x40 0000101c: DUP1 0000101d: MLOAD 0000101e: PUSH1 0x80 00001020: DUP2 00001021: ADD 00001022: SWAP1 00001023: SWAP2 00001024: MSTORE 00001025: PUSH1 0x00 00001027: DUP1 00001028: DUP3 00001029: MSTORE 0000102a: PUSH1 0x20 0000102c: DUP3 0000102d: ADD 0000102e: SWAP1 0000102f: DUP2 00001030: MSTORE 00001031: PUSH1 0x20 00001033: ADD 00001034: PUSH1 0x00 00001036: DUP2 00001037: MSTORE 00001038: PUSH1 0x20 0000103a: ADD 0000103b: PUSH1 0x00 0000103d: DUP2 0000103e: MSTORE 0000103f: POP 00001040: SWAP1 00001041: JUMP 00001042: JUMPDEST 00001043: DUP1 00001044: CALLDATALOAD 00001045: PUSH2 0x0ab5 00001048: DUP2 00001049: PUSH2 0x1a9e 0000104c: JUMP 0000104d: JUMPDEST 0000104e: DUP1 0000104f: MLOAD 00001050: PUSH2 0x0ab5 00001053: DUP2 00001054: PUSH2 0x1a9e 00001057: JUMP 00001058: JUMPDEST 00001059: PUSH1 0x00 0000105b: DUP3 0000105c: PUSH1 0x1f 0000105e: DUP4 0000105f: ADD 00001060: SLT 00001061: PUSH2 0x1068 00001064: JUMPI 00001065: DUP1 00001066: DUP2 00001067: REVERT 00001068: JUMPDEST 00001069: DUP2 0000106a: CALLDATALOAD 0000106b: PUSH1 0x20 0000106d: PUSH2 0x107d 00001070: PUSH2 0x1078 00001073: DUP4 00001074: PUSH2 0x1a2a 00001077: JUMP 00001078: JUMPDEST 00001079: PUSH2 0x1a07 0000107c: JUMP 0000107d: JUMPDEST 0000107e: DUP3 0000107f: DUP2 00001080: MSTORE 00001081: DUP2 00001082: DUP2 00001083: ADD 00001084: SWAP1 00001085: DUP6 00001086: DUP4 00001087: ADD 00001088: DUP6 00001089: JUMPDEST 0000108a: DUP6 0000108b: DUP2 0000108c: LT 0000108d: ISZERO 0000108e: PUSH2 0x1147 00001091: JUMPI 00001092: DUP2 00001093: CALLDATALOAD 00001094: DUP9 00001095: ADD 00001096: PUSH1 0xa0 00001098: DUP1 00001099: PUSH1 0x1f 0000109b: NOT 0000109c: DUP4 0000109d: DUP14 0000109e: SUB 0000109f: ADD 000010a0: SLT 000010a1: ISZERO 000010a2: PUSH2 0x10a9 000010a5: JUMPI 000010a6: DUP9 000010a7: DUP10 000010a8: REVERT 000010a9: JUMPDEST 000010aa: PUSH1 0x40 000010ac: DUP1 000010ad: MLOAD 000010ae: DUP3 000010af: DUP2 000010b0: ADD 000010b1: PUSH1 0x01 000010b3: PUSH1 0x01 000010b5: PUSH1 0x40 000010b7: SHL 000010b8: SUB 000010b9: DUP3 000010ba: DUP3 000010bb: LT 000010bc: DUP2 000010bd: DUP4 000010be: GT 000010bf: OR 000010c0: ISZERO 000010c1: PUSH2 0x10c6 000010c4: JUMPI 000010c5: INVALID 000010c6: JUMPDEST 000010c7: DUP2 000010c8: DUP5 000010c9: MSTORE 000010ca: PUSH2 0x10d4 000010cd: DUP12 000010ce: DUP8 000010cf: ADD 000010d0: PUSH2 0x1247 000010d3: JUMP 000010d4: JUMPDEST 000010d5: DUP4 000010d6: MSTORE 000010d7: PUSH2 0x10e1 000010da: DUP5 000010db: DUP8 000010dc: ADD 000010dd: PUSH2 0x1042 000010e0: JUMP 000010e1: JUMPDEST 000010e2: DUP12 000010e3: DUP5 000010e4: ADD 000010e5: MSTORE 000010e6: PUSH1 0x60 000010e8: SWAP2 000010e9: POP 000010ea: PUSH2 0x10f4 000010ed: DUP3 000010ee: DUP8 000010ef: ADD 000010f0: PUSH2 0x1231 000010f3: JUMP 000010f4: JUMPDEST 000010f5: DUP5 000010f6: DUP5 000010f7: ADD 000010f8: MSTORE 000010f9: PUSH1 0x80 000010fb: SWAP4 000010fc: POP 000010fd: PUSH2 0x1107 00001100: DUP5 00001101: DUP8 00001102: ADD 00001103: PUSH2 0x1231 00001106: JUMP 00001107: JUMPDEST 00001108: DUP4 00001109: DUP4 0000110a: ADD 0000110b: MSTORE 0000110c: SWAP4 0000110d: DUP6 0000110e: ADD 0000110f: CALLDATALOAD 00001110: SWAP4 00001111: DUP1 00001112: DUP6 00001113: GT 00001114: ISZERO 00001115: PUSH2 0x111c 00001118: JUMPI 00001119: DUP13 0000111a: DUP14 0000111b: REVERT 0000111c: JUMPDEST 0000111d: POP 0000111e: POP 0000111f: PUSH2 0x112c 00001122: DUP14 00001123: DUP11 00001124: DUP6 00001125: DUP8 00001126: ADD 00001127: ADD 00001128: PUSH2 0x119a 0000112b: JUMP 0000112c: JUMPDEST 0000112d: SWAP2 0000112e: DUP2 0000112f: ADD 00001130: SWAP2 00001131: SWAP1 00001132: SWAP2 00001133: MSTORE 00001134: DUP7 00001135: MSTORE 00001136: POP 00001137: POP 00001138: SWAP3 00001139: DUP5 0000113a: ADD 0000113b: SWAP3 0000113c: SWAP1 0000113d: DUP5 0000113e: ADD 0000113f: SWAP1 00001140: PUSH1 0x01 00001142: ADD 00001143: PUSH2 0x1089 00001146: JUMP 00001147: JUMPDEST 00001148: POP 00001149: SWAP1 0000114a: SWAP8 0000114b: SWAP7 0000114c: POP 0000114d: POP 0000114e: POP 0000114f: POP 00001150: POP 00001151: POP 00001152: POP 00001153: JUMP 00001154: JUMPDEST 00001155: PUSH1 0x00 00001157: DUP1 00001158: DUP4 00001159: PUSH1 0x1f 0000115b: DUP5 0000115c: ADD 0000115d: SLT 0000115e: PUSH2 0x1165 00001161: JUMPI 00001162: DUP2 00001163: DUP3 00001164: REVERT 00001165: JUMPDEST 00001166: POP 00001167: DUP2 00001168: CALLDATALOAD 00001169: PUSH1 0x01 0000116b: PUSH1 0x01 0000116d: PUSH1 0x40 0000116f: SHL 00001170: SUB 00001171: DUP2 00001172: GT 00001173: ISZERO 00001174: PUSH2 0x117b 00001177: JUMPI 00001178: DUP2 00001179: DUP3 0000117a: REVERT 0000117b: JUMPDEST 0000117c: PUSH1 0x20 0000117e: DUP4 0000117f: ADD 00001180: SWAP2 00001181: POP 00001182: DUP4 00001183: PUSH1 0x20 00001185: DUP3 00001186: DUP6 00001187: ADD 00001188: ADD 00001189: GT 0000118a: ISZERO 0000118b: PUSH2 0x1193 0000118e: JUMPI 0000118f: PUSH1 0x00 00001191: DUP1 00001192: REVERT 00001193: JUMPDEST 00001194: SWAP3 00001195: POP 00001196: SWAP3 00001197: SWAP1 00001198: POP 00001199: JUMP 0000119a: JUMPDEST 0000119b: PUSH1 0x00 0000119d: DUP3 0000119e: PUSH1 0x1f 000011a0: DUP4 000011a1: ADD 000011a2: SLT 000011a3: PUSH2 0x11aa 000011a6: JUMPI 000011a7: DUP1 000011a8: DUP2 000011a9: REVERT 000011aa: JUMPDEST 000011ab: DUP2 000011ac: CALLDATALOAD 000011ad: PUSH2 0x11b8 000011b0: PUSH2 0x1078 000011b3: DUP3 000011b4: PUSH2 0x1a47 000011b7: JUMP 000011b8: JUMPDEST 000011b9: DUP2 000011ba: DUP2 000011bb: MSTORE 000011bc: DUP5 000011bd: PUSH1 0x20 000011bf: DUP4 000011c0: DUP7 000011c1: ADD 000011c2: ADD 000011c3: GT 000011c4: ISZERO 000011c5: PUSH2 0x11cc 000011c8: JUMPI 000011c9: DUP3 000011ca: DUP4 000011cb: REVERT 000011cc: JUMPDEST 000011cd: DUP2 000011ce: PUSH1 0x20 000011d0: DUP6 000011d1: ADD 000011d2: PUSH1 0x20 000011d4: DUP4 000011d5: ADD 000011d6: CALLDATACOPY 000011d7: SWAP1 000011d8: DUP2 000011d9: ADD 000011da: PUSH1 0x20 000011dc: ADD 000011dd: SWAP2 000011de: SWAP1 000011df: SWAP2 000011e0: MSTORE 000011e1: SWAP3 000011e2: SWAP2 000011e3: POP 000011e4: POP 000011e5: JUMP 000011e6: JUMPDEST 000011e7: PUSH1 0x00 000011e9: DUP3 000011ea: PUSH1 0x1f 000011ec: DUP4 000011ed: ADD 000011ee: SLT 000011ef: PUSH2 0x11f6 000011f2: JUMPI 000011f3: DUP1 000011f4: DUP2 000011f5: REVERT 000011f6: JUMPDEST 000011f7: DUP2 000011f8: MLOAD 000011f9: PUSH2 0x1204 000011fc: PUSH2 0x1078 000011ff: DUP3 00001200: PUSH2 0x1a47 00001203: JUMP 00001204: JUMPDEST 00001205: DUP2 00001206: DUP2 00001207: MSTORE 00001208: DUP5 00001209: PUSH1 0x20 0000120b: DUP4 0000120c: DUP7 0000120d: ADD 0000120e: ADD 0000120f: GT 00001210: ISZERO 00001211: PUSH2 0x1218 00001214: JUMPI 00001215: DUP3 00001216: DUP4 00001217: REVERT 00001218: JUMPDEST 00001219: PUSH2 0x1229 0000121c: DUP3 0000121d: PUSH1 0x20 0000121f: DUP4 00001220: ADD 00001221: PUSH1 0x20 00001223: DUP8 00001224: ADD 00001225: PUSH2 0x1a68 00001228: JUMP 00001229: JUMPDEST 0000122a: SWAP5 0000122b: SWAP4 0000122c: POP 0000122d: POP 0000122e: POP 0000122f: POP 00001230: JUMP 00001231: JUMPDEST 00001232: DUP1 00001233: CALLDATALOAD 00001234: PUSH2 0x0ab5 00001237: DUP2 00001238: PUSH2 0x1ac1 0000123b: JUMP 0000123c: JUMPDEST 0000123d: DUP1 0000123e: MLOAD 0000123f: PUSH2 0x0ab5 00001242: DUP2 00001243: PUSH2 0x1ac1 00001246: JUMP 00001247: JUMPDEST 00001248: DUP1 00001249: CALLDATALOAD 0000124a: PUSH2 0x0ab5 0000124d: DUP2 0000124e: PUSH2 0x1ad6 00001251: JUMP 00001252: JUMPDEST 00001253: DUP1 00001254: MLOAD 00001255: PUSH2 0x0ab5 00001258: DUP2 00001259: PUSH2 0x1ad6 0000125c: JUMP 0000125d: JUMPDEST 0000125e: PUSH1 0x00 00001260: PUSH1 0x20 00001262: DUP3 00001263: DUP5 00001264: SUB 00001265: SLT 00001266: ISZERO 00001267: PUSH2 0x126e 0000126a: JUMPI 0000126b: DUP1 0000126c: DUP2 0000126d: REVERT 0000126e: JUMPDEST 0000126f: DUP2 00001270: CALLDATALOAD 00001271: PUSH2 0x1279 00001274: DUP2 00001275: PUSH2 0x1a9e 00001278: JUMP 00001279: JUMPDEST 0000127a: SWAP4 0000127b: SWAP3 0000127c: POP 0000127d: POP 0000127e: POP 0000127f: JUMP 00001280: JUMPDEST 00001281: PUSH1 0x00 00001283: PUSH1 0x20 00001285: DUP3 00001286: DUP5 00001287: SUB 00001288: SLT 00001289: ISZERO 0000128a: PUSH2 0x1291 0000128d: JUMPI 0000128e: DUP1 0000128f: DUP2 00001290: REVERT 00001291: JUMPDEST 00001292: DUP2 00001293: MLOAD 00001294: PUSH2 0x1279 00001297: DUP2 00001298: PUSH2 0x1a9e 0000129b: JUMP 0000129c: JUMPDEST 0000129d: PUSH1 0x00 0000129f: DUP1 000012a0: PUSH1 0x00 000012a2: DUP4 000012a3: DUP6 000012a4: SUB 000012a5: PUSH1 0x80 000012a7: DUP2 000012a8: SLT 000012a9: ISZERO 000012aa: PUSH2 0x12b1 000012ad: JUMPI 000012ae: DUP3 000012af: DUP4 000012b0: REVERT 000012b1: JUMPDEST 000012b2: DUP5 000012b3: CALLDATALOAD 000012b4: PUSH2 0x12bc 000012b7: DUP2 000012b8: PUSH2 0x1a9e 000012bb: JUMP 000012bc: JUMPDEST 000012bd: SWAP4 000012be: POP 000012bf: PUSH1 0x40 000012c1: PUSH1 0x1f 000012c3: NOT 000012c4: DUP3 000012c5: ADD 000012c6: SLT 000012c7: ISZERO 000012c8: PUSH2 0x12cf 000012cb: JUMPI 000012cc: DUP3 000012cd: DUP4 000012ce: REVERT 000012cf: JUMPDEST 000012d0: POP 000012d1: PUSH1 0x40 000012d3: MLOAD 000012d4: PUSH1 0x40 000012d6: DUP2 000012d7: ADD 000012d8: PUSH1 0x01 000012da: PUSH1 0x01 000012dc: PUSH1 0x40 000012de: SHL 000012df: SUB 000012e0: DUP3 000012e1: DUP3 000012e2: LT 000012e3: DUP2 000012e4: DUP4 000012e5: GT 000012e6: OR 000012e7: ISZERO 000012e8: PUSH2 0x12ed 000012eb: JUMPI 000012ec: INVALID 000012ed: JUMPDEST 000012ee: DUP2 000012ef: PUSH1 0x40 000012f1: MSTORE 000012f2: PUSH1 0x20 000012f4: DUP8 000012f5: ADD 000012f6: CALLDATALOAD 000012f7: SWAP2 000012f8: POP 000012f9: PUSH2 0x1301 000012fc: DUP3 000012fd: PUSH2 0x1a9e 00001300: JUMP 00001301: JUMPDEST 00001302: DUP2 00001303: DUP4 00001304: MSTORE 00001305: PUSH1 0x40 00001307: DUP8 00001308: ADD 00001309: CALLDATALOAD 0000130a: PUSH1 0x20 0000130c: DUP5 0000130d: ADD 0000130e: MSTORE 0000130f: SWAP2 00001310: SWAP4 00001311: POP 00001312: PUSH1 0x60 00001314: DUP7 00001315: ADD 00001316: CALLDATALOAD 00001317: SWAP2 00001318: DUP1 00001319: DUP4 0000131a: GT 0000131b: ISZERO 0000131c: PUSH2 0x1323 0000131f: JUMPI 00001320: DUP4 00001321: DUP5 00001322: REVERT 00001323: JUMPDEST 00001324: POP 00001325: POP 00001326: PUSH2 0x1331 00001329: DUP7 0000132a: DUP3 0000132b: DUP8 0000132c: ADD 0000132d: PUSH2 0x119a 00001330: JUMP 00001331: JUMPDEST 00001332: SWAP2 00001333: POP 00001334: POP 00001335: SWAP3 00001336: POP 00001337: SWAP3 00001338: POP 00001339: SWAP3 0000133a: JUMP 0000133b: JUMPDEST 0000133c: PUSH1 0x00 0000133e: DUP1 0000133f: PUSH1 0x40 00001341: DUP4 00001342: DUP6 00001343: SUB 00001344: SLT 00001345: ISZERO 00001346: PUSH2 0x134d 00001349: JUMPI 0000134a: DUP2 0000134b: DUP3 0000134c: REVERT 0000134d: JUMPDEST 0000134e: DUP3 0000134f: CALLDATALOAD 00001350: PUSH2 0x1358 00001353: DUP2 00001354: PUSH2 0x1a9e 00001357: JUMP 00001358: JUMPDEST 00001359: SWAP5 0000135a: PUSH1 0x20 0000135c: SWAP4 0000135d: SWAP1 0000135e: SWAP4 0000135f: ADD 00001360: CALLDATALOAD 00001361: SWAP4 00001362: POP 00001363: POP 00001364: POP 00001365: JUMP 00001366: JUMPDEST 00001367: PUSH1 0x00 00001369: DUP1 0000136a: PUSH1 0x00 0000136c: DUP1 0000136d: PUSH1 0x60 0000136f: DUP6 00001370: DUP8 00001371: SUB 00001372: SLT 00001373: ISZERO 00001374: PUSH2 0x137b 00001377: JUMPI 00001378: DUP2 00001379: DUP3 0000137a: REVERT 0000137b: JUMPDEST 0000137c: DUP5 0000137d: CALLDATALOAD 0000137e: PUSH2 0x1386 00001381: DUP2 00001382: PUSH2 0x1a9e 00001385: JUMP 00001386: JUMPDEST 00001387: SWAP4 00001388: POP 00001389: PUSH1 0x20 0000138b: DUP6 0000138c: ADD 0000138d: CALLDATALOAD 0000138e: SWAP3 0000138f: POP 00001390: PUSH1 0x40 00001392: DUP6 00001393: ADD 00001394: CALLDATALOAD 00001395: PUSH1 0x01 00001397: PUSH1 0x01 00001399: PUSH1 0x40 0000139b: SHL 0000139c: SUB 0000139d: DUP2 0000139e: GT 0000139f: ISZERO 000013a0: PUSH2 0x13a7 000013a3: JUMPI 000013a4: DUP3 000013a5: DUP4 000013a6: REVERT 000013a7: JUMPDEST 000013a8: PUSH2 0x13b3 000013ab: DUP8 000013ac: DUP3 000013ad: DUP9 000013ae: ADD 000013af: PUSH2 0x1154 000013b2: JUMP 000013b3: JUMPDEST 000013b4: SWAP6 000013b5: SWAP9 000013b6: SWAP5 000013b7: SWAP8 000013b8: POP 000013b9: SWAP6 000013ba: POP 000013bb: POP 000013bc: POP 000013bd: POP 000013be: JUMP 000013bf: JUMPDEST 000013c0: PUSH1 0x00 000013c2: DUP1 000013c3: PUSH1 0x00 000013c5: DUP1 000013c6: PUSH1 0x00 000013c8: PUSH1 0x80 000013ca: DUP7 000013cb: DUP9 000013cc: SUB 000013cd: SLT 000013ce: ISZERO 000013cf: PUSH2 0x13d6 000013d2: JUMPI 000013d3: DUP3 000013d4: DUP4 000013d5: REVERT 000013d6: JUMPDEST 000013d7: DUP6 000013d8: CALLDATALOAD 000013d9: PUSH2 0x13e1 000013dc: DUP2 000013dd: PUSH2 0x1a9e 000013e0: JUMP 000013e1: JUMPDEST 000013e2: SWAP5 000013e3: POP 000013e4: PUSH1 0x20 000013e6: DUP7 000013e7: ADD 000013e8: CALLDATALOAD 000013e9: SWAP4 000013ea: POP 000013eb: PUSH1 0x40 000013ed: DUP7 000013ee: ADD 000013ef: CALLDATALOAD 000013f0: SWAP3 000013f1: POP 000013f2: PUSH1 0x60 000013f4: DUP7 000013f5: ADD 000013f6: CALLDATALOAD 000013f7: PUSH1 0x01 000013f9: PUSH1 0x01 000013fb: PUSH1 0x40 000013fd: SHL 000013fe: SUB 000013ff: DUP2 00001400: GT 00001401: ISZERO 00001402: PUSH2 0x1409 00001405: JUMPI 00001406: DUP2 00001407: DUP3 00001408: REVERT 00001409: JUMPDEST 0000140a: PUSH2 0x1415 0000140d: DUP9 0000140e: DUP3 0000140f: DUP10 00001410: ADD 00001411: PUSH2 0x1154 00001414: JUMP 00001415: JUMPDEST 00001416: SWAP7 00001417: SWAP10 00001418: SWAP6 00001419: SWAP9 0000141a: POP 0000141b: SWAP4 0000141c: SWAP7 0000141d: POP 0000141e: SWAP3 0000141f: SWAP5 00001420: SWAP4 00001421: SWAP3 00001422: POP 00001423: POP 00001424: POP 00001425: JUMP 00001426: JUMPDEST 00001427: PUSH1 0x00 00001429: PUSH1 0x20 0000142b: DUP3 0000142c: DUP5 0000142d: SUB 0000142e: SLT 0000142f: ISZERO 00001430: PUSH2 0x1437 00001433: JUMPI 00001434: DUP1 00001435: DUP2 00001436: REVERT 00001437: JUMPDEST 00001438: DUP2 00001439: CALLDATALOAD 0000143a: PUSH1 0x01 0000143c: PUSH1 0x01 0000143e: PUSH1 0x40 00001440: SHL 00001441: SUB 00001442: DUP2 00001443: GT 00001444: ISZERO 00001445: PUSH2 0x144c 00001448: JUMPI 00001449: DUP2 0000144a: DUP3 0000144b: REVERT 0000144c: JUMPDEST 0000144d: PUSH2 0x1229 00001450: DUP5 00001451: DUP3 00001452: DUP6 00001453: ADD 00001454: PUSH2 0x1058 00001457: JUMP 00001458: JUMPDEST 00001459: PUSH1 0x00 0000145b: PUSH1 0x20 0000145d: DUP1 0000145e: DUP4 0000145f: DUP6 00001460: SUB 00001461: SLT 00001462: ISZERO 00001463: PUSH2 0x146a 00001466: JUMPI 00001467: DUP2 00001468: DUP3 00001469: REVERT 0000146a: JUMPDEST 0000146b: DUP3 0000146c: MLOAD 0000146d: PUSH1 0x01 0000146f: PUSH1 0x01 00001471: PUSH1 0x40 00001473: SHL 00001474: SUB 00001475: DUP1 00001476: DUP3 00001477: GT 00001478: ISZERO 00001479: PUSH2 0x1480 0000147c: JUMPI 0000147d: DUP4 0000147e: DUP5 0000147f: REVERT 00001480: JUMPDEST 00001481: DUP2 00001482: DUP6 00001483: ADD 00001484: SWAP2 00001485: POP 00001486: DUP6 00001487: PUSH1 0x1f 00001489: DUP4 0000148a: ADD 0000148b: SLT 0000148c: PUSH2 0x1493 0000148f: JUMPI 00001490: DUP4 00001491: DUP5 00001492: REVERT 00001493: JUMPDEST 00001494: DUP2 00001495: MLOAD 00001496: PUSH2 0x14a1 00001499: PUSH2 0x1078 0000149c: DUP3 0000149d: PUSH2 0x1a2a 000014a0: JUMP 000014a1: JUMPDEST 000014a2: DUP2 000014a3: DUP2 000014a4: MSTORE 000014a5: DUP5 000014a6: DUP2 000014a7: ADD 000014a8: SWAP1 000014a9: DUP5 000014aa: DUP7 000014ab: ADD 000014ac: DUP8 000014ad: JUMPDEST 000014ae: DUP5 000014af: DUP2 000014b0: LT 000014b1: ISZERO 000014b2: PUSH2 0x155e 000014b5: JUMPI 000014b6: DUP2 000014b7: MLOAD 000014b8: DUP8 000014b9: ADD 000014ba: PUSH1 0xa0 000014bc: DUP1 000014bd: PUSH1 0x1f 000014bf: NOT 000014c0: DUP4 000014c1: DUP16 000014c2: SUB 000014c3: ADD 000014c4: SLT 000014c5: ISZERO 000014c6: PUSH2 0x14cd 000014c9: JUMPI 000014ca: DUP11 000014cb: DUP12 000014cc: REVERT 000014cd: JUMPDEST 000014ce: PUSH1 0x40 000014d0: DUP1 000014d1: MLOAD 000014d2: DUP3 000014d3: DUP2 000014d4: ADD 000014d5: DUP2 000014d6: DUP2 000014d7: LT 000014d8: DUP12 000014d9: DUP3 000014da: GT 000014db: OR 000014dc: ISZERO 000014dd: PUSH2 0x14e2 000014e0: JUMPI 000014e1: INVALID 000014e2: JUMPDEST 000014e3: DUP3 000014e4: MSTORE 000014e5: PUSH2 0x14ef 000014e8: DUP5 000014e9: DUP14 000014ea: ADD 000014eb: PUSH2 0x1252 000014ee: JUMP 000014ef: JUMPDEST 000014f0: DUP2 000014f1: MSTORE 000014f2: PUSH2 0x14fc 000014f5: DUP3 000014f6: DUP6 000014f7: ADD 000014f8: PUSH2 0x104d 000014fb: JUMP 000014fc: JUMPDEST 000014fd: DUP13 000014fe: DUP3 000014ff: ADD 00001500: MSTORE 00001501: PUSH1 0x60 00001503: PUSH2 0x150d 00001506: DUP2 00001507: DUP7 00001508: ADD 00001509: PUSH2 0x123c 0000150c: JUMP 0000150d: JUMPDEST 0000150e: DUP4 0000150f: DUP4 00001510: ADD 00001511: MSTORE 00001512: PUSH1 0x80 00001514: SWAP3 00001515: POP 00001516: PUSH2 0x1520 00001519: DUP4 0000151a: DUP7 0000151b: ADD 0000151c: PUSH2 0x123c 0000151f: JUMP 00001520: JUMPDEST 00001521: SWAP1 00001522: DUP3 00001523: ADD 00001524: MSTORE 00001525: SWAP2 00001526: DUP4 00001527: ADD 00001528: MLOAD 00001529: SWAP2 0000152a: DUP10 0000152b: DUP4 0000152c: GT 0000152d: ISZERO 0000152e: PUSH2 0x1535 00001531: JUMPI 00001532: DUP13 00001533: DUP14 00001534: REVERT 00001535: JUMPDEST 00001536: PUSH2 0x1543 00001539: DUP16 0000153a: DUP14 0000153b: DUP6 0000153c: DUP8 0000153d: ADD 0000153e: ADD 0000153f: PUSH2 0x11e6 00001542: JUMP 00001543: JUMPDEST 00001544: SWAP2 00001545: DUP2 00001546: ADD 00001547: SWAP2 00001548: SWAP1 00001549: SWAP2 0000154a: MSTORE 0000154b: DUP7 0000154c: MSTORE 0000154d: POP 0000154e: POP 0000154f: SWAP3 00001550: DUP8 00001551: ADD 00001552: SWAP3 00001553: SWAP1 00001554: DUP8 00001555: ADD 00001556: SWAP1 00001557: PUSH1 0x01 00001559: ADD 0000155a: PUSH2 0x14ad 0000155d: JUMP 0000155e: JUMPDEST 0000155f: POP 00001560: SWAP1 00001561: SWAP10 00001562: SWAP9 00001563: POP 00001564: POP 00001565: POP 00001566: POP 00001567: POP 00001568: POP 00001569: POP 0000156a: POP 0000156b: POP 0000156c: JUMP 0000156d: JUMPDEST 0000156e: PUSH1 0x00 00001570: DUP1 00001571: PUSH1 0x40 00001573: DUP4 00001574: DUP6 00001575: SUB 00001576: SLT 00001577: ISZERO 00001578: PUSH2 0x157f 0000157b: JUMPI 0000157c: DUP2 0000157d: DUP3 0000157e: REVERT 0000157f: JUMPDEST 00001580: DUP3 00001581: CALLDATALOAD 00001582: PUSH1 0x01 00001584: PUSH1 0x01 00001586: PUSH1 0x40 00001588: SHL 00001589: SUB 0000158a: DUP2 0000158b: GT 0000158c: ISZERO 0000158d: PUSH2 0x1594 00001590: JUMPI 00001591: DUP3 00001592: DUP4 00001593: REVERT 00001594: JUMPDEST 00001595: PUSH2 0x15a0 00001598: DUP6 00001599: DUP3 0000159a: DUP7 0000159b: ADD 0000159c: PUSH2 0x1058 0000159f: JUMP 000015a0: JUMPDEST 000015a1: SWAP3 000015a2: POP 000015a3: POP 000015a4: PUSH1 0x20 000015a6: DUP4 000015a7: ADD 000015a8: CALLDATALOAD 000015a9: PUSH2 0x15b1 000015ac: DUP2 000015ad: PUSH2 0x1a9e 000015b0: JUMP 000015b1: JUMPDEST 000015b2: DUP1 000015b3: SWAP2 000015b4: POP 000015b5: POP 000015b6: SWAP3 000015b7: POP 000015b8: SWAP3 000015b9: SWAP1 000015ba: POP 000015bb: JUMP 000015bc: JUMPDEST 000015bd: PUSH1 0x00 000015bf: DUP1 000015c0: PUSH1 0x00 000015c2: PUSH1 0x60 000015c4: DUP5 000015c5: DUP7 000015c6: SUB 000015c7: SLT 000015c8: ISZERO 000015c9: PUSH2 0x15d0 000015cc: JUMPI 000015cd: DUP1 000015ce: DUP2 000015cf: REVERT 000015d0: JUMPDEST 000015d1: DUP4 000015d2: CALLDATALOAD 000015d3: PUSH1 0x01 000015d5: PUSH1 0x01 000015d7: PUSH1 0x40 000015d9: SHL 000015da: SUB 000015db: DUP2 000015dc: GT 000015dd: ISZERO 000015de: PUSH2 0x15e5 000015e1: JUMPI 000015e2: DUP2 000015e3: DUP3 000015e4: REVERT 000015e5: JUMPDEST 000015e6: PUSH2 0x15f1 000015e9: DUP7 000015ea: DUP3 000015eb: DUP8 000015ec: ADD 000015ed: PUSH2 0x1058 000015f0: JUMP 000015f1: JUMPDEST 000015f2: SWAP4 000015f3: POP 000015f4: POP 000015f5: PUSH1 0x20 000015f7: DUP5 000015f8: ADD 000015f9: CALLDATALOAD 000015fa: PUSH2 0x1602 000015fd: DUP2 000015fe: PUSH2 0x1ab3 00001601: JUMP 00001602: JUMPDEST 00001603: SWAP3 00001604: SWAP6 00001605: SWAP3 00001606: SWAP5 00001607: POP 00001608: POP 00001609: POP 0000160a: PUSH1 0x40 0000160c: SWAP2 0000160d: SWAP1 0000160e: SWAP2 0000160f: ADD 00001610: CALLDATALOAD 00001611: SWAP1 00001612: JUMP 00001613: JUMPDEST 00001614: PUSH1 0x00 00001616: DUP1 00001617: PUSH1 0x40 00001619: DUP4 0000161a: DUP6 0000161b: SUB 0000161c: SLT 0000161d: ISZERO 0000161e: PUSH2 0x1625 00001621: JUMPI 00001622: DUP2 00001623: DUP3 00001624: REVERT 00001625: JUMPDEST 00001626: DUP3 00001627: CALLDATALOAD 00001628: PUSH1 0x01 0000162a: PUSH1 0x01 0000162c: PUSH1 0x40 0000162e: SHL 0000162f: SUB 00001630: DUP2 00001631: GT 00001632: ISZERO 00001633: PUSH2 0x163a 00001636: JUMPI 00001637: DUP3 00001638: DUP4 00001639: REVERT 0000163a: JUMPDEST 0000163b: PUSH2 0x1646 0000163e: DUP6 0000163f: DUP3 00001640: DUP7 00001641: ADD 00001642: PUSH2 0x1058 00001645: JUMP 00001646: JUMPDEST 00001647: SWAP3 00001648: POP 00001649: POP 0000164a: PUSH1 0x20 0000164c: DUP4 0000164d: ADD 0000164e: CALLDATALOAD 0000164f: PUSH2 0x15b1 00001652: DUP2 00001653: PUSH2 0x1ac1 00001656: JUMP 00001657: JUMPDEST 00001658: PUSH1 0x00 0000165a: PUSH1 0x20 0000165c: DUP3 0000165d: DUP5 0000165e: SUB 0000165f: SLT 00001660: ISZERO 00001661: PUSH2 0x1668 00001664: JUMPI 00001665: DUP1 00001666: DUP2 00001667: REVERT 00001668: JUMPDEST 00001669: DUP2 0000166a: MLOAD 0000166b: PUSH2 0x1279 0000166e: DUP2 0000166f: PUSH2 0x1ab3 00001672: JUMP 00001673: JUMPDEST 00001674: PUSH1 0x00 00001676: PUSH1 0x20 00001678: DUP3 00001679: DUP5 0000167a: SUB 0000167b: SLT 0000167c: ISZERO 0000167d: PUSH2 0x1684 00001680: JUMPI 00001681: DUP1 00001682: DUP2 00001683: REVERT 00001684: JUMPDEST 00001685: POP 00001686: MLOAD 00001687: SWAP2 00001688: SWAP1 00001689: POP 0000168a: JUMP 0000168b: JUMPDEST 0000168c: PUSH1 0x00 0000168e: DUP1 0000168f: PUSH1 0x00 00001691: PUSH1 0x60 00001693: DUP5 00001694: DUP7 00001695: SUB 00001696: SLT 00001697: ISZERO 00001698: PUSH2 0x169f 0000169b: JUMPI 0000169c: DUP1 0000169d: DUP2 0000169e: REVERT 0000169f: JUMPDEST 000016a0: DUP4 000016a1: CALLDATALOAD 000016a2: SWAP3 000016a3: POP 000016a4: PUSH1 0x20 000016a6: DUP5 000016a7: ADD 000016a8: CALLDATALOAD 000016a9: PUSH1 0x01 000016ab: PUSH1 0x01 000016ad: PUSH1 0x40 000016af: SHL 000016b0: SUB 000016b1: DUP2 000016b2: GT 000016b3: ISZERO 000016b4: PUSH2 0x16bb 000016b7: JUMPI 000016b8: DUP2 000016b9: DUP3 000016ba: REVERT 000016bb: JUMPDEST 000016bc: PUSH2 0x16c7 000016bf: DUP7 000016c0: DUP3 000016c1: DUP8 000016c2: ADD 000016c3: PUSH2 0x119a 000016c6: JUMP 000016c7: JUMPDEST 000016c8: SWAP3 000016c9: POP 000016ca: POP 000016cb: PUSH1 0x40 000016cd: DUP5 000016ce: ADD 000016cf: CALLDATALOAD 000016d0: SWAP1 000016d1: POP 000016d2: SWAP3 000016d3: POP 000016d4: SWAP3 000016d5: POP 000016d6: SWAP3 000016d7: JUMP 000016d8: JUMPDEST 000016d9: PUSH1 0x01 000016db: PUSH1 0x01 000016dd: PUSH1 0xa0 000016df: SHL 000016e0: SUB 000016e1: AND 000016e2: SWAP1 000016e3: MSTORE 000016e4: JUMP 000016e5: JUMPDEST 000016e6: PUSH1 0x00 000016e8: DUP2 000016e9: MLOAD 000016ea: DUP1 000016eb: DUP5 000016ec: MSTORE 000016ed: PUSH2 0x16fd 000016f0: DUP2 000016f1: PUSH1 0x20 000016f3: DUP7 000016f4: ADD 000016f5: PUSH1 0x20 000016f7: DUP7 000016f8: ADD 000016f9: PUSH2 0x1a68 000016fc: JUMP 000016fd: JUMPDEST 000016fe: PUSH1 0x1f 00001700: ADD 00001701: PUSH1 0x1f 00001703: NOT 00001704: AND 00001705: SWAP3 00001706: SWAP1 00001707: SWAP3 00001708: ADD 00001709: PUSH1 0x20 0000170b: ADD 0000170c: SWAP3 0000170d: SWAP2 0000170e: POP 0000170f: POP 00001710: JUMP 00001711: JUMPDEST 00001712: DUP1 00001713: MLOAD 00001714: ISZERO 00001715: ISZERO 00001716: DUP3 00001717: MSTORE 00001718: PUSH1 0x20 0000171a: DUP2 0000171b: ADD 0000171c: MLOAD 0000171d: PUSH2 0x1725 00001720: DUP2 00001721: PUSH2 0x1a94 00001724: JUMP 00001725: JUMPDEST 00001726: PUSH1 0x20 00001728: DUP4 00001729: ADD 0000172a: MSTORE 0000172b: PUSH1 0x40 0000172d: DUP2 0000172e: ADD 0000172f: MLOAD 00001730: PUSH2 0x1738 00001733: DUP2 00001734: PUSH2 0x1a94 00001737: JUMP 00001738: JUMPDEST 00001739: PUSH1 0x40 0000173b: DUP4 0000173c: ADD 0000173d: MSTORE 0000173e: PUSH1 0x60 00001740: SWAP1 00001741: DUP2 00001742: ADD 00001743: MLOAD 00001744: SWAP2 00001745: ADD 00001746: MSTORE 00001747: JUMP 00001748: JUMPDEST 00001749: PUSH1 0x01 0000174b: PUSH1 0x01 0000174d: PUSH1 0xa0 0000174f: SHL 00001750: SUB 00001751: SWAP2 00001752: SWAP1 00001753: SWAP2 00001754: AND 00001755: DUP2 00001756: MSTORE 00001757: PUSH1 0x20 00001759: ADD 0000175a: SWAP1 0000175b: JUMP 0000175c: JUMPDEST 0000175d: PUSH1 0x01 0000175f: PUSH1 0x01 00001761: PUSH1 0xa0 00001763: SHL 00001764: SUB 00001765: SWAP3 00001766: SWAP1 00001767: SWAP3 00001768: AND 00001769: DUP3 0000176a: MSTORE 0000176b: PUSH1 0x20 0000176d: DUP3 0000176e: ADD 0000176f: MSTORE 00001770: PUSH1 0x40 00001772: ADD 00001773: SWAP1 00001774: JUMP 00001775: JUMPDEST 00001776: PUSH1 0x01 00001778: PUSH1 0x01 0000177a: PUSH1 0xa0 0000177c: SHL 0000177d: SUB 0000177e: SWAP3 0000177f: DUP4 00001780: AND 00001781: DUP2 00001782: MSTORE 00001783: SWAP2 00001784: AND 00001785: PUSH1 0x20 00001787: DUP3 00001788: ADD 00001789: MSTORE 0000178a: PUSH1 0x40 0000178c: ADD 0000178d: SWAP1 0000178e: JUMP 0000178f: JUMPDEST 00001790: PUSH1 0x40 00001792: DUP1 00001793: DUP3 00001794: MSTORE 00001795: DUP4 00001796: MLOAD 00001797: DUP3 00001798: DUP3 00001799: ADD 0000179a: DUP2 0000179b: SWAP1 0000179c: MSTORE 0000179d: PUSH1 0x00 0000179f: SWAP2 000017a0: SWAP1 000017a1: PUSH1 0x60 000017a3: SWAP1 000017a4: DUP2 000017a5: DUP6 000017a6: ADD 000017a7: SWAP1 000017a8: PUSH1 0x20 000017aa: DUP1 000017ab: DUP10 000017ac: ADD 000017ad: DUP7 000017ae: JUMPDEST 000017af: DUP4 000017b0: DUP2 000017b1: LT 000017b2: ISZERO 000017b3: PUSH2 0x17dc 000017b6: JUMPI 000017b7: DUP2 000017b8: MLOAD 000017b9: DUP1 000017ba: MLOAD 000017bb: PUSH1 0x01 000017bd: PUSH1 0x01 000017bf: PUSH1 0xa0 000017c1: SHL 000017c2: SUB 000017c3: AND 000017c4: DUP7 000017c5: MSTORE 000017c6: DUP4 000017c7: ADD 000017c8: MLOAD 000017c9: DUP4 000017ca: DUP7 000017cb: ADD 000017cc: MSTORE 000017cd: SWAP4 000017ce: DUP7 000017cf: ADD 000017d0: SWAP4 000017d1: SWAP1 000017d2: DUP3 000017d3: ADD 000017d4: SWAP1 000017d5: PUSH1 0x01 000017d7: ADD 000017d8: PUSH2 0x17ae 000017db: JUMP 000017dc: JUMPDEST 000017dd: POP 000017de: POP 000017df: DUP7 000017e0: DUP4 000017e1: SUB 000017e2: DUP2 000017e3: DUP9 000017e4: ADD 000017e5: MSTORE 000017e6: DUP8 000017e7: MLOAD 000017e8: DUP1 000017e9: DUP5 000017ea: MSTORE 000017eb: DUP2 000017ec: DUP5 000017ed: ADD 000017ee: SWAP3 000017ef: POP 000017f0: DUP1 000017f1: DUP3 000017f2: MUL 000017f3: DUP5 000017f4: ADD 000017f5: DUP3 000017f6: ADD 000017f7: DUP10 000017f8: DUP4 000017f9: ADD 000017fa: DUP9 000017fb: JUMPDEST 000017fc: DUP4 000017fd: DUP2 000017fe: LT 000017ff: ISZERO 00001800: PUSH2 0x189e 00001803: JUMPI 00001804: PUSH1 0x1f 00001806: NOT 00001807: DUP8 00001808: DUP5 00001809: SUB 0000180a: ADD 0000180b: DUP7 0000180c: MSTORE 0000180d: DUP2 0000180e: MLOAD 0000180f: PUSH2 0x0160 00001812: DUP2 00001813: MLOAD 00001814: PUSH1 0x09 00001816: DUP2 00001817: LT 00001818: PUSH2 0x181d 0000181b: JUMPI 0000181c: INVALID 0000181d: JUMPDEST 0000181e: DUP6 0000181f: MSTORE 00001820: DUP2 00001821: DUP8 00001822: ADD 00001823: MLOAD 00001824: DUP8 00001825: DUP7 00001826: ADD 00001827: MSTORE 00001828: DUP11 00001829: DUP3 0000182a: ADD 0000182b: MLOAD 0000182c: PUSH2 0x1837 0000182f: DUP13 00001830: DUP8 00001831: ADD 00001832: DUP3 00001833: PUSH2 0x1711 00001836: JUMP 00001837: JUMPDEST 00001838: POP 00001839: DUP10 0000183a: DUP3 0000183b: ADD 0000183c: MLOAD 0000183d: PUSH1 0xc0 0000183f: DUP2 00001840: DUP2 00001841: DUP9 00001842: ADD 00001843: MSTORE 00001844: PUSH1 0x80 00001846: DUP5 00001847: ADD 00001848: MLOAD 00001849: SWAP2 0000184a: POP 0000184b: PUSH1 0xe0 0000184d: DUP3 0000184e: DUP2 0000184f: DUP10 00001850: ADD 00001851: MSTORE 00001852: PUSH1 0xa0 00001854: DUP6 00001855: ADD 00001856: MLOAD 00001857: SWAP3 00001858: POP 00001859: PUSH2 0x1866 0000185c: PUSH2 0x0100 0000185f: DUP10 00001860: ADD 00001861: DUP5 00001862: PUSH2 0x16d8 00001865: JUMP 00001866: JUMPDEST 00001867: SWAP1 00001868: DUP5 00001869: ADD 0000186a: MLOAD 0000186b: PUSH2 0x0120 0000186e: DUP9 0000186f: ADD 00001870: MSTORE 00001871: SWAP1 00001872: SWAP3 00001873: ADD 00001874: MLOAD 00001875: PUSH2 0x0140 00001878: DUP7 00001879: ADD 0000187a: DUP3 0000187b: SWAP1 0000187c: MSTORE 0000187d: SWAP2 0000187e: POP 0000187f: PUSH2 0x188a 00001882: DUP2 00001883: DUP7 00001884: ADD 00001885: DUP4 00001886: PUSH2 0x16e5 00001889: JUMP 0000188a: JUMPDEST 0000188b: SWAP8 0000188c: DUP8 0000188d: ADD 0000188e: SWAP8 0000188f: SWAP5 00001890: POP 00001891: POP 00001892: POP 00001893: SWAP1 00001894: DUP5 00001895: ADD 00001896: SWAP1 00001897: PUSH1 0x01 00001899: ADD 0000189a: PUSH2 0x17fb 0000189d: JUMP 0000189e: JUMPDEST 0000189f: POP 000018a0: SWAP1 000018a1: SWAP12 000018a2: SWAP11 000018a3: POP 000018a4: POP 000018a5: POP 000018a6: POP 000018a7: POP 000018a8: POP 000018a9: POP 000018aa: POP 000018ab: POP 000018ac: POP 000018ad: POP 000018ae: JUMP 000018af: JUMPDEST 000018b0: SWAP1 000018b1: ISZERO 000018b2: ISZERO 000018b3: DUP2 000018b4: MSTORE 000018b5: PUSH1 0x20 000018b7: ADD 000018b8: SWAP1 000018b9: JUMP 000018ba: JUMPDEST 000018bb: PUSH1 0x00 000018bd: PUSH1 0x40 000018bf: DUP3 000018c0: MSTORE 000018c1: PUSH2 0x18cd 000018c4: PUSH1 0x40 000018c6: DUP4 000018c7: ADD 000018c8: DUP6 000018c9: PUSH2 0x16e5 000018cc: JUMP 000018cd: JUMPDEST 000018ce: SWAP1 000018cf: POP 000018d0: DUP3 000018d1: PUSH1 0x20 000018d3: DUP4 000018d4: ADD 000018d5: MSTORE 000018d6: SWAP4 000018d7: SWAP3 000018d8: POP 000018d9: POP 000018da: POP 000018db: JUMP 000018dc: JUMPDEST 000018dd: PUSH1 0x20 000018df: DUP1 000018e0: DUP3 000018e1: MSTORE 000018e2: PUSH1 0x03 000018e4: SWAP1 000018e5: DUP3 000018e6: ADD 000018e7: MSTORE 000018e8: PUSH3 0x677277 000018ec: PUSH1 0xe8 000018ee: SHL 000018ef: PUSH1 0x40 000018f1: DUP3 000018f2: ADD 000018f3: MSTORE 000018f4: PUSH1 0x60 000018f6: ADD 000018f7: SWAP1 000018f8: JUMP 000018f9: JUMPDEST 000018fa: PUSH1 0x20 000018fc: DUP1 000018fd: DUP3 000018fe: MSTORE 000018ff: PUSH1 0x03 00001901: SWAP1 00001902: DUP3 00001903: ADD 00001904: MSTORE 00001905: PUSH3 0x31b7b7 00001909: PUSH1 0xe9 0000190b: SHL 0000190c: PUSH1 0x40 0000190e: DUP3 0000190f: ADD 00001910: MSTORE 00001911: PUSH1 0x60 00001913: ADD 00001914: SWAP1 00001915: JUMP 00001916: JUMPDEST 00001917: PUSH1 0x20 00001919: DUP1 0000191a: DUP3 0000191b: MSTORE 0000191c: PUSH1 0x03 0000191e: SWAP1 0000191f: DUP3 00001920: ADD 00001921: MSTORE 00001922: PUSH3 0x062633 00001926: PUSH1 0xec 00001928: SHL 00001929: PUSH1 0x40 0000192b: DUP3 0000192c: ADD 0000192d: MSTORE 0000192e: PUSH1 0x60 00001930: ADD 00001931: SWAP1 00001932: JUMP 00001933: JUMPDEST 00001934: PUSH1 0x20 00001936: DUP1 00001937: DUP3 00001938: MSTORE 00001939: PUSH1 0x03 0000193b: SWAP1 0000193c: DUP3 0000193d: ADD 0000193e: MSTORE 0000193f: PUSH3 0x1d58dd 00001943: PUSH1 0xea 00001945: SHL 00001946: PUSH1 0x40 00001948: DUP3 00001949: ADD 0000194a: MSTORE 0000194b: PUSH1 0x60 0000194d: ADD 0000194e: SWAP1 0000194f: JUMP 00001950: JUMPDEST 00001951: PUSH1 0x20 00001953: DUP1 00001954: DUP3 00001955: MSTORE 00001956: PUSH1 0x03 00001958: SWAP1 00001959: DUP3 0000195a: ADD 0000195b: MSTORE 0000195c: PUSH3 0x627273 00001960: PUSH1 0xe8 00001962: SHL 00001963: PUSH1 0x40 00001965: DUP3 00001966: ADD 00001967: MSTORE 00001968: PUSH1 0x60 0000196a: ADD 0000196b: SWAP1 0000196c: JUMP 0000196d: JUMPDEST 0000196e: PUSH1 0x20 00001970: DUP1 00001971: DUP3 00001972: MSTORE 00001973: PUSH1 0x03 00001975: SWAP1 00001976: DUP3 00001977: ADD 00001978: MSTORE 00001979: PUSH3 0x736d63 0000197d: PUSH1 0xe8 0000197f: SHL 00001980: PUSH1 0x40 00001982: DUP3 00001983: ADD 00001984: MSTORE 00001985: PUSH1 0x60 00001987: ADD 00001988: SWAP1 00001989: JUMP 0000198a: JUMPDEST 0000198b: PUSH1 0x20 0000198d: DUP1 0000198e: DUP3 0000198f: MSTORE 00001990: PUSH1 0x03 00001992: SWAP1 00001993: DUP3 00001994: ADD 00001995: MSTORE 00001996: PUSH3 0x63686d 0000199a: PUSH1 0xe8 0000199c: SHL 0000199d: PUSH1 0x40 0000199f: DUP3 000019a0: ADD 000019a1: MSTORE 000019a2: PUSH1 0x60 000019a4: ADD 000019a5: SWAP1 000019a6: JUMP 000019a7: JUMPDEST 000019a8: PUSH1 0x20 000019aa: DUP1 000019ab: DUP3 000019ac: MSTORE 000019ad: PUSH1 0x03 000019af: SWAP1 000019b0: DUP3 000019b1: ADD 000019b2: MSTORE 000019b3: PUSH3 0x31b43d 000019b7: PUSH1 0xe9 000019b9: SHL 000019ba: PUSH1 0x40 000019bc: DUP3 000019bd: ADD 000019be: MSTORE 000019bf: PUSH1 0x60 000019c1: ADD 000019c2: SWAP1 000019c3: JUMP 000019c4: JUMPDEST 000019c5: PUSH1 0x20 000019c7: DUP1 000019c8: DUP3 000019c9: MSTORE 000019ca: PUSH1 0x03 000019cc: SWAP1 000019cd: DUP3 000019ce: ADD 000019cf: MSTORE 000019d0: PUSH3 0x626331 000019d4: PUSH1 0xe8 000019d6: SHL 000019d7: PUSH1 0x40 000019d9: DUP3 000019da: ADD 000019db: MSTORE 000019dc: PUSH1 0x60 000019de: ADD 000019df: SWAP1 000019e0: JUMP 000019e1: JUMPDEST 000019e2: PUSH1 0x20 000019e4: DUP1 000019e5: DUP3 000019e6: MSTORE 000019e7: PUSH1 0x03 000019e9: SWAP1 000019ea: DUP3 000019eb: ADD 000019ec: MSTORE 000019ed: PUSH3 0x0eaced 000019f1: PUSH1 0xeb 000019f3: SHL 000019f4: PUSH1 0x40 000019f6: DUP3 000019f7: ADD 000019f8: MSTORE 000019f9: PUSH1 0x60 000019fb: ADD 000019fc: SWAP1 000019fd: JUMP 000019fe: JUMPDEST 000019ff: SWAP1 00001a00: DUP2 00001a01: MSTORE 00001a02: PUSH1 0x20 00001a04: ADD 00001a05: SWAP1 00001a06: JUMP 00001a07: JUMPDEST 00001a08: PUSH1 0x40 00001a0a: MLOAD 00001a0b: DUP2 00001a0c: DUP2 00001a0d: ADD 00001a0e: PUSH1 0x01 00001a10: PUSH1 0x01 00001a12: PUSH1 0x40 00001a14: SHL 00001a15: SUB 00001a16: DUP2 00001a17: GT 00001a18: DUP3 00001a19: DUP3 00001a1a: LT 00001a1b: OR 00001a1c: ISZERO 00001a1d: PUSH2 0x1a22 00001a20: JUMPI 00001a21: INVALID 00001a22: JUMPDEST 00001a23: PUSH1 0x40 00001a25: MSTORE 00001a26: SWAP2 00001a27: SWAP1 00001a28: POP 00001a29: JUMP 00001a2a: JUMPDEST 00001a2b: PUSH1 0x00 00001a2d: PUSH1 0x01 00001a2f: PUSH1 0x01 00001a31: PUSH1 0x40 00001a33: SHL 00001a34: SUB 00001a35: DUP3 00001a36: GT 00001a37: ISZERO 00001a38: PUSH2 0x1a3d 00001a3b: JUMPI 00001a3c: INVALID 00001a3d: JUMPDEST 00001a3e: POP 00001a3f: PUSH1 0x20 00001a41: SWAP1 00001a42: DUP2 00001a43: MUL 00001a44: ADD 00001a45: SWAP1 00001a46: JUMP 00001a47: JUMPDEST 00001a48: PUSH1 0x00 00001a4a: PUSH1 0x01 00001a4c: PUSH1 0x01 00001a4e: PUSH1 0x40 00001a50: SHL 00001a51: SUB 00001a52: DUP3 00001a53: GT 00001a54: ISZERO 00001a55: PUSH2 0x1a5a 00001a58: JUMPI 00001a59: INVALID 00001a5a: JUMPDEST 00001a5b: POP 00001a5c: PUSH1 0x1f 00001a5e: ADD 00001a5f: PUSH1 0x1f 00001a61: NOT 00001a62: AND 00001a63: PUSH1 0x20 00001a65: ADD 00001a66: SWAP1 00001a67: JUMP 00001a68: JUMPDEST 00001a69: PUSH1 0x00 00001a6b: JUMPDEST 00001a6c: DUP4 00001a6d: DUP2 00001a6e: LT 00001a6f: ISZERO 00001a70: PUSH2 0x1a83 00001a73: JUMPI 00001a74: DUP2 00001a75: DUP2 00001a76: ADD 00001a77: MLOAD 00001a78: DUP4 00001a79: DUP3 00001a7a: ADD 00001a7b: MSTORE 00001a7c: PUSH1 0x20 00001a7e: ADD 00001a7f: PUSH2 0x1a6b 00001a82: JUMP 00001a83: JUMPDEST 00001a84: DUP4 00001a85: DUP2 00001a86: GT 00001a87: ISZERO 00001a88: PUSH2 0x0aba 00001a8b: JUMPI 00001a8c: POP 00001a8d: POP 00001a8e: PUSH1 0x00 00001a90: SWAP2 00001a91: ADD 00001a92: MSTORE 00001a93: JUMP 00001a94: JUMPDEST 00001a95: PUSH1 0x02 00001a97: DUP2 00001a98: LT 00001a99: PUSH2 0x07b5 00001a9c: JUMPI 00001a9d: INVALID 00001a9e: JUMPDEST 00001a9f: PUSH1 0x01 00001aa1: PUSH1 0x01 00001aa3: PUSH1 0xa0 00001aa5: SHL 00001aa6: SUB 00001aa7: DUP2 00001aa8: AND 00001aa9: DUP2 00001aaa: EQ 00001aab: PUSH2 0x07b5 00001aae: JUMPI 00001aaf: PUSH1 0x00 00001ab1: DUP1 00001ab2: REVERT 00001ab3: JUMPDEST 00001ab4: DUP1 00001ab5: ISZERO 00001ab6: ISZERO 00001ab7: DUP2 00001ab8: EQ 00001ab9: PUSH2 0x07b5 00001abc: JUMPI 00001abd: PUSH1 0x00 00001abf: DUP1 00001ac0: REVERT 00001ac1: JUMPDEST 00001ac2: PUSH1 0x01 00001ac4: PUSH1 0x01 00001ac6: PUSH1 0x80 00001ac8: SHL 00001ac9: SUB 00001aca: DUP2 00001acb: AND 00001acc: DUP2 00001acd: EQ 00001ace: PUSH2 0x07b5 00001ad1: JUMPI 00001ad2: PUSH1 0x00 00001ad4: DUP1 00001ad5: REVERT 00001ad6: JUMPDEST 00001ad7: PUSH1 0xff 00001ad9: DUP2 00001ada: AND 00001adb: DUP2 00001adc: EQ 00001add: PUSH2 0x07b5 00001ae0: JUMPI 00001ae1: PUSH1 0x00 00001ae3: DUP1 00001ae4: REVERT 00001ae5: INVALID 00001ae6: LOG2 00001ae7: PUSH5 0x6970667358 00001aed: UNKNOWN(0x22) 00001aee: SLT 00001aef: KECCAK256 00001af0: UNKNOWN(0xB5) 00001af1: EXP 00001af2: LOG3 00001af3: UNKNOWN(0x24) 00001af4: PUSH3 0xc73d23 00001af8: DUP14 00001af9: LOG4 00001afa: UNKNOWN(0xB4) 00001afb: UNKNOWN(0xE2) 00001afc: UNKNOWN(0xD3) 00001afd: EXTCODECOPY 00001afe: PUSH25 0x86f89adaba289b1589c9e80adb7926cebe64736f6c63430007 00001b18: MOD 00001b19: STOP 00001b1a: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43
call_targets:
0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77"
],
"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": "0x96de31e0",
"selector": "0x96de31e0",
"calldata_variants": [
"0x96de31e0",
"0x96de31e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x99f5e5cb",
"selector": "0x99f5e5cb",
"calldata_variants": [
"0x99f5e5cb",
"0x99f5e5cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xade9b374",
"selector": "0xade9b374",
"calldata_variants": [
"0xade9b374",
"0xade9b3740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0ee0b8a",
"selector": "0xc0ee0b8a",
"calldata_variants": [
"0xc0ee0b8a",
"0xc0ee0b8a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed3dae64",
"selector": "0xed3dae64",
"calldata_variants": [
"0xed3dae64",
"0xed3dae640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf50c1ed1",
"selector": "0xf50c1ed1",
"calldata_variants": [
"0xf50c1ed1",
"0xf50c1ed10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06c74e8d",
"selector": "0x06c74e8d",
"calldata_variants": [
"0x06c74e8d",
"0x06c74e8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0f032cbe",
"selector": "0x0f032cbe",
"calldata_variants": [
"0x0f032cbe",
"0x0f032cbe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1259,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1951,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2685,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [
{
"pc": 2140,
"type": "msg_sender_eq_const",
"value": 1.7136517151476955e+47
},
{
"pc": 2118,
"type": "msg_sender_eq_const",
"value": "0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e"
}
],
"untrusted_call_count": 6
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43
call_targets:
0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77"
],
"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": "0x96de31e0",
"selector": "0x96de31e0",
"calldata_variants": [
"0x96de31e0",
"0x96de31e00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x99f5e5cb",
"selector": "0x99f5e5cb",
"calldata_variants": [
"0x99f5e5cb",
"0x99f5e5cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xade9b374",
"selector": "0xade9b374",
"calldata_variants": [
"0xade9b374",
"0xade9b3740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0ee0b8a",
"selector": "0xc0ee0b8a",
"calldata_variants": [
"0xc0ee0b8a",
"0xc0ee0b8a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed3dae64",
"selector": "0xed3dae64",
"calldata_variants": [
"0xed3dae64",
"0xed3dae640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf50c1ed1",
"selector": "0xf50c1ed1",
"calldata_variants": [
"0xf50c1ed1",
"0xf50c1ed10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06c74e8d",
"selector": "0x06c74e8d",
"calldata_variants": [
"0x06c74e8d",
"0x06c74e8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0f032cbe",
"selector": "0x0f032cbe",
"calldata_variants": [
"0x0f032cbe",
"0x0f032cbe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1259,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1951,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2685,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 6,
"guards_detected": [
{
"pc": 2140,
"type": "msg_sender_eq_const",
"value": 1.7136517151476955e+47
},
{
"pc": 2118,
"type": "msg_sender_eq_const",
"value": "0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e"
}
]
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 13
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 14
}
|