9598e70f-31d0-43fa-b866-5b082eafaa88
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 |
|---|---|---|---|---|
| 31275 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110648 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110649 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110650 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110651 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110652 | detector.run | complete | 1 / 3 | 1 week ago |
| 110653 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:174526] OpenAI Codex v0.77.0 (research preview)
[codex:174526] --------
[codex:174526] workdir: /tmp/codex-multi-fpc79xmj
[codex:174526] model: gpt-5.2-codex
[codex:174526] provider: openai
[codex:174526] approval: never
[codex:174526] sandbox: read-only
[codex:174526] reasoning effort: xhigh
[codex:174526] reasoning summaries: auto
[codex:174526] session id: 019b7f4e-df46-7540-bd3f-b1cba07c5bcf
[codex:174526] --------
[codex:174526] user
[codex:174526] 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:174526]
[codex:174526] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:174526]
[codex:174526] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:174526] - Gas inefficiency, code quality, or best practices
[codex:174526] - Theoretical vulnerabilities without a clear extraction path
[codex:174526] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:174526] - Issues requiring social engineering or off-chain coordination
[codex:174526]
[codex:174526] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:174526] - CALL/DELEGATECALL with controllable destination or calldata
[codex:174526] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:174526] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:174526] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:174526] - External calls before state updates (reentrancy)
[codex:174526] - SELFDESTRUCT with controllable beneficiary
[codex:174526] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:174526]
[codex:174526] For each finding, you MUST explain:
[codex:174526] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:174526] 2. The concrete sequence of transactions to extract value
[codex:174526] 3. Why you believe this is exploitable (not just suspicious)
[codex:174526]
[codex:174526] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:174526] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:174526]
[codex:174526] Output MUST be valid JSON matching the provided schema.
[codex:174526] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:174526] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:174526] mcp startup: no servers
[codex:174526]
[codex:174526] thinking
[codex:174526] **Checking for instructions and BYTECODE_BUNDLE**
[codex:174526] exec
[codex:174526] /bin/bash -lc ls in /tmp/codex-multi-fpc79xmj succeeded in 5ms:
[codex:174526] BYTECODE_BUNDLE.txt
[codex:174526] codex-output-schema.json
[codex:174526] exec
[codex:174526] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-fpc79xmj succeeded in 5ms:
[codex:174526] Runtime bytecode bundle for best-effort auditing.
[codex:174526] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:174526]
[codex:174526] FILE: runtime_bytecode.hex
[codex:174526] 0x606060405236156101435763ffffffff60e060020a60003504166307d52fa8811461014857806320869f851461016d578063270df9b51461019257806333c50420146101c15780633ccfd60b146101eb5780634ae26eb314610200578063517125fa1461022557806353f4db011461024a57806363b201171461026f5780636b64c769146102945780638038b999146102a95780638581e4ca146102f45780638f84aa09146103195780638fa8b7901461034857806397f2f5c31461035d5780639cc5b2b7146103825780639d76ea5814610397578063a5c83622146103c6578063aab64305146103eb578063bff99c6c14610410578063d05762311461043f578063d0e30db014610464578063d5435a821461046e578063e488cd9f14610493578063e797ac87146104ab578063f9431110146104d0578063fc0c546a14610507575b600080fd5b341561015357600080fd5b61015b610536565b60405190815260200160405180910390f35b341561017857600080fd5b61015b61053c565b60405190815260200160405180910390f35b341561019d57600080fd5b6101a5610542565b604051600160a060020a03909116815260200160405180910390f35b34156101cc57600080fd5b6101e960043560243560443560ff6064351660843560a435610551565b005b34156101f657600080fd5b6101e9610869565b005b341561020b57600080fd5b61015b610add565b60405190815260200160405180910390f35b341561023057600080fd5b61015b610ae3565b60405190815260200160405180910390f35b341561025557600080fd5b61015b610ae9565b60405190815260200160405180910390f35b341561027a57600080fd5b61015b610aef565b60405190815260200160405180910390f35b341561029f57600080fd5b6101e9610af5565b005b34156102b457600080fd5b6102c8600160a060020a0360043516610cda565b604051938452602084019290925260408084019190915290151560608301526080909101905180910390f35b34156102ff57600080fd5b61015b610d04565b60405190815260200160405180910390f35b341561032457600080fd5b6101a5610d0a565b604051600160a060020a03909116815260200160405180910390f35b341561035357600080fd5b6101e9610d19565b005b341561036857600080fd5b61015b610e9a565b60405190815260200160405180910390f35b341561038d57600080fd5b6101e9610ea0565b005b34156103a257600080fd5b6101a561114d565b604051600160a060020a03909116815260200160405180910390f35b34156103d157600080fd5b61015b61115c565b60405190815260200160405180910390f35b34156103f657600080fd5b61015b611162565b60405190815260200160405180910390f35b341561041b57600080fd5b6101a5611168565b604051600160a060020a03909116815260200160405180910390f35b341561044a57600080fd5b61015b611177565b60405190815260200160405180910390f35b6101e961117d565b005b341561047957600080fd5b61015b611230565b60405190815260200160405180910390f35b341561049e57600080fd5b6101e9600435611236565b005b34156104b657600080fd5b61015b6112e1565b60405190815260200160405180910390f35b34156104db57600080fd5b6104e36112e7565b604051808260038111156104f357fe5b60ff16815260200191505060405180910390f35b341561051257600080fd5b6101a56112f7565b604051600160a060020a03909116815260200160405180910390f35b60055481565b600b5481565b600154600160a060020a031681565b600080600080600080600e54600010151561056857fe5b60015b600f5460a060020a900460ff16600381111561058357fe5b1461058a57fe5b6004544390111561059757fe5b60055443106105a257fe5b60005433600160a060020a039081169116146105ba57fe5b600d548b9011156105c757fe5b600e548c9011156105d457fe5b8a8c11156105de57fe5b60008a9011156105ea57fe5b600c548a11156105f657fe5b6040517f6164647265737320636f6e74726163744164647265737300000000000000000081527f75696e7432353620746f6b656e4269645072696365496e57656900000000000060178201527f75696e7432353620626964576569416d6f756e7400000000000000000000000060318201526045016040518091039020308d8d604051600160a060020a03939093166c01000000000000000000000000028352601483019190915260348201526054016040518091039020604051918252602082015260409081019051809103902095506001868a8a8a6040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561072c57600080fd5b50506020604051035194506107438b600e54611306565b93506107596107528b86611322565b6064611306565b92506107658484611351565b915060095461077683601154611351565b111561077e57fe5b60075461078d6012548d611351565b111561079557fe5b50600160a060020a038416600090815260106020526040902080548b11156107b957fe5b6001810154156107c557fe5b8181600201819055506107da84600e54611322565b600182015560028101546011546107f19190611351565b60115560018101546012546108069190611351565b60125560028101546001820154600160a060020a038716917f7de78459cfa5d2672864a32b5fce0a527eef6b37c849977549e87886abec1bc49160405191825260208201526040908101905180910390a25b5b5b5b505050505050505050505050565b600043600554111580610894575060025b600f5460a060020a900460ff16600381111561089257fe5b145b806108b7575060035b600f5460a060020a900460ff1660038111156108b557fe5b145b15156108bf57fe5b50600160a060020a0333166000908152601060205260409020600381015460ff16156108ea57600080fd5b60038101805460ff191660011790558054600d54111561090957600080fd5b60025b600f5460a060020a900460ff16600381111561092457fe5b1415610a5a57600f546002820154600160a060020a039091169063a9059cbb90339060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561099257600080fd5b6102c65a03f115156109a357600080fd5b5050506040518051905015156109b857600080fd5b33600160a060020a03166108fc6109d78360000154846001015461136b565b9081150290604051600060405180830381858888f1935050505015156109fc57600080fd5b33600160a060020a03167f5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab8260020154610a3e8460000154856001015461136b565b60405191825260208201526040908101905180910390a2610ad8565b8054600160a060020a0333169080156108fc0290604051600060405180830381858888f193505050501515610a8e57600080fd5b33600160a060020a03167f5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab6000836000015460405191825260208201526040908101905180910390a25b5b5b50565b600e5481565b60085481565b60125481565b60115481565b60005b600f5460a060020a900460ff166003811115610b1057fe5b14610b1757fe5b60005433600160a060020a03908116911614610b2f57fe5b600354600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179081905560095491166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610baf57600080fd5b6102c65a03f11515610bc057600080fd5b50505060405180519050141515610bd657600080fd5b600a5443016004819055600b5401600555600f80546001919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600354600154600254600d54600654600754600854600954600c546004546005547f397afdf24a674cdf55f7d8aec13fd2a3ec0e060a0576e00df093197d4a4b5fa89a600160a060020a039081169a811699169796959493929190604051600160a060020a039b8c168152998b1660208b0152979099166040808a01919091526060890196909652608088019490945260a087019290925260c086015260e085015261010084015261012083019390935261014082015261016001905180910390a15b5b5b565b60106020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60065481565b600054600160a060020a031681565b60005433600160a060020a03908116911614610d3157fe5b60025b600f5460a060020a900460ff166003811115610d4c57fe5b1415610d5457fe5b600f80546003919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600f54600254600160a060020a039182169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610de757600080fd5b6102c65a03f11515610df857600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e4e57600080fd5b6102c65a03f11515610e5f57600080fd5b50505060405180519050507f34d7cde8731cf1128160af3900870deac2c35a66ce3a110da29889b54510583060405160405180910390a15b5b565b60095481565b600e54600010610eac57fe5b60015b600f5460a060020a900460ff166003811115610ec757fe5b14610ece57fe5b60045443901115610edb57fe5b6005544310610ee657fe5b60005433600160a060020a03908116911614610efe57fe5b600f54600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610f5757600080fd5b6102c65a03f11515610f6857600080fd5b505050604051805160115411159050610f7d57fe5b6011546008541115610f8b57fe5b6012546006541115610f9957fe5b600f80546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600f54600254600160a060020a039182169163a9059cbb9116611052836370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561102f57600080fd5b6102c65a03f1151561104057600080fd5b5050506040518051905060115461136b565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561109e57600080fd5b6102c65a03f115156110af57600080fd5b5050506040518051905015156110c157fe5b600154601254600160a060020a039091169080156108fc0290604051600060405180830381858888f1935050505015156110fa57600080fd5b7f1545807e1b78a586e89384e8d9d248f7f7ab37282f151018c6bbe1e72bca9991600e5460115460125460405180848152602001838152602001828152602001935050505060405180910390a15b5b5b5b565b600354600160a060020a031681565b600a5481565b60045481565b600254600160a060020a031681565b600c5481565b6000600454431080156111a8575060015b600f5460a060020a900460ff1660038111156111a657fe5b145b15156111b057fe5b600d54349011156111bd57fe5b50600160a060020a033316600090815260106020526040902080546111e29034611351565b808255600160a060020a033316907fad40ae5dc69974ba932d08b0a608e89109412d41d04850f5196f144875ae266090349060405191825260208201526040908101905180910390a25b5b50565b60075481565b60015b600f5460a060020a900460ff16600381111561125157fe5b1461125857fe5b6004544390111561126557fe5b600554431061127057fe5b60005433600160a060020a0390811691161461128857fe5b600e541561129557600080fd5b60008190106112a357600080fd5b600e8190557f4c8de4041dbb62396f4f9b3d5da00b6e16776c299f4a6da5c737b24f1182efc38160405190815260200160405180910390a15b5b5b50565b600d5481565b600f5460a060020a900460ff1681565b600f54600160a060020a031681565b600080828481151561131457fe5b0490508091505b5092915050565b600082820283158061133e575082848281151561133b57fe5b04145b151561134657fe5b8091505b5092915050565b60008282018381101561134657fe5b8091505b5092915050565b60008282111561137757fe5b508082035b929150505600a165627a7a72305820b74b18bd0c15b92e451305aeebe1ebf03de420b9a75ebca032f2e28358caef3e0029
[codex:174526]
[codex:174526] thinking
[codex:174526] **Examining bytecode for vulnerabilities**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] import textwrap, sys
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0]
[codex:174526] # Actually file contains 0x at start of runtime bytecode. We'll parse after '0x' up to newline.
[codex:174526] hexdata=hexdata.strip()
[codex:174526] # ensure even length
[codex:174526] if len(hexdata)%2: hexdata=hexdata[:-1]
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] # opcode table
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526]
[codex:174526] # quick disasm
[codex:174526] pc=0
[codex:174526] lines=[]
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, 'UNKNOWN')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] val=data.hex()
[codex:174526] lines.append(f\"{pc:04x}: {name} 0x{val}\")
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] lines.append(f\"{pc:04x}: {name}\")
[codex:174526] pc+=1
[codex:174526]
[codex:174526] # output subset around CALL or SSTORE? We'll dump all to a temp file
[codex:174526] open('/tmp/codex-multi-fpc79xmj/disasm.txt','w').write('\\n'.join(lines))
[codex:174526] print('disasm lines', len(lines))
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj exited 1 in 34ms:
[codex:174526] Traceback (most recent call last):
[codex:174526] File "<stdin>", line 40, in <module>
[codex:174526] PermissionError: [Errno 13] Permission denied: '/tmp/codex-multi-fpc79xmj/disasm.txt'
[codex:174526]
[codex:174526] thinking
[codex:174526] **Preparing disassembly output**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526]
[codex:174526] # create list of (pc,opname,immediate)
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] # find CALL/DELEGATECALL/STATICCALL/SELFDESTRUCT
[codex:174526] interesting={'CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT'}
[codex:174526] for idx,(pc,name,imm) in enumerate(inst):
[codex:174526] if name in interesting:
[codex:174526] print(f\"\\n== {name} at {pc:04x} ==\")
[codex:174526] # print previous 8 and next 6 instructions
[codex:174526] for j in range(max(0,idx-8), min(len(inst), idx+7)):
[codex:174526] p,n,i=inst[j]
[codex:174526] if i is None:
[codex:174526] print(f\"{p:04x}: {n}\")
[codex:174526] else:
[codex:174526] print(f\"{p:04x}: {n} 0x{i}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 25ms:
[codex:174526]
[codex:174526] == CALL at 0721 ==
[codex:174526] 0716: DUP5
[codex:174526] 0717: SUB
[codex:174526] 0718: SWAP1
[codex:174526] 0719: PUSH1 0x00
[codex:174526] 071b: DUP7
[codex:174526] 071c: PUSH2 0x646e
[codex:174526] 071f: GAS
[codex:174526] 0720: SUB
[codex:174526] 0721: CALL
[codex:174526] 0722: ISZERO
[codex:174526] 0723: ISZERO
[codex:174526] 0724: PUSH2 0x072c
[codex:174526] 0727: JUMPI
[codex:174526] 0728: PUSH1 0x00
[codex:174526] 072a: DUP1
[codex:174526]
[codex:174526] == CALL at 0998 ==
[codex:174526] 098d: JUMPI
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing call sites for value and security**
[codex:174526]
[codex:174526] I'm listing multiple call addresses to check if any include ETH value without proper checks. Since standard ERC20 transfers have zero value calls, the calls likely to transfer ETH need deeper context inspection for access control or reentrancy risks. I plan to script extraction of surrounding instructions for these critical calls to better understand their safety.
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526]
[codex:174526] # disassemble to list
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] # map pc->index
[codex:174526] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(inst)}
[codex:174526]
[codex:174526] # function to print window around a pc
[codex:174526]
[codex:174526] def print_window(pc, before=20, after=12):
[codex:174526] idx=pc_to_idx[pc]
[codex:174526] start=max(0,idx-before)
[codex:174526] end=min(len(inst), idx+after)
[codex:174526] for j in range(start,end):
[codex:174526] p,n,i=inst[j]
[codex:174526] if i is None:
[codex:174526] print(f\"{p:04x}: {n}\")
[codex:174526] else:
[codex:174526] print(f\"{p:04x}: {n} 0x{i}\")
[codex:174526]
[codex:174526] for target in [0x09ec,0x0a7e,0x10ea,0x0721]:
[codex:174526] print(f\"\\n=== window around {target:04x} ===\")
[codex:174526] print_window(target)
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526]
[codex:174526] === window around 09ec ===
[codex:174526] 09d3: PUSH2 0x136b
[codex:174526] 09d6: JUMP
[codex:174526] 09d7: JUMPDEST
[codex:174526] 09d8: SWAP1
[codex:174526] 09d9: DUP2
[codex:174526] 09da: ISZERO
[codex:174526] 09db: MUL
[codex:174526] 09dc: SWAP1
[codex:174526] 09dd: PUSH1 0x40
[codex:174526] 09df: MLOAD
[codex:174526] 09e0: PUSH1 0x00
[codex:174526] 09e2: PUSH1 0x40
[codex:174526] 09e4: MLOAD
[codex:174526] 09e5: DUP1
[codex:174526] 09e6: DUP4
[codex:174526] 09e7: SUB
[codex:174526] 09e8: DUP2
[codex:174526] 09e9: DUP6
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing low-level call patterns**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526]
[codex:174526] # disassemble to list
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] # print range 0x08c0-0x0a20
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x08c0 <= pc <= 0x0a20:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526] 08c0: POP
[codex:174526] 08c1: PUSH1 0x01
[codex:174526] 08c3: PUSH1 0xa0
[codex:174526] 08c5: PUSH1 0x02
[codex:174526] 08c7: EXP
[codex:174526] 08c8: SUB
[codex:174526] 08c9: CALLER
[codex:174526] 08ca: AND
[codex:174526] 08cb: PUSH1 0x00
[codex:174526] 08cd: SWAP1
[codex:174526] 08ce: DUP2
[codex:174526] 08cf: MSTORE
[codex:174526] 08d0: PUSH1 0x10
[codex:174526] 08d2: PUSH1 0x20
[codex:174526] 08d4: MSTORE
[codex:174526] 08d5: PUSH1 0x40
[codex:174526] 08d7: SWAP1
[codex:174526] 08d8: SHA3
[codex:174526] 08d9: PUSH1 0x03
[codex:174526] 08db: DUP2
[codex:174526]
[codex:174526] thinking
[codex:174526] **Continuing exploration**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0a00 <= pc <= 0x0b40:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 21ms:
[codex:174526] 0a00: PUSH1 0xa0
[codex:174526] 0a02: PUSH1 0x02
[codex:174526] 0a04: EXP
[codex:174526] 0a05: SUB
[codex:174526] 0a06: AND
[codex:174526] 0a07: PUSH32 0x5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab
[codex:174526] 0a28: DUP3
[codex:174526] 0a29: PUSH1 0x02
[codex:174526] 0a2b: ADD
[codex:174526] 0a2c: SLOAD
[codex:174526] 0a2d: PUSH2 0x0a3e
[codex:174526] 0a30: DUP5
[codex:174526] 0a31: PUSH1 0x00
[codex:174526] 0a33: ADD
[codex:174526] 0a34: SLOAD
[codex:174526] 0a35: DUP6
[codex:174526] 0a36: PUSH1 0x01
[codex:174526] 0a38: ADD
[codex:174526] 0a39: SLOAD
[codex:174526] 0a3a: PUSH2 0x136b
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing contract functions and storage access**
[codex:174526]
[codex:174526] I'm examining a contract function around 0x08c0 that handles bid cancellations, token transfers, and ETH refunds. I'm decoding stack and storage operations to understand call parameters, checks, and state updates, focusing on whether access control or reentrancy protections exist around SSTORE and external CALL instructions. I'll parse SSTORE instructions and their surrounding code to identify owner checks or vulnerabilities related to ownership and withdrawals.
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526]
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] # find sstore
[codex:174526] for idx,(pc,name,imm) in enumerate(inst):
[codex:174526] if name=='SSTORE':
[codex:174526] print(f\"\\n== SSTORE at {pc:04x} ==\")
[codex:174526] for j in range(max(0, idx-12), min(len(inst), idx+6)):
[codex:174526] p,n,i=inst[j]
[codex:174526] if i is None:
[codex:174526] print(f\"{p:04x}: {n}\")
[codex:174526] else:
[codex:174526] print(f\"{p:04x}: {n} 0x{i}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 23ms:
[codex:174526]
[codex:174526] == SSTORE at 07cd ==
[codex:174526] 07be: SLOAD
[codex:174526] 07bf: ISZERO
[codex:174526] 07c0: PUSH2 0x07c5
[codex:174526] 07c3: JUMPI
[codex:174526] 07c4: INVALID
[codex:174526] 07c5: JUMPDEST
[codex:174526] 07c6: DUP2
[codex:174526] 07c7: DUP2
[codex:174526] 07c8: PUSH1 0x02
[codex:174526] 07ca: ADD
[codex:174526] 07cb: DUP2
[codex:174526] 07cc: SWAP1
[codex:174526] 07cd: SSTORE
[codex:174526] 07ce: POP
[codex:174526] 07cf: PUSH2 0x07da
[codex:174526] 07d2: DUP5
[codex:174526] 07d3: PUSH1 0x0e
[codex:174526] 07d5: SLOAD
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing SSTORE access control**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0b00 <= pc <= 0x0bd0:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526] 0b00: EXP
[codex:174526] 0b01: SWAP1
[codex:174526] 0b02: DIV
[codex:174526] 0b03: PUSH1 0xff
[codex:174526] 0b05: AND
[codex:174526] 0b06: PUSH1 0x03
[codex:174526] 0b08: DUP2
[codex:174526] 0b09: GT
[codex:174526] 0b0a: ISZERO
[codex:174526] 0b0b: PUSH2 0x0b10
[codex:174526] 0b0e: JUMPI
[codex:174526] 0b0f: INVALID
[codex:174526] 0b10: JUMPDEST
[codex:174526] 0b11: EQ
[codex:174526] 0b12: PUSH2 0x0b17
[codex:174526] 0b15: JUMPI
[codex:174526] 0b16: INVALID
[codex:174526] 0b17: JUMPDEST
[codex:174526] 0b18: PUSH1 0x00
[codex:174526] 0b1a: SLOAD
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing owner-only SSTORE operations**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0d30 <= pc <= 0x0e10:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 21ms:
[codex:174526] 0d30: INVALID
[codex:174526] 0d31: JUMPDEST
[codex:174526] 0d32: PUSH1 0x02
[codex:174526] 0d34: JUMPDEST
[codex:174526] 0d35: PUSH1 0x0f
[codex:174526] 0d37: SLOAD
[codex:174526] 0d38: PUSH1 0xa0
[codex:174526] 0d3a: PUSH1 0x02
[codex:174526] 0d3c: EXP
[codex:174526] 0d3d: SWAP1
[codex:174526] 0d3e: DIV
[codex:174526] 0d3f: PUSH1 0xff
[codex:174526] 0d41: AND
[codex:174526] 0d42: PUSH1 0x03
[codex:174526] 0d44: DUP2
[codex:174526] 0d45: GT
[codex:174526] 0d46: ISZERO
[codex:174526] 0d47: PUSH2 0x0d4c
[codex:174526] 0d4a: JUMPI
[codex:174526] 0d4b: INVALID
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing function ownership checks**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0f60 <= pc <= 0x1040:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526] 0f60: PUSH2 0x0f68
[codex:174526] 0f63: JUMPI
[codex:174526] 0f64: PUSH1 0x00
[codex:174526] 0f66: DUP1
[codex:174526] 0f67: REVERT
[codex:174526] 0f68: JUMPDEST
[codex:174526] 0f69: POP
[codex:174526] 0f6a: POP
[codex:174526] 0f6b: POP
[codex:174526] 0f6c: PUSH1 0x40
[codex:174526] 0f6e: MLOAD
[codex:174526] 0f6f: DUP1
[codex:174526] 0f70: MLOAD
[codex:174526] 0f71: PUSH1 0x11
[codex:174526] 0f73: SLOAD
[codex:174526] 0f74: GT
[codex:174526] 0f75: ISZERO
[codex:174526] 0f76: SWAP1
[codex:174526] 0f77: POP
[codex:174526] 0f78: PUSH2 0x0f7d
[codex:174526]
[codex:174526] thinking
[codex:174526] **Investigating early access control checks**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0e80 <= pc <= 0x0f20:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 23ms:
[codex:174526] 0e8c: PUSH1 0x40
[codex:174526] 0e8e: MLOAD
[codex:174526] 0e8f: PUSH1 0x40
[codex:174526] 0e91: MLOAD
[codex:174526] 0e92: DUP1
[codex:174526] 0e93: SWAP2
[codex:174526] 0e94: SUB
[codex:174526] 0e95: SWAP1
[codex:174526] 0e96: LOG1
[codex:174526] 0e97: JUMPDEST
[codex:174526] 0e98: JUMPDEST
[codex:174526] 0e99: JUMP
[codex:174526] 0e9a: JUMPDEST
[codex:174526] 0e9b: PUSH1 0x09
[codex:174526] 0e9d: SLOAD
[codex:174526] 0e9e: DUP2
[codex:174526] 0e9f: JUMP
[codex:174526] 0ea0: JUMPDEST
[codex:174526] 0ea1: PUSH1 0x0e
[codex:174526] 0ea3: SLOAD
[codex:174526]
[codex:174526] thinking
[codex:174526] **Examining function access controls and state updates**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x1200 <= pc <= 0x12f0:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526] 1212: SWAP1
[codex:174526] 1213: CALLVALUE
[codex:174526] 1214: SWAP1
[codex:174526] 1215: PUSH1 0x40
[codex:174526] 1217: MLOAD
[codex:174526] 1218: SWAP2
[codex:174526] 1219: DUP3
[codex:174526] 121a: MSTORE
[codex:174526] 121b: PUSH1 0x20
[codex:174526] 121d: DUP3
[codex:174526] 121e: ADD
[codex:174526] 121f: MSTORE
[codex:174526] 1220: PUSH1 0x40
[codex:174526] 1222: SWAP1
[codex:174526] 1223: DUP2
[codex:174526] 1224: ADD
[codex:174526] 1225: SWAP1
[codex:174526] 1226: MLOAD
[codex:174526] 1227: DUP1
[codex:174526] 1228: SWAP2
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing SSTORE and owner checks**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0640 <= pc <= 0x0745:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 25ms:
[codex:174526] 0640: DUP3
[codex:174526] 0641: ADD
[codex:174526] 0642: MSTORE
[codex:174526] 0643: PUSH32 0x75696e7432353620626964576569416d6f756e74000000000000000000000000
[codex:174526] 0664: PUSH1 0x31
[codex:174526] 0666: DUP3
[codex:174526] 0667: ADD
[codex:174526] 0668: MSTORE
[codex:174526] 0669: PUSH1 0x45
[codex:174526] 066b: ADD
[codex:174526] 066c: PUSH1 0x40
[codex:174526] 066e: MLOAD
[codex:174526] 066f: DUP1
[codex:174526] 0670: SWAP2
[codex:174526] 0671: SUB
[codex:174526] 0672: SWAP1
[codex:174526] 0673: SHA3
[codex:174526] 0674: ADDRESS
[codex:174526] 0675: DUP14
[codex:174526] 0676: DUP14
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing potential CALL vulnerabilities**
[codex:174526]
[codex:174526] I'm parsing the function at 0x0551 to understand if user-controlled inputs could trigger a CALL with ETH value to arbitrary contracts, possibly enabling unauthorized withdrawals. I'm checking parameter usage, especially `contractAddress` and `bidWeiAmount`, and whether msg.value covers bidWeiAmount or if the contract’s balance might be used unsafely. I'll look closely at CALLVALUE and early function guards for exploit paths.
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x0540 <= pc <= 0x0620:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 23ms:
[codex:174526] 0540: DUP2
[codex:174526] 0541: JUMP
[codex:174526] 0542: JUMPDEST
[codex:174526] 0543: PUSH1 0x01
[codex:174526] 0545: SLOAD
[codex:174526] 0546: PUSH1 0x01
[codex:174526] 0548: PUSH1 0xa0
[codex:174526] 054a: PUSH1 0x02
[codex:174526] 054c: EXP
[codex:174526] 054d: SUB
[codex:174526] 054e: AND
[codex:174526] 054f: DUP2
[codex:174526] 0550: JUMP
[codex:174526] 0551: JUMPDEST
[codex:174526] 0552: PUSH1 0x00
[codex:174526] 0554: DUP1
[codex:174526] 0555: PUSH1 0x00
[codex:174526] 0557: DUP1
[codex:174526] 0558: PUSH1 0x00
[codex:174526] 055a: DUP1
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing storage access and call ordering**
[codex:174526] exec
[codex:174526] /bin/bash -lc "python - <<'PY'
[codex:174526] from binascii import unhexlify
[codex:174526] hexdata=open('/tmp/codex-multi-fpc79xmj/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].split()[0].strip()
[codex:174526] code=bytes.fromhex(hexdata)
[codex:174526] ops={
[codex:174526] 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:174526] 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:174526] 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',
[codex:174526] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:174526] 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:174526] 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:174526] 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:174526] 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:174526] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:174526] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:174526] }
[codex:174526] inst=[]
[codex:174526] pc=0
[codex:174526] while pc < len(code):
[codex:174526] op=code[pc]
[codex:174526] name=ops.get(op, f'UNKNOWN_{op:02x}')
[codex:174526] if name.startswith('PUSH'):
[codex:174526] n=op-0x5f
[codex:174526] data=code[pc+1:pc+1+n]
[codex:174526] inst.append((pc,name,data.hex()))
[codex:174526] pc+=1+n
[codex:174526] else:
[codex:174526] inst.append((pc,name,None))
[codex:174526] pc+=1
[codex:174526]
[codex:174526] for pc,name,imm in inst:
[codex:174526] if 0x1040 <= pc <= 0x1130:
[codex:174526] if imm is None:
[codex:174526] print(f\"{pc:04x}: {name}\")
[codex:174526] else:
[codex:174526] print(f\"{pc:04x}: {name} 0x{imm}\")
[codex:174526] PY" in /tmp/codex-multi-fpc79xmj succeeded in 22ms:
[codex:174526] 1040: JUMPDEST
[codex:174526] 1041: POP
[codex:174526] 1042: POP
[codex:174526] 1043: POP
[codex:174526] 1044: PUSH1 0x40
[codex:174526] 1046: MLOAD
[codex:174526] 1047: DUP1
[codex:174526] 1048: MLOAD
[codex:174526] 1049: SWAP1
[codex:174526] 104a: POP
[codex:174526] 104b: PUSH1 0x11
[codex:174526] 104d: SLOAD
[codex:174526] 104e: PUSH2 0x136b
[codex:174526] 1051: JUMP
[codex:174526] 1052: JUMPDEST
[codex:174526] 1053: PUSH1 0x00
[codex:174526] 1055: PUSH1 0x40
[codex:174526] 1057: MLOAD
[codex:174526] 1058: PUSH1 0x20
[codex:174526] 105a: ADD
[codex:174526]
[codex:174526] thinking
[codex:174526] **Analyzing token transfer and reentrancy risks**
[codex:174526] codex
[codex:174526] {"no_findings":true,"summary":"No concrete, exploitable profit path is evident from the provided runtime bytecode alone.","findings":[]}
[codex:174526] tokens used
[codex:174526] 90,357
[codex:174526] {"no_findings":true,"summary":"No concrete, exploitable profit path is evident from the provided runtime bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T15:32:40.492708+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path is evident from the provided runtime bytecode alone.",
"raw_final": {
"summary": "No concrete, exploitable profit path is evident from the provided runtime bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0143 0000000a: JUMPI 0000000b: PUSH4 0xffffffff 00000010: PUSH1 0xe0 00000012: PUSH1 0x02 00000014: EXP 00000015: PUSH1 0x00 00000017: CALLDATALOAD 00000018: DIV 00000019: AND 0000001a: PUSH4 0x07d52fa8 0000001f: DUP2 00000020: EQ 00000021: PUSH2 0x0148 00000024: JUMPI 00000025: DUP1 00000026: PUSH4 0x20869f85 0000002b: EQ 0000002c: PUSH2 0x016d 0000002f: JUMPI 00000030: DUP1 00000031: PUSH4 0x270df9b5 00000036: EQ 00000037: PUSH2 0x0192 0000003a: JUMPI 0000003b: DUP1 0000003c: PUSH4 0x33c50420 00000041: EQ 00000042: PUSH2 0x01c1 00000045: JUMPI 00000046: DUP1 00000047: PUSH4 0x3ccfd60b 0000004c: EQ 0000004d: PUSH2 0x01eb 00000050: JUMPI 00000051: DUP1 00000052: PUSH4 0x4ae26eb3 00000057: EQ 00000058: PUSH2 0x0200 0000005b: JUMPI 0000005c: DUP1 0000005d: PUSH4 0x517125fa 00000062: EQ 00000063: PUSH2 0x0225 00000066: JUMPI 00000067: DUP1 00000068: PUSH4 0x53f4db01 0000006d: EQ 0000006e: PUSH2 0x024a 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0x63b20117 00000078: EQ 00000079: PUSH2 0x026f 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0x6b64c769 00000083: EQ 00000084: PUSH2 0x0294 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x8038b999 0000008e: EQ 0000008f: PUSH2 0x02a9 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x8581e4ca 00000099: EQ 0000009a: PUSH2 0x02f4 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x8f84aa09 000000a4: EQ 000000a5: PUSH2 0x0319 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x8fa8b790 000000af: EQ 000000b0: PUSH2 0x0348 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x97f2f5c3 000000ba: EQ 000000bb: PUSH2 0x035d 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x9cc5b2b7 000000c5: EQ 000000c6: PUSH2 0x0382 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x9d76ea58 000000d0: EQ 000000d1: PUSH2 0x0397 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0xa5c83622 000000db: EQ 000000dc: PUSH2 0x03c6 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0xaab64305 000000e6: EQ 000000e7: PUSH2 0x03eb 000000ea: JUMPI 000000eb: DUP1 000000ec: PUSH4 0xbff99c6c 000000f1: EQ 000000f2: PUSH2 0x0410 000000f5: JUMPI 000000f6: DUP1 000000f7: PUSH4 0xd0576231 000000fc: EQ 000000fd: PUSH2 0x043f 00000100: JUMPI 00000101: DUP1 00000102: PUSH4 0xd0e30db0 00000107: EQ 00000108: PUSH2 0x0464 0000010b: JUMPI 0000010c: DUP1 0000010d: PUSH4 0xd5435a82 00000112: EQ 00000113: PUSH2 0x046e 00000116: JUMPI 00000117: DUP1 00000118: PUSH4 0xe488cd9f 0000011d: EQ 0000011e: PUSH2 0x0493 00000121: JUMPI 00000122: DUP1 00000123: PUSH4 0xe797ac87 00000128: EQ 00000129: PUSH2 0x04ab 0000012c: JUMPI 0000012d: DUP1 0000012e: PUSH4 0xf9431110 00000133: EQ 00000134: PUSH2 0x04d0 00000137: JUMPI 00000138: DUP1 00000139: PUSH4 0xfc0c546a 0000013e: EQ 0000013f: PUSH2 0x0507 00000142: JUMPI 00000143: JUMPDEST 00000144: PUSH1 0x00 00000146: DUP1 00000147: REVERT 00000148: JUMPDEST 00000149: CALLVALUE 0000014a: ISZERO 0000014b: PUSH2 0x0153 0000014e: JUMPI 0000014f: PUSH1 0x00 00000151: DUP1 00000152: REVERT 00000153: JUMPDEST 00000154: PUSH2 0x015b 00000157: PUSH2 0x0536 0000015a: JUMP 0000015b: JUMPDEST 0000015c: PUSH1 0x40 0000015e: MLOAD 0000015f: SWAP1 00000160: DUP2 00000161: MSTORE 00000162: PUSH1 0x20 00000164: ADD 00000165: PUSH1 0x40 00000167: MLOAD 00000168: DUP1 00000169: SWAP2 0000016a: SUB 0000016b: SWAP1 0000016c: RETURN 0000016d: JUMPDEST 0000016e: CALLVALUE 0000016f: ISZERO 00000170: PUSH2 0x0178 00000173: JUMPI 00000174: PUSH1 0x00 00000176: DUP1 00000177: REVERT 00000178: JUMPDEST 00000179: PUSH2 0x015b 0000017c: PUSH2 0x053c 0000017f: JUMP 00000180: JUMPDEST 00000181: PUSH1 0x40 00000183: MLOAD 00000184: SWAP1 00000185: DUP2 00000186: MSTORE 00000187: PUSH1 0x20 00000189: ADD 0000018a: PUSH1 0x40 0000018c: MLOAD 0000018d: DUP1 0000018e: SWAP2 0000018f: SUB 00000190: SWAP1 00000191: RETURN 00000192: JUMPDEST 00000193: CALLVALUE 00000194: ISZERO 00000195: PUSH2 0x019d 00000198: JUMPI 00000199: PUSH1 0x00 0000019b: DUP1 0000019c: REVERT 0000019d: JUMPDEST 0000019e: PUSH2 0x01a5 000001a1: PUSH2 0x0542 000001a4: JUMP 000001a5: JUMPDEST 000001a6: PUSH1 0x40 000001a8: MLOAD 000001a9: PUSH1 0x01 000001ab: PUSH1 0xa0 000001ad: PUSH1 0x02 000001af: EXP 000001b0: SUB 000001b1: SWAP1 000001b2: SWAP2 000001b3: AND 000001b4: DUP2 000001b5: MSTORE 000001b6: PUSH1 0x20 000001b8: ADD 000001b9: PUSH1 0x40 000001bb: MLOAD 000001bc: DUP1 000001bd: SWAP2 000001be: SUB 000001bf: SWAP1 000001c0: RETURN 000001c1: JUMPDEST 000001c2: CALLVALUE 000001c3: ISZERO 000001c4: PUSH2 0x01cc 000001c7: JUMPI 000001c8: PUSH1 0x00 000001ca: DUP1 000001cb: REVERT 000001cc: JUMPDEST 000001cd: PUSH2 0x01e9 000001d0: PUSH1 0x04 000001d2: CALLDATALOAD 000001d3: PUSH1 0x24 000001d5: CALLDATALOAD 000001d6: PUSH1 0x44 000001d8: CALLDATALOAD 000001d9: PUSH1 0xff 000001db: PUSH1 0x64 000001dd: CALLDATALOAD 000001de: AND 000001df: PUSH1 0x84 000001e1: CALLDATALOAD 000001e2: PUSH1 0xa4 000001e4: CALLDATALOAD 000001e5: PUSH2 0x0551 000001e8: JUMP 000001e9: JUMPDEST 000001ea: STOP 000001eb: JUMPDEST 000001ec: CALLVALUE 000001ed: ISZERO 000001ee: PUSH2 0x01f6 000001f1: JUMPI 000001f2: PUSH1 0x00 000001f4: DUP1 000001f5: REVERT 000001f6: JUMPDEST 000001f7: PUSH2 0x01e9 000001fa: PUSH2 0x0869 000001fd: JUMP 000001fe: JUMPDEST 000001ff: STOP 00000200: JUMPDEST 00000201: CALLVALUE 00000202: ISZERO 00000203: PUSH2 0x020b 00000206: JUMPI 00000207: PUSH1 0x00 00000209: DUP1 0000020a: REVERT 0000020b: JUMPDEST 0000020c: PUSH2 0x015b 0000020f: PUSH2 0x0add 00000212: JUMP 00000213: JUMPDEST 00000214: PUSH1 0x40 00000216: MLOAD 00000217: SWAP1 00000218: DUP2 00000219: MSTORE 0000021a: PUSH1 0x20 0000021c: ADD 0000021d: PUSH1 0x40 0000021f: MLOAD 00000220: DUP1 00000221: SWAP2 00000222: SUB 00000223: SWAP1 00000224: RETURN 00000225: JUMPDEST 00000226: CALLVALUE 00000227: ISZERO 00000228: PUSH2 0x0230 0000022b: JUMPI 0000022c: PUSH1 0x00 0000022e: DUP1 0000022f: REVERT 00000230: JUMPDEST 00000231: PUSH2 0x015b 00000234: PUSH2 0x0ae3 00000237: JUMP 00000238: JUMPDEST 00000239: PUSH1 0x40 0000023b: MLOAD 0000023c: SWAP1 0000023d: DUP2 0000023e: MSTORE 0000023f: PUSH1 0x20 00000241: ADD 00000242: PUSH1 0x40 00000244: MLOAD 00000245: DUP1 00000246: SWAP2 00000247: SUB 00000248: SWAP1 00000249: RETURN 0000024a: JUMPDEST 0000024b: CALLVALUE 0000024c: ISZERO 0000024d: PUSH2 0x0255 00000250: JUMPI 00000251: PUSH1 0x00 00000253: DUP1 00000254: REVERT 00000255: JUMPDEST 00000256: PUSH2 0x015b 00000259: PUSH2 0x0ae9 0000025c: JUMP 0000025d: JUMPDEST 0000025e: PUSH1 0x40 00000260: MLOAD 00000261: SWAP1 00000262: DUP2 00000263: MSTORE 00000264: PUSH1 0x20 00000266: ADD 00000267: PUSH1 0x40 00000269: MLOAD 0000026a: DUP1 0000026b: SWAP2 0000026c: SUB 0000026d: SWAP1 0000026e: RETURN 0000026f: JUMPDEST 00000270: CALLVALUE 00000271: ISZERO 00000272: PUSH2 0x027a 00000275: JUMPI 00000276: PUSH1 0x00 00000278: DUP1 00000279: REVERT 0000027a: JUMPDEST 0000027b: PUSH2 0x015b 0000027e: PUSH2 0x0aef 00000281: JUMP 00000282: JUMPDEST 00000283: PUSH1 0x40 00000285: MLOAD 00000286: SWAP1 00000287: DUP2 00000288: MSTORE 00000289: PUSH1 0x20 0000028b: ADD 0000028c: PUSH1 0x40 0000028e: MLOAD 0000028f: DUP1 00000290: SWAP2 00000291: SUB 00000292: SWAP1 00000293: RETURN 00000294: JUMPDEST 00000295: CALLVALUE 00000296: ISZERO 00000297: PUSH2 0x029f 0000029a: JUMPI 0000029b: PUSH1 0x00 0000029d: DUP1 0000029e: REVERT 0000029f: JUMPDEST 000002a0: PUSH2 0x01e9 000002a3: PUSH2 0x0af5 000002a6: JUMP 000002a7: JUMPDEST 000002a8: STOP 000002a9: JUMPDEST 000002aa: CALLVALUE 000002ab: ISZERO 000002ac: PUSH2 0x02b4 000002af: JUMPI 000002b0: PUSH1 0x00 000002b2: DUP1 000002b3: REVERT 000002b4: JUMPDEST 000002b5: PUSH2 0x02c8 000002b8: PUSH1 0x01 000002ba: PUSH1 0xa0 000002bc: PUSH1 0x02 000002be: EXP 000002bf: SUB 000002c0: PUSH1 0x04 000002c2: CALLDATALOAD 000002c3: AND 000002c4: PUSH2 0x0cda 000002c7: JUMP 000002c8: JUMPDEST 000002c9: PUSH1 0x40 000002cb: MLOAD 000002cc: SWAP4 000002cd: DUP5 000002ce: MSTORE 000002cf: PUSH1 0x20 000002d1: DUP5 000002d2: ADD 000002d3: SWAP3 000002d4: SWAP1 000002d5: SWAP3 000002d6: MSTORE 000002d7: PUSH1 0x40 000002d9: DUP1 000002da: DUP5 000002db: ADD 000002dc: SWAP2 000002dd: SWAP1 000002de: SWAP2 000002df: MSTORE 000002e0: SWAP1 000002e1: ISZERO 000002e2: ISZERO 000002e3: PUSH1 0x60 000002e5: DUP4 000002e6: ADD 000002e7: MSTORE 000002e8: PUSH1 0x80 000002ea: SWAP1 000002eb: SWAP2 000002ec: ADD 000002ed: SWAP1 000002ee: MLOAD 000002ef: DUP1 000002f0: SWAP2 000002f1: SUB 000002f2: SWAP1 000002f3: RETURN 000002f4: JUMPDEST 000002f5: CALLVALUE 000002f6: ISZERO 000002f7: PUSH2 0x02ff 000002fa: JUMPI 000002fb: PUSH1 0x00 000002fd: DUP1 000002fe: REVERT 000002ff: JUMPDEST 00000300: PUSH2 0x015b 00000303: PUSH2 0x0d04 00000306: JUMP 00000307: JUMPDEST 00000308: PUSH1 0x40 0000030a: MLOAD 0000030b: SWAP1 0000030c: DUP2 0000030d: MSTORE 0000030e: PUSH1 0x20 00000310: ADD 00000311: PUSH1 0x40 00000313: MLOAD 00000314: DUP1 00000315: SWAP2 00000316: SUB 00000317: SWAP1 00000318: RETURN 00000319: JUMPDEST 0000031a: CALLVALUE 0000031b: ISZERO 0000031c: PUSH2 0x0324 0000031f: JUMPI 00000320: PUSH1 0x00 00000322: DUP1 00000323: REVERT 00000324: JUMPDEST 00000325: PUSH2 0x01a5 00000328: PUSH2 0x0d0a 0000032b: JUMP 0000032c: JUMPDEST 0000032d: PUSH1 0x40 0000032f: MLOAD 00000330: PUSH1 0x01 00000332: PUSH1 0xa0 00000334: PUSH1 0x02 00000336: EXP 00000337: SUB 00000338: SWAP1 00000339: SWAP2 0000033a: AND 0000033b: DUP2 0000033c: MSTORE 0000033d: PUSH1 0x20 0000033f: ADD 00000340: PUSH1 0x40 00000342: MLOAD 00000343: DUP1 00000344: SWAP2 00000345: SUB 00000346: SWAP1 00000347: RETURN 00000348: JUMPDEST 00000349: CALLVALUE 0000034a: ISZERO 0000034b: PUSH2 0x0353 0000034e: JUMPI 0000034f: PUSH1 0x00 00000351: DUP1 00000352: REVERT 00000353: JUMPDEST 00000354: PUSH2 0x01e9 00000357: PUSH2 0x0d19 0000035a: JUMP 0000035b: JUMPDEST 0000035c: STOP 0000035d: JUMPDEST 0000035e: CALLVALUE 0000035f: ISZERO 00000360: PUSH2 0x0368 00000363: JUMPI 00000364: PUSH1 0x00 00000366: DUP1 00000367: REVERT 00000368: JUMPDEST 00000369: PUSH2 0x015b 0000036c: PUSH2 0x0e9a 0000036f: JUMP 00000370: JUMPDEST 00000371: PUSH1 0x40 00000373: MLOAD 00000374: SWAP1 00000375: DUP2 00000376: MSTORE 00000377: PUSH1 0x20 00000379: ADD 0000037a: PUSH1 0x40 0000037c: MLOAD 0000037d: DUP1 0000037e: SWAP2 0000037f: SUB 00000380: SWAP1 00000381: RETURN 00000382: JUMPDEST 00000383: CALLVALUE 00000384: ISZERO 00000385: PUSH2 0x038d 00000388: JUMPI 00000389: PUSH1 0x00 0000038b: DUP1 0000038c: REVERT 0000038d: JUMPDEST 0000038e: PUSH2 0x01e9 00000391: PUSH2 0x0ea0 00000394: JUMP 00000395: JUMPDEST 00000396: STOP 00000397: JUMPDEST 00000398: CALLVALUE 00000399: ISZERO 0000039a: PUSH2 0x03a2 0000039d: JUMPI 0000039e: PUSH1 0x00 000003a0: DUP1 000003a1: REVERT 000003a2: JUMPDEST 000003a3: PUSH2 0x01a5 000003a6: PUSH2 0x114d 000003a9: JUMP 000003aa: JUMPDEST 000003ab: PUSH1 0x40 000003ad: MLOAD 000003ae: PUSH1 0x01 000003b0: PUSH1 0xa0 000003b2: PUSH1 0x02 000003b4: EXP 000003b5: SUB 000003b6: SWAP1 000003b7: SWAP2 000003b8: AND 000003b9: DUP2 000003ba: MSTORE 000003bb: PUSH1 0x20 000003bd: ADD 000003be: PUSH1 0x40 000003c0: MLOAD 000003c1: DUP1 000003c2: SWAP2 000003c3: SUB 000003c4: SWAP1 000003c5: RETURN 000003c6: JUMPDEST 000003c7: CALLVALUE 000003c8: ISZERO 000003c9: PUSH2 0x03d1 000003cc: JUMPI 000003cd: PUSH1 0x00 000003cf: DUP1 000003d0: REVERT 000003d1: JUMPDEST 000003d2: PUSH2 0x015b 000003d5: PUSH2 0x115c 000003d8: JUMP 000003d9: JUMPDEST 000003da: PUSH1 0x40 000003dc: MLOAD 000003dd: SWAP1 000003de: DUP2 000003df: MSTORE 000003e0: PUSH1 0x20 000003e2: ADD 000003e3: PUSH1 0x40 000003e5: MLOAD 000003e6: DUP1 000003e7: SWAP2 000003e8: SUB 000003e9: SWAP1 000003ea: RETURN 000003eb: JUMPDEST 000003ec: CALLVALUE 000003ed: ISZERO 000003ee: PUSH2 0x03f6 000003f1: JUMPI 000003f2: PUSH1 0x00 000003f4: DUP1 000003f5: REVERT 000003f6: JUMPDEST 000003f7: PUSH2 0x015b 000003fa: PUSH2 0x1162 000003fd: JUMP 000003fe: JUMPDEST 000003ff: PUSH1 0x40 00000401: MLOAD 00000402: SWAP1 00000403: DUP2 00000404: MSTORE 00000405: PUSH1 0x20 00000407: ADD 00000408: PUSH1 0x40 0000040a: MLOAD 0000040b: DUP1 0000040c: SWAP2 0000040d: SUB 0000040e: SWAP1 0000040f: RETURN 00000410: JUMPDEST 00000411: CALLVALUE 00000412: ISZERO 00000413: PUSH2 0x041b 00000416: JUMPI 00000417: PUSH1 0x00 00000419: DUP1 0000041a: REVERT 0000041b: JUMPDEST 0000041c: PUSH2 0x01a5 0000041f: PUSH2 0x1168 00000422: JUMP 00000423: JUMPDEST 00000424: PUSH1 0x40 00000426: MLOAD 00000427: PUSH1 0x01 00000429: PUSH1 0xa0 0000042b: PUSH1 0x02 0000042d: EXP 0000042e: SUB 0000042f: SWAP1 00000430: SWAP2 00000431: AND 00000432: DUP2 00000433: MSTORE 00000434: PUSH1 0x20 00000436: ADD 00000437: PUSH1 0x40 00000439: MLOAD 0000043a: DUP1 0000043b: SWAP2 0000043c: SUB 0000043d: SWAP1 0000043e: RETURN 0000043f: JUMPDEST 00000440: CALLVALUE 00000441: ISZERO 00000442: PUSH2 0x044a 00000445: JUMPI 00000446: PUSH1 0x00 00000448: DUP1 00000449: REVERT 0000044a: JUMPDEST 0000044b: PUSH2 0x015b 0000044e: PUSH2 0x1177 00000451: JUMP 00000452: JUMPDEST 00000453: PUSH1 0x40 00000455: MLOAD 00000456: SWAP1 00000457: DUP2 00000458: MSTORE 00000459: PUSH1 0x20 0000045b: ADD 0000045c: PUSH1 0x40 0000045e: MLOAD 0000045f: DUP1 00000460: SWAP2 00000461: SUB 00000462: SWAP1 00000463: RETURN 00000464: JUMPDEST 00000465: PUSH2 0x01e9 00000468: PUSH2 0x117d 0000046b: JUMP 0000046c: JUMPDEST 0000046d: STOP 0000046e: JUMPDEST 0000046f: CALLVALUE 00000470: ISZERO 00000471: PUSH2 0x0479 00000474: JUMPI 00000475: PUSH1 0x00 00000477: DUP1 00000478: REVERT 00000479: JUMPDEST 0000047a: PUSH2 0x015b 0000047d: PUSH2 0x1230 00000480: JUMP 00000481: JUMPDEST 00000482: PUSH1 0x40 00000484: MLOAD 00000485: SWAP1 00000486: DUP2 00000487: MSTORE 00000488: PUSH1 0x20 0000048a: ADD 0000048b: PUSH1 0x40 0000048d: MLOAD 0000048e: DUP1 0000048f: SWAP2 00000490: SUB 00000491: SWAP1 00000492: RETURN 00000493: JUMPDEST 00000494: CALLVALUE 00000495: ISZERO 00000496: PUSH2 0x049e 00000499: JUMPI 0000049a: PUSH1 0x00 0000049c: DUP1 0000049d: REVERT 0000049e: JUMPDEST 0000049f: PUSH2 0x01e9 000004a2: PUSH1 0x04 000004a4: CALLDATALOAD 000004a5: PUSH2 0x1236 000004a8: JUMP 000004a9: JUMPDEST 000004aa: STOP 000004ab: JUMPDEST 000004ac: CALLVALUE 000004ad: ISZERO 000004ae: PUSH2 0x04b6 000004b1: JUMPI 000004b2: PUSH1 0x00 000004b4: DUP1 000004b5: REVERT 000004b6: JUMPDEST 000004b7: PUSH2 0x015b 000004ba: PUSH2 0x12e1 000004bd: JUMP 000004be: JUMPDEST 000004bf: PUSH1 0x40 000004c1: MLOAD 000004c2: SWAP1 000004c3: DUP2 000004c4: MSTORE 000004c5: PUSH1 0x20 000004c7: ADD 000004c8: PUSH1 0x40 000004ca: MLOAD 000004cb: DUP1 000004cc: SWAP2 000004cd: SUB 000004ce: SWAP1 000004cf: RETURN 000004d0: JUMPDEST 000004d1: CALLVALUE 000004d2: ISZERO 000004d3: PUSH2 0x04db 000004d6: JUMPI 000004d7: PUSH1 0x00 000004d9: DUP1 000004da: REVERT 000004db: JUMPDEST 000004dc: PUSH2 0x04e3 000004df: PUSH2 0x12e7 000004e2: JUMP 000004e3: JUMPDEST 000004e4: PUSH1 0x40 000004e6: MLOAD 000004e7: DUP1 000004e8: DUP3 000004e9: PUSH1 0x03 000004eb: DUP2 000004ec: GT 000004ed: ISZERO 000004ee: PUSH2 0x04f3 000004f1: JUMPI 000004f2: INVALID 000004f3: JUMPDEST 000004f4: PUSH1 0xff 000004f6: AND 000004f7: DUP2 000004f8: MSTORE 000004f9: PUSH1 0x20 000004fb: ADD 000004fc: SWAP2 000004fd: POP 000004fe: POP 000004ff: PUSH1 0x40 00000501: MLOAD 00000502: DUP1 00000503: SWAP2 00000504: SUB 00000505: SWAP1 00000506: RETURN 00000507: JUMPDEST 00000508: CALLVALUE 00000509: ISZERO 0000050a: PUSH2 0x0512 0000050d: JUMPI 0000050e: PUSH1 0x00 00000510: DUP1 00000511: REVERT 00000512: JUMPDEST 00000513: PUSH2 0x01a5 00000516: PUSH2 0x12f7 00000519: JUMP 0000051a: JUMPDEST 0000051b: PUSH1 0x40 0000051d: MLOAD 0000051e: PUSH1 0x01 00000520: PUSH1 0xa0 00000522: PUSH1 0x02 00000524: EXP 00000525: SUB 00000526: SWAP1 00000527: SWAP2 00000528: AND 00000529: DUP2 0000052a: MSTORE 0000052b: PUSH1 0x20 0000052d: ADD 0000052e: PUSH1 0x40 00000530: MLOAD 00000531: DUP1 00000532: SWAP2 00000533: SUB 00000534: SWAP1 00000535: RETURN 00000536: JUMPDEST 00000537: PUSH1 0x05 00000539: SLOAD 0000053a: DUP2 0000053b: JUMP 0000053c: JUMPDEST 0000053d: PUSH1 0x0b 0000053f: SLOAD 00000540: DUP2 00000541: JUMP 00000542: JUMPDEST 00000543: PUSH1 0x01 00000545: SLOAD 00000546: PUSH1 0x01 00000548: PUSH1 0xa0 0000054a: PUSH1 0x02 0000054c: EXP 0000054d: SUB 0000054e: AND 0000054f: DUP2 00000550: JUMP 00000551: JUMPDEST 00000552: PUSH1 0x00 00000554: DUP1 00000555: PUSH1 0x00 00000557: DUP1 00000558: PUSH1 0x00 0000055a: DUP1 0000055b: PUSH1 0x0e 0000055d: SLOAD 0000055e: PUSH1 0x00 00000560: LT 00000561: ISZERO 00000562: ISZERO 00000563: PUSH2 0x0568 00000566: JUMPI 00000567: INVALID 00000568: JUMPDEST 00000569: PUSH1 0x01 0000056b: JUMPDEST 0000056c: PUSH1 0x0f 0000056e: SLOAD 0000056f: PUSH1 0xa0 00000571: PUSH1 0x02 00000573: EXP 00000574: SWAP1 00000575: DIV 00000576: PUSH1 0xff 00000578: AND 00000579: PUSH1 0x03 0000057b: DUP2 0000057c: GT 0000057d: ISZERO 0000057e: PUSH2 0x0583 00000581: JUMPI 00000582: INVALID 00000583: JUMPDEST 00000584: EQ 00000585: PUSH2 0x058a 00000588: JUMPI 00000589: INVALID 0000058a: JUMPDEST 0000058b: PUSH1 0x04 0000058d: SLOAD 0000058e: NUMBER 0000058f: SWAP1 00000590: GT 00000591: ISZERO 00000592: PUSH2 0x0597 00000595: JUMPI 00000596: INVALID 00000597: JUMPDEST 00000598: PUSH1 0x05 0000059a: SLOAD 0000059b: NUMBER 0000059c: LT 0000059d: PUSH2 0x05a2 000005a0: JUMPI 000005a1: INVALID 000005a2: JUMPDEST 000005a3: PUSH1 0x00 000005a5: SLOAD 000005a6: CALLER 000005a7: PUSH1 0x01 000005a9: PUSH1 0xa0 000005ab: PUSH1 0x02 000005ad: EXP 000005ae: SUB 000005af: SWAP1 000005b0: DUP2 000005b1: AND 000005b2: SWAP2 000005b3: AND 000005b4: EQ 000005b5: PUSH2 0x05ba 000005b8: JUMPI 000005b9: INVALID 000005ba: JUMPDEST 000005bb: PUSH1 0x0d 000005bd: SLOAD 000005be: DUP12 000005bf: SWAP1 000005c0: GT 000005c1: ISZERO 000005c2: PUSH2 0x05c7 000005c5: JUMPI 000005c6: INVALID 000005c7: JUMPDEST 000005c8: PUSH1 0x0e 000005ca: SLOAD 000005cb: DUP13 000005cc: SWAP1 000005cd: GT 000005ce: ISZERO 000005cf: PUSH2 0x05d4 000005d2: JUMPI 000005d3: INVALID 000005d4: JUMPDEST 000005d5: DUP11 000005d6: DUP13 000005d7: GT 000005d8: ISZERO 000005d9: PUSH2 0x05de 000005dc: JUMPI 000005dd: INVALID 000005de: JUMPDEST 000005df: PUSH1 0x00 000005e1: DUP11 000005e2: SWAP1 000005e3: GT 000005e4: ISZERO 000005e5: PUSH2 0x05ea 000005e8: JUMPI 000005e9: INVALID 000005ea: JUMPDEST 000005eb: PUSH1 0x0c 000005ed: SLOAD 000005ee: DUP11 000005ef: GT 000005f0: ISZERO 000005f1: PUSH2 0x05f6 000005f4: JUMPI 000005f5: INVALID 000005f6: JUMPDEST 000005f7: PUSH1 0x40 000005f9: MLOAD 000005fa: PUSH32 0x6164647265737320636f6e747261637441646472657373000000000000000000 0000061b: DUP2 0000061c: MSTORE 0000061d: PUSH32 0x75696e7432353620746f6b656e4269645072696365496e576569000000000000 0000063e: PUSH1 0x17 00000640: DUP3 00000641: ADD 00000642: MSTORE 00000643: PUSH32 0x75696e7432353620626964576569416d6f756e74000000000000000000000000 00000664: PUSH1 0x31 00000666: DUP3 00000667: ADD 00000668: MSTORE 00000669: PUSH1 0x45 0000066b: ADD 0000066c: PUSH1 0x40 0000066e: MLOAD 0000066f: DUP1 00000670: SWAP2 00000671: SUB 00000672: SWAP1 00000673: KECCAK256 00000674: ADDRESS 00000675: DUP14 00000676: DUP14 00000677: PUSH1 0x40 00000679: MLOAD 0000067a: PUSH1 0x01 0000067c: PUSH1 0xa0 0000067e: PUSH1 0x02 00000680: EXP 00000681: SUB 00000682: SWAP4 00000683: SWAP1 00000684: SWAP4 00000685: AND 00000686: PUSH13 0x01000000000000000000000000 00000694: MUL 00000695: DUP4 00000696: MSTORE 00000697: PUSH1 0x14 00000699: DUP4 0000069a: ADD 0000069b: SWAP2 0000069c: SWAP1 0000069d: SWAP2 0000069e: MSTORE 0000069f: PUSH1 0x34 000006a1: DUP3 000006a2: ADD 000006a3: MSTORE 000006a4: PUSH1 0x54 000006a6: ADD 000006a7: PUSH1 0x40 000006a9: MLOAD 000006aa: DUP1 000006ab: SWAP2 000006ac: SUB 000006ad: SWAP1 000006ae: KECCAK256 000006af: PUSH1 0x40 000006b1: MLOAD 000006b2: SWAP2 000006b3: DUP3 000006b4: MSTORE 000006b5: PUSH1 0x20 000006b7: DUP3 000006b8: ADD 000006b9: MSTORE 000006ba: PUSH1 0x40 000006bc: SWAP1 000006bd: DUP2 000006be: ADD 000006bf: SWAP1 000006c0: MLOAD 000006c1: DUP1 000006c2: SWAP2 000006c3: SUB 000006c4: SWAP1 000006c5: KECCAK256 000006c6: SWAP6 000006c7: POP 000006c8: PUSH1 0x01 000006ca: DUP7 000006cb: DUP11 000006cc: DUP11 000006cd: DUP11 000006ce: PUSH1 0x40 000006d0: MLOAD 000006d1: PUSH1 0x00 000006d3: DUP2 000006d4: MSTORE 000006d5: PUSH1 0x20 000006d7: ADD 000006d8: PUSH1 0x40 000006da: MSTORE 000006db: PUSH1 0x00 000006dd: PUSH1 0x40 000006df: MLOAD 000006e0: PUSH1 0x20 000006e2: ADD 000006e3: MSTORE 000006e4: PUSH1 0x40 000006e6: MLOAD 000006e7: SWAP4 000006e8: DUP5 000006e9: MSTORE 000006ea: PUSH1 0xff 000006ec: SWAP1 000006ed: SWAP3 000006ee: AND 000006ef: PUSH1 0x20 000006f1: DUP1 000006f2: DUP6 000006f3: ADD 000006f4: SWAP2 000006f5: SWAP1 000006f6: SWAP2 000006f7: MSTORE 000006f8: PUSH1 0x40 000006fa: DUP1 000006fb: DUP6 000006fc: ADD 000006fd: SWAP3 000006fe: SWAP1 000006ff: SWAP3 00000700: MSTORE 00000701: PUSH1 0x60 00000703: DUP5 00000704: ADD 00000705: SWAP3 00000706: SWAP1 00000707: SWAP3 00000708: MSTORE 00000709: PUSH1 0x80 0000070b: SWAP1 0000070c: SWAP3 0000070d: ADD 0000070e: SWAP2 0000070f: MLOAD 00000710: PUSH1 0x20 00000712: DUP2 00000713: SUB 00000714: SWAP1 00000715: DUP1 00000716: DUP5 00000717: SUB 00000718: SWAP1 00000719: PUSH1 0x00 0000071b: DUP7 0000071c: PUSH2 0x646e 0000071f: GAS 00000720: SUB 00000721: CALL 00000722: ISZERO 00000723: ISZERO 00000724: PUSH2 0x072c 00000727: JUMPI 00000728: PUSH1 0x00 0000072a: DUP1 0000072b: REVERT 0000072c: JUMPDEST 0000072d: POP 0000072e: POP 0000072f: PUSH1 0x20 00000731: PUSH1 0x40 00000733: MLOAD 00000734: SUB 00000735: MLOAD 00000736: SWAP5 00000737: POP 00000738: PUSH2 0x0743 0000073b: DUP12 0000073c: PUSH1 0x0e 0000073e: SLOAD 0000073f: PUSH2 0x1306 00000742: JUMP 00000743: JUMPDEST 00000744: SWAP4 00000745: POP 00000746: PUSH2 0x0759 00000749: PUSH2 0x0752 0000074c: DUP12 0000074d: DUP7 0000074e: PUSH2 0x1322 00000751: JUMP 00000752: JUMPDEST 00000753: PUSH1 0x64 00000755: PUSH2 0x1306 00000758: JUMP 00000759: JUMPDEST 0000075a: SWAP3 0000075b: POP 0000075c: PUSH2 0x0765 0000075f: DUP5 00000760: DUP5 00000761: PUSH2 0x1351 00000764: JUMP 00000765: JUMPDEST 00000766: SWAP2 00000767: POP 00000768: PUSH1 0x09 0000076a: SLOAD 0000076b: PUSH2 0x0776 0000076e: DUP4 0000076f: PUSH1 0x11 00000771: SLOAD 00000772: PUSH2 0x1351 00000775: JUMP 00000776: JUMPDEST 00000777: GT 00000778: ISZERO 00000779: PUSH2 0x077e 0000077c: JUMPI 0000077d: INVALID 0000077e: JUMPDEST 0000077f: PUSH1 0x07 00000781: SLOAD 00000782: PUSH2 0x078d 00000785: PUSH1 0x12 00000787: SLOAD 00000788: DUP14 00000789: PUSH2 0x1351 0000078c: JUMP 0000078d: JUMPDEST 0000078e: GT 0000078f: ISZERO 00000790: PUSH2 0x0795 00000793: JUMPI 00000794: INVALID 00000795: JUMPDEST 00000796: POP 00000797: PUSH1 0x01 00000799: PUSH1 0xa0 0000079b: PUSH1 0x02 0000079d: EXP 0000079e: SUB 0000079f: DUP5 000007a0: AND 000007a1: PUSH1 0x00 000007a3: SWAP1 000007a4: DUP2 000007a5: MSTORE 000007a6: PUSH1 0x10 000007a8: PUSH1 0x20 000007aa: MSTORE 000007ab: PUSH1 0x40 000007ad: SWAP1 000007ae: KECCAK256 000007af: DUP1 000007b0: SLOAD 000007b1: DUP12 000007b2: GT 000007b3: ISZERO 000007b4: PUSH2 0x07b9 000007b7: JUMPI 000007b8: INVALID 000007b9: JUMPDEST 000007ba: PUSH1 0x01 000007bc: DUP2 000007bd: ADD 000007be: SLOAD 000007bf: ISZERO 000007c0: PUSH2 0x07c5 000007c3: JUMPI 000007c4: INVALID 000007c5: JUMPDEST 000007c6: DUP2 000007c7: DUP2 000007c8: PUSH1 0x02 000007ca: ADD 000007cb: DUP2 000007cc: SWAP1 000007cd: SSTORE 000007ce: POP 000007cf: PUSH2 0x07da 000007d2: DUP5 000007d3: PUSH1 0x0e 000007d5: SLOAD 000007d6: PUSH2 0x1322 000007d9: JUMP 000007da: JUMPDEST 000007db: PUSH1 0x01 000007dd: DUP3 000007de: ADD 000007df: SSTORE 000007e0: PUSH1 0x02 000007e2: DUP2 000007e3: ADD 000007e4: SLOAD 000007e5: PUSH1 0x11 000007e7: SLOAD 000007e8: PUSH2 0x07f1 000007eb: SWAP2 000007ec: SWAP1 000007ed: PUSH2 0x1351 000007f0: JUMP 000007f1: JUMPDEST 000007f2: PUSH1 0x11 000007f4: SSTORE 000007f5: PUSH1 0x01 000007f7: DUP2 000007f8: ADD 000007f9: SLOAD 000007fa: PUSH1 0x12 000007fc: SLOAD 000007fd: PUSH2 0x0806 00000800: SWAP2 00000801: SWAP1 00000802: PUSH2 0x1351 00000805: JUMP 00000806: JUMPDEST 00000807: PUSH1 0x12 00000809: SSTORE 0000080a: PUSH1 0x02 0000080c: DUP2 0000080d: ADD 0000080e: SLOAD 0000080f: PUSH1 0x01 00000811: DUP3 00000812: ADD 00000813: SLOAD 00000814: PUSH1 0x01 00000816: PUSH1 0xa0 00000818: PUSH1 0x02 0000081a: EXP 0000081b: SUB 0000081c: DUP8 0000081d: AND 0000081e: SWAP2 0000081f: PUSH32 0x7de78459cfa5d2672864a32b5fce0a527eef6b37c849977549e87886abec1bc4 00000840: SWAP2 00000841: PUSH1 0x40 00000843: MLOAD 00000844: SWAP2 00000845: DUP3 00000846: MSTORE 00000847: PUSH1 0x20 00000849: DUP3 0000084a: ADD 0000084b: MSTORE 0000084c: PUSH1 0x40 0000084e: SWAP1 0000084f: DUP2 00000850: ADD 00000851: SWAP1 00000852: MLOAD 00000853: DUP1 00000854: SWAP2 00000855: SUB 00000856: SWAP1 00000857: LOG2 00000858: JUMPDEST 00000859: JUMPDEST 0000085a: JUMPDEST 0000085b: JUMPDEST 0000085c: POP 0000085d: POP 0000085e: POP 0000085f: POP 00000860: POP 00000861: POP 00000862: POP 00000863: POP 00000864: POP 00000865: POP 00000866: POP 00000867: POP 00000868: JUMP 00000869: JUMPDEST 0000086a: PUSH1 0x00 0000086c: NUMBER 0000086d: PUSH1 0x05 0000086f: SLOAD 00000870: GT 00000871: ISZERO 00000872: DUP1 00000873: PUSH2 0x0894 00000876: JUMPI 00000877: POP 00000878: PUSH1 0x02 0000087a: JUMPDEST 0000087b: PUSH1 0x0f 0000087d: SLOAD 0000087e: PUSH1 0xa0 00000880: PUSH1 0x02 00000882: EXP 00000883: SWAP1 00000884: DIV 00000885: PUSH1 0xff 00000887: AND 00000888: PUSH1 0x03 0000088a: DUP2 0000088b: GT 0000088c: ISZERO 0000088d: PUSH2 0x0892 00000890: JUMPI 00000891: INVALID 00000892: JUMPDEST 00000893: EQ 00000894: JUMPDEST 00000895: DUP1 00000896: PUSH2 0x08b7 00000899: JUMPI 0000089a: POP 0000089b: PUSH1 0x03 0000089d: JUMPDEST 0000089e: PUSH1 0x0f 000008a0: SLOAD 000008a1: PUSH1 0xa0 000008a3: PUSH1 0x02 000008a5: EXP 000008a6: SWAP1 000008a7: DIV 000008a8: PUSH1 0xff 000008aa: AND 000008ab: PUSH1 0x03 000008ad: DUP2 000008ae: GT 000008af: ISZERO 000008b0: PUSH2 0x08b5 000008b3: JUMPI 000008b4: INVALID 000008b5: JUMPDEST 000008b6: EQ 000008b7: JUMPDEST 000008b8: ISZERO 000008b9: ISZERO 000008ba: PUSH2 0x08bf 000008bd: JUMPI 000008be: INVALID 000008bf: JUMPDEST 000008c0: POP 000008c1: PUSH1 0x01 000008c3: PUSH1 0xa0 000008c5: PUSH1 0x02 000008c7: EXP 000008c8: SUB 000008c9: CALLER 000008ca: AND 000008cb: PUSH1 0x00 000008cd: SWAP1 000008ce: DUP2 000008cf: MSTORE 000008d0: PUSH1 0x10 000008d2: PUSH1 0x20 000008d4: MSTORE 000008d5: PUSH1 0x40 000008d7: SWAP1 000008d8: KECCAK256 000008d9: PUSH1 0x03 000008db: DUP2 000008dc: ADD 000008dd: SLOAD 000008de: PUSH1 0xff 000008e0: AND 000008e1: ISZERO 000008e2: PUSH2 0x08ea 000008e5: JUMPI 000008e6: PUSH1 0x00 000008e8: DUP1 000008e9: REVERT 000008ea: JUMPDEST 000008eb: PUSH1 0x03 000008ed: DUP2 000008ee: ADD 000008ef: DUP1 000008f0: SLOAD 000008f1: PUSH1 0xff 000008f3: NOT 000008f4: AND 000008f5: PUSH1 0x01 000008f7: OR 000008f8: SWAP1 000008f9: SSTORE 000008fa: DUP1 000008fb: SLOAD 000008fc: PUSH1 0x0d 000008fe: SLOAD 000008ff: GT 00000900: ISZERO 00000901: PUSH2 0x0909 00000904: JUMPI 00000905: PUSH1 0x00 00000907: DUP1 00000908: REVERT 00000909: JUMPDEST 0000090a: PUSH1 0x02 0000090c: JUMPDEST 0000090d: PUSH1 0x0f 0000090f: SLOAD 00000910: PUSH1 0xa0 00000912: PUSH1 0x02 00000914: EXP 00000915: SWAP1 00000916: DIV 00000917: PUSH1 0xff 00000919: AND 0000091a: PUSH1 0x03 0000091c: DUP2 0000091d: GT 0000091e: ISZERO 0000091f: PUSH2 0x0924 00000922: JUMPI 00000923: INVALID 00000924: JUMPDEST 00000925: EQ 00000926: ISZERO 00000927: PUSH2 0x0a5a 0000092a: JUMPI 0000092b: PUSH1 0x0f 0000092d: SLOAD 0000092e: PUSH1 0x02 00000930: DUP3 00000931: ADD 00000932: SLOAD 00000933: PUSH1 0x01 00000935: PUSH1 0xa0 00000937: PUSH1 0x02 00000939: EXP 0000093a: SUB 0000093b: SWAP1 0000093c: SWAP2 0000093d: AND 0000093e: SWAP1 0000093f: PUSH4 0xa9059cbb 00000944: SWAP1 00000945: CALLER 00000946: SWAP1 00000947: PUSH1 0x00 00000949: PUSH1 0x40 0000094b: MLOAD 0000094c: PUSH1 0x20 0000094e: ADD 0000094f: MSTORE 00000950: PUSH1 0x40 00000952: MLOAD 00000953: PUSH1 0xe0 00000955: PUSH1 0x02 00000957: EXP 00000958: PUSH4 0xffffffff 0000095d: DUP6 0000095e: AND 0000095f: MUL 00000960: DUP2 00000961: MSTORE 00000962: PUSH1 0x01 00000964: PUSH1 0xa0 00000966: PUSH1 0x02 00000968: EXP 00000969: SUB 0000096a: SWAP1 0000096b: SWAP3 0000096c: AND 0000096d: PUSH1 0x04 0000096f: DUP4 00000970: ADD 00000971: MSTORE 00000972: PUSH1 0x24 00000974: DUP3 00000975: ADD 00000976: MSTORE 00000977: PUSH1 0x44 00000979: ADD 0000097a: PUSH1 0x20 0000097c: PUSH1 0x40 0000097e: MLOAD 0000097f: DUP1 00000980: DUP4 00000981: SUB 00000982: DUP2 00000983: PUSH1 0x00 00000985: DUP8 00000986: DUP1 00000987: EXTCODESIZE 00000988: ISZERO 00000989: ISZERO 0000098a: PUSH2 0x0992 0000098d: JUMPI 0000098e: PUSH1 0x00 00000990: DUP1 00000991: REVERT 00000992: JUMPDEST 00000993: PUSH2 0x02c6 00000996: GAS 00000997: SUB 00000998: CALL 00000999: ISZERO 0000099a: ISZERO 0000099b: PUSH2 0x09a3 0000099e: JUMPI 0000099f: PUSH1 0x00 000009a1: DUP1 000009a2: REVERT 000009a3: JUMPDEST 000009a4: POP 000009a5: POP 000009a6: POP 000009a7: PUSH1 0x40 000009a9: MLOAD 000009aa: DUP1 000009ab: MLOAD 000009ac: SWAP1 000009ad: POP 000009ae: ISZERO 000009af: ISZERO 000009b0: PUSH2 0x09b8 000009b3: JUMPI 000009b4: PUSH1 0x00 000009b6: DUP1 000009b7: REVERT 000009b8: JUMPDEST 000009b9: CALLER 000009ba: PUSH1 0x01 000009bc: PUSH1 0xa0 000009be: PUSH1 0x02 000009c0: EXP 000009c1: SUB 000009c2: AND 000009c3: PUSH2 0x08fc 000009c6: PUSH2 0x09d7 000009c9: DUP4 000009ca: PUSH1 0x00 000009cc: ADD 000009cd: SLOAD 000009ce: DUP5 000009cf: PUSH1 0x01 000009d1: ADD 000009d2: SLOAD 000009d3: PUSH2 0x136b 000009d6: JUMP 000009d7: JUMPDEST 000009d8: SWAP1 000009d9: DUP2 000009da: ISZERO 000009db: MUL 000009dc: SWAP1 000009dd: PUSH1 0x40 000009df: MLOAD 000009e0: PUSH1 0x00 000009e2: PUSH1 0x40 000009e4: MLOAD 000009e5: DUP1 000009e6: DUP4 000009e7: SUB 000009e8: DUP2 000009e9: DUP6 000009ea: DUP9 000009eb: DUP9 000009ec: CALL 000009ed: SWAP4 000009ee: POP 000009ef: POP 000009f0: POP 000009f1: POP 000009f2: ISZERO 000009f3: ISZERO 000009f4: PUSH2 0x09fc 000009f7: JUMPI 000009f8: PUSH1 0x00 000009fa: DUP1 000009fb: REVERT 000009fc: JUMPDEST 000009fd: CALLER 000009fe: PUSH1 0x01 00000a00: PUSH1 0xa0 00000a02: PUSH1 0x02 00000a04: EXP 00000a05: SUB 00000a06: AND 00000a07: PUSH32 0x5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab 00000a28: DUP3 00000a29: PUSH1 0x02 00000a2b: ADD 00000a2c: SLOAD 00000a2d: PUSH2 0x0a3e 00000a30: DUP5 00000a31: PUSH1 0x00 00000a33: ADD 00000a34: SLOAD 00000a35: DUP6 00000a36: PUSH1 0x01 00000a38: ADD 00000a39: SLOAD 00000a3a: PUSH2 0x136b 00000a3d: JUMP 00000a3e: JUMPDEST 00000a3f: PUSH1 0x40 00000a41: MLOAD 00000a42: SWAP2 00000a43: DUP3 00000a44: MSTORE 00000a45: PUSH1 0x20 00000a47: DUP3 00000a48: ADD 00000a49: MSTORE 00000a4a: PUSH1 0x40 00000a4c: SWAP1 00000a4d: DUP2 00000a4e: ADD 00000a4f: SWAP1 00000a50: MLOAD 00000a51: DUP1 00000a52: SWAP2 00000a53: SUB 00000a54: SWAP1 00000a55: LOG2 00000a56: PUSH2 0x0ad8 00000a59: JUMP 00000a5a: JUMPDEST 00000a5b: DUP1 00000a5c: SLOAD 00000a5d: PUSH1 0x01 00000a5f: PUSH1 0xa0 00000a61: PUSH1 0x02 00000a63: EXP 00000a64: SUB 00000a65: CALLER 00000a66: AND 00000a67: SWAP1 00000a68: DUP1 00000a69: ISZERO 00000a6a: PUSH2 0x08fc 00000a6d: MUL 00000a6e: SWAP1 00000a6f: PUSH1 0x40 00000a71: MLOAD 00000a72: PUSH1 0x00 00000a74: PUSH1 0x40 00000a76: MLOAD 00000a77: DUP1 00000a78: DUP4 00000a79: SUB 00000a7a: DUP2 00000a7b: DUP6 00000a7c: DUP9 00000a7d: DUP9 00000a7e: CALL 00000a7f: SWAP4 00000a80: POP 00000a81: POP 00000a82: POP 00000a83: POP 00000a84: ISZERO 00000a85: ISZERO 00000a86: PUSH2 0x0a8e 00000a89: JUMPI 00000a8a: PUSH1 0x00 00000a8c: DUP1 00000a8d: REVERT 00000a8e: JUMPDEST 00000a8f: CALLER 00000a90: PUSH1 0x01 00000a92: PUSH1 0xa0 00000a94: PUSH1 0x02 00000a96: EXP 00000a97: SUB 00000a98: AND 00000a99: PUSH32 0x5bb95829671915ece371da722f91d5371159095dcabf2f75cd6c53facb7e1bab 00000aba: PUSH1 0x00 00000abc: DUP4 00000abd: PUSH1 0x00 00000abf: ADD 00000ac0: SLOAD 00000ac1: PUSH1 0x40 00000ac3: MLOAD 00000ac4: SWAP2 00000ac5: DUP3 00000ac6: MSTORE 00000ac7: PUSH1 0x20 00000ac9: DUP3 00000aca: ADD 00000acb: MSTORE 00000acc: PUSH1 0x40 00000ace: SWAP1 00000acf: DUP2 00000ad0: ADD 00000ad1: SWAP1 00000ad2: MLOAD 00000ad3: DUP1 00000ad4: SWAP2 00000ad5: SUB 00000ad6: SWAP1 00000ad7: LOG2 00000ad8: JUMPDEST 00000ad9: JUMPDEST 00000ada: JUMPDEST 00000adb: POP 00000adc: JUMP 00000add: JUMPDEST 00000ade: PUSH1 0x0e 00000ae0: SLOAD 00000ae1: DUP2 00000ae2: JUMP 00000ae3: JUMPDEST 00000ae4: PUSH1 0x08 00000ae6: SLOAD 00000ae7: DUP2 00000ae8: JUMP 00000ae9: JUMPDEST 00000aea: PUSH1 0x12 00000aec: SLOAD 00000aed: DUP2 00000aee: JUMP 00000aef: JUMPDEST 00000af0: PUSH1 0x11 00000af2: SLOAD 00000af3: DUP2 00000af4: JUMP 00000af5: JUMPDEST 00000af6: PUSH1 0x00 00000af8: JUMPDEST 00000af9: PUSH1 0x0f 00000afb: SLOAD 00000afc: PUSH1 0xa0 00000afe: PUSH1 0x02 00000b00: EXP 00000b01: SWAP1 00000b02: DIV 00000b03: PUSH1 0xff 00000b05: AND 00000b06: PUSH1 0x03 00000b08: DUP2 00000b09: GT 00000b0a: ISZERO 00000b0b: PUSH2 0x0b10 00000b0e: JUMPI 00000b0f: INVALID 00000b10: JUMPDEST 00000b11: EQ 00000b12: PUSH2 0x0b17 00000b15: JUMPI 00000b16: INVALID 00000b17: JUMPDEST 00000b18: PUSH1 0x00 00000b1a: SLOAD 00000b1b: CALLER 00000b1c: PUSH1 0x01 00000b1e: PUSH1 0xa0 00000b20: PUSH1 0x02 00000b22: EXP 00000b23: SUB 00000b24: SWAP1 00000b25: DUP2 00000b26: AND 00000b27: SWAP2 00000b28: AND 00000b29: EQ 00000b2a: PUSH2 0x0b2f 00000b2d: JUMPI 00000b2e: INVALID 00000b2f: JUMPDEST 00000b30: PUSH1 0x03 00000b32: SLOAD 00000b33: PUSH1 0x0f 00000b35: DUP1 00000b36: SLOAD 00000b37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b4c: NOT 00000b4d: AND 00000b4e: PUSH1 0x01 00000b50: PUSH1 0xa0 00000b52: PUSH1 0x02 00000b54: EXP 00000b55: SUB 00000b56: SWAP3 00000b57: DUP4 00000b58: AND 00000b59: OR 00000b5a: SWAP1 00000b5b: DUP2 00000b5c: SWAP1 00000b5d: SSTORE 00000b5e: PUSH1 0x09 00000b60: SLOAD 00000b61: SWAP2 00000b62: AND 00000b63: PUSH4 0x70a08231 00000b68: ADDRESS 00000b69: PUSH1 0x00 00000b6b: PUSH1 0x40 00000b6d: MLOAD 00000b6e: PUSH1 0x20 00000b70: ADD 00000b71: MSTORE 00000b72: PUSH1 0x40 00000b74: MLOAD 00000b75: PUSH1 0xe0 00000b77: PUSH1 0x02 00000b79: EXP 00000b7a: PUSH4 0xffffffff 00000b7f: DUP5 00000b80: AND 00000b81: MUL 00000b82: DUP2 00000b83: MSTORE 00000b84: PUSH1 0x01 00000b86: PUSH1 0xa0 00000b88: PUSH1 0x02 00000b8a: EXP 00000b8b: SUB 00000b8c: SWAP1 00000b8d: SWAP2 00000b8e: AND 00000b8f: PUSH1 0x04 00000b91: DUP3 00000b92: ADD 00000b93: MSTORE 00000b94: PUSH1 0x24 00000b96: ADD 00000b97: PUSH1 0x20 00000b99: PUSH1 0x40 00000b9b: MLOAD 00000b9c: DUP1 00000b9d: DUP4 00000b9e: SUB 00000b9f: DUP2 00000ba0: PUSH1 0x00 00000ba2: DUP8 00000ba3: DUP1 00000ba4: EXTCODESIZE 00000ba5: ISZERO 00000ba6: ISZERO 00000ba7: PUSH2 0x0baf 00000baa: JUMPI 00000bab: PUSH1 0x00 00000bad: DUP1 00000bae: REVERT 00000baf: JUMPDEST 00000bb0: PUSH2 0x02c6 00000bb3: GAS 00000bb4: SUB 00000bb5: CALL 00000bb6: ISZERO 00000bb7: ISZERO 00000bb8: PUSH2 0x0bc0 00000bbb: JUMPI 00000bbc: PUSH1 0x00 00000bbe: DUP1 00000bbf: REVERT 00000bc0: JUMPDEST 00000bc1: POP 00000bc2: POP 00000bc3: POP 00000bc4: PUSH1 0x40 00000bc6: MLOAD 00000bc7: DUP1 00000bc8: MLOAD 00000bc9: SWAP1 00000bca: POP 00000bcb: EQ 00000bcc: ISZERO 00000bcd: ISZERO 00000bce: PUSH2 0x0bd6 00000bd1: JUMPI 00000bd2: PUSH1 0x00 00000bd4: DUP1 00000bd5: REVERT 00000bd6: JUMPDEST 00000bd7: PUSH1 0x0a 00000bd9: SLOAD 00000bda: NUMBER 00000bdb: ADD 00000bdc: PUSH1 0x04 00000bde: DUP2 00000bdf: SWAP1 00000be0: SSTORE 00000be1: PUSH1 0x0b 00000be3: SLOAD 00000be4: ADD 00000be5: PUSH1 0x05 00000be7: SSTORE 00000be8: PUSH1 0x0f 00000bea: DUP1 00000beb: SLOAD 00000bec: PUSH1 0x01 00000bee: SWAP2 00000bef: SWAP1 00000bf0: PUSH21 0xff0000000000000000000000000000000000000000 00000c06: NOT 00000c07: AND 00000c08: PUSH1 0xa0 00000c0a: PUSH1 0x02 00000c0c: EXP 00000c0d: DUP4 00000c0e: JUMPDEST 00000c0f: MUL 00000c10: OR 00000c11: SWAP1 00000c12: SSTORE 00000c13: POP 00000c14: PUSH1 0x03 00000c16: SLOAD 00000c17: PUSH1 0x01 00000c19: SLOAD 00000c1a: PUSH1 0x02 00000c1c: SLOAD 00000c1d: PUSH1 0x0d 00000c1f: SLOAD 00000c20: PUSH1 0x06 00000c22: SLOAD 00000c23: PUSH1 0x07 00000c25: SLOAD 00000c26: PUSH1 0x08 00000c28: SLOAD 00000c29: PUSH1 0x09 00000c2b: SLOAD 00000c2c: PUSH1 0x0c 00000c2e: SLOAD 00000c2f: PUSH1 0x04 00000c31: SLOAD 00000c32: PUSH1 0x05 00000c34: SLOAD 00000c35: PUSH32 0x397afdf24a674cdf55f7d8aec13fd2a3ec0e060a0576e00df093197d4a4b5fa8 00000c56: SWAP11 00000c57: PUSH1 0x01 00000c59: PUSH1 0xa0 00000c5b: PUSH1 0x02 00000c5d: EXP 00000c5e: SUB 00000c5f: SWAP1 00000c60: DUP2 00000c61: AND 00000c62: SWAP11 00000c63: DUP2 00000c64: AND 00000c65: SWAP10 00000c66: AND 00000c67: SWAP8 00000c68: SWAP7 00000c69: SWAP6 00000c6a: SWAP5 00000c6b: SWAP4 00000c6c: SWAP3 00000c6d: SWAP2 00000c6e: SWAP1 00000c6f: PUSH1 0x40 00000c71: MLOAD 00000c72: PUSH1 0x01 00000c74: PUSH1 0xa0 00000c76: PUSH1 0x02 00000c78: EXP 00000c79: SUB 00000c7a: SWAP12 00000c7b: DUP13 00000c7c: AND 00000c7d: DUP2 00000c7e: MSTORE 00000c7f: SWAP10 00000c80: DUP12 00000c81: AND 00000c82: PUSH1 0x20 00000c84: DUP12 00000c85: ADD 00000c86: MSTORE 00000c87: SWAP8 00000c88: SWAP1 00000c89: SWAP10 00000c8a: AND 00000c8b: PUSH1 0x40 00000c8d: DUP1 00000c8e: DUP11 00000c8f: ADD 00000c90: SWAP2 00000c91: SWAP1 00000c92: SWAP2 00000c93: MSTORE 00000c94: PUSH1 0x60 00000c96: DUP10 00000c97: ADD 00000c98: SWAP7 00000c99: SWAP1 00000c9a: SWAP7 00000c9b: MSTORE 00000c9c: PUSH1 0x80 00000c9e: DUP9 00000c9f: ADD 00000ca0: SWAP5 00000ca1: SWAP1 00000ca2: SWAP5 00000ca3: MSTORE 00000ca4: PUSH1 0xa0 00000ca6: DUP8 00000ca7: ADD 00000ca8: SWAP3 00000ca9: SWAP1 00000caa: SWAP3 00000cab: MSTORE 00000cac: PUSH1 0xc0 00000cae: DUP7 00000caf: ADD 00000cb0: MSTORE 00000cb1: PUSH1 0xe0 00000cb3: DUP6 00000cb4: ADD 00000cb5: MSTORE 00000cb6: PUSH2 0x0100 00000cb9: DUP5 00000cba: ADD 00000cbb: MSTORE 00000cbc: PUSH2 0x0120 00000cbf: DUP4 00000cc0: ADD 00000cc1: SWAP4 00000cc2: SWAP1 00000cc3: SWAP4 00000cc4: MSTORE 00000cc5: PUSH2 0x0140 00000cc8: DUP3 00000cc9: ADD 00000cca: MSTORE 00000ccb: PUSH2 0x0160 00000cce: ADD 00000ccf: SWAP1 00000cd0: MLOAD 00000cd1: DUP1 00000cd2: SWAP2 00000cd3: SUB 00000cd4: SWAP1 00000cd5: LOG1 00000cd6: JUMPDEST 00000cd7: JUMPDEST 00000cd8: JUMPDEST 00000cd9: JUMP 00000cda: JUMPDEST 00000cdb: PUSH1 0x10 00000cdd: PUSH1 0x20 00000cdf: MSTORE 00000ce0: PUSH1 0x00 00000ce2: SWAP1 00000ce3: DUP2 00000ce4: MSTORE 00000ce5: PUSH1 0x40 00000ce7: SWAP1 00000ce8: KECCAK256 00000ce9: DUP1 00000cea: SLOAD 00000ceb: PUSH1 0x01 00000ced: DUP3 00000cee: ADD 00000cef: SLOAD 00000cf0: PUSH1 0x02 00000cf2: DUP4 00000cf3: ADD 00000cf4: SLOAD 00000cf5: PUSH1 0x03 00000cf7: SWAP1 00000cf8: SWAP4 00000cf9: ADD 00000cfa: SLOAD 00000cfb: SWAP2 00000cfc: SWAP3 00000cfd: SWAP1 00000cfe: SWAP2 00000cff: PUSH1 0xff 00000d01: AND 00000d02: DUP5 00000d03: JUMP 00000d04: JUMPDEST 00000d05: PUSH1 0x06 00000d07: SLOAD 00000d08: DUP2 00000d09: JUMP 00000d0a: JUMPDEST 00000d0b: PUSH1 0x00 00000d0d: SLOAD 00000d0e: PUSH1 0x01 00000d10: PUSH1 0xa0 00000d12: PUSH1 0x02 00000d14: EXP 00000d15: SUB 00000d16: AND 00000d17: DUP2 00000d18: JUMP 00000d19: JUMPDEST 00000d1a: PUSH1 0x00 00000d1c: SLOAD 00000d1d: CALLER 00000d1e: PUSH1 0x01 00000d20: PUSH1 0xa0 00000d22: PUSH1 0x02 00000d24: EXP 00000d25: SUB 00000d26: SWAP1 00000d27: DUP2 00000d28: AND 00000d29: SWAP2 00000d2a: AND 00000d2b: EQ 00000d2c: PUSH2 0x0d31 00000d2f: JUMPI 00000d30: INVALID 00000d31: JUMPDEST 00000d32: PUSH1 0x02 00000d34: JUMPDEST 00000d35: PUSH1 0x0f 00000d37: SLOAD 00000d38: PUSH1 0xa0 00000d3a: PUSH1 0x02 00000d3c: EXP 00000d3d: SWAP1 00000d3e: DIV 00000d3f: PUSH1 0xff 00000d41: AND 00000d42: PUSH1 0x03 00000d44: DUP2 00000d45: GT 00000d46: ISZERO 00000d47: PUSH2 0x0d4c 00000d4a: JUMPI 00000d4b: INVALID 00000d4c: JUMPDEST 00000d4d: EQ 00000d4e: ISZERO 00000d4f: PUSH2 0x0d54 00000d52: JUMPI 00000d53: INVALID 00000d54: JUMPDEST 00000d55: PUSH1 0x0f 00000d57: DUP1 00000d58: SLOAD 00000d59: PUSH1 0x03 00000d5b: SWAP2 00000d5c: SWAP1 00000d5d: PUSH21 0xff0000000000000000000000000000000000000000 00000d73: NOT 00000d74: AND 00000d75: PUSH1 0xa0 00000d77: PUSH1 0x02 00000d79: EXP 00000d7a: DUP4 00000d7b: JUMPDEST 00000d7c: MUL 00000d7d: OR 00000d7e: SWAP1 00000d7f: SSTORE 00000d80: POP 00000d81: PUSH1 0x0f 00000d83: SLOAD 00000d84: PUSH1 0x02 00000d86: SLOAD 00000d87: PUSH1 0x01 00000d89: PUSH1 0xa0 00000d8b: PUSH1 0x02 00000d8d: EXP 00000d8e: SUB 00000d8f: SWAP2 00000d90: DUP3 00000d91: AND 00000d92: SWAP2 00000d93: PUSH4 0xa9059cbb 00000d98: SWAP2 00000d99: AND 00000d9a: DUP3 00000d9b: PUSH4 0x70a08231 00000da0: ADDRESS 00000da1: PUSH1 0x00 00000da3: PUSH1 0x40 00000da5: MLOAD 00000da6: PUSH1 0x20 00000da8: ADD 00000da9: MSTORE 00000daa: PUSH1 0x40 00000dac: MLOAD 00000dad: PUSH1 0xe0 00000daf: PUSH1 0x02 00000db1: EXP 00000db2: PUSH4 0xffffffff 00000db7: DUP5 00000db8: AND 00000db9: MUL 00000dba: DUP2 00000dbb: MSTORE 00000dbc: PUSH1 0x01 00000dbe: PUSH1 0xa0 00000dc0: PUSH1 0x02 00000dc2: EXP 00000dc3: SUB 00000dc4: SWAP1 00000dc5: SWAP2 00000dc6: AND 00000dc7: PUSH1 0x04 00000dc9: DUP3 00000dca: ADD 00000dcb: MSTORE 00000dcc: PUSH1 0x24 00000dce: ADD 00000dcf: PUSH1 0x20 00000dd1: PUSH1 0x40 00000dd3: MLOAD 00000dd4: DUP1 00000dd5: DUP4 00000dd6: SUB 00000dd7: DUP2 00000dd8: PUSH1 0x00 00000dda: DUP8 00000ddb: DUP1 00000ddc: EXTCODESIZE 00000ddd: ISZERO 00000dde: ISZERO 00000ddf: PUSH2 0x0de7 00000de2: JUMPI 00000de3: PUSH1 0x00 00000de5: DUP1 00000de6: REVERT 00000de7: JUMPDEST 00000de8: PUSH2 0x02c6 00000deb: GAS 00000dec: SUB 00000ded: CALL 00000dee: ISZERO 00000def: ISZERO 00000df0: PUSH2 0x0df8 00000df3: JUMPI 00000df4: PUSH1 0x00 00000df6: DUP1 00000df7: REVERT 00000df8: JUMPDEST 00000df9: POP 00000dfa: POP 00000dfb: POP 00000dfc: PUSH1 0x40 00000dfe: MLOAD 00000dff: DUP1 00000e00: MLOAD 00000e01: SWAP1 00000e02: POP 00000e03: PUSH1 0x00 00000e05: PUSH1 0x40 00000e07: MLOAD 00000e08: PUSH1 0x20 00000e0a: ADD 00000e0b: MSTORE 00000e0c: PUSH1 0x40 00000e0e: MLOAD 00000e0f: PUSH1 0xe0 00000e11: PUSH1 0x02 00000e13: EXP 00000e14: PUSH4 0xffffffff 00000e19: DUP6 00000e1a: AND 00000e1b: MUL 00000e1c: DUP2 00000e1d: MSTORE 00000e1e: PUSH1 0x01 00000e20: PUSH1 0xa0 00000e22: PUSH1 0x02 00000e24: EXP 00000e25: SUB 00000e26: SWAP1 00000e27: SWAP3 00000e28: AND 00000e29: PUSH1 0x04 00000e2b: DUP4 00000e2c: ADD 00000e2d: MSTORE 00000e2e: PUSH1 0x24 00000e30: DUP3 00000e31: ADD 00000e32: MSTORE 00000e33: PUSH1 0x44 00000e35: ADD 00000e36: PUSH1 0x20 00000e38: PUSH1 0x40 00000e3a: MLOAD 00000e3b: DUP1 00000e3c: DUP4 00000e3d: SUB 00000e3e: DUP2 00000e3f: PUSH1 0x00 00000e41: DUP8 00000e42: DUP1 00000e43: EXTCODESIZE 00000e44: ISZERO 00000e45: ISZERO 00000e46: PUSH2 0x0e4e 00000e49: JUMPI 00000e4a: PUSH1 0x00 00000e4c: DUP1 00000e4d: REVERT 00000e4e: JUMPDEST 00000e4f: PUSH2 0x02c6 00000e52: GAS 00000e53: SUB 00000e54: CALL 00000e55: ISZERO 00000e56: ISZERO 00000e57: PUSH2 0x0e5f 00000e5a: JUMPI 00000e5b: PUSH1 0x00 00000e5d: DUP1 00000e5e: REVERT 00000e5f: JUMPDEST 00000e60: POP 00000e61: POP 00000e62: POP 00000e63: PUSH1 0x40 00000e65: MLOAD 00000e66: DUP1 00000e67: MLOAD 00000e68: SWAP1 00000e69: POP 00000e6a: POP 00000e6b: PUSH32 0x34d7cde8731cf1128160af3900870deac2c35a66ce3a110da29889b545105830 00000e8c: PUSH1 0x40 00000e8e: MLOAD 00000e8f: PUSH1 0x40 00000e91: MLOAD 00000e92: DUP1 00000e93: SWAP2 00000e94: SUB 00000e95: SWAP1 00000e96: LOG1 00000e97: JUMPDEST 00000e98: JUMPDEST 00000e99: JUMP 00000e9a: JUMPDEST 00000e9b: PUSH1 0x09 00000e9d: SLOAD 00000e9e: DUP2 00000e9f: JUMP 00000ea0: JUMPDEST 00000ea1: PUSH1 0x0e 00000ea3: SLOAD 00000ea4: PUSH1 0x00 00000ea6: LT 00000ea7: PUSH2 0x0eac 00000eaa: JUMPI 00000eab: INVALID 00000eac: JUMPDEST 00000ead: PUSH1 0x01 00000eaf: JUMPDEST 00000eb0: PUSH1 0x0f 00000eb2: SLOAD 00000eb3: PUSH1 0xa0 00000eb5: PUSH1 0x02 00000eb7: EXP 00000eb8: SWAP1 00000eb9: DIV 00000eba: PUSH1 0xff 00000ebc: AND 00000ebd: PUSH1 0x03 00000ebf: DUP2 00000ec0: GT 00000ec1: ISZERO 00000ec2: PUSH2 0x0ec7 00000ec5: JUMPI 00000ec6: INVALID 00000ec7: JUMPDEST 00000ec8: EQ 00000ec9: PUSH2 0x0ece 00000ecc: JUMPI 00000ecd: INVALID 00000ece: JUMPDEST 00000ecf: PUSH1 0x04 00000ed1: SLOAD 00000ed2: NUMBER 00000ed3: SWAP1 00000ed4: GT 00000ed5: ISZERO 00000ed6: PUSH2 0x0edb 00000ed9: JUMPI 00000eda: INVALID 00000edb: JUMPDEST 00000edc: PUSH1 0x05 00000ede: SLOAD 00000edf: NUMBER 00000ee0: LT 00000ee1: PUSH2 0x0ee6 00000ee4: JUMPI 00000ee5: INVALID 00000ee6: JUMPDEST 00000ee7: PUSH1 0x00 00000ee9: SLOAD 00000eea: CALLER 00000eeb: PUSH1 0x01 00000eed: PUSH1 0xa0 00000eef: PUSH1 0x02 00000ef1: EXP 00000ef2: SUB 00000ef3: SWAP1 00000ef4: DUP2 00000ef5: AND 00000ef6: SWAP2 00000ef7: AND 00000ef8: EQ 00000ef9: PUSH2 0x0efe 00000efc: JUMPI 00000efd: INVALID 00000efe: JUMPDEST 00000eff: PUSH1 0x0f 00000f01: SLOAD 00000f02: PUSH1 0x01 00000f04: PUSH1 0xa0 00000f06: PUSH1 0x02 00000f08: EXP 00000f09: SUB 00000f0a: AND 00000f0b: PUSH4 0x70a08231 00000f10: ADDRESS 00000f11: PUSH1 0x00 00000f13: PUSH1 0x40 00000f15: MLOAD 00000f16: PUSH1 0x20 00000f18: ADD 00000f19: MSTORE 00000f1a: PUSH1 0x40 00000f1c: MLOAD 00000f1d: PUSH1 0xe0 00000f1f: PUSH1 0x02 00000f21: EXP 00000f22: PUSH4 0xffffffff 00000f27: DUP5 00000f28: AND 00000f29: MUL 00000f2a: DUP2 00000f2b: MSTORE 00000f2c: PUSH1 0x01 00000f2e: PUSH1 0xa0 00000f30: PUSH1 0x02 00000f32: EXP 00000f33: SUB 00000f34: SWAP1 00000f35: SWAP2 00000f36: AND 00000f37: PUSH1 0x04 00000f39: DUP3 00000f3a: ADD 00000f3b: MSTORE 00000f3c: PUSH1 0x24 00000f3e: ADD 00000f3f: PUSH1 0x20 00000f41: PUSH1 0x40 00000f43: MLOAD 00000f44: DUP1 00000f45: DUP4 00000f46: SUB 00000f47: DUP2 00000f48: PUSH1 0x00 00000f4a: DUP8 00000f4b: DUP1 00000f4c: EXTCODESIZE 00000f4d: ISZERO 00000f4e: ISZERO 00000f4f: PUSH2 0x0f57 00000f52: JUMPI 00000f53: PUSH1 0x00 00000f55: DUP1 00000f56: REVERT 00000f57: JUMPDEST 00000f58: PUSH2 0x02c6 00000f5b: GAS 00000f5c: SUB 00000f5d: CALL 00000f5e: ISZERO 00000f5f: ISZERO 00000f60: PUSH2 0x0f68 00000f63: JUMPI 00000f64: PUSH1 0x00 00000f66: DUP1 00000f67: REVERT 00000f68: JUMPDEST 00000f69: POP 00000f6a: POP 00000f6b: POP 00000f6c: PUSH1 0x40 00000f6e: MLOAD 00000f6f: DUP1 00000f70: MLOAD 00000f71: PUSH1 0x11 00000f73: SLOAD 00000f74: GT 00000f75: ISZERO 00000f76: SWAP1 00000f77: POP 00000f78: PUSH2 0x0f7d 00000f7b: JUMPI 00000f7c: INVALID 00000f7d: JUMPDEST 00000f7e: PUSH1 0x11 00000f80: SLOAD 00000f81: PUSH1 0x08 00000f83: SLOAD 00000f84: GT 00000f85: ISZERO 00000f86: PUSH2 0x0f8b 00000f89: JUMPI 00000f8a: INVALID 00000f8b: JUMPDEST 00000f8c: PUSH1 0x12 00000f8e: SLOAD 00000f8f: PUSH1 0x06 00000f91: SLOAD 00000f92: GT 00000f93: ISZERO 00000f94: PUSH2 0x0f99 00000f97: JUMPI 00000f98: INVALID 00000f99: JUMPDEST 00000f9a: PUSH1 0x0f 00000f9c: DUP1 00000f9d: SLOAD 00000f9e: PUSH1 0x02 00000fa0: SWAP2 00000fa1: SWAP1 00000fa2: PUSH21 0xff0000000000000000000000000000000000000000 00000fb8: NOT 00000fb9: AND 00000fba: PUSH1 0xa0 00000fbc: PUSH1 0x02 00000fbe: EXP 00000fbf: DUP4 00000fc0: JUMPDEST 00000fc1: MUL 00000fc2: OR 00000fc3: SWAP1 00000fc4: SSTORE 00000fc5: POP 00000fc6: PUSH1 0x0f 00000fc8: SLOAD 00000fc9: PUSH1 0x02 00000fcb: SLOAD 00000fcc: PUSH1 0x01 00000fce: PUSH1 0xa0 00000fd0: PUSH1 0x02 00000fd2: EXP 00000fd3: SUB 00000fd4: SWAP2 00000fd5: DUP3 00000fd6: AND 00000fd7: SWAP2 00000fd8: PUSH4 0xa9059cbb 00000fdd: SWAP2 00000fde: AND 00000fdf: PUSH2 0x1052 00000fe2: DUP4 00000fe3: PUSH4 0x70a08231 00000fe8: ADDRESS 00000fe9: PUSH1 0x00 00000feb: PUSH1 0x40 00000fed: MLOAD 00000fee: PUSH1 0x20 00000ff0: ADD 00000ff1: MSTORE 00000ff2: PUSH1 0x40 00000ff4: MLOAD 00000ff5: PUSH1 0xe0 00000ff7: PUSH1 0x02 00000ff9: EXP 00000ffa: PUSH4 0xffffffff 00000fff: DUP5 00001000: AND 00001001: MUL 00001002: DUP2 00001003: MSTORE 00001004: PUSH1 0x01 00001006: PUSH1 0xa0 00001008: PUSH1 0x02 0000100a: EXP 0000100b: SUB 0000100c: SWAP1 0000100d: SWAP2 0000100e: AND 0000100f: PUSH1 0x04 00001011: DUP3 00001012: ADD 00001013: MSTORE 00001014: PUSH1 0x24 00001016: ADD 00001017: PUSH1 0x20 00001019: PUSH1 0x40 0000101b: MLOAD 0000101c: DUP1 0000101d: DUP4 0000101e: SUB 0000101f: DUP2 00001020: PUSH1 0x00 00001022: DUP8 00001023: DUP1 00001024: EXTCODESIZE 00001025: ISZERO 00001026: ISZERO 00001027: PUSH2 0x102f 0000102a: JUMPI 0000102b: PUSH1 0x00 0000102d: DUP1 0000102e: REVERT 0000102f: JUMPDEST 00001030: PUSH2 0x02c6 00001033: GAS 00001034: SUB 00001035: CALL 00001036: ISZERO 00001037: ISZERO 00001038: PUSH2 0x1040 0000103b: JUMPI 0000103c: PUSH1 0x00 0000103e: DUP1 0000103f: REVERT 00001040: JUMPDEST 00001041: POP 00001042: POP 00001043: POP 00001044: PUSH1 0x40 00001046: MLOAD 00001047: DUP1 00001048: MLOAD 00001049: SWAP1 0000104a: POP 0000104b: PUSH1 0x11 0000104d: SLOAD 0000104e: PUSH2 0x136b 00001051: JUMP 00001052: JUMPDEST 00001053: PUSH1 0x00 00001055: PUSH1 0x40 00001057: MLOAD 00001058: PUSH1 0x20 0000105a: ADD 0000105b: MSTORE 0000105c: PUSH1 0x40 0000105e: MLOAD 0000105f: PUSH1 0xe0 00001061: PUSH1 0x02 00001063: EXP 00001064: PUSH4 0xffffffff 00001069: DUP6 0000106a: AND 0000106b: MUL 0000106c: DUP2 0000106d: MSTORE 0000106e: PUSH1 0x01 00001070: PUSH1 0xa0 00001072: PUSH1 0x02 00001074: EXP 00001075: SUB 00001076: SWAP1 00001077: SWAP3 00001078: AND 00001079: PUSH1 0x04 0000107b: DUP4 0000107c: ADD 0000107d: MSTORE 0000107e: PUSH1 0x24 00001080: DUP3 00001081: ADD 00001082: MSTORE 00001083: PUSH1 0x44 00001085: ADD 00001086: PUSH1 0x20 00001088: PUSH1 0x40 0000108a: MLOAD 0000108b: DUP1 0000108c: DUP4 0000108d: SUB 0000108e: DUP2 0000108f: PUSH1 0x00 00001091: DUP8 00001092: DUP1 00001093: EXTCODESIZE 00001094: ISZERO 00001095: ISZERO 00001096: PUSH2 0x109e 00001099: JUMPI 0000109a: PUSH1 0x00 0000109c: DUP1 0000109d: REVERT 0000109e: JUMPDEST 0000109f: PUSH2 0x02c6 000010a2: GAS 000010a3: SUB 000010a4: CALL 000010a5: ISZERO 000010a6: ISZERO 000010a7: PUSH2 0x10af 000010aa: JUMPI 000010ab: PUSH1 0x00 000010ad: DUP1 000010ae: REVERT 000010af: JUMPDEST 000010b0: POP 000010b1: POP 000010b2: POP 000010b3: PUSH1 0x40 000010b5: MLOAD 000010b6: DUP1 000010b7: MLOAD 000010b8: SWAP1 000010b9: POP 000010ba: ISZERO 000010bb: ISZERO 000010bc: PUSH2 0x10c1 000010bf: JUMPI 000010c0: INVALID 000010c1: JUMPDEST 000010c2: PUSH1 0x01 000010c4: SLOAD 000010c5: PUSH1 0x12 000010c7: SLOAD 000010c8: PUSH1 0x01 000010ca: PUSH1 0xa0 000010cc: PUSH1 0x02 000010ce: EXP 000010cf: SUB 000010d0: SWAP1 000010d1: SWAP2 000010d2: AND 000010d3: SWAP1 000010d4: DUP1 000010d5: ISZERO 000010d6: PUSH2 0x08fc 000010d9: MUL 000010da: SWAP1 000010db: PUSH1 0x40 000010dd: MLOAD 000010de: PUSH1 0x00 000010e0: PUSH1 0x40 000010e2: MLOAD 000010e3: DUP1 000010e4: DUP4 000010e5: SUB 000010e6: DUP2 000010e7: DUP6 000010e8: DUP9 000010e9: DUP9 000010ea: CALL 000010eb: SWAP4 000010ec: POP 000010ed: POP 000010ee: POP 000010ef: POP 000010f0: ISZERO 000010f1: ISZERO 000010f2: PUSH2 0x10fa 000010f5: JUMPI 000010f6: PUSH1 0x00 000010f8: DUP1 000010f9: REVERT 000010fa: JUMPDEST 000010fb: PUSH32 0x1545807e1b78a586e89384e8d9d248f7f7ab37282f151018c6bbe1e72bca9991 0000111c: PUSH1 0x0e 0000111e: SLOAD 0000111f: PUSH1 0x11 00001121: SLOAD 00001122: PUSH1 0x12 00001124: SLOAD 00001125: PUSH1 0x40 00001127: MLOAD 00001128: DUP1 00001129: DUP5 0000112a: DUP2 0000112b: MSTORE 0000112c: PUSH1 0x20 0000112e: ADD 0000112f: DUP4 00001130: DUP2 00001131: MSTORE 00001132: PUSH1 0x20 00001134: ADD 00001135: DUP3 00001136: DUP2 00001137: MSTORE 00001138: PUSH1 0x20 0000113a: ADD 0000113b: SWAP4 0000113c: POP 0000113d: POP 0000113e: POP 0000113f: POP 00001140: PUSH1 0x40 00001142: MLOAD 00001143: DUP1 00001144: SWAP2 00001145: SUB 00001146: SWAP1 00001147: LOG1 00001148: JUMPDEST 00001149: JUMPDEST 0000114a: JUMPDEST 0000114b: JUMPDEST 0000114c: JUMP 0000114d: JUMPDEST 0000114e: PUSH1 0x03 00001150: SLOAD 00001151: PUSH1 0x01 00001153: PUSH1 0xa0 00001155: PUSH1 0x02 00001157: EXP 00001158: SUB 00001159: AND 0000115a: DUP2 0000115b: JUMP 0000115c: JUMPDEST 0000115d: PUSH1 0x0a 0000115f: SLOAD 00001160: DUP2 00001161: JUMP 00001162: JUMPDEST 00001163: PUSH1 0x04 00001165: SLOAD 00001166: DUP2 00001167: JUMP 00001168: JUMPDEST 00001169: PUSH1 0x02 0000116b: SLOAD 0000116c: PUSH1 0x01 0000116e: PUSH1 0xa0 00001170: PUSH1 0x02 00001172: EXP 00001173: SUB 00001174: AND 00001175: DUP2 00001176: JUMP 00001177: JUMPDEST 00001178: PUSH1 0x0c 0000117a: SLOAD 0000117b: DUP2 0000117c: JUMP 0000117d: JUMPDEST 0000117e: PUSH1 0x00 00001180: PUSH1 0x04 00001182: SLOAD 00001183: NUMBER 00001184: LT 00001185: DUP1 00001186: ISZERO 00001187: PUSH2 0x11a8 0000118a: JUMPI 0000118b: POP 0000118c: PUSH1 0x01 0000118e: JUMPDEST 0000118f: PUSH1 0x0f 00001191: SLOAD 00001192: PUSH1 0xa0 00001194: PUSH1 0x02 00001196: EXP 00001197: SWAP1 00001198: DIV 00001199: PUSH1 0xff 0000119b: AND 0000119c: PUSH1 0x03 0000119e: DUP2 0000119f: GT 000011a0: ISZERO 000011a1: PUSH2 0x11a6 000011a4: JUMPI 000011a5: INVALID 000011a6: JUMPDEST 000011a7: EQ 000011a8: JUMPDEST 000011a9: ISZERO 000011aa: ISZERO 000011ab: PUSH2 0x11b0 000011ae: JUMPI 000011af: INVALID 000011b0: JUMPDEST 000011b1: PUSH1 0x0d 000011b3: SLOAD 000011b4: CALLVALUE 000011b5: SWAP1 000011b6: GT 000011b7: ISZERO 000011b8: PUSH2 0x11bd 000011bb: JUMPI 000011bc: INVALID 000011bd: JUMPDEST 000011be: POP 000011bf: PUSH1 0x01 000011c1: PUSH1 0xa0 000011c3: PUSH1 0x02 000011c5: EXP 000011c6: SUB 000011c7: CALLER 000011c8: AND 000011c9: PUSH1 0x00 000011cb: SWAP1 000011cc: DUP2 000011cd: MSTORE 000011ce: PUSH1 0x10 000011d0: PUSH1 0x20 000011d2: MSTORE 000011d3: PUSH1 0x40 000011d5: SWAP1 000011d6: KECCAK256 000011d7: DUP1 000011d8: SLOAD 000011d9: PUSH2 0x11e2 000011dc: SWAP1 000011dd: CALLVALUE 000011de: PUSH2 0x1351 000011e1: JUMP 000011e2: JUMPDEST 000011e3: DUP1 000011e4: DUP3 000011e5: SSTORE 000011e6: PUSH1 0x01 000011e8: PUSH1 0xa0 000011ea: PUSH1 0x02 000011ec: EXP 000011ed: SUB 000011ee: CALLER 000011ef: AND 000011f0: SWAP1 000011f1: PUSH32 0xad40ae5dc69974ba932d08b0a608e89109412d41d04850f5196f144875ae2660 00001212: SWAP1 00001213: CALLVALUE 00001214: SWAP1 00001215: PUSH1 0x40 00001217: MLOAD 00001218: SWAP2 00001219: DUP3 0000121a: MSTORE 0000121b: PUSH1 0x20 0000121d: DUP3 0000121e: ADD 0000121f: MSTORE 00001220: PUSH1 0x40 00001222: SWAP1 00001223: DUP2 00001224: ADD 00001225: SWAP1 00001226: MLOAD 00001227: DUP1 00001228: SWAP2 00001229: SUB 0000122a: SWAP1 0000122b: LOG2 0000122c: JUMPDEST 0000122d: JUMPDEST 0000122e: POP 0000122f: JUMP 00001230: JUMPDEST 00001231: PUSH1 0x07 00001233: SLOAD 00001234: DUP2 00001235: JUMP 00001236: JUMPDEST 00001237: PUSH1 0x01 00001239: JUMPDEST 0000123a: PUSH1 0x0f 0000123c: SLOAD 0000123d: PUSH1 0xa0 0000123f: PUSH1 0x02 00001241: EXP 00001242: SWAP1 00001243: DIV 00001244: PUSH1 0xff 00001246: AND 00001247: PUSH1 0x03 00001249: DUP2 0000124a: GT 0000124b: ISZERO 0000124c: PUSH2 0x1251 0000124f: JUMPI 00001250: INVALID 00001251: JUMPDEST 00001252: EQ 00001253: PUSH2 0x1258 00001256: JUMPI 00001257: INVALID 00001258: JUMPDEST 00001259: PUSH1 0x04 0000125b: SLOAD 0000125c: NUMBER 0000125d: SWAP1 0000125e: GT 0000125f: ISZERO 00001260: PUSH2 0x1265 00001263: JUMPI 00001264: INVALID 00001265: JUMPDEST 00001266: PUSH1 0x05 00001268: SLOAD 00001269: NUMBER 0000126a: LT 0000126b: PUSH2 0x1270 0000126e: JUMPI 0000126f: INVALID 00001270: JUMPDEST 00001271: PUSH1 0x00 00001273: SLOAD 00001274: CALLER 00001275: PUSH1 0x01 00001277: PUSH1 0xa0 00001279: PUSH1 0x02 0000127b: EXP 0000127c: SUB 0000127d: SWAP1 0000127e: DUP2 0000127f: AND 00001280: SWAP2 00001281: AND 00001282: EQ 00001283: PUSH2 0x1288 00001286: JUMPI 00001287: INVALID 00001288: JUMPDEST 00001289: PUSH1 0x0e 0000128b: SLOAD 0000128c: ISZERO 0000128d: PUSH2 0x1295 00001290: JUMPI 00001291: PUSH1 0x00 00001293: DUP1 00001294: REVERT 00001295: JUMPDEST 00001296: PUSH1 0x00 00001298: DUP2 00001299: SWAP1 0000129a: LT 0000129b: PUSH2 0x12a3 0000129e: JUMPI 0000129f: PUSH1 0x00 000012a1: DUP1 000012a2: REVERT 000012a3: JUMPDEST 000012a4: PUSH1 0x0e 000012a6: DUP2 000012a7: SWAP1 000012a8: SSTORE 000012a9: PUSH32 0x4c8de4041dbb62396f4f9b3d5da00b6e16776c299f4a6da5c737b24f1182efc3 000012ca: DUP2 000012cb: PUSH1 0x40 000012cd: MLOAD 000012ce: SWAP1 000012cf: DUP2 000012d0: MSTORE 000012d1: PUSH1 0x20 000012d3: ADD 000012d4: PUSH1 0x40 000012d6: MLOAD 000012d7: DUP1 000012d8: SWAP2 000012d9: SUB 000012da: SWAP1 000012db: LOG1 000012dc: JUMPDEST 000012dd: JUMPDEST 000012de: JUMPDEST 000012df: POP 000012e0: JUMP 000012e1: JUMPDEST 000012e2: PUSH1 0x0d 000012e4: SLOAD 000012e5: DUP2 000012e6: JUMP 000012e7: JUMPDEST 000012e8: PUSH1 0x0f 000012ea: SLOAD 000012eb: PUSH1 0xa0 000012ed: PUSH1 0x02 000012ef: EXP 000012f0: SWAP1 000012f1: DIV 000012f2: PUSH1 0xff 000012f4: AND 000012f5: DUP2 000012f6: JUMP 000012f7: JUMPDEST 000012f8: PUSH1 0x0f 000012fa: SLOAD 000012fb: PUSH1 0x01 000012fd: PUSH1 0xa0 000012ff: PUSH1 0x02 00001301: EXP 00001302: SUB 00001303: AND 00001304: DUP2 00001305: JUMP 00001306: JUMPDEST 00001307: PUSH1 0x00 00001309: DUP1 0000130a: DUP3 0000130b: DUP5 0000130c: DUP2 0000130d: ISZERO 0000130e: ISZERO 0000130f: PUSH2 0x1314 00001312: JUMPI 00001313: INVALID 00001314: JUMPDEST 00001315: DIV 00001316: SWAP1 00001317: POP 00001318: DUP1 00001319: SWAP2 0000131a: POP 0000131b: JUMPDEST 0000131c: POP 0000131d: SWAP3 0000131e: SWAP2 0000131f: POP 00001320: POP 00001321: JUMP 00001322: JUMPDEST 00001323: PUSH1 0x00 00001325: DUP3 00001326: DUP3 00001327: MUL 00001328: DUP4 00001329: ISZERO 0000132a: DUP1 0000132b: PUSH2 0x133e 0000132e: JUMPI 0000132f: POP 00001330: DUP3 00001331: DUP5 00001332: DUP3 00001333: DUP2 00001334: ISZERO 00001335: ISZERO 00001336: PUSH2 0x133b 00001339: JUMPI 0000133a: INVALID 0000133b: JUMPDEST 0000133c: DIV 0000133d: EQ 0000133e: JUMPDEST 0000133f: ISZERO 00001340: ISZERO 00001341: PUSH2 0x1346 00001344: JUMPI 00001345: INVALID 00001346: JUMPDEST 00001347: DUP1 00001348: SWAP2 00001349: POP 0000134a: JUMPDEST 0000134b: POP 0000134c: SWAP3 0000134d: SWAP2 0000134e: POP 0000134f: POP 00001350: JUMP 00001351: JUMPDEST 00001352: PUSH1 0x00 00001354: DUP3 00001355: DUP3 00001356: ADD 00001357: DUP4 00001358: DUP2 00001359: LT 0000135a: ISZERO 0000135b: PUSH2 0x1346 0000135e: JUMPI 0000135f: INVALID 00001360: JUMPDEST 00001361: DUP1 00001362: SWAP2 00001363: POP 00001364: JUMPDEST 00001365: POP 00001366: SWAP3 00001367: SWAP2 00001368: POP 00001369: POP 0000136a: JUMP 0000136b: JUMPDEST 0000136c: PUSH1 0x00 0000136e: DUP3 0000136f: DUP3 00001370: GT 00001371: ISZERO 00001372: PUSH2 0x1377 00001375: JUMPI 00001376: INVALID 00001377: JUMPDEST 00001378: POP 00001379: DUP1 0000137a: DUP3 0000137b: SUB 0000137c: JUMPDEST 0000137d: SWAP3 0000137e: SWAP2 0000137f: POP 00001380: POP 00001381: JUMP 00001382: STOP 00001383: LOG1 00001384: PUSH6 0x627a7a723058 0000138b: KECCAK256 0000138c: UNKNOWN(0xB7) 0000138d: UNKNOWN(0x4B) 0000138e: XOR 0000138f: UNKNOWN(0xBD) 00001390: UNKNOWN(0x0C) 00001391: ISZERO 00001392: UNKNOWN(0xB9) 00001393: UNKNOWN(0x2E) 00001394: GASLIMIT 00001395: SGT 00001396: SDIV 00001397: UNKNOWN(0xAE) 00001398: UNKNOWN(0xEB) 00001399: UNKNOWN(0xE1) 0000139a: UNKNOWN(0xEB) 0000139b: CREATE 0000139c: RETURNDATASIZE 0000139d: UNKNOWN(0xE4) 0000139e: KECCAK256 0000139f: UNKNOWN(0xB9) 000013a0: UNKNOWN(0xA7) 000013a1: MCOPY 000013a2: UNKNOWN(0xBC) 000013a3: LOG0 000013a4: ORIGIN 000013a5: CALLCODE 000013a6: UNKNOWN(0xE2) 000013a7: DUP4 000013a8: PC 000013a9: UNKNOWN(0xCA) 000013aa: UNKNOWN(0xEF) 000013ab: RETURNDATACOPY 000013ac: STOP 000013ad: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x07d52fa8",
"selector": "0x07d52fa8",
"calldata_variants": [
"0x07d52fa8",
"0x07d52fa80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20869f85",
"selector": "0x20869f85",
"calldata_variants": [
"0x20869f85",
"0x20869f850000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x270df9b5",
"selector": "0x270df9b5",
"calldata_variants": [
"0x270df9b5",
"0x270df9b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33c50420",
"selector": "0x33c50420",
"calldata_variants": [
"0x33c50420",
"0x33c504200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4ae26eb3",
"selector": "0x4ae26eb3",
"calldata_variants": [
"0x4ae26eb3",
"0x4ae26eb30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x517125fa",
"selector": "0x517125fa",
"calldata_variants": [
"0x517125fa",
"0x517125fa0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53f4db01",
"selector": "0x53f4db01",
"calldata_variants": [
"0x53f4db01",
"0x53f4db010000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 5028,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xcfe5a01f6467cc6a98d8fc2e6d81d552db59bce41bdde159231f0d285897bf4a
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xcfe5a01f6467cc6a98d8fc2e6d81d552db59bce41bdde159231f0d285897bf4a",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x07d52fa8",
"selector": "0x07d52fa8",
"calldata_variants": [
"0x07d52fa8",
"0x07d52fa80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20869f85",
"selector": "0x20869f85",
"calldata_variants": [
"0x20869f85",
"0x20869f850000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x270df9b5",
"selector": "0x270df9b5",
"calldata_variants": [
"0x270df9b5",
"0x270df9b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33c50420",
"selector": "0x33c50420",
"calldata_variants": [
"0x33c50420",
"0x33c504200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4ae26eb3",
"selector": "0x4ae26eb3",
"calldata_variants": [
"0x4ae26eb3",
"0x4ae26eb30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x517125fa",
"selector": "0x517125fa",
"calldata_variants": [
"0x517125fa",
"0x517125fa0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53f4db01",
"selector": "0x53f4db01",
"calldata_variants": [
"0x53f4db01",
"0x53f4db010000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x9cdf6d2c9602c4a9d509e67080973c092bcf128e582ab6b0816f54567237b9ea
call_targets:
0x4d1886daf2617cbd9e27abfd0f18a54f04f33c41
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9cdf6d2c9602c4a9d509e67080973c092bcf128e582ab6b0816f54567237b9ea",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x4d1886daf2617cbd9e27abfd0f18a54f04f33c41"
],
"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": "0x07d52fa8",
"selector": "0x07d52fa8",
"calldata_variants": [
"0x07d52fa8",
"0x07d52fa80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20869f85",
"selector": "0x20869f85",
"calldata_variants": [
"0x20869f85",
"0x20869f850000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x270df9b5",
"selector": "0x270df9b5",
"calldata_variants": [
"0x270df9b5",
"0x270df9b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33c50420",
"selector": "0x33c50420",
"calldata_variants": [
"0x33c50420",
"0x33c504200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4ae26eb3",
"selector": "0x4ae26eb3",
"calldata_variants": [
"0x4ae26eb3",
"0x4ae26eb30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x517125fa",
"selector": "0x517125fa",
"calldata_variants": [
"0x517125fa",
"0x517125fa0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53f4db01",
"selector": "0x53f4db01",
"calldata_variants": [
"0x53f4db01",
"0x53f4db010000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1825,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2456,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2540,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 12,
"guards_detected": [
{
"pc": 5028,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 12
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x9cdf6d2c9602c4a9d509e67080973c092bcf128e582ab6b0816f54567237b9ea
call_targets:
0x4d1886daf2617cbd9e27abfd0f18a54f04f33c41
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9cdf6d2c9602c4a9d509e67080973c092bcf128e582ab6b0816f54567237b9ea",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x4d1886daf2617cbd9e27abfd0f18a54f04f33c41"
],
"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": "0x07d52fa8",
"selector": "0x07d52fa8",
"calldata_variants": [
"0x07d52fa8",
"0x07d52fa80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x20869f85",
"selector": "0x20869f85",
"calldata_variants": [
"0x20869f85",
"0x20869f850000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x270df9b5",
"selector": "0x270df9b5",
"calldata_variants": [
"0x270df9b5",
"0x270df9b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x33c50420",
"selector": "0x33c50420",
"calldata_variants": [
"0x33c50420",
"0x33c504200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4ae26eb3",
"selector": "0x4ae26eb3",
"calldata_variants": [
"0x4ae26eb3",
"0x4ae26eb30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x517125fa",
"selector": "0x517125fa",
"calldata_variants": [
"0x517125fa",
"0x517125fa0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53f4db01",
"selector": "0x53f4db01",
"calldata_variants": [
"0x53f4db01",
"0x53f4db010000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1825,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2456,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2540,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 12,
"guards_detected": [
{
"pc": 5028,
"type": "tx_origin_used"
}
]
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|
| 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": 7
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|