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

Analysis Run

9598e70f-31d0-43fa-b866-5b082eafaa88

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

What survived the funnel

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

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

Processing Jobs

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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable profit path is evident from the provided runtime bytecode alone.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
12
EXT*/BALANCE
7
Total opcodes
3342
Flags
create_opcodes_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
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)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_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
view
trace_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
view
trace_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
view
trace_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
view
evidence_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
view
evidence_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
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 12
}