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

Analysis Run

5c3e2ffa-3778-4581-8e29-4063a9a6bb2a

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 1:55 AM
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
31518 report.consolidate complete 1 / 1 3 months ago
77735 artifact.fetch complete 1 / 3 2 weeks ago
77736 tool.cast_disasm complete 1 / 3 2 weeks ago
77737 analysis.bundle complete 1 / 3 2 weeks ago
77738 capability.graph complete 1 / 3 2 weeks ago
77739 detector.run complete 1 / 3 2 weeks ago
77740 validation.fork complete 1 / 3 2 weeks ago

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, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.
View stderr
[codex:335749] OpenAI Codex v0.77.0 (research preview)
[codex:335749] --------
[codex:335749] workdir: /tmp/codex-multi-raa6nve0
[codex:335749] model: gpt-5.2-codex
[codex:335749] provider: openai
[codex:335749] approval: never
[codex:335749] sandbox: read-only
[codex:335749] reasoning effort: xhigh
[codex:335749] reasoning summaries: auto
[codex:335749] session id: 019b86b0-16cc-7320-82c4-8b4cf407891e
[codex:335749] --------
[codex:335749] user
[codex:335749] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:335749] 
[codex:335749] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:335749] 
[codex:335749] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:335749] - Gas inefficiency, code quality, or best practices
[codex:335749] - Theoretical vulnerabilities without a clear extraction path
[codex:335749] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:335749] - Issues requiring social engineering or off-chain coordination
[codex:335749] 
[codex:335749] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:335749] - CALL/DELEGATECALL with controllable destination or calldata
[codex:335749] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:335749] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:335749] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:335749] - External calls before state updates (reentrancy)
[codex:335749] - SELFDESTRUCT with controllable beneficiary
[codex:335749] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:335749] 
[codex:335749] For each finding, you MUST explain:
[codex:335749] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:335749] 2. The concrete sequence of transactions to extract value
[codex:335749] 3. Why you believe this is exploitable (not just suspicious)
[codex:335749] 
[codex:335749] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:335749] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:335749] 
[codex:335749] Output MUST be valid JSON matching the provided schema.
[codex:335749] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:335749] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:335749] mcp startup: no servers
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Preparing to read instructions and BYTECODE_BUNDLE.txt**
[codex:335749] exec
[codex:335749] /bin/bash -lc ls in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] BYTECODE_BUNDLE.txt
[codex:335749] codex-output-schema.json
[codex:335749] exec
[codex:335749] /bin/bash -lc 'wc -l BYTECODE_BUNDLE.txt' in /tmp/codex-multi-raa6nve0 succeeded in 6ms:
[codex:335749] 5 BYTECODE_BUNDLE.txt
[codex:335749] exec
[codex:335749] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] Runtime bytecode bundle for best-effort auditing.
[codex:335749] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:335749] 
[codex:335749] FILE: runtime_bytecode.hex
[codex:335749] 0x6060604052600436106100cc5763ffffffff60e060020a6000350416630d15fd7781146100ce5780632e6dbdf9146100f35780632e854433146101065780633b97e85614610119578063477990921461012c5780634783c35b146101425780634b60ce77146101715780634fb2e45d146101845780635afb6ba5146101a3578063750142e6146101ed57806381f4be5e1461020057806384bcefd4146102135780638da5cb5b1461022657806396c82e5714610239578063a06842511461024c578063e3bce10e1461025f575b005b34156100d957600080fd5b6100e1610272565b60405190815260200160405180910390f35b34156100fe57600080fd5b6100cc610278565b341561011157600080fd5b6100cc610468565b341561012457600080fd5b6100e16106a7565b341561013757600080fd5b6100cc6004356106ad565b341561014d57600080fd5b61015561095d565b604051600160a060020a03909116815260200160405180910390f35b341561017c57600080fd5b61015561096c565b341561018f57600080fd5b6100cc600160a060020a036004351661097b565b34156101ae57600080fd5b6101c2600160a060020a03600435166109c0565b604051808381526020018260028111156101d857fe5b60ff1681526020019250505060405180910390f35b34156101f857600080fd5b6100e1610a3e565b341561020b57600080fd5b610155610a44565b341561021e57600080fd5b6100e1610a53565b341561023157600080fd5b610155610a59565b341561024457600080fd5b6100e1610a68565b341561025757600080fd5b6100e1610a6e565b341561026a57600080fd5b6100cc610a74565b600a5481565b6102806113ca565b60175460009081908190819060ff161561029957600080fd5b601454600160a060020a031663a620fcc76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102e157600080fd5b6102c65a03f115156102f257600080fd5b5050506040518051600a5414905061030957600080fd5b600c54600160a060020a03301631101561032257600080fd5b610330600c54601854610bdc565b601554600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561038957600080fd5b6102c65a03f1151561039a57600080fd5b50505060405180519050101515156103b157600080fd5b6103b9610c07565b945060075493505b60085484116103ee576103d683600954610d87565b92506103e485858585610da3565b91508293506103c1565b6103f6610f8b565b600d556017805460ff19166001179055600e54600f546010546011547f23ab3fd308ef0e085d61939ed6d3e141f21837614a02ed448da4dce240245344939291906040518085815260200184815260200183815260200182815260200194505050505060405180910390a15050505050565b6017546000908190819060019060ff161515811461048557600080fd5b336001600160a060020a038216600090815260126020526040902060029081015460ff16908111156104b357fe5b146104bd57600080fd5b601754610100900460ff16156104d257600080fd5b6017805461ff001916610100908117909155600160a060020a03331660009081526012602090815260408083208054845260069092529091206001908101549082015491975061052792900460ff1690611118565b9350600092506000600d5411801561053f5750600084115b156105585761055084600d54610d87565b6000600d5593505b600160a060020a03331660009081526012602052604090206002908101805460ff191660018302179055506105988361059386601854610bdc565b610d87565b601554909350600160a060020a031663a9059cbb338560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105fa57600080fd5b6102c65a03f1151561060b57600080fd5b50505060405180519050151561062057600080fd5b600160a060020a03331684156108fc0285604051600060405180830381858888f19350505050151561065157600080fd5b6017805461ff00191690557f5bf2177ec82333d646ddac9ef13ddd7f57260091072d459309fe1a9ee531e2ca3384604051600160a060020a03909216825260208201526040908101905180910390a15050505050565b60165481565b6000806000806000806000806000806000809054906101000a9004600160a060020a0316600160a060020a031633600160a060020a031614156109505760175460009060ff16156106fd57600080fd5b601454600160a060020a031663a620fcc76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561074557600080fd5b6102c65a03f1151561075657600080fd5b5050506040518051965050858c1061076d57600080fd5b600a5486901061077c57600080fd5b6107858c61119c565b939e50919c509a5098509650600160a060020a038b1615156107a657600080fd5b600160a060020a038b16600090815260126020526040812060029081015460ff16908111156107d157fe5b146107db57600080fd5b6009548a8115156107e857fe5b0694506007548a10156107ff576007549350610841565b6008548a1115610813576008549350610841565b8993508415610841576108268a86611250565b93506001548410156108415761083e84600954610d87565b93505b6000848152600660205260409020600181015490935062010000900460ff16151561086b57600080fd5b6108758988611264565b6000858152600660205260409020549092506108919083610d87565b600085815260066020526040902055600b546108ad9083610d87565b600b55600a80546001908101909155600160a060020a038c166000908152601260205260409020858155808201849055600201805460ff1916828002179055507f9ec97c382d56b4d35b4d7057460ea7f57ff800af60a182833c33dc3e9b65726e8b8b86856040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1505b5050505050505050505050565b601354600160a060020a031681565b601554600160a060020a031681565b60005433600160a060020a03908116911614156109bd57600160a060020a038116156109bd5760008054600160a060020a031916600160a060020a0383161790555b50565b60175460009081908190819060019060ff16151581146109df57600080fd5b600160a060020a038616600090815260126020908152604080832080548452600690925290912060019081015490820154919450610a269161010090910460ff1690611118565b600284015490955060ff169350849150505050915091565b600c5481565b601454600160a060020a031681565b60015481565b600054600160a060020a031681565b600b5481565b600d5481565b601354600090600160a060020a03161515610a8e57600080fd5b60135433600160a060020a03908116911614610aa957600080fd5b601554600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b0257600080fd5b6102c65a03f11515610b1357600080fd5b5050506040518051601354909250600160a060020a03908116915030163180156108fc0290604051600060405180830381858888f193505050501515610b5857600080fd5b601554601354600160a060020a039182169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bbe57600080fd5b6102c65a03f11515610bcf57600080fd5b5050506040518051505050565b6000828202610c00841580610bfb5750838583811515610bf857fe5b04145b61134e565b9392505050565b610c0f6113ca565b600080610c1d60025461135a565b60c085015260a0840152600354610c339061135a565b60e085019081526080850191909152610c4f9051600154611250565b9150610c736001546004610c64856005610bdc565b811515610c6d57fe5b04610d87565b610100840152600154610c8d906003610c64856004610bdc565b610120840152600154610ca7906002610c64856003610bdc565b610140840152600154610cbf90610593846002610bdc565b610160840152600154610cd6906080850151611250565b91506004610ce5836005610bdc565b811515610cee57fe5b049050600154811015610d825760015481900360608401526003610d13836004610bdc565b811515610d1c57fe5b049050600154811015610d825760015481900360408401526002610d41836003610bdc565b811515610d4a57fe5b049050600154811015610d82576001548190036020840152610d6d826002610bdc565b9050600154811015610d825760015481900383525b505090565b6000828201610c00848210801590610bfb57508382101561134e565b60008060006001548611158015610dc4575060015485101580610dc4575084155b15610df1575050506000838152600660208190526040909120546011805490910190556001906004610f4f565b8315610e1b5750505060008381526006602081905260408220546011805490910190556004610f4f565b86518610158015610e3157508661016001518611155b15610f4f5786602001518610158015610e4f57508661014001518611155b15610f4a5786604001518610158015610e6d57508661012001518611155b15610f405786606001518610158015610e8b57508661010001518611155b15610f365786608001518610158015610ea857508660e001518611155b15610f12578660a001518610158015610ec557508660c001518611155b15610eee5750506000848152600660208190526040909120546010805490910190556003610f0d565b5050600084815260066020526040902054600f80549091019055600560025b610f31565b5050600084815260066020526040902054600e80549091019055600460015b610f3b565b600391505b610f45565b600291505b610f4f565b600191505b600095865260066020526040909520600101805460ff9687166101000261ff00199790931660ff19909116179590951617909355509092915050565b600080600080600080610fa2601054601154610d87565b6010819055600f54610fb391610d87565b600f819055600e54610fc491610d87565b600e8190551515610fd957600c549550611110565b600c54600a90049450610fed856004610bdc565b9350610ffb84600287610c6d565b9250611009600c5484611250565b91506110158285611250565b91506110218286611250565b915060006011541115611054576011548581151561103b57fe5b0690506011548581151561104b57fe5b04601155611057565b50835b6000601054111561109157611079816010548681151561107357fe5b06610d87565b90506010548481151561108857fe5b0460105561109e565b61109b8185610d87565b90505b6000600f5411156110d2576110ba81600f548581151561107357fe5b9050600f54838115156110c957fe5b04600f556110df565b6110dc8184610d87565b90505b6110e98282610d87565b9150600e54828115156110f857fe5b069050600e548281151561110857fe5b04600e559450845b505050505090565b60008060ff84168190111561113a576111378161059385600e54610bdc565b90505b60018460ff161115611159576111568161059385600f54610bdc565b90505b60028460ff161115611178576111758161059385601054610bdc565b90505b60038460ff161115610c00576111948161059385601154610bdc565b949350505050565b601454600090819081908190819081908190600160a060020a0316639507d39a898360405160e0015260405160e060020a63ffffffff8416028152600481019190915260240160e060405180830381600087803b15156111fb57600080fd5b6102c65a03f1151561120c57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519f969e50929c50939a50919850929650505050505050565b600061125e8383111561134e565b50900390565b6000806000600454841015151561127a57600080fd5b6005546004540184111561128d57600080fd5b60646112a4670de0b6b3a764000087046064610d87565b8115156112ad57fe5b0491506005546112d460966112cf6005546112ca89600454611250565b611250565b610bdc565b8115156112dd57fe5b0490506112ec816103e8610d87565b90506112f88282610bdc565b6103e8900491507ffd3605c3334acd84c29f8601e62dfa6e1c6b3a489b07b4838025f3cf9156045085838360405180848152602001838152602001828152602001935050505060405180910390a1509392505050565b8015156109bd57600080fd5b60008060008061136c6103e886611250565b91506103e861137d60015484610bdc565b81151561138657fe5b049350816113966103e887610bdc565b81151561139f57fe5b0490506103e86113b76001546112cf6103e885610d87565b8115156113c057fe5b0492505050915091565b610180604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600083151561143a57600080fd5b83831161144657600080fd5b81151561145257600080fd5b818481151561145d57fe5b061561146857600080fd5b818381151561147357fe5b061561147e57600080fd5b50600783905560088290556009819055825b8281116114be576000818152600660205260409020600101805462ff00001916620100001790558101611490565b50505050565b600085116114d157600080fd5b6000841180156114e257506103e884105b80156114ee5750838310155b80156114fb57506103e883105b151561150657600080fd5b80821061151257600080fd5b60018590556002849055600383905560048290556115308183611250565b60055550505050505600a165627a7a723058209f3adb5a60a2437607d142f44202cecc3c43906b32a4d078a98cc39d9e116f070029
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Devising bytecode vulnerability detection**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read().split('runtime_bytecode.hex',1)[1]
[codex:335749] # extract 0x... hex string
[codex:335749] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:335749] if not m:
[codex:335749]     print('no hex')
[codex:335749]     raise SystemExit
[codex:335749] hexstr=m.group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] print('len',len(code))
[codex:335749] # EVM opcodes lengths for PUSH1-32
[codex:335749] push_len={i: i-0x5f for i in range(0x60,0x80)}
[codex:335749] # find occurrences of CALL (0xf1), DELEGATECALL (0xf4), SELFDESTRUCT (0xff)
[codex:335749] ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:335749] idx=0
[codex:335749] hits=[]
[codex:335749] while idx < len(code):
[codex:335749]     op=code[idx]
[codex:335749]     if op in ops:
[codex:335749]         hits.append((idx,ops[op]))
[codex:335749]         idx+=1
[codex:335749]         continue
[codex:335749]     if op in push_len:
[codex:335749]         idx+=1+push_len[op]
[codex:335749]         continue
[codex:335749]     idx+=1
[codex:335749] print('op hits', len(hits))
[codex:335749] for h in hits[:50]:
[codex:335749]     print(h)
[codex:335749] print('... last', hits[-5:])
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 27ms:
[codex:335749] len 5478
[codex:335749] op hits 9
[codex:335749] (743, 'CALL')
[codex:335749] (911, 'CALL')
[codex:335749] (1536, 'CALL')
[codex:335749] (1601, 'CALL')
[codex:335749] (1867, 'CALL')
[codex:335749] (2824, 'CALL')
[codex:335749] (2888, 'CALL')
[codex:335749] (3012, 'CALL')
[codex:335749] (4609, 'CALL')
[codex:335749] ... last [(1867, 'CALL'), (2824, 'CALL'), (2888, 'CALL'), (3012, 'CALL'), (4609, 'CALL')]
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing CALL instructions and value transfers**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:335749] hexstr=m.group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # disassemble to list of (offset, op, imm_bytes)
[codex:335749] ops = {0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:335749]        0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:335749]        0x20:'SHA3',
[codex:335749]        0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:335749]        0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:335749]        0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749]        0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749]        0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749]        0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749]        0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749]        0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i += 1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i += 1
[codex:335749] 
[codex:335749] # build map offset -> index
[codex:335749] idx_map={off:idx for idx,(off,_,_) in enumerate(ins)}
[codex:335749] 
[codex:335749] for off,name in [ (off,n) for (off,n,_) in ins if n=='CALL' ]:
[codex:335749]     idx=idx_map[off]
[codex:335749]     start=max(0, idx-20)
[codex:335749]     end=min(len(ins), idx+5)
[codex:335749]     print('--- CALL at', off, '---')
[codex:335749]     for j in range(start,end):
[codex:335749]         o,n,imm=ins[j]
[codex:335749]         if imm:
[codex:335749]             print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]         else:
[codex:335749]             print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] --- CALL at 743 ---
[codex:335749] 02cd: MLOAD
[codex:335749] 02ce: DUP1
[codex:335749] 02cf: DUP4
[codex:335749] 02d0: SUB
[codex:335749] 02d1: DUP2
[codex:335749] 02d2: PUSH1 0x00
[codex:335749] 02d4: DUP8
[codex:335749] 02d5: DUP1
[codex:335749] 02d6: EXTCODESIZE
[codex:335749] 02d7: ISZERO
[codex:335749] 02d8: ISZERO
[codex:335749] 02d9: PUSH2 0x02e1
[codex:335749] 02dc: JUMPI
[codex:335749] 02dd: PUSH1 0x00
[codex:335749] 02df: DUP1
[codex:335749] 02e0: REVERT
[codex:335749] 02e1: JUMPDEST
[codex:335749] 02e2: PUSH2 0x02c6
[codex:335749] 02e5: GAS
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing CALL instruction contexts**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] # function to print range by offset
[codex:335749] 
[codex:335749] def dump(off, before=40, after=20):
[codex:335749]     # find index by offset nearest <=
[codex:335749]     idx=max(i for i,(o,_,_) in enumerate(ins) if o<=off)
[codex:335749]     start=max(0, idx-before)
[codex:335749]     end=min(len(ins), idx+after)
[codex:335749]     for j in range(start,end):
[codex:335749]         o,n,imm=ins[j]
[codex:335749]         mark='*' if o==off else ' '
[codex:335749]         if imm:
[codex:335749]             print(f'{mark}{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]         else:
[codex:335749]             print(f'{mark}{o:04x}: {n}')
[codex:335749] 
[codex:335749] print('around CALL at 0x0641 (1601)')
[codex:335749] dump(0x0641)
[codex:335749] print('\\naround CALL at 0x0b48 (2888)')
[codex:335749] dump(0x0b48)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 30ms:
[codex:335749] around CALL at 0x0641 (1601)
[codex:335749]  060d: POP
[codex:335749]  060e: POP
[codex:335749]  060f: PUSH1 0x40
[codex:335749]  0611: MLOAD
[codex:335749]  0612: DUP1
[codex:335749]  0613: MLOAD
[codex:335749]  0614: SWAP1
[codex:335749]  0615: POP
[codex:335749]  0616: ISZERO
[codex:335749]  0617: ISZERO
[codex:335749]  0618: PUSH2 0x0620
[codex:335749]  061b: JUMPI
[codex:335749]  061c: PUSH1 0x00
[codex:335749]  061e: DUP1
[codex:335749]  061f: REVERT
[codex:335749]  0620: JUMPDEST
[codex:335749]  0621: PUSH1 0x01
[codex:335749]  0623: PUSH1 0xa0
[codex:335749]  0625: PUSH1 0x02
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing contract call and function dispatch**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # simple disassembler for first 300 bytes
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] 
[codex:335749] def disasm(start=0, end=300):
[codex:335749]     i=start
[codex:335749]     while i < end and i < len(code):
[codex:335749]         op=code[i]
[codex:335749]         name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]         if 0x60 <= op <= 0x7f:
[codex:335749]             n=op-0x5f
[codex:335749]             imm=code[i+1:i+1+n]
[codex:335749]             print(f'{i:04x}: {name} 0x{imm.hex()}')
[codex:335749]             i += 1+n
[codex:335749]         else:
[codex:335749]             print(f'{i:04x}: {name}')
[codex:335749]             i += 1
[codex:335749] 
[codex:335749] disasm(0, 400)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] 0000: PUSH1 0x60
[codex:335749] 0002: PUSH1 0x40
[codex:335749] 0004: MSTORE
[codex:335749] 0005: PUSH1 0x04
[codex:335749] 0007: CALLDATASIZE
[codex:335749] 0008: LT
[codex:335749] 0009: PUSH2 0x00cc
[codex:335749] 000c: JUMPI
[codex:335749] 000d: PUSH4 0xffffffff
[codex:335749] 0012: PUSH1 0xe0
[codex:335749] 0014: PUSH1 0x02
[codex:335749] 0016: EXP
[codex:335749] 0017: PUSH1 0x00
[codex:335749] 0019: CALLDATALOAD
[codex:335749] 001a: DIV
[codex:335749] 001b: AND
[codex:335749] 001c: PUSH4 0x0d15fd77
[codex:335749] 0021: DUP2
[codex:335749] 0022: EQ
[codex:335749] 0023: PUSH2 0x00ce
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Mapping function entries and calls**
[codex:335749] 
[codex:335749] I'm analyzing the dispatcher jump destinations and their corresponding selectors to map function entries. I want to disassemble functions containing CALL instructions with value transfers by associating call offsets to their closest preceding function entry, identified from the dispatcher's JUMPDEST addresses. This will help understand where access control might happen. I'll compute which function each CALL belongs to by matching call offsets to function entry points.
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # function entry addresses from dispatcher
[codex:335749] entries=[0x0272,0x0278,0x0468,0x06a7,0x06ad,0x095d,0x096c,0x097b,0x09c0,0x0a3e,0x0a44,0x0a53,0x0a59,0x0a68,0x0a6e,0x0a74]
[codex:335749] entries_sorted=sorted(entries)
[codex:335749] # call offsets found earlier
[codex:335749] call_offsets=[0x02e7,0x038f,0x0600,0x0641,0x074b,0x0b08,0x0b48,0x0bc4,0x1201]
[codex:335749] for off in call_offsets:
[codex:335749]     # find nearest entry <= off
[codex:335749]     entry=max([e for e in entries_sorted if e<=off], default=None)
[codex:335749]     print(f'CALL at {off:04x} in function entry {entry:04x}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 24ms:
[codex:335749] CALL at 02e7 in function entry 0278
[codex:335749] CALL at 038f in function entry 0278
[codex:335749] CALL at 0600 in function entry 0468
[codex:335749] CALL at 0641 in function entry 0468
[codex:335749] CALL at 074b in function entry 06ad
[codex:335749] CALL at 0b08 in function entry 0a74
[codex:335749] CALL at 0b48 in function entry 0a74
[codex:335749] CALL at 0bc4 in function entry 0a74
[codex:335749] CALL at 1201 in function entry 0a74
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing key external functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble from start to end
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i += 1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i += 1
[codex:335749] 
[codex:335749] # function to print from start offset to end offset
[codex:335749] 
[codex:335749] def dump(start, end):
[codex:335749]     for o,n,imm in ins:
[codex:335749]         if o < start: continue
[codex:335749]         if o >= end: break
[codex:335749]         if imm:
[codex:335749]             print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]         else:
[codex:335749]             print(f'{o:04x}: {n}')
[codex:335749] 
[codex:335749] # dump function 0x0468 to 0x06a7
[codex:335749] print('Function 0x0468..0x06a7')
[codex:335749] dump(0x0468, 0x06a7)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 31ms:
[codex:335749] Function 0x0468..0x06a7
[codex:335749] 0468: JUMPDEST
[codex:335749] 0469: PUSH1 0x17
[codex:335749] 046b: SLOAD
[codex:335749] 046c: PUSH1 0x00
[codex:335749] 046e: SWAP1
[codex:335749] 046f: DUP2
[codex:335749] 0470: SWAP1
[codex:335749] 0471: DUP2
[codex:335749] 0472: SWAP1
[codex:335749] 0473: PUSH1 0x01
[codex:335749] 0475: SWAP1
[codex:335749] 0476: PUSH1 0xff
[codex:335749] 0478: AND
[codex:335749] 0479: ISZERO
[codex:335749] 047a: ISZERO
[codex:335749] 047b: DUP2
[codex:335749] 047c: EQ
[codex:335749] 047d: PUSH2 0x0485
[codex:335749] 0480: JUMPI
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing complex token claim function**
[codex:335749] 
[codex:335749] I'm examining a complicated function that manages token transfers to callers, including checks on storage flags, mappings likely for whitelisting or usage, and reentrancy protections. It executes an ERC20 token transfer followed by a CALL that might send ETH to the caller; understanding the CALL's arguments requires careful stack simulation. I’m also considering whether proper access controls exist to prevent unauthorized withdrawals or exploits, and planning to inspect related admin functions for ownership checks.
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] # print from 0x0a74 to end
[codex:335749] start=0x0a74
[codex:335749] end=0x120f
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 35ms:
[codex:335749] 0a74: JUMPDEST
[codex:335749] 0a75: PUSH1 0x13
[codex:335749] 0a77: SLOAD
[codex:335749] 0a78: PUSH1 0x00
[codex:335749] 0a7a: SWAP1
[codex:335749] 0a7b: PUSH1 0x01
[codex:335749] 0a7d: PUSH1 0xa0
[codex:335749] 0a7f: PUSH1 0x02
[codex:335749] 0a81: EXP
[codex:335749] 0a82: SUB
[codex:335749] 0a83: AND
[codex:335749] 0a84: ISZERO
[codex:335749] 0a85: ISZERO
[codex:335749] 0a86: PUSH2 0x0a8e
[codex:335749] 0a89: JUMPI
[codex:335749] 0a8a: PUSH1 0x00
[codex:335749] 0a8c: DUP1
[codex:335749] 0a8d: REVERT
[codex:335749] 0a8e: JUMPDEST
[codex:335749] 0a8f: PUSH1 0x13
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing access control on key functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] # print from 0x0278 to 0x0468
[codex:335749] start=0x0278
[codex:335749] end=0x0468
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 0278: JUMPDEST
[codex:335749] 0279: PUSH2 0x0280
[codex:335749] 027c: PUSH2 0x13ca
[codex:335749] 027f: JUMP
[codex:335749] 0280: JUMPDEST
[codex:335749] 0281: PUSH1 0x17
[codex:335749] 0283: SLOAD
[codex:335749] 0284: PUSH1 0x00
[codex:335749] 0286: SWAP1
[codex:335749] 0287: DUP2
[codex:335749] 0288: SWAP1
[codex:335749] 0289: DUP2
[codex:335749] 028a: SWAP1
[codex:335749] 028b: DUP2
[codex:335749] 028c: SWAP1
[codex:335749] 028d: PUSH1 0xff
[codex:335749] 028f: AND
[codex:335749] 0290: ISZERO
[codex:335749] 0291: PUSH2 0x0299
[codex:335749] 0294: JUMPI
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing token distribution logic**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # same ops
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] start=0x06ad
[codex:335749] end=0x095d
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 27ms:
[codex:335749] 06ad: JUMPDEST
[codex:335749] 06ae: PUSH1 0x00
[codex:335749] 06b0: DUP1
[codex:335749] 06b1: PUSH1 0x00
[codex:335749] 06b3: DUP1
[codex:335749] 06b4: PUSH1 0x00
[codex:335749] 06b6: DUP1
[codex:335749] 06b7: PUSH1 0x00
[codex:335749] 06b9: DUP1
[codex:335749] 06ba: PUSH1 0x00
[codex:335749] 06bc: DUP1
[codex:335749] 06bd: PUSH1 0x00
[codex:335749] 06bf: DUP1
[codex:335749] 06c0: SWAP1
[codex:335749] 06c1: SLOAD
[codex:335749] 06c2: SWAP1
[codex:335749] 06c3: PUSH2 0x0100
[codex:335749] 06c6: EXP
[codex:335749] 06c7: SWAP1
[codex:335749] 06c8: DIV
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing ownership and access control functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # minimal ops map
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i += 1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i += 1
[codex:335749] 
[codex:335749] start=0x095d
[codex:335749] end=0x0a3e
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 33ms:
[codex:335749] 095d: JUMPDEST
[codex:335749] 095e: PUSH1 0x13
[codex:335749] 0960: SLOAD
[codex:335749] 0961: PUSH1 0x01
[codex:335749] 0963: PUSH1 0xa0
[codex:335749] 0965: PUSH1 0x02
[codex:335749] 0967: EXP
[codex:335749] 0968: SUB
[codex:335749] 0969: AND
[codex:335749] 096a: DUP2
[codex:335749] 096b: JUMP
[codex:335749] 096c: JUMPDEST
[codex:335749] 096d: PUSH1 0x15
[codex:335749] 096f: SLOAD
[codex:335749] 0970: PUSH1 0x01
[codex:335749] 0972: PUSH1 0xa0
[codex:335749] 0974: PUSH1 0x02
[codex:335749] 0976: EXP
[codex:335749] 0977: SUB
[codex:335749] 0978: AND
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing owner and claim functions for vulnerabilities**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # disassemble
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] # find SSTORE occurrences and show previous 5 ins
[codex:335749] for idx,(o,n,imm) in enumerate(ins):
[codex:335749]     if n=='SSTORE':
[codex:335749]         print(f'SSTORE at {o:04x}')
[codex:335749]         for j in range(max(0,idx-5), idx+1):
[codex:335749]             oo,nn,ii=ins[j]
[codex:335749]             if ii:
[codex:335749]                 print(f'  {oo:04x}: {nn} 0x{ii.hex()}')
[codex:335749]             else:
[codex:335749]                 print(f'  {oo:04x}: {nn}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 30ms:
[codex:335749] SSTORE at 03f9
[codex:335749]   03ef: PUSH2 0x03f6
[codex:335749]   03f2: PUSH2 0x0f8b
[codex:335749]   03f5: JUMP
[codex:335749]   03f6: JUMPDEST
[codex:335749]   03f7: PUSH1 0x0d
[codex:335749]   03f9: SSTORE
[codex:335749] SSTORE at 0406
[codex:335749]   0400: NOT
[codex:335749]   0401: AND
[codex:335749]   0402: PUSH1 0x01
[codex:335749]   0404: OR
[codex:335749]   0405: SWAP1
[codex:335749]   0406: SSTORE
[codex:335749] SSTORE at 04e4
[codex:335749]   04df: SWAP1
[codex:335749]   04e0: DUP2
[codex:335749]   04e1: OR
[codex:335749]   04e2: SWAP1
[codex:335749]   04e3: SWAP2
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing runtime initialization calls**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # search for push2 0x143a or 0x143a bytes
[codex:335749] pattern=bytes([0x61,0x14,0x3a])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print('push2 0x143a at', [hex(i) for i in indices])
[codex:335749] # search for push2 0x1484 etc
[codex:335749] for val in [0x143a,0x1484,0x1517]:
[codex:335749]     pattern=bytes([0x61,(val>>8)&0xff,val&0xff])
[codex:335749]     indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749]     print(hex(val), indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] push2 0x143a at ['0x1432']
[codex:335749] 0x143a [5170]
[codex:335749] 0x1484 []
[codex:335749] 0x1517 []
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Examining jump destination at 0x143a**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] # disassemble around 0x13ca to 0x1540
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] start=0x13ca
[codex:335749] end=0x1540
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 13ca: JUMPDEST
[codex:335749] 13cb: PUSH2 0x0180
[codex:335749] 13ce: PUSH1 0x40
[codex:335749] 13d0: MLOAD
[codex:335749] 13d1: SWAP1
[codex:335749] 13d2: DUP2
[codex:335749] 13d3: ADD
[codex:335749] 13d4: PUSH1 0x40
[codex:335749] 13d6: MSTORE
[codex:335749] 13d7: DUP1
[codex:335749] 13d8: PUSH1 0x00
[codex:335749] 13da: DUP2
[codex:335749] 13db: MSTORE
[codex:335749] 13dc: PUSH1 0x20
[codex:335749] 13de: ADD
[codex:335749] 13df: PUSH1 0x00
[codex:335749] 13e1: DUP2
[codex:335749] 13e2: MSTORE
[codex:335749] 13e3: PUSH1 0x20
[codex:335749] 13e5: ADD
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Investigating internal function reachability**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] ops={
[codex:335749] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:335749] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:335749] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:335749] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:335749] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:335749] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:335749] 
[codex:335749] ins=[]
[codex:335749] i=0
[codex:335749] while i < len(code):
[codex:335749]     op=code[i]
[codex:335749]     name=ops.get(op,f'UNKNOWN_{op:02x}')
[codex:335749]     if 0x60 <= op <= 0x7f:
[codex:335749]         n=op-0x5f
[codex:335749]         imm=code[i+1:i+1+n]
[codex:335749]         ins.append((i,name,imm))
[codex:335749]         i+=1+n
[codex:335749]     else:
[codex:335749]         ins.append((i,name,b''))
[codex:335749]         i+=1
[codex:335749] 
[codex:335749] start=0x0272
[codex:335749] end=0x0278
[codex:335749] for o,n,imm in ins:
[codex:335749]     if o<start: continue
[codex:335749]     if o>=end: break
[codex:335749]     if imm:
[codex:335749]         print(f'{o:04x}: {n} 0x{imm.hex()}')
[codex:335749]     else:
[codex:335749]         print(f'{o:04x}: {n}')
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 28ms:
[codex:335749] 0272: JUMPDEST
[codex:335749] 0273: PUSH1 0x0a
[codex:335749] 0275: SLOAD
[codex:335749] 0276: DUP2
[codex:335749] 0277: JUMP
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Examining jump destinations for initialization**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] # find push2 0x142c
[codex:335749] pattern=bytes([0x61,0x14,0x2c])
[codex:335749] indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749] print(indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 25ms:
[codex:335749] []
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing unreachable jump destinations**
[codex:335749] exec
[codex:335749] /bin/bash -lc "python - <<'PY'
[codex:335749] from binascii import unhexlify
[codex:335749] import re
[codex:335749] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:335749] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:335749] code=unhexlify(hexstr)
[codex:335749] addrs=[0x142c,0x14c4,0x1512,0x1480,0x1490,0x1506]
[codex:335749] for val in addrs:
[codex:335749]     pattern=bytes([0x61,(val>>8)&0xff,val&0xff])
[codex:335749]     indices=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:335749]     print(hex(val), indices)
[codex:335749] PY" in /tmp/codex-multi-raa6nve0 succeeded in 29ms:
[codex:335749] 0x142c []
[codex:335749] 0x14c4 []
[codex:335749] 0x1512 [5386]
[codex:335749] 0x1480 []
[codex:335749] 0x1490 [5306]
[codex:335749] 0x1506 [5374]
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Analyzing internal contract functions**
[codex:335749] exec
[codex:335749] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-raa6nve0 succeeded in 5ms:
[codex:335749] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:335749] 
[codex:335749] thinking
[codex:335749] **Preparing JSON output with no findings**
[codex:335749] codex
[codex:335749] {"no_findings":true,"summary":"No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.","findings":[]}
[codex:335749] tokens used
[codex:335749] 183,140
[codex:335749] {"no_findings":true,"summary":"No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T01:55:41.662421+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.",
    "raw_final": {
        "summary": "No concrete, exploit-ready value extraction path identified in the provided runtime bytecode; bytecode-only review did not reveal unprotected owner-change/withdraw flows, delegatecall-based upgrade paths, or selfdestruct sinks.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
9
EXT*/BALANCE
9
Total opcodes
3809
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00cc
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH1 0xe0
00000014: PUSH1 0x02
00000016: EXP
00000017: PUSH1 0x00
00000019: CALLDATALOAD
0000001a: DIV
0000001b: AND
0000001c: PUSH4 0x0d15fd77
00000021: DUP2
00000022: EQ
00000023: PUSH2 0x00ce
00000026: JUMPI
00000027: DUP1
00000028: PUSH4 0x2e6dbdf9
0000002d: EQ
0000002e: PUSH2 0x00f3
00000031: JUMPI
00000032: DUP1
00000033: PUSH4 0x2e854433
00000038: EQ
00000039: PUSH2 0x0106
0000003c: JUMPI
0000003d: DUP1
0000003e: PUSH4 0x3b97e856
00000043: EQ
00000044: PUSH2 0x0119
00000047: JUMPI
00000048: DUP1
00000049: PUSH4 0x47799092
0000004e: EQ
0000004f: PUSH2 0x012c
00000052: JUMPI
00000053: DUP1
00000054: PUSH4 0x4783c35b
00000059: EQ
0000005a: PUSH2 0x0142
0000005d: JUMPI
0000005e: DUP1
0000005f: PUSH4 0x4b60ce77
00000064: EQ
00000065: PUSH2 0x0171
00000068: JUMPI
00000069: DUP1
0000006a: PUSH4 0x4fb2e45d
0000006f: EQ
00000070: PUSH2 0x0184
00000073: JUMPI
00000074: DUP1
00000075: PUSH4 0x5afb6ba5
0000007a: EQ
0000007b: PUSH2 0x01a3
0000007e: JUMPI
0000007f: DUP1
00000080: PUSH4 0x750142e6
00000085: EQ
00000086: PUSH2 0x01ed
00000089: JUMPI
0000008a: DUP1
0000008b: PUSH4 0x81f4be5e
00000090: EQ
00000091: PUSH2 0x0200
00000094: JUMPI
00000095: DUP1
00000096: PUSH4 0x84bcefd4
0000009b: EQ
0000009c: PUSH2 0x0213
0000009f: JUMPI
000000a0: DUP1
000000a1: PUSH4 0x8da5cb5b
000000a6: EQ
000000a7: PUSH2 0x0226
000000aa: JUMPI
000000ab: DUP1
000000ac: PUSH4 0x96c82e57
000000b1: EQ
000000b2: PUSH2 0x0239
000000b5: JUMPI
000000b6: DUP1
000000b7: PUSH4 0xa0684251
000000bc: EQ
000000bd: PUSH2 0x024c
000000c0: JUMPI
000000c1: DUP1
000000c2: PUSH4 0xe3bce10e
000000c7: EQ
000000c8: PUSH2 0x025f
000000cb: JUMPI
000000cc: JUMPDEST
000000cd: STOP
000000ce: JUMPDEST
000000cf: CALLVALUE
000000d0: ISZERO
000000d1: PUSH2 0x00d9
000000d4: JUMPI
000000d5: PUSH1 0x00
000000d7: DUP1
000000d8: REVERT
000000d9: JUMPDEST
000000da: PUSH2 0x00e1
000000dd: PUSH2 0x0272
000000e0: JUMP
000000e1: JUMPDEST
000000e2: PUSH1 0x40
000000e4: MLOAD
000000e5: SWAP1
000000e6: DUP2
000000e7: MSTORE
000000e8: PUSH1 0x20
000000ea: ADD
000000eb: PUSH1 0x40
000000ed: MLOAD
000000ee: DUP1
000000ef: SWAP2
000000f0: SUB
000000f1: SWAP1
000000f2: RETURN
000000f3: JUMPDEST
000000f4: CALLVALUE
000000f5: ISZERO
000000f6: PUSH2 0x00fe
000000f9: JUMPI
000000fa: PUSH1 0x00
000000fc: DUP1
000000fd: REVERT
000000fe: JUMPDEST
000000ff: PUSH2 0x00cc
00000102: PUSH2 0x0278
00000105: JUMP
00000106: JUMPDEST
00000107: CALLVALUE
00000108: ISZERO
00000109: PUSH2 0x0111
0000010c: JUMPI
0000010d: PUSH1 0x00
0000010f: DUP1
00000110: REVERT
00000111: JUMPDEST
00000112: PUSH2 0x00cc
00000115: PUSH2 0x0468
00000118: JUMP
00000119: JUMPDEST
0000011a: CALLVALUE
0000011b: ISZERO
0000011c: PUSH2 0x0124
0000011f: JUMPI
00000120: PUSH1 0x00
00000122: DUP1
00000123: REVERT
00000124: JUMPDEST
00000125: PUSH2 0x00e1
00000128: PUSH2 0x06a7
0000012b: JUMP
0000012c: JUMPDEST
0000012d: CALLVALUE
0000012e: ISZERO
0000012f: PUSH2 0x0137
00000132: JUMPI
00000133: PUSH1 0x00
00000135: DUP1
00000136: REVERT
00000137: JUMPDEST
00000138: PUSH2 0x00cc
0000013b: PUSH1 0x04
0000013d: CALLDATALOAD
0000013e: PUSH2 0x06ad
00000141: JUMP
00000142: JUMPDEST
00000143: CALLVALUE
00000144: ISZERO
00000145: PUSH2 0x014d
00000148: JUMPI
00000149: PUSH1 0x00
0000014b: DUP1
0000014c: REVERT
0000014d: JUMPDEST
0000014e: PUSH2 0x0155
00000151: PUSH2 0x095d
00000154: JUMP
00000155: JUMPDEST
00000156: PUSH1 0x40
00000158: MLOAD
00000159: PUSH1 0x01
0000015b: PUSH1 0xa0
0000015d: PUSH1 0x02
0000015f: EXP
00000160: SUB
00000161: SWAP1
00000162: SWAP2
00000163: AND
00000164: DUP2
00000165: MSTORE
00000166: PUSH1 0x20
00000168: ADD
00000169: PUSH1 0x40
0000016b: MLOAD
0000016c: DUP1
0000016d: SWAP2
0000016e: SUB
0000016f: SWAP1
00000170: RETURN
00000171: JUMPDEST
00000172: CALLVALUE
00000173: ISZERO
00000174: PUSH2 0x017c
00000177: JUMPI
00000178: PUSH1 0x00
0000017a: DUP1
0000017b: REVERT
0000017c: JUMPDEST
0000017d: PUSH2 0x0155
00000180: PUSH2 0x096c
00000183: JUMP
00000184: JUMPDEST
00000185: CALLVALUE
00000186: ISZERO
00000187: PUSH2 0x018f
0000018a: JUMPI
0000018b: PUSH1 0x00
0000018d: DUP1
0000018e: REVERT
0000018f: JUMPDEST
00000190: PUSH2 0x00cc
00000193: PUSH1 0x01
00000195: PUSH1 0xa0
00000197: PUSH1 0x02
00000199: EXP
0000019a: SUB
0000019b: PUSH1 0x04
0000019d: CALLDATALOAD
0000019e: AND
0000019f: PUSH2 0x097b
000001a2: JUMP
000001a3: JUMPDEST
000001a4: CALLVALUE
000001a5: ISZERO
000001a6: PUSH2 0x01ae
000001a9: JUMPI
000001aa: PUSH1 0x00
000001ac: DUP1
000001ad: REVERT
000001ae: JUMPDEST
000001af: PUSH2 0x01c2
000001b2: PUSH1 0x01
000001b4: PUSH1 0xa0
000001b6: PUSH1 0x02
000001b8: EXP
000001b9: SUB
000001ba: PUSH1 0x04
000001bc: CALLDATALOAD
000001bd: AND
000001be: PUSH2 0x09c0
000001c1: JUMP
000001c2: JUMPDEST
000001c3: PUSH1 0x40
000001c5: MLOAD
000001c6: DUP1
000001c7: DUP4
000001c8: DUP2
000001c9: MSTORE
000001ca: PUSH1 0x20
000001cc: ADD
000001cd: DUP3
000001ce: PUSH1 0x02
000001d0: DUP2
000001d1: GT
000001d2: ISZERO
000001d3: PUSH2 0x01d8
000001d6: JUMPI
000001d7: INVALID
000001d8: JUMPDEST
000001d9: PUSH1 0xff
000001db: AND
000001dc: DUP2
000001dd: MSTORE
000001de: PUSH1 0x20
000001e0: ADD
000001e1: SWAP3
000001e2: POP
000001e3: POP
000001e4: POP
000001e5: PUSH1 0x40
000001e7: MLOAD
000001e8: DUP1
000001e9: SWAP2
000001ea: SUB
000001eb: SWAP1
000001ec: RETURN
000001ed: JUMPDEST
000001ee: CALLVALUE
000001ef: ISZERO
000001f0: PUSH2 0x01f8
000001f3: JUMPI
000001f4: PUSH1 0x00
000001f6: DUP1
000001f7: REVERT
000001f8: JUMPDEST
000001f9: PUSH2 0x00e1
000001fc: PUSH2 0x0a3e
000001ff: JUMP
00000200: JUMPDEST
00000201: CALLVALUE
00000202: ISZERO
00000203: PUSH2 0x020b
00000206: JUMPI
00000207: PUSH1 0x00
00000209: DUP1
0000020a: REVERT
0000020b: JUMPDEST
0000020c: PUSH2 0x0155
0000020f: PUSH2 0x0a44
00000212: JUMP
00000213: JUMPDEST
00000214: CALLVALUE
00000215: ISZERO
00000216: PUSH2 0x021e
00000219: JUMPI
0000021a: PUSH1 0x00
0000021c: DUP1
0000021d: REVERT
0000021e: JUMPDEST
0000021f: PUSH2 0x00e1
00000222: PUSH2 0x0a53
00000225: JUMP
00000226: JUMPDEST
00000227: CALLVALUE
00000228: ISZERO
00000229: PUSH2 0x0231
0000022c: JUMPI
0000022d: PUSH1 0x00
0000022f: DUP1
00000230: REVERT
00000231: JUMPDEST
00000232: PUSH2 0x0155
00000235: PUSH2 0x0a59
00000238: JUMP
00000239: JUMPDEST
0000023a: CALLVALUE
0000023b: ISZERO
0000023c: PUSH2 0x0244
0000023f: JUMPI
00000240: PUSH1 0x00
00000242: DUP1
00000243: REVERT
00000244: JUMPDEST
00000245: PUSH2 0x00e1
00000248: PUSH2 0x0a68
0000024b: JUMP
0000024c: JUMPDEST
0000024d: CALLVALUE
0000024e: ISZERO
0000024f: PUSH2 0x0257
00000252: JUMPI
00000253: PUSH1 0x00
00000255: DUP1
00000256: REVERT
00000257: JUMPDEST
00000258: PUSH2 0x00e1
0000025b: PUSH2 0x0a6e
0000025e: JUMP
0000025f: JUMPDEST
00000260: CALLVALUE
00000261: ISZERO
00000262: PUSH2 0x026a
00000265: JUMPI
00000266: PUSH1 0x00
00000268: DUP1
00000269: REVERT
0000026a: JUMPDEST
0000026b: PUSH2 0x00cc
0000026e: PUSH2 0x0a74
00000271: JUMP
00000272: JUMPDEST
00000273: PUSH1 0x0a
00000275: SLOAD
00000276: DUP2
00000277: JUMP
00000278: JUMPDEST
00000279: PUSH2 0x0280
0000027c: PUSH2 0x13ca
0000027f: JUMP
00000280: JUMPDEST
00000281: PUSH1 0x17
00000283: SLOAD
00000284: PUSH1 0x00
00000286: SWAP1
00000287: DUP2
00000288: SWAP1
00000289: DUP2
0000028a: SWAP1
0000028b: DUP2
0000028c: SWAP1
0000028d: PUSH1 0xff
0000028f: AND
00000290: ISZERO
00000291: PUSH2 0x0299
00000294: JUMPI
00000295: PUSH1 0x00
00000297: DUP1
00000298: REVERT
00000299: JUMPDEST
0000029a: PUSH1 0x14
0000029c: SLOAD
0000029d: PUSH1 0x01
0000029f: PUSH1 0xa0
000002a1: PUSH1 0x02
000002a3: EXP
000002a4: SUB
000002a5: AND
000002a6: PUSH4 0xa620fcc7
000002ab: PUSH1 0x00
000002ad: PUSH1 0x40
000002af: MLOAD
000002b0: PUSH1 0x20
000002b2: ADD
000002b3: MSTORE
000002b4: PUSH1 0x40
000002b6: MLOAD
000002b7: DUP2
000002b8: PUSH4 0xffffffff
000002bd: AND
000002be: PUSH1 0xe0
000002c0: PUSH1 0x02
000002c2: EXP
000002c3: MUL
000002c4: DUP2
000002c5: MSTORE
000002c6: PUSH1 0x04
000002c8: ADD
000002c9: PUSH1 0x20
000002cb: PUSH1 0x40
000002cd: MLOAD
000002ce: DUP1
000002cf: DUP4
000002d0: SUB
000002d1: DUP2
000002d2: PUSH1 0x00
000002d4: DUP8
000002d5: DUP1
000002d6: EXTCODESIZE
000002d7: ISZERO
000002d8: ISZERO
000002d9: PUSH2 0x02e1
000002dc: JUMPI
000002dd: PUSH1 0x00
000002df: DUP1
000002e0: REVERT
000002e1: JUMPDEST
000002e2: PUSH2 0x02c6
000002e5: GAS
000002e6: SUB
000002e7: CALL
000002e8: ISZERO
000002e9: ISZERO
000002ea: PUSH2 0x02f2
000002ed: JUMPI
000002ee: PUSH1 0x00
000002f0: DUP1
000002f1: REVERT
000002f2: JUMPDEST
000002f3: POP
000002f4: POP
000002f5: POP
000002f6: PUSH1 0x40
000002f8: MLOAD
000002f9: DUP1
000002fa: MLOAD
000002fb: PUSH1 0x0a
000002fd: SLOAD
000002fe: EQ
000002ff: SWAP1
00000300: POP
00000301: PUSH2 0x0309
00000304: JUMPI
00000305: PUSH1 0x00
00000307: DUP1
00000308: REVERT
00000309: JUMPDEST
0000030a: PUSH1 0x0c
0000030c: SLOAD
0000030d: PUSH1 0x01
0000030f: PUSH1 0xa0
00000311: PUSH1 0x02
00000313: EXP
00000314: SUB
00000315: ADDRESS
00000316: AND
00000317: BALANCE
00000318: LT
00000319: ISZERO
0000031a: PUSH2 0x0322
0000031d: JUMPI
0000031e: PUSH1 0x00
00000320: DUP1
00000321: REVERT
00000322: JUMPDEST
00000323: PUSH2 0x0330
00000326: PUSH1 0x0c
00000328: SLOAD
00000329: PUSH1 0x18
0000032b: SLOAD
0000032c: PUSH2 0x0bdc
0000032f: JUMP
00000330: JUMPDEST
00000331: PUSH1 0x15
00000333: SLOAD
00000334: PUSH1 0x01
00000336: PUSH1 0xa0
00000338: PUSH1 0x02
0000033a: EXP
0000033b: SUB
0000033c: AND
0000033d: PUSH4 0x70a08231
00000342: ADDRESS
00000343: PUSH1 0x00
00000345: PUSH1 0x40
00000347: MLOAD
00000348: PUSH1 0x20
0000034a: ADD
0000034b: MSTORE
0000034c: PUSH1 0x40
0000034e: MLOAD
0000034f: PUSH1 0xe0
00000351: PUSH1 0x02
00000353: EXP
00000354: PUSH4 0xffffffff
00000359: DUP5
0000035a: AND
0000035b: MUL
0000035c: DUP2
0000035d: MSTORE
0000035e: PUSH1 0x01
00000360: PUSH1 0xa0
00000362: PUSH1 0x02
00000364: EXP
00000365: SUB
00000366: SWAP1
00000367: SWAP2
00000368: AND
00000369: PUSH1 0x04
0000036b: DUP3
0000036c: ADD
0000036d: MSTORE
0000036e: PUSH1 0x24
00000370: ADD
00000371: PUSH1 0x20
00000373: PUSH1 0x40
00000375: MLOAD
00000376: DUP1
00000377: DUP4
00000378: SUB
00000379: DUP2
0000037a: PUSH1 0x00
0000037c: DUP8
0000037d: DUP1
0000037e: EXTCODESIZE
0000037f: ISZERO
00000380: ISZERO
00000381: PUSH2 0x0389
00000384: JUMPI
00000385: PUSH1 0x00
00000387: DUP1
00000388: REVERT
00000389: JUMPDEST
0000038a: PUSH2 0x02c6
0000038d: GAS
0000038e: SUB
0000038f: CALL
00000390: ISZERO
00000391: ISZERO
00000392: PUSH2 0x039a
00000395: JUMPI
00000396: PUSH1 0x00
00000398: DUP1
00000399: REVERT
0000039a: JUMPDEST
0000039b: POP
0000039c: POP
0000039d: POP
0000039e: PUSH1 0x40
000003a0: MLOAD
000003a1: DUP1
000003a2: MLOAD
000003a3: SWAP1
000003a4: POP
000003a5: LT
000003a6: ISZERO
000003a7: ISZERO
000003a8: ISZERO
000003a9: PUSH2 0x03b1
000003ac: JUMPI
000003ad: PUSH1 0x00
000003af: DUP1
000003b0: REVERT
000003b1: JUMPDEST
000003b2: PUSH2 0x03b9
000003b5: PUSH2 0x0c07
000003b8: JUMP
000003b9: JUMPDEST
000003ba: SWAP5
000003bb: POP
000003bc: PUSH1 0x07
000003be: SLOAD
000003bf: SWAP4
000003c0: POP
000003c1: JUMPDEST
000003c2: PUSH1 0x08
000003c4: SLOAD
000003c5: DUP5
000003c6: GT
000003c7: PUSH2 0x03ee
000003ca: JUMPI
000003cb: PUSH2 0x03d6
000003ce: DUP4
000003cf: PUSH1 0x09
000003d1: SLOAD
000003d2: PUSH2 0x0d87
000003d5: JUMP
000003d6: JUMPDEST
000003d7: SWAP3
000003d8: POP
000003d9: PUSH2 0x03e4
000003dc: DUP6
000003dd: DUP6
000003de: DUP6
000003df: DUP6
000003e0: PUSH2 0x0da3
000003e3: JUMP
000003e4: JUMPDEST
000003e5: SWAP2
000003e6: POP
000003e7: DUP3
000003e8: SWAP4
000003e9: POP
000003ea: PUSH2 0x03c1
000003ed: JUMP
000003ee: JUMPDEST
000003ef: PUSH2 0x03f6
000003f2: PUSH2 0x0f8b
000003f5: JUMP
000003f6: JUMPDEST
000003f7: PUSH1 0x0d
000003f9: SSTORE
000003fa: PUSH1 0x17
000003fc: DUP1
000003fd: SLOAD
000003fe: PUSH1 0xff
00000400: NOT
00000401: AND
00000402: PUSH1 0x01
00000404: OR
00000405: SWAP1
00000406: SSTORE
00000407: PUSH1 0x0e
00000409: SLOAD
0000040a: PUSH1 0x0f
0000040c: SLOAD
0000040d: PUSH1 0x10
0000040f: SLOAD
00000410: PUSH1 0x11
00000412: SLOAD
00000413: PUSH32 0x23ab3fd308ef0e085d61939ed6d3e141f21837614a02ed448da4dce240245344
00000434: SWAP4
00000435: SWAP3
00000436: SWAP2
00000437: SWAP1
00000438: PUSH1 0x40
0000043a: MLOAD
0000043b: DUP1
0000043c: DUP6
0000043d: DUP2
0000043e: MSTORE
0000043f: PUSH1 0x20
00000441: ADD
00000442: DUP5
00000443: DUP2
00000444: MSTORE
00000445: PUSH1 0x20
00000447: ADD
00000448: DUP4
00000449: DUP2
0000044a: MSTORE
0000044b: PUSH1 0x20
0000044d: ADD
0000044e: DUP3
0000044f: DUP2
00000450: MSTORE
00000451: PUSH1 0x20
00000453: ADD
00000454: SWAP5
00000455: POP
00000456: POP
00000457: POP
00000458: POP
00000459: POP
0000045a: PUSH1 0x40
0000045c: MLOAD
0000045d: DUP1
0000045e: SWAP2
0000045f: SUB
00000460: SWAP1
00000461: LOG1
00000462: POP
00000463: POP
00000464: POP
00000465: POP
00000466: POP
00000467: JUMP
00000468: JUMPDEST
00000469: PUSH1 0x17
0000046b: SLOAD
0000046c: PUSH1 0x00
0000046e: SWAP1
0000046f: DUP2
00000470: SWAP1
00000471: DUP2
00000472: SWAP1
00000473: PUSH1 0x01
00000475: SWAP1
00000476: PUSH1 0xff
00000478: AND
00000479: ISZERO
0000047a: ISZERO
0000047b: DUP2
0000047c: EQ
0000047d: PUSH2 0x0485
00000480: JUMPI
00000481: PUSH1 0x00
00000483: DUP1
00000484: REVERT
00000485: JUMPDEST
00000486: CALLER
00000487: PUSH1 0x01
00000489: PUSH1 0x01
0000048b: PUSH1 0xa0
0000048d: PUSH1 0x02
0000048f: EXP
00000490: SUB
00000491: DUP3
00000492: AND
00000493: PUSH1 0x00
00000495: SWAP1
00000496: DUP2
00000497: MSTORE
00000498: PUSH1 0x12
0000049a: PUSH1 0x20
0000049c: MSTORE
0000049d: PUSH1 0x40
0000049f: SWAP1
000004a0: KECCAK256
000004a1: PUSH1 0x02
000004a3: SWAP1
000004a4: DUP2
000004a5: ADD
000004a6: SLOAD
000004a7: PUSH1 0xff
000004a9: AND
000004aa: SWAP1
000004ab: DUP2
000004ac: GT
000004ad: ISZERO
000004ae: PUSH2 0x04b3
000004b1: JUMPI
000004b2: INVALID
000004b3: JUMPDEST
000004b4: EQ
000004b5: PUSH2 0x04bd
000004b8: JUMPI
000004b9: PUSH1 0x00
000004bb: DUP1
000004bc: REVERT
000004bd: JUMPDEST
000004be: PUSH1 0x17
000004c0: SLOAD
000004c1: PUSH2 0x0100
000004c4: SWAP1
000004c5: DIV
000004c6: PUSH1 0xff
000004c8: AND
000004c9: ISZERO
000004ca: PUSH2 0x04d2
000004cd: JUMPI
000004ce: PUSH1 0x00
000004d0: DUP1
000004d1: REVERT
000004d2: JUMPDEST
000004d3: PUSH1 0x17
000004d5: DUP1
000004d6: SLOAD
000004d7: PUSH2 0xff00
000004da: NOT
000004db: AND
000004dc: PUSH2 0x0100
000004df: SWAP1
000004e0: DUP2
000004e1: OR
000004e2: SWAP1
000004e3: SWAP2
000004e4: SSTORE
000004e5: PUSH1 0x01
000004e7: PUSH1 0xa0
000004e9: PUSH1 0x02
000004eb: EXP
000004ec: SUB
000004ed: CALLER
000004ee: AND
000004ef: PUSH1 0x00
000004f1: SWAP1
000004f2: DUP2
000004f3: MSTORE
000004f4: PUSH1 0x12
000004f6: PUSH1 0x20
000004f8: SWAP1
000004f9: DUP2
000004fa: MSTORE
000004fb: PUSH1 0x40
000004fd: DUP1
000004fe: DUP4
000004ff: KECCAK256
00000500: DUP1
00000501: SLOAD
00000502: DUP5
00000503: MSTORE
00000504: PUSH1 0x06
00000506: SWAP1
00000507: SWAP3
00000508: MSTORE
00000509: SWAP1
0000050a: SWAP2
0000050b: KECCAK256
0000050c: PUSH1 0x01
0000050e: SWAP1
0000050f: DUP2
00000510: ADD
00000511: SLOAD
00000512: SWAP1
00000513: DUP3
00000514: ADD
00000515: SLOAD
00000516: SWAP2
00000517: SWAP8
00000518: POP
00000519: PUSH2 0x0527
0000051c: SWAP3
0000051d: SWAP1
0000051e: DIV
0000051f: PUSH1 0xff
00000521: AND
00000522: SWAP1
00000523: PUSH2 0x1118
00000526: JUMP
00000527: JUMPDEST
00000528: SWAP4
00000529: POP
0000052a: PUSH1 0x00
0000052c: SWAP3
0000052d: POP
0000052e: PUSH1 0x00
00000530: PUSH1 0x0d
00000532: SLOAD
00000533: GT
00000534: DUP1
00000535: ISZERO
00000536: PUSH2 0x053f
00000539: JUMPI
0000053a: POP
0000053b: PUSH1 0x00
0000053d: DUP5
0000053e: GT
0000053f: JUMPDEST
00000540: ISZERO
00000541: PUSH2 0x0558
00000544: JUMPI
00000545: PUSH2 0x0550
00000548: DUP5
00000549: PUSH1 0x0d
0000054b: SLOAD
0000054c: PUSH2 0x0d87
0000054f: JUMP
00000550: JUMPDEST
00000551: PUSH1 0x00
00000553: PUSH1 0x0d
00000555: SSTORE
00000556: SWAP4
00000557: POP
00000558: JUMPDEST
00000559: PUSH1 0x01
0000055b: PUSH1 0xa0
0000055d: PUSH1 0x02
0000055f: EXP
00000560: SUB
00000561: CALLER
00000562: AND
00000563: PUSH1 0x00
00000565: SWAP1
00000566: DUP2
00000567: MSTORE
00000568: PUSH1 0x12
0000056a: PUSH1 0x20
0000056c: MSTORE
0000056d: PUSH1 0x40
0000056f: SWAP1
00000570: KECCAK256
00000571: PUSH1 0x02
00000573: SWAP1
00000574: DUP2
00000575: ADD
00000576: DUP1
00000577: SLOAD
00000578: PUSH1 0xff
0000057a: NOT
0000057b: AND
0000057c: PUSH1 0x01
0000057e: DUP4
0000057f: MUL
00000580: OR
00000581: SWAP1
00000582: SSTORE
00000583: POP
00000584: PUSH2 0x0598
00000587: DUP4
00000588: PUSH2 0x0593
0000058b: DUP7
0000058c: PUSH1 0x18
0000058e: SLOAD
0000058f: PUSH2 0x0bdc
00000592: JUMP
00000593: JUMPDEST
00000594: PUSH2 0x0d87
00000597: JUMP
00000598: JUMPDEST
00000599: PUSH1 0x15
0000059b: SLOAD
0000059c: SWAP1
0000059d: SWAP4
0000059e: POP
0000059f: PUSH1 0x01
000005a1: PUSH1 0xa0
000005a3: PUSH1 0x02
000005a5: EXP
000005a6: SUB
000005a7: AND
000005a8: PUSH4 0xa9059cbb
000005ad: CALLER
000005ae: DUP6
000005af: PUSH1 0x00
000005b1: PUSH1 0x40
000005b3: MLOAD
000005b4: PUSH1 0x20
000005b6: ADD
000005b7: MSTORE
000005b8: PUSH1 0x40
000005ba: MLOAD
000005bb: PUSH1 0xe0
000005bd: PUSH1 0x02
000005bf: EXP
000005c0: PUSH4 0xffffffff
000005c5: DUP6
000005c6: AND
000005c7: MUL
000005c8: DUP2
000005c9: MSTORE
000005ca: PUSH1 0x01
000005cc: PUSH1 0xa0
000005ce: PUSH1 0x02
000005d0: EXP
000005d1: SUB
000005d2: SWAP1
000005d3: SWAP3
000005d4: AND
000005d5: PUSH1 0x04
000005d7: DUP4
000005d8: ADD
000005d9: MSTORE
000005da: PUSH1 0x24
000005dc: DUP3
000005dd: ADD
000005de: MSTORE
000005df: PUSH1 0x44
000005e1: ADD
000005e2: PUSH1 0x20
000005e4: PUSH1 0x40
000005e6: MLOAD
000005e7: DUP1
000005e8: DUP4
000005e9: SUB
000005ea: DUP2
000005eb: PUSH1 0x00
000005ed: DUP8
000005ee: DUP1
000005ef: EXTCODESIZE
000005f0: ISZERO
000005f1: ISZERO
000005f2: PUSH2 0x05fa
000005f5: JUMPI
000005f6: PUSH1 0x00
000005f8: DUP1
000005f9: REVERT
000005fa: JUMPDEST
000005fb: PUSH2 0x02c6
000005fe: GAS
000005ff: SUB
00000600: CALL
00000601: ISZERO
00000602: ISZERO
00000603: PUSH2 0x060b
00000606: JUMPI
00000607: PUSH1 0x00
00000609: DUP1
0000060a: REVERT
0000060b: JUMPDEST
0000060c: POP
0000060d: POP
0000060e: POP
0000060f: PUSH1 0x40
00000611: MLOAD
00000612: DUP1
00000613: MLOAD
00000614: SWAP1
00000615: POP
00000616: ISZERO
00000617: ISZERO
00000618: PUSH2 0x0620
0000061b: JUMPI
0000061c: PUSH1 0x00
0000061e: DUP1
0000061f: REVERT
00000620: JUMPDEST
00000621: PUSH1 0x01
00000623: PUSH1 0xa0
00000625: PUSH1 0x02
00000627: EXP
00000628: SUB
00000629: CALLER
0000062a: AND
0000062b: DUP5
0000062c: ISZERO
0000062d: PUSH2 0x08fc
00000630: MUL
00000631: DUP6
00000632: PUSH1 0x40
00000634: MLOAD
00000635: PUSH1 0x00
00000637: PUSH1 0x40
00000639: MLOAD
0000063a: DUP1
0000063b: DUP4
0000063c: SUB
0000063d: DUP2
0000063e: DUP6
0000063f: DUP9
00000640: DUP9
00000641: CALL
00000642: SWAP4
00000643: POP
00000644: POP
00000645: POP
00000646: POP
00000647: ISZERO
00000648: ISZERO
00000649: PUSH2 0x0651
0000064c: JUMPI
0000064d: PUSH1 0x00
0000064f: DUP1
00000650: REVERT
00000651: JUMPDEST
00000652: PUSH1 0x17
00000654: DUP1
00000655: SLOAD
00000656: PUSH2 0xff00
00000659: NOT
0000065a: AND
0000065b: SWAP1
0000065c: SSTORE
0000065d: PUSH32 0x5bf2177ec82333d646ddac9ef13ddd7f57260091072d459309fe1a9ee531e2ca
0000067e: CALLER
0000067f: DUP5
00000680: PUSH1 0x40
00000682: MLOAD
00000683: PUSH1 0x01
00000685: PUSH1 0xa0
00000687: PUSH1 0x02
00000689: EXP
0000068a: SUB
0000068b: SWAP1
0000068c: SWAP3
0000068d: AND
0000068e: DUP3
0000068f: MSTORE
00000690: PUSH1 0x20
00000692: DUP3
00000693: ADD
00000694: MSTORE
00000695: PUSH1 0x40
00000697: SWAP1
00000698: DUP2
00000699: ADD
0000069a: SWAP1
0000069b: MLOAD
0000069c: DUP1
0000069d: SWAP2
0000069e: SUB
0000069f: SWAP1
000006a0: LOG1
000006a1: POP
000006a2: POP
000006a3: POP
000006a4: POP
000006a5: POP
000006a6: JUMP
000006a7: JUMPDEST
000006a8: PUSH1 0x16
000006aa: SLOAD
000006ab: DUP2
000006ac: JUMP
000006ad: JUMPDEST
000006ae: PUSH1 0x00
000006b0: DUP1
000006b1: PUSH1 0x00
000006b3: DUP1
000006b4: PUSH1 0x00
000006b6: DUP1
000006b7: PUSH1 0x00
000006b9: DUP1
000006ba: PUSH1 0x00
000006bc: DUP1
000006bd: PUSH1 0x00
000006bf: DUP1
000006c0: SWAP1
000006c1: SLOAD
000006c2: SWAP1
000006c3: PUSH2 0x0100
000006c6: EXP
000006c7: SWAP1
000006c8: DIV
000006c9: PUSH1 0x01
000006cb: PUSH1 0xa0
000006cd: PUSH1 0x02
000006cf: EXP
000006d0: SUB
000006d1: AND
000006d2: PUSH1 0x01
000006d4: PUSH1 0xa0
000006d6: PUSH1 0x02
000006d8: EXP
000006d9: SUB
000006da: AND
000006db: CALLER
000006dc: PUSH1 0x01
000006de: PUSH1 0xa0
000006e0: PUSH1 0x02
000006e2: EXP
000006e3: SUB
000006e4: AND
000006e5: EQ
000006e6: ISZERO
000006e7: PUSH2 0x0950
000006ea: JUMPI
000006eb: PUSH1 0x17
000006ed: SLOAD
000006ee: PUSH1 0x00
000006f0: SWAP1
000006f1: PUSH1 0xff
000006f3: AND
000006f4: ISZERO
000006f5: PUSH2 0x06fd
000006f8: JUMPI
000006f9: PUSH1 0x00
000006fb: DUP1
000006fc: REVERT
000006fd: JUMPDEST
000006fe: PUSH1 0x14
00000700: SLOAD
00000701: PUSH1 0x01
00000703: PUSH1 0xa0
00000705: PUSH1 0x02
00000707: EXP
00000708: SUB
00000709: AND
0000070a: PUSH4 0xa620fcc7
0000070f: PUSH1 0x00
00000711: PUSH1 0x40
00000713: MLOAD
00000714: PUSH1 0x20
00000716: ADD
00000717: MSTORE
00000718: PUSH1 0x40
0000071a: MLOAD
0000071b: DUP2
0000071c: PUSH4 0xffffffff
00000721: AND
00000722: PUSH1 0xe0
00000724: PUSH1 0x02
00000726: EXP
00000727: MUL
00000728: DUP2
00000729: MSTORE
0000072a: PUSH1 0x04
0000072c: ADD
0000072d: PUSH1 0x20
0000072f: PUSH1 0x40
00000731: MLOAD
00000732: DUP1
00000733: DUP4
00000734: SUB
00000735: DUP2
00000736: PUSH1 0x00
00000738: DUP8
00000739: DUP1
0000073a: EXTCODESIZE
0000073b: ISZERO
0000073c: ISZERO
0000073d: PUSH2 0x0745
00000740: JUMPI
00000741: PUSH1 0x00
00000743: DUP1
00000744: REVERT
00000745: JUMPDEST
00000746: PUSH2 0x02c6
00000749: GAS
0000074a: SUB
0000074b: CALL
0000074c: ISZERO
0000074d: ISZERO
0000074e: PUSH2 0x0756
00000751: JUMPI
00000752: PUSH1 0x00
00000754: DUP1
00000755: REVERT
00000756: JUMPDEST
00000757: POP
00000758: POP
00000759: POP
0000075a: PUSH1 0x40
0000075c: MLOAD
0000075d: DUP1
0000075e: MLOAD
0000075f: SWAP7
00000760: POP
00000761: POP
00000762: DUP6
00000763: DUP13
00000764: LT
00000765: PUSH2 0x076d
00000768: JUMPI
00000769: PUSH1 0x00
0000076b: DUP1
0000076c: REVERT
0000076d: JUMPDEST
0000076e: PUSH1 0x0a
00000770: SLOAD
00000771: DUP7
00000772: SWAP1
00000773: LT
00000774: PUSH2 0x077c
00000777: JUMPI
00000778: PUSH1 0x00
0000077a: DUP1
0000077b: REVERT
0000077c: JUMPDEST
0000077d: PUSH2 0x0785
00000780: DUP13
00000781: PUSH2 0x119c
00000784: JUMP
00000785: JUMPDEST
00000786: SWAP4
00000787: SWAP15
00000788: POP
00000789: SWAP2
0000078a: SWAP13
0000078b: POP
0000078c: SWAP11
0000078d: POP
0000078e: SWAP9
0000078f: POP
00000790: SWAP7
00000791: POP
00000792: PUSH1 0x01
00000794: PUSH1 0xa0
00000796: PUSH1 0x02
00000798: EXP
00000799: SUB
0000079a: DUP12
0000079b: AND
0000079c: ISZERO
0000079d: ISZERO
0000079e: PUSH2 0x07a6
000007a1: JUMPI
000007a2: PUSH1 0x00
000007a4: DUP1
000007a5: REVERT
000007a6: JUMPDEST
000007a7: PUSH1 0x01
000007a9: PUSH1 0xa0
000007ab: PUSH1 0x02
000007ad: EXP
000007ae: SUB
000007af: DUP12
000007b0: AND
000007b1: PUSH1 0x00
000007b3: SWAP1
000007b4: DUP2
000007b5: MSTORE
000007b6: PUSH1 0x12
000007b8: PUSH1 0x20
000007ba: MSTORE
000007bb: PUSH1 0x40
000007bd: DUP2
000007be: KECCAK256
000007bf: PUSH1 0x02
000007c1: SWAP1
000007c2: DUP2
000007c3: ADD
000007c4: SLOAD
000007c5: PUSH1 0xff
000007c7: AND
000007c8: SWAP1
000007c9: DUP2
000007ca: GT
000007cb: ISZERO
000007cc: PUSH2 0x07d1
000007cf: JUMPI
000007d0: INVALID
000007d1: JUMPDEST
000007d2: EQ
000007d3: PUSH2 0x07db
000007d6: JUMPI
000007d7: PUSH1 0x00
000007d9: DUP1
000007da: REVERT
000007db: JUMPDEST
000007dc: PUSH1 0x09
000007de: SLOAD
000007df: DUP11
000007e0: DUP2
000007e1: ISZERO
000007e2: ISZERO
000007e3: PUSH2 0x07e8
000007e6: JUMPI
000007e7: INVALID
000007e8: JUMPDEST
000007e9: MOD
000007ea: SWAP5
000007eb: POP
000007ec: PUSH1 0x07
000007ee: SLOAD
000007ef: DUP11
000007f0: LT
000007f1: ISZERO
000007f2: PUSH2 0x07ff
000007f5: JUMPI
000007f6: PUSH1 0x07
000007f8: SLOAD
000007f9: SWAP4
000007fa: POP
000007fb: PUSH2 0x0841
000007fe: JUMP
000007ff: JUMPDEST
00000800: PUSH1 0x08
00000802: SLOAD
00000803: DUP11
00000804: GT
00000805: ISZERO
00000806: PUSH2 0x0813
00000809: JUMPI
0000080a: PUSH1 0x08
0000080c: SLOAD
0000080d: SWAP4
0000080e: POP
0000080f: PUSH2 0x0841
00000812: JUMP
00000813: JUMPDEST
00000814: DUP10
00000815: SWAP4
00000816: POP
00000817: DUP5
00000818: ISZERO
00000819: PUSH2 0x0841
0000081c: JUMPI
0000081d: PUSH2 0x0826
00000820: DUP11
00000821: DUP7
00000822: PUSH2 0x1250
00000825: JUMP
00000826: JUMPDEST
00000827: SWAP4
00000828: POP
00000829: PUSH1 0x01
0000082b: SLOAD
0000082c: DUP5
0000082d: LT
0000082e: ISZERO
0000082f: PUSH2 0x0841
00000832: JUMPI
00000833: PUSH2 0x083e
00000836: DUP5
00000837: PUSH1 0x09
00000839: SLOAD
0000083a: PUSH2 0x0d87
0000083d: JUMP
0000083e: JUMPDEST
0000083f: SWAP4
00000840: POP
00000841: JUMPDEST
00000842: PUSH1 0x00
00000844: DUP5
00000845: DUP2
00000846: MSTORE
00000847: PUSH1 0x06
00000849: PUSH1 0x20
0000084b: MSTORE
0000084c: PUSH1 0x40
0000084e: SWAP1
0000084f: KECCAK256
00000850: PUSH1 0x01
00000852: DUP2
00000853: ADD
00000854: SLOAD
00000855: SWAP1
00000856: SWAP4
00000857: POP
00000858: PUSH3 0x010000
0000085c: SWAP1
0000085d: DIV
0000085e: PUSH1 0xff
00000860: AND
00000861: ISZERO
00000862: ISZERO
00000863: PUSH2 0x086b
00000866: JUMPI
00000867: PUSH1 0x00
00000869: DUP1
0000086a: REVERT
0000086b: JUMPDEST
0000086c: PUSH2 0x0875
0000086f: DUP10
00000870: DUP9
00000871: PUSH2 0x1264
00000874: JUMP
00000875: JUMPDEST
00000876: PUSH1 0x00
00000878: DUP6
00000879: DUP2
0000087a: MSTORE
0000087b: PUSH1 0x06
0000087d: PUSH1 0x20
0000087f: MSTORE
00000880: PUSH1 0x40
00000882: SWAP1
00000883: KECCAK256
00000884: SLOAD
00000885: SWAP1
00000886: SWAP3
00000887: POP
00000888: PUSH2 0x0891
0000088b: SWAP1
0000088c: DUP4
0000088d: PUSH2 0x0d87
00000890: JUMP
00000891: JUMPDEST
00000892: PUSH1 0x00
00000894: DUP6
00000895: DUP2
00000896: MSTORE
00000897: PUSH1 0x06
00000899: PUSH1 0x20
0000089b: MSTORE
0000089c: PUSH1 0x40
0000089e: SWAP1
0000089f: KECCAK256
000008a0: SSTORE
000008a1: PUSH1 0x0b
000008a3: SLOAD
000008a4: PUSH2 0x08ad
000008a7: SWAP1
000008a8: DUP4
000008a9: PUSH2 0x0d87
000008ac: JUMP
000008ad: JUMPDEST
000008ae: PUSH1 0x0b
000008b0: SSTORE
000008b1: PUSH1 0x0a
000008b3: DUP1
000008b4: SLOAD
000008b5: PUSH1 0x01
000008b7: SWAP1
000008b8: DUP2
000008b9: ADD
000008ba: SWAP1
000008bb: SWAP2
000008bc: SSTORE
000008bd: PUSH1 0x01
000008bf: PUSH1 0xa0
000008c1: PUSH1 0x02
000008c3: EXP
000008c4: SUB
000008c5: DUP13
000008c6: AND
000008c7: PUSH1 0x00
000008c9: SWAP1
000008ca: DUP2
000008cb: MSTORE
000008cc: PUSH1 0x12
000008ce: PUSH1 0x20
000008d0: MSTORE
000008d1: PUSH1 0x40
000008d3: SWAP1
000008d4: KECCAK256
000008d5: DUP6
000008d6: DUP2
000008d7: SSTORE
000008d8: DUP1
000008d9: DUP3
000008da: ADD
000008db: DUP5
000008dc: SWAP1
000008dd: SSTORE
000008de: PUSH1 0x02
000008e0: ADD
000008e1: DUP1
000008e2: SLOAD
000008e3: PUSH1 0xff
000008e5: NOT
000008e6: AND
000008e7: DUP3
000008e8: DUP1
000008e9: MUL
000008ea: OR
000008eb: SWAP1
000008ec: SSTORE
000008ed: POP
000008ee: PUSH32 0x9ec97c382d56b4d35b4d7057460ea7f57ff800af60a182833c33dc3e9b65726e
0000090f: DUP12
00000910: DUP12
00000911: DUP7
00000912: DUP6
00000913: PUSH1 0x40
00000915: MLOAD
00000916: DUP1
00000917: DUP6
00000918: PUSH1 0x01
0000091a: PUSH1 0xa0
0000091c: PUSH1 0x02
0000091e: EXP
0000091f: SUB
00000920: AND
00000921: PUSH1 0x01
00000923: PUSH1 0xa0
00000925: PUSH1 0x02
00000927: EXP
00000928: SUB
00000929: AND
0000092a: DUP2
0000092b: MSTORE
0000092c: PUSH1 0x20
0000092e: ADD
0000092f: DUP5
00000930: DUP2
00000931: MSTORE
00000932: PUSH1 0x20
00000934: ADD
00000935: DUP4
00000936: DUP2
00000937: MSTORE
00000938: PUSH1 0x20
0000093a: ADD
0000093b: DUP3
0000093c: DUP2
0000093d: MSTORE
0000093e: PUSH1 0x20
00000940: ADD
00000941: SWAP5
00000942: POP
00000943: POP
00000944: POP
00000945: POP
00000946: POP
00000947: PUSH1 0x40
00000949: MLOAD
0000094a: DUP1
0000094b: SWAP2
0000094c: SUB
0000094d: SWAP1
0000094e: LOG1
0000094f: POP
00000950: JUMPDEST
00000951: POP
00000952: POP
00000953: POP
00000954: POP
00000955: POP
00000956: POP
00000957: POP
00000958: POP
00000959: POP
0000095a: POP
0000095b: POP
0000095c: JUMP
0000095d: JUMPDEST
0000095e: PUSH1 0x13
00000960: SLOAD
00000961: PUSH1 0x01
00000963: PUSH1 0xa0
00000965: PUSH1 0x02
00000967: EXP
00000968: SUB
00000969: AND
0000096a: DUP2
0000096b: JUMP
0000096c: JUMPDEST
0000096d: PUSH1 0x15
0000096f: SLOAD
00000970: PUSH1 0x01
00000972: PUSH1 0xa0
00000974: PUSH1 0x02
00000976: EXP
00000977: SUB
00000978: AND
00000979: DUP2
0000097a: JUMP
0000097b: JUMPDEST
0000097c: PUSH1 0x00
0000097e: SLOAD
0000097f: CALLER
00000980: PUSH1 0x01
00000982: PUSH1 0xa0
00000984: PUSH1 0x02
00000986: EXP
00000987: SUB
00000988: SWAP1
00000989: DUP2
0000098a: AND
0000098b: SWAP2
0000098c: AND
0000098d: EQ
0000098e: ISZERO
0000098f: PUSH2 0x09bd
00000992: JUMPI
00000993: PUSH1 0x01
00000995: PUSH1 0xa0
00000997: PUSH1 0x02
00000999: EXP
0000099a: SUB
0000099b: DUP2
0000099c: AND
0000099d: ISZERO
0000099e: PUSH2 0x09bd
000009a1: JUMPI
000009a2: PUSH1 0x00
000009a4: DUP1
000009a5: SLOAD
000009a6: PUSH1 0x01
000009a8: PUSH1 0xa0
000009aa: PUSH1 0x02
000009ac: EXP
000009ad: SUB
000009ae: NOT
000009af: AND
000009b0: PUSH1 0x01
000009b2: PUSH1 0xa0
000009b4: PUSH1 0x02
000009b6: EXP
000009b7: SUB
000009b8: DUP4
000009b9: AND
000009ba: OR
000009bb: SWAP1
000009bc: SSTORE
000009bd: JUMPDEST
000009be: POP
000009bf: JUMP
000009c0: JUMPDEST
000009c1: PUSH1 0x17
000009c3: SLOAD
000009c4: PUSH1 0x00
000009c6: SWAP1
000009c7: DUP2
000009c8: SWAP1
000009c9: DUP2
000009ca: SWAP1
000009cb: DUP2
000009cc: SWAP1
000009cd: PUSH1 0x01
000009cf: SWAP1
000009d0: PUSH1 0xff
000009d2: AND
000009d3: ISZERO
000009d4: ISZERO
000009d5: DUP2
000009d6: EQ
000009d7: PUSH2 0x09df
000009da: JUMPI
000009db: PUSH1 0x00
000009dd: DUP1
000009de: REVERT
000009df: JUMPDEST
000009e0: PUSH1 0x01
000009e2: PUSH1 0xa0
000009e4: PUSH1 0x02
000009e6: EXP
000009e7: SUB
000009e8: DUP7
000009e9: AND
000009ea: PUSH1 0x00
000009ec: SWAP1
000009ed: DUP2
000009ee: MSTORE
000009ef: PUSH1 0x12
000009f1: PUSH1 0x20
000009f3: SWAP1
000009f4: DUP2
000009f5: MSTORE
000009f6: PUSH1 0x40
000009f8: DUP1
000009f9: DUP4
000009fa: KECCAK256
000009fb: DUP1
000009fc: SLOAD
000009fd: DUP5
000009fe: MSTORE
000009ff: PUSH1 0x06
00000a01: SWAP1
00000a02: SWAP3
00000a03: MSTORE
00000a04: SWAP1
00000a05: SWAP2
00000a06: KECCAK256
00000a07: PUSH1 0x01
00000a09: SWAP1
00000a0a: DUP2
00000a0b: ADD
00000a0c: SLOAD
00000a0d: SWAP1
00000a0e: DUP3
00000a0f: ADD
00000a10: SLOAD
00000a11: SWAP2
00000a12: SWAP5
00000a13: POP
00000a14: PUSH2 0x0a26
00000a17: SWAP2
00000a18: PUSH2 0x0100
00000a1b: SWAP1
00000a1c: SWAP2
00000a1d: DIV
00000a1e: PUSH1 0xff
00000a20: AND
00000a21: SWAP1
00000a22: PUSH2 0x1118
00000a25: JUMP
00000a26: JUMPDEST
00000a27: PUSH1 0x02
00000a29: DUP5
00000a2a: ADD
00000a2b: SLOAD
00000a2c: SWAP1
00000a2d: SWAP6
00000a2e: POP
00000a2f: PUSH1 0xff
00000a31: AND
00000a32: SWAP4
00000a33: POP
00000a34: DUP5
00000a35: SWAP2
00000a36: POP
00000a37: POP
00000a38: POP
00000a39: POP
00000a3a: SWAP2
00000a3b: POP
00000a3c: SWAP2
00000a3d: JUMP
00000a3e: JUMPDEST
00000a3f: PUSH1 0x0c
00000a41: SLOAD
00000a42: DUP2
00000a43: JUMP
00000a44: JUMPDEST
00000a45: PUSH1 0x14
00000a47: SLOAD
00000a48: PUSH1 0x01
00000a4a: PUSH1 0xa0
00000a4c: PUSH1 0x02
00000a4e: EXP
00000a4f: SUB
00000a50: AND
00000a51: DUP2
00000a52: JUMP
00000a53: JUMPDEST
00000a54: PUSH1 0x01
00000a56: SLOAD
00000a57: DUP2
00000a58: JUMP
00000a59: JUMPDEST
00000a5a: PUSH1 0x00
00000a5c: SLOAD
00000a5d: PUSH1 0x01
00000a5f: PUSH1 0xa0
00000a61: PUSH1 0x02
00000a63: EXP
00000a64: SUB
00000a65: AND
00000a66: DUP2
00000a67: JUMP
00000a68: JUMPDEST
00000a69: PUSH1 0x0b
00000a6b: SLOAD
00000a6c: DUP2
00000a6d: JUMP
00000a6e: JUMPDEST
00000a6f: PUSH1 0x0d
00000a71: SLOAD
00000a72: DUP2
00000a73: JUMP
00000a74: JUMPDEST
00000a75: PUSH1 0x13
00000a77: SLOAD
00000a78: PUSH1 0x00
00000a7a: SWAP1
00000a7b: PUSH1 0x01
00000a7d: PUSH1 0xa0
00000a7f: PUSH1 0x02
00000a81: EXP
00000a82: SUB
00000a83: AND
00000a84: ISZERO
00000a85: ISZERO
00000a86: PUSH2 0x0a8e
00000a89: JUMPI
00000a8a: PUSH1 0x00
00000a8c: DUP1
00000a8d: REVERT
00000a8e: JUMPDEST
00000a8f: PUSH1 0x13
00000a91: SLOAD
00000a92: CALLER
00000a93: PUSH1 0x01
00000a95: PUSH1 0xa0
00000a97: PUSH1 0x02
00000a99: EXP
00000a9a: SUB
00000a9b: SWAP1
00000a9c: DUP2
00000a9d: AND
00000a9e: SWAP2
00000a9f: AND
00000aa0: EQ
00000aa1: PUSH2 0x0aa9
00000aa4: JUMPI
00000aa5: PUSH1 0x00
00000aa7: DUP1
00000aa8: REVERT
00000aa9: JUMPDEST
00000aaa: PUSH1 0x15
00000aac: SLOAD
00000aad: PUSH1 0x01
00000aaf: PUSH1 0xa0
00000ab1: PUSH1 0x02
00000ab3: EXP
00000ab4: SUB
00000ab5: AND
00000ab6: PUSH4 0x70a08231
00000abb: ADDRESS
00000abc: PUSH1 0x00
00000abe: PUSH1 0x40
00000ac0: MLOAD
00000ac1: PUSH1 0x20
00000ac3: ADD
00000ac4: MSTORE
00000ac5: PUSH1 0x40
00000ac7: MLOAD
00000ac8: PUSH1 0xe0
00000aca: PUSH1 0x02
00000acc: EXP
00000acd: PUSH4 0xffffffff
00000ad2: DUP5
00000ad3: AND
00000ad4: MUL
00000ad5: DUP2
00000ad6: MSTORE
00000ad7: PUSH1 0x01
00000ad9: PUSH1 0xa0
00000adb: PUSH1 0x02
00000add: EXP
00000ade: SUB
00000adf: SWAP1
00000ae0: SWAP2
00000ae1: AND
00000ae2: PUSH1 0x04
00000ae4: DUP3
00000ae5: ADD
00000ae6: MSTORE
00000ae7: PUSH1 0x24
00000ae9: ADD
00000aea: PUSH1 0x20
00000aec: PUSH1 0x40
00000aee: MLOAD
00000aef: DUP1
00000af0: DUP4
00000af1: SUB
00000af2: DUP2
00000af3: PUSH1 0x00
00000af5: DUP8
00000af6: DUP1
00000af7: EXTCODESIZE
00000af8: ISZERO
00000af9: ISZERO
00000afa: PUSH2 0x0b02
00000afd: JUMPI
00000afe: PUSH1 0x00
00000b00: DUP1
00000b01: REVERT
00000b02: JUMPDEST
00000b03: PUSH2 0x02c6
00000b06: GAS
00000b07: SUB
00000b08: CALL
00000b09: ISZERO
00000b0a: ISZERO
00000b0b: PUSH2 0x0b13
00000b0e: JUMPI
00000b0f: PUSH1 0x00
00000b11: DUP1
00000b12: REVERT
00000b13: JUMPDEST
00000b14: POP
00000b15: POP
00000b16: POP
00000b17: PUSH1 0x40
00000b19: MLOAD
00000b1a: DUP1
00000b1b: MLOAD
00000b1c: PUSH1 0x13
00000b1e: SLOAD
00000b1f: SWAP1
00000b20: SWAP3
00000b21: POP
00000b22: PUSH1 0x01
00000b24: PUSH1 0xa0
00000b26: PUSH1 0x02
00000b28: EXP
00000b29: SUB
00000b2a: SWAP1
00000b2b: DUP2
00000b2c: AND
00000b2d: SWAP2
00000b2e: POP
00000b2f: ADDRESS
00000b30: AND
00000b31: BALANCE
00000b32: DUP1
00000b33: ISZERO
00000b34: PUSH2 0x08fc
00000b37: MUL
00000b38: SWAP1
00000b39: PUSH1 0x40
00000b3b: MLOAD
00000b3c: PUSH1 0x00
00000b3e: PUSH1 0x40
00000b40: MLOAD
00000b41: DUP1
00000b42: DUP4
00000b43: SUB
00000b44: DUP2
00000b45: DUP6
00000b46: DUP9
00000b47: DUP9
00000b48: CALL
00000b49: SWAP4
00000b4a: POP
00000b4b: POP
00000b4c: POP
00000b4d: POP
00000b4e: ISZERO
00000b4f: ISZERO
00000b50: PUSH2 0x0b58
00000b53: JUMPI
00000b54: PUSH1 0x00
00000b56: DUP1
00000b57: REVERT
00000b58: JUMPDEST
00000b59: PUSH1 0x15
00000b5b: SLOAD
00000b5c: PUSH1 0x13
00000b5e: SLOAD
00000b5f: PUSH1 0x01
00000b61: PUSH1 0xa0
00000b63: PUSH1 0x02
00000b65: EXP
00000b66: SUB
00000b67: SWAP2
00000b68: DUP3
00000b69: AND
00000b6a: SWAP2
00000b6b: PUSH4 0xa9059cbb
00000b70: SWAP2
00000b71: AND
00000b72: DUP4
00000b73: PUSH1 0x00
00000b75: PUSH1 0x40
00000b77: MLOAD
00000b78: PUSH1 0x20
00000b7a: ADD
00000b7b: MSTORE
00000b7c: PUSH1 0x40
00000b7e: MLOAD
00000b7f: PUSH1 0xe0
00000b81: PUSH1 0x02
00000b83: EXP
00000b84: PUSH4 0xffffffff
00000b89: DUP6
00000b8a: AND
00000b8b: MUL
00000b8c: DUP2
00000b8d: MSTORE
00000b8e: PUSH1 0x01
00000b90: PUSH1 0xa0
00000b92: PUSH1 0x02
00000b94: EXP
00000b95: SUB
00000b96: SWAP1
00000b97: SWAP3
00000b98: AND
00000b99: PUSH1 0x04
00000b9b: DUP4
00000b9c: ADD
00000b9d: MSTORE
00000b9e: PUSH1 0x24
00000ba0: DUP3
00000ba1: ADD
00000ba2: MSTORE
00000ba3: PUSH1 0x44
00000ba5: ADD
00000ba6: PUSH1 0x20
00000ba8: PUSH1 0x40
00000baa: MLOAD
00000bab: DUP1
00000bac: DUP4
00000bad: SUB
00000bae: DUP2
00000baf: PUSH1 0x00
00000bb1: DUP8
00000bb2: DUP1
00000bb3: EXTCODESIZE
00000bb4: ISZERO
00000bb5: ISZERO
00000bb6: PUSH2 0x0bbe
00000bb9: JUMPI
00000bba: PUSH1 0x00
00000bbc: DUP1
00000bbd: REVERT
00000bbe: JUMPDEST
00000bbf: PUSH2 0x02c6
00000bc2: GAS
00000bc3: SUB
00000bc4: CALL
00000bc5: ISZERO
00000bc6: ISZERO
00000bc7: PUSH2 0x0bcf
00000bca: JUMPI
00000bcb: PUSH1 0x00
00000bcd: DUP1
00000bce: REVERT
00000bcf: JUMPDEST
00000bd0: POP
00000bd1: POP
00000bd2: POP
00000bd3: PUSH1 0x40
00000bd5: MLOAD
00000bd6: DUP1
00000bd7: MLOAD
00000bd8: POP
00000bd9: POP
00000bda: POP
00000bdb: JUMP
00000bdc: JUMPDEST
00000bdd: PUSH1 0x00
00000bdf: DUP3
00000be0: DUP3
00000be1: MUL
00000be2: PUSH2 0x0c00
00000be5: DUP5
00000be6: ISZERO
00000be7: DUP1
00000be8: PUSH2 0x0bfb
00000beb: JUMPI
00000bec: POP
00000bed: DUP4
00000bee: DUP6
00000bef: DUP4
00000bf0: DUP2
00000bf1: ISZERO
00000bf2: ISZERO
00000bf3: PUSH2 0x0bf8
00000bf6: JUMPI
00000bf7: INVALID
00000bf8: JUMPDEST
00000bf9: DIV
00000bfa: EQ
00000bfb: JUMPDEST
00000bfc: PUSH2 0x134e
00000bff: JUMP
00000c00: JUMPDEST
00000c01: SWAP4
00000c02: SWAP3
00000c03: POP
00000c04: POP
00000c05: POP
00000c06: JUMP
00000c07: JUMPDEST
00000c08: PUSH2 0x0c0f
00000c0b: PUSH2 0x13ca
00000c0e: JUMP
00000c0f: JUMPDEST
00000c10: PUSH1 0x00
00000c12: DUP1
00000c13: PUSH2 0x0c1d
00000c16: PUSH1 0x02
00000c18: SLOAD
00000c19: PUSH2 0x135a
00000c1c: JUMP
00000c1d: JUMPDEST
00000c1e: PUSH1 0xc0
00000c20: DUP6
00000c21: ADD
00000c22: MSTORE
00000c23: PUSH1 0xa0
00000c25: DUP5
00000c26: ADD
00000c27: MSTORE
00000c28: PUSH1 0x03
00000c2a: SLOAD
00000c2b: PUSH2 0x0c33
00000c2e: SWAP1
00000c2f: PUSH2 0x135a
00000c32: JUMP
00000c33: JUMPDEST
00000c34: PUSH1 0xe0
00000c36: DUP6
00000c37: ADD
00000c38: SWAP1
00000c39: DUP2
00000c3a: MSTORE
00000c3b: PUSH1 0x80
00000c3d: DUP6
00000c3e: ADD
00000c3f: SWAP2
00000c40: SWAP1
00000c41: SWAP2
00000c42: MSTORE
00000c43: PUSH2 0x0c4f
00000c46: SWAP1
00000c47: MLOAD
00000c48: PUSH1 0x01
00000c4a: SLOAD
00000c4b: PUSH2 0x1250
00000c4e: JUMP
00000c4f: JUMPDEST
00000c50: SWAP2
00000c51: POP
00000c52: PUSH2 0x0c73
00000c55: PUSH1 0x01
00000c57: SLOAD
00000c58: PUSH1 0x04
00000c5a: PUSH2 0x0c64
00000c5d: DUP6
00000c5e: PUSH1 0x05
00000c60: PUSH2 0x0bdc
00000c63: JUMP
00000c64: JUMPDEST
00000c65: DUP2
00000c66: ISZERO
00000c67: ISZERO
00000c68: PUSH2 0x0c6d
00000c6b: JUMPI
00000c6c: INVALID
00000c6d: JUMPDEST
00000c6e: DIV
00000c6f: PUSH2 0x0d87
00000c72: JUMP
00000c73: JUMPDEST
00000c74: PUSH2 0x0100
00000c77: DUP5
00000c78: ADD
00000c79: MSTORE
00000c7a: PUSH1 0x01
00000c7c: SLOAD
00000c7d: PUSH2 0x0c8d
00000c80: SWAP1
00000c81: PUSH1 0x03
00000c83: PUSH2 0x0c64
00000c86: DUP6
00000c87: PUSH1 0x04
00000c89: PUSH2 0x0bdc
00000c8c: JUMP
00000c8d: JUMPDEST
00000c8e: PUSH2 0x0120
00000c91: DUP5
00000c92: ADD
00000c93: MSTORE
00000c94: PUSH1 0x01
00000c96: SLOAD
00000c97: PUSH2 0x0ca7
00000c9a: SWAP1
00000c9b: PUSH1 0x02
00000c9d: PUSH2 0x0c64
00000ca0: DUP6
00000ca1: PUSH1 0x03
00000ca3: PUSH2 0x0bdc
00000ca6: JUMP
00000ca7: JUMPDEST
00000ca8: PUSH2 0x0140
00000cab: DUP5
00000cac: ADD
00000cad: MSTORE
00000cae: PUSH1 0x01
00000cb0: SLOAD
00000cb1: PUSH2 0x0cbf
00000cb4: SWAP1
00000cb5: PUSH2 0x0593
00000cb8: DUP5
00000cb9: PUSH1 0x02
00000cbb: PUSH2 0x0bdc
00000cbe: JUMP
00000cbf: JUMPDEST
00000cc0: PUSH2 0x0160
00000cc3: DUP5
00000cc4: ADD
00000cc5: MSTORE
00000cc6: PUSH1 0x01
00000cc8: SLOAD
00000cc9: PUSH2 0x0cd6
00000ccc: SWAP1
00000ccd: PUSH1 0x80
00000ccf: DUP6
00000cd0: ADD
00000cd1: MLOAD
00000cd2: PUSH2 0x1250
00000cd5: JUMP
00000cd6: JUMPDEST
00000cd7: SWAP2
00000cd8: POP
00000cd9: PUSH1 0x04
00000cdb: PUSH2 0x0ce5
00000cde: DUP4
00000cdf: PUSH1 0x05
00000ce1: PUSH2 0x0bdc
00000ce4: JUMP
00000ce5: JUMPDEST
00000ce6: DUP2
00000ce7: ISZERO
00000ce8: ISZERO
00000ce9: PUSH2 0x0cee
00000cec: JUMPI
00000ced: INVALID
00000cee: JUMPDEST
00000cef: DIV
00000cf0: SWAP1
00000cf1: POP
00000cf2: PUSH1 0x01
00000cf4: SLOAD
00000cf5: DUP2
00000cf6: LT
00000cf7: ISZERO
00000cf8: PUSH2 0x0d82
00000cfb: JUMPI
00000cfc: PUSH1 0x01
00000cfe: SLOAD
00000cff: DUP2
00000d00: SWAP1
00000d01: SUB
00000d02: PUSH1 0x60
00000d04: DUP5
00000d05: ADD
00000d06: MSTORE
00000d07: PUSH1 0x03
00000d09: PUSH2 0x0d13
00000d0c: DUP4
00000d0d: PUSH1 0x04
00000d0f: PUSH2 0x0bdc
00000d12: JUMP
00000d13: JUMPDEST
00000d14: DUP2
00000d15: ISZERO
00000d16: ISZERO
00000d17: PUSH2 0x0d1c
00000d1a: JUMPI
00000d1b: INVALID
00000d1c: JUMPDEST
00000d1d: DIV
00000d1e: SWAP1
00000d1f: POP
00000d20: PUSH1 0x01
00000d22: SLOAD
00000d23: DUP2
00000d24: LT
00000d25: ISZERO
00000d26: PUSH2 0x0d82
00000d29: JUMPI
00000d2a: PUSH1 0x01
00000d2c: SLOAD
00000d2d: DUP2
00000d2e: SWAP1
00000d2f: SUB
00000d30: PUSH1 0x40
00000d32: DUP5
00000d33: ADD
00000d34: MSTORE
00000d35: PUSH1 0x02
00000d37: PUSH2 0x0d41
00000d3a: DUP4
00000d3b: PUSH1 0x03
00000d3d: PUSH2 0x0bdc
00000d40: JUMP
00000d41: JUMPDEST
00000d42: DUP2
00000d43: ISZERO
00000d44: ISZERO
00000d45: PUSH2 0x0d4a
00000d48: JUMPI
00000d49: INVALID
00000d4a: JUMPDEST
00000d4b: DIV
00000d4c: SWAP1
00000d4d: POP
00000d4e: PUSH1 0x01
00000d50: SLOAD
00000d51: DUP2
00000d52: LT
00000d53: ISZERO
00000d54: PUSH2 0x0d82
00000d57: JUMPI
00000d58: PUSH1 0x01
00000d5a: SLOAD
00000d5b: DUP2
00000d5c: SWAP1
00000d5d: SUB
00000d5e: PUSH1 0x20
00000d60: DUP5
00000d61: ADD
00000d62: MSTORE
00000d63: PUSH2 0x0d6d
00000d66: DUP3
00000d67: PUSH1 0x02
00000d69: PUSH2 0x0bdc
00000d6c: JUMP
00000d6d: JUMPDEST
00000d6e: SWAP1
00000d6f: POP
00000d70: PUSH1 0x01
00000d72: SLOAD
00000d73: DUP2
00000d74: LT
00000d75: ISZERO
00000d76: PUSH2 0x0d82
00000d79: JUMPI
00000d7a: PUSH1 0x01
00000d7c: SLOAD
00000d7d: DUP2
00000d7e: SWAP1
00000d7f: SUB
00000d80: DUP4
00000d81: MSTORE
00000d82: JUMPDEST
00000d83: POP
00000d84: POP
00000d85: SWAP1
00000d86: JUMP
00000d87: JUMPDEST
00000d88: PUSH1 0x00
00000d8a: DUP3
00000d8b: DUP3
00000d8c: ADD
00000d8d: PUSH2 0x0c00
00000d90: DUP5
00000d91: DUP3
00000d92: LT
00000d93: DUP1
00000d94: ISZERO
00000d95: SWAP1
00000d96: PUSH2 0x0bfb
00000d99: JUMPI
00000d9a: POP
00000d9b: DUP4
00000d9c: DUP3
00000d9d: LT
00000d9e: ISZERO
00000d9f: PUSH2 0x134e
00000da2: JUMP
00000da3: JUMPDEST
00000da4: PUSH1 0x00
00000da6: DUP1
00000da7: PUSH1 0x00
00000da9: PUSH1 0x01
00000dab: SLOAD
00000dac: DUP7
00000dad: GT
00000dae: ISZERO
00000daf: DUP1
00000db0: ISZERO
00000db1: PUSH2 0x0dc4
00000db4: JUMPI
00000db5: POP
00000db6: PUSH1 0x01
00000db8: SLOAD
00000db9: DUP6
00000dba: LT
00000dbb: ISZERO
00000dbc: DUP1
00000dbd: PUSH2 0x0dc4
00000dc0: JUMPI
00000dc1: POP
00000dc2: DUP5
00000dc3: ISZERO
00000dc4: JUMPDEST
00000dc5: ISZERO
00000dc6: PUSH2 0x0df1
00000dc9: JUMPI
00000dca: POP
00000dcb: POP
00000dcc: POP
00000dcd: PUSH1 0x00
00000dcf: DUP4
00000dd0: DUP2
00000dd1: MSTORE
00000dd2: PUSH1 0x06
00000dd4: PUSH1 0x20
00000dd6: DUP2
00000dd7: SWAP1
00000dd8: MSTORE
00000dd9: PUSH1 0x40
00000ddb: SWAP1
00000ddc: SWAP2
00000ddd: KECCAK256
00000dde: SLOAD
00000ddf: PUSH1 0x11
00000de1: DUP1
00000de2: SLOAD
00000de3: SWAP1
00000de4: SWAP2
00000de5: ADD
00000de6: SWAP1
00000de7: SSTORE
00000de8: PUSH1 0x01
00000dea: SWAP1
00000deb: PUSH1 0x04
00000ded: PUSH2 0x0f4f
00000df0: JUMP
00000df1: JUMPDEST
00000df2: DUP4
00000df3: ISZERO
00000df4: PUSH2 0x0e1b
00000df7: JUMPI
00000df8: POP
00000df9: POP
00000dfa: POP
00000dfb: PUSH1 0x00
00000dfd: DUP4
00000dfe: DUP2
00000dff: MSTORE
00000e00: PUSH1 0x06
00000e02: PUSH1 0x20
00000e04: DUP2
00000e05: SWAP1
00000e06: MSTORE
00000e07: PUSH1 0x40
00000e09: DUP3
00000e0a: KECCAK256
00000e0b: SLOAD
00000e0c: PUSH1 0x11
00000e0e: DUP1
00000e0f: SLOAD
00000e10: SWAP1
00000e11: SWAP2
00000e12: ADD
00000e13: SWAP1
00000e14: SSTORE
00000e15: PUSH1 0x04
00000e17: PUSH2 0x0f4f
00000e1a: JUMP
00000e1b: JUMPDEST
00000e1c: DUP7
00000e1d: MLOAD
00000e1e: DUP7
00000e1f: LT
00000e20: ISZERO
00000e21: DUP1
00000e22: ISZERO
00000e23: PUSH2 0x0e31
00000e26: JUMPI
00000e27: POP
00000e28: DUP7
00000e29: PUSH2 0x0160
00000e2c: ADD
00000e2d: MLOAD
00000e2e: DUP7
00000e2f: GT
00000e30: ISZERO
00000e31: JUMPDEST
00000e32: ISZERO
00000e33: PUSH2 0x0f4f
00000e36: JUMPI
00000e37: DUP7
00000e38: PUSH1 0x20
00000e3a: ADD
00000e3b: MLOAD
00000e3c: DUP7
00000e3d: LT
00000e3e: ISZERO
00000e3f: DUP1
00000e40: ISZERO
00000e41: PUSH2 0x0e4f
00000e44: JUMPI
00000e45: POP
00000e46: DUP7
00000e47: PUSH2 0x0140
00000e4a: ADD
00000e4b: MLOAD
00000e4c: DUP7
00000e4d: GT
00000e4e: ISZERO
00000e4f: JUMPDEST
00000e50: ISZERO
00000e51: PUSH2 0x0f4a
00000e54: JUMPI
00000e55: DUP7
00000e56: PUSH1 0x40
00000e58: ADD
00000e59: MLOAD
00000e5a: DUP7
00000e5b: LT
00000e5c: ISZERO
00000e5d: DUP1
00000e5e: ISZERO
00000e5f: PUSH2 0x0e6d
00000e62: JUMPI
00000e63: POP
00000e64: DUP7
00000e65: PUSH2 0x0120
00000e68: ADD
00000e69: MLOAD
00000e6a: DUP7
00000e6b: GT
00000e6c: ISZERO
00000e6d: JUMPDEST
00000e6e: ISZERO
00000e6f: PUSH2 0x0f40
00000e72: JUMPI
00000e73: DUP7
00000e74: PUSH1 0x60
00000e76: ADD
00000e77: MLOAD
00000e78: DUP7
00000e79: LT
00000e7a: ISZERO
00000e7b: DUP1
00000e7c: ISZERO
00000e7d: PUSH2 0x0e8b
00000e80: JUMPI
00000e81: POP
00000e82: DUP7
00000e83: PUSH2 0x0100
00000e86: ADD
00000e87: MLOAD
00000e88: DUP7
00000e89: GT
00000e8a: ISZERO
00000e8b: JUMPDEST
00000e8c: ISZERO
00000e8d: PUSH2 0x0f36
00000e90: JUMPI
00000e91: DUP7
00000e92: PUSH1 0x80
00000e94: ADD
00000e95: MLOAD
00000e96: DUP7
00000e97: LT
00000e98: ISZERO
00000e99: DUP1
00000e9a: ISZERO
00000e9b: PUSH2 0x0ea8
00000e9e: JUMPI
00000e9f: POP
00000ea0: DUP7
00000ea1: PUSH1 0xe0
00000ea3: ADD
00000ea4: MLOAD
00000ea5: DUP7
00000ea6: GT
00000ea7: ISZERO
00000ea8: JUMPDEST
00000ea9: ISZERO
00000eaa: PUSH2 0x0f12
00000ead: JUMPI
00000eae: DUP7
00000eaf: PUSH1 0xa0
00000eb1: ADD
00000eb2: MLOAD
00000eb3: DUP7
00000eb4: LT
00000eb5: ISZERO
00000eb6: DUP1
00000eb7: ISZERO
00000eb8: PUSH2 0x0ec5
00000ebb: JUMPI
00000ebc: POP
00000ebd: DUP7
00000ebe: PUSH1 0xc0
00000ec0: ADD
00000ec1: MLOAD
00000ec2: DUP7
00000ec3: GT
00000ec4: ISZERO
00000ec5: JUMPDEST
00000ec6: ISZERO
00000ec7: PUSH2 0x0eee
00000eca: JUMPI
00000ecb: POP
00000ecc: POP
00000ecd: PUSH1 0x00
00000ecf: DUP5
00000ed0: DUP2
00000ed1: MSTORE
00000ed2: PUSH1 0x06
00000ed4: PUSH1 0x20
00000ed6: DUP2
00000ed7: SWAP1
00000ed8: MSTORE
00000ed9: PUSH1 0x40
00000edb: SWAP1
00000edc: SWAP2
00000edd: KECCAK256
00000ede: SLOAD
00000edf: PUSH1 0x10
00000ee1: DUP1
00000ee2: SLOAD
00000ee3: SWAP1
00000ee4: SWAP2
00000ee5: ADD
00000ee6: SWAP1
00000ee7: SSTORE
00000ee8: PUSH1 0x03
00000eea: PUSH2 0x0f0d
00000eed: JUMP
00000eee: JUMPDEST
00000eef: POP
00000ef0: POP
00000ef1: PUSH1 0x00
00000ef3: DUP5
00000ef4: DUP2
00000ef5: MSTORE
00000ef6: PUSH1 0x06
00000ef8: PUSH1 0x20
00000efa: MSTORE
00000efb: PUSH1 0x40
00000efd: SWAP1
00000efe: KECCAK256
00000eff: SLOAD
00000f00: PUSH1 0x0f
00000f02: DUP1
00000f03: SLOAD
00000f04: SWAP1
00000f05: SWAP2
00000f06: ADD
00000f07: SWAP1
00000f08: SSTORE
00000f09: PUSH1 0x05
00000f0b: PUSH1 0x02
00000f0d: JUMPDEST
00000f0e: PUSH2 0x0f31
00000f11: JUMP
00000f12: JUMPDEST
00000f13: POP
00000f14: POP
00000f15: PUSH1 0x00
00000f17: DUP5
00000f18: DUP2
00000f19: MSTORE
00000f1a: PUSH1 0x06
00000f1c: PUSH1 0x20
00000f1e: MSTORE
00000f1f: PUSH1 0x40
00000f21: SWAP1
00000f22: KECCAK256
00000f23: SLOAD
00000f24: PUSH1 0x0e
00000f26: DUP1
00000f27: SLOAD
00000f28: SWAP1
00000f29: SWAP2
00000f2a: ADD
00000f2b: SWAP1
00000f2c: SSTORE
00000f2d: PUSH1 0x04
00000f2f: PUSH1 0x01
00000f31: JUMPDEST
00000f32: PUSH2 0x0f3b
00000f35: JUMP
00000f36: JUMPDEST
00000f37: PUSH1 0x03
00000f39: SWAP2
00000f3a: POP
00000f3b: JUMPDEST
00000f3c: PUSH2 0x0f45
00000f3f: JUMP
00000f40: JUMPDEST
00000f41: PUSH1 0x02
00000f43: SWAP2
00000f44: POP
00000f45: JUMPDEST
00000f46: PUSH2 0x0f4f
00000f49: JUMP
00000f4a: JUMPDEST
00000f4b: PUSH1 0x01
00000f4d: SWAP2
00000f4e: POP
00000f4f: JUMPDEST
00000f50: PUSH1 0x00
00000f52: SWAP6
00000f53: DUP7
00000f54: MSTORE
00000f55: PUSH1 0x06
00000f57: PUSH1 0x20
00000f59: MSTORE
00000f5a: PUSH1 0x40
00000f5c: SWAP1
00000f5d: SWAP6
00000f5e: KECCAK256
00000f5f: PUSH1 0x01
00000f61: ADD
00000f62: DUP1
00000f63: SLOAD
00000f64: PUSH1 0xff
00000f66: SWAP7
00000f67: DUP8
00000f68: AND
00000f69: PUSH2 0x0100
00000f6c: MUL
00000f6d: PUSH2 0xff00
00000f70: NOT
00000f71: SWAP8
00000f72: SWAP1
00000f73: SWAP4
00000f74: AND
00000f75: PUSH1 0xff
00000f77: NOT
00000f78: SWAP1
00000f79: SWAP2
00000f7a: AND
00000f7b: OR
00000f7c: SWAP6
00000f7d: SWAP1
00000f7e: SWAP6
00000f7f: AND
00000f80: OR
00000f81: SWAP1
00000f82: SWAP4
00000f83: SSTORE
00000f84: POP
00000f85: SWAP1
00000f86: SWAP3
00000f87: SWAP2
00000f88: POP
00000f89: POP
00000f8a: JUMP
00000f8b: JUMPDEST
00000f8c: PUSH1 0x00
00000f8e: DUP1
00000f8f: PUSH1 0x00
00000f91: DUP1
00000f92: PUSH1 0x00
00000f94: DUP1
00000f95: PUSH2 0x0fa2
00000f98: PUSH1 0x10
00000f9a: SLOAD
00000f9b: PUSH1 0x11
00000f9d: SLOAD
00000f9e: PUSH2 0x0d87
00000fa1: JUMP
00000fa2: JUMPDEST
00000fa3: PUSH1 0x10
00000fa5: DUP2
00000fa6: SWAP1
00000fa7: SSTORE
00000fa8: PUSH1 0x0f
00000faa: SLOAD
00000fab: PUSH2 0x0fb3
00000fae: SWAP2
00000faf: PUSH2 0x0d87
00000fb2: JUMP
00000fb3: JUMPDEST
00000fb4: PUSH1 0x0f
00000fb6: DUP2
00000fb7: SWAP1
00000fb8: SSTORE
00000fb9: PUSH1 0x0e
00000fbb: SLOAD
00000fbc: PUSH2 0x0fc4
00000fbf: SWAP2
00000fc0: PUSH2 0x0d87
00000fc3: JUMP
00000fc4: JUMPDEST
00000fc5: PUSH1 0x0e
00000fc7: DUP2
00000fc8: SWAP1
00000fc9: SSTORE
00000fca: ISZERO
00000fcb: ISZERO
00000fcc: PUSH2 0x0fd9
00000fcf: JUMPI
00000fd0: PUSH1 0x0c
00000fd2: SLOAD
00000fd3: SWAP6
00000fd4: POP
00000fd5: PUSH2 0x1110
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH1 0x0c
00000fdc: SLOAD
00000fdd: PUSH1 0x0a
00000fdf: SWAP1
00000fe0: DIV
00000fe1: SWAP5
00000fe2: POP
00000fe3: PUSH2 0x0fed
00000fe6: DUP6
00000fe7: PUSH1 0x04
00000fe9: PUSH2 0x0bdc
00000fec: JUMP
00000fed: JUMPDEST
00000fee: SWAP4
00000fef: POP
00000ff0: PUSH2 0x0ffb
00000ff3: DUP5
00000ff4: PUSH1 0x02
00000ff6: DUP8
00000ff7: PUSH2 0x0c6d
00000ffa: JUMP
00000ffb: JUMPDEST
00000ffc: SWAP3
00000ffd: POP
00000ffe: PUSH2 0x1009
00001001: PUSH1 0x0c
00001003: SLOAD
00001004: DUP5
00001005: PUSH2 0x1250
00001008: JUMP
00001009: JUMPDEST
0000100a: SWAP2
0000100b: POP
0000100c: PUSH2 0x1015
0000100f: DUP3
00001010: DUP6
00001011: PUSH2 0x1250
00001014: JUMP
00001015: JUMPDEST
00001016: SWAP2
00001017: POP
00001018: PUSH2 0x1021
0000101b: DUP3
0000101c: DUP7
0000101d: PUSH2 0x1250
00001020: JUMP
00001021: JUMPDEST
00001022: SWAP2
00001023: POP
00001024: PUSH1 0x00
00001026: PUSH1 0x11
00001028: SLOAD
00001029: GT
0000102a: ISZERO
0000102b: PUSH2 0x1054
0000102e: JUMPI
0000102f: PUSH1 0x11
00001031: SLOAD
00001032: DUP6
00001033: DUP2
00001034: ISZERO
00001035: ISZERO
00001036: PUSH2 0x103b
00001039: JUMPI
0000103a: INVALID
0000103b: JUMPDEST
0000103c: MOD
0000103d: SWAP1
0000103e: POP
0000103f: PUSH1 0x11
00001041: SLOAD
00001042: DUP6
00001043: DUP2
00001044: ISZERO
00001045: ISZERO
00001046: PUSH2 0x104b
00001049: JUMPI
0000104a: INVALID
0000104b: JUMPDEST
0000104c: DIV
0000104d: PUSH1 0x11
0000104f: SSTORE
00001050: PUSH2 0x1057
00001053: JUMP
00001054: JUMPDEST
00001055: POP
00001056: DUP4
00001057: JUMPDEST
00001058: PUSH1 0x00
0000105a: PUSH1 0x10
0000105c: SLOAD
0000105d: GT
0000105e: ISZERO
0000105f: PUSH2 0x1091
00001062: JUMPI
00001063: PUSH2 0x1079
00001066: DUP2
00001067: PUSH1 0x10
00001069: SLOAD
0000106a: DUP7
0000106b: DUP2
0000106c: ISZERO
0000106d: ISZERO
0000106e: PUSH2 0x1073
00001071: JUMPI
00001072: INVALID
00001073: JUMPDEST
00001074: MOD
00001075: PUSH2 0x0d87
00001078: JUMP
00001079: JUMPDEST
0000107a: SWAP1
0000107b: POP
0000107c: PUSH1 0x10
0000107e: SLOAD
0000107f: DUP5
00001080: DUP2
00001081: ISZERO
00001082: ISZERO
00001083: PUSH2 0x1088
00001086: JUMPI
00001087: INVALID
00001088: JUMPDEST
00001089: DIV
0000108a: PUSH1 0x10
0000108c: SSTORE
0000108d: PUSH2 0x109e
00001090: JUMP
00001091: JUMPDEST
00001092: PUSH2 0x109b
00001095: DUP2
00001096: DUP6
00001097: PUSH2 0x0d87
0000109a: JUMP
0000109b: JUMPDEST
0000109c: SWAP1
0000109d: POP
0000109e: JUMPDEST
0000109f: PUSH1 0x00
000010a1: PUSH1 0x0f
000010a3: SLOAD
000010a4: GT
000010a5: ISZERO
000010a6: PUSH2 0x10d2
000010a9: JUMPI
000010aa: PUSH2 0x10ba
000010ad: DUP2
000010ae: PUSH1 0x0f
000010b0: SLOAD
000010b1: DUP6
000010b2: DUP2
000010b3: ISZERO
000010b4: ISZERO
000010b5: PUSH2 0x1073
000010b8: JUMPI
000010b9: INVALID
000010ba: JUMPDEST
000010bb: SWAP1
000010bc: POP
000010bd: PUSH1 0x0f
000010bf: SLOAD
000010c0: DUP4
000010c1: DUP2
000010c2: ISZERO
000010c3: ISZERO
000010c4: PUSH2 0x10c9
000010c7: JUMPI
000010c8: INVALID
000010c9: JUMPDEST
000010ca: DIV
000010cb: PUSH1 0x0f
000010cd: SSTORE
000010ce: PUSH2 0x10df
000010d1: JUMP
000010d2: JUMPDEST
000010d3: PUSH2 0x10dc
000010d6: DUP2
000010d7: DUP5
000010d8: PUSH2 0x0d87
000010db: JUMP
000010dc: JUMPDEST
000010dd: SWAP1
000010de: POP
000010df: JUMPDEST
000010e0: PUSH2 0x10e9
000010e3: DUP3
000010e4: DUP3
000010e5: PUSH2 0x0d87
000010e8: JUMP
000010e9: JUMPDEST
000010ea: SWAP2
000010eb: POP
000010ec: PUSH1 0x0e
000010ee: SLOAD
000010ef: DUP3
000010f0: DUP2
000010f1: ISZERO
000010f2: ISZERO
000010f3: PUSH2 0x10f8
000010f6: JUMPI
000010f7: INVALID
000010f8: JUMPDEST
000010f9: MOD
000010fa: SWAP1
000010fb: POP
000010fc: PUSH1 0x0e
000010fe: SLOAD
000010ff: DUP3
00001100: DUP2
00001101: ISZERO
00001102: ISZERO
00001103: PUSH2 0x1108
00001106: JUMPI
00001107: INVALID
00001108: JUMPDEST
00001109: DIV
0000110a: PUSH1 0x0e
0000110c: SSTORE
0000110d: SWAP5
0000110e: POP
0000110f: DUP5
00001110: JUMPDEST
00001111: POP
00001112: POP
00001113: POP
00001114: POP
00001115: POP
00001116: SWAP1
00001117: JUMP
00001118: JUMPDEST
00001119: PUSH1 0x00
0000111b: DUP1
0000111c: PUSH1 0xff
0000111e: DUP5
0000111f: AND
00001120: DUP2
00001121: SWAP1
00001122: GT
00001123: ISZERO
00001124: PUSH2 0x113a
00001127: JUMPI
00001128: PUSH2 0x1137
0000112b: DUP2
0000112c: PUSH2 0x0593
0000112f: DUP6
00001130: PUSH1 0x0e
00001132: SLOAD
00001133: PUSH2 0x0bdc
00001136: JUMP
00001137: JUMPDEST
00001138: SWAP1
00001139: POP
0000113a: JUMPDEST
0000113b: PUSH1 0x01
0000113d: DUP5
0000113e: PUSH1 0xff
00001140: AND
00001141: GT
00001142: ISZERO
00001143: PUSH2 0x1159
00001146: JUMPI
00001147: PUSH2 0x1156
0000114a: DUP2
0000114b: PUSH2 0x0593
0000114e: DUP6
0000114f: PUSH1 0x0f
00001151: SLOAD
00001152: PUSH2 0x0bdc
00001155: JUMP
00001156: JUMPDEST
00001157: SWAP1
00001158: POP
00001159: JUMPDEST
0000115a: PUSH1 0x02
0000115c: DUP5
0000115d: PUSH1 0xff
0000115f: AND
00001160: GT
00001161: ISZERO
00001162: PUSH2 0x1178
00001165: JUMPI
00001166: PUSH2 0x1175
00001169: DUP2
0000116a: PUSH2 0x0593
0000116d: DUP6
0000116e: PUSH1 0x10
00001170: SLOAD
00001171: PUSH2 0x0bdc
00001174: JUMP
00001175: JUMPDEST
00001176: SWAP1
00001177: POP
00001178: JUMPDEST
00001179: PUSH1 0x03
0000117b: DUP5
0000117c: PUSH1 0xff
0000117e: AND
0000117f: GT
00001180: ISZERO
00001181: PUSH2 0x0c00
00001184: JUMPI
00001185: PUSH2 0x1194
00001188: DUP2
00001189: PUSH2 0x0593
0000118c: DUP6
0000118d: PUSH1 0x11
0000118f: SLOAD
00001190: PUSH2 0x0bdc
00001193: JUMP
00001194: JUMPDEST
00001195: SWAP5
00001196: SWAP4
00001197: POP
00001198: POP
00001199: POP
0000119a: POP
0000119b: JUMP
0000119c: JUMPDEST
0000119d: PUSH1 0x14
0000119f: SLOAD
000011a0: PUSH1 0x00
000011a2: SWAP1
000011a3: DUP2
000011a4: SWAP1
000011a5: DUP2
000011a6: SWAP1
000011a7: DUP2
000011a8: SWAP1
000011a9: DUP2
000011aa: SWAP1
000011ab: DUP2
000011ac: SWAP1
000011ad: DUP2
000011ae: SWAP1
000011af: PUSH1 0x01
000011b1: PUSH1 0xa0
000011b3: PUSH1 0x02
000011b5: EXP
000011b6: SUB
000011b7: AND
000011b8: PUSH4 0x9507d39a
000011bd: DUP10
000011be: DUP4
000011bf: PUSH1 0x40
000011c1: MLOAD
000011c2: PUSH1 0xe0
000011c4: ADD
000011c5: MSTORE
000011c6: PUSH1 0x40
000011c8: MLOAD
000011c9: PUSH1 0xe0
000011cb: PUSH1 0x02
000011cd: EXP
000011ce: PUSH4 0xffffffff
000011d3: DUP5
000011d4: AND
000011d5: MUL
000011d6: DUP2
000011d7: MSTORE
000011d8: PUSH1 0x04
000011da: DUP2
000011db: ADD
000011dc: SWAP2
000011dd: SWAP1
000011de: SWAP2
000011df: MSTORE
000011e0: PUSH1 0x24
000011e2: ADD
000011e3: PUSH1 0xe0
000011e5: PUSH1 0x40
000011e7: MLOAD
000011e8: DUP1
000011e9: DUP4
000011ea: SUB
000011eb: DUP2
000011ec: PUSH1 0x00
000011ee: DUP8
000011ef: DUP1
000011f0: EXTCODESIZE
000011f1: ISZERO
000011f2: ISZERO
000011f3: PUSH2 0x11fb
000011f6: JUMPI
000011f7: PUSH1 0x00
000011f9: DUP1
000011fa: REVERT
000011fb: JUMPDEST
000011fc: PUSH2 0x02c6
000011ff: GAS
00001200: SUB
00001201: CALL
00001202: ISZERO
00001203: ISZERO
00001204: PUSH2 0x120c
00001207: JUMPI
00001208: PUSH1 0x00
0000120a: DUP1
0000120b: REVERT
0000120c: JUMPDEST
0000120d: POP
0000120e: POP
0000120f: POP
00001210: PUSH1 0x40
00001212: MLOAD
00001213: DUP1
00001214: MLOAD
00001215: SWAP1
00001216: PUSH1 0x20
00001218: ADD
00001219: DUP1
0000121a: MLOAD
0000121b: SWAP1
0000121c: PUSH1 0x20
0000121e: ADD
0000121f: DUP1
00001220: MLOAD
00001221: SWAP1
00001222: PUSH1 0x20
00001224: ADD
00001225: DUP1
00001226: MLOAD
00001227: SWAP1
00001228: PUSH1 0x20
0000122a: ADD
0000122b: DUP1
0000122c: MLOAD
0000122d: SWAP1
0000122e: PUSH1 0x20
00001230: ADD
00001231: DUP1
00001232: MLOAD
00001233: SWAP1
00001234: PUSH1 0x20
00001236: ADD
00001237: DUP1
00001238: MLOAD
00001239: SWAP16
0000123a: SWAP7
0000123b: SWAP15
0000123c: POP
0000123d: SWAP3
0000123e: SWAP13
0000123f: POP
00001240: SWAP4
00001241: SWAP11
00001242: POP
00001243: SWAP2
00001244: SWAP9
00001245: POP
00001246: SWAP3
00001247: SWAP7
00001248: POP
00001249: POP
0000124a: POP
0000124b: POP
0000124c: POP
0000124d: POP
0000124e: POP
0000124f: JUMP
00001250: JUMPDEST
00001251: PUSH1 0x00
00001253: PUSH2 0x125e
00001256: DUP4
00001257: DUP4
00001258: GT
00001259: ISZERO
0000125a: PUSH2 0x134e
0000125d: JUMP
0000125e: JUMPDEST
0000125f: POP
00001260: SWAP1
00001261: SUB
00001262: SWAP1
00001263: JUMP
00001264: JUMPDEST
00001265: PUSH1 0x00
00001267: DUP1
00001268: PUSH1 0x00
0000126a: PUSH1 0x04
0000126c: SLOAD
0000126d: DUP5
0000126e: LT
0000126f: ISZERO
00001270: ISZERO
00001271: ISZERO
00001272: PUSH2 0x127a
00001275: JUMPI
00001276: PUSH1 0x00
00001278: DUP1
00001279: REVERT
0000127a: JUMPDEST
0000127b: PUSH1 0x05
0000127d: SLOAD
0000127e: PUSH1 0x04
00001280: SLOAD
00001281: ADD
00001282: DUP5
00001283: GT
00001284: ISZERO
00001285: PUSH2 0x128d
00001288: JUMPI
00001289: PUSH1 0x00
0000128b: DUP1
0000128c: REVERT
0000128d: JUMPDEST
0000128e: PUSH1 0x64
00001290: PUSH2 0x12a4
00001293: PUSH8 0x0de0b6b3a7640000
0000129c: DUP8
0000129d: DIV
0000129e: PUSH1 0x64
000012a0: PUSH2 0x0d87
000012a3: JUMP
000012a4: JUMPDEST
000012a5: DUP2
000012a6: ISZERO
000012a7: ISZERO
000012a8: PUSH2 0x12ad
000012ab: JUMPI
000012ac: INVALID
000012ad: JUMPDEST
000012ae: DIV
000012af: SWAP2
000012b0: POP
000012b1: PUSH1 0x05
000012b3: SLOAD
000012b4: PUSH2 0x12d4
000012b7: PUSH1 0x96
000012b9: PUSH2 0x12cf
000012bc: PUSH1 0x05
000012be: SLOAD
000012bf: PUSH2 0x12ca
000012c2: DUP10
000012c3: PUSH1 0x04
000012c5: SLOAD
000012c6: PUSH2 0x1250
000012c9: JUMP
000012ca: JUMPDEST
000012cb: PUSH2 0x1250
000012ce: JUMP
000012cf: JUMPDEST
000012d0: PUSH2 0x0bdc
000012d3: JUMP
000012d4: JUMPDEST
000012d5: DUP2
000012d6: ISZERO
000012d7: ISZERO
000012d8: PUSH2 0x12dd
000012db: JUMPI
000012dc: INVALID
000012dd: JUMPDEST
000012de: DIV
000012df: SWAP1
000012e0: POP
000012e1: PUSH2 0x12ec
000012e4: DUP2
000012e5: PUSH2 0x03e8
000012e8: PUSH2 0x0d87
000012eb: JUMP
000012ec: JUMPDEST
000012ed: SWAP1
000012ee: POP
000012ef: PUSH2 0x12f8
000012f2: DUP3
000012f3: DUP3
000012f4: PUSH2 0x0bdc
000012f7: JUMP
000012f8: JUMPDEST
000012f9: PUSH2 0x03e8
000012fc: SWAP1
000012fd: DIV
000012fe: SWAP2
000012ff: POP
00001300: PUSH32 0xfd3605c3334acd84c29f8601e62dfa6e1c6b3a489b07b4838025f3cf91560450
00001321: DUP6
00001322: DUP4
00001323: DUP4
00001324: PUSH1 0x40
00001326: MLOAD
00001327: DUP1
00001328: DUP5
00001329: DUP2
0000132a: MSTORE
0000132b: PUSH1 0x20
0000132d: ADD
0000132e: DUP4
0000132f: DUP2
00001330: MSTORE
00001331: PUSH1 0x20
00001333: ADD
00001334: DUP3
00001335: DUP2
00001336: MSTORE
00001337: PUSH1 0x20
00001339: ADD
0000133a: SWAP4
0000133b: POP
0000133c: POP
0000133d: POP
0000133e: POP
0000133f: PUSH1 0x40
00001341: MLOAD
00001342: DUP1
00001343: SWAP2
00001344: SUB
00001345: SWAP1
00001346: LOG1
00001347: POP
00001348: SWAP4
00001349: SWAP3
0000134a: POP
0000134b: POP
0000134c: POP
0000134d: JUMP
0000134e: JUMPDEST
0000134f: DUP1
00001350: ISZERO
00001351: ISZERO
00001352: PUSH2 0x09bd
00001355: JUMPI
00001356: PUSH1 0x00
00001358: DUP1
00001359: REVERT
0000135a: JUMPDEST
0000135b: PUSH1 0x00
0000135d: DUP1
0000135e: PUSH1 0x00
00001360: DUP1
00001361: PUSH2 0x136c
00001364: PUSH2 0x03e8
00001367: DUP7
00001368: PUSH2 0x1250
0000136b: JUMP
0000136c: JUMPDEST
0000136d: SWAP2
0000136e: POP
0000136f: PUSH2 0x03e8
00001372: PUSH2 0x137d
00001375: PUSH1 0x01
00001377: SLOAD
00001378: DUP5
00001379: PUSH2 0x0bdc
0000137c: JUMP
0000137d: JUMPDEST
0000137e: DUP2
0000137f: ISZERO
00001380: ISZERO
00001381: PUSH2 0x1386
00001384: JUMPI
00001385: INVALID
00001386: JUMPDEST
00001387: DIV
00001388: SWAP4
00001389: POP
0000138a: DUP2
0000138b: PUSH2 0x1396
0000138e: PUSH2 0x03e8
00001391: DUP8
00001392: PUSH2 0x0bdc
00001395: JUMP
00001396: JUMPDEST
00001397: DUP2
00001398: ISZERO
00001399: ISZERO
0000139a: PUSH2 0x139f
0000139d: JUMPI
0000139e: INVALID
0000139f: JUMPDEST
000013a0: DIV
000013a1: SWAP1
000013a2: POP
000013a3: PUSH2 0x03e8
000013a6: PUSH2 0x13b7
000013a9: PUSH1 0x01
000013ab: SLOAD
000013ac: PUSH2 0x12cf
000013af: PUSH2 0x03e8
000013b2: DUP6
000013b3: PUSH2 0x0d87
000013b6: JUMP
000013b7: JUMPDEST
000013b8: DUP2
000013b9: ISZERO
000013ba: ISZERO
000013bb: PUSH2 0x13c0
000013be: JUMPI
000013bf: INVALID
000013c0: JUMPDEST
000013c1: DIV
000013c2: SWAP3
000013c3: POP
000013c4: POP
000013c5: POP
000013c6: SWAP2
000013c7: POP
000013c8: SWAP2
000013c9: JUMP
000013ca: JUMPDEST
000013cb: PUSH2 0x0180
000013ce: PUSH1 0x40
000013d0: MLOAD
000013d1: SWAP1
000013d2: DUP2
000013d3: ADD
000013d4: PUSH1 0x40
000013d6: MSTORE
000013d7: DUP1
000013d8: PUSH1 0x00
000013da: DUP2
000013db: MSTORE
000013dc: PUSH1 0x20
000013de: ADD
000013df: PUSH1 0x00
000013e1: DUP2
000013e2: MSTORE
000013e3: PUSH1 0x20
000013e5: ADD
000013e6: PUSH1 0x00
000013e8: DUP2
000013e9: MSTORE
000013ea: PUSH1 0x20
000013ec: ADD
000013ed: PUSH1 0x00
000013ef: DUP2
000013f0: MSTORE
000013f1: PUSH1 0x20
000013f3: ADD
000013f4: PUSH1 0x00
000013f6: DUP2
000013f7: MSTORE
000013f8: PUSH1 0x20
000013fa: ADD
000013fb: PUSH1 0x00
000013fd: DUP2
000013fe: MSTORE
000013ff: PUSH1 0x20
00001401: ADD
00001402: PUSH1 0x00
00001404: DUP2
00001405: MSTORE
00001406: PUSH1 0x20
00001408: ADD
00001409: PUSH1 0x00
0000140b: DUP2
0000140c: MSTORE
0000140d: PUSH1 0x20
0000140f: ADD
00001410: PUSH1 0x00
00001412: DUP2
00001413: MSTORE
00001414: PUSH1 0x20
00001416: ADD
00001417: PUSH1 0x00
00001419: DUP2
0000141a: MSTORE
0000141b: PUSH1 0x20
0000141d: ADD
0000141e: PUSH1 0x00
00001420: DUP2
00001421: MSTORE
00001422: PUSH1 0x20
00001424: ADD
00001425: PUSH1 0x00
00001427: DUP2
00001428: MSTORE
00001429: POP
0000142a: SWAP1
0000142b: JUMP
0000142c: JUMPDEST
0000142d: PUSH1 0x00
0000142f: DUP4
00001430: ISZERO
00001431: ISZERO
00001432: PUSH2 0x143a
00001435: JUMPI
00001436: PUSH1 0x00
00001438: DUP1
00001439: REVERT
0000143a: JUMPDEST
0000143b: DUP4
0000143c: DUP4
0000143d: GT
0000143e: PUSH2 0x1446
00001441: JUMPI
00001442: PUSH1 0x00
00001444: DUP1
00001445: REVERT
00001446: JUMPDEST
00001447: DUP2
00001448: ISZERO
00001449: ISZERO
0000144a: PUSH2 0x1452
0000144d: JUMPI
0000144e: PUSH1 0x00
00001450: DUP1
00001451: REVERT
00001452: JUMPDEST
00001453: DUP2
00001454: DUP5
00001455: DUP2
00001456: ISZERO
00001457: ISZERO
00001458: PUSH2 0x145d
0000145b: JUMPI
0000145c: INVALID
0000145d: JUMPDEST
0000145e: MOD
0000145f: ISZERO
00001460: PUSH2 0x1468
00001463: JUMPI
00001464: PUSH1 0x00
00001466: DUP1
00001467: REVERT
00001468: JUMPDEST
00001469: DUP2
0000146a: DUP4
0000146b: DUP2
0000146c: ISZERO
0000146d: ISZERO
0000146e: PUSH2 0x1473
00001471: JUMPI
00001472: INVALID
00001473: JUMPDEST
00001474: MOD
00001475: ISZERO
00001476: PUSH2 0x147e
00001479: JUMPI
0000147a: PUSH1 0x00
0000147c: DUP1
0000147d: REVERT
0000147e: JUMPDEST
0000147f: POP
00001480: PUSH1 0x07
00001482: DUP4
00001483: SWAP1
00001484: SSTORE
00001485: PUSH1 0x08
00001487: DUP3
00001488: SWAP1
00001489: SSTORE
0000148a: PUSH1 0x09
0000148c: DUP2
0000148d: SWAP1
0000148e: SSTORE
0000148f: DUP3
00001490: JUMPDEST
00001491: DUP3
00001492: DUP2
00001493: GT
00001494: PUSH2 0x14be
00001497: JUMPI
00001498: PUSH1 0x00
0000149a: DUP2
0000149b: DUP2
0000149c: MSTORE
0000149d: PUSH1 0x06
0000149f: PUSH1 0x20
000014a1: MSTORE
000014a2: PUSH1 0x40
000014a4: SWAP1
000014a5: KECCAK256
000014a6: PUSH1 0x01
000014a8: ADD
000014a9: DUP1
000014aa: SLOAD
000014ab: PUSH3 0xff0000
000014af: NOT
000014b0: AND
000014b1: PUSH3 0x010000
000014b5: OR
000014b6: SWAP1
000014b7: SSTORE
000014b8: DUP2
000014b9: ADD
000014ba: PUSH2 0x1490
000014bd: JUMP
000014be: JUMPDEST
000014bf: POP
000014c0: POP
000014c1: POP
000014c2: POP
000014c3: JUMP
000014c4: JUMPDEST
000014c5: PUSH1 0x00
000014c7: DUP6
000014c8: GT
000014c9: PUSH2 0x14d1
000014cc: JUMPI
000014cd: PUSH1 0x00
000014cf: DUP1
000014d0: REVERT
000014d1: JUMPDEST
000014d2: PUSH1 0x00
000014d4: DUP5
000014d5: GT
000014d6: DUP1
000014d7: ISZERO
000014d8: PUSH2 0x14e2
000014db: JUMPI
000014dc: POP
000014dd: PUSH2 0x03e8
000014e0: DUP5
000014e1: LT
000014e2: JUMPDEST
000014e3: DUP1
000014e4: ISZERO
000014e5: PUSH2 0x14ee
000014e8: JUMPI
000014e9: POP
000014ea: DUP4
000014eb: DUP4
000014ec: LT
000014ed: ISZERO
000014ee: JUMPDEST
000014ef: DUP1
000014f0: ISZERO
000014f1: PUSH2 0x14fb
000014f4: JUMPI
000014f5: POP
000014f6: PUSH2 0x03e8
000014f9: DUP4
000014fa: LT
000014fb: JUMPDEST
000014fc: ISZERO
000014fd: ISZERO
000014fe: PUSH2 0x1506
00001501: JUMPI
00001502: PUSH1 0x00
00001504: DUP1
00001505: REVERT
00001506: JUMPDEST
00001507: DUP1
00001508: DUP3
00001509: LT
0000150a: PUSH2 0x1512
0000150d: JUMPI
0000150e: PUSH1 0x00
00001510: DUP1
00001511: REVERT
00001512: JUMPDEST
00001513: PUSH1 0x01
00001515: DUP6
00001516: SWAP1
00001517: SSTORE
00001518: PUSH1 0x02
0000151a: DUP5
0000151b: SWAP1
0000151c: SSTORE
0000151d: PUSH1 0x03
0000151f: DUP4
00001520: SWAP1
00001521: SSTORE
00001522: PUSH1 0x04
00001524: DUP3
00001525: SWAP1
00001526: SSTORE
00001527: PUSH2 0x1530
0000152a: DUP2
0000152b: DUP4
0000152c: PUSH2 0x1250
0000152f: JUMP
00001530: JUMPDEST
00001531: PUSH1 0x05
00001533: SSTORE
00001534: POP
00001535: POP
00001536: POP
00001537: POP
00001538: POP
00001539: JUMP
0000153a: STOP
0000153b: LOG1
0000153c: PUSH6 0x627a7a723058
00001543: KECCAK256
00001544: SWAP16
00001545: GASPRICE
00001546: UNKNOWN(0xDB)
00001547: GAS
00001548: PUSH1 0xa2
0000154a: NUMBER
0000154b: PUSH23 0x07d142f44202cecc3c43906b32a4d078a98cc39d9e116f
00001563: SMOD
00001564: STOP
00001565: UNKNOWN(0x29)

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: 0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec
call_targets: 0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0d15fd77",
            "selector": "0x0d15fd77",
            "calldata_variants": [
                "0x0d15fd77",
                "0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e6dbdf9",
            "selector": "0x2e6dbdf9",
            "calldata_variants": [
                "0x2e6dbdf9",
                "0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e854433",
            "selector": "0x2e854433",
            "calldata_variants": [
                "0x2e854433",
                "0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3b97e856",
            "selector": "0x3b97e856",
            "calldata_variants": [
                "0x3b97e856",
                "0x3b97e8560000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x47799092",
            "selector": "0x47799092",
            "calldata_variants": [
                "0x47799092",
                "0x477990920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4783c35b",
            "selector": "0x4783c35b",
            "calldata_variants": [
                "0x4783c35b",
                "0x4783c35b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4b60ce77",
            "selector": "0x4b60ce77",
            "calldata_variants": [
                "0x4b60ce77",
                "0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4fb2e45d",
            "selector": "0x4fb2e45d",
            "calldata_variants": [
                "0x4fb2e45d",
                "0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 743,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 911,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1536,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 9,
    "guards_detected": [],
    "untrusted_call_count": 9
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec
call_targets: 0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x79e19507f3f93d0389019e87263654f2b7e89175842f753dc0d8199dcc496eec",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xfd7c0c06a5bd450a8fe755eae5dc4915ea7dfc74"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0d15fd77",
            "selector": "0x0d15fd77",
            "calldata_variants": [
                "0x0d15fd77",
                "0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e6dbdf9",
            "selector": "0x2e6dbdf9",
            "calldata_variants": [
                "0x2e6dbdf9",
                "0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e854433",
            "selector": "0x2e854433",
            "calldata_variants": [
                "0x2e854433",
                "0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3b97e856",
            "selector": "0x3b97e856",
            "calldata_variants": [
                "0x3b97e856",
                "0x3b97e8560000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x47799092",
            "selector": "0x47799092",
            "calldata_variants": [
                "0x47799092",
                "0x477990920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4783c35b",
            "selector": "0x4783c35b",
            "calldata_variants": [
                "0x4783c35b",
                "0x4783c35b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4b60ce77",
            "selector": "0x4b60ce77",
            "calldata_variants": [
                "0x4b60ce77",
                "0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4fb2e45d",
            "selector": "0x4fb2e45d",
            "calldata_variants": [
                "0x4fb2e45d",
                "0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 743,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 911,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1536,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 9,
    "guards_detected": []
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 9
}