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

Analysis Run

fedf28c3-4222-44d0-996a-630016ee83ec

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 1:49 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31018 report.consolidate complete 1 / 1 3 months ago
75922 artifact.fetch complete 1 / 3 2 weeks ago
75923 tool.cast_disasm complete 1 / 3 2 weeks ago
75924 analysis.bundle complete 1 / 3 2 weeks ago
75925 capability.graph complete 1 / 3 2 weeks ago
75926 detector.run complete 1 / 3 2 weeks ago
75927 validation.fork complete 1 / 3 2 weeks 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 value-extraction path identified in the provided runtime bytecode bundle. The only state-mutating/token-transfer flows appear gated by owner/operator checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT paths were found.
View stderr
[codex:1415433] OpenAI Codex v0.77.0 (research preview)
[codex:1415433] --------
[codex:1415433] workdir: /tmp/codex-multi-i36ucnhr
[codex:1415433] model: gpt-5.2-codex
[codex:1415433] provider: openai
[codex:1415433] approval: never
[codex:1415433] sandbox: read-only
[codex:1415433] reasoning effort: xhigh
[codex:1415433] reasoning summaries: auto
[codex:1415433] session id: 019b79c9-630f-7d01-ab27-84a81c814c5e
[codex:1415433] --------
[codex:1415433] user
[codex:1415433] 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:1415433] 
[codex:1415433] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1415433] 
[codex:1415433] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1415433] - Gas inefficiency, code quality, or best practices
[codex:1415433] - Theoretical vulnerabilities without a clear extraction path
[codex:1415433] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1415433] - Issues requiring social engineering or off-chain coordination
[codex:1415433] 
[codex:1415433] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1415433] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1415433] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1415433] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1415433] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1415433] - External calls before state updates (reentrancy)
[codex:1415433] - SELFDESTRUCT with controllable beneficiary
[codex:1415433] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1415433] 
[codex:1415433] For each finding, you MUST explain:
[codex:1415433] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1415433] 2. The concrete sequence of transactions to extract value
[codex:1415433] 3. Why you believe this is exploitable (not just suspicious)
[codex:1415433] 
[codex:1415433] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1415433] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1415433] 
[codex:1415433] Output MUST be valid JSON matching the provided schema.
[codex:1415433] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1415433] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1415433] mcp startup: no servers
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Preparing to analyze BYTECODE_BUNDLE.txt**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc ls in /tmp/codex-multi-i36ucnhr succeeded in 6ms:
[codex:1415433] BYTECODE_BUNDLE.txt
[codex:1415433] codex-output-schema.json
[codex:1415433] exec
[codex:1415433] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-i36ucnhr succeeded in 5ms:
[codex:1415433] Runtime bytecode bundle for best-effort auditing.
[codex:1415433] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1415433] 
[codex:1415433] FILE: runtime_bytecode.hex
[codex:1415433] 0x608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c80638da5cb5b1161006e5780638da5cb5b1461012c5780639e281a9814610146578063ab2217e414610159578063e8ea777014610179578063f2fde38b14610199578063f65041e6146101ac575f5ffd5b80630e90b3c9146100b557806324e38dca146100d35780634c8142a9146100e857806354fd4d50146100fb578063715018a6146101115780638947606914610119575b5f5ffd5b6100bd6101cd565b6040516100ca9190610d00565b60405180910390f35b6100e66100e1366004610d6f565b610235565b005b6100e66100f6366004610d6f565b6103a5565b610103600181565b6040519081526020016100ca565b6100e661045d565b6100e6610127366004610d6f565b610470565b5f546040516001600160a01b0390911681526020016100ca565b6100e6610154366004610d91565b61048f565b61016c610167366004610dbb565b6104f2565b6040516100ca9190610ded565b61018c610187366004610e68565b610830565b6040516100ca9190610f33565b6100e66101a7366004610d6f565b6108d1565b6101bf6101ba366004610e68565b61090b565b6040516100ca929190610f6a565b60606101d7610adb565b600180548060200260200160405190810160405280929190818152602001828054801561022b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161020d575b5050505050905090565b61023d610adb565b6001600160a01b0381165f9081526002602052604090205460ff1661028f5760405162461bcd60e51b815260206004820152600360248201526229a72960e91b60448201526064015b60405180910390fd5b6001600160a01b0381165f908152600260205260408120805460ff191690555b6001548110156103a157816001600160a01b0316600182815481106102d6576102d6610fed565b5f918252602090912001546001600160a01b03160361039957600180546102fe908290611015565b8154811061030e5761030e610fed565b5f91825260209091200154600180546001600160a01b03909216918390811061033957610339610fed565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061037557610375611028565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b6001016102af565b5050565b6103ad610adb565b6001600160a01b0381165f9081526002602052604090205460ff16156103fb5760405162461bcd60e51b815260206004820152600360248201526229a0a960e91b6044820152606401610286565b6001600160a01b03165f818152600260205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b610465610adb565b61046e5f610b07565b565b610478610adb565b61048c816104868330610b56565b33610bca565b50565b5f546001600160a01b03163314806104b55750335f9081526002602052604090205460ff165b6104e75760405162461bcd60e51b815260206004820152600360248201526234303360e81b6044820152606401610286565b6103a1828233610bca565b60605f846001600160a01b031663574f2ba36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610531573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610555919061103c565b90505f8184116105655783610567565b815b90508481101561059f5760405162461bcd60e51b815260206004820152600360248201526253485360e81b6044820152606401610286565b5f6105aa8683611015565b90505f8167ffffffffffffffff8111156105c6576105c6610e54565b6040519080825280602002602001820160405280156105ff57816020015b6105ec610ce2565b8152602001906001900390816105e45790505b5090505f5b82811015610824575f6001600160a01b038a16631e3dd18b610626848c611053565b6040518263ffffffff1660e01b815260040161064491815260200190565b602060405180830381865afa15801561065f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106839190611066565b90505f819050806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e99190611066565b8484815181106106fb576106fb610fed565b60200260200101515f6003811061071457610714610fed565b60200201906001600160a01b031690816001600160a01b031681525050806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107919190611066565b8484815181106107a3576107a3610fed565b60200260200101516001600381106107bd576107bd610fed565b60200201906001600160a01b031690816001600160a01b031681525050818484815181106107ed576107ed610fed565b602002602001015160026003811061080757610807610fed565b6001600160a01b0390921660209290920201525050600101610604565b50979650505050505050565b6060815167ffffffffffffffff81111561084c5761084c610e54565b604051908082528060200260200182016040528015610875578160200160208202803683370190505b5090505f5b82518110156108cb576108a683828151811061089857610898610fed565b602002602001015130610b56565b8282815181106108b8576108b8610fed565b602090810291909101015260010161087a565b50919050565b6108d9610adb565b6001600160a01b03811661090257604051631e4fbdf760e01b81525f6004820152602401610286565b61048c81610b07565b606080825167ffffffffffffffff81111561092857610928610e54565b604051908082528060200260200182016040528015610951578160200160208202803683370190505b509150825167ffffffffffffffff81111561096e5761096e610e54565b604051908082528060200260200182016040528015610997578160200160208202803683370190505b5090505f5b8351811015610ad5575f8482815181106109b8576109b8610fed565b60200260200101519050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156109fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a22919061109a565b5050865191925086918591508110610a3c57610a3c610fed565b602002602001018181525050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa891906110e8565b838381518110610aba57610aba610fed565b60ff909216602092830291909101909101525060010161099c565b50915091565b5f546001600160a01b0316331461046e5760405163118cdaa760e01b8152336004820152602401610286565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a0823190602401602060405180830381865afa158015610b9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc1919061103c565b90505b92915050565b81610bd58430610b56565b1015610c085760405162461bcd60e51b815260206004820152600260248201526124a160f11b6044820152606401610286565b610c1c6001600160a01b0384168284610c21565b505050565b604080516001600160a01b03841660248201526044808201849052825180830390910181526064909101909152602080820180516001600160e01b031663a9059cbb60e01b1781528251610c1c93879390925f9283929183919082885af180610c8f576040513d5f823e3d81fd5b50505f513d91508115610ca6578060011415610cb3565b6001600160a01b0384163b155b15610cdc57604051635274afe760e01b81526001600160a01b0385166004820152602401610286565b50505050565b60405180606001604052806003906020820280368337509192915050565b602080825282518282018190525f918401906040840190835b81811015610d405783516001600160a01b0316835260209384019390920191600101610d19565b509095945050505050565b6001600160a01b038116811461048c575f5ffd5b8035610d6a81610d4b565b919050565b5f60208284031215610d7f575f5ffd5b8135610d8a81610d4b565b9392505050565b5f5f60408385031215610da2575f5ffd5b8235610dad81610d4b565b946020939093013593505050565b5f5f5f60608486031215610dcd575f5ffd5b8335610dd881610d4b565b95602085013595506040909401359392505050565b602080825282518282018190525f918401906040840190835b81811015610d40578351835f5b6003811015610e3b5782516001600160a01b0316825260209283019290910190600101610e13565b5050506020939093019260609290920191600101610e06565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610e78575f5ffd5b813567ffffffffffffffff811115610e8e575f5ffd5b8201601f81018413610e9e575f5ffd5b803567ffffffffffffffff811115610eb857610eb8610e54565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715610ee557610ee5610e54565b604052918252602081840181019290810187841115610f02575f5ffd5b6020850194505b83851015610f2857610f1a85610d5f565b815260209485019401610f09565b509695505050505050565b602080825282518282018190525f918401906040840190835b81811015610d40578351835260209384019390920191600101610f4c565b604080825283519082018190525f9060208501906060840190835b81811015610fa3578351835260209384019390920191600101610f85565b5050838103602080860191909152855180835291810192508501905f5b81811015610fe157825160ff16845260209384019390920191600101610fc0565b50919695505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610bc457610bc4611001565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561104c575f5ffd5b5051919050565b80820180821115610bc457610bc4611001565b5f60208284031215611076575f5ffd5b8151610d8a81610d4b565b805169ffffffffffffffffffff81168114610d6a575f5ffd5b5f5f5f5f5f60a086880312156110ae575f5ffd5b6110b786611081565b602087015160408801516060890151929750909550935091506110dc60808701611081565b90509295509295909350565b5f602082840312156110f8575f5ffd5b815160ff81168114610d8a575f5ffdfea2646970667358221220bf378c141b0c6efa3ec8b5b8aea6ad419126e09636d653d7fb5fa0126d5cc87464736f6c634300081e0033
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Parsing bytecode and preparing exploit analysis**
[codex:1415433] 
[codex:1415433] I'm analyzing the bytecode to identify the contract's role and detect any exploit paths. I’m focusing on owner and whitelist checks, common function selectors, and searching for risky opcodes like delegatecall or selfdestruct. To do this thoroughly, I plan to write a quick Python script that disassembles the bytecode and scans for critical operations, aiming to confirm any exploits or return no findings if none appear.
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii,sys
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] # opcodes mapping
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] # disassemble and record calllike ops with context
[codex:1415433] ops=[]
[codex:1415433] i=0
[codex:1415433] while i<len(code):
[codex:1415433]     op=code[i]
[codex:1415433]     name=opmap.get(op,hex(op))
[codex:1415433]     if 0x60<=op<=0x7f:
[codex:1415433]         n=op-0x5f
[codex:1415433]         data=code[i+1:i+1+n]
[codex:1415433]         ops.append((i,name,data.hex()))
[codex:1415433]         i+=1+n
[codex:1415433]     else:
[codex:1415433]         ops.append((i,name,None))
[codex:1415433]         i+=1
[codex:1415433] 
[codex:1415433] # find CALL/DELEGATECALL/SELFDESTRUCT
[codex:1415433] for idx,(pc,name,data) in enumerate(ops):
[codex:1415433]     if name in ('CALL','DELEGATECALL','SELFDESTRUCT','CALLCODE'):
[codex:1415433]         # show previous 6 ops
[codex:1415433]         prev=ops[max(0,idx-8):idx]
[codex:1415433]         print('\\nPC',pc,name)
[codex:1415433]         for p in prev:
[codex:1415433]             print(' ',p)
[codex:1415433] 
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 21ms:
[codex:1415433] 
[codex:1415433] PC 3199 CALL
[codex:1415433]   (3191, 'SWAP3', None)
[codex:1415433]   (3192, 'SWAP2', None)
[codex:1415433]   (3193, 'DUP4', None)
[codex:1415433]   (3194, 'SWAP2', None)
[codex:1415433]   (3195, 'SWAP1', None)
[codex:1415433]   (3196, 'DUP3', None)
[codex:1415433]   (3197, 'DUP9', None)
[codex:1415433]   (3198, 'GAS', None)
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing CALL instructions and function selectors**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii, re
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] # find pattern PUSH4 <sel> EQ PUSH2 <dest> JUMPI (0x63 sel 0x14 0x61 dest 0x57)
[codex:1415433] # We'll scan through bytes
[codex:1415433] selectors=[]
[codex:1415433] for i in range(len(code)-9):
[codex:1415433]     if code[i]==0x63 and code[i+5]==0x14 and code[i+6]==0x61 and code[i+9]==0x57:
[codex:1415433]         sel=code[i+1:i+5].hex()
[codex:1415433]         dest=int.from_bytes(code[i+7:i+9],'big')
[codex:1415433]         selectors.append((sel,dest,i))
[codex:1415433] # unique
[codex:1415433] print('selectors',len(selectors))
[codex:1415433] for sel,dest,i in selectors:
[codex:1415433]     print(sel,hex(dest), 'at',i)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 27ms:
[codex:1415433] selectors 12
[codex:1415433] 8da5cb5b 0x12c at 42
[codex:1415433] 9e281a98 0x146 at 53
[codex:1415433] ab2217e4 0x159 at 64
[codex:1415433] e8ea7770 0x179 at 75
[codex:1415433] f2fde38b 0x199 at 86
[codex:1415433] f65041e6 0x1ac at 97
[codex:1415433] 0e90b3c9 0xb5 at 112
[codex:1415433] 24e38dca 0xd3 at 123
[codex:1415433] 4c8142a9 0xe8 at 134
[codex:1415433] 54fd4d50 0xfb at 145
[codex:1415433] 715018a6 0x111 at 156
[codex:1415433] 89476069 0x119 at 167
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Implementing function disassembler**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] # quick disasm function
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=80):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] # function selectors
[codex:1415433] selectors=[
[codex:1415433] ('8da5cb5b',0x12c),('9e281a98',0x146),('ab2217e4',0x159),('e8ea7770',0x179),('f2fde38b',0x199),('f65041e6',0x1ac),('0e90b3c9',0xb5),('24e38dca',0xd3),('4c8142a9',0xe8),('54fd4d50',0xfb),('715018a6',0x111),('89476069',0x119),]
[codex:1415433] 
[codex:1415433] for sel,dest in selectors:
[codex:1415433]     print('\\n==',sel,'dest',hex(dest))
[codex:1415433]     for pc,ins in disasm(dest,40):
[codex:1415433]         print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 20ms:
[codex:1415433] 
[codex:1415433] == 8da5cb5b dest 0x12c
[codex:1415433] 0x12c JUMPDEST
[codex:1415433] 0x12d 0x5f
[codex:1415433] 0x12e SLOAD
[codex:1415433] 0x12f PUSH1 0x40
[codex:1415433] 0x131 MLOAD
[codex:1415433] 0x132 PUSH1 0x01
[codex:1415433] 0x134 PUSH1 0x01
[codex:1415433] 0x136 PUSH1 0xa0
[codex:1415433] 0x138 SHL
[codex:1415433] 0x139 SUB
[codex:1415433] 0x13a SWAP1
[codex:1415433] 0x13b SWAP2
[codex:1415433] 0x13c AND
[codex:1415433] 0x13d DUP2
[codex:1415433] 0x13e MSTORE
[codex:1415433] 0x13f PUSH1 0x20
[codex:1415433] 0x141 ADD
[codex:1415433] 0x142 PUSH2 0x00ca
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing internal contract functions**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x235,200):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 0x235 JUMPDEST
[codex:1415433] 0x236 PUSH2 0x023d
[codex:1415433] 0x239 PUSH2 0x0adb
[codex:1415433] 0x23c JUMP
[codex:1415433] 0x23d JUMPDEST
[codex:1415433] 0x23e PUSH1 0x01
[codex:1415433] 0x240 PUSH1 0x01
[codex:1415433] 0x242 PUSH1 0xa0
[codex:1415433] 0x244 SHL
[codex:1415433] 0x245 SUB
[codex:1415433] 0x246 DUP2
[codex:1415433] 0x247 AND
[codex:1415433] 0x248 0x5f
[codex:1415433] 0x249 SWAP1
[codex:1415433] 0x24a DUP2
[codex:1415433] 0x24b MSTORE
[codex:1415433] 0x24c PUSH1 0x02
[codex:1415433] 0x24e PUSH1 0x20
[codex:1415433] 0x250 MSTORE
[codex:1415433] 0x251 PUSH1 0x40
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x339,150):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 0x339 JUMPDEST
[codex:1415433] 0x33a SWAP1
[codex:1415433] 0x33b 0x5f
[codex:1415433] 0x33c MSTORE
[codex:1415433] 0x33d PUSH1 0x20
[codex:1415433] 0x33f 0x5f
[codex:1415433] 0x340 SHA3
[codex:1415433] 0x341 ADD
[codex:1415433] 0x342 0x5f
[codex:1415433] 0x343 PUSH2 0x0100
[codex:1415433] 0x346 EXP
[codex:1415433] 0x347 DUP2
[codex:1415433] 0x348 SLOAD
[codex:1415433] 0x349 DUP2
[codex:1415433] 0x34a PUSH1 0x01
[codex:1415433] 0x34c PUSH1 0x01
[codex:1415433] 0x34e PUSH1 0xa0
[codex:1415433] 0x350 SHL
[codex:1415433] 0x351 SUB
[codex:1415433] 0x352 MUL
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x3fb,160):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 0x3fb JUMPDEST
[codex:1415433] 0x3fc PUSH1 0x01
[codex:1415433] 0x3fe PUSH1 0x01
[codex:1415433] 0x400 PUSH1 0xa0
[codex:1415433] 0x402 SHL
[codex:1415433] 0x403 SUB
[codex:1415433] 0x404 AND
[codex:1415433] 0x405 0x5f
[codex:1415433] 0x406 DUP2
[codex:1415433] 0x407 DUP2
[codex:1415433] 0x408 MSTORE
[codex:1415433] 0x409 PUSH1 0x02
[codex:1415433] 0x40b PUSH1 0x20
[codex:1415433] 0x40d MSTORE
[codex:1415433] 0x40e PUSH1 0x40
[codex:1415433] 0x410 DUP2
[codex:1415433] 0x411 SHA3
[codex:1415433] 0x412 DUP1
[codex:1415433] 0x413 SLOAD
[codex:1415433] 0x414 PUSH1 0xff
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Continuing function decoding**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=260):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x4f2,260):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 0x4f2 JUMPDEST
[codex:1415433] 0x4f3 PUSH1 0x60
[codex:1415433] 0x4f5 0x5f
[codex:1415433] 0x4f6 DUP5
[codex:1415433] 0x4f7 PUSH1 0x01
[codex:1415433] 0x4f9 PUSH1 0x01
[codex:1415433] 0x4fb PUSH1 0xa0
[codex:1415433] 0x4fd SHL
[codex:1415433] 0x4fe SUB
[codex:1415433] 0x4ff AND
[codex:1415433] 0x500 PUSH4 0x574f2ba3
[codex:1415433] 0x505 PUSH1 0x40
[codex:1415433] 0x507 MLOAD
[codex:1415433] 0x508 DUP2
[codex:1415433] 0x509 PUSH4 0xffffffff
[codex:1415433] 0x50e AND
[codex:1415433] 0x50f PUSH1 0xe0
[codex:1415433] 0x511 SHL
[codex:1415433] 0x512 DUP2
[codex:1415433] 0x513 MSTORE
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing function selectors and calls**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x830,200):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 19ms:
[codex:1415433] 0x830 JUMPDEST
[codex:1415433] 0x831 PUSH1 0x60
[codex:1415433] 0x833 DUP2
[codex:1415433] 0x834 MLOAD
[codex:1415433] 0x835 PUSH8 0xffffffffffffffff
[codex:1415433] 0x83e DUP2
[codex:1415433] 0x83f GT
[codex:1415433] 0x840 ISZERO
[codex:1415433] 0x841 PUSH2 0x084c
[codex:1415433] 0x844 JUMPI
[codex:1415433] 0x845 PUSH2 0x084c
[codex:1415433] 0x848 PUSH2 0x0e54
[codex:1415433] 0x84b JUMP
[codex:1415433] 0x84c JUMPDEST
[codex:1415433] 0x84d PUSH1 0x40
[codex:1415433] 0x84f MLOAD
[codex:1415433] 0x850 SWAP1
[codex:1415433] 0x851 DUP1
[codex:1415433] 0x852 DUP3
[codex:1415433] 0x853 MSTORE
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing internal function calls**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for label,start in [('0b07',0xb07),('0b56',0xb56),('0bca',0xbca)]:
[codex:1415433]     print('\\n--',label)
[codex:1415433]     for pc,ins in disasm(start,120):
[codex:1415433]         print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 
[codex:1415433] -- 0b07
[codex:1415433] 0xb07 JUMPDEST
[codex:1415433] 0xb08 0x5f
[codex:1415433] 0xb09 DUP1
[codex:1415433] 0xb0a SLOAD
[codex:1415433] 0xb0b PUSH1 0x01
[codex:1415433] 0xb0d PUSH1 0x01
[codex:1415433] 0xb0f PUSH1 0xa0
[codex:1415433] 0xb11 SHL
[codex:1415433] 0xb12 SUB
[codex:1415433] 0xb13 DUP4
[codex:1415433] 0xb14 DUP2
[codex:1415433] 0xb15 AND
[codex:1415433] 0xb16 PUSH1 0x01
[codex:1415433] 0xb18 PUSH1 0x01
[codex:1415433] 0xb1a PUSH1 0xa0
[codex:1415433] 0xb1c SHL
[codex:1415433] 0xb1d SUB
[codex:1415433] 0xb1e NOT
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Examining ERC20 transfer call sequence**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=200):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0xc6f,200):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 18ms:
[codex:1415433] 0xc6f SWAP4
[codex:1415433] 0xc70 DUP8
[codex:1415433] 0xc71 SWAP4
[codex:1415433] 0xc72 SWAP1
[codex:1415433] 0xc73 SWAP3
[codex:1415433] 0xc74 0x5f
[codex:1415433] 0xc75 SWAP3
[codex:1415433] 0xc76 DUP4
[codex:1415433] 0xc77 SWAP3
[codex:1415433] 0xc78 SWAP2
[codex:1415433] 0xc79 DUP4
[codex:1415433] 0xc7a SWAP2
[codex:1415433] 0xc7b SWAP1
[codex:1415433] 0xc7c DUP3
[codex:1415433] 0xc7d DUP9
[codex:1415433] 0xc7e GAS
[codex:1415433] 0xc7f CALL
[codex:1415433] 0xc80 DUP1
[codex:1415433] 0xc81 PUSH2 0x0c8f
[codex:1415433] 0xc84 JUMPI
[codex:1415433] 
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing contract access controls and token transfers**
[codex:1415433] 
[codex:1415433] I'm carefully examining the contract's internal and external functions to map which ones have owner or operator restrictions, focusing especially on those that perform token transfers. There seems to be solid access control on critical transfer functions, ensuring only authorized roles can move tokens from the contract. I'm also clarifying that some functions are view-only with no transfer capability. The key point is verifying no unprotected function allows arbitrary token extraction, which so far does not appear to be the case.
[codex:1415433] thinking
[codex:1415433] **Verifying withdrawal functions and stack argument order**
[codex:1415433] 
[codex:1415433] I'm digging deeper into the access-controlled withdrawal function that calls the internal token transfer, trying to decode exactly which arguments get passed on the stack to the transfer routine. It looks like authorized operators can withdraw tokens to themselves, and I’m simulating the stack to confirm parameter order for the call. This helps ensure token transfers are properly gated and not exposed to unauthorized users.
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, end=None):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     while i < len(code) and (end is None or i < end):
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x48f,0x4f2):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 20ms:
[codex:1415433] 0x48f JUMPDEST
[codex:1415433] 0x490 0x5f
[codex:1415433] 0x491 SLOAD
[codex:1415433] 0x492 PUSH1 0x01
[codex:1415433] 0x494 PUSH1 0x01
[codex:1415433] 0x496 PUSH1 0xa0
[codex:1415433] 0x498 SHL
[codex:1415433] 0x499 SUB
[codex:1415433] 0x49a AND
[codex:1415433] 0x49b CALLER
[codex:1415433] 0x49c EQ
[codex:1415433] 0x49d DUP1
[codex:1415433] 0x49e PUSH2 0x04b5
[codex:1415433] 0x4a1 JUMPI
[codex:1415433] 0x4a2 POP
[codex:1415433] 0x4a3 CALLER
[codex:1415433] 0x4a4 0x5f
[codex:1415433] 0x4a5 SWAP1
[codex:1415433] 0x4a6 DUP2
[codex:1415433] 0x4a7 MSTORE
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing internal call stack conventions**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=60):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0xadb,80):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 19ms:
[codex:1415433] 0xadb JUMPDEST
[codex:1415433] 0xadc 0x5f
[codex:1415433] 0xadd SLOAD
[codex:1415433] 0xade PUSH1 0x01
[codex:1415433] 0xae0 PUSH1 0x01
[codex:1415433] 0xae2 PUSH1 0xa0
[codex:1415433] 0xae4 SHL
[codex:1415433] 0xae5 SUB
[codex:1415433] 0xae6 AND
[codex:1415433] 0xae7 CALLER
[codex:1415433] 0xae8 EQ
[codex:1415433] 0xae9 PUSH2 0x046e
[codex:1415433] 0xaec JUMPI
[codex:1415433] 0xaed PUSH1 0x40
[codex:1415433] 0xaef MLOAD
[codex:1415433] 0xaf0 PUSH4 0x118cdaa7
[codex:1415433] 0xaf5 PUSH1 0xe0
[codex:1415433] 0xaf7 SHL
[codex:1415433] 0xaf8 DUP2
[codex:1415433] 0xaf9 MSTORE
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing jump and return addresses**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] start=0xadb-10
[codex:1415433] print(code[start:start+40].hex())
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 16ms:
[codex:1415433] 61099c565b50915091565b5f546001600160a01b0316331461046e5760405163118cdaa760e01b81
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing jump and return conventions in bytecode**
[codex:1415433] 
[codex:1415433] I'm tracing how the function at 0x0adb uses a shared return jumpdest at 0x046e for control flow, confirming a calling convention where the return address stays on the stack and is used at function epilogues. This helps clarify owner check flow and prepares me to analyze potential vulnerabilities around call stack and unprotected state-changing operations by mapping SSTORE usage to function contexts.
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] # find all JUMPDEST positions
[codex:1415433] jumpdests=set()
[codex:1415433] for i,b in enumerate(code):
[codex:1415433]     if b==0x5b:
[codex:1415433]         jumpdests.add(i)
[codex:1415433] 
[codex:1415433] # find SSTORE positions
[codex:1415433] sstore_positions=[i for i,b in enumerate(code) if b==0x55]
[codex:1415433] 
[codex:1415433] # helper to find nearest preceding jumpdest
[codex:1415433] for pos in sstore_positions:
[codex:1415433]     prev= max([j for j in jumpdests if j<pos], default=None)
[codex:1415433]     print('SSTORE at',hex(pos),'prev jumpdest',hex(prev) if prev else None)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 19ms:
[codex:1415433] SSTORE at 0x2ae prev jumpdest 0x28f
[codex:1415433] SSTORE at 0x363 prev jumpdest 0x339
[codex:1415433] SSTORE at 0x392 prev jumpdest 0x375
[codex:1415433] SSTORE at 0x395 prev jumpdest 0x375
[codex:1415433] SSTORE at 0x41f prev jumpdest 0x3fb
[codex:1415433] SSTORE at 0x426 prev jumpdest 0x3fb
[codex:1415433] SSTORE at 0x45b prev jumpdest 0x3fb
[codex:1415433] SSTORE at 0x54e prev jumpdest 0x531
[codex:1415433] SSTORE at 0xb24 prev jumpdest 0xb07
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing SSTORE instructions within functions**
[codex:1415433] exec
[codex:1415433] /bin/bash -lc "python - <<'PY'
[codex:1415433] import binascii
[codex:1415433] hexdata=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:1415433] code=binascii.unhexlify(hexdata)
[codex:1415433] 
[codex:1415433] opmap={
[codex:1415433] 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:1415433] 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:1415433] 0x20:'SHA3',
[codex:1415433] 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:1415433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1415433] 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:1415433] 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:1415433] 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:1415433] 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:1415433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1415433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1415433] }
[codex:1415433] 
[codex:1415433] def disasm(start, max_ins=80):
[codex:1415433]     i=start
[codex:1415433]     out=[]
[codex:1415433]     count=0
[codex:1415433]     while i < len(code) and count<max_ins:
[codex:1415433]         op=code[i]
[codex:1415433]         name=opmap.get(op,hex(op))
[codex:1415433]         if 0x60<=op<=0x7f:
[codex:1415433]             n=op-0x5f
[codex:1415433]             data=code[i+1:i+1+n]
[codex:1415433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1415433]             i+=1+n
[codex:1415433]         else:
[codex:1415433]             out.append((i,name))
[codex:1415433]             i+=1
[codex:1415433]         count+=1
[codex:1415433]     return out
[codex:1415433] 
[codex:1415433] for pc,ins in disasm(0x520,60):
[codex:1415433]     print(hex(pc),ins)
[codex:1415433] PY" in /tmp/codex-multi-i36ucnhr succeeded in 19ms:
[codex:1415433] 0x520 DUP7
[codex:1415433] 0x521 GAS
[codex:1415433] 0x522 STATICCALL
[codex:1415433] 0x523 ISZERO
[codex:1415433] 0x524 DUP1
[codex:1415433] 0x525 ISZERO
[codex:1415433] 0x526 PUSH2 0x0531
[codex:1415433] 0x529 JUMPI
[codex:1415433] 0x52a RETURNDATASIZE
[codex:1415433] 0x52b 0x5f
[codex:1415433] 0x52c 0x5f
[codex:1415433] 0x52d RETURNDATACOPY
[codex:1415433] 0x52e RETURNDATASIZE
[codex:1415433] 0x52f 0x5f
[codex:1415433] 0x530 REVERT
[codex:1415433] 0x531 JUMPDEST
[codex:1415433] 0x532 POP
[codex:1415433] 0x533 POP
[codex:1415433] 0x534 POP
[codex:1415433] 0x535 POP
[codex:1415433] 
[codex:1415433] thinking
[codex:1415433] **Analyzing bytecode for vulnerabilities**
[codex:1415433] codex
[codex:1415433] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified in the provided runtime bytecode bundle. The only state-mutating/token-transfer flows appear gated by owner/operator checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT paths were found.","findings":[]}
[codex:1415433] tokens used
[codex:1415433] 87,471
[codex:1415433] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified in the provided runtime bytecode bundle. The only state-mutating/token-transfer flows appear gated by owner/operator checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT paths were found.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-01T13:49:36.233708+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path identified in the provided runtime bytecode bundle. The only state-mutating/token-transfer flows appear gated by owner/operator checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT paths were found.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path identified in the provided runtime bytecode bundle. The only state-mutating/token-transfer flows appear gated by owner/operator checks, and no unprotected CALL/DELEGATECALL/SELFDESTRUCT paths were found.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
8
EXT*/BALANCE
1
Total opcodes
3102
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x000f
0000000b: JUMPI
0000000c: PUSH0
0000000d: PUSH0
0000000e: REVERT
0000000f: JUMPDEST
00000010: POP
00000011: PUSH1 0x04
00000013: CALLDATASIZE
00000014: LT
00000015: PUSH2 0x00b1
00000018: JUMPI
00000019: PUSH0
0000001a: CALLDATALOAD
0000001b: PUSH1 0xe0
0000001d: SHR
0000001e: DUP1
0000001f: PUSH4 0x8da5cb5b
00000024: GT
00000025: PUSH2 0x006e
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x8da5cb5b
0000002f: EQ
00000030: PUSH2 0x012c
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x9e281a98
0000003a: EQ
0000003b: PUSH2 0x0146
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xab2217e4
00000045: EQ
00000046: PUSH2 0x0159
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe8ea7770
00000050: EQ
00000051: PUSH2 0x0179
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf2fde38b
0000005b: EQ
0000005c: PUSH2 0x0199
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xf65041e6
00000066: EQ
00000067: PUSH2 0x01ac
0000006a: JUMPI
0000006b: PUSH0
0000006c: PUSH0
0000006d: REVERT
0000006e: JUMPDEST
0000006f: DUP1
00000070: PUSH4 0x0e90b3c9
00000075: EQ
00000076: PUSH2 0x00b5
00000079: JUMPI
0000007a: DUP1
0000007b: PUSH4 0x24e38dca
00000080: EQ
00000081: PUSH2 0x00d3
00000084: JUMPI
00000085: DUP1
00000086: PUSH4 0x4c8142a9
0000008b: EQ
0000008c: PUSH2 0x00e8
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0x54fd4d50
00000096: EQ
00000097: PUSH2 0x00fb
0000009a: JUMPI
0000009b: DUP1
0000009c: PUSH4 0x715018a6
000000a1: EQ
000000a2: PUSH2 0x0111
000000a5: JUMPI
000000a6: DUP1
000000a7: PUSH4 0x89476069
000000ac: EQ
000000ad: PUSH2 0x0119
000000b0: JUMPI
000000b1: JUMPDEST
000000b2: PUSH0
000000b3: PUSH0
000000b4: REVERT
000000b5: JUMPDEST
000000b6: PUSH2 0x00bd
000000b9: PUSH2 0x01cd
000000bc: JUMP
000000bd: JUMPDEST
000000be: PUSH1 0x40
000000c0: MLOAD
000000c1: PUSH2 0x00ca
000000c4: SWAP2
000000c5: SWAP1
000000c6: PUSH2 0x0d00
000000c9: JUMP
000000ca: JUMPDEST
000000cb: PUSH1 0x40
000000cd: MLOAD
000000ce: DUP1
000000cf: SWAP2
000000d0: SUB
000000d1: SWAP1
000000d2: RETURN
000000d3: JUMPDEST
000000d4: PUSH2 0x00e6
000000d7: PUSH2 0x00e1
000000da: CALLDATASIZE
000000db: PUSH1 0x04
000000dd: PUSH2 0x0d6f
000000e0: JUMP
000000e1: JUMPDEST
000000e2: PUSH2 0x0235
000000e5: JUMP
000000e6: JUMPDEST
000000e7: STOP
000000e8: JUMPDEST
000000e9: PUSH2 0x00e6
000000ec: PUSH2 0x00f6
000000ef: CALLDATASIZE
000000f0: PUSH1 0x04
000000f2: PUSH2 0x0d6f
000000f5: JUMP
000000f6: JUMPDEST
000000f7: PUSH2 0x03a5
000000fa: JUMP
000000fb: JUMPDEST
000000fc: PUSH2 0x0103
000000ff: PUSH1 0x01
00000101: DUP2
00000102: JUMP
00000103: JUMPDEST
00000104: PUSH1 0x40
00000106: MLOAD
00000107: SWAP1
00000108: DUP2
00000109: MSTORE
0000010a: PUSH1 0x20
0000010c: ADD
0000010d: PUSH2 0x00ca
00000110: JUMP
00000111: JUMPDEST
00000112: PUSH2 0x00e6
00000115: PUSH2 0x045d
00000118: JUMP
00000119: JUMPDEST
0000011a: PUSH2 0x00e6
0000011d: PUSH2 0x0127
00000120: CALLDATASIZE
00000121: PUSH1 0x04
00000123: PUSH2 0x0d6f
00000126: JUMP
00000127: JUMPDEST
00000128: PUSH2 0x0470
0000012b: JUMP
0000012c: JUMPDEST
0000012d: PUSH0
0000012e: SLOAD
0000012f: PUSH1 0x40
00000131: MLOAD
00000132: PUSH1 0x01
00000134: PUSH1 0x01
00000136: PUSH1 0xa0
00000138: SHL
00000139: SUB
0000013a: SWAP1
0000013b: SWAP2
0000013c: AND
0000013d: DUP2
0000013e: MSTORE
0000013f: PUSH1 0x20
00000141: ADD
00000142: PUSH2 0x00ca
00000145: JUMP
00000146: JUMPDEST
00000147: PUSH2 0x00e6
0000014a: PUSH2 0x0154
0000014d: CALLDATASIZE
0000014e: PUSH1 0x04
00000150: PUSH2 0x0d91
00000153: JUMP
00000154: JUMPDEST
00000155: PUSH2 0x048f
00000158: JUMP
00000159: JUMPDEST
0000015a: PUSH2 0x016c
0000015d: PUSH2 0x0167
00000160: CALLDATASIZE
00000161: PUSH1 0x04
00000163: PUSH2 0x0dbb
00000166: JUMP
00000167: JUMPDEST
00000168: PUSH2 0x04f2
0000016b: JUMP
0000016c: JUMPDEST
0000016d: PUSH1 0x40
0000016f: MLOAD
00000170: PUSH2 0x00ca
00000173: SWAP2
00000174: SWAP1
00000175: PUSH2 0x0ded
00000178: JUMP
00000179: JUMPDEST
0000017a: PUSH2 0x018c
0000017d: PUSH2 0x0187
00000180: CALLDATASIZE
00000181: PUSH1 0x04
00000183: PUSH2 0x0e68
00000186: JUMP
00000187: JUMPDEST
00000188: PUSH2 0x0830
0000018b: JUMP
0000018c: JUMPDEST
0000018d: PUSH1 0x40
0000018f: MLOAD
00000190: PUSH2 0x00ca
00000193: SWAP2
00000194: SWAP1
00000195: PUSH2 0x0f33
00000198: JUMP
00000199: JUMPDEST
0000019a: PUSH2 0x00e6
0000019d: PUSH2 0x01a7
000001a0: CALLDATASIZE
000001a1: PUSH1 0x04
000001a3: PUSH2 0x0d6f
000001a6: JUMP
000001a7: JUMPDEST
000001a8: PUSH2 0x08d1
000001ab: JUMP
000001ac: JUMPDEST
000001ad: PUSH2 0x01bf
000001b0: PUSH2 0x01ba
000001b3: CALLDATASIZE
000001b4: PUSH1 0x04
000001b6: PUSH2 0x0e68
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH2 0x090b
000001be: JUMP
000001bf: JUMPDEST
000001c0: PUSH1 0x40
000001c2: MLOAD
000001c3: PUSH2 0x00ca
000001c6: SWAP3
000001c7: SWAP2
000001c8: SWAP1
000001c9: PUSH2 0x0f6a
000001cc: JUMP
000001cd: JUMPDEST
000001ce: PUSH1 0x60
000001d0: PUSH2 0x01d7
000001d3: PUSH2 0x0adb
000001d6: JUMP
000001d7: JUMPDEST
000001d8: PUSH1 0x01
000001da: DUP1
000001db: SLOAD
000001dc: DUP1
000001dd: PUSH1 0x20
000001df: MUL
000001e0: PUSH1 0x20
000001e2: ADD
000001e3: PUSH1 0x40
000001e5: MLOAD
000001e6: SWAP1
000001e7: DUP2
000001e8: ADD
000001e9: PUSH1 0x40
000001eb: MSTORE
000001ec: DUP1
000001ed: SWAP3
000001ee: SWAP2
000001ef: SWAP1
000001f0: DUP2
000001f1: DUP2
000001f2: MSTORE
000001f3: PUSH1 0x20
000001f5: ADD
000001f6: DUP3
000001f7: DUP1
000001f8: SLOAD
000001f9: DUP1
000001fa: ISZERO
000001fb: PUSH2 0x022b
000001fe: JUMPI
000001ff: PUSH1 0x20
00000201: MUL
00000202: DUP3
00000203: ADD
00000204: SWAP2
00000205: SWAP1
00000206: PUSH0
00000207: MSTORE
00000208: PUSH1 0x20
0000020a: PUSH0
0000020b: KECCAK256
0000020c: SWAP1
0000020d: JUMPDEST
0000020e: DUP2
0000020f: SLOAD
00000210: PUSH1 0x01
00000212: PUSH1 0x01
00000214: PUSH1 0xa0
00000216: SHL
00000217: SUB
00000218: AND
00000219: DUP2
0000021a: MSTORE
0000021b: PUSH1 0x01
0000021d: SWAP1
0000021e: SWAP2
0000021f: ADD
00000220: SWAP1
00000221: PUSH1 0x20
00000223: ADD
00000224: DUP1
00000225: DUP4
00000226: GT
00000227: PUSH2 0x020d
0000022a: JUMPI
0000022b: JUMPDEST
0000022c: POP
0000022d: POP
0000022e: POP
0000022f: POP
00000230: POP
00000231: SWAP1
00000232: POP
00000233: SWAP1
00000234: JUMP
00000235: JUMPDEST
00000236: PUSH2 0x023d
00000239: PUSH2 0x0adb
0000023c: JUMP
0000023d: JUMPDEST
0000023e: PUSH1 0x01
00000240: PUSH1 0x01
00000242: PUSH1 0xa0
00000244: SHL
00000245: SUB
00000246: DUP2
00000247: AND
00000248: PUSH0
00000249: SWAP1
0000024a: DUP2
0000024b: MSTORE
0000024c: PUSH1 0x02
0000024e: PUSH1 0x20
00000250: MSTORE
00000251: PUSH1 0x40
00000253: SWAP1
00000254: KECCAK256
00000255: SLOAD
00000256: PUSH1 0xff
00000258: AND
00000259: PUSH2 0x028f
0000025c: JUMPI
0000025d: PUSH1 0x40
0000025f: MLOAD
00000260: PUSH3 0x461bcd
00000264: PUSH1 0xe5
00000266: SHL
00000267: DUP2
00000268: MSTORE
00000269: PUSH1 0x20
0000026b: PUSH1 0x04
0000026d: DUP3
0000026e: ADD
0000026f: MSTORE
00000270: PUSH1 0x03
00000272: PUSH1 0x24
00000274: DUP3
00000275: ADD
00000276: MSTORE
00000277: PUSH3 0x29a729
0000027b: PUSH1 0xe9
0000027d: SHL
0000027e: PUSH1 0x44
00000280: DUP3
00000281: ADD
00000282: MSTORE
00000283: PUSH1 0x64
00000285: ADD
00000286: JUMPDEST
00000287: PUSH1 0x40
00000289: MLOAD
0000028a: DUP1
0000028b: SWAP2
0000028c: SUB
0000028d: SWAP1
0000028e: REVERT
0000028f: JUMPDEST
00000290: PUSH1 0x01
00000292: PUSH1 0x01
00000294: PUSH1 0xa0
00000296: SHL
00000297: SUB
00000298: DUP2
00000299: AND
0000029a: PUSH0
0000029b: SWAP1
0000029c: DUP2
0000029d: MSTORE
0000029e: PUSH1 0x02
000002a0: PUSH1 0x20
000002a2: MSTORE
000002a3: PUSH1 0x40
000002a5: DUP2
000002a6: KECCAK256
000002a7: DUP1
000002a8: SLOAD
000002a9: PUSH1 0xff
000002ab: NOT
000002ac: AND
000002ad: SWAP1
000002ae: SSTORE
000002af: JUMPDEST
000002b0: PUSH1 0x01
000002b2: SLOAD
000002b3: DUP2
000002b4: LT
000002b5: ISZERO
000002b6: PUSH2 0x03a1
000002b9: JUMPI
000002ba: DUP2
000002bb: PUSH1 0x01
000002bd: PUSH1 0x01
000002bf: PUSH1 0xa0
000002c1: SHL
000002c2: SUB
000002c3: AND
000002c4: PUSH1 0x01
000002c6: DUP3
000002c7: DUP2
000002c8: SLOAD
000002c9: DUP2
000002ca: LT
000002cb: PUSH2 0x02d6
000002ce: JUMPI
000002cf: PUSH2 0x02d6
000002d2: PUSH2 0x0fed
000002d5: JUMP
000002d6: JUMPDEST
000002d7: PUSH0
000002d8: SWAP2
000002d9: DUP3
000002da: MSTORE
000002db: PUSH1 0x20
000002dd: SWAP1
000002de: SWAP2
000002df: KECCAK256
000002e0: ADD
000002e1: SLOAD
000002e2: PUSH1 0x01
000002e4: PUSH1 0x01
000002e6: PUSH1 0xa0
000002e8: SHL
000002e9: SUB
000002ea: AND
000002eb: SUB
000002ec: PUSH2 0x0399
000002ef: JUMPI
000002f0: PUSH1 0x01
000002f2: DUP1
000002f3: SLOAD
000002f4: PUSH2 0x02fe
000002f7: SWAP1
000002f8: DUP3
000002f9: SWAP1
000002fa: PUSH2 0x1015
000002fd: JUMP
000002fe: JUMPDEST
000002ff: DUP2
00000300: SLOAD
00000301: DUP2
00000302: LT
00000303: PUSH2 0x030e
00000306: JUMPI
00000307: PUSH2 0x030e
0000030a: PUSH2 0x0fed
0000030d: JUMP
0000030e: JUMPDEST
0000030f: PUSH0
00000310: SWAP2
00000311: DUP3
00000312: MSTORE
00000313: PUSH1 0x20
00000315: SWAP1
00000316: SWAP2
00000317: KECCAK256
00000318: ADD
00000319: SLOAD
0000031a: PUSH1 0x01
0000031c: DUP1
0000031d: SLOAD
0000031e: PUSH1 0x01
00000320: PUSH1 0x01
00000322: PUSH1 0xa0
00000324: SHL
00000325: SUB
00000326: SWAP1
00000327: SWAP3
00000328: AND
00000329: SWAP2
0000032a: DUP4
0000032b: SWAP1
0000032c: DUP2
0000032d: LT
0000032e: PUSH2 0x0339
00000331: JUMPI
00000332: PUSH2 0x0339
00000335: PUSH2 0x0fed
00000338: JUMP
00000339: JUMPDEST
0000033a: SWAP1
0000033b: PUSH0
0000033c: MSTORE
0000033d: PUSH1 0x20
0000033f: PUSH0
00000340: KECCAK256
00000341: ADD
00000342: PUSH0
00000343: PUSH2 0x0100
00000346: EXP
00000347: DUP2
00000348: SLOAD
00000349: DUP2
0000034a: PUSH1 0x01
0000034c: PUSH1 0x01
0000034e: PUSH1 0xa0
00000350: SHL
00000351: SUB
00000352: MUL
00000353: NOT
00000354: AND
00000355: SWAP1
00000356: DUP4
00000357: PUSH1 0x01
00000359: PUSH1 0x01
0000035b: PUSH1 0xa0
0000035d: SHL
0000035e: SUB
0000035f: AND
00000360: MUL
00000361: OR
00000362: SWAP1
00000363: SSTORE
00000364: POP
00000365: PUSH1 0x01
00000367: DUP1
00000368: SLOAD
00000369: DUP1
0000036a: PUSH2 0x0375
0000036d: JUMPI
0000036e: PUSH2 0x0375
00000371: PUSH2 0x1028
00000374: JUMP
00000375: JUMPDEST
00000376: PUSH0
00000377: DUP3
00000378: DUP2
00000379: MSTORE
0000037a: PUSH1 0x20
0000037c: SWAP1
0000037d: KECCAK256
0000037e: DUP2
0000037f: ADD
00000380: PUSH0
00000381: NOT
00000382: SWAP1
00000383: DUP2
00000384: ADD
00000385: DUP1
00000386: SLOAD
00000387: PUSH1 0x01
00000389: PUSH1 0x01
0000038b: PUSH1 0xa0
0000038d: SHL
0000038e: SUB
0000038f: NOT
00000390: AND
00000391: SWAP1
00000392: SSTORE
00000393: ADD
00000394: SWAP1
00000395: SSTORE
00000396: POP
00000397: POP
00000398: JUMP
00000399: JUMPDEST
0000039a: PUSH1 0x01
0000039c: ADD
0000039d: PUSH2 0x02af
000003a0: JUMP
000003a1: JUMPDEST
000003a2: POP
000003a3: POP
000003a4: JUMP
000003a5: JUMPDEST
000003a6: PUSH2 0x03ad
000003a9: PUSH2 0x0adb
000003ac: JUMP
000003ad: JUMPDEST
000003ae: PUSH1 0x01
000003b0: PUSH1 0x01
000003b2: PUSH1 0xa0
000003b4: SHL
000003b5: SUB
000003b6: DUP2
000003b7: AND
000003b8: PUSH0
000003b9: SWAP1
000003ba: DUP2
000003bb: MSTORE
000003bc: PUSH1 0x02
000003be: PUSH1 0x20
000003c0: MSTORE
000003c1: PUSH1 0x40
000003c3: SWAP1
000003c4: KECCAK256
000003c5: SLOAD
000003c6: PUSH1 0xff
000003c8: AND
000003c9: ISZERO
000003ca: PUSH2 0x03fb
000003cd: JUMPI
000003ce: PUSH1 0x40
000003d0: MLOAD
000003d1: PUSH3 0x461bcd
000003d5: PUSH1 0xe5
000003d7: SHL
000003d8: DUP2
000003d9: MSTORE
000003da: PUSH1 0x20
000003dc: PUSH1 0x04
000003de: DUP3
000003df: ADD
000003e0: MSTORE
000003e1: PUSH1 0x03
000003e3: PUSH1 0x24
000003e5: DUP3
000003e6: ADD
000003e7: MSTORE
000003e8: PUSH3 0x29a0a9
000003ec: PUSH1 0xe9
000003ee: SHL
000003ef: PUSH1 0x44
000003f1: DUP3
000003f2: ADD
000003f3: MSTORE
000003f4: PUSH1 0x64
000003f6: ADD
000003f7: PUSH2 0x0286
000003fa: JUMP
000003fb: JUMPDEST
000003fc: PUSH1 0x01
000003fe: PUSH1 0x01
00000400: PUSH1 0xa0
00000402: SHL
00000403: SUB
00000404: AND
00000405: PUSH0
00000406: DUP2
00000407: DUP2
00000408: MSTORE
00000409: PUSH1 0x02
0000040b: PUSH1 0x20
0000040d: MSTORE
0000040e: PUSH1 0x40
00000410: DUP2
00000411: KECCAK256
00000412: DUP1
00000413: SLOAD
00000414: PUSH1 0xff
00000416: NOT
00000417: AND
00000418: PUSH1 0x01
0000041a: SWAP1
0000041b: DUP2
0000041c: OR
0000041d: SWAP1
0000041e: SWAP2
0000041f: SSTORE
00000420: DUP1
00000421: SLOAD
00000422: DUP1
00000423: DUP3
00000424: ADD
00000425: DUP3
00000426: SSTORE
00000427: SWAP2
00000428: MSTORE
00000429: PUSH32 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6
0000044a: ADD
0000044b: DUP1
0000044c: SLOAD
0000044d: PUSH1 0x01
0000044f: PUSH1 0x01
00000451: PUSH1 0xa0
00000453: SHL
00000454: SUB
00000455: NOT
00000456: AND
00000457: SWAP1
00000458: SWAP2
00000459: OR
0000045a: SWAP1
0000045b: SSTORE
0000045c: JUMP
0000045d: JUMPDEST
0000045e: PUSH2 0x0465
00000461: PUSH2 0x0adb
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH2 0x046e
00000469: PUSH0
0000046a: PUSH2 0x0b07
0000046d: JUMP
0000046e: JUMPDEST
0000046f: JUMP
00000470: JUMPDEST
00000471: PUSH2 0x0478
00000474: PUSH2 0x0adb
00000477: JUMP
00000478: JUMPDEST
00000479: PUSH2 0x048c
0000047c: DUP2
0000047d: PUSH2 0x0486
00000480: DUP4
00000481: ADDRESS
00000482: PUSH2 0x0b56
00000485: JUMP
00000486: JUMPDEST
00000487: CALLER
00000488: PUSH2 0x0bca
0000048b: JUMP
0000048c: JUMPDEST
0000048d: POP
0000048e: JUMP
0000048f: JUMPDEST
00000490: PUSH0
00000491: SLOAD
00000492: PUSH1 0x01
00000494: PUSH1 0x01
00000496: PUSH1 0xa0
00000498: SHL
00000499: SUB
0000049a: AND
0000049b: CALLER
0000049c: EQ
0000049d: DUP1
0000049e: PUSH2 0x04b5
000004a1: JUMPI
000004a2: POP
000004a3: CALLER
000004a4: PUSH0
000004a5: SWAP1
000004a6: DUP2
000004a7: MSTORE
000004a8: PUSH1 0x02
000004aa: PUSH1 0x20
000004ac: MSTORE
000004ad: PUSH1 0x40
000004af: SWAP1
000004b0: KECCAK256
000004b1: SLOAD
000004b2: PUSH1 0xff
000004b4: AND
000004b5: JUMPDEST
000004b6: PUSH2 0x04e7
000004b9: JUMPI
000004ba: PUSH1 0x40
000004bc: MLOAD
000004bd: PUSH3 0x461bcd
000004c1: PUSH1 0xe5
000004c3: SHL
000004c4: DUP2
000004c5: MSTORE
000004c6: PUSH1 0x20
000004c8: PUSH1 0x04
000004ca: DUP3
000004cb: ADD
000004cc: MSTORE
000004cd: PUSH1 0x03
000004cf: PUSH1 0x24
000004d1: DUP3
000004d2: ADD
000004d3: MSTORE
000004d4: PUSH3 0x343033
000004d8: PUSH1 0xe8
000004da: SHL
000004db: PUSH1 0x44
000004dd: DUP3
000004de: ADD
000004df: MSTORE
000004e0: PUSH1 0x64
000004e2: ADD
000004e3: PUSH2 0x0286
000004e6: JUMP
000004e7: JUMPDEST
000004e8: PUSH2 0x03a1
000004eb: DUP3
000004ec: DUP3
000004ed: CALLER
000004ee: PUSH2 0x0bca
000004f1: JUMP
000004f2: JUMPDEST
000004f3: PUSH1 0x60
000004f5: PUSH0
000004f6: DUP5
000004f7: PUSH1 0x01
000004f9: PUSH1 0x01
000004fb: PUSH1 0xa0
000004fd: SHL
000004fe: SUB
000004ff: AND
00000500: PUSH4 0x574f2ba3
00000505: PUSH1 0x40
00000507: MLOAD
00000508: DUP2
00000509: PUSH4 0xffffffff
0000050e: AND
0000050f: PUSH1 0xe0
00000511: SHL
00000512: DUP2
00000513: MSTORE
00000514: PUSH1 0x04
00000516: ADD
00000517: PUSH1 0x20
00000519: PUSH1 0x40
0000051b: MLOAD
0000051c: DUP1
0000051d: DUP4
0000051e: SUB
0000051f: DUP2
00000520: DUP7
00000521: GAS
00000522: STATICCALL
00000523: ISZERO
00000524: DUP1
00000525: ISZERO
00000526: PUSH2 0x0531
00000529: JUMPI
0000052a: RETURNDATASIZE
0000052b: PUSH0
0000052c: PUSH0
0000052d: RETURNDATACOPY
0000052e: RETURNDATASIZE
0000052f: PUSH0
00000530: REVERT
00000531: JUMPDEST
00000532: POP
00000533: POP
00000534: POP
00000535: POP
00000536: PUSH1 0x40
00000538: MLOAD
00000539: RETURNDATASIZE
0000053a: PUSH1 0x1f
0000053c: NOT
0000053d: PUSH1 0x1f
0000053f: DUP3
00000540: ADD
00000541: AND
00000542: DUP3
00000543: ADD
00000544: DUP1
00000545: PUSH1 0x40
00000547: MSTORE
00000548: POP
00000549: DUP2
0000054a: ADD
0000054b: SWAP1
0000054c: PUSH2 0x0555
0000054f: SWAP2
00000550: SWAP1
00000551: PUSH2 0x103c
00000554: JUMP
00000555: JUMPDEST
00000556: SWAP1
00000557: POP
00000558: PUSH0
00000559: DUP2
0000055a: DUP5
0000055b: GT
0000055c: PUSH2 0x0565
0000055f: JUMPI
00000560: DUP4
00000561: PUSH2 0x0567
00000564: JUMP
00000565: JUMPDEST
00000566: DUP2
00000567: JUMPDEST
00000568: SWAP1
00000569: POP
0000056a: DUP5
0000056b: DUP2
0000056c: LT
0000056d: ISZERO
0000056e: PUSH2 0x059f
00000571: JUMPI
00000572: PUSH1 0x40
00000574: MLOAD
00000575: PUSH3 0x461bcd
00000579: PUSH1 0xe5
0000057b: SHL
0000057c: DUP2
0000057d: MSTORE
0000057e: PUSH1 0x20
00000580: PUSH1 0x04
00000582: DUP3
00000583: ADD
00000584: MSTORE
00000585: PUSH1 0x03
00000587: PUSH1 0x24
00000589: DUP3
0000058a: ADD
0000058b: MSTORE
0000058c: PUSH3 0x534853
00000590: PUSH1 0xe8
00000592: SHL
00000593: PUSH1 0x44
00000595: DUP3
00000596: ADD
00000597: MSTORE
00000598: PUSH1 0x64
0000059a: ADD
0000059b: PUSH2 0x0286
0000059e: JUMP
0000059f: JUMPDEST
000005a0: PUSH0
000005a1: PUSH2 0x05aa
000005a4: DUP7
000005a5: DUP4
000005a6: PUSH2 0x1015
000005a9: JUMP
000005aa: JUMPDEST
000005ab: SWAP1
000005ac: POP
000005ad: PUSH0
000005ae: DUP2
000005af: PUSH8 0xffffffffffffffff
000005b8: DUP2
000005b9: GT
000005ba: ISZERO
000005bb: PUSH2 0x05c6
000005be: JUMPI
000005bf: PUSH2 0x05c6
000005c2: PUSH2 0x0e54
000005c5: JUMP
000005c6: JUMPDEST
000005c7: PUSH1 0x40
000005c9: MLOAD
000005ca: SWAP1
000005cb: DUP1
000005cc: DUP3
000005cd: MSTORE
000005ce: DUP1
000005cf: PUSH1 0x20
000005d1: MUL
000005d2: PUSH1 0x20
000005d4: ADD
000005d5: DUP3
000005d6: ADD
000005d7: PUSH1 0x40
000005d9: MSTORE
000005da: DUP1
000005db: ISZERO
000005dc: PUSH2 0x05ff
000005df: JUMPI
000005e0: DUP2
000005e1: PUSH1 0x20
000005e3: ADD
000005e4: JUMPDEST
000005e5: PUSH2 0x05ec
000005e8: PUSH2 0x0ce2
000005eb: JUMP
000005ec: JUMPDEST
000005ed: DUP2
000005ee: MSTORE
000005ef: PUSH1 0x20
000005f1: ADD
000005f2: SWAP1
000005f3: PUSH1 0x01
000005f5: SWAP1
000005f6: SUB
000005f7: SWAP1
000005f8: DUP2
000005f9: PUSH2 0x05e4
000005fc: JUMPI
000005fd: SWAP1
000005fe: POP
000005ff: JUMPDEST
00000600: POP
00000601: SWAP1
00000602: POP
00000603: PUSH0
00000604: JUMPDEST
00000605: DUP3
00000606: DUP2
00000607: LT
00000608: ISZERO
00000609: PUSH2 0x0824
0000060c: JUMPI
0000060d: PUSH0
0000060e: PUSH1 0x01
00000610: PUSH1 0x01
00000612: PUSH1 0xa0
00000614: SHL
00000615: SUB
00000616: DUP11
00000617: AND
00000618: PUSH4 0x1e3dd18b
0000061d: PUSH2 0x0626
00000620: DUP5
00000621: DUP13
00000622: PUSH2 0x1053
00000625: JUMP
00000626: JUMPDEST
00000627: PUSH1 0x40
00000629: MLOAD
0000062a: DUP3
0000062b: PUSH4 0xffffffff
00000630: AND
00000631: PUSH1 0xe0
00000633: SHL
00000634: DUP2
00000635: MSTORE
00000636: PUSH1 0x04
00000638: ADD
00000639: PUSH2 0x0644
0000063c: SWAP2
0000063d: DUP2
0000063e: MSTORE
0000063f: PUSH1 0x20
00000641: ADD
00000642: SWAP1
00000643: JUMP
00000644: JUMPDEST
00000645: PUSH1 0x20
00000647: PUSH1 0x40
00000649: MLOAD
0000064a: DUP1
0000064b: DUP4
0000064c: SUB
0000064d: DUP2
0000064e: DUP7
0000064f: GAS
00000650: STATICCALL
00000651: ISZERO
00000652: DUP1
00000653: ISZERO
00000654: PUSH2 0x065f
00000657: JUMPI
00000658: RETURNDATASIZE
00000659: PUSH0
0000065a: PUSH0
0000065b: RETURNDATACOPY
0000065c: RETURNDATASIZE
0000065d: PUSH0
0000065e: REVERT
0000065f: JUMPDEST
00000660: POP
00000661: POP
00000662: POP
00000663: POP
00000664: PUSH1 0x40
00000666: MLOAD
00000667: RETURNDATASIZE
00000668: PUSH1 0x1f
0000066a: NOT
0000066b: PUSH1 0x1f
0000066d: DUP3
0000066e: ADD
0000066f: AND
00000670: DUP3
00000671: ADD
00000672: DUP1
00000673: PUSH1 0x40
00000675: MSTORE
00000676: POP
00000677: DUP2
00000678: ADD
00000679: SWAP1
0000067a: PUSH2 0x0683
0000067d: SWAP2
0000067e: SWAP1
0000067f: PUSH2 0x1066
00000682: JUMP
00000683: JUMPDEST
00000684: SWAP1
00000685: POP
00000686: PUSH0
00000687: DUP2
00000688: SWAP1
00000689: POP
0000068a: DUP1
0000068b: PUSH1 0x01
0000068d: PUSH1 0x01
0000068f: PUSH1 0xa0
00000691: SHL
00000692: SUB
00000693: AND
00000694: PUSH4 0x0dfe1681
00000699: PUSH1 0x40
0000069b: MLOAD
0000069c: DUP2
0000069d: PUSH4 0xffffffff
000006a2: AND
000006a3: PUSH1 0xe0
000006a5: SHL
000006a6: DUP2
000006a7: MSTORE
000006a8: PUSH1 0x04
000006aa: ADD
000006ab: PUSH1 0x20
000006ad: PUSH1 0x40
000006af: MLOAD
000006b0: DUP1
000006b1: DUP4
000006b2: SUB
000006b3: DUP2
000006b4: DUP7
000006b5: GAS
000006b6: STATICCALL
000006b7: ISZERO
000006b8: DUP1
000006b9: ISZERO
000006ba: PUSH2 0x06c5
000006bd: JUMPI
000006be: RETURNDATASIZE
000006bf: PUSH0
000006c0: PUSH0
000006c1: RETURNDATACOPY
000006c2: RETURNDATASIZE
000006c3: PUSH0
000006c4: REVERT
000006c5: JUMPDEST
000006c6: POP
000006c7: POP
000006c8: POP
000006c9: POP
000006ca: PUSH1 0x40
000006cc: MLOAD
000006cd: RETURNDATASIZE
000006ce: PUSH1 0x1f
000006d0: NOT
000006d1: PUSH1 0x1f
000006d3: DUP3
000006d4: ADD
000006d5: AND
000006d6: DUP3
000006d7: ADD
000006d8: DUP1
000006d9: PUSH1 0x40
000006db: MSTORE
000006dc: POP
000006dd: DUP2
000006de: ADD
000006df: SWAP1
000006e0: PUSH2 0x06e9
000006e3: SWAP2
000006e4: SWAP1
000006e5: PUSH2 0x1066
000006e8: JUMP
000006e9: JUMPDEST
000006ea: DUP5
000006eb: DUP5
000006ec: DUP2
000006ed: MLOAD
000006ee: DUP2
000006ef: LT
000006f0: PUSH2 0x06fb
000006f3: JUMPI
000006f4: PUSH2 0x06fb
000006f7: PUSH2 0x0fed
000006fa: JUMP
000006fb: JUMPDEST
000006fc: PUSH1 0x20
000006fe: MUL
000006ff: PUSH1 0x20
00000701: ADD
00000702: ADD
00000703: MLOAD
00000704: PUSH0
00000705: PUSH1 0x03
00000707: DUP2
00000708: LT
00000709: PUSH2 0x0714
0000070c: JUMPI
0000070d: PUSH2 0x0714
00000710: PUSH2 0x0fed
00000713: JUMP
00000714: JUMPDEST
00000715: PUSH1 0x20
00000717: MUL
00000718: ADD
00000719: SWAP1
0000071a: PUSH1 0x01
0000071c: PUSH1 0x01
0000071e: PUSH1 0xa0
00000720: SHL
00000721: SUB
00000722: AND
00000723: SWAP1
00000724: DUP2
00000725: PUSH1 0x01
00000727: PUSH1 0x01
00000729: PUSH1 0xa0
0000072b: SHL
0000072c: SUB
0000072d: AND
0000072e: DUP2
0000072f: MSTORE
00000730: POP
00000731: POP
00000732: DUP1
00000733: PUSH1 0x01
00000735: PUSH1 0x01
00000737: PUSH1 0xa0
00000739: SHL
0000073a: SUB
0000073b: AND
0000073c: PUSH4 0xd21220a7
00000741: PUSH1 0x40
00000743: MLOAD
00000744: DUP2
00000745: PUSH4 0xffffffff
0000074a: AND
0000074b: PUSH1 0xe0
0000074d: SHL
0000074e: DUP2
0000074f: MSTORE
00000750: PUSH1 0x04
00000752: ADD
00000753: PUSH1 0x20
00000755: PUSH1 0x40
00000757: MLOAD
00000758: DUP1
00000759: DUP4
0000075a: SUB
0000075b: DUP2
0000075c: DUP7
0000075d: GAS
0000075e: STATICCALL
0000075f: ISZERO
00000760: DUP1
00000761: ISZERO
00000762: PUSH2 0x076d
00000765: JUMPI
00000766: RETURNDATASIZE
00000767: PUSH0
00000768: PUSH0
00000769: RETURNDATACOPY
0000076a: RETURNDATASIZE
0000076b: PUSH0
0000076c: REVERT
0000076d: JUMPDEST
0000076e: POP
0000076f: POP
00000770: POP
00000771: POP
00000772: PUSH1 0x40
00000774: MLOAD
00000775: RETURNDATASIZE
00000776: PUSH1 0x1f
00000778: NOT
00000779: PUSH1 0x1f
0000077b: DUP3
0000077c: ADD
0000077d: AND
0000077e: DUP3
0000077f: ADD
00000780: DUP1
00000781: PUSH1 0x40
00000783: MSTORE
00000784: POP
00000785: DUP2
00000786: ADD
00000787: SWAP1
00000788: PUSH2 0x0791
0000078b: SWAP2
0000078c: SWAP1
0000078d: PUSH2 0x1066
00000790: JUMP
00000791: JUMPDEST
00000792: DUP5
00000793: DUP5
00000794: DUP2
00000795: MLOAD
00000796: DUP2
00000797: LT
00000798: PUSH2 0x07a3
0000079b: JUMPI
0000079c: PUSH2 0x07a3
0000079f: PUSH2 0x0fed
000007a2: JUMP
000007a3: JUMPDEST
000007a4: PUSH1 0x20
000007a6: MUL
000007a7: PUSH1 0x20
000007a9: ADD
000007aa: ADD
000007ab: MLOAD
000007ac: PUSH1 0x01
000007ae: PUSH1 0x03
000007b0: DUP2
000007b1: LT
000007b2: PUSH2 0x07bd
000007b5: JUMPI
000007b6: PUSH2 0x07bd
000007b9: PUSH2 0x0fed
000007bc: JUMP
000007bd: JUMPDEST
000007be: PUSH1 0x20
000007c0: MUL
000007c1: ADD
000007c2: SWAP1
000007c3: PUSH1 0x01
000007c5: PUSH1 0x01
000007c7: PUSH1 0xa0
000007c9: SHL
000007ca: SUB
000007cb: AND
000007cc: SWAP1
000007cd: DUP2
000007ce: PUSH1 0x01
000007d0: PUSH1 0x01
000007d2: PUSH1 0xa0
000007d4: SHL
000007d5: SUB
000007d6: AND
000007d7: DUP2
000007d8: MSTORE
000007d9: POP
000007da: POP
000007db: DUP2
000007dc: DUP5
000007dd: DUP5
000007de: DUP2
000007df: MLOAD
000007e0: DUP2
000007e1: LT
000007e2: PUSH2 0x07ed
000007e5: JUMPI
000007e6: PUSH2 0x07ed
000007e9: PUSH2 0x0fed
000007ec: JUMP
000007ed: JUMPDEST
000007ee: PUSH1 0x20
000007f0: MUL
000007f1: PUSH1 0x20
000007f3: ADD
000007f4: ADD
000007f5: MLOAD
000007f6: PUSH1 0x02
000007f8: PUSH1 0x03
000007fa: DUP2
000007fb: LT
000007fc: PUSH2 0x0807
000007ff: JUMPI
00000800: PUSH2 0x0807
00000803: PUSH2 0x0fed
00000806: JUMP
00000807: JUMPDEST
00000808: PUSH1 0x01
0000080a: PUSH1 0x01
0000080c: PUSH1 0xa0
0000080e: SHL
0000080f: SUB
00000810: SWAP1
00000811: SWAP3
00000812: AND
00000813: PUSH1 0x20
00000815: SWAP3
00000816: SWAP1
00000817: SWAP3
00000818: MUL
00000819: ADD
0000081a: MSTORE
0000081b: POP
0000081c: POP
0000081d: PUSH1 0x01
0000081f: ADD
00000820: PUSH2 0x0604
00000823: JUMP
00000824: JUMPDEST
00000825: POP
00000826: SWAP8
00000827: SWAP7
00000828: POP
00000829: POP
0000082a: POP
0000082b: POP
0000082c: POP
0000082d: POP
0000082e: POP
0000082f: JUMP
00000830: JUMPDEST
00000831: PUSH1 0x60
00000833: DUP2
00000834: MLOAD
00000835: PUSH8 0xffffffffffffffff
0000083e: DUP2
0000083f: GT
00000840: ISZERO
00000841: PUSH2 0x084c
00000844: JUMPI
00000845: PUSH2 0x084c
00000848: PUSH2 0x0e54
0000084b: JUMP
0000084c: JUMPDEST
0000084d: PUSH1 0x40
0000084f: MLOAD
00000850: SWAP1
00000851: DUP1
00000852: DUP3
00000853: MSTORE
00000854: DUP1
00000855: PUSH1 0x20
00000857: MUL
00000858: PUSH1 0x20
0000085a: ADD
0000085b: DUP3
0000085c: ADD
0000085d: PUSH1 0x40
0000085f: MSTORE
00000860: DUP1
00000861: ISZERO
00000862: PUSH2 0x0875
00000865: JUMPI
00000866: DUP2
00000867: PUSH1 0x20
00000869: ADD
0000086a: PUSH1 0x20
0000086c: DUP3
0000086d: MUL
0000086e: DUP1
0000086f: CALLDATASIZE
00000870: DUP4
00000871: CALLDATACOPY
00000872: ADD
00000873: SWAP1
00000874: POP
00000875: JUMPDEST
00000876: POP
00000877: SWAP1
00000878: POP
00000879: PUSH0
0000087a: JUMPDEST
0000087b: DUP3
0000087c: MLOAD
0000087d: DUP2
0000087e: LT
0000087f: ISZERO
00000880: PUSH2 0x08cb
00000883: JUMPI
00000884: PUSH2 0x08a6
00000887: DUP4
00000888: DUP3
00000889: DUP2
0000088a: MLOAD
0000088b: DUP2
0000088c: LT
0000088d: PUSH2 0x0898
00000890: JUMPI
00000891: PUSH2 0x0898
00000894: PUSH2 0x0fed
00000897: JUMP
00000898: JUMPDEST
00000899: PUSH1 0x20
0000089b: MUL
0000089c: PUSH1 0x20
0000089e: ADD
0000089f: ADD
000008a0: MLOAD
000008a1: ADDRESS
000008a2: PUSH2 0x0b56
000008a5: JUMP
000008a6: JUMPDEST
000008a7: DUP3
000008a8: DUP3
000008a9: DUP2
000008aa: MLOAD
000008ab: DUP2
000008ac: LT
000008ad: PUSH2 0x08b8
000008b0: JUMPI
000008b1: PUSH2 0x08b8
000008b4: PUSH2 0x0fed
000008b7: JUMP
000008b8: JUMPDEST
000008b9: PUSH1 0x20
000008bb: SWAP1
000008bc: DUP2
000008bd: MUL
000008be: SWAP2
000008bf: SWAP1
000008c0: SWAP2
000008c1: ADD
000008c2: ADD
000008c3: MSTORE
000008c4: PUSH1 0x01
000008c6: ADD
000008c7: PUSH2 0x087a
000008ca: JUMP
000008cb: JUMPDEST
000008cc: POP
000008cd: SWAP2
000008ce: SWAP1
000008cf: POP
000008d0: JUMP
000008d1: JUMPDEST
000008d2: PUSH2 0x08d9
000008d5: PUSH2 0x0adb
000008d8: JUMP
000008d9: JUMPDEST
000008da: PUSH1 0x01
000008dc: PUSH1 0x01
000008de: PUSH1 0xa0
000008e0: SHL
000008e1: SUB
000008e2: DUP2
000008e3: AND
000008e4: PUSH2 0x0902
000008e7: JUMPI
000008e8: PUSH1 0x40
000008ea: MLOAD
000008eb: PUSH4 0x1e4fbdf7
000008f0: PUSH1 0xe0
000008f2: SHL
000008f3: DUP2
000008f4: MSTORE
000008f5: PUSH0
000008f6: PUSH1 0x04
000008f8: DUP3
000008f9: ADD
000008fa: MSTORE
000008fb: PUSH1 0x24
000008fd: ADD
000008fe: PUSH2 0x0286
00000901: JUMP
00000902: JUMPDEST
00000903: PUSH2 0x048c
00000906: DUP2
00000907: PUSH2 0x0b07
0000090a: JUMP
0000090b: JUMPDEST
0000090c: PUSH1 0x60
0000090e: DUP1
0000090f: DUP3
00000910: MLOAD
00000911: PUSH8 0xffffffffffffffff
0000091a: DUP2
0000091b: GT
0000091c: ISZERO
0000091d: PUSH2 0x0928
00000920: JUMPI
00000921: PUSH2 0x0928
00000924: PUSH2 0x0e54
00000927: JUMP
00000928: JUMPDEST
00000929: PUSH1 0x40
0000092b: MLOAD
0000092c: SWAP1
0000092d: DUP1
0000092e: DUP3
0000092f: MSTORE
00000930: DUP1
00000931: PUSH1 0x20
00000933: MUL
00000934: PUSH1 0x20
00000936: ADD
00000937: DUP3
00000938: ADD
00000939: PUSH1 0x40
0000093b: MSTORE
0000093c: DUP1
0000093d: ISZERO
0000093e: PUSH2 0x0951
00000941: JUMPI
00000942: DUP2
00000943: PUSH1 0x20
00000945: ADD
00000946: PUSH1 0x20
00000948: DUP3
00000949: MUL
0000094a: DUP1
0000094b: CALLDATASIZE
0000094c: DUP4
0000094d: CALLDATACOPY
0000094e: ADD
0000094f: SWAP1
00000950: POP
00000951: JUMPDEST
00000952: POP
00000953: SWAP2
00000954: POP
00000955: DUP3
00000956: MLOAD
00000957: PUSH8 0xffffffffffffffff
00000960: DUP2
00000961: GT
00000962: ISZERO
00000963: PUSH2 0x096e
00000966: JUMPI
00000967: PUSH2 0x096e
0000096a: PUSH2 0x0e54
0000096d: JUMP
0000096e: JUMPDEST
0000096f: PUSH1 0x40
00000971: MLOAD
00000972: SWAP1
00000973: DUP1
00000974: DUP3
00000975: MSTORE
00000976: DUP1
00000977: PUSH1 0x20
00000979: MUL
0000097a: PUSH1 0x20
0000097c: ADD
0000097d: DUP3
0000097e: ADD
0000097f: PUSH1 0x40
00000981: MSTORE
00000982: DUP1
00000983: ISZERO
00000984: PUSH2 0x0997
00000987: JUMPI
00000988: DUP2
00000989: PUSH1 0x20
0000098b: ADD
0000098c: PUSH1 0x20
0000098e: DUP3
0000098f: MUL
00000990: DUP1
00000991: CALLDATASIZE
00000992: DUP4
00000993: CALLDATACOPY
00000994: ADD
00000995: SWAP1
00000996: POP
00000997: JUMPDEST
00000998: POP
00000999: SWAP1
0000099a: POP
0000099b: PUSH0
0000099c: JUMPDEST
0000099d: DUP4
0000099e: MLOAD
0000099f: DUP2
000009a0: LT
000009a1: ISZERO
000009a2: PUSH2 0x0ad5
000009a5: JUMPI
000009a6: PUSH0
000009a7: DUP5
000009a8: DUP3
000009a9: DUP2
000009aa: MLOAD
000009ab: DUP2
000009ac: LT
000009ad: PUSH2 0x09b8
000009b0: JUMPI
000009b1: PUSH2 0x09b8
000009b4: PUSH2 0x0fed
000009b7: JUMP
000009b8: JUMPDEST
000009b9: PUSH1 0x20
000009bb: MUL
000009bc: PUSH1 0x20
000009be: ADD
000009bf: ADD
000009c0: MLOAD
000009c1: SWAP1
000009c2: POP
000009c3: DUP1
000009c4: PUSH1 0x01
000009c6: PUSH1 0x01
000009c8: PUSH1 0xa0
000009ca: SHL
000009cb: SUB
000009cc: AND
000009cd: PUSH4 0xfeaf968c
000009d2: PUSH1 0x40
000009d4: MLOAD
000009d5: DUP2
000009d6: PUSH4 0xffffffff
000009db: AND
000009dc: PUSH1 0xe0
000009de: SHL
000009df: DUP2
000009e0: MSTORE
000009e1: PUSH1 0x04
000009e3: ADD
000009e4: PUSH1 0xa0
000009e6: PUSH1 0x40
000009e8: MLOAD
000009e9: DUP1
000009ea: DUP4
000009eb: SUB
000009ec: DUP2
000009ed: DUP7
000009ee: GAS
000009ef: STATICCALL
000009f0: ISZERO
000009f1: DUP1
000009f2: ISZERO
000009f3: PUSH2 0x09fe
000009f6: JUMPI
000009f7: RETURNDATASIZE
000009f8: PUSH0
000009f9: PUSH0
000009fa: RETURNDATACOPY
000009fb: RETURNDATASIZE
000009fc: PUSH0
000009fd: REVERT
000009fe: JUMPDEST
000009ff: POP
00000a00: POP
00000a01: POP
00000a02: POP
00000a03: PUSH1 0x40
00000a05: MLOAD
00000a06: RETURNDATASIZE
00000a07: PUSH1 0x1f
00000a09: NOT
00000a0a: PUSH1 0x1f
00000a0c: DUP3
00000a0d: ADD
00000a0e: AND
00000a0f: DUP3
00000a10: ADD
00000a11: DUP1
00000a12: PUSH1 0x40
00000a14: MSTORE
00000a15: POP
00000a16: DUP2
00000a17: ADD
00000a18: SWAP1
00000a19: PUSH2 0x0a22
00000a1c: SWAP2
00000a1d: SWAP1
00000a1e: PUSH2 0x109a
00000a21: JUMP
00000a22: JUMPDEST
00000a23: POP
00000a24: POP
00000a25: DUP7
00000a26: MLOAD
00000a27: SWAP2
00000a28: SWAP3
00000a29: POP
00000a2a: DUP7
00000a2b: SWAP2
00000a2c: DUP6
00000a2d: SWAP2
00000a2e: POP
00000a2f: DUP2
00000a30: LT
00000a31: PUSH2 0x0a3c
00000a34: JUMPI
00000a35: PUSH2 0x0a3c
00000a38: PUSH2 0x0fed
00000a3b: JUMP
00000a3c: JUMPDEST
00000a3d: PUSH1 0x20
00000a3f: MUL
00000a40: PUSH1 0x20
00000a42: ADD
00000a43: ADD
00000a44: DUP2
00000a45: DUP2
00000a46: MSTORE
00000a47: POP
00000a48: POP
00000a49: DUP1
00000a4a: PUSH1 0x01
00000a4c: PUSH1 0x01
00000a4e: PUSH1 0xa0
00000a50: SHL
00000a51: SUB
00000a52: AND
00000a53: PUSH4 0x313ce567
00000a58: PUSH1 0x40
00000a5a: MLOAD
00000a5b: DUP2
00000a5c: PUSH4 0xffffffff
00000a61: AND
00000a62: PUSH1 0xe0
00000a64: SHL
00000a65: DUP2
00000a66: MSTORE
00000a67: PUSH1 0x04
00000a69: ADD
00000a6a: PUSH1 0x20
00000a6c: PUSH1 0x40
00000a6e: MLOAD
00000a6f: DUP1
00000a70: DUP4
00000a71: SUB
00000a72: DUP2
00000a73: DUP7
00000a74: GAS
00000a75: STATICCALL
00000a76: ISZERO
00000a77: DUP1
00000a78: ISZERO
00000a79: PUSH2 0x0a84
00000a7c: JUMPI
00000a7d: RETURNDATASIZE
00000a7e: PUSH0
00000a7f: PUSH0
00000a80: RETURNDATACOPY
00000a81: RETURNDATASIZE
00000a82: PUSH0
00000a83: REVERT
00000a84: JUMPDEST
00000a85: POP
00000a86: POP
00000a87: POP
00000a88: POP
00000a89: PUSH1 0x40
00000a8b: MLOAD
00000a8c: RETURNDATASIZE
00000a8d: PUSH1 0x1f
00000a8f: NOT
00000a90: PUSH1 0x1f
00000a92: DUP3
00000a93: ADD
00000a94: AND
00000a95: DUP3
00000a96: ADD
00000a97: DUP1
00000a98: PUSH1 0x40
00000a9a: MSTORE
00000a9b: POP
00000a9c: DUP2
00000a9d: ADD
00000a9e: SWAP1
00000a9f: PUSH2 0x0aa8
00000aa2: SWAP2
00000aa3: SWAP1
00000aa4: PUSH2 0x10e8
00000aa7: JUMP
00000aa8: JUMPDEST
00000aa9: DUP4
00000aaa: DUP4
00000aab: DUP2
00000aac: MLOAD
00000aad: DUP2
00000aae: LT
00000aaf: PUSH2 0x0aba
00000ab2: JUMPI
00000ab3: PUSH2 0x0aba
00000ab6: PUSH2 0x0fed
00000ab9: JUMP
00000aba: JUMPDEST
00000abb: PUSH1 0xff
00000abd: SWAP1
00000abe: SWAP3
00000abf: AND
00000ac0: PUSH1 0x20
00000ac2: SWAP3
00000ac3: DUP4
00000ac4: MUL
00000ac5: SWAP2
00000ac6: SWAP1
00000ac7: SWAP2
00000ac8: ADD
00000ac9: SWAP1
00000aca: SWAP2
00000acb: ADD
00000acc: MSTORE
00000acd: POP
00000ace: PUSH1 0x01
00000ad0: ADD
00000ad1: PUSH2 0x099c
00000ad4: JUMP
00000ad5: JUMPDEST
00000ad6: POP
00000ad7: SWAP2
00000ad8: POP
00000ad9: SWAP2
00000ada: JUMP
00000adb: JUMPDEST
00000adc: PUSH0
00000add: SLOAD
00000ade: PUSH1 0x01
00000ae0: PUSH1 0x01
00000ae2: PUSH1 0xa0
00000ae4: SHL
00000ae5: SUB
00000ae6: AND
00000ae7: CALLER
00000ae8: EQ
00000ae9: PUSH2 0x046e
00000aec: JUMPI
00000aed: PUSH1 0x40
00000aef: MLOAD
00000af0: PUSH4 0x118cdaa7
00000af5: PUSH1 0xe0
00000af7: SHL
00000af8: DUP2
00000af9: MSTORE
00000afa: CALLER
00000afb: PUSH1 0x04
00000afd: DUP3
00000afe: ADD
00000aff: MSTORE
00000b00: PUSH1 0x24
00000b02: ADD
00000b03: PUSH2 0x0286
00000b06: JUMP
00000b07: JUMPDEST
00000b08: PUSH0
00000b09: DUP1
00000b0a: SLOAD
00000b0b: PUSH1 0x01
00000b0d: PUSH1 0x01
00000b0f: PUSH1 0xa0
00000b11: SHL
00000b12: SUB
00000b13: DUP4
00000b14: DUP2
00000b15: AND
00000b16: PUSH1 0x01
00000b18: PUSH1 0x01
00000b1a: PUSH1 0xa0
00000b1c: SHL
00000b1d: SUB
00000b1e: NOT
00000b1f: DUP4
00000b20: AND
00000b21: DUP2
00000b22: OR
00000b23: DUP5
00000b24: SSTORE
00000b25: PUSH1 0x40
00000b27: MLOAD
00000b28: SWAP2
00000b29: SWAP1
00000b2a: SWAP3
00000b2b: AND
00000b2c: SWAP3
00000b2d: DUP4
00000b2e: SWAP2
00000b2f: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000b50: SWAP2
00000b51: SWAP1
00000b52: LOG3
00000b53: POP
00000b54: POP
00000b55: JUMP
00000b56: JUMPDEST
00000b57: PUSH1 0x40
00000b59: MLOAD
00000b5a: PUSH4 0x70a08231
00000b5f: PUSH1 0xe0
00000b61: SHL
00000b62: DUP2
00000b63: MSTORE
00000b64: PUSH1 0x01
00000b66: PUSH1 0x01
00000b68: PUSH1 0xa0
00000b6a: SHL
00000b6b: SUB
00000b6c: DUP3
00000b6d: DUP2
00000b6e: AND
00000b6f: PUSH1 0x04
00000b71: DUP4
00000b72: ADD
00000b73: MSTORE
00000b74: PUSH0
00000b75: SWAP2
00000b76: SWAP1
00000b77: DUP5
00000b78: AND
00000b79: SWAP1
00000b7a: PUSH4 0x70a08231
00000b7f: SWAP1
00000b80: PUSH1 0x24
00000b82: ADD
00000b83: PUSH1 0x20
00000b85: PUSH1 0x40
00000b87: MLOAD
00000b88: DUP1
00000b89: DUP4
00000b8a: SUB
00000b8b: DUP2
00000b8c: DUP7
00000b8d: GAS
00000b8e: STATICCALL
00000b8f: ISZERO
00000b90: DUP1
00000b91: ISZERO
00000b92: PUSH2 0x0b9d
00000b95: JUMPI
00000b96: RETURNDATASIZE
00000b97: PUSH0
00000b98: PUSH0
00000b99: RETURNDATACOPY
00000b9a: RETURNDATASIZE
00000b9b: PUSH0
00000b9c: REVERT
00000b9d: JUMPDEST
00000b9e: POP
00000b9f: POP
00000ba0: POP
00000ba1: POP
00000ba2: PUSH1 0x40
00000ba4: MLOAD
00000ba5: RETURNDATASIZE
00000ba6: PUSH1 0x1f
00000ba8: NOT
00000ba9: PUSH1 0x1f
00000bab: DUP3
00000bac: ADD
00000bad: AND
00000bae: DUP3
00000baf: ADD
00000bb0: DUP1
00000bb1: PUSH1 0x40
00000bb3: MSTORE
00000bb4: POP
00000bb5: DUP2
00000bb6: ADD
00000bb7: SWAP1
00000bb8: PUSH2 0x0bc1
00000bbb: SWAP2
00000bbc: SWAP1
00000bbd: PUSH2 0x103c
00000bc0: JUMP
00000bc1: JUMPDEST
00000bc2: SWAP1
00000bc3: POP
00000bc4: JUMPDEST
00000bc5: SWAP3
00000bc6: SWAP2
00000bc7: POP
00000bc8: POP
00000bc9: JUMP
00000bca: JUMPDEST
00000bcb: DUP2
00000bcc: PUSH2 0x0bd5
00000bcf: DUP5
00000bd0: ADDRESS
00000bd1: PUSH2 0x0b56
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: LT
00000bd7: ISZERO
00000bd8: PUSH2 0x0c08
00000bdb: JUMPI
00000bdc: PUSH1 0x40
00000bde: MLOAD
00000bdf: PUSH3 0x461bcd
00000be3: PUSH1 0xe5
00000be5: SHL
00000be6: DUP2
00000be7: MSTORE
00000be8: PUSH1 0x20
00000bea: PUSH1 0x04
00000bec: DUP3
00000bed: ADD
00000bee: MSTORE
00000bef: PUSH1 0x02
00000bf1: PUSH1 0x24
00000bf3: DUP3
00000bf4: ADD
00000bf5: MSTORE
00000bf6: PUSH2 0x24a1
00000bf9: PUSH1 0xf1
00000bfb: SHL
00000bfc: PUSH1 0x44
00000bfe: DUP3
00000bff: ADD
00000c00: MSTORE
00000c01: PUSH1 0x64
00000c03: ADD
00000c04: PUSH2 0x0286
00000c07: JUMP
00000c08: JUMPDEST
00000c09: PUSH2 0x0c1c
00000c0c: PUSH1 0x01
00000c0e: PUSH1 0x01
00000c10: PUSH1 0xa0
00000c12: SHL
00000c13: SUB
00000c14: DUP5
00000c15: AND
00000c16: DUP3
00000c17: DUP5
00000c18: PUSH2 0x0c21
00000c1b: JUMP
00000c1c: JUMPDEST
00000c1d: POP
00000c1e: POP
00000c1f: POP
00000c20: JUMP
00000c21: JUMPDEST
00000c22: PUSH1 0x40
00000c24: DUP1
00000c25: MLOAD
00000c26: PUSH1 0x01
00000c28: PUSH1 0x01
00000c2a: PUSH1 0xa0
00000c2c: SHL
00000c2d: SUB
00000c2e: DUP5
00000c2f: AND
00000c30: PUSH1 0x24
00000c32: DUP3
00000c33: ADD
00000c34: MSTORE
00000c35: PUSH1 0x44
00000c37: DUP1
00000c38: DUP3
00000c39: ADD
00000c3a: DUP5
00000c3b: SWAP1
00000c3c: MSTORE
00000c3d: DUP3
00000c3e: MLOAD
00000c3f: DUP1
00000c40: DUP4
00000c41: SUB
00000c42: SWAP1
00000c43: SWAP2
00000c44: ADD
00000c45: DUP2
00000c46: MSTORE
00000c47: PUSH1 0x64
00000c49: SWAP1
00000c4a: SWAP2
00000c4b: ADD
00000c4c: SWAP1
00000c4d: SWAP2
00000c4e: MSTORE
00000c4f: PUSH1 0x20
00000c51: DUP1
00000c52: DUP3
00000c53: ADD
00000c54: DUP1
00000c55: MLOAD
00000c56: PUSH1 0x01
00000c58: PUSH1 0x01
00000c5a: PUSH1 0xe0
00000c5c: SHL
00000c5d: SUB
00000c5e: AND
00000c5f: PUSH4 0xa9059cbb
00000c64: PUSH1 0xe0
00000c66: SHL
00000c67: OR
00000c68: DUP2
00000c69: MSTORE
00000c6a: DUP3
00000c6b: MLOAD
00000c6c: PUSH2 0x0c1c
00000c6f: SWAP4
00000c70: DUP8
00000c71: SWAP4
00000c72: SWAP1
00000c73: SWAP3
00000c74: PUSH0
00000c75: SWAP3
00000c76: DUP4
00000c77: SWAP3
00000c78: SWAP2
00000c79: DUP4
00000c7a: SWAP2
00000c7b: SWAP1
00000c7c: DUP3
00000c7d: DUP9
00000c7e: GAS
00000c7f: CALL
00000c80: DUP1
00000c81: PUSH2 0x0c8f
00000c84: JUMPI
00000c85: PUSH1 0x40
00000c87: MLOAD
00000c88: RETURNDATASIZE
00000c89: PUSH0
00000c8a: DUP3
00000c8b: RETURNDATACOPY
00000c8c: RETURNDATASIZE
00000c8d: DUP2
00000c8e: REVERT
00000c8f: JUMPDEST
00000c90: POP
00000c91: POP
00000c92: PUSH0
00000c93: MLOAD
00000c94: RETURNDATASIZE
00000c95: SWAP2
00000c96: POP
00000c97: DUP2
00000c98: ISZERO
00000c99: PUSH2 0x0ca6
00000c9c: JUMPI
00000c9d: DUP1
00000c9e: PUSH1 0x01
00000ca0: EQ
00000ca1: ISZERO
00000ca2: PUSH2 0x0cb3
00000ca5: JUMP
00000ca6: JUMPDEST
00000ca7: PUSH1 0x01
00000ca9: PUSH1 0x01
00000cab: PUSH1 0xa0
00000cad: SHL
00000cae: SUB
00000caf: DUP5
00000cb0: AND
00000cb1: EXTCODESIZE
00000cb2: ISZERO
00000cb3: JUMPDEST
00000cb4: ISZERO
00000cb5: PUSH2 0x0cdc
00000cb8: JUMPI
00000cb9: PUSH1 0x40
00000cbb: MLOAD
00000cbc: PUSH4 0x5274afe7
00000cc1: PUSH1 0xe0
00000cc3: SHL
00000cc4: DUP2
00000cc5: MSTORE
00000cc6: PUSH1 0x01
00000cc8: PUSH1 0x01
00000cca: PUSH1 0xa0
00000ccc: SHL
00000ccd: SUB
00000cce: DUP6
00000ccf: AND
00000cd0: PUSH1 0x04
00000cd2: DUP3
00000cd3: ADD
00000cd4: MSTORE
00000cd5: PUSH1 0x24
00000cd7: ADD
00000cd8: PUSH2 0x0286
00000cdb: JUMP
00000cdc: JUMPDEST
00000cdd: POP
00000cde: POP
00000cdf: POP
00000ce0: POP
00000ce1: JUMP
00000ce2: JUMPDEST
00000ce3: PUSH1 0x40
00000ce5: MLOAD
00000ce6: DUP1
00000ce7: PUSH1 0x60
00000ce9: ADD
00000cea: PUSH1 0x40
00000cec: MSTORE
00000ced: DUP1
00000cee: PUSH1 0x03
00000cf0: SWAP1
00000cf1: PUSH1 0x20
00000cf3: DUP3
00000cf4: MUL
00000cf5: DUP1
00000cf6: CALLDATASIZE
00000cf7: DUP4
00000cf8: CALLDATACOPY
00000cf9: POP
00000cfa: SWAP2
00000cfb: SWAP3
00000cfc: SWAP2
00000cfd: POP
00000cfe: POP
00000cff: JUMP
00000d00: JUMPDEST
00000d01: PUSH1 0x20
00000d03: DUP1
00000d04: DUP3
00000d05: MSTORE
00000d06: DUP3
00000d07: MLOAD
00000d08: DUP3
00000d09: DUP3
00000d0a: ADD
00000d0b: DUP2
00000d0c: SWAP1
00000d0d: MSTORE
00000d0e: PUSH0
00000d0f: SWAP2
00000d10: DUP5
00000d11: ADD
00000d12: SWAP1
00000d13: PUSH1 0x40
00000d15: DUP5
00000d16: ADD
00000d17: SWAP1
00000d18: DUP4
00000d19: JUMPDEST
00000d1a: DUP2
00000d1b: DUP2
00000d1c: LT
00000d1d: ISZERO
00000d1e: PUSH2 0x0d40
00000d21: JUMPI
00000d22: DUP4
00000d23: MLOAD
00000d24: PUSH1 0x01
00000d26: PUSH1 0x01
00000d28: PUSH1 0xa0
00000d2a: SHL
00000d2b: SUB
00000d2c: AND
00000d2d: DUP4
00000d2e: MSTORE
00000d2f: PUSH1 0x20
00000d31: SWAP4
00000d32: DUP5
00000d33: ADD
00000d34: SWAP4
00000d35: SWAP1
00000d36: SWAP3
00000d37: ADD
00000d38: SWAP2
00000d39: PUSH1 0x01
00000d3b: ADD
00000d3c: PUSH2 0x0d19
00000d3f: JUMP
00000d40: JUMPDEST
00000d41: POP
00000d42: SWAP1
00000d43: SWAP6
00000d44: SWAP5
00000d45: POP
00000d46: POP
00000d47: POP
00000d48: POP
00000d49: POP
00000d4a: JUMP
00000d4b: JUMPDEST
00000d4c: PUSH1 0x01
00000d4e: PUSH1 0x01
00000d50: PUSH1 0xa0
00000d52: SHL
00000d53: SUB
00000d54: DUP2
00000d55: AND
00000d56: DUP2
00000d57: EQ
00000d58: PUSH2 0x048c
00000d5b: JUMPI
00000d5c: PUSH0
00000d5d: PUSH0
00000d5e: REVERT
00000d5f: JUMPDEST
00000d60: DUP1
00000d61: CALLDATALOAD
00000d62: PUSH2 0x0d6a
00000d65: DUP2
00000d66: PUSH2 0x0d4b
00000d69: JUMP
00000d6a: JUMPDEST
00000d6b: SWAP2
00000d6c: SWAP1
00000d6d: POP
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: PUSH0
00000d71: PUSH1 0x20
00000d73: DUP3
00000d74: DUP5
00000d75: SUB
00000d76: SLT
00000d77: ISZERO
00000d78: PUSH2 0x0d7f
00000d7b: JUMPI
00000d7c: PUSH0
00000d7d: PUSH0
00000d7e: REVERT
00000d7f: JUMPDEST
00000d80: DUP2
00000d81: CALLDATALOAD
00000d82: PUSH2 0x0d8a
00000d85: DUP2
00000d86: PUSH2 0x0d4b
00000d89: JUMP
00000d8a: JUMPDEST
00000d8b: SWAP4
00000d8c: SWAP3
00000d8d: POP
00000d8e: POP
00000d8f: POP
00000d90: JUMP
00000d91: JUMPDEST
00000d92: PUSH0
00000d93: PUSH0
00000d94: PUSH1 0x40
00000d96: DUP4
00000d97: DUP6
00000d98: SUB
00000d99: SLT
00000d9a: ISZERO
00000d9b: PUSH2 0x0da2
00000d9e: JUMPI
00000d9f: PUSH0
00000da0: PUSH0
00000da1: REVERT
00000da2: JUMPDEST
00000da3: DUP3
00000da4: CALLDATALOAD
00000da5: PUSH2 0x0dad
00000da8: DUP2
00000da9: PUSH2 0x0d4b
00000dac: JUMP
00000dad: JUMPDEST
00000dae: SWAP5
00000daf: PUSH1 0x20
00000db1: SWAP4
00000db2: SWAP1
00000db3: SWAP4
00000db4: ADD
00000db5: CALLDATALOAD
00000db6: SWAP4
00000db7: POP
00000db8: POP
00000db9: POP
00000dba: JUMP
00000dbb: JUMPDEST
00000dbc: PUSH0
00000dbd: PUSH0
00000dbe: PUSH0
00000dbf: PUSH1 0x60
00000dc1: DUP5
00000dc2: DUP7
00000dc3: SUB
00000dc4: SLT
00000dc5: ISZERO
00000dc6: PUSH2 0x0dcd
00000dc9: JUMPI
00000dca: PUSH0
00000dcb: PUSH0
00000dcc: REVERT
00000dcd: JUMPDEST
00000dce: DUP4
00000dcf: CALLDATALOAD
00000dd0: PUSH2 0x0dd8
00000dd3: DUP2
00000dd4: PUSH2 0x0d4b
00000dd7: JUMP
00000dd8: JUMPDEST
00000dd9: SWAP6
00000dda: PUSH1 0x20
00000ddc: DUP6
00000ddd: ADD
00000dde: CALLDATALOAD
00000ddf: SWAP6
00000de0: POP
00000de1: PUSH1 0x40
00000de3: SWAP1
00000de4: SWAP5
00000de5: ADD
00000de6: CALLDATALOAD
00000de7: SWAP4
00000de8: SWAP3
00000de9: POP
00000dea: POP
00000deb: POP
00000dec: JUMP
00000ded: JUMPDEST
00000dee: PUSH1 0x20
00000df0: DUP1
00000df1: DUP3
00000df2: MSTORE
00000df3: DUP3
00000df4: MLOAD
00000df5: DUP3
00000df6: DUP3
00000df7: ADD
00000df8: DUP2
00000df9: SWAP1
00000dfa: MSTORE
00000dfb: PUSH0
00000dfc: SWAP2
00000dfd: DUP5
00000dfe: ADD
00000dff: SWAP1
00000e00: PUSH1 0x40
00000e02: DUP5
00000e03: ADD
00000e04: SWAP1
00000e05: DUP4
00000e06: JUMPDEST
00000e07: DUP2
00000e08: DUP2
00000e09: LT
00000e0a: ISZERO
00000e0b: PUSH2 0x0d40
00000e0e: JUMPI
00000e0f: DUP4
00000e10: MLOAD
00000e11: DUP4
00000e12: PUSH0
00000e13: JUMPDEST
00000e14: PUSH1 0x03
00000e16: DUP2
00000e17: LT
00000e18: ISZERO
00000e19: PUSH2 0x0e3b
00000e1c: JUMPI
00000e1d: DUP3
00000e1e: MLOAD
00000e1f: PUSH1 0x01
00000e21: PUSH1 0x01
00000e23: PUSH1 0xa0
00000e25: SHL
00000e26: SUB
00000e27: AND
00000e28: DUP3
00000e29: MSTORE
00000e2a: PUSH1 0x20
00000e2c: SWAP3
00000e2d: DUP4
00000e2e: ADD
00000e2f: SWAP3
00000e30: SWAP1
00000e31: SWAP2
00000e32: ADD
00000e33: SWAP1
00000e34: PUSH1 0x01
00000e36: ADD
00000e37: PUSH2 0x0e13
00000e3a: JUMP
00000e3b: JUMPDEST
00000e3c: POP
00000e3d: POP
00000e3e: POP
00000e3f: PUSH1 0x20
00000e41: SWAP4
00000e42: SWAP1
00000e43: SWAP4
00000e44: ADD
00000e45: SWAP3
00000e46: PUSH1 0x60
00000e48: SWAP3
00000e49: SWAP1
00000e4a: SWAP3
00000e4b: ADD
00000e4c: SWAP2
00000e4d: PUSH1 0x01
00000e4f: ADD
00000e50: PUSH2 0x0e06
00000e53: JUMP
00000e54: JUMPDEST
00000e55: PUSH4 0x4e487b71
00000e5a: PUSH1 0xe0
00000e5c: SHL
00000e5d: PUSH0
00000e5e: MSTORE
00000e5f: PUSH1 0x41
00000e61: PUSH1 0x04
00000e63: MSTORE
00000e64: PUSH1 0x24
00000e66: PUSH0
00000e67: REVERT
00000e68: JUMPDEST
00000e69: PUSH0
00000e6a: PUSH1 0x20
00000e6c: DUP3
00000e6d: DUP5
00000e6e: SUB
00000e6f: SLT
00000e70: ISZERO
00000e71: PUSH2 0x0e78
00000e74: JUMPI
00000e75: PUSH0
00000e76: PUSH0
00000e77: REVERT
00000e78: JUMPDEST
00000e79: DUP2
00000e7a: CALLDATALOAD
00000e7b: PUSH8 0xffffffffffffffff
00000e84: DUP2
00000e85: GT
00000e86: ISZERO
00000e87: PUSH2 0x0e8e
00000e8a: JUMPI
00000e8b: PUSH0
00000e8c: PUSH0
00000e8d: REVERT
00000e8e: JUMPDEST
00000e8f: DUP3
00000e90: ADD
00000e91: PUSH1 0x1f
00000e93: DUP2
00000e94: ADD
00000e95: DUP5
00000e96: SGT
00000e97: PUSH2 0x0e9e
00000e9a: JUMPI
00000e9b: PUSH0
00000e9c: PUSH0
00000e9d: REVERT
00000e9e: JUMPDEST
00000e9f: DUP1
00000ea0: CALLDATALOAD
00000ea1: PUSH8 0xffffffffffffffff
00000eaa: DUP2
00000eab: GT
00000eac: ISZERO
00000ead: PUSH2 0x0eb8
00000eb0: JUMPI
00000eb1: PUSH2 0x0eb8
00000eb4: PUSH2 0x0e54
00000eb7: JUMP
00000eb8: JUMPDEST
00000eb9: DUP1
00000eba: PUSH1 0x05
00000ebc: SHL
00000ebd: PUSH1 0x40
00000ebf: MLOAD
00000ec0: PUSH1 0x1f
00000ec2: NOT
00000ec3: PUSH1 0x3f
00000ec5: DUP4
00000ec6: ADD
00000ec7: AND
00000ec8: DUP2
00000ec9: ADD
00000eca: DUP2
00000ecb: DUP2
00000ecc: LT
00000ecd: PUSH8 0xffffffffffffffff
00000ed6: DUP3
00000ed7: GT
00000ed8: OR
00000ed9: ISZERO
00000eda: PUSH2 0x0ee5
00000edd: JUMPI
00000ede: PUSH2 0x0ee5
00000ee1: PUSH2 0x0e54
00000ee4: JUMP
00000ee5: JUMPDEST
00000ee6: PUSH1 0x40
00000ee8: MSTORE
00000ee9: SWAP2
00000eea: DUP3
00000eeb: MSTORE
00000eec: PUSH1 0x20
00000eee: DUP2
00000eef: DUP5
00000ef0: ADD
00000ef1: DUP2
00000ef2: ADD
00000ef3: SWAP3
00000ef4: SWAP1
00000ef5: DUP2
00000ef6: ADD
00000ef7: DUP8
00000ef8: DUP5
00000ef9: GT
00000efa: ISZERO
00000efb: PUSH2 0x0f02
00000efe: JUMPI
00000eff: PUSH0
00000f00: PUSH0
00000f01: REVERT
00000f02: JUMPDEST
00000f03: PUSH1 0x20
00000f05: DUP6
00000f06: ADD
00000f07: SWAP5
00000f08: POP
00000f09: JUMPDEST
00000f0a: DUP4
00000f0b: DUP6
00000f0c: LT
00000f0d: ISZERO
00000f0e: PUSH2 0x0f28
00000f11: JUMPI
00000f12: PUSH2 0x0f1a
00000f15: DUP6
00000f16: PUSH2 0x0d5f
00000f19: JUMP
00000f1a: JUMPDEST
00000f1b: DUP2
00000f1c: MSTORE
00000f1d: PUSH1 0x20
00000f1f: SWAP5
00000f20: DUP6
00000f21: ADD
00000f22: SWAP5
00000f23: ADD
00000f24: PUSH2 0x0f09
00000f27: JUMP
00000f28: JUMPDEST
00000f29: POP
00000f2a: SWAP7
00000f2b: SWAP6
00000f2c: POP
00000f2d: POP
00000f2e: POP
00000f2f: POP
00000f30: POP
00000f31: POP
00000f32: JUMP
00000f33: JUMPDEST
00000f34: PUSH1 0x20
00000f36: DUP1
00000f37: DUP3
00000f38: MSTORE
00000f39: DUP3
00000f3a: MLOAD
00000f3b: DUP3
00000f3c: DUP3
00000f3d: ADD
00000f3e: DUP2
00000f3f: SWAP1
00000f40: MSTORE
00000f41: PUSH0
00000f42: SWAP2
00000f43: DUP5
00000f44: ADD
00000f45: SWAP1
00000f46: PUSH1 0x40
00000f48: DUP5
00000f49: ADD
00000f4a: SWAP1
00000f4b: DUP4
00000f4c: JUMPDEST
00000f4d: DUP2
00000f4e: DUP2
00000f4f: LT
00000f50: ISZERO
00000f51: PUSH2 0x0d40
00000f54: JUMPI
00000f55: DUP4
00000f56: MLOAD
00000f57: DUP4
00000f58: MSTORE
00000f59: PUSH1 0x20
00000f5b: SWAP4
00000f5c: DUP5
00000f5d: ADD
00000f5e: SWAP4
00000f5f: SWAP1
00000f60: SWAP3
00000f61: ADD
00000f62: SWAP2
00000f63: PUSH1 0x01
00000f65: ADD
00000f66: PUSH2 0x0f4c
00000f69: JUMP
00000f6a: JUMPDEST
00000f6b: PUSH1 0x40
00000f6d: DUP1
00000f6e: DUP3
00000f6f: MSTORE
00000f70: DUP4
00000f71: MLOAD
00000f72: SWAP1
00000f73: DUP3
00000f74: ADD
00000f75: DUP2
00000f76: SWAP1
00000f77: MSTORE
00000f78: PUSH0
00000f79: SWAP1
00000f7a: PUSH1 0x20
00000f7c: DUP6
00000f7d: ADD
00000f7e: SWAP1
00000f7f: PUSH1 0x60
00000f81: DUP5
00000f82: ADD
00000f83: SWAP1
00000f84: DUP4
00000f85: JUMPDEST
00000f86: DUP2
00000f87: DUP2
00000f88: LT
00000f89: ISZERO
00000f8a: PUSH2 0x0fa3
00000f8d: JUMPI
00000f8e: DUP4
00000f8f: MLOAD
00000f90: DUP4
00000f91: MSTORE
00000f92: PUSH1 0x20
00000f94: SWAP4
00000f95: DUP5
00000f96: ADD
00000f97: SWAP4
00000f98: SWAP1
00000f99: SWAP3
00000f9a: ADD
00000f9b: SWAP2
00000f9c: PUSH1 0x01
00000f9e: ADD
00000f9f: PUSH2 0x0f85
00000fa2: JUMP
00000fa3: JUMPDEST
00000fa4: POP
00000fa5: POP
00000fa6: DUP4
00000fa7: DUP2
00000fa8: SUB
00000fa9: PUSH1 0x20
00000fab: DUP1
00000fac: DUP7
00000fad: ADD
00000fae: SWAP2
00000faf: SWAP1
00000fb0: SWAP2
00000fb1: MSTORE
00000fb2: DUP6
00000fb3: MLOAD
00000fb4: DUP1
00000fb5: DUP4
00000fb6: MSTORE
00000fb7: SWAP2
00000fb8: DUP2
00000fb9: ADD
00000fba: SWAP3
00000fbb: POP
00000fbc: DUP6
00000fbd: ADD
00000fbe: SWAP1
00000fbf: PUSH0
00000fc0: JUMPDEST
00000fc1: DUP2
00000fc2: DUP2
00000fc3: LT
00000fc4: ISZERO
00000fc5: PUSH2 0x0fe1
00000fc8: JUMPI
00000fc9: DUP3
00000fca: MLOAD
00000fcb: PUSH1 0xff
00000fcd: AND
00000fce: DUP5
00000fcf: MSTORE
00000fd0: PUSH1 0x20
00000fd2: SWAP4
00000fd3: DUP5
00000fd4: ADD
00000fd5: SWAP4
00000fd6: SWAP1
00000fd7: SWAP3
00000fd8: ADD
00000fd9: SWAP2
00000fda: PUSH1 0x01
00000fdc: ADD
00000fdd: PUSH2 0x0fc0
00000fe0: JUMP
00000fe1: JUMPDEST
00000fe2: POP
00000fe3: SWAP2
00000fe4: SWAP7
00000fe5: SWAP6
00000fe6: POP
00000fe7: POP
00000fe8: POP
00000fe9: POP
00000fea: POP
00000feb: POP
00000fec: JUMP
00000fed: JUMPDEST
00000fee: PUSH4 0x4e487b71
00000ff3: PUSH1 0xe0
00000ff5: SHL
00000ff6: PUSH0
00000ff7: MSTORE
00000ff8: PUSH1 0x32
00000ffa: PUSH1 0x04
00000ffc: MSTORE
00000ffd: PUSH1 0x24
00000fff: PUSH0
00001000: REVERT
00001001: JUMPDEST
00001002: PUSH4 0x4e487b71
00001007: PUSH1 0xe0
00001009: SHL
0000100a: PUSH0
0000100b: MSTORE
0000100c: PUSH1 0x11
0000100e: PUSH1 0x04
00001010: MSTORE
00001011: PUSH1 0x24
00001013: PUSH0
00001014: REVERT
00001015: JUMPDEST
00001016: DUP2
00001017: DUP2
00001018: SUB
00001019: DUP2
0000101a: DUP2
0000101b: GT
0000101c: ISZERO
0000101d: PUSH2 0x0bc4
00001020: JUMPI
00001021: PUSH2 0x0bc4
00001024: PUSH2 0x1001
00001027: JUMP
00001028: JUMPDEST
00001029: PUSH4 0x4e487b71
0000102e: PUSH1 0xe0
00001030: SHL
00001031: PUSH0
00001032: MSTORE
00001033: PUSH1 0x31
00001035: PUSH1 0x04
00001037: MSTORE
00001038: PUSH1 0x24
0000103a: PUSH0
0000103b: REVERT
0000103c: JUMPDEST
0000103d: PUSH0
0000103e: PUSH1 0x20
00001040: DUP3
00001041: DUP5
00001042: SUB
00001043: SLT
00001044: ISZERO
00001045: PUSH2 0x104c
00001048: JUMPI
00001049: PUSH0
0000104a: PUSH0
0000104b: REVERT
0000104c: JUMPDEST
0000104d: POP
0000104e: MLOAD
0000104f: SWAP2
00001050: SWAP1
00001051: POP
00001052: JUMP
00001053: JUMPDEST
00001054: DUP1
00001055: DUP3
00001056: ADD
00001057: DUP1
00001058: DUP3
00001059: GT
0000105a: ISZERO
0000105b: PUSH2 0x0bc4
0000105e: JUMPI
0000105f: PUSH2 0x0bc4
00001062: PUSH2 0x1001
00001065: JUMP
00001066: JUMPDEST
00001067: PUSH0
00001068: PUSH1 0x20
0000106a: DUP3
0000106b: DUP5
0000106c: SUB
0000106d: SLT
0000106e: ISZERO
0000106f: PUSH2 0x1076
00001072: JUMPI
00001073: PUSH0
00001074: PUSH0
00001075: REVERT
00001076: JUMPDEST
00001077: DUP2
00001078: MLOAD
00001079: PUSH2 0x0d8a
0000107c: DUP2
0000107d: PUSH2 0x0d4b
00001080: JUMP
00001081: JUMPDEST
00001082: DUP1
00001083: MLOAD
00001084: PUSH10 0xffffffffffffffffffff
0000108f: DUP2
00001090: AND
00001091: DUP2
00001092: EQ
00001093: PUSH2 0x0d6a
00001096: JUMPI
00001097: PUSH0
00001098: PUSH0
00001099: REVERT
0000109a: JUMPDEST
0000109b: PUSH0
0000109c: PUSH0
0000109d: PUSH0
0000109e: PUSH0
0000109f: PUSH0
000010a0: PUSH1 0xa0
000010a2: DUP7
000010a3: DUP9
000010a4: SUB
000010a5: SLT
000010a6: ISZERO
000010a7: PUSH2 0x10ae
000010aa: JUMPI
000010ab: PUSH0
000010ac: PUSH0
000010ad: REVERT
000010ae: JUMPDEST
000010af: PUSH2 0x10b7
000010b2: DUP7
000010b3: PUSH2 0x1081
000010b6: JUMP
000010b7: JUMPDEST
000010b8: PUSH1 0x20
000010ba: DUP8
000010bb: ADD
000010bc: MLOAD
000010bd: PUSH1 0x40
000010bf: DUP9
000010c0: ADD
000010c1: MLOAD
000010c2: PUSH1 0x60
000010c4: DUP10
000010c5: ADD
000010c6: MLOAD
000010c7: SWAP3
000010c8: SWAP8
000010c9: POP
000010ca: SWAP1
000010cb: SWAP6
000010cc: POP
000010cd: SWAP4
000010ce: POP
000010cf: SWAP2
000010d0: POP
000010d1: PUSH2 0x10dc
000010d4: PUSH1 0x80
000010d6: DUP8
000010d7: ADD
000010d8: PUSH2 0x1081
000010db: JUMP
000010dc: JUMPDEST
000010dd: SWAP1
000010de: POP
000010df: SWAP3
000010e0: SWAP6
000010e1: POP
000010e2: SWAP3
000010e3: SWAP6
000010e4: SWAP1
000010e5: SWAP4
000010e6: POP
000010e7: JUMP
000010e8: JUMPDEST
000010e9: PUSH0
000010ea: PUSH1 0x20
000010ec: DUP3
000010ed: DUP5
000010ee: SUB
000010ef: SLT
000010f0: ISZERO
000010f1: PUSH2 0x10f8
000010f4: JUMPI
000010f5: PUSH0
000010f6: PUSH0
000010f7: REVERT
000010f8: JUMPDEST
000010f9: DUP2
000010fa: MLOAD
000010fb: PUSH1 0xff
000010fd: DUP2
000010fe: AND
000010ff: DUP2
00001100: EQ
00001101: PUSH2 0x0d8a
00001104: JUMPI
00001105: PUSH0
00001106: PUSH0
00001107: REVERT
00001108: INVALID
00001109: LOG2
0000110a: PUSH5 0x6970667358
00001110: UNKNOWN(0x22)
00001111: SLT
00001112: KECCAK256
00001113: UNKNOWN(0xBF)
00001114: CALLDATACOPY
00001115: DUP13
00001116: EQ
00001117: SHL
00001118: UNKNOWN(0x0C)
00001119: PUSH15 0xfa3ec8b5b8aea6ad419126e09636d6
00001129: MSTORE8
0000112a: UNKNOWN(0xD7)
0000112b: UNKNOWN(0xFB)
0000112c: PUSH0
0000112d: LOG0
0000112e: SLT
0000112f: PUSH14 0x5cc87464736f6c634300081e0033

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x91dacffdf280a3199c64bc484b0e85dba8ca32a18bce787b4ae7c3034b8aa2e0
call_targets: 0xc8d0457a22adf3cfae188f447227a1b45ddc45de
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x91dacffdf280a3199c64bc484b0e85dba8ca32a18bce787b4ae7c3034b8aa2e0",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc8d0457a22adf3cfae188f447227a1b45ddc45de"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9e281a98",
            "selector": "0x9e281a98",
            "calldata_variants": [
                "0x9e281a98",
                "0x9e281a980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xab2217e4",
            "selector": "0xab2217e4",
            "calldata_variants": [
                "0xab2217e4",
                "0xab2217e40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8ea7770",
            "selector": "0xe8ea7770",
            "calldata_variants": [
                "0xe8ea7770",
                "0xe8ea77700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf65041e6",
            "selector": "0xf65041e6",
            "calldata_variants": [
                "0xf65041e6",
                "0xf65041e60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0e90b3c9",
            "selector": "0x0e90b3c9",
            "calldata_variants": [
                "0x0e90b3c9",
                "0x0e90b3c90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x24e38dca",
            "selector": "0x24e38dca",
            "calldata_variants": [
                "0x24e38dca",
                "0x24e38dca0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3199,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x91dacffdf280a3199c64bc484b0e85dba8ca32a18bce787b4ae7c3034b8aa2e0
call_targets: 0xc8d0457a22adf3cfae188f447227a1b45ddc45de
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x91dacffdf280a3199c64bc484b0e85dba8ca32a18bce787b4ae7c3034b8aa2e0",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc8d0457a22adf3cfae188f447227a1b45ddc45de"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9e281a98",
            "selector": "0x9e281a98",
            "calldata_variants": [
                "0x9e281a98",
                "0x9e281a980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xab2217e4",
            "selector": "0xab2217e4",
            "calldata_variants": [
                "0xab2217e4",
                "0xab2217e40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8ea7770",
            "selector": "0xe8ea7770",
            "calldata_variants": [
                "0xe8ea7770",
                "0xe8ea77700000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf65041e6",
            "selector": "0xf65041e6",
            "calldata_variants": [
                "0xf65041e6",
                "0xf65041e60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0e90b3c9",
            "selector": "0x0e90b3c9",
            "calldata_variants": [
                "0x0e90b3c9",
                "0x0e90b3c90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x24e38dca",
            "selector": "0x24e38dca",
            "calldata_variants": [
                "0x24e38dca",
                "0x24e38dca0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3199,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}