5c3e2ffa-3778-4581-8e29-4063a9a6bb2a
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 |
|---|---|---|---|---|
| 31518 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77735 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 77736 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 77737 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 77738 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 77739 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 77740 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:335749] OpenAI Codex v0.77.0 (research preview)
[codex:335749] --------
[codex:335749] workdir: /tmp/codex-multi-raa6nve0
[codex:335749] model: gpt-5.2-codex
[codex:335749] provider: openai
[codex:335749] approval: never
[codex:335749] sandbox: read-only
[codex:335749] reasoning effort: xhigh
[codex:335749] reasoning summaries: auto
[codex:335749] session id: 019b86b0-16cc-7320-82c4-8b4cf407891e
[codex:335749] --------
[codex:335749] user
[codex:335749] 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:335749]
[codex:335749] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:335749]
[codex:335749] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:335749] - Gas inefficiency, code quality, or best practices
[codex:335749] - Theoretical vulnerabilities without a clear extraction path
[codex:335749] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:335749] - Issues requiring social engineering or off-chain coordination
[codex:335749]
[codex:335749] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:335749] - CALL/DELEGATECALL with controllable destination or calldata
[codex:335749] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:335749] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:335749] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:335749] - External calls before state updates (reentrancy)
[codex:335749] - SELFDESTRUCT with controllable beneficiary
[codex:335749] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:335749]
[codex:335749] For each finding, you MUST explain:
[codex:335749] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:335749] 2. The concrete sequence of transactions to extract value
[codex:335749] 3. Why you believe this is exploitable (not just suspicious)
[codex:335749]
[codex:335749] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:335749] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:335749]
[codex:335749] Output MUST be valid JSON matching the provided schema.
[codex:335749] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:335749] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:335749] mcp startup: no servers
[codex:335749]
[codex:335749] thinking
[codex:335749] **Preparing to read instructions and BYTECODE_BUNDLE.txt**
[codex:335749] exec
[codex:335749] /bin/bash -lc ls in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] BYTECODE_BUNDLE.txt
[codex:335749] codex-output-schema.json
[codex:335749] exec
[codex:335749] /bin/bash -lc 'wc -l BYTECODE_BUNDLE.txt' in /tmp/codex-multi-raa6nve0 succeeded in 6ms:
[codex:335749] 5 BYTECODE_BUNDLE.txt
[codex:335749] exec
[codex:335749] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] Runtime bytecode bundle for best-effort auditing.
[codex:335749] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:335749]
[codex:335749] FILE: runtime_bytecode.hex
[codex:335749] 0x6060604052600436106100cc5763ffffffff60e060020a6000350416630d15fd7781146100ce5780632e6dbdf9146100f35780632e854433146101065780633b97e85614610119578063477990921461012c5780634783c35b146101425780634b60ce77146101715780634fb2e45d146101845780635afb6ba5146101a3578063750142e6146101ed57806381f4be5e1461020057806384bcefd4146102135780638da5cb5b1461022657806396c82e5714610239578063a06842511461024c578063e3bce10e1461025f575b005b34156100d957600080fd5b6100e1610272565b60405190815260200160405180910390f35b34156100fe57600080fd5b6100cc610278565b341561011157600080fd5b6100cc610468565b341561012457600080fd5b6100e16106a7565b341561013757600080fd5b6100cc6004356106ad565b341561014d57600080fd5b61015561095d565b604051600160a060020a03909116815260200160405180910390f35b341561017c57600080fd5b61015561096c565b341561018f57600080fd5b6100cc600160a060020a036004351661097b565b34156101ae57600080fd5b6101c2600160a060020a03600435166109c0565b604051808381526020018260028111156101d857fe5b60ff1681526020019250505060405180910390f35b34156101f857600080fd5b6100e1610a3e565b341561020b57600080fd5b610155610a44565b341561021e57600080fd5b6100e1610a53565b341561023157600080fd5b610155610a59565b341561024457600080fd5b6100e1610a68565b341561025757600080fd5b6100e1610a6e565b341561026a57600080fd5b6100cc610a74565b600a5481565b6102806113ca565b60175460009081908190819060ff161561029957600080fd5b601454600160a060020a031663a620fcc76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102e157600080fd5b6102c65a03f115156102f257600080fd5b5050506040518051600a5414905061030957600080fd5b600c54600160a060020a03301631101561032257600080fd5b610330600c54601854610bdc565b601554600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561038957600080fd5b6102c65a03f1151561039a57600080fd5b50505060405180519050101515156103b157600080fd5b6103b9610c07565b945060075493505b60085484116103ee576103d683600954610d87565b92506103e485858585610da3565b91508293506103c1565b6103f6610f8b565b600d556017805460ff19166001179055600e54600f546010546011547f23ab3fd308ef0e085d61939ed6d3e141f21837614a02ed448da4dce240245344939291906040518085815260200184815260200183815260200182815260200194505050505060405180910390a15050505050565b6017546000908190819060019060ff161515811461048557600080fd5b336001600160a060020a038216600090815260126020526040902060029081015460ff16908111156104b357fe5b146104bd57600080fd5b601754610100900460ff16156104d257600080fd5b6017805461ff001916610100908117909155600160a060020a03331660009081526012602090815260408083208054845260069092529091206001908101549082015491975061052792900460ff1690611118565b9350600092506000600d5411801561053f5750600084115b156105585761055084600d54610d87565b6000600d5593505b600160a060020a03331660009081526012602052604090206002908101805460ff191660018302179055506105988361059386601854610bdc565b610d87565b601554909350600160a060020a031663a9059cbb338560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105fa57600080fd5b6102c65a03f1151561060b57600080fd5b50505060405180519050151561062057600080fd5b600160a060020a03331684156108fc0285604051600060405180830381858888f19350505050151561065157600080fd5b6017805461ff00191690557f5bf2177ec82333d646ddac9ef13ddd7f57260091072d459309fe1a9ee531e2ca3384604051600160a060020a03909216825260208201526040908101905180910390a15050505050565b60165481565b6000806000806000806000806000806000809054906101000a9004600160a060020a0316600160a060020a031633600160a060020a031614156109505760175460009060ff16156106fd57600080fd5b601454600160a060020a031663a620fcc76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561074557600080fd5b6102c65a03f1151561075657600080fd5b5050506040518051965050858c1061076d57600080fd5b600a5486901061077c57600080fd5b6107858c61119c565b939e50919c509a5098509650600160a060020a038b1615156107a657600080fd5b600160a060020a038b16600090815260126020526040812060029081015460ff16908111156107d157fe5b146107db57600080fd5b6009548a8115156107e857fe5b0694506007548a10156107ff576007549350610841565b6008548a1115610813576008549350610841565b8993508415610841576108268a86611250565b93506001548410156108415761083e84600954610d87565b93505b6000848152600660205260409020600181015490935062010000900460ff16151561086b57600080fd5b6108758988611264565b6000858152600660205260409020549092506108919083610d87565b600085815260066020526040902055600b546108ad9083610d87565b600b55600a80546001908101909155600160a060020a038c166000908152601260205260409020858155808201849055600201805460ff1916828002179055507f9ec97c382d56b4d35b4d7057460ea7f57ff800af60a182833c33dc3e9b65726e8b8b86856040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1505b5050505050505050505050565b601354600160a060020a031681565b601554600160a060020a031681565b60005433600160a060020a03908116911614156109bd57600160a060020a038116156109bd5760008054600160a060020a031916600160a060020a0383161790555b50565b60175460009081908190819060019060ff16151581146109df57600080fd5b600160a060020a038616600090815260126020908152604080832080548452600690925290912060019081015490820154919450610a269161010090910460ff1690611118565b600284015490955060ff169350849150505050915091565b600c5481565b601454600160a060020a031681565b60015481565b600054600160a060020a031681565b600b5481565b600d5481565b601354600090600160a060020a03161515610a8e57600080fd5b60135433600160a060020a03908116911614610aa957600080fd5b601554600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b0257600080fd5b6102c65a03f11515610b1357600080fd5b5050506040518051601354909250600160a060020a03908116915030163180156108fc0290604051600060405180830381858888f193505050501515610b5857600080fd5b601554601354600160a060020a039182169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bbe57600080fd5b6102c65a03f11515610bcf57600080fd5b5050506040518051505050565b6000828202610c00841580610bfb5750838583811515610bf857fe5b04145b61134e565b9392505050565b610c0f6113ca565b600080610c1d60025461135a565b60c085015260a0840152600354610c339061135a565b60e085019081526080850191909152610c4f9051600154611250565b9150610c736001546004610c64856005610bdc565b811515610c6d57fe5b04610d87565b610100840152600154610c8d906003610c64856004610bdc565b610120840152600154610ca7906002610c64856003610bdc565b610140840152600154610cbf90610593846002610bdc565b610160840152600154610cd6906080850151611250565b91506004610ce5836005610bdc565b811515610cee57fe5b049050600154811015610d825760015481900360608401526003610d13836004610bdc565b811515610d1c57fe5b049050600154811015610d825760015481900360408401526002610d41836003610bdc565b811515610d4a57fe5b049050600154811015610d82576001548190036020840152610d6d826002610bdc565b9050600154811015610d825760015481900383525b505090565b6000828201610c00848210801590610bfb57508382101561134e565b60008060006001548611158015610dc4575060015485101580610dc4575084155b15610df1575050506000838152600660208190526040909120546011805490910190556001906004610f4f565b8315610e1b5750505060008381526006602081905260408220546011805490910190556004610f4f565b86518610158015610e3157508661016001518611155b15610f4f5786602001518610158015610e4f57508661014001518611155b15610f4a5786604001518610158015610e6d57508661012001518611155b15610f405786606001518610158015610e8b57508661010001518611155b15610f365786608001518610158015610ea857508660e001518611155b15610f12578660a001518610158015610ec557508660c001518611155b15610eee5750506000848152600660208190526040909120546010805490910190556003610f0d565b5050600084815260066020526040902054600f80549091019055600560025b610f31565b5050600084815260066020526040902054600e80549091019055600460015b610f3b565b600391505b610f45565b600291505b610f4f565b600191505b600095865260066020526040909520600101805460ff9687166101000261ff00199790931660ff19909116179590951617909355509092915050565b600080600080600080610fa2601054601154610d87565b6010819055600f54610fb391610d87565b600f819055600e54610fc491610d87565b600e8190551515610fd957600c549550611110565b600c54600a90049450610fed856004610bdc565b9350610ffb84600287610c6d565b9250611009600c5484611250565b91506110158285611250565b91506110218286611250565b915060006011541115611054576011548581151561103b57fe5b0690506011548581151561104b57fe5b04601155611057565b50835b6000601054111561109157611079816010548681151561107357fe5b06610d87565b90506010548481151561108857fe5b0460105561109e565b61109b8185610d87565b90505b6000600f5411156110d2576110ba81600f548581151561107357fe5b9050600f54838115156110c957fe5b04600f556110df565b6110dc8184610d87565b90505b6110e98282610d87565b9150600e54828115156110f857fe5b069050600e548281151561110857fe5b04600e559450845b505050505090565b60008060ff84168190111561113a576111378161059385600e54610bdc565b90505b60018460ff161115611159576111568161059385600f54610bdc565b90505b60028460ff161115611178576111758161059385601054610bdc565b90505b60038460ff161115610c00576111948161059385601154610bdc565b949350505050565b601454600090819081908190819081908190600160a060020a0316639507d39a898360405160e0015260405160e060020a63ffffffff8416028152600481019190915260240160e060405180830381600087803b15156111fb57600080fd5b6102c65a03f1151561120c57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519f969e50929c50939a50919850929650505050505050565b600061125e8383111561134e565b50900390565b6000806000600454841015151561127a57600080fd5b6005546004540184111561128d57600080fd5b60646112a4670de0b6b3a764000087046064610d87565b8115156112ad57fe5b0491506005546112d460966112cf6005546112ca89600454611250565b611250565b610bdc565b8115156112dd57fe5b0490506112ec816103e8610d87565b90506112f88282610bdc565b6103e8900491507ffd3605c3334acd84c29f8601e62dfa6e1c6b3a489b07b4838025f3cf9156045085838360405180848152602001838152602001828152602001935050505060405180910390a1509392505050565b8015156109bd57600080fd5b60008060008061136c6103e886611250565b91506103e861137d60015484610bdc565b81151561138657fe5b049350816113966103e887610bdc565b81151561139f57fe5b0490506103e86113b76001546112cf6103e885610d87565b8115156113c057fe5b0492505050915091565b610180604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600083151561143a57600080fd5b83831161144657600080fd5b81151561145257600080fd5b818481151561145d57fe5b061561146857600080fd5b818381151561147357fe5b061561147e57600080fd5b50600783905560088290556009819055825b8281116114be576000818152600660205260409020600101805462ff00001916620100001790558101611490565b50505050565b600085116114d157600080fd5b6000841180156114e257506103e884105b80156114ee5750838310155b80156114fb57506103e883105b151561150657600080fd5b80821061151257600080fd5b60018590556002849055600383905560048290556115308183611250565b60055550505050505600a165627a7a723058209f3adb5a60a2437607d142f44202cecc3c43906b32a4d078a98cc39d9e116f070029
[codex:335749]
[codex:335749] thinking
[codex:335749] **Devising bytecode vulnerability detection**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read().split('runtime_bytecode.hex',1)[1]
[codex:335749] # extract 0x... hex string
[codex:335749] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:335749] if not m:
[codex:335749] print('no hex')
[codex:335749] raise SystemExit
[codex:335749] hexstr=m.group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] print('len',len(code))
[codex:335749] # EVM opcodes lengths for PUSH1-32
[codex:335749] push_len={i: i-0x5f for i in range(0x60,0x80)}
[codex:335749] # find occurrences of CALL (0xf1), DELEGATECALL (0xf4), SELFDESTRUCT (0xff)
[codex:335749] ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:335749] idx=0
[codex:335749] hits=[]
[codex:335749] while idx < len(code):
[codex:335749] op=code[idx]
[codex:335749] if op in ops:
[codex:335749] hits.append((idx,ops[op]))
[codex:335749] idx+=1
[codex:335749] continue
[codex:335749] if op in push_len:
[codex:335749] idx+=1+push_len[op]
[codex:335749] continue
[codex:335749] idx+=1
[codex:335749] print('op hits', len(hits))
[codex:335749] for h in hits[:50]:
[codex:335749] print(h)
[codex:335749] print('... last', hits[-5:])
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 27ms:
[codex:335749] len 5478
[codex:335749] op hits 9
[codex:335749] (743, 'CALL')
[codex:335749] (911, 'CALL')
[codex:335749] (1536, 'CALL')
[codex:335749] (1601, 'CALL')
[codex:335749] (1867, 'CALL')
[codex:335749] (2824, 'CALL')
[codex:335749] (2888, 'CALL')
[codex:335749] (3012, 'CALL')
[codex:335749] (4609, 'CALL')
[codex:335749] ... last [(1867, 'CALL'), (2824, 'CALL'), (2888, 'CALL'), (3012, 'CALL'), (4609, 'CALL')]
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing CALL instructions and value transfers**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:335749] hexstr=m.group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # disassemble to list of (offset, op, imm_bytes)
[codex:335749] ops = {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:335749] 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:335749] 0x20:'SHA3',
[codex:335749] 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:335749] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:335749] 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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i += 1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i += 1
[codex:335749]
[codex:335749] # build map offset -> index
[codex:335749] idx_map={off:idx for idx,(off,_,_) in enumerate(ins)}
[codex:335749]
[codex:335749] for off,name in [ (off,n) for (off,n,_) in ins if n=='CALL' ]:
[codex:335749] idx=idx_map[off]
[codex:335749] start=max(0, idx-20)
[codex:335749] end=min(len(ins), idx+5)
[codex:335749] print('--- CALL at', off, '---')
[codex:335749] for j in range(start,end):
[codex:335749] o,n,imm=ins[j]
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] --- CALL at 743 ---
[codex:335749] 02cd: MLOAD
[codex:335749] 02ce: DUP1
[codex:335749] 02cf: DUP4
[codex:335749] 02d0: SUB
[codex:335749] 02d1: DUP2
[codex:335749] 02d2: PUSH1 0x00
[codex:335749] 02d4: DUP8
[codex:335749] 02d5: DUP1
[codex:335749] 02d6: EXTCODESIZE
[codex:335749] 02d7: ISZERO
[codex:335749] 02d8: ISZERO
[codex:335749] 02d9: PUSH2 0x02e1
[codex:335749] 02dc: JUMPI
[codex:335749] 02dd: PUSH1 0x00
[codex:335749] 02df: DUP1
[codex:335749] 02e0: REVERT
[codex:335749] 02e1: JUMPDEST
[codex:335749] 02e2: PUSH2 0x02c6
[codex:335749] 02e5: GAS
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing CALL instruction contexts**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] # function to print range by offset
[codex:335749]
[codex:335749] def dump(off, before=40, after=20):
[codex:335749] # find index by offset nearest <=
[codex:335749] idx=max(i for i,(o,_,_) in enumerate(ins) if o<=off)
[codex:335749] start=max(0, idx-before)
[codex:335749] end=min(len(ins), idx+after)
[codex:335749] for j in range(start,end):
[codex:335749] o,n,imm=ins[j]
[codex:335749] mark='*' if o==off else ' '
[codex:335749] if imm:
[codex:335749] print(f'{mark}{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{mark}{o:04x}: {n}')
[codex:335749]
[codex:335749] print('around CALL at 0x0641 (1601)')
[codex:335749] dump(0x0641)
[codex:335749] print('\\naround CALL at 0x0b48 (2888)')
[codex:335749] dump(0x0b48)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 30ms:
[codex:335749] around CALL at 0x0641 (1601)
[codex:335749] 060d: POP
[codex:335749] 060e: POP
[codex:335749] 060f: PUSH1 0x40
[codex:335749] 0611: MLOAD
[codex:335749] 0612: DUP1
[codex:335749] 0613: MLOAD
[codex:335749] 0614: SWAP1
[codex:335749] 0615: POP
[codex:335749] 0616: ISZERO
[codex:335749] 0617: ISZERO
[codex:335749] 0618: PUSH2 0x0620
[codex:335749] 061b: JUMPI
[codex:335749] 061c: PUSH1 0x00
[codex:335749] 061e: DUP1
[codex:335749] 061f: REVERT
[codex:335749] 0620: JUMPDEST
[codex:335749] 0621: PUSH1 0x01
[codex:335749] 0623: PUSH1 0xa0
[codex:335749] 0625: PUSH1 0x02
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing contract call and function dispatch**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # simple disassembler for first 300 bytes
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749]
[codex:335749] def disasm(start=0, end=300):
[codex:335749] i=start
[codex:335749] while i < end and i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] print(f'{i:04x}: {name} 0x{imm.hex()}')
[codex:335749] i += 1+n
[codex:335749] else:
[codex:335749] print(f'{i:04x}: {name}')
[codex:335749] i += 1
[codex:335749]
[codex:335749] disasm(0, 400)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] 0000: PUSH1 0x60
[codex:335749] 0002: PUSH1 0x40
[codex:335749] 0004: MSTORE
[codex:335749] 0005: PUSH1 0x04
[codex:335749] 0007: CALLDATASIZE
[codex:335749] 0008: LT
[codex:335749] 0009: PUSH2 0x00cc
[codex:335749] 000c: JUMPI
[codex:335749] 000d: PUSH4 0xffffffff
[codex:335749] 0012: PUSH1 0xe0
[codex:335749] 0014: PUSH1 0x02
[codex:335749] 0016: EXP
[codex:335749] 0017: PUSH1 0x00
[codex:335749] 0019: CALLDATALOAD
[codex:335749] 001a: DIV
[codex:335749] 001b: AND
[codex:335749] 001c: PUSH4 0x0d15fd77
[codex:335749] 0021: DUP2
[codex:335749] 0022: EQ
[codex:335749] 0023: PUSH2 0x00ce
[codex:335749]
[codex:335749] thinking
[codex:335749] **Mapping function entries and calls**
[codex:335749]
[codex:335749] I'm analyzing the dispatcher jump destinations and their corresponding selectors to map function entries. I want to disassemble functions containing CALL instructions with value transfers by associating call offsets to their closest preceding function entry, identified from the dispatcher's JUMPDEST addresses. This will help understand where access control might happen. I'll compute which function each CALL belongs to by matching call offsets to function entry points.
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # function entry addresses from dispatcher
[codex:335749] entries=[0x0272,0x0278,0x0468,0x06a7,0x06ad,0x095d,0x096c,0x097b,0x09c0,0x0a3e,0x0a44,0x0a53,0x0a59,0x0a68,0x0a6e,0x0a74]
[codex:335749] entries_sorted=sorted(entries)
[codex:335749] # call offsets found earlier
[codex:335749] call_offsets=[0x02e7,0x038f,0x0600,0x0641,0x074b,0x0b08,0x0b48,0x0bc4,0x1201]
[codex:335749] for off in call_offsets:
[codex:335749] # find nearest entry <= off
[codex:335749] entry=max([e for e in entries_sorted if e<=off], default=None)
[codex:335749] print(f'CALL at {off:04x} in function entry {entry:04x}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 24ms:
[codex:335749] CALL at 02e7 in function entry 0278
[codex:335749] CALL at 038f in function entry 0278
[codex:335749] CALL at 0600 in function entry 0468
[codex:335749] CALL at 0641 in function entry 0468
[codex:335749] CALL at 074b in function entry 06ad
[codex:335749] CALL at 0b08 in function entry 0a74
[codex:335749] CALL at 0b48 in function entry 0a74
[codex:335749] CALL at 0bc4 in function entry 0a74
[codex:335749] CALL at 1201 in function entry 0a74
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing key external functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble from start to end
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i += 1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i += 1
[codex:335749]
[codex:335749] # function to print from start offset to end offset
[codex:335749]
[codex:335749] def dump(start, end):
[codex:335749] for o,n,imm in ins:
[codex:335749] if o < start: continue
[codex:335749] if o >= end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749]
[codex:335749] # dump function 0x0468 to 0x06a7
[codex:335749] print('Function 0x0468..0x06a7')
[codex:335749] dump(0x0468, 0x06a7)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 31ms:
[codex:335749] Function 0x0468..0x06a7
[codex:335749] 0468: JUMPDEST
[codex:335749] 0469: PUSH1 0x17
[codex:335749] 046b: SLOAD
[codex:335749] 046c: PUSH1 0x00
[codex:335749] 046e: SWAP1
[codex:335749] 046f: DUP2
[codex:335749] 0470: SWAP1
[codex:335749] 0471: DUP2
[codex:335749] 0472: SWAP1
[codex:335749] 0473: PUSH1 0x01
[codex:335749] 0475: SWAP1
[codex:335749] 0476: PUSH1 0xff
[codex:335749] 0478: AND
[codex:335749] 0479: ISZERO
[codex:335749] 047a: ISZERO
[codex:335749] 047b: DUP2
[codex:335749] 047c: EQ
[codex:335749] 047d: PUSH2 0x0485
[codex:335749] 0480: JUMPI
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing complex token claim function**
[codex:335749]
[codex:335749] I'm examining a complicated function that manages token transfers to callers, including checks on storage flags, mappings likely for whitelisting or usage, and reentrancy protections. It executes an ERC20 token transfer followed by a CALL that might send ETH to the caller; understanding the CALL's arguments requires careful stack simulation. I’m also considering whether proper access controls exist to prevent unauthorized withdrawals or exploits, and planning to inspect related admin functions for ownership checks.
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] # print from 0x0a74 to end
[codex:335749] start=0x0a74
[codex:335749] end=0x120f
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 35ms:
[codex:335749] 0a74: JUMPDEST
[codex:335749] 0a75: PUSH1 0x13
[codex:335749] 0a77: SLOAD
[codex:335749] 0a78: PUSH1 0x00
[codex:335749] 0a7a: SWAP1
[codex:335749] 0a7b: PUSH1 0x01
[codex:335749] 0a7d: PUSH1 0xa0
[codex:335749] 0a7f: PUSH1 0x02
[codex:335749] 0a81: EXP
[codex:335749] 0a82: SUB
[codex:335749] 0a83: AND
[codex:335749] 0a84: ISZERO
[codex:335749] 0a85: ISZERO
[codex:335749] 0a86: PUSH2 0x0a8e
[codex:335749] 0a89: JUMPI
[codex:335749] 0a8a: PUSH1 0x00
[codex:335749] 0a8c: DUP1
[codex:335749] 0a8d: REVERT
[codex:335749] 0a8e: JUMPDEST
[codex:335749] 0a8f: PUSH1 0x13
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing access control on key functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] # print from 0x0278 to 0x0468
[codex:335749] start=0x0278
[codex:335749] end=0x0468
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 0278: JUMPDEST
[codex:335749] 0279: PUSH2 0x0280
[codex:335749] 027c: PUSH2 0x13ca
[codex:335749] 027f: JUMP
[codex:335749] 0280: JUMPDEST
[codex:335749] 0281: PUSH1 0x17
[codex:335749] 0283: SLOAD
[codex:335749] 0284: PUSH1 0x00
[codex:335749] 0286: SWAP1
[codex:335749] 0287: DUP2
[codex:335749] 0288: SWAP1
[codex:335749] 0289: DUP2
[codex:335749] 028a: SWAP1
[codex:335749] 028b: DUP2
[codex:335749] 028c: SWAP1
[codex:335749] 028d: PUSH1 0xff
[codex:335749] 028f: AND
[codex:335749] 0290: ISZERO
[codex:335749] 0291: PUSH2 0x0299
[codex:335749] 0294: JUMPI
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing token distribution logic**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # same ops
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] start=0x06ad
[codex:335749] end=0x095d
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 27ms:
[codex:335749] 06ad: JUMPDEST
[codex:335749] 06ae: PUSH1 0x00
[codex:335749] 06b0: DUP1
[codex:335749] 06b1: PUSH1 0x00
[codex:335749] 06b3: DUP1
[codex:335749] 06b4: PUSH1 0x00
[codex:335749] 06b6: DUP1
[codex:335749] 06b7: PUSH1 0x00
[codex:335749] 06b9: DUP1
[codex:335749] 06ba: PUSH1 0x00
[codex:335749] 06bc: DUP1
[codex:335749] 06bd: PUSH1 0x00
[codex:335749] 06bf: DUP1
[codex:335749] 06c0: SWAP1
[codex:335749] 06c1: SLOAD
[codex:335749] 06c2: SWAP1
[codex:335749] 06c3: PUSH2 0x0100
[codex:335749] 06c6: EXP
[codex:335749] 06c7: SWAP1
[codex:335749] 06c8: DIV
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing ownership and access control functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # minimal ops map
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i += 1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i += 1
[codex:335749]
[codex:335749] start=0x095d
[codex:335749] end=0x0a3e
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 33ms:
[codex:335749] 095d: JUMPDEST
[codex:335749] 095e: PUSH1 0x13
[codex:335749] 0960: SLOAD
[codex:335749] 0961: PUSH1 0x01
[codex:335749] 0963: PUSH1 0xa0
[codex:335749] 0965: PUSH1 0x02
[codex:335749] 0967: EXP
[codex:335749] 0968: SUB
[codex:335749] 0969: AND
[codex:335749] 096a: DUP2
[codex:335749] 096b: JUMP
[codex:335749] 096c: JUMPDEST
[codex:335749] 096d: PUSH1 0x15
[codex:335749] 096f: SLOAD
[codex:335749] 0970: PUSH1 0x01
[codex:335749] 0972: PUSH1 0xa0
[codex:335749] 0974: PUSH1 0x02
[codex:335749] 0976: EXP
[codex:335749] 0977: SUB
[codex:335749] 0978: AND
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing owner and claim functions for vulnerabilities**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # disassemble
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] # find SSTORE occurrences and show previous 5 ins
[codex:335749] for idx,(o,n,imm) in enumerate(ins):
[codex:335749] if n=='SSTORE':
[codex:335749] print(f'SSTORE at {o:04x}')
[codex:335749] for j in range(max(0,idx-5), idx+1):
[codex:335749] oo,nn,ii=ins[j]
[codex:335749] if ii:
[codex:335749] print(f' {oo:04x}: {nn} 0x{ii.hex()}')
[codex:335749] else:
[codex:335749] print(f' {oo:04x}: {nn}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 30ms:
[codex:335749] SSTORE at 03f9
[codex:335749] 03ef: PUSH2 0x03f6
[codex:335749] 03f2: PUSH2 0x0f8b
[codex:335749] 03f5: JUMP
[codex:335749] 03f6: JUMPDEST
[codex:335749] 03f7: PUSH1 0x0d
[codex:335749] 03f9: SSTORE
[codex:335749] SSTORE at 0406
[codex:335749] 0400: NOT
[codex:335749] 0401: AND
[codex:335749] 0402: PUSH1 0x01
[codex:335749] 0404: OR
[codex:335749] 0405: SWAP1
[codex:335749] 0406: SSTORE
[codex:335749] SSTORE at 04e4
[codex:335749] 04df: SWAP1
[codex:335749] 04e0: DUP2
[codex:335749] 04e1: OR
[codex:335749] 04e2: SWAP1
[codex:335749] 04e3: SWAP2
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing runtime initialization calls**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # search for push2 0x143a or 0x143a bytes
[codex:335749] pattern=bytes([0x61,0x14,0x3a])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print('push2 0x143a at', [hex(i) for i in indices])
[codex:335749] # search for push2 0x1484 etc
[codex:335749] for val in [0x143a,0x1484,0x1517]:
[codex:335749] pattern=bytes([0x61,(val>>8)&0xff,val&0xff])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print(hex(val), indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] push2 0x143a at ['0x1432']
[codex:335749] 0x143a [5170]
[codex:335749] 0x1484 []
[codex:335749] 0x1517 []
[codex:335749]
[codex:335749] thinking
[codex:335749] **Examining jump destination at 0x143a**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] # disassemble around 0x13ca to 0x1540
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] start=0x13ca
[codex:335749] end=0x1540
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 13ca: JUMPDEST
[codex:335749] 13cb: PUSH2 0x0180
[codex:335749] 13ce: PUSH1 0x40
[codex:335749] 13d0: MLOAD
[codex:335749] 13d1: SWAP1
[codex:335749] 13d2: DUP2
[codex:335749] 13d3: ADD
[codex:335749] 13d4: PUSH1 0x40
[codex:335749] 13d6: MSTORE
[codex:335749] 13d7: DUP1
[codex:335749] 13d8: PUSH1 0x00
[codex:335749] 13da: DUP2
[codex:335749] 13db: MSTORE
[codex:335749] 13dc: PUSH1 0x20
[codex:335749] 13de: ADD
[codex:335749] 13df: PUSH1 0x00
[codex:335749] 13e1: DUP2
[codex:335749] 13e2: MSTORE
[codex:335749] 13e3: PUSH1 0x20
[codex:335749] 13e5: ADD
[codex:335749]
[codex:335749] thinking
[codex:335749] **Investigating internal function reachability**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',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:335749] 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:335749] 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:335749] 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:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749]
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749] op=code[i]
[codex:335749] name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749] if 0x60 <= op <= 0x7f:
[codex:335749] n=op-0x5f
[codex:335749] imm=code[i+1:i+1+n]
[codex:335749] ins.append((i,name,imm))
[codex:335749] i+=1+n
[codex:335749] else:
[codex:335749] ins.append((i,name,b''))
[codex:335749] i+=1
[codex:335749]
[codex:335749] start=0x0272
[codex:335749] end=0x0278
[codex:335749] for o,n,imm in ins:
[codex:335749] if o<start: continue
[codex:335749] if o>=end: break
[codex:335749] if imm:
[codex:335749] print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749] else:
[codex:335749] print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 28ms:
[codex:335749] 0272: JUMPDEST
[codex:335749] 0273: PUSH1 0x0a
[codex:335749] 0275: SLOAD
[codex:335749] 0276: DUP2
[codex:335749] 0277: JUMP
[codex:335749]
[codex:335749] thinking
[codex:335749] **Examining jump destinations for initialization**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # find push2 0x142c
[codex:335749] pattern=bytes([0x61,0x14,0x2c])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print(indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] []
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing unreachable jump destinations**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] addrs=[0x142c,0x14c4,0x1512,0x1480,0x1490,0x1506]
[codex:335749] for val in addrs:
[codex:335749] pattern=bytes([0x61,(val>>8)&0xff,val&0xff])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print(hex(val), indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 0x142c []
[codex:335749] 0x14c4 []
[codex:335749] 0x1512 [5386]
[codex:335749] 0x1480 []
[codex:335749] 0x1490 [5306]
[codex:335749] 0x1506 [5374]
[codex:335749]
[codex:335749] thinking
[codex:335749] **Analyzing internal contract functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:335749]
[codex:335749] thinking
[codex:335749] **Preparing JSON output with no findings**
[codex:335749] codex
[codex:335749] {"no_findings":true,"summary":"No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.","findings":[]}
[codex:335749] tokens used
[codex:335749] 183,140
[codex:335749] {"no_findings":true,"summary":"No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T01:55:41.662421+00:00",
"returncode": 0
},
"summary": "No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.",
"raw_final": {
"summary": "No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00cc 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH1 0xe0 00000014: PUSH1 0x02 00000016: EXP 00000017: PUSH1 0x00 00000019: CALLDATALOAD 0000001a: DIV 0000001b: AND 0000001c: PUSH4 0x0d15fd77 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x00ce 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x2e6dbdf9 0000002d: EQ 0000002e: PUSH2 0x00f3 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x2e854433 00000038: EQ 00000039: PUSH2 0x0106 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x3b97e856 00000043: EQ 00000044: PUSH2 0x0119 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x47799092 0000004e: EQ 0000004f: PUSH2 0x012c 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x4783c35b 00000059: EQ 0000005a: PUSH2 0x0142 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x4b60ce77 00000064: EQ 00000065: PUSH2 0x0171 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x4fb2e45d 0000006f: EQ 00000070: PUSH2 0x0184 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0x5afb6ba5 0000007a: EQ 0000007b: PUSH2 0x01a3 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0x750142e6 00000085: EQ 00000086: PUSH2 0x01ed 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0x81f4be5e 00000090: EQ 00000091: PUSH2 0x0200 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0x84bcefd4 0000009b: EQ 0000009c: PUSH2 0x0213 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0x8da5cb5b 000000a6: EQ 000000a7: PUSH2 0x0226 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0x96c82e57 000000b1: EQ 000000b2: PUSH2 0x0239 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0xa0684251 000000bc: EQ 000000bd: PUSH2 0x024c 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0xe3bce10e 000000c7: EQ 000000c8: PUSH2 0x025f 000000cb: JUMPI 000000cc: JUMPDEST 000000cd: STOP 000000ce: JUMPDEST 000000cf: CALLVALUE 000000d0: ISZERO 000000d1: PUSH2 0x00d9 000000d4: JUMPI 000000d5: PUSH1 0x00 000000d7: DUP1 000000d8: REVERT 000000d9: JUMPDEST 000000da: PUSH2 0x00e1 000000dd: PUSH2 0x0272 000000e0: JUMP 000000e1: JUMPDEST 000000e2: PUSH1 0x40 000000e4: MLOAD 000000e5: SWAP1 000000e6: DUP2 000000e7: MSTORE 000000e8: PUSH1 0x20 000000ea: ADD 000000eb: PUSH1 0x40 000000ed: MLOAD 000000ee: DUP1 000000ef: SWAP2 000000f0: SUB 000000f1: SWAP1 000000f2: RETURN 000000f3: JUMPDEST 000000f4: CALLVALUE 000000f5: ISZERO 000000f6: PUSH2 0x00fe 000000f9: JUMPI 000000fa: PUSH1 0x00 000000fc: DUP1 000000fd: REVERT 000000fe: JUMPDEST 000000ff: PUSH2 0x00cc 00000102: PUSH2 0x0278 00000105: JUMP 00000106: JUMPDEST 00000107: CALLVALUE 00000108: ISZERO 00000109: PUSH2 0x0111 0000010c: JUMPI 0000010d: PUSH1 0x00 0000010f: DUP1 00000110: REVERT 00000111: JUMPDEST 00000112: PUSH2 0x00cc 00000115: PUSH2 0x0468 00000118: JUMP 00000119: JUMPDEST 0000011a: CALLVALUE 0000011b: ISZERO 0000011c: PUSH2 0x0124 0000011f: JUMPI 00000120: PUSH1 0x00 00000122: DUP1 00000123: REVERT 00000124: JUMPDEST 00000125: PUSH2 0x00e1 00000128: PUSH2 0x06a7 0000012b: JUMP 0000012c: JUMPDEST 0000012d: CALLVALUE 0000012e: ISZERO 0000012f: PUSH2 0x0137 00000132: JUMPI 00000133: PUSH1 0x00 00000135: DUP1 00000136: REVERT 00000137: JUMPDEST 00000138: PUSH2 0x00cc 0000013b: PUSH1 0x04 0000013d: CALLDATALOAD 0000013e: PUSH2 0x06ad 00000141: JUMP 00000142: JUMPDEST 00000143: CALLVALUE 00000144: ISZERO 00000145: PUSH2 0x014d 00000148: JUMPI 00000149: PUSH1 0x00 0000014b: DUP1 0000014c: REVERT 0000014d: JUMPDEST 0000014e: PUSH2 0x0155 00000151: PUSH2 0x095d 00000154: JUMP 00000155: JUMPDEST 00000156: PUSH1 0x40 00000158: MLOAD 00000159: PUSH1 0x01 0000015b: PUSH1 0xa0 0000015d: PUSH1 0x02 0000015f: EXP 00000160: SUB 00000161: SWAP1 00000162: SWAP2 00000163: AND 00000164: DUP2 00000165: MSTORE 00000166: PUSH1 0x20 00000168: ADD 00000169: PUSH1 0x40 0000016b: MLOAD 0000016c: DUP1 0000016d: SWAP2 0000016e: SUB 0000016f: SWAP1 00000170: RETURN 00000171: JUMPDEST 00000172: CALLVALUE 00000173: ISZERO 00000174: PUSH2 0x017c 00000177: JUMPI 00000178: PUSH1 0x00 0000017a: DUP1 0000017b: REVERT 0000017c: JUMPDEST 0000017d: PUSH2 0x0155 00000180: PUSH2 0x096c 00000183: JUMP 00000184: JUMPDEST 00000185: CALLVALUE 00000186: ISZERO 00000187: PUSH2 0x018f 0000018a: JUMPI 0000018b: PUSH1 0x00 0000018d: DUP1 0000018e: REVERT 0000018f: JUMPDEST 00000190: PUSH2 0x00cc 00000193: PUSH1 0x01 00000195: PUSH1 0xa0 00000197: PUSH1 0x02 00000199: EXP 0000019a: SUB 0000019b: PUSH1 0x04 0000019d: CALLDATALOAD 0000019e: AND 0000019f: PUSH2 0x097b 000001a2: JUMP 000001a3: JUMPDEST 000001a4: CALLVALUE 000001a5: ISZERO 000001a6: PUSH2 0x01ae 000001a9: JUMPI 000001aa: PUSH1 0x00 000001ac: DUP1 000001ad: REVERT 000001ae: JUMPDEST 000001af: PUSH2 0x01c2 000001b2: PUSH1 0x01 000001b4: PUSH1 0xa0 000001b6: PUSH1 0x02 000001b8: EXP 000001b9: SUB 000001ba: PUSH1 0x04 000001bc: CALLDATALOAD 000001bd: AND 000001be: PUSH2 0x09c0 000001c1: JUMP 000001c2: JUMPDEST 000001c3: PUSH1 0x40 000001c5: MLOAD 000001c6: DUP1 000001c7: DUP4 000001c8: DUP2 000001c9: MSTORE 000001ca: PUSH1 0x20 000001cc: ADD 000001cd: DUP3 000001ce: PUSH1 0x02 000001d0: DUP2 000001d1: GT 000001d2: ISZERO 000001d3: PUSH2 0x01d8 000001d6: JUMPI 000001d7: INVALID 000001d8: JUMPDEST 000001d9: PUSH1 0xff 000001db: AND 000001dc: DUP2 000001dd: MSTORE 000001de: PUSH1 0x20 000001e0: ADD 000001e1: SWAP3 000001e2: POP 000001e3: POP 000001e4: POP 000001e5: PUSH1 0x40 000001e7: MLOAD 000001e8: DUP1 000001e9: SWAP2 000001ea: SUB 000001eb: SWAP1 000001ec: RETURN 000001ed: JUMPDEST 000001ee: CALLVALUE 000001ef: ISZERO 000001f0: PUSH2 0x01f8 000001f3: JUMPI 000001f4: PUSH1 0x00 000001f6: DUP1 000001f7: REVERT 000001f8: JUMPDEST 000001f9: PUSH2 0x00e1 000001fc: PUSH2 0x0a3e 000001ff: JUMP 00000200: JUMPDEST 00000201: CALLVALUE 00000202: ISZERO 00000203: PUSH2 0x020b 00000206: JUMPI 00000207: PUSH1 0x00 00000209: DUP1 0000020a: REVERT 0000020b: JUMPDEST 0000020c: PUSH2 0x0155 0000020f: PUSH2 0x0a44 00000212: JUMP 00000213: JUMPDEST 00000214: CALLVALUE 00000215: ISZERO 00000216: PUSH2 0x021e 00000219: JUMPI 0000021a: PUSH1 0x00 0000021c: DUP1 0000021d: REVERT 0000021e: JUMPDEST 0000021f: PUSH2 0x00e1 00000222: PUSH2 0x0a53 00000225: JUMP 00000226: JUMPDEST 00000227: CALLVALUE 00000228: ISZERO 00000229: PUSH2 0x0231 0000022c: JUMPI 0000022d: PUSH1 0x00 0000022f: DUP1 00000230: REVERT 00000231: JUMPDEST 00000232: PUSH2 0x0155 00000235: PUSH2 0x0a59 00000238: JUMP 00000239: JUMPDEST 0000023a: CALLVALUE 0000023b: ISZERO 0000023c: PUSH2 0x0244 0000023f: JUMPI 00000240: PUSH1 0x00 00000242: DUP1 00000243: REVERT 00000244: JUMPDEST 00000245: PUSH2 0x00e1 00000248: PUSH2 0x0a68 0000024b: JUMP 0000024c: JUMPDEST 0000024d: CALLVALUE 0000024e: ISZERO 0000024f: PUSH2 0x0257 00000252: JUMPI 00000253: PUSH1 0x00 00000255: DUP1 00000256: REVERT 00000257: JUMPDEST 00000258: PUSH2 0x00e1 0000025b: PUSH2 0x0a6e 0000025e: JUMP 0000025f: JUMPDEST 00000260: CALLVALUE 00000261: ISZERO 00000262: PUSH2 0x026a 00000265: JUMPI 00000266: PUSH1 0x00 00000268: DUP1 00000269: REVERT 0000026a: JUMPDEST 0000026b: PUSH2 0x00cc 0000026e: PUSH2 0x0a74 00000271: JUMP 00000272: JUMPDEST 00000273: PUSH1 0x0a 00000275: SLOAD 00000276: DUP2 00000277: JUMP 00000278: JUMPDEST 00000279: PUSH2 0x0280 0000027c: PUSH2 0x13ca 0000027f: JUMP 00000280: JUMPDEST 00000281: PUSH1 0x17 00000283: SLOAD 00000284: PUSH1 0x00 00000286: SWAP1 00000287: DUP2 00000288: SWAP1 00000289: DUP2 0000028a: SWAP1 0000028b: DUP2 0000028c: SWAP1 0000028d: PUSH1 0xff 0000028f: AND 00000290: ISZERO 00000291: PUSH2 0x0299 00000294: JUMPI 00000295: PUSH1 0x00 00000297: DUP1 00000298: REVERT 00000299: JUMPDEST 0000029a: PUSH1 0x14 0000029c: SLOAD 0000029d: PUSH1 0x01 0000029f: PUSH1 0xa0 000002a1: PUSH1 0x02 000002a3: EXP 000002a4: SUB 000002a5: AND 000002a6: PUSH4 0xa620fcc7 000002ab: PUSH1 0x00 000002ad: PUSH1 0x40 000002af: MLOAD 000002b0: PUSH1 0x20 000002b2: ADD 000002b3: MSTORE 000002b4: PUSH1 0x40 000002b6: MLOAD 000002b7: DUP2 000002b8: PUSH4 0xffffffff 000002bd: AND 000002be: PUSH1 0xe0 000002c0: PUSH1 0x02 000002c2: EXP 000002c3: MUL 000002c4: DUP2 000002c5: MSTORE 000002c6: PUSH1 0x04 000002c8: ADD 000002c9: PUSH1 0x20 000002cb: PUSH1 0x40 000002cd: MLOAD 000002ce: DUP1 000002cf: DUP4 000002d0: SUB 000002d1: DUP2 000002d2: PUSH1 0x00 000002d4: DUP8 000002d5: DUP1 000002d6: EXTCODESIZE 000002d7: ISZERO 000002d8: ISZERO 000002d9: PUSH2 0x02e1 000002dc: JUMPI 000002dd: PUSH1 0x00 000002df: DUP1 000002e0: REVERT 000002e1: JUMPDEST 000002e2: PUSH2 0x02c6 000002e5: GAS 000002e6: SUB 000002e7: CALL 000002e8: ISZERO 000002e9: ISZERO 000002ea: PUSH2 0x02f2 000002ed: JUMPI 000002ee: PUSH1 0x00 000002f0: DUP1 000002f1: REVERT 000002f2: JUMPDEST 000002f3: POP 000002f4: POP 000002f5: POP 000002f6: PUSH1 0x40 000002f8: MLOAD 000002f9: DUP1 000002fa: MLOAD 000002fb: PUSH1 0x0a 000002fd: SLOAD 000002fe: EQ 000002ff: SWAP1 00000300: POP 00000301: PUSH2 0x0309 00000304: JUMPI 00000305: PUSH1 0x00 00000307: DUP1 00000308: REVERT 00000309: JUMPDEST 0000030a: PUSH1 0x0c 0000030c: SLOAD 0000030d: PUSH1 0x01 0000030f: PUSH1 0xa0 00000311: PUSH1 0x02 00000313: EXP 00000314: SUB 00000315: ADDRESS 00000316: AND 00000317: BALANCE 00000318: LT 00000319: ISZERO 0000031a: PUSH2 0x0322 0000031d: JUMPI 0000031e: PUSH1 0x00 00000320: DUP1 00000321: REVERT 00000322: JUMPDEST 00000323: PUSH2 0x0330 00000326: PUSH1 0x0c 00000328: SLOAD 00000329: PUSH1 0x18 0000032b: SLOAD 0000032c: PUSH2 0x0bdc 0000032f: JUMP 00000330: JUMPDEST 00000331: PUSH1 0x15 00000333: SLOAD 00000334: PUSH1 0x01 00000336: PUSH1 0xa0 00000338: PUSH1 0x02 0000033a: EXP 0000033b: SUB 0000033c: AND 0000033d: PUSH4 0x70a08231 00000342: ADDRESS 00000343: PUSH1 0x00 00000345: PUSH1 0x40 00000347: MLOAD 00000348: PUSH1 0x20 0000034a: ADD 0000034b: MSTORE 0000034c: PUSH1 0x40 0000034e: MLOAD 0000034f: PUSH1 0xe0 00000351: PUSH1 0x02 00000353: EXP 00000354: PUSH4 0xffffffff 00000359: DUP5 0000035a: AND 0000035b: MUL 0000035c: DUP2 0000035d: MSTORE 0000035e: PUSH1 0x01 00000360: PUSH1 0xa0 00000362: PUSH1 0x02 00000364: EXP 00000365: SUB 00000366: SWAP1 00000367: SWAP2 00000368: AND 00000369: PUSH1 0x04 0000036b: DUP3 0000036c: ADD 0000036d: MSTORE 0000036e: PUSH1 0x24 00000370: ADD 00000371: PUSH1 0x20 00000373: PUSH1 0x40 00000375: MLOAD 00000376: DUP1 00000377: DUP4 00000378: SUB 00000379: DUP2 0000037a: PUSH1 0x00 0000037c: DUP8 0000037d: DUP1 0000037e: EXTCODESIZE 0000037f: ISZERO 00000380: ISZERO 00000381: PUSH2 0x0389 00000384: JUMPI 00000385: PUSH1 0x00 00000387: DUP1 00000388: REVERT 00000389: JUMPDEST 0000038a: PUSH2 0x02c6 0000038d: GAS 0000038e: SUB 0000038f: CALL 00000390: ISZERO 00000391: ISZERO 00000392: PUSH2 0x039a 00000395: JUMPI 00000396: PUSH1 0x00 00000398: DUP1 00000399: REVERT 0000039a: JUMPDEST 0000039b: POP 0000039c: POP 0000039d: POP 0000039e: PUSH1 0x40 000003a0: MLOAD 000003a1: DUP1 000003a2: MLOAD 000003a3: SWAP1 000003a4: POP 000003a5: LT 000003a6: ISZERO 000003a7: ISZERO 000003a8: ISZERO 000003a9: PUSH2 0x03b1 000003ac: JUMPI 000003ad: PUSH1 0x00 000003af: DUP1 000003b0: REVERT 000003b1: JUMPDEST 000003b2: PUSH2 0x03b9 000003b5: PUSH2 0x0c07 000003b8: JUMP 000003b9: JUMPDEST 000003ba: SWAP5 000003bb: POP 000003bc: PUSH1 0x07 000003be: SLOAD 000003bf: SWAP4 000003c0: POP 000003c1: JUMPDEST 000003c2: PUSH1 0x08 000003c4: SLOAD 000003c5: DUP5 000003c6: GT 000003c7: PUSH2 0x03ee 000003ca: JUMPI 000003cb: PUSH2 0x03d6 000003ce: DUP4 000003cf: PUSH1 0x09 000003d1: SLOAD 000003d2: PUSH2 0x0d87 000003d5: JUMP 000003d6: JUMPDEST 000003d7: SWAP3 000003d8: POP 000003d9: PUSH2 0x03e4 000003dc: DUP6 000003dd: DUP6 000003de: DUP6 000003df: DUP6 000003e0: PUSH2 0x0da3 000003e3: JUMP 000003e4: JUMPDEST 000003e5: SWAP2 000003e6: POP 000003e7: DUP3 000003e8: SWAP4 000003e9: POP 000003ea: PUSH2 0x03c1 000003ed: JUMP 000003ee: JUMPDEST 000003ef: PUSH2 0x03f6 000003f2: PUSH2 0x0f8b 000003f5: JUMP 000003f6: JUMPDEST 000003f7: PUSH1 0x0d 000003f9: SSTORE 000003fa: PUSH1 0x17 000003fc: DUP1 000003fd: SLOAD 000003fe: PUSH1 0xff 00000400: NOT 00000401: AND 00000402: PUSH1 0x01 00000404: OR 00000405: SWAP1 00000406: SSTORE 00000407: PUSH1 0x0e 00000409: SLOAD 0000040a: PUSH1 0x0f 0000040c: SLOAD 0000040d: PUSH1 0x10 0000040f: SLOAD 00000410: PUSH1 0x11 00000412: SLOAD 00000413: PUSH32 0x23ab3fd308ef0e085d61939ed6d3e141f21837614a02ed448da4dce240245344 00000434: SWAP4 00000435: SWAP3 00000436: SWAP2 00000437: SWAP1 00000438: PUSH1 0x40 0000043a: MLOAD 0000043b: DUP1 0000043c: DUP6 0000043d: DUP2 0000043e: MSTORE 0000043f: PUSH1 0x20 00000441: ADD 00000442: DUP5 00000443: DUP2 00000444: MSTORE 00000445: PUSH1 0x20 00000447: ADD 00000448: DUP4 00000449: DUP2 0000044a: MSTORE 0000044b: PUSH1 0x20 0000044d: ADD 0000044e: DUP3 0000044f: DUP2 00000450: MSTORE 00000451: PUSH1 0x20 00000453: ADD 00000454: SWAP5 00000455: POP 00000456: POP 00000457: POP 00000458: POP 00000459: POP 0000045a: PUSH1 0x40 0000045c: MLOAD 0000045d: DUP1 0000045e: SWAP2 0000045f: SUB 00000460: SWAP1 00000461: LOG1 00000462: POP 00000463: POP 00000464: POP 00000465: POP 00000466: POP 00000467: JUMP 00000468: JUMPDEST 00000469: PUSH1 0x17 0000046b: SLOAD 0000046c: PUSH1 0x00 0000046e: SWAP1 0000046f: DUP2 00000470: SWAP1 00000471: DUP2 00000472: SWAP1 00000473: PUSH1 0x01 00000475: SWAP1 00000476: PUSH1 0xff 00000478: AND 00000479: ISZERO 0000047a: ISZERO 0000047b: DUP2 0000047c: EQ 0000047d: PUSH2 0x0485 00000480: JUMPI 00000481: PUSH1 0x00 00000483: DUP1 00000484: REVERT 00000485: JUMPDEST 00000486: CALLER 00000487: PUSH1 0x01 00000489: PUSH1 0x01 0000048b: PUSH1 0xa0 0000048d: PUSH1 0x02 0000048f: EXP 00000490: SUB 00000491: DUP3 00000492: AND 00000493: PUSH1 0x00 00000495: SWAP1 00000496: DUP2 00000497: MSTORE 00000498: PUSH1 0x12 0000049a: PUSH1 0x20 0000049c: MSTORE 0000049d: PUSH1 0x40 0000049f: SWAP1 000004a0: KECCAK256 000004a1: PUSH1 0x02 000004a3: SWAP1 000004a4: DUP2 000004a5: ADD 000004a6: SLOAD 000004a7: PUSH1 0xff 000004a9: AND 000004aa: SWAP1 000004ab: DUP2 000004ac: GT 000004ad: ISZERO 000004ae: PUSH2 0x04b3 000004b1: JUMPI 000004b2: INVALID 000004b3: JUMPDEST 000004b4: EQ 000004b5: PUSH2 0x04bd 000004b8: JUMPI 000004b9: PUSH1 0x00 000004bb: DUP1 000004bc: REVERT 000004bd: JUMPDEST 000004be: PUSH1 0x17 000004c0: SLOAD 000004c1: PUSH2 0x0100 000004c4: SWAP1 000004c5: DIV 000004c6: PUSH1 0xff 000004c8: AND 000004c9: ISZERO 000004ca: PUSH2 0x04d2 000004cd: JUMPI 000004ce: PUSH1 0x00 000004d0: DUP1 000004d1: REVERT 000004d2: JUMPDEST 000004d3: PUSH1 0x17 000004d5: DUP1 000004d6: SLOAD 000004d7: PUSH2 0xff00 000004da: NOT 000004db: AND 000004dc: PUSH2 0x0100 000004df: SWAP1 000004e0: DUP2 000004e1: OR 000004e2: SWAP1 000004e3: SWAP2 000004e4: SSTORE 000004e5: PUSH1 0x01 000004e7: PUSH1 0xa0 000004e9: PUSH1 0x02 000004eb: EXP 000004ec: SUB 000004ed: CALLER 000004ee: AND 000004ef: PUSH1 0x00 000004f1: SWAP1 000004f2: DUP2 000004f3: MSTORE 000004f4: PUSH1 0x12 000004f6: PUSH1 0x20 000004f8: SWAP1 000004f9: DUP2 000004fa: MSTORE 000004fb: PUSH1 0x40 000004fd: DUP1 000004fe: DUP4 000004ff: KECCAK256 00000500: DUP1 00000501: SLOAD 00000502: DUP5 00000503: MSTORE 00000504: PUSH1 0x06 00000506: SWAP1 00000507: SWAP3 00000508: MSTORE 00000509: SWAP1 0000050a: SWAP2 0000050b: KECCAK256 0000050c: PUSH1 0x01 0000050e: SWAP1 0000050f: DUP2 00000510: ADD 00000511: SLOAD 00000512: SWAP1 00000513: DUP3 00000514: ADD 00000515: SLOAD 00000516: SWAP2 00000517: SWAP8 00000518: POP 00000519: PUSH2 0x0527 0000051c: SWAP3 0000051d: SWAP1 0000051e: DIV 0000051f: PUSH1 0xff 00000521: AND 00000522: SWAP1 00000523: PUSH2 0x1118 00000526: JUMP 00000527: JUMPDEST 00000528: SWAP4 00000529: POP 0000052a: PUSH1 0x00 0000052c: SWAP3 0000052d: POP 0000052e: PUSH1 0x00 00000530: PUSH1 0x0d 00000532: SLOAD 00000533: GT 00000534: DUP1 00000535: ISZERO 00000536: PUSH2 0x053f 00000539: JUMPI 0000053a: POP 0000053b: PUSH1 0x00 0000053d: DUP5 0000053e: GT 0000053f: JUMPDEST 00000540: ISZERO 00000541: PUSH2 0x0558 00000544: JUMPI 00000545: PUSH2 0x0550 00000548: DUP5 00000549: PUSH1 0x0d 0000054b: SLOAD 0000054c: PUSH2 0x0d87 0000054f: JUMP 00000550: JUMPDEST 00000551: PUSH1 0x00 00000553: PUSH1 0x0d 00000555: SSTORE 00000556: SWAP4 00000557: POP 00000558: JUMPDEST 00000559: PUSH1 0x01 0000055b: PUSH1 0xa0 0000055d: PUSH1 0x02 0000055f: EXP 00000560: SUB 00000561: CALLER 00000562: AND 00000563: PUSH1 0x00 00000565: SWAP1 00000566: DUP2 00000567: MSTORE 00000568: PUSH1 0x12 0000056a: PUSH1 0x20 0000056c: MSTORE 0000056d: PUSH1 0x40 0000056f: SWAP1 00000570: KECCAK256 00000571: PUSH1 0x02 00000573: SWAP1 00000574: DUP2 00000575: ADD 00000576: DUP1 00000577: SLOAD 00000578: PUSH1 0xff 0000057a: NOT 0000057b: AND 0000057c: PUSH1 0x01 0000057e: DUP4 0000057f: MUL 00000580: OR 00000581: SWAP1 00000582: SSTORE 00000583: POP 00000584: PUSH2 0x0598 00000587: DUP4 00000588: PUSH2 0x0593 0000058b: DUP7 0000058c: PUSH1 0x18 0000058e: SLOAD 0000058f: PUSH2 0x0bdc 00000592: JUMP 00000593: JUMPDEST 00000594: PUSH2 0x0d87 00000597: JUMP 00000598: JUMPDEST 00000599: PUSH1 0x15 0000059b: SLOAD 0000059c: SWAP1 0000059d: SWAP4 0000059e: POP 0000059f: PUSH1 0x01 000005a1: PUSH1 0xa0 000005a3: PUSH1 0x02 000005a5: EXP 000005a6: SUB 000005a7: AND 000005a8: PUSH4 0xa9059cbb 000005ad: CALLER 000005ae: DUP6 000005af: PUSH1 0x00 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: PUSH1 0x20 000005b6: ADD 000005b7: MSTORE 000005b8: PUSH1 0x40 000005ba: MLOAD 000005bb: PUSH1 0xe0 000005bd: PUSH1 0x02 000005bf: EXP 000005c0: PUSH4 0xffffffff 000005c5: DUP6 000005c6: AND 000005c7: MUL 000005c8: DUP2 000005c9: MSTORE 000005ca: PUSH1 0x01 000005cc: PUSH1 0xa0 000005ce: PUSH1 0x02 000005d0: EXP 000005d1: SUB 000005d2: SWAP1 000005d3: SWAP3 000005d4: AND 000005d5: PUSH1 0x04 000005d7: DUP4 000005d8: ADD 000005d9: MSTORE 000005da: PUSH1 0x24 000005dc: DUP3 000005dd: ADD 000005de: MSTORE 000005df: PUSH1 0x44 000005e1: ADD 000005e2: PUSH1 0x20 000005e4: PUSH1 0x40 000005e6: MLOAD 000005e7: DUP1 000005e8: DUP4 000005e9: SUB 000005ea: DUP2 000005eb: PUSH1 0x00 000005ed: DUP8 000005ee: DUP1 000005ef: EXTCODESIZE 000005f0: ISZERO 000005f1: ISZERO 000005f2: PUSH2 0x05fa 000005f5: JUMPI 000005f6: PUSH1 0x00 000005f8: DUP1 000005f9: REVERT 000005fa: JUMPDEST 000005fb: PUSH2 0x02c6 000005fe: GAS 000005ff: SUB 00000600: CALL 00000601: ISZERO 00000602: ISZERO 00000603: PUSH2 0x060b 00000606: JUMPI 00000607: PUSH1 0x00 00000609: DUP1 0000060a: REVERT 0000060b: JUMPDEST 0000060c: POP 0000060d: POP 0000060e: POP 0000060f: PUSH1 0x40 00000611: MLOAD 00000612: DUP1 00000613: MLOAD 00000614: SWAP1 00000615: POP 00000616: ISZERO 00000617: ISZERO 00000618: PUSH2 0x0620 0000061b: JUMPI 0000061c: PUSH1 0x00 0000061e: DUP1 0000061f: REVERT 00000620: JUMPDEST 00000621: PUSH1 0x01 00000623: PUSH1 0xa0 00000625: PUSH1 0x02 00000627: EXP 00000628: SUB 00000629: CALLER 0000062a: AND 0000062b: DUP5 0000062c: ISZERO 0000062d: PUSH2 0x08fc 00000630: MUL 00000631: DUP6 00000632: PUSH1 0x40 00000634: MLOAD 00000635: PUSH1 0x00 00000637: PUSH1 0x40 00000639: MLOAD 0000063a: DUP1 0000063b: DUP4 0000063c: SUB 0000063d: DUP2 0000063e: DUP6 0000063f: DUP9 00000640: DUP9 00000641: CALL 00000642: SWAP4 00000643: POP 00000644: POP 00000645: POP 00000646: POP 00000647: ISZERO 00000648: ISZERO 00000649: PUSH2 0x0651 0000064c: JUMPI 0000064d: PUSH1 0x00 0000064f: DUP1 00000650: REVERT 00000651: JUMPDEST 00000652: PUSH1 0x17 00000654: DUP1 00000655: SLOAD 00000656: PUSH2 0xff00 00000659: NOT 0000065a: AND 0000065b: SWAP1 0000065c: SSTORE 0000065d: PUSH32 0x5bf2177ec82333d646ddac9ef13ddd7f57260091072d459309fe1a9ee531e2ca 0000067e: CALLER 0000067f: DUP5 00000680: PUSH1 0x40 00000682: MLOAD 00000683: PUSH1 0x01 00000685: PUSH1 0xa0 00000687: PUSH1 0x02 00000689: EXP 0000068a: SUB 0000068b: SWAP1 0000068c: SWAP3 0000068d: AND 0000068e: DUP3 0000068f: MSTORE 00000690: PUSH1 0x20 00000692: DUP3 00000693: ADD 00000694: MSTORE 00000695: PUSH1 0x40 00000697: SWAP1 00000698: DUP2 00000699: ADD 0000069a: SWAP1 0000069b: MLOAD 0000069c: DUP1 0000069d: SWAP2 0000069e: SUB 0000069f: SWAP1 000006a0: LOG1 000006a1: POP 000006a2: POP 000006a3: POP 000006a4: POP 000006a5: POP 000006a6: JUMP 000006a7: JUMPDEST 000006a8: PUSH1 0x16 000006aa: SLOAD 000006ab: DUP2 000006ac: JUMP 000006ad: JUMPDEST 000006ae: PUSH1 0x00 000006b0: DUP1 000006b1: PUSH1 0x00 000006b3: DUP1 000006b4: PUSH1 0x00 000006b6: DUP1 000006b7: PUSH1 0x00 000006b9: DUP1 000006ba: PUSH1 0x00 000006bc: DUP1 000006bd: PUSH1 0x00 000006bf: DUP1 000006c0: SWAP1 000006c1: SLOAD 000006c2: SWAP1 000006c3: PUSH2 0x0100 000006c6: EXP 000006c7: SWAP1 000006c8: DIV 000006c9: PUSH1 0x01 000006cb: PUSH1 0xa0 000006cd: PUSH1 0x02 000006cf: EXP 000006d0: SUB 000006d1: AND 000006d2: PUSH1 0x01 000006d4: PUSH1 0xa0 000006d6: PUSH1 0x02 000006d8: EXP 000006d9: SUB 000006da: AND 000006db: CALLER 000006dc: PUSH1 0x01 000006de: PUSH1 0xa0 000006e0: PUSH1 0x02 000006e2: EXP 000006e3: SUB 000006e4: AND 000006e5: EQ 000006e6: ISZERO 000006e7: PUSH2 0x0950 000006ea: JUMPI 000006eb: PUSH1 0x17 000006ed: SLOAD 000006ee: PUSH1 0x00 000006f0: SWAP1 000006f1: PUSH1 0xff 000006f3: AND 000006f4: ISZERO 000006f5: PUSH2 0x06fd 000006f8: JUMPI 000006f9: PUSH1 0x00 000006fb: DUP1 000006fc: REVERT 000006fd: JUMPDEST 000006fe: PUSH1 0x14 00000700: SLOAD 00000701: PUSH1 0x01 00000703: PUSH1 0xa0 00000705: PUSH1 0x02 00000707: EXP 00000708: SUB 00000709: AND 0000070a: PUSH4 0xa620fcc7 0000070f: PUSH1 0x00 00000711: PUSH1 0x40 00000713: MLOAD 00000714: PUSH1 0x20 00000716: ADD 00000717: MSTORE 00000718: PUSH1 0x40 0000071a: MLOAD 0000071b: DUP2 0000071c: PUSH4 0xffffffff 00000721: AND 00000722: PUSH1 0xe0 00000724: PUSH1 0x02 00000726: EXP 00000727: MUL 00000728: DUP2 00000729: MSTORE 0000072a: PUSH1 0x04 0000072c: ADD 0000072d: PUSH1 0x20 0000072f: PUSH1 0x40 00000731: MLOAD 00000732: DUP1 00000733: DUP4 00000734: SUB 00000735: DUP2 00000736: PUSH1 0x00 00000738: DUP8 00000739: DUP1 0000073a: EXTCODESIZE 0000073b: ISZERO 0000073c: ISZERO 0000073d: PUSH2 0x0745 00000740: JUMPI 00000741: PUSH1 0x00 00000743: DUP1 00000744: REVERT 00000745: JUMPDEST 00000746: PUSH2 0x02c6 00000749: GAS 0000074a: SUB 0000074b: CALL 0000074c: ISZERO 0000074d: ISZERO 0000074e: PUSH2 0x0756 00000751: JUMPI 00000752: PUSH1 0x00 00000754: DUP1 00000755: REVERT 00000756: JUMPDEST 00000757: POP 00000758: POP 00000759: POP 0000075a: PUSH1 0x40 0000075c: MLOAD 0000075d: DUP1 0000075e: MLOAD 0000075f: SWAP7 00000760: POP 00000761: POP 00000762: DUP6 00000763: DUP13 00000764: LT 00000765: PUSH2 0x076d 00000768: JUMPI 00000769: PUSH1 0x00 0000076b: DUP1 0000076c: REVERT 0000076d: JUMPDEST 0000076e: PUSH1 0x0a 00000770: SLOAD 00000771: DUP7 00000772: SWAP1 00000773: LT 00000774: PUSH2 0x077c 00000777: JUMPI 00000778: PUSH1 0x00 0000077a: DUP1 0000077b: REVERT 0000077c: JUMPDEST 0000077d: PUSH2 0x0785 00000780: DUP13 00000781: PUSH2 0x119c 00000784: JUMP 00000785: JUMPDEST 00000786: SWAP4 00000787: SWAP15 00000788: POP 00000789: SWAP2 0000078a: SWAP13 0000078b: POP 0000078c: SWAP11 0000078d: POP 0000078e: SWAP9 0000078f: POP 00000790: SWAP7 00000791: POP 00000792: PUSH1 0x01 00000794: PUSH1 0xa0 00000796: PUSH1 0x02 00000798: EXP 00000799: SUB 0000079a: DUP12 0000079b: AND 0000079c: ISZERO 0000079d: ISZERO 0000079e: PUSH2 0x07a6 000007a1: JUMPI 000007a2: PUSH1 0x00 000007a4: DUP1 000007a5: REVERT 000007a6: JUMPDEST 000007a7: PUSH1 0x01 000007a9: PUSH1 0xa0 000007ab: PUSH1 0x02 000007ad: EXP 000007ae: SUB 000007af: DUP12 000007b0: AND 000007b1: PUSH1 0x00 000007b3: SWAP1 000007b4: DUP2 000007b5: MSTORE 000007b6: PUSH1 0x12 000007b8: PUSH1 0x20 000007ba: MSTORE 000007bb: PUSH1 0x40 000007bd: DUP2 000007be: KECCAK256 000007bf: PUSH1 0x02 000007c1: SWAP1 000007c2: DUP2 000007c3: ADD 000007c4: SLOAD 000007c5: PUSH1 0xff 000007c7: AND 000007c8: SWAP1 000007c9: DUP2 000007ca: GT 000007cb: ISZERO 000007cc: PUSH2 0x07d1 000007cf: JUMPI 000007d0: INVALID 000007d1: JUMPDEST 000007d2: EQ 000007d3: PUSH2 0x07db 000007d6: JUMPI 000007d7: PUSH1 0x00 000007d9: DUP1 000007da: REVERT 000007db: JUMPDEST 000007dc: PUSH1 0x09 000007de: SLOAD 000007df: DUP11 000007e0: DUP2 000007e1: ISZERO 000007e2: ISZERO 000007e3: PUSH2 0x07e8 000007e6: JUMPI 000007e7: INVALID 000007e8: JUMPDEST 000007e9: MOD 000007ea: SWAP5 000007eb: POP 000007ec: PUSH1 0x07 000007ee: SLOAD 000007ef: DUP11 000007f0: LT 000007f1: ISZERO 000007f2: PUSH2 0x07ff 000007f5: JUMPI 000007f6: PUSH1 0x07 000007f8: SLOAD 000007f9: SWAP4 000007fa: POP 000007fb: PUSH2 0x0841 000007fe: JUMP 000007ff: JUMPDEST 00000800: PUSH1 0x08 00000802: SLOAD 00000803: DUP11 00000804: GT 00000805: ISZERO 00000806: PUSH2 0x0813 00000809: JUMPI 0000080a: PUSH1 0x08 0000080c: SLOAD 0000080d: SWAP4 0000080e: POP 0000080f: PUSH2 0x0841 00000812: JUMP 00000813: JUMPDEST 00000814: DUP10 00000815: SWAP4 00000816: POP 00000817: DUP5 00000818: ISZERO 00000819: PUSH2 0x0841 0000081c: JUMPI 0000081d: PUSH2 0x0826 00000820: DUP11 00000821: DUP7 00000822: PUSH2 0x1250 00000825: JUMP 00000826: JUMPDEST 00000827: SWAP4 00000828: POP 00000829: PUSH1 0x01 0000082b: SLOAD 0000082c: DUP5 0000082d: LT 0000082e: ISZERO 0000082f: PUSH2 0x0841 00000832: JUMPI 00000833: PUSH2 0x083e 00000836: DUP5 00000837: PUSH1 0x09 00000839: SLOAD 0000083a: PUSH2 0x0d87 0000083d: JUMP 0000083e: JUMPDEST 0000083f: SWAP4 00000840: POP 00000841: JUMPDEST 00000842: PUSH1 0x00 00000844: DUP5 00000845: DUP2 00000846: MSTORE 00000847: PUSH1 0x06 00000849: PUSH1 0x20 0000084b: MSTORE 0000084c: PUSH1 0x40 0000084e: SWAP1 0000084f: KECCAK256 00000850: PUSH1 0x01 00000852: DUP2 00000853: ADD 00000854: SLOAD 00000855: SWAP1 00000856: SWAP4 00000857: POP 00000858: PUSH3 0x010000 0000085c: SWAP1 0000085d: DIV 0000085e: PUSH1 0xff 00000860: AND 00000861: ISZERO 00000862: ISZERO 00000863: PUSH2 0x086b 00000866: JUMPI 00000867: PUSH1 0x00 00000869: DUP1 0000086a: REVERT 0000086b: JUMPDEST 0000086c: PUSH2 0x0875 0000086f: DUP10 00000870: DUP9 00000871: PUSH2 0x1264 00000874: JUMP 00000875: JUMPDEST 00000876: PUSH1 0x00 00000878: DUP6 00000879: DUP2 0000087a: MSTORE 0000087b: PUSH1 0x06 0000087d: PUSH1 0x20 0000087f: MSTORE 00000880: PUSH1 0x40 00000882: SWAP1 00000883: KECCAK256 00000884: SLOAD 00000885: SWAP1 00000886: SWAP3 00000887: POP 00000888: PUSH2 0x0891 0000088b: SWAP1 0000088c: DUP4 0000088d: PUSH2 0x0d87 00000890: JUMP 00000891: JUMPDEST 00000892: PUSH1 0x00 00000894: DUP6 00000895: DUP2 00000896: MSTORE 00000897: PUSH1 0x06 00000899: PUSH1 0x20 0000089b: MSTORE 0000089c: PUSH1 0x40 0000089e: SWAP1 0000089f: KECCAK256 000008a0: SSTORE 000008a1: PUSH1 0x0b 000008a3: SLOAD 000008a4: PUSH2 0x08ad 000008a7: SWAP1 000008a8: DUP4 000008a9: PUSH2 0x0d87 000008ac: JUMP 000008ad: JUMPDEST 000008ae: PUSH1 0x0b 000008b0: SSTORE 000008b1: PUSH1 0x0a 000008b3: DUP1 000008b4: SLOAD 000008b5: PUSH1 0x01 000008b7: SWAP1 000008b8: DUP2 000008b9: ADD 000008ba: SWAP1 000008bb: SWAP2 000008bc: SSTORE 000008bd: PUSH1 0x01 000008bf: PUSH1 0xa0 000008c1: PUSH1 0x02 000008c3: EXP 000008c4: SUB 000008c5: DUP13 000008c6: AND 000008c7: PUSH1 0x00 000008c9: SWAP1 000008ca: DUP2 000008cb: MSTORE 000008cc: PUSH1 0x12 000008ce: PUSH1 0x20 000008d0: MSTORE 000008d1: PUSH1 0x40 000008d3: SWAP1 000008d4: KECCAK256 000008d5: DUP6 000008d6: DUP2 000008d7: SSTORE 000008d8: DUP1 000008d9: DUP3 000008da: ADD 000008db: DUP5 000008dc: SWAP1 000008dd: SSTORE 000008de: PUSH1 0x02 000008e0: ADD 000008e1: DUP1 000008e2: SLOAD 000008e3: PUSH1 0xff 000008e5: NOT 000008e6: AND 000008e7: DUP3 000008e8: DUP1 000008e9: MUL 000008ea: OR 000008eb: SWAP1 000008ec: SSTORE 000008ed: POP 000008ee: PUSH32 0x9ec97c382d56b4d35b4d7057460ea7f57ff800af60a182833c33dc3e9b65726e 0000090f: DUP12 00000910: DUP12 00000911: DUP7 00000912: DUP6 00000913: PUSH1 0x40 00000915: MLOAD 00000916: DUP1 00000917: DUP6 00000918: PUSH1 0x01 0000091a: PUSH1 0xa0 0000091c: PUSH1 0x02 0000091e: EXP 0000091f: SUB 00000920: AND 00000921: PUSH1 0x01 00000923: PUSH1 0xa0 00000925: PUSH1 0x02 00000927: EXP 00000928: SUB 00000929: AND 0000092a: DUP2 0000092b: MSTORE 0000092c: PUSH1 0x20 0000092e: ADD 0000092f: DUP5 00000930: DUP2 00000931: MSTORE 00000932: PUSH1 0x20 00000934: ADD 00000935: DUP4 00000936: DUP2 00000937: MSTORE 00000938: PUSH1 0x20 0000093a: ADD 0000093b: DUP3 0000093c: DUP2 0000093d: MSTORE 0000093e: PUSH1 0x20 00000940: ADD 00000941: SWAP5 00000942: POP 00000943: POP 00000944: POP 00000945: POP 00000946: POP 00000947: PUSH1 0x40 00000949: MLOAD 0000094a: DUP1 0000094b: SWAP2 0000094c: SUB 0000094d: SWAP1 0000094e: LOG1 0000094f: POP 00000950: JUMPDEST 00000951: POP 00000952: POP 00000953: POP 00000954: POP 00000955: POP 00000956: POP 00000957: POP 00000958: POP 00000959: POP 0000095a: POP 0000095b: POP 0000095c: JUMP 0000095d: JUMPDEST 0000095e: PUSH1 0x13 00000960: SLOAD 00000961: PUSH1 0x01 00000963: PUSH1 0xa0 00000965: PUSH1 0x02 00000967: EXP 00000968: SUB 00000969: AND 0000096a: DUP2 0000096b: JUMP 0000096c: JUMPDEST 0000096d: PUSH1 0x15 0000096f: SLOAD 00000970: PUSH1 0x01 00000972: PUSH1 0xa0 00000974: PUSH1 0x02 00000976: EXP 00000977: SUB 00000978: AND 00000979: DUP2 0000097a: JUMP 0000097b: JUMPDEST 0000097c: PUSH1 0x00 0000097e: SLOAD 0000097f: CALLER 00000980: PUSH1 0x01 00000982: PUSH1 0xa0 00000984: PUSH1 0x02 00000986: EXP 00000987: SUB 00000988: SWAP1 00000989: DUP2 0000098a: AND 0000098b: SWAP2 0000098c: AND 0000098d: EQ 0000098e: ISZERO 0000098f: PUSH2 0x09bd 00000992: JUMPI 00000993: PUSH1 0x01 00000995: PUSH1 0xa0 00000997: PUSH1 0x02 00000999: EXP 0000099a: SUB 0000099b: DUP2 0000099c: AND 0000099d: ISZERO 0000099e: PUSH2 0x09bd 000009a1: JUMPI 000009a2: PUSH1 0x00 000009a4: DUP1 000009a5: SLOAD 000009a6: PUSH1 0x01 000009a8: PUSH1 0xa0 000009aa: PUSH1 0x02 000009ac: EXP 000009ad: SUB 000009ae: NOT 000009af: AND 000009b0: PUSH1 0x01 000009b2: PUSH1 0xa0 000009b4: PUSH1 0x02 000009b6: EXP 000009b7: SUB 000009b8: DUP4 000009b9: AND 000009ba: OR 000009bb: SWAP1 000009bc: SSTORE 000009bd: JUMPDEST 000009be: POP 000009bf: JUMP 000009c0: JUMPDEST 000009c1: PUSH1 0x17 000009c3: SLOAD 000009c4: PUSH1 0x00 000009c6: SWAP1 000009c7: DUP2 000009c8: SWAP1 000009c9: DUP2 000009ca: SWAP1 000009cb: DUP2 000009cc: SWAP1 000009cd: PUSH1 0x01 000009cf: SWAP1 000009d0: PUSH1 0xff 000009d2: AND 000009d3: ISZERO 000009d4: ISZERO 000009d5: DUP2 000009d6: EQ 000009d7: PUSH2 0x09df 000009da: JUMPI 000009db: PUSH1 0x00 000009dd: DUP1 000009de: REVERT 000009df: JUMPDEST 000009e0: PUSH1 0x01 000009e2: PUSH1 0xa0 000009e4: PUSH1 0x02 000009e6: EXP 000009e7: SUB 000009e8: DUP7 000009e9: AND 000009ea: PUSH1 0x00 000009ec: SWAP1 000009ed: DUP2 000009ee: MSTORE 000009ef: PUSH1 0x12 000009f1: PUSH1 0x20 000009f3: SWAP1 000009f4: DUP2 000009f5: MSTORE 000009f6: PUSH1 0x40 000009f8: DUP1 000009f9: DUP4 000009fa: KECCAK256 000009fb: DUP1 000009fc: SLOAD 000009fd: DUP5 000009fe: MSTORE 000009ff: PUSH1 0x06 00000a01: SWAP1 00000a02: SWAP3 00000a03: MSTORE 00000a04: SWAP1 00000a05: SWAP2 00000a06: KECCAK256 00000a07: PUSH1 0x01 00000a09: SWAP1 00000a0a: DUP2 00000a0b: ADD 00000a0c: SLOAD 00000a0d: SWAP1 00000a0e: DUP3 00000a0f: ADD 00000a10: SLOAD 00000a11: SWAP2 00000a12: SWAP5 00000a13: POP 00000a14: PUSH2 0x0a26 00000a17: SWAP2 00000a18: PUSH2 0x0100 00000a1b: SWAP1 00000a1c: SWAP2 00000a1d: DIV 00000a1e: PUSH1 0xff 00000a20: AND 00000a21: SWAP1 00000a22: PUSH2 0x1118 00000a25: JUMP 00000a26: JUMPDEST 00000a27: PUSH1 0x02 00000a29: DUP5 00000a2a: ADD 00000a2b: SLOAD 00000a2c: SWAP1 00000a2d: SWAP6 00000a2e: POP 00000a2f: PUSH1 0xff 00000a31: AND 00000a32: SWAP4 00000a33: POP 00000a34: DUP5 00000a35: SWAP2 00000a36: POP 00000a37: POP 00000a38: POP 00000a39: POP 00000a3a: SWAP2 00000a3b: POP 00000a3c: SWAP2 00000a3d: JUMP 00000a3e: JUMPDEST 00000a3f: PUSH1 0x0c 00000a41: SLOAD 00000a42: DUP2 00000a43: JUMP 00000a44: JUMPDEST 00000a45: PUSH1 0x14 00000a47: SLOAD 00000a48: PUSH1 0x01 00000a4a: PUSH1 0xa0 00000a4c: PUSH1 0x02 00000a4e: EXP 00000a4f: SUB 00000a50: AND 00000a51: DUP2 00000a52: JUMP 00000a53: JUMPDEST 00000a54: PUSH1 0x01 00000a56: SLOAD 00000a57: DUP2 00000a58: JUMP 00000a59: JUMPDEST 00000a5a: PUSH1 0x00 00000a5c: SLOAD 00000a5d: PUSH1 0x01 00000a5f: PUSH1 0xa0 00000a61: PUSH1 0x02 00000a63: EXP 00000a64: SUB 00000a65: AND 00000a66: DUP2 00000a67: JUMP 00000a68: JUMPDEST 00000a69: PUSH1 0x0b 00000a6b: SLOAD 00000a6c: DUP2 00000a6d: JUMP 00000a6e: JUMPDEST 00000a6f: PUSH1 0x0d 00000a71: SLOAD 00000a72: DUP2 00000a73: JUMP 00000a74: JUMPDEST 00000a75: PUSH1 0x13 00000a77: SLOAD 00000a78: PUSH1 0x00 00000a7a: SWAP1 00000a7b: PUSH1 0x01 00000a7d: PUSH1 0xa0 00000a7f: PUSH1 0x02 00000a81: EXP 00000a82: SUB 00000a83: AND 00000a84: ISZERO 00000a85: ISZERO 00000a86: PUSH2 0x0a8e 00000a89: JUMPI 00000a8a: PUSH1 0x00 00000a8c: DUP1 00000a8d: REVERT 00000a8e: JUMPDEST 00000a8f: PUSH1 0x13 00000a91: SLOAD 00000a92: CALLER 00000a93: PUSH1 0x01 00000a95: PUSH1 0xa0 00000a97: PUSH1 0x02 00000a99: EXP 00000a9a: SUB 00000a9b: SWAP1 00000a9c: DUP2 00000a9d: AND 00000a9e: SWAP2 00000a9f: AND 00000aa0: EQ 00000aa1: PUSH2 0x0aa9 00000aa4: JUMPI 00000aa5: PUSH1 0x00 00000aa7: DUP1 00000aa8: REVERT 00000aa9: JUMPDEST 00000aaa: PUSH1 0x15 00000aac: SLOAD 00000aad: PUSH1 0x01 00000aaf: PUSH1 0xa0 00000ab1: PUSH1 0x02 00000ab3: EXP 00000ab4: SUB 00000ab5: AND 00000ab6: PUSH4 0x70a08231 00000abb: ADDRESS 00000abc: PUSH1 0x00 00000abe: PUSH1 0x40 00000ac0: MLOAD 00000ac1: PUSH1 0x20 00000ac3: ADD 00000ac4: MSTORE 00000ac5: PUSH1 0x40 00000ac7: MLOAD 00000ac8: PUSH1 0xe0 00000aca: PUSH1 0x02 00000acc: EXP 00000acd: PUSH4 0xffffffff 00000ad2: DUP5 00000ad3: AND 00000ad4: MUL 00000ad5: DUP2 00000ad6: MSTORE 00000ad7: PUSH1 0x01 00000ad9: PUSH1 0xa0 00000adb: PUSH1 0x02 00000add: EXP 00000ade: SUB 00000adf: SWAP1 00000ae0: SWAP2 00000ae1: AND 00000ae2: PUSH1 0x04 00000ae4: DUP3 00000ae5: ADD 00000ae6: MSTORE 00000ae7: PUSH1 0x24 00000ae9: ADD 00000aea: PUSH1 0x20 00000aec: PUSH1 0x40 00000aee: MLOAD 00000aef: DUP1 00000af0: DUP4 00000af1: SUB 00000af2: DUP2 00000af3: PUSH1 0x00 00000af5: DUP8 00000af6: DUP1 00000af7: EXTCODESIZE 00000af8: ISZERO 00000af9: ISZERO 00000afa: PUSH2 0x0b02 00000afd: JUMPI 00000afe: PUSH1 0x00 00000b00: DUP1 00000b01: REVERT 00000b02: JUMPDEST 00000b03: PUSH2 0x02c6 00000b06: GAS 00000b07: SUB 00000b08: CALL 00000b09: ISZERO 00000b0a: ISZERO 00000b0b: PUSH2 0x0b13 00000b0e: JUMPI 00000b0f: PUSH1 0x00 00000b11: DUP1 00000b12: REVERT 00000b13: JUMPDEST 00000b14: POP 00000b15: POP 00000b16: POP 00000b17: PUSH1 0x40 00000b19: MLOAD 00000b1a: DUP1 00000b1b: MLOAD 00000b1c: PUSH1 0x13 00000b1e: SLOAD 00000b1f: SWAP1 00000b20: SWAP3 00000b21: POP 00000b22: PUSH1 0x01 00000b24: PUSH1 0xa0 00000b26: PUSH1 0x02 00000b28: EXP 00000b29: SUB 00000b2a: SWAP1 00000b2b: DUP2 00000b2c: AND 00000b2d: SWAP2 00000b2e: POP 00000b2f: ADDRESS 00000b30: AND 00000b31: BALANCE 00000b32: DUP1 00000b33: ISZERO 00000b34: PUSH2 0x08fc 00000b37: MUL 00000b38: SWAP1 00000b39: PUSH1 0x40 00000b3b: MLOAD 00000b3c: PUSH1 0x00 00000b3e: PUSH1 0x40 00000b40: MLOAD 00000b41: DUP1 00000b42: DUP4 00000b43: SUB 00000b44: DUP2 00000b45: DUP6 00000b46: DUP9 00000b47: DUP9 00000b48: CALL 00000b49: SWAP4 00000b4a: POP 00000b4b: POP 00000b4c: POP 00000b4d: POP 00000b4e: ISZERO 00000b4f: ISZERO 00000b50: PUSH2 0x0b58 00000b53: JUMPI 00000b54: PUSH1 0x00 00000b56: DUP1 00000b57: REVERT 00000b58: JUMPDEST 00000b59: PUSH1 0x15 00000b5b: SLOAD 00000b5c: PUSH1 0x13 00000b5e: SLOAD 00000b5f: PUSH1 0x01 00000b61: PUSH1 0xa0 00000b63: PUSH1 0x02 00000b65: EXP 00000b66: SUB 00000b67: SWAP2 00000b68: DUP3 00000b69: AND 00000b6a: SWAP2 00000b6b: PUSH4 0xa9059cbb 00000b70: SWAP2 00000b71: AND 00000b72: DUP4 00000b73: PUSH1 0x00 00000b75: PUSH1 0x40 00000b77: MLOAD 00000b78: PUSH1 0x20 00000b7a: ADD 00000b7b: MSTORE 00000b7c: PUSH1 0x40 00000b7e: MLOAD 00000b7f: PUSH1 0xe0 00000b81: PUSH1 0x02 00000b83: EXP 00000b84: PUSH4 0xffffffff 00000b89: DUP6 00000b8a: AND 00000b8b: MUL 00000b8c: DUP2 00000b8d: MSTORE 00000b8e: PUSH1 0x01 00000b90: PUSH1 0xa0 00000b92: PUSH1 0x02 00000b94: EXP 00000b95: SUB 00000b96: SWAP1 00000b97: SWAP3 00000b98: AND 00000b99: PUSH1 0x04 00000b9b: DUP4 00000b9c: ADD 00000b9d: MSTORE 00000b9e: PUSH1 0x24 00000ba0: DUP3 00000ba1: ADD 00000ba2: MSTORE 00000ba3: PUSH1 0x44 00000ba5: ADD 00000ba6: PUSH1 0x20 00000ba8: PUSH1 0x40 00000baa: MLOAD 00000bab: DUP1 00000bac: DUP4 00000bad: SUB 00000bae: DUP2 00000baf: PUSH1 0x00 00000bb1: DUP8 00000bb2: DUP1 00000bb3: EXTCODESIZE 00000bb4: ISZERO 00000bb5: ISZERO 00000bb6: PUSH2 0x0bbe 00000bb9: JUMPI 00000bba: PUSH1 0x00 00000bbc: DUP1 00000bbd: REVERT 00000bbe: JUMPDEST 00000bbf: PUSH2 0x02c6 00000bc2: GAS 00000bc3: SUB 00000bc4: CALL 00000bc5: ISZERO 00000bc6: ISZERO 00000bc7: PUSH2 0x0bcf 00000bca: JUMPI 00000bcb: PUSH1 0x00 00000bcd: DUP1 00000bce: REVERT 00000bcf: JUMPDEST 00000bd0: POP 00000bd1: POP 00000bd2: POP 00000bd3: PUSH1 0x40 00000bd5: MLOAD 00000bd6: DUP1 00000bd7: MLOAD 00000bd8: POP 00000bd9: POP 00000bda: POP 00000bdb: JUMP 00000bdc: JUMPDEST 00000bdd: PUSH1 0x00 00000bdf: DUP3 00000be0: DUP3 00000be1: MUL 00000be2: PUSH2 0x0c00 00000be5: DUP5 00000be6: ISZERO 00000be7: DUP1 00000be8: PUSH2 0x0bfb 00000beb: JUMPI 00000bec: POP 00000bed: DUP4 00000bee: DUP6 00000bef: DUP4 00000bf0: DUP2 00000bf1: ISZERO 00000bf2: ISZERO 00000bf3: PUSH2 0x0bf8 00000bf6: JUMPI 00000bf7: INVALID 00000bf8: JUMPDEST 00000bf9: DIV 00000bfa: EQ 00000bfb: JUMPDEST 00000bfc: PUSH2 0x134e 00000bff: JUMP 00000c00: JUMPDEST 00000c01: SWAP4 00000c02: SWAP3 00000c03: POP 00000c04: POP 00000c05: POP 00000c06: JUMP 00000c07: JUMPDEST 00000c08: PUSH2 0x0c0f 00000c0b: PUSH2 0x13ca 00000c0e: JUMP 00000c0f: JUMPDEST 00000c10: PUSH1 0x00 00000c12: DUP1 00000c13: PUSH2 0x0c1d 00000c16: PUSH1 0x02 00000c18: SLOAD 00000c19: PUSH2 0x135a 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH1 0xc0 00000c20: DUP6 00000c21: ADD 00000c22: MSTORE 00000c23: PUSH1 0xa0 00000c25: DUP5 00000c26: ADD 00000c27: MSTORE 00000c28: PUSH1 0x03 00000c2a: SLOAD 00000c2b: PUSH2 0x0c33 00000c2e: SWAP1 00000c2f: PUSH2 0x135a 00000c32: JUMP 00000c33: JUMPDEST 00000c34: PUSH1 0xe0 00000c36: DUP6 00000c37: ADD 00000c38: SWAP1 00000c39: DUP2 00000c3a: MSTORE 00000c3b: PUSH1 0x80 00000c3d: DUP6 00000c3e: ADD 00000c3f: SWAP2 00000c40: SWAP1 00000c41: SWAP2 00000c42: MSTORE 00000c43: PUSH2 0x0c4f 00000c46: SWAP1 00000c47: MLOAD 00000c48: PUSH1 0x01 00000c4a: SLOAD 00000c4b: PUSH2 0x1250 00000c4e: JUMP 00000c4f: JUMPDEST 00000c50: SWAP2 00000c51: POP 00000c52: PUSH2 0x0c73 00000c55: PUSH1 0x01 00000c57: SLOAD 00000c58: PUSH1 0x04 00000c5a: PUSH2 0x0c64 00000c5d: DUP6 00000c5e: PUSH1 0x05 00000c60: PUSH2 0x0bdc 00000c63: JUMP 00000c64: JUMPDEST 00000c65: DUP2 00000c66: ISZERO 00000c67: ISZERO 00000c68: PUSH2 0x0c6d 00000c6b: JUMPI 00000c6c: INVALID 00000c6d: JUMPDEST 00000c6e: DIV 00000c6f: PUSH2 0x0d87 00000c72: JUMP 00000c73: JUMPDEST 00000c74: PUSH2 0x0100 00000c77: DUP5 00000c78: ADD 00000c79: MSTORE 00000c7a: PUSH1 0x01 00000c7c: SLOAD 00000c7d: PUSH2 0x0c8d 00000c80: SWAP1 00000c81: PUSH1 0x03 00000c83: PUSH2 0x0c64 00000c86: DUP6 00000c87: PUSH1 0x04 00000c89: PUSH2 0x0bdc 00000c8c: JUMP 00000c8d: JUMPDEST 00000c8e: PUSH2 0x0120 00000c91: DUP5 00000c92: ADD 00000c93: MSTORE 00000c94: PUSH1 0x01 00000c96: SLOAD 00000c97: PUSH2 0x0ca7 00000c9a: SWAP1 00000c9b: PUSH1 0x02 00000c9d: PUSH2 0x0c64 00000ca0: DUP6 00000ca1: PUSH1 0x03 00000ca3: PUSH2 0x0bdc 00000ca6: JUMP 00000ca7: JUMPDEST 00000ca8: PUSH2 0x0140 00000cab: DUP5 00000cac: ADD 00000cad: MSTORE 00000cae: PUSH1 0x01 00000cb0: SLOAD 00000cb1: PUSH2 0x0cbf 00000cb4: SWAP1 00000cb5: PUSH2 0x0593 00000cb8: DUP5 00000cb9: PUSH1 0x02 00000cbb: PUSH2 0x0bdc 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: PUSH2 0x0160 00000cc3: DUP5 00000cc4: ADD 00000cc5: MSTORE 00000cc6: PUSH1 0x01 00000cc8: SLOAD 00000cc9: PUSH2 0x0cd6 00000ccc: SWAP1 00000ccd: PUSH1 0x80 00000ccf: DUP6 00000cd0: ADD 00000cd1: MLOAD 00000cd2: PUSH2 0x1250 00000cd5: JUMP 00000cd6: JUMPDEST 00000cd7: SWAP2 00000cd8: POP 00000cd9: PUSH1 0x04 00000cdb: PUSH2 0x0ce5 00000cde: DUP4 00000cdf: PUSH1 0x05 00000ce1: PUSH2 0x0bdc 00000ce4: JUMP 00000ce5: JUMPDEST 00000ce6: DUP2 00000ce7: ISZERO 00000ce8: ISZERO 00000ce9: PUSH2 0x0cee 00000cec: JUMPI 00000ced: INVALID 00000cee: JUMPDEST 00000cef: DIV 00000cf0: SWAP1 00000cf1: POP 00000cf2: PUSH1 0x01 00000cf4: SLOAD 00000cf5: DUP2 00000cf6: LT 00000cf7: ISZERO 00000cf8: PUSH2 0x0d82 00000cfb: JUMPI 00000cfc: PUSH1 0x01 00000cfe: SLOAD 00000cff: DUP2 00000d00: SWAP1 00000d01: SUB 00000d02: PUSH1 0x60 00000d04: DUP5 00000d05: ADD 00000d06: MSTORE 00000d07: PUSH1 0x03 00000d09: PUSH2 0x0d13 00000d0c: DUP4 00000d0d: PUSH1 0x04 00000d0f: PUSH2 0x0bdc 00000d12: JUMP 00000d13: JUMPDEST 00000d14: DUP2 00000d15: ISZERO 00000d16: ISZERO 00000d17: PUSH2 0x0d1c 00000d1a: JUMPI 00000d1b: INVALID 00000d1c: JUMPDEST 00000d1d: DIV 00000d1e: SWAP1 00000d1f: POP 00000d20: PUSH1 0x01 00000d22: SLOAD 00000d23: DUP2 00000d24: LT 00000d25: ISZERO 00000d26: PUSH2 0x0d82 00000d29: JUMPI 00000d2a: PUSH1 0x01 00000d2c: SLOAD 00000d2d: DUP2 00000d2e: SWAP1 00000d2f: SUB 00000d30: PUSH1 0x40 00000d32: DUP5 00000d33: ADD 00000d34: MSTORE 00000d35: PUSH1 0x02 00000d37: PUSH2 0x0d41 00000d3a: DUP4 00000d3b: PUSH1 0x03 00000d3d: PUSH2 0x0bdc 00000d40: JUMP 00000d41: JUMPDEST 00000d42: DUP2 00000d43: ISZERO 00000d44: ISZERO 00000d45: PUSH2 0x0d4a 00000d48: JUMPI 00000d49: INVALID 00000d4a: JUMPDEST 00000d4b: DIV 00000d4c: SWAP1 00000d4d: POP 00000d4e: PUSH1 0x01 00000d50: SLOAD 00000d51: DUP2 00000d52: LT 00000d53: ISZERO 00000d54: PUSH2 0x0d82 00000d57: JUMPI 00000d58: PUSH1 0x01 00000d5a: SLOAD 00000d5b: DUP2 00000d5c: SWAP1 00000d5d: SUB 00000d5e: PUSH1 0x20 00000d60: DUP5 00000d61: ADD 00000d62: MSTORE 00000d63: PUSH2 0x0d6d 00000d66: DUP3 00000d67: PUSH1 0x02 00000d69: PUSH2 0x0bdc 00000d6c: JUMP 00000d6d: JUMPDEST 00000d6e: SWAP1 00000d6f: POP 00000d70: PUSH1 0x01 00000d72: SLOAD 00000d73: DUP2 00000d74: LT 00000d75: ISZERO 00000d76: PUSH2 0x0d82 00000d79: JUMPI 00000d7a: PUSH1 0x01 00000d7c: SLOAD 00000d7d: DUP2 00000d7e: SWAP1 00000d7f: SUB 00000d80: DUP4 00000d81: MSTORE 00000d82: JUMPDEST 00000d83: POP 00000d84: POP 00000d85: SWAP1 00000d86: JUMP 00000d87: JUMPDEST 00000d88: PUSH1 0x00 00000d8a: DUP3 00000d8b: DUP3 00000d8c: ADD 00000d8d: PUSH2 0x0c00 00000d90: DUP5 00000d91: DUP3 00000d92: LT 00000d93: DUP1 00000d94: ISZERO 00000d95: SWAP1 00000d96: PUSH2 0x0bfb 00000d99: JUMPI 00000d9a: POP 00000d9b: DUP4 00000d9c: DUP3 00000d9d: LT 00000d9e: ISZERO 00000d9f: PUSH2 0x134e 00000da2: JUMP 00000da3: JUMPDEST 00000da4: PUSH1 0x00 00000da6: DUP1 00000da7: PUSH1 0x00 00000da9: PUSH1 0x01 00000dab: SLOAD 00000dac: DUP7 00000dad: GT 00000dae: ISZERO 00000daf: DUP1 00000db0: ISZERO 00000db1: PUSH2 0x0dc4 00000db4: JUMPI 00000db5: POP 00000db6: PUSH1 0x01 00000db8: SLOAD 00000db9: DUP6 00000dba: LT 00000dbb: ISZERO 00000dbc: DUP1 00000dbd: PUSH2 0x0dc4 00000dc0: JUMPI 00000dc1: POP 00000dc2: DUP5 00000dc3: ISZERO 00000dc4: JUMPDEST 00000dc5: ISZERO 00000dc6: PUSH2 0x0df1 00000dc9: JUMPI 00000dca: POP 00000dcb: POP 00000dcc: POP 00000dcd: PUSH1 0x00 00000dcf: DUP4 00000dd0: DUP2 00000dd1: MSTORE 00000dd2: PUSH1 0x06 00000dd4: PUSH1 0x20 00000dd6: DUP2 00000dd7: SWAP1 00000dd8: MSTORE 00000dd9: PUSH1 0x40 00000ddb: SWAP1 00000ddc: SWAP2 00000ddd: KECCAK256 00000dde: SLOAD 00000ddf: PUSH1 0x11 00000de1: DUP1 00000de2: SLOAD 00000de3: SWAP1 00000de4: SWAP2 00000de5: ADD 00000de6: SWAP1 00000de7: SSTORE 00000de8: PUSH1 0x01 00000dea: SWAP1 00000deb: PUSH1 0x04 00000ded: PUSH2 0x0f4f 00000df0: JUMP 00000df1: JUMPDEST 00000df2: DUP4 00000df3: ISZERO 00000df4: PUSH2 0x0e1b 00000df7: JUMPI 00000df8: POP 00000df9: POP 00000dfa: POP 00000dfb: PUSH1 0x00 00000dfd: DUP4 00000dfe: DUP2 00000dff: MSTORE 00000e00: PUSH1 0x06 00000e02: PUSH1 0x20 00000e04: DUP2 00000e05: SWAP1 00000e06: MSTORE 00000e07: PUSH1 0x40 00000e09: DUP3 00000e0a: KECCAK256 00000e0b: SLOAD 00000e0c: PUSH1 0x11 00000e0e: DUP1 00000e0f: SLOAD 00000e10: SWAP1 00000e11: SWAP2 00000e12: ADD 00000e13: SWAP1 00000e14: SSTORE 00000e15: PUSH1 0x04 00000e17: PUSH2 0x0f4f 00000e1a: JUMP 00000e1b: JUMPDEST 00000e1c: DUP7 00000e1d: MLOAD 00000e1e: DUP7 00000e1f: LT 00000e20: ISZERO 00000e21: DUP1 00000e22: ISZERO 00000e23: PUSH2 0x0e31 00000e26: JUMPI 00000e27: POP 00000e28: DUP7 00000e29: PUSH2 0x0160 00000e2c: ADD 00000e2d: MLOAD 00000e2e: DUP7 00000e2f: GT 00000e30: ISZERO 00000e31: JUMPDEST 00000e32: ISZERO 00000e33: PUSH2 0x0f4f 00000e36: JUMPI 00000e37: DUP7 00000e38: PUSH1 0x20 00000e3a: ADD 00000e3b: MLOAD 00000e3c: DUP7 00000e3d: LT 00000e3e: ISZERO 00000e3f: DUP1 00000e40: ISZERO 00000e41: PUSH2 0x0e4f 00000e44: JUMPI 00000e45: POP 00000e46: DUP7 00000e47: PUSH2 0x0140 00000e4a: ADD 00000e4b: MLOAD 00000e4c: DUP7 00000e4d: GT 00000e4e: ISZERO 00000e4f: JUMPDEST 00000e50: ISZERO 00000e51: PUSH2 0x0f4a 00000e54: JUMPI 00000e55: DUP7 00000e56: PUSH1 0x40 00000e58: ADD 00000e59: MLOAD 00000e5a: DUP7 00000e5b: LT 00000e5c: ISZERO 00000e5d: DUP1 00000e5e: ISZERO 00000e5f: PUSH2 0x0e6d 00000e62: JUMPI 00000e63: POP 00000e64: DUP7 00000e65: PUSH2 0x0120 00000e68: ADD 00000e69: MLOAD 00000e6a: DUP7 00000e6b: GT 00000e6c: ISZERO 00000e6d: JUMPDEST 00000e6e: ISZERO 00000e6f: PUSH2 0x0f40 00000e72: JUMPI 00000e73: DUP7 00000e74: PUSH1 0x60 00000e76: ADD 00000e77: MLOAD 00000e78: DUP7 00000e79: LT 00000e7a: ISZERO 00000e7b: DUP1 00000e7c: ISZERO 00000e7d: PUSH2 0x0e8b 00000e80: JUMPI 00000e81: POP 00000e82: DUP7 00000e83: PUSH2 0x0100 00000e86: ADD 00000e87: MLOAD 00000e88: DUP7 00000e89: GT 00000e8a: ISZERO 00000e8b: JUMPDEST 00000e8c: ISZERO 00000e8d: PUSH2 0x0f36 00000e90: JUMPI 00000e91: DUP7 00000e92: PUSH1 0x80 00000e94: ADD 00000e95: MLOAD 00000e96: DUP7 00000e97: LT 00000e98: ISZERO 00000e99: DUP1 00000e9a: ISZERO 00000e9b: PUSH2 0x0ea8 00000e9e: JUMPI 00000e9f: POP 00000ea0: DUP7 00000ea1: PUSH1 0xe0 00000ea3: ADD 00000ea4: MLOAD 00000ea5: DUP7 00000ea6: GT 00000ea7: ISZERO 00000ea8: JUMPDEST 00000ea9: ISZERO 00000eaa: PUSH2 0x0f12 00000ead: JUMPI 00000eae: DUP7 00000eaf: PUSH1 0xa0 00000eb1: ADD 00000eb2: MLOAD 00000eb3: DUP7 00000eb4: LT 00000eb5: ISZERO 00000eb6: DUP1 00000eb7: ISZERO 00000eb8: PUSH2 0x0ec5 00000ebb: JUMPI 00000ebc: POP 00000ebd: DUP7 00000ebe: PUSH1 0xc0 00000ec0: ADD 00000ec1: MLOAD 00000ec2: DUP7 00000ec3: GT 00000ec4: ISZERO 00000ec5: JUMPDEST 00000ec6: ISZERO 00000ec7: PUSH2 0x0eee 00000eca: JUMPI 00000ecb: POP 00000ecc: POP 00000ecd: PUSH1 0x00 00000ecf: DUP5 00000ed0: DUP2 00000ed1: MSTORE 00000ed2: PUSH1 0x06 00000ed4: PUSH1 0x20 00000ed6: DUP2 00000ed7: SWAP1 00000ed8: MSTORE 00000ed9: PUSH1 0x40 00000edb: SWAP1 00000edc: SWAP2 00000edd: KECCAK256 00000ede: SLOAD 00000edf: PUSH1 0x10 00000ee1: DUP1 00000ee2: SLOAD 00000ee3: SWAP1 00000ee4: SWAP2 00000ee5: ADD 00000ee6: SWAP1 00000ee7: SSTORE 00000ee8: PUSH1 0x03 00000eea: PUSH2 0x0f0d 00000eed: JUMP 00000eee: JUMPDEST 00000eef: POP 00000ef0: POP 00000ef1: PUSH1 0x00 00000ef3: DUP5 00000ef4: DUP2 00000ef5: MSTORE 00000ef6: PUSH1 0x06 00000ef8: PUSH1 0x20 00000efa: MSTORE 00000efb: PUSH1 0x40 00000efd: SWAP1 00000efe: KECCAK256 00000eff: SLOAD 00000f00: PUSH1 0x0f 00000f02: DUP1 00000f03: SLOAD 00000f04: SWAP1 00000f05: SWAP2 00000f06: ADD 00000f07: SWAP1 00000f08: SSTORE 00000f09: PUSH1 0x05 00000f0b: PUSH1 0x02 00000f0d: JUMPDEST 00000f0e: PUSH2 0x0f31 00000f11: JUMP 00000f12: JUMPDEST 00000f13: POP 00000f14: POP 00000f15: PUSH1 0x00 00000f17: DUP5 00000f18: DUP2 00000f19: MSTORE 00000f1a: PUSH1 0x06 00000f1c: PUSH1 0x20 00000f1e: MSTORE 00000f1f: PUSH1 0x40 00000f21: SWAP1 00000f22: KECCAK256 00000f23: SLOAD 00000f24: PUSH1 0x0e 00000f26: DUP1 00000f27: SLOAD 00000f28: SWAP1 00000f29: SWAP2 00000f2a: ADD 00000f2b: SWAP1 00000f2c: SSTORE 00000f2d: PUSH1 0x04 00000f2f: PUSH1 0x01 00000f31: JUMPDEST 00000f32: PUSH2 0x0f3b 00000f35: JUMP 00000f36: JUMPDEST 00000f37: PUSH1 0x03 00000f39: SWAP2 00000f3a: POP 00000f3b: JUMPDEST 00000f3c: PUSH2 0x0f45 00000f3f: JUMP 00000f40: JUMPDEST 00000f41: PUSH1 0x02 00000f43: SWAP2 00000f44: POP 00000f45: JUMPDEST 00000f46: PUSH2 0x0f4f 00000f49: JUMP 00000f4a: JUMPDEST 00000f4b: PUSH1 0x01 00000f4d: SWAP2 00000f4e: POP 00000f4f: JUMPDEST 00000f50: PUSH1 0x00 00000f52: SWAP6 00000f53: DUP7 00000f54: MSTORE 00000f55: PUSH1 0x06 00000f57: PUSH1 0x20 00000f59: MSTORE 00000f5a: PUSH1 0x40 00000f5c: SWAP1 00000f5d: SWAP6 00000f5e: KECCAK256 00000f5f: PUSH1 0x01 00000f61: ADD 00000f62: DUP1 00000f63: SLOAD 00000f64: PUSH1 0xff 00000f66: SWAP7 00000f67: DUP8 00000f68: AND 00000f69: PUSH2 0x0100 00000f6c: MUL 00000f6d: PUSH2 0xff00 00000f70: NOT 00000f71: SWAP8 00000f72: SWAP1 00000f73: SWAP4 00000f74: AND 00000f75: PUSH1 0xff 00000f77: NOT 00000f78: SWAP1 00000f79: SWAP2 00000f7a: AND 00000f7b: OR 00000f7c: SWAP6 00000f7d: SWAP1 00000f7e: SWAP6 00000f7f: AND 00000f80: OR 00000f81: SWAP1 00000f82: SWAP4 00000f83: SSTORE 00000f84: POP 00000f85: SWAP1 00000f86: SWAP3 00000f87: SWAP2 00000f88: POP 00000f89: POP 00000f8a: JUMP 00000f8b: JUMPDEST 00000f8c: PUSH1 0x00 00000f8e: DUP1 00000f8f: PUSH1 0x00 00000f91: DUP1 00000f92: PUSH1 0x00 00000f94: DUP1 00000f95: PUSH2 0x0fa2 00000f98: PUSH1 0x10 00000f9a: SLOAD 00000f9b: PUSH1 0x11 00000f9d: SLOAD 00000f9e: PUSH2 0x0d87 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH1 0x10 00000fa5: DUP2 00000fa6: SWAP1 00000fa7: SSTORE 00000fa8: PUSH1 0x0f 00000faa: SLOAD 00000fab: PUSH2 0x0fb3 00000fae: SWAP2 00000faf: PUSH2 0x0d87 00000fb2: JUMP 00000fb3: JUMPDEST 00000fb4: PUSH1 0x0f 00000fb6: DUP2 00000fb7: SWAP1 00000fb8: SSTORE 00000fb9: PUSH1 0x0e 00000fbb: SLOAD 00000fbc: PUSH2 0x0fc4 00000fbf: SWAP2 00000fc0: PUSH2 0x0d87 00000fc3: JUMP 00000fc4: JUMPDEST 00000fc5: PUSH1 0x0e 00000fc7: DUP2 00000fc8: SWAP1 00000fc9: SSTORE 00000fca: ISZERO 00000fcb: ISZERO 00000fcc: PUSH2 0x0fd9 00000fcf: JUMPI 00000fd0: PUSH1 0x0c 00000fd2: SLOAD 00000fd3: SWAP6 00000fd4: POP 00000fd5: PUSH2 0x1110 00000fd8: JUMP 00000fd9: JUMPDEST 00000fda: PUSH1 0x0c 00000fdc: SLOAD 00000fdd: PUSH1 0x0a 00000fdf: SWAP1 00000fe0: DIV 00000fe1: SWAP5 00000fe2: POP 00000fe3: PUSH2 0x0fed 00000fe6: DUP6 00000fe7: PUSH1 0x04 00000fe9: PUSH2 0x0bdc 00000fec: JUMP 00000fed: JUMPDEST 00000fee: SWAP4 00000fef: POP 00000ff0: PUSH2 0x0ffb 00000ff3: DUP5 00000ff4: PUSH1 0x02 00000ff6: DUP8 00000ff7: PUSH2 0x0c6d 00000ffa: JUMP 00000ffb: JUMPDEST 00000ffc: SWAP3 00000ffd: POP 00000ffe: PUSH2 0x1009 00001001: PUSH1 0x0c 00001003: SLOAD 00001004: DUP5 00001005: PUSH2 0x1250 00001008: JUMP 00001009: JUMPDEST 0000100a: SWAP2 0000100b: POP 0000100c: PUSH2 0x1015 0000100f: DUP3 00001010: DUP6 00001011: PUSH2 0x1250 00001014: JUMP 00001015: JUMPDEST 00001016: SWAP2 00001017: POP 00001018: PUSH2 0x1021 0000101b: DUP3 0000101c: DUP7 0000101d: PUSH2 0x1250 00001020: JUMP 00001021: JUMPDEST 00001022: SWAP2 00001023: POP 00001024: PUSH1 0x00 00001026: PUSH1 0x11 00001028: SLOAD 00001029: GT 0000102a: ISZERO 0000102b: PUSH2 0x1054 0000102e: JUMPI 0000102f: PUSH1 0x11 00001031: SLOAD 00001032: DUP6 00001033: DUP2 00001034: ISZERO 00001035: ISZERO 00001036: PUSH2 0x103b 00001039: JUMPI 0000103a: INVALID 0000103b: JUMPDEST 0000103c: MOD 0000103d: SWAP1 0000103e: POP 0000103f: PUSH1 0x11 00001041: SLOAD 00001042: DUP6 00001043: DUP2 00001044: ISZERO 00001045: ISZERO 00001046: PUSH2 0x104b 00001049: JUMPI 0000104a: INVALID 0000104b: JUMPDEST 0000104c: DIV 0000104d: PUSH1 0x11 0000104f: SSTORE 00001050: PUSH2 0x1057 00001053: JUMP 00001054: JUMPDEST 00001055: POP 00001056: DUP4 00001057: JUMPDEST 00001058: PUSH1 0x00 0000105a: PUSH1 0x10 0000105c: SLOAD 0000105d: GT 0000105e: ISZERO 0000105f: PUSH2 0x1091 00001062: JUMPI 00001063: PUSH2 0x1079 00001066: DUP2 00001067: PUSH1 0x10 00001069: SLOAD 0000106a: DUP7 0000106b: DUP2 0000106c: ISZERO 0000106d: ISZERO 0000106e: PUSH2 0x1073 00001071: JUMPI 00001072: INVALID 00001073: JUMPDEST 00001074: MOD 00001075: PUSH2 0x0d87 00001078: JUMP 00001079: JUMPDEST 0000107a: SWAP1 0000107b: POP 0000107c: PUSH1 0x10 0000107e: SLOAD 0000107f: DUP5 00001080: DUP2 00001081: ISZERO 00001082: ISZERO 00001083: PUSH2 0x1088 00001086: JUMPI 00001087: INVALID 00001088: JUMPDEST 00001089: DIV 0000108a: PUSH1 0x10 0000108c: SSTORE 0000108d: PUSH2 0x109e 00001090: JUMP 00001091: JUMPDEST 00001092: PUSH2 0x109b 00001095: DUP2 00001096: DUP6 00001097: PUSH2 0x0d87 0000109a: JUMP 0000109b: JUMPDEST 0000109c: SWAP1 0000109d: POP 0000109e: JUMPDEST 0000109f: PUSH1 0x00 000010a1: PUSH1 0x0f 000010a3: SLOAD 000010a4: GT 000010a5: ISZERO 000010a6: PUSH2 0x10d2 000010a9: JUMPI 000010aa: PUSH2 0x10ba 000010ad: DUP2 000010ae: PUSH1 0x0f 000010b0: SLOAD 000010b1: DUP6 000010b2: DUP2 000010b3: ISZERO 000010b4: ISZERO 000010b5: PUSH2 0x1073 000010b8: JUMPI 000010b9: INVALID 000010ba: JUMPDEST 000010bb: SWAP1 000010bc: POP 000010bd: PUSH1 0x0f 000010bf: SLOAD 000010c0: DUP4 000010c1: DUP2 000010c2: ISZERO 000010c3: ISZERO 000010c4: PUSH2 0x10c9 000010c7: JUMPI 000010c8: INVALID 000010c9: JUMPDEST 000010ca: DIV 000010cb: PUSH1 0x0f 000010cd: SSTORE 000010ce: PUSH2 0x10df 000010d1: JUMP 000010d2: JUMPDEST 000010d3: PUSH2 0x10dc 000010d6: DUP2 000010d7: DUP5 000010d8: PUSH2 0x0d87 000010db: JUMP 000010dc: JUMPDEST 000010dd: SWAP1 000010de: POP 000010df: JUMPDEST 000010e0: PUSH2 0x10e9 000010e3: DUP3 000010e4: DUP3 000010e5: PUSH2 0x0d87 000010e8: JUMP 000010e9: JUMPDEST 000010ea: SWAP2 000010eb: POP 000010ec: PUSH1 0x0e 000010ee: SLOAD 000010ef: DUP3 000010f0: DUP2 000010f1: ISZERO 000010f2: ISZERO 000010f3: PUSH2 0x10f8 000010f6: JUMPI 000010f7: INVALID 000010f8: JUMPDEST 000010f9: MOD 000010fa: SWAP1 000010fb: POP 000010fc: PUSH1 0x0e 000010fe: SLOAD 000010ff: DUP3 00001100: DUP2 00001101: ISZERO 00001102: ISZERO 00001103: PUSH2 0x1108 00001106: JUMPI 00001107: INVALID 00001108: JUMPDEST 00001109: DIV 0000110a: PUSH1 0x0e 0000110c: SSTORE 0000110d: SWAP5 0000110e: POP 0000110f: DUP5 00001110: JUMPDEST 00001111: POP 00001112: POP 00001113: POP 00001114: POP 00001115: POP 00001116: SWAP1 00001117: JUMP 00001118: JUMPDEST 00001119: PUSH1 0x00 0000111b: DUP1 0000111c: PUSH1 0xff 0000111e: DUP5 0000111f: AND 00001120: DUP2 00001121: SWAP1 00001122: GT 00001123: ISZERO 00001124: PUSH2 0x113a 00001127: JUMPI 00001128: PUSH2 0x1137 0000112b: DUP2 0000112c: PUSH2 0x0593 0000112f: DUP6 00001130: PUSH1 0x0e 00001132: SLOAD 00001133: PUSH2 0x0bdc 00001136: JUMP 00001137: JUMPDEST 00001138: SWAP1 00001139: POP 0000113a: JUMPDEST 0000113b: PUSH1 0x01 0000113d: DUP5 0000113e: PUSH1 0xff 00001140: AND 00001141: GT 00001142: ISZERO 00001143: PUSH2 0x1159 00001146: JUMPI 00001147: PUSH2 0x1156 0000114a: DUP2 0000114b: PUSH2 0x0593 0000114e: DUP6 0000114f: PUSH1 0x0f 00001151: SLOAD 00001152: PUSH2 0x0bdc 00001155: JUMP 00001156: JUMPDEST 00001157: SWAP1 00001158: POP 00001159: JUMPDEST 0000115a: PUSH1 0x02 0000115c: DUP5 0000115d: PUSH1 0xff 0000115f: AND 00001160: GT 00001161: ISZERO 00001162: PUSH2 0x1178 00001165: JUMPI 00001166: PUSH2 0x1175 00001169: DUP2 0000116a: PUSH2 0x0593 0000116d: DUP6 0000116e: PUSH1 0x10 00001170: SLOAD 00001171: PUSH2 0x0bdc 00001174: JUMP 00001175: JUMPDEST 00001176: SWAP1 00001177: POP 00001178: JUMPDEST 00001179: PUSH1 0x03 0000117b: DUP5 0000117c: PUSH1 0xff 0000117e: AND 0000117f: GT 00001180: ISZERO 00001181: PUSH2 0x0c00 00001184: JUMPI 00001185: PUSH2 0x1194 00001188: DUP2 00001189: PUSH2 0x0593 0000118c: DUP6 0000118d: PUSH1 0x11 0000118f: SLOAD 00001190: PUSH2 0x0bdc 00001193: JUMP 00001194: JUMPDEST 00001195: SWAP5 00001196: SWAP4 00001197: POP 00001198: POP 00001199: POP 0000119a: POP 0000119b: JUMP 0000119c: JUMPDEST 0000119d: PUSH1 0x14 0000119f: SLOAD 000011a0: PUSH1 0x00 000011a2: SWAP1 000011a3: DUP2 000011a4: SWAP1 000011a5: DUP2 000011a6: SWAP1 000011a7: DUP2 000011a8: SWAP1 000011a9: DUP2 000011aa: SWAP1 000011ab: DUP2 000011ac: SWAP1 000011ad: DUP2 000011ae: SWAP1 000011af: PUSH1 0x01 000011b1: PUSH1 0xa0 000011b3: PUSH1 0x02 000011b5: EXP 000011b6: SUB 000011b7: AND 000011b8: PUSH4 0x9507d39a 000011bd: DUP10 000011be: DUP4 000011bf: PUSH1 0x40 000011c1: MLOAD 000011c2: PUSH1 0xe0 000011c4: ADD 000011c5: MSTORE 000011c6: PUSH1 0x40 000011c8: MLOAD 000011c9: PUSH1 0xe0 000011cb: PUSH1 0x02 000011cd: EXP 000011ce: PUSH4 0xffffffff 000011d3: DUP5 000011d4: AND 000011d5: MUL 000011d6: DUP2 000011d7: MSTORE 000011d8: PUSH1 0x04 000011da: DUP2 000011db: ADD 000011dc: SWAP2 000011dd: SWAP1 000011de: SWAP2 000011df: MSTORE 000011e0: PUSH1 0x24 000011e2: ADD 000011e3: PUSH1 0xe0 000011e5: PUSH1 0x40 000011e7: MLOAD 000011e8: DUP1 000011e9: DUP4 000011ea: SUB 000011eb: DUP2 000011ec: PUSH1 0x00 000011ee: DUP8 000011ef: DUP1 000011f0: EXTCODESIZE 000011f1: ISZERO 000011f2: ISZERO 000011f3: PUSH2 0x11fb 000011f6: JUMPI 000011f7: PUSH1 0x00 000011f9: DUP1 000011fa: REVERT 000011fb: JUMPDEST 000011fc: PUSH2 0x02c6 000011ff: GAS 00001200: SUB 00001201: CALL 00001202: ISZERO 00001203: ISZERO 00001204: PUSH2 0x120c 00001207: JUMPI 00001208: PUSH1 0x00 0000120a: DUP1 0000120b: REVERT 0000120c: JUMPDEST 0000120d: POP 0000120e: POP 0000120f: POP 00001210: PUSH1 0x40 00001212: MLOAD 00001213: DUP1 00001214: MLOAD 00001215: SWAP1 00001216: PUSH1 0x20 00001218: ADD 00001219: DUP1 0000121a: MLOAD 0000121b: SWAP1 0000121c: PUSH1 0x20 0000121e: ADD 0000121f: DUP1 00001220: MLOAD 00001221: SWAP1 00001222: PUSH1 0x20 00001224: ADD 00001225: DUP1 00001226: MLOAD 00001227: SWAP1 00001228: PUSH1 0x20 0000122a: ADD 0000122b: DUP1 0000122c: MLOAD 0000122d: SWAP1 0000122e: PUSH1 0x20 00001230: ADD 00001231: DUP1 00001232: MLOAD 00001233: SWAP1 00001234: PUSH1 0x20 00001236: ADD 00001237: DUP1 00001238: MLOAD 00001239: SWAP16 0000123a: SWAP7 0000123b: SWAP15 0000123c: POP 0000123d: SWAP3 0000123e: SWAP13 0000123f: POP 00001240: SWAP4 00001241: SWAP11 00001242: POP 00001243: SWAP2 00001244: SWAP9 00001245: POP 00001246: SWAP3 00001247: SWAP7 00001248: POP 00001249: POP 0000124a: POP 0000124b: POP 0000124c: POP 0000124d: POP 0000124e: POP 0000124f: JUMP 00001250: JUMPDEST 00001251: PUSH1 0x00 00001253: PUSH2 0x125e 00001256: DUP4 00001257: DUP4 00001258: GT 00001259: ISZERO 0000125a: PUSH2 0x134e 0000125d: JUMP 0000125e: JUMPDEST 0000125f: POP 00001260: SWAP1 00001261: SUB 00001262: SWAP1 00001263: JUMP 00001264: JUMPDEST 00001265: PUSH1 0x00 00001267: DUP1 00001268: PUSH1 0x00 0000126a: PUSH1 0x04 0000126c: SLOAD 0000126d: DUP5 0000126e: LT 0000126f: ISZERO 00001270: ISZERO 00001271: ISZERO 00001272: PUSH2 0x127a 00001275: JUMPI 00001276: PUSH1 0x00 00001278: DUP1 00001279: REVERT 0000127a: JUMPDEST 0000127b: PUSH1 0x05 0000127d: SLOAD 0000127e: PUSH1 0x04 00001280: SLOAD 00001281: ADD 00001282: DUP5 00001283: GT 00001284: ISZERO 00001285: PUSH2 0x128d 00001288: JUMPI 00001289: PUSH1 0x00 0000128b: DUP1 0000128c: REVERT 0000128d: JUMPDEST 0000128e: PUSH1 0x64 00001290: PUSH2 0x12a4 00001293: PUSH8 0x0de0b6b3a7640000 0000129c: DUP8 0000129d: DIV 0000129e: PUSH1 0x64 000012a0: PUSH2 0x0d87 000012a3: JUMP 000012a4: JUMPDEST 000012a5: DUP2 000012a6: ISZERO 000012a7: ISZERO 000012a8: PUSH2 0x12ad 000012ab: JUMPI 000012ac: INVALID 000012ad: JUMPDEST 000012ae: DIV 000012af: SWAP2 000012b0: POP 000012b1: PUSH1 0x05 000012b3: SLOAD 000012b4: PUSH2 0x12d4 000012b7: PUSH1 0x96 000012b9: PUSH2 0x12cf 000012bc: PUSH1 0x05 000012be: SLOAD 000012bf: PUSH2 0x12ca 000012c2: DUP10 000012c3: PUSH1 0x04 000012c5: SLOAD 000012c6: PUSH2 0x1250 000012c9: JUMP 000012ca: JUMPDEST 000012cb: PUSH2 0x1250 000012ce: JUMP 000012cf: JUMPDEST 000012d0: PUSH2 0x0bdc 000012d3: JUMP 000012d4: JUMPDEST 000012d5: DUP2 000012d6: ISZERO 000012d7: ISZERO 000012d8: PUSH2 0x12dd 000012db: JUMPI 000012dc: INVALID 000012dd: JUMPDEST 000012de: DIV 000012df: SWAP1 000012e0: POP 000012e1: PUSH2 0x12ec 000012e4: DUP2 000012e5: PUSH2 0x03e8 000012e8: PUSH2 0x0d87 000012eb: JUMP 000012ec: JUMPDEST 000012ed: SWAP1 000012ee: POP 000012ef: PUSH2 0x12f8 000012f2: DUP3 000012f3: DUP3 000012f4: PUSH2 0x0bdc 000012f7: JUMP 000012f8: JUMPDEST 000012f9: PUSH2 0x03e8 000012fc: SWAP1 000012fd: DIV 000012fe: SWAP2 000012ff: POP 00001300: PUSH32 0xfd3605c3334acd84c29f8601e62dfa6e1c6b3a489b07b4838025f3cf91560450 00001321: DUP6 00001322: DUP4 00001323: DUP4 00001324: PUSH1 0x40 00001326: MLOAD 00001327: DUP1 00001328: DUP5 00001329: DUP2 0000132a: MSTORE 0000132b: PUSH1 0x20 0000132d: ADD 0000132e: DUP4 0000132f: DUP2 00001330: MSTORE 00001331: PUSH1 0x20 00001333: ADD 00001334: DUP3 00001335: DUP2 00001336: MSTORE 00001337: PUSH1 0x20 00001339: ADD 0000133a: SWAP4 0000133b: POP 0000133c: POP 0000133d: POP 0000133e: POP 0000133f: PUSH1 0x40 00001341: MLOAD 00001342: DUP1 00001343: SWAP2 00001344: SUB 00001345: SWAP1 00001346: LOG1 00001347: POP 00001348: SWAP4 00001349: SWAP3 0000134a: POP 0000134b: POP 0000134c: POP 0000134d: JUMP 0000134e: JUMPDEST 0000134f: DUP1 00001350: ISZERO 00001351: ISZERO 00001352: PUSH2 0x09bd 00001355: JUMPI 00001356: PUSH1 0x00 00001358: DUP1 00001359: REVERT 0000135a: JUMPDEST 0000135b: PUSH1 0x00 0000135d: DUP1 0000135e: PUSH1 0x00 00001360: DUP1 00001361: PUSH2 0x136c 00001364: PUSH2 0x03e8 00001367: DUP7 00001368: PUSH2 0x1250 0000136b: JUMP 0000136c: JUMPDEST 0000136d: SWAP2 0000136e: POP 0000136f: PUSH2 0x03e8 00001372: PUSH2 0x137d 00001375: PUSH1 0x01 00001377: SLOAD 00001378: DUP5 00001379: PUSH2 0x0bdc 0000137c: JUMP 0000137d: JUMPDEST 0000137e: DUP2 0000137f: ISZERO 00001380: ISZERO 00001381: PUSH2 0x1386 00001384: JUMPI 00001385: INVALID 00001386: JUMPDEST 00001387: DIV 00001388: SWAP4 00001389: POP 0000138a: DUP2 0000138b: PUSH2 0x1396 0000138e: PUSH2 0x03e8 00001391: DUP8 00001392: PUSH2 0x0bdc 00001395: JUMP 00001396: JUMPDEST 00001397: DUP2 00001398: ISZERO 00001399: ISZERO 0000139a: PUSH2 0x139f 0000139d: JUMPI 0000139e: INVALID 0000139f: JUMPDEST 000013a0: DIV 000013a1: SWAP1 000013a2: POP 000013a3: PUSH2 0x03e8 000013a6: PUSH2 0x13b7 000013a9: PUSH1 0x01 000013ab: SLOAD 000013ac: PUSH2 0x12cf 000013af: PUSH2 0x03e8 000013b2: DUP6 000013b3: PUSH2 0x0d87 000013b6: JUMP 000013b7: JUMPDEST 000013b8: DUP2 000013b9: ISZERO 000013ba: ISZERO 000013bb: PUSH2 0x13c0 000013be: JUMPI 000013bf: INVALID 000013c0: JUMPDEST 000013c1: DIV 000013c2: SWAP3 000013c3: POP 000013c4: POP 000013c5: POP 000013c6: SWAP2 000013c7: POP 000013c8: SWAP2 000013c9: JUMP 000013ca: JUMPDEST 000013cb: PUSH2 0x0180 000013ce: PUSH1 0x40 000013d0: MLOAD 000013d1: SWAP1 000013d2: DUP2 000013d3: ADD 000013d4: PUSH1 0x40 000013d6: MSTORE 000013d7: DUP1 000013d8: PUSH1 0x00 000013da: DUP2 000013db: MSTORE 000013dc: PUSH1 0x20 000013de: ADD 000013df: PUSH1 0x00 000013e1: DUP2 000013e2: MSTORE 000013e3: PUSH1 0x20 000013e5: ADD 000013e6: PUSH1 0x00 000013e8: DUP2 000013e9: MSTORE 000013ea: PUSH1 0x20 000013ec: ADD 000013ed: PUSH1 0x00 000013ef: DUP2 000013f0: MSTORE 000013f1: PUSH1 0x20 000013f3: ADD 000013f4: PUSH1 0x00 000013f6: DUP2 000013f7: MSTORE 000013f8: PUSH1 0x20 000013fa: ADD 000013fb: PUSH1 0x00 000013fd: DUP2 000013fe: MSTORE 000013ff: PUSH1 0x20 00001401: ADD 00001402: PUSH1 0x00 00001404: DUP2 00001405: MSTORE 00001406: PUSH1 0x20 00001408: ADD 00001409: PUSH1 0x00 0000140b: DUP2 0000140c: MSTORE 0000140d: PUSH1 0x20 0000140f: ADD 00001410: PUSH1 0x00 00001412: DUP2 00001413: MSTORE 00001414: PUSH1 0x20 00001416: ADD 00001417: PUSH1 0x00 00001419: DUP2 0000141a: MSTORE 0000141b: PUSH1 0x20 0000141d: ADD 0000141e: PUSH1 0x00 00001420: DUP2 00001421: MSTORE 00001422: PUSH1 0x20 00001424: ADD 00001425: PUSH1 0x00 00001427: DUP2 00001428: MSTORE 00001429: POP 0000142a: SWAP1 0000142b: JUMP 0000142c: JUMPDEST 0000142d: PUSH1 0x00 0000142f: DUP4 00001430: ISZERO 00001431: ISZERO 00001432: PUSH2 0x143a 00001435: JUMPI 00001436: PUSH1 0x00 00001438: DUP1 00001439: REVERT 0000143a: JUMPDEST 0000143b: DUP4 0000143c: DUP4 0000143d: GT 0000143e: PUSH2 0x1446 00001441: JUMPI 00001442: PUSH1 0x00 00001444: DUP1 00001445: REVERT 00001446: JUMPDEST 00001447: DUP2 00001448: ISZERO 00001449: ISZERO 0000144a: PUSH2 0x1452 0000144d: JUMPI 0000144e: PUSH1 0x00 00001450: DUP1 00001451: REVERT 00001452: JUMPDEST 00001453: DUP2 00001454: DUP5 00001455: DUP2 00001456: ISZERO 00001457: ISZERO 00001458: PUSH2 0x145d 0000145b: JUMPI 0000145c: INVALID 0000145d: JUMPDEST 0000145e: MOD 0000145f: ISZERO 00001460: PUSH2 0x1468 00001463: JUMPI 00001464: PUSH1 0x00 00001466: DUP1 00001467: REVERT 00001468: JUMPDEST 00001469: DUP2 0000146a: DUP4 0000146b: DUP2 0000146c: ISZERO 0000146d: ISZERO 0000146e: PUSH2 0x1473 00001471: JUMPI 00001472: INVALID 00001473: JUMPDEST 00001474: MOD 00001475: ISZERO 00001476: PUSH2 0x147e 00001479: JUMPI 0000147a: PUSH1 0x00 0000147c: DUP1 0000147d: REVERT 0000147e: JUMPDEST 0000147f: POP 00001480: PUSH1 0x07 00001482: DUP4 00001483: SWAP1 00001484: SSTORE 00001485: PUSH1 0x08 00001487: DUP3 00001488: SWAP1 00001489: SSTORE 0000148a: PUSH1 0x09 0000148c: DUP2 0000148d: SWAP1 0000148e: SSTORE 0000148f: DUP3 00001490: JUMPDEST 00001491: DUP3 00001492: DUP2 00001493: GT 00001494: PUSH2 0x14be 00001497: JUMPI 00001498: PUSH1 0x00 0000149a: DUP2 0000149b: DUP2 0000149c: MSTORE 0000149d: PUSH1 0x06 0000149f: PUSH1 0x20 000014a1: MSTORE 000014a2: PUSH1 0x40 000014a4: SWAP1 000014a5: KECCAK256 000014a6: PUSH1 0x01 000014a8: ADD 000014a9: DUP1 000014aa: SLOAD 000014ab: PUSH3 0xff0000 000014af: NOT 000014b0: AND 000014b1: PUSH3 0x010000 000014b5: OR 000014b6: SWAP1 000014b7: SSTORE 000014b8: DUP2 000014b9: ADD 000014ba: PUSH2 0x1490 000014bd: JUMP 000014be: JUMPDEST 000014bf: POP 000014c0: POP 000014c1: POP 000014c2: POP 000014c3: JUMP 000014c4: JUMPDEST 000014c5: PUSH1 0x00 000014c7: DUP6 000014c8: GT 000014c9: PUSH2 0x14d1 000014cc: JUMPI 000014cd: PUSH1 0x00 000014cf: DUP1 000014d0: REVERT 000014d1: JUMPDEST 000014d2: PUSH1 0x00 000014d4: DUP5 000014d5: GT 000014d6: DUP1 000014d7: ISZERO 000014d8: PUSH2 0x14e2 000014db: JUMPI 000014dc: POP 000014dd: PUSH2 0x03e8 000014e0: DUP5 000014e1: LT 000014e2: JUMPDEST 000014e3: DUP1 000014e4: ISZERO 000014e5: PUSH2 0x14ee 000014e8: JUMPI 000014e9: POP 000014ea: DUP4 000014eb: DUP4 000014ec: LT 000014ed: ISZERO 000014ee: JUMPDEST 000014ef: DUP1 000014f0: ISZERO 000014f1: PUSH2 0x14fb 000014f4: JUMPI 000014f5: POP 000014f6: PUSH2 0x03e8 000014f9: DUP4 000014fa: LT 000014fb: JUMPDEST 000014fc: ISZERO 000014fd: ISZERO 000014fe: PUSH2 0x1506 00001501: JUMPI 00001502: PUSH1 0x00 00001504: DUP1 00001505: REVERT 00001506: JUMPDEST 00001507: DUP1 00001508: DUP3 00001509: LT 0000150a: PUSH2 0x1512 0000150d: JUMPI 0000150e: PUSH1 0x00 00001510: DUP1 00001511: REVERT 00001512: JUMPDEST 00001513: PUSH1 0x01 00001515: DUP6 00001516: SWAP1 00001517: SSTORE 00001518: PUSH1 0x02 0000151a: DUP5 0000151b: SWAP1 0000151c: SSTORE 0000151d: PUSH1 0x03 0000151f: DUP4 00001520: SWAP1 00001521: SSTORE 00001522: PUSH1 0x04 00001524: DUP3 00001525: SWAP1 00001526: SSTORE 00001527: PUSH2 0x1530 0000152a: DUP2 0000152b: DUP4 0000152c: PUSH2 0x1250 0000152f: JUMP 00001530: JUMPDEST 00001531: PUSH1 0x05 00001533: SSTORE 00001534: POP 00001535: POP 00001536: POP 00001537: POP 00001538: POP 00001539: JUMP 0000153a: STOP 0000153b: LOG1 0000153c: PUSH6 0x627a7a723058 00001543: KECCAK256 00001544: SWAP16 00001545: GASPRICE 00001546: UNKNOWN(0xDB) 00001547: GAS 00001548: PUSH1 0xa2 0000154a: NUMBER 0000154b: PUSH23 0x07d142f44202cecc3c43906b32a4d078a98cc39d9e116f 00001563: SMOD 00001564: STOP 00001565: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec
call_targets:
0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74"
],
"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": "0x0d15fd77",
"selector": "0x0d15fd77",
"calldata_variants": [
"0x0d15fd77",
"0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e6dbdf9",
"selector": "0x2e6dbdf9",
"calldata_variants": [
"0x2e6dbdf9",
"0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e854433",
"selector": "0x2e854433",
"calldata_variants": [
"0x2e854433",
"0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3b97e856",
"selector": "0x3b97e856",
"calldata_variants": [
"0x3b97e856",
"0x3b97e8560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x47799092",
"selector": "0x47799092",
"calldata_variants": [
"0x47799092",
"0x477990920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4783c35b",
"selector": "0x4783c35b",
"calldata_variants": [
"0x4783c35b",
"0x4783c35b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4b60ce77",
"selector": "0x4b60ce77",
"calldata_variants": [
"0x4b60ce77",
"0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fb2e45d",
"selector": "0x4fb2e45d",
"calldata_variants": [
"0x4fb2e45d",
"0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 743,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 911,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1536,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 9,
"guards_detected": [],
"untrusted_call_count": 9
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec
call_targets:
0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74"
],
"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": "0x0d15fd77",
"selector": "0x0d15fd77",
"calldata_variants": [
"0x0d15fd77",
"0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e6dbdf9",
"selector": "0x2e6dbdf9",
"calldata_variants": [
"0x2e6dbdf9",
"0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e854433",
"selector": "0x2e854433",
"calldata_variants": [
"0x2e854433",
"0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3b97e856",
"selector": "0x3b97e856",
"calldata_variants": [
"0x3b97e856",
"0x3b97e8560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x47799092",
"selector": "0x47799092",
"calldata_variants": [
"0x47799092",
"0x477990920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4783c35b",
"selector": "0x4783c35b",
"calldata_variants": [
"0x4783c35b",
"0x4783c35b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4b60ce77",
"selector": "0x4b60ce77",
"calldata_variants": [
"0x4b60ce77",
"0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fb2e45d",
"selector": "0x4fb2e45d",
"calldata_variants": [
"0x4fb2e45d",
"0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 743,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 911,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1536,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 9,
"guards_detected": []
}
|
| 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": 9
}
|