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

Analysis Run

019bb50b-e195-72fc-abd3-1ddddddd15da

complete
Chain ID
1
Address
Block Number
Created
Tue, Jan 13, 2026 1:50 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
Present
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
40415 artifact.fetch complete 1 / 3 3 months ago
40416 proxy.resolve complete 1 / 3 3 months ago
40417 tool.cast_disasm complete 1 / 3 3 months ago
40418 analysis.bundle complete 1 / 3 3 months ago
40419 capability.graph complete 1 / 3 3 months ago
40420 detector.run complete 1 / 3 3 months ago
40421 validation.fork complete 1 / 3 3 months ago
40500 report.consolidate complete 1 / 6 3 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: no
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).
View stdout
{"no_findings":false,"summary":"Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).","findings":[{"severity":"medium","category":"other","title":"Computed external CALLs with possible ETH transfer; target/access control unclear","exploit_scenario":"If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior.","recommendation":"Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.","evidence":"Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.","locations":["pc:2055","pc:2385","pc:2967","pc:3289"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-hcevps8e
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb53a-d41f-71c2-91ff-089d4321453e
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers

thinking
**Preparing to read BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-hcevps8e succeeded in 9ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-hcevps8e succeeded in 7ms:
{
  "analysis_artifact": {
    "address": "0xb035e18ee8d98e6f54810c9337ab6524caeef875",
    "artifact_hash": "0xa5dc857c8ca2013aa1b6c845aa835db801bf11ef84a4cde34b4032ead5389c2f",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 12,
          "hash": "0xce0b0b3e400fed3195d1d1fadf3ac682e910b7f2c8586ca7f599b952a163c2e5",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "CALLDATASIZE",
            "LT",
            "PUSH2",

thinking
**Searching for storage references**
exec
/bin/bash -lc 'rg -n "storage|delegatecall|proxy|eip-1967|beacon|admin|owner|auth|guard|reentr" BYTECODE_BUNDLE.json' in /tmp/codex-hcevps8e succeeded in 7ms:
6:      "auth": {
7:        "guards": []
5565:          "auth": {
5566:            "guards": []
5572:            "delegatecall": 0,
5576:          "storage": {
5799:          "auth": {
5800:            "guards": []
5806:            "delegatecall": 0,
5810:          "storage": {
6033:          "auth": {
6034:            "guards": []
6040:            "delegatecall": 0,
6044:          "storage": {
6267:          "auth": {
6268:            "guards": []
6274:            "delegatecall": 0,
6278:          "storage": {
6501:          "auth": {
6502:            "guards": []

thinking
**Investigating storage and callsite references**
exec
/bin/bash -lc 'rg -n "callsite|callsites|evidence_bundle|storage" BYTECODE_BUNDLE.json | head -n 50' in /tmp/codex-hcevps8e succeeded in 27ms:
4327:      "callsites": [
5576:          "storage": {
5810:          "storage": {
6044:          "storage": {
6278:          "storage": {
6512:          "storage": {
6746:          "storage": {
6980:          "storage": {
7214:          "storage": {
7448:          "storage": {
7682:          "storage": {
7916:          "storage": {
8150:          "storage": {
8384:          "storage": {
8618:          "storage": {
8852:          "storage": {
9086:          "storage": {
9320:          "storage": {
9571:      "storage": {
12670:          "type": "callsite"

thinking
**Searching for callsite references**
exec
/bin/bash -lc "sed -n '4300,4405p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 7ms:
            "PUSH6",
            "PUSH16",
            "SHA3",
            "PUSH15",
            "SHA3",
            "MSTORE8",
            "PUSH9",
            "PUSH22",
            "PUSH20",
            "PUSH27",
            "PUSH4",
            "SHA3",
            "PUSH9",
            "PUSH19",
            "PUSH19",
            "GASLIMIT",
            "PUSH21",
            "PUSH2",
            "PUSH6",
            "SHA3",

thinking
**Searching for storage configurations**
exec
/bin/bash -lc "sed -n '5550,5595p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 6ms:
        {
          "entry_pc": 538071414,
          "selector": "0x1eb05b0f"
        },
        {
          "entry_pc": 594712484,
          "selector": "0x20125176"
        },
        {
          "entry_pc": 0,
          "selector": "0x237297a4"
        }
      ],
      "functions": [
        {
          "auth": {
            "guards": []
          },
          "entry_pc": 3957847904,
          "selector": "0xebe7f760",

thinking
**Analyzing functions for storage writes and calls**

I'm planning to parse JSON data with Python to pinpoint functions that perform storage writes and external calls but lack guards, which might signal reentrancy risks. Since source isn't available, I need to be cautious—especially interpreting call targets that appear to be the contract itself, which could mean internal or self-calls affecting msg.sender and complicating vulnerability assessment. I'll also check for evidence bundles or call graphs to refine this analysis.
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import defaultdict
import sys

path='BYTECODE_BUNDLE.json'
with open(path) as f:
    data=json.load(f)

artifact=data.get('analysis_artifact',{}).get('artifact_json',{})
functions=artifact.get('functions',[])
print('functions',len(functions))
# summarize calls and storage writes
rows=[]
for fn in functions:
    sel=fn.get('selector')
    entry=fn.get('entry_pc')
    sinks=fn.get('sinks',{})
    storage=fn.get('storage',{})
    writes=storage.get('writes',0)
    reads=storage.get('reads',0)
    call=sinks.get('call',0)
    staticcall=sinks.get('staticcall',0)
    delegate=sinks.get('delegatecall',0)
    guards=fn.get('auth',{}).get('guards',[])
    if call or staticcall or delegate or writes:
        rows.append((sel,entry,call,staticcall,delegate,writes,reads,len(guards)))

rows_sorted=sorted(rows,key=lambda x:(-(x[2]+x[3]+x[4]),-x[5]))
for r in rows_sorted[:20]:
    print(r)

# functions with call and writes
cw=[r for r in rows if r[2]>0 and r[5]>0]
print('call+write',len(cw))
for r in sorted(cw,key=lambda x:(-x[2],-x[5]))[:10]:
    print(r)

# list selectors missing entry
miss=[fn.get('selector') for fn in functions if fn.get('entry_pc') is None]
print('missing entry',miss)
PY" in /tmp/codex-hcevps8e succeeded in 78ms:
functions 17
('0xebe7f760', 3957847904, 4, 1, 0, 9, 51, 0)
('0xf372872d', 4141367631, 4, 1, 0, 9, 51, 0)
('0xf6d8414f', 4191690960, 4, 1, 0, 9, 51, 0)
('0xf9d820d0', 4214497825, 4, 1, 0, 9, 51, 0)
('0xfb342221', None, 4, 1, 0, 9, 51, 0)
('0x6dce6c5e', 1872738698, 4, 1, 0, 9, 51, 0)
('0x6f9fb98a', 1987860130, 4, 1, 0, 9, 51, 0)
('0x767c56a2', 3787558279, 4, 1, 0, 9, 51, 0)
('0xe1c18d87', None, 4, 1, 0, 9, 51, 0)
('0x46965ef6', 1184259830, 4, 1, 0, 9, 51, 0)
('0x4faf2838', 1487898106, 4, 1, 0, 9, 51, 0)
('0x58af85fa', 1592174972, 4, 1, 0, 9, 51, 0)
('0x5ee6a97c', None, 4, 1, 0, 9, 51, 0)
('0x034ea411', 514874127, 4, 1, 0, 9, 51, 0)
('0x1eb05b0f', 538071414, 4, 1, 0, 9, 51, 0)
('0x20125176', 594712484, 4, 1, 0, 9, 51, 0)
('0x237297a4', 0, 4, 1, 0, 9, 51, 0)
call+write 17
('0xebe7f760', 3957847904, 4, 1, 0, 9, 51, 0)

thinking
**Analyzing function call and storage patterns**
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import Counter

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

functions=data['analysis_artifact']['artifact_json']['functions']
# collect write slots
slots=Counter()
write_pcs=[]
for fn in functions:
    storage=fn.get('storage',{})
    for s in storage.get('slots',[]):
        if s.get('op') in ('SSTORE','TSTORE'):  # maybe only SSTORE
            slots[s.get('slot')] += 1
            write_pcs.append((s.get('pc'),s.get('slot')))

print('write slots count',len(slots))
print('top slots',slots.most_common(10))
print('first few write pcs',write_pcs[:10])
PY" in /tmp/codex-hcevps8e succeeded in 39ms:
write slots count 1
top slots [('0x0000000000000000000000000000000000000000000000000000000000000000', 17)]
first few write pcs [(2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000')]

thinking
**Analyzing storage slot usage**
exec
/bin/bash -lc "python - <<'PY'
import json

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

fn=data['analysis_artifact']['artifact_json']['functions'][0]
print(fn['selector'])
slots=fn['storage']['slots']
# summarize unique slots and ops
from collections import OrderedDict
uniq=[]
seen=set()
for s in slots:
    key=(s['op'],s['slot'])
    if key not in seen:
        uniq.append(s)
        seen.add(key)
print('unique slots',len(uniq))
for s in uniq:
    print(s)
PY" in /tmp/codex-hcevps8e succeeded in 83ms:
0xebe7f760
unique slots 11
{'op': 'SLOAD', 'pc': 856, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000001'}
{'op': 'SLOAD', 'pc': 1098, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000005'}
{'op': 'SLOAD', 'pc': 1243, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000007'}
{'op': 'SLOAD', 'pc': 1309, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000002'}
{'op': 'SLOAD', 'pc': 1381, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000008'}
{'op': 'SLOAD', 'pc': 1468, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000009'}
{'op': 'SLOAD', 'pc': 1941, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000004'}
{'op': 'SLOAD', 'pc': 2310, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000006'}
{'op': 'SLOAD', 'pc': 2335, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000003'}
{'op': 'SSTORE', 'pc': 2357, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000000'}
{'op': 'SLOAD', 'pc': 2884, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000000'}

thinking
**Analyzing potential state update vulnerability**
exec
/bin/bash -lc "python - <<'PY'
import json

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# find blocks covering pc 2357 or call 2385 etc
pcs=[2357,2385,2055,2967,3289,931]
for pc in pcs:
    for bb in bbs:
        if bb['start_pc']<=pc<=bb['end_pc']:
            print('pc',pc,'block',bb['start_pc'],bb['end_pc'])
            print(bb['opcodes'])
            print('---')
            break
PY" in /tmp/codex-hcevps8e succeeded in 28ms:
pc 2357 block 2350 2399
['JUMPDEST', 'PUSH1', 'PUSH1', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'MLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_84', 'AND', 'OP_90', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2385 block 2350 2399
['JUMPDEST', 'PUSH1', 'PUSH1', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'MLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_84', 'AND', 'OP_90', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2055 block 2012 2069
['JUMPDEST', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_83', 'AND', 'PUSH1', 'OP_81', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_80', 'OP_82', 'SHA3', 'OP_82', 'OP_90', 'SSTORE', 'MLOAD', 'OP_92', 'OP_93', 'POP', 'OP_91', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2967 block 2964 2974
['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 3289 block 3286 3296
['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 931 block 928 938
['JUMPDEST', 'POP', 'GAS', 'STATICCALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---

thinking
**Analyzing SSTORE followed by CALL patterns**
exec
/bin/bash -lc "python - <<'PY'
import json

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# find blocks containing CALLER
for bb in bbs:
    if 'CALLER' in bb.get('opcodes',[]):
        print(bb['start_pc'],bb['end_pc'],bb['opcodes'])
PY" in /tmp/codex-hcevps8e succeeded in 71ms:
853 923 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'OP_80', 'MLOAD', 'PUSH4', 'PUSH1', 'SHL', 'OP_81', 'MSTORE', 'CALLER', 'PUSH1', 'OP_82', 'ADD', 'MSTORE', 'OP_90', 'MLOAD', 'PUSH1', 'OP_92', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'OP_91', 'PUSH4', 'OP_91', 'PUSH1', 'OP_80', 'OP_83', 'ADD', 'OP_92', 'PUSH1', 'OP_92', 'OP_91', 'OP_90', 'OP_82', 'OP_90', 'SUB', 'ADD', 'OP_81', 'OP_86', 'OP_80', 'EXTCODESIZE', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
1166 1185 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'CALLER', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']
1444 1464 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'JUMPI']
1465 1530 ['PUSH1', 'OP_80', 'SLOAD', 'PUSH1', 'OP_81', 'ADD', 'OP_82', 'SSTORE', 'PUSH1', 'OP_91', 'OP_90', 'OP_91', 'MSTORE', 'PUSH32', 'ADD', 'OP_80', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'NOT', 'AND', 'CALLER', 'OR', 'OP_90', 'SSTORE']
1531 1562 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'OP_90', 'CALLVALUE', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
1563 1597 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SSTORE', 'PUSH1', 'SLOAD', 'PUSH2', 'OP_90', 'CALLVALUE', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
1598 1653 ['JUMPDEST', 'PUSH1', 'SSTORE', 'PUSH1', 'MLOAD', 'CALLVALUE', 'OP_90', 'CALLER', 'OP_90', 'PUSH32', 'OP_90', 'PUSH1', 'OP_90', 'OP_A3', 'PUSH2', 'PUSH2', 'JUMP']
1790 1808 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'CALLER', 'EQ', 'PUSH2', 'JUMPI']
2700 2720 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'JUMPI']
2775 2823 ['JUMPDEST', 'PUSH1', 'SLOAD', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_81', 'SHA3', 'SLOAD', 'OP_90', 'OP_91', 'PUSH2', 'OP_91', 'PUSH2', 'OP_90', 'PUSH8', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
2824 2879 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_81', 'SHA3', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'SLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH2', 'OP_90', 'PUSH8', 'OP_90', 'PUSH2', 'OP_90', 'OP_85', 'OP_90', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
2880 2959 ['JUMPDEST', 'PUSH1', 'OP_80', 'SLOAD', 'PUSH1', 'OP_80', 'MLOAD', 'PUSH4', 'PUSH1', 'SHL', 'OP_81', 'MSTORE', 'CALLER', 'PUSH1', 'OP_82', 'ADD', 'MSTORE', 'PUSH1', 'OP_81', 'ADD', 'OP_85', 'OP_90', 'MSTORE', 'OP_90', 'MLOAD', 'OP_93', 'OP_94', 'POP', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_90', 'OP_91', 'AND', 'OP_92', 'PUSH4', 'OP_92', 'PUSH1', 'OP_80', 'OP_84', 'ADD', 'OP_93', 'OP_91', 'OP_92', 'OP_91', 'OP_82', 'OP_90', 'SUB', 'ADD', 'OP_81', 'OP_83', 'OP_87', 'OP_80', 'EXTCODESIZE', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']

thinking
**Analyzing external call safeguards and reentrancy risks**

I'm inspecting the presence of access controls around external CALLs with computed targets and ETH value, noticing some CALLER and SLOAD checks that might indicate owner guards even if heuristics miss them. There’s evidence of EXTCODESIZE checks possibly validating contract targets and state writes before calls that resemble nonce or mapping updates, which could mitigate reentrancy, but no explicit reentrancy guard is detected. Success checks after calls seem present, lowering some risks. Due to incomplete evidence, I flag a potential medium-to-low severity issue around arbitrary external calls and reentrancy, pending deeper analysis of storage slot writes and control flow edges.
exec
/bin/bash -lc "python - <<'PY'
import json

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

cfg=data['analysis_artifact']['artifact_json']['cfg_edges']
# find edges to block starting 2350
start='bb:2350'
# map id for block start 2350? We need to identify the id of that block.
# Basic blocks in artifact have start_pc and end_pc; build mapping.

bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
start_id=None
for bb in bbs:
    if bb['start_pc']==2350:
        start_id=bb.get('id')
        break
print('block id',start_id)

if start_id:
    preds=[e for e in cfg if e['to']==start_id]
    succs=[e for e in cfg if e['from']==start_id]
    print('preds',preds[:10])
    print('succs',succs[:10])
PY" in /tmp/codex-hcevps8e succeeded in 35ms:
block id None

thinking
**Analyzing basic blocks and callsite risks**
exec
/bin/bash -lc 'rg -n "evidence|evidence_bundle|call_targets|trace" BYTECODE_BUNDLE.json | head -n 200' in /tmp/codex-hcevps8e succeeded in 11ms:
9827:      "proxy_evidence": {
12816:      "evidence_json": {
12852:        "call_targets": [
12862:        "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
12863:        "trace_mode": "callTracer"
12868:      "evidence_json": {
12904:        "call_targets": [
12914:        "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
12915:        "trace_mode": "callTracer"

thinking
**Focusing on detector findings**
exec
/bin/bash -lc "sed -n '12800,12930p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 7ms:
        {
          "entry_pc": 0,
          "id": "fn:0x237297a4",
          "selector": "0x237297a4",
          "type": "function"
        }
      ],
      "version": "capability_graph_v1"
    },
    "id": 1120,
    "updated_at": "2026-01-13T01:50:55.000000Z",
    "version": "capability_graph_v1"
  },
  "detector_findings": [
    {
      "confidence": 60,
      "evidence_json": {
        "call_count": 4,
        "examples": [
          {

thinking
**Evaluating contract call risks**

I'm weighing the findings on untrusted calls, balancing severity with uncertain context like CALLER checks and potential fallback functions; I’m leaning toward producing JSON with medium-risk flagged external calls and possible but uncertain reentrancy exposure, while considering how strictly to report unchecked return data and signature validations.
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)

bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# list opcodes with 'ECRECOVER' or 'SHA3' etc? but not required.
print('contains ECRECOVER', any('ECRECOVER' in bb.get('opcodes',[]) for bb in bbs))
# check if there is any STATICCALL precompile? can't see address.
# But callsite includes STATICCALL at pc 931.
PY" in /tmp/codex-hcevps8e succeeded in 42ms:
contains ECRECOVER False

thinking
**Summarizing potential external call risks**
codex
{"no_findings":false,"summary":"Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).","findings":[{"severity":"medium","category":"other","title":"Computed external CALLs with possible ETH transfer; target/access control unclear","exploit_scenario":"If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior.","recommendation":"Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.","evidence":"Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.","locations":["pc:2055","pc:2385","pc:2967","pc:3289"]}]}
tokens used
37,508
Metadata
{
    "codex": {
        "ran_at": "2026-01-13T02:44:23.395605+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 9394,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).",
    "raw_final": {
        "summary": "Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).",
        "findings": [
            {
                "title": "Computed external CALLs with possible ETH transfer; target/access control unclear",
                "category": "other",
                "evidence": "Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.",
                "severity": "medium",
                "locations": [
                    "pc:2055",
                    "pc:2385",
                    "pc:2967",
                    "pc:3289"
                ],
                "recommendation": "Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.",
                "exploit_scenario": "If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
3
Total opcodes
2748
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00fe
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6dce6c5e
00000019: GT
0000001a: PUSH2 0x0095
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xebe7f760
00000024: GT
00000025: PUSH2 0x0064
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xebe7f760
0000002f: EQ
00000030: PUSH2 0x02ce
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xf372872d
0000003a: EQ
0000003b: PUSH2 0x02e3
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf6d8414f
00000045: EQ
00000046: PUSH2 0x02f8
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf9d820d0
00000050: EQ
00000051: PUSH2 0x030d
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfb342221
0000005b: EQ
0000005c: PUSH2 0x0340
0000005f: JUMPI
00000060: PUSH2 0x00fe
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x6dce6c5e
0000006b: EQ
0000006c: PUSH2 0x025e
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x6f9fb98a
00000076: EQ
00000077: PUSH2 0x028f
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x767c56a2
00000081: EQ
00000082: PUSH2 0x02a4
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xe1c18d87
0000008c: EQ
0000008d: PUSH2 0x02b9
00000090: JUMPI
00000091: PUSH2 0x00fe
00000094: JUMP
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x46965ef6
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x46965ef6
000000a7: EQ
000000a8: PUSH2 0x01e4
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x4faf2838
000000b2: EQ
000000b3: PUSH2 0x020b
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x58af85fa
000000bd: EQ
000000be: PUSH2 0x0234
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x5ee6a97c
000000c8: EQ
000000c9: PUSH2 0x0249
000000cc: JUMPI
000000cd: PUSH2 0x00fe
000000d0: JUMP
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x034ea411
000000d8: EQ
000000d9: PUSH2 0x0103
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x1eb05b0f
000000e3: EQ
000000e4: PUSH2 0x010d
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x20125176
000000ee: EQ
000000ef: PUSH2 0x0172
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x237297a4
000000f9: EQ
000000fa: PUSH2 0x01ab
000000fd: JUMPI
000000fe: JUMPDEST
000000ff: PUSH1 0x00
00000101: DUP1
00000102: REVERT
00000103: JUMPDEST
00000104: PUSH2 0x010b
00000107: PUSH2 0x0355
0000010a: JUMP
0000010b: JUMPDEST
0000010c: STOP
0000010d: JUMPDEST
0000010e: CALLVALUE
0000010f: DUP1
00000110: ISZERO
00000111: PUSH2 0x0119
00000114: JUMPI
00000115: PUSH1 0x00
00000117: DUP1
00000118: REVERT
00000119: JUMPDEST
0000011a: POP
0000011b: PUSH2 0x0122
0000011e: PUSH2 0x069c
00000121: JUMP
00000122: JUMPDEST
00000123: PUSH1 0x40
00000125: DUP1
00000126: MLOAD
00000127: PUSH1 0x20
00000129: DUP1
0000012a: DUP3
0000012b: MSTORE
0000012c: DUP4
0000012d: MLOAD
0000012e: DUP2
0000012f: DUP4
00000130: ADD
00000131: MSTORE
00000132: DUP4
00000133: MLOAD
00000134: SWAP2
00000135: SWAP3
00000136: DUP4
00000137: SWAP3
00000138: SWAP1
00000139: DUP4
0000013a: ADD
0000013b: SWAP2
0000013c: DUP6
0000013d: DUP2
0000013e: ADD
0000013f: SWAP2
00000140: MUL
00000141: DUP1
00000142: DUP4
00000143: DUP4
00000144: PUSH1 0x00
00000146: JUMPDEST
00000147: DUP4
00000148: DUP2
00000149: LT
0000014a: ISZERO
0000014b: PUSH2 0x015e
0000014e: JUMPI
0000014f: DUP2
00000150: DUP2
00000151: ADD
00000152: MLOAD
00000153: DUP4
00000154: DUP3
00000155: ADD
00000156: MSTORE
00000157: PUSH1 0x20
00000159: ADD
0000015a: PUSH2 0x0146
0000015d: JUMP
0000015e: JUMPDEST
0000015f: POP
00000160: POP
00000161: POP
00000162: POP
00000163: SWAP1
00000164: POP
00000165: ADD
00000166: SWAP3
00000167: POP
00000168: POP
00000169: POP
0000016a: PUSH1 0x40
0000016c: MLOAD
0000016d: DUP1
0000016e: SWAP2
0000016f: SUB
00000170: SWAP1
00000171: RETURN
00000172: JUMPDEST
00000173: CALLVALUE
00000174: DUP1
00000175: ISZERO
00000176: PUSH2 0x017e
00000179: JUMPI
0000017a: PUSH1 0x00
0000017c: DUP1
0000017d: REVERT
0000017e: JUMPDEST
0000017f: POP
00000180: PUSH2 0x010b
00000183: PUSH1 0x04
00000185: DUP1
00000186: CALLDATASIZE
00000187: SUB
00000188: PUSH1 0x40
0000018a: DUP2
0000018b: LT
0000018c: ISZERO
0000018d: PUSH2 0x0195
00000190: JUMPI
00000191: PUSH1 0x00
00000193: DUP1
00000194: REVERT
00000195: JUMPDEST
00000196: POP
00000197: DUP1
00000198: CALLDATALOAD
00000199: SWAP1
0000019a: PUSH1 0x20
0000019c: ADD
0000019d: CALLDATALOAD
0000019e: PUSH1 0x01
000001a0: PUSH1 0x01
000001a2: PUSH1 0xa0
000001a4: SHL
000001a5: SUB
000001a6: AND
000001a7: PUSH2 0x06fe
000001aa: JUMP
000001ab: JUMPDEST
000001ac: CALLVALUE
000001ad: DUP1
000001ae: ISZERO
000001af: PUSH2 0x01b7
000001b2: JUMPI
000001b3: PUSH1 0x00
000001b5: DUP1
000001b6: REVERT
000001b7: JUMPDEST
000001b8: POP
000001b9: PUSH2 0x01c0
000001bc: PUSH2 0x0a03
000001bf: JUMP
000001c0: JUMPDEST
000001c1: PUSH1 0x40
000001c3: MLOAD
000001c4: DUP1
000001c5: DUP3
000001c6: PUSH1 0x02
000001c8: DUP2
000001c9: GT
000001ca: ISZERO
000001cb: PUSH2 0x01d0
000001ce: JUMPI
000001cf: INVALID
000001d0: JUMPDEST
000001d1: PUSH1 0xff
000001d3: AND
000001d4: DUP2
000001d5: MSTORE
000001d6: PUSH1 0x20
000001d8: ADD
000001d9: SWAP2
000001da: POP
000001db: POP
000001dc: PUSH1 0x40
000001de: MLOAD
000001df: DUP1
000001e0: SWAP2
000001e1: SUB
000001e2: SWAP1
000001e3: RETURN
000001e4: JUMPDEST
000001e5: CALLVALUE
000001e6: DUP1
000001e7: ISZERO
000001e8: PUSH2 0x01f0
000001eb: JUMPI
000001ec: PUSH1 0x00
000001ee: DUP1
000001ef: REVERT
000001f0: JUMPDEST
000001f1: POP
000001f2: PUSH2 0x01f9
000001f5: PUSH2 0x0a13
000001f8: JUMP
000001f9: JUMPDEST
000001fa: PUSH1 0x40
000001fc: DUP1
000001fd: MLOAD
000001fe: SWAP2
000001ff: DUP3
00000200: MSTORE
00000201: MLOAD
00000202: SWAP1
00000203: DUP2
00000204: SWAP1
00000205: SUB
00000206: PUSH1 0x20
00000208: ADD
00000209: SWAP1
0000020a: RETURN
0000020b: JUMPDEST
0000020c: CALLVALUE
0000020d: DUP1
0000020e: ISZERO
0000020f: PUSH2 0x0217
00000212: JUMPI
00000213: PUSH1 0x00
00000215: DUP1
00000216: REVERT
00000217: JUMPDEST
00000218: POP
00000219: PUSH2 0x0220
0000021c: PUSH2 0x0a19
0000021f: JUMP
00000220: JUMPDEST
00000221: PUSH1 0x40
00000223: DUP1
00000224: MLOAD
00000225: SWAP2
00000226: ISZERO
00000227: ISZERO
00000228: DUP3
00000229: MSTORE
0000022a: MLOAD
0000022b: SWAP1
0000022c: DUP2
0000022d: SWAP1
0000022e: SUB
0000022f: PUSH1 0x20
00000231: ADD
00000232: SWAP1
00000233: RETURN
00000234: JUMPDEST
00000235: CALLVALUE
00000236: DUP1
00000237: ISZERO
00000238: PUSH2 0x0240
0000023b: JUMPI
0000023c: PUSH1 0x00
0000023e: DUP1
0000023f: REVERT
00000240: JUMPDEST
00000241: POP
00000242: PUSH2 0x01f9
00000245: PUSH2 0x0a22
00000248: JUMP
00000249: JUMPDEST
0000024a: CALLVALUE
0000024b: DUP1
0000024c: ISZERO
0000024d: PUSH2 0x0255
00000250: JUMPI
00000251: PUSH1 0x00
00000253: DUP1
00000254: REVERT
00000255: JUMPDEST
00000256: POP
00000257: PUSH2 0x010b
0000025a: PUSH2 0x0a28
0000025d: JUMP
0000025e: JUMPDEST
0000025f: CALLVALUE
00000260: DUP1
00000261: ISZERO
00000262: PUSH2 0x026a
00000265: JUMPI
00000266: PUSH1 0x00
00000268: DUP1
00000269: REVERT
0000026a: JUMPDEST
0000026b: POP
0000026c: PUSH2 0x0273
0000026f: PUSH2 0x0bb0
00000272: JUMP
00000273: JUMPDEST
00000274: PUSH1 0x40
00000276: DUP1
00000277: MLOAD
00000278: PUSH1 0x01
0000027a: PUSH1 0x01
0000027c: PUSH1 0xa0
0000027e: SHL
0000027f: SUB
00000280: SWAP1
00000281: SWAP3
00000282: AND
00000283: DUP3
00000284: MSTORE
00000285: MLOAD
00000286: SWAP1
00000287: DUP2
00000288: SWAP1
00000289: SUB
0000028a: PUSH1 0x20
0000028c: ADD
0000028d: SWAP1
0000028e: RETURN
0000028f: JUMPDEST
00000290: CALLVALUE
00000291: DUP1
00000292: ISZERO
00000293: PUSH2 0x029b
00000296: JUMPI
00000297: PUSH1 0x00
00000299: DUP1
0000029a: REVERT
0000029b: JUMPDEST
0000029c: POP
0000029d: PUSH2 0x01f9
000002a0: PUSH2 0x0bbf
000002a3: JUMP
000002a4: JUMPDEST
000002a5: CALLVALUE
000002a6: DUP1
000002a7: ISZERO
000002a8: PUSH2 0x02b0
000002ab: JUMPI
000002ac: PUSH1 0x00
000002ae: DUP1
000002af: REVERT
000002b0: JUMPDEST
000002b1: POP
000002b2: PUSH2 0x010b
000002b5: PUSH2 0x0bc3
000002b8: JUMP
000002b9: JUMPDEST
000002ba: CALLVALUE
000002bb: DUP1
000002bc: ISZERO
000002bd: PUSH2 0x02c5
000002c0: JUMPI
000002c1: PUSH1 0x00
000002c3: DUP1
000002c4: REVERT
000002c5: JUMPDEST
000002c6: POP
000002c7: PUSH2 0x01f9
000002ca: PUSH2 0x0cf0
000002cd: JUMP
000002ce: JUMPDEST
000002cf: CALLVALUE
000002d0: DUP1
000002d1: ISZERO
000002d2: PUSH2 0x02da
000002d5: JUMPI
000002d6: PUSH1 0x00
000002d8: DUP1
000002d9: REVERT
000002da: JUMPDEST
000002db: POP
000002dc: PUSH2 0x01f9
000002df: PUSH2 0x0cf6
000002e2: JUMP
000002e3: JUMPDEST
000002e4: CALLVALUE
000002e5: DUP1
000002e6: ISZERO
000002e7: PUSH2 0x02ef
000002ea: JUMPI
000002eb: PUSH1 0x00
000002ed: DUP1
000002ee: REVERT
000002ef: JUMPDEST
000002f0: POP
000002f1: PUSH2 0x0273
000002f4: PUSH2 0x0d20
000002f7: JUMP
000002f8: JUMPDEST
000002f9: CALLVALUE
000002fa: DUP1
000002fb: ISZERO
000002fc: PUSH2 0x0304
000002ff: JUMPI
00000300: PUSH1 0x00
00000302: DUP1
00000303: REVERT
00000304: JUMPDEST
00000305: POP
00000306: PUSH2 0x01f9
00000309: PUSH2 0x0d2f
0000030c: JUMP
0000030d: JUMPDEST
0000030e: CALLVALUE
0000030f: DUP1
00000310: ISZERO
00000311: PUSH2 0x0319
00000314: JUMPI
00000315: PUSH1 0x00
00000317: DUP1
00000318: REVERT
00000319: JUMPDEST
0000031a: POP
0000031b: PUSH2 0x01f9
0000031e: PUSH1 0x04
00000320: DUP1
00000321: CALLDATASIZE
00000322: SUB
00000323: PUSH1 0x20
00000325: DUP2
00000326: LT
00000327: ISZERO
00000328: PUSH2 0x0330
0000032b: JUMPI
0000032c: PUSH1 0x00
0000032e: DUP1
0000032f: REVERT
00000330: JUMPDEST
00000331: POP
00000332: CALLDATALOAD
00000333: PUSH1 0x01
00000335: PUSH1 0x01
00000337: PUSH1 0xa0
00000339: SHL
0000033a: SUB
0000033b: AND
0000033c: PUSH2 0x0d35
0000033f: JUMP
00000340: JUMPDEST
00000341: CALLVALUE
00000342: DUP1
00000343: ISZERO
00000344: PUSH2 0x034c
00000347: JUMPI
00000348: PUSH1 0x00
0000034a: DUP1
0000034b: REVERT
0000034c: JUMPDEST
0000034d: POP
0000034e: PUSH2 0x01f9
00000351: PUSH2 0x0d50
00000354: JUMP
00000355: JUMPDEST
00000356: PUSH1 0x01
00000358: SLOAD
00000359: PUSH1 0x40
0000035b: DUP1
0000035c: MLOAD
0000035d: PUSH4 0x70a08231
00000362: PUSH1 0xe0
00000364: SHL
00000365: DUP2
00000366: MSTORE
00000367: CALLER
00000368: PUSH1 0x04
0000036a: DUP3
0000036b: ADD
0000036c: MSTORE
0000036d: SWAP1
0000036e: MLOAD
0000036f: PUSH1 0x00
00000371: SWAP3
00000372: PUSH1 0x01
00000374: PUSH1 0x01
00000376: PUSH1 0xa0
00000378: SHL
00000379: SUB
0000037a: AND
0000037b: SWAP2
0000037c: PUSH4 0x70a08231
00000381: SWAP2
00000382: PUSH1 0x24
00000384: DUP1
00000385: DUP4
00000386: ADD
00000387: SWAP3
00000388: PUSH1 0x20
0000038a: SWAP3
0000038b: SWAP2
0000038c: SWAP1
0000038d: DUP3
0000038e: SWAP1
0000038f: SUB
00000390: ADD
00000391: DUP2
00000392: DUP7
00000393: DUP1
00000394: EXTCODESIZE
00000395: ISZERO
00000396: DUP1
00000397: ISZERO
00000398: PUSH2 0x03a0
0000039b: JUMPI
0000039c: PUSH1 0x00
0000039e: DUP1
0000039f: REVERT
000003a0: JUMPDEST
000003a1: POP
000003a2: GAS
000003a3: STATICCALL
000003a4: ISZERO
000003a5: DUP1
000003a6: ISZERO
000003a7: PUSH2 0x03b4
000003aa: JUMPI
000003ab: RETURNDATASIZE
000003ac: PUSH1 0x00
000003ae: DUP1
000003af: RETURNDATACOPY
000003b0: RETURNDATASIZE
000003b1: PUSH1 0x00
000003b3: REVERT
000003b4: JUMPDEST
000003b5: POP
000003b6: POP
000003b7: POP
000003b8: POP
000003b9: PUSH1 0x40
000003bb: MLOAD
000003bc: RETURNDATASIZE
000003bd: PUSH1 0x20
000003bf: DUP2
000003c0: LT
000003c1: ISZERO
000003c2: PUSH2 0x03ca
000003c5: JUMPI
000003c6: PUSH1 0x00
000003c8: DUP1
000003c9: REVERT
000003ca: JUMPDEST
000003cb: POP
000003cc: MLOAD
000003cd: GT
000003ce: PUSH2 0x0408
000003d1: JUMPI
000003d2: PUSH1 0x40
000003d4: MLOAD
000003d5: PUSH3 0x461bcd
000003d9: PUSH1 0xe5
000003db: SHL
000003dc: DUP2
000003dd: MSTORE
000003de: PUSH1 0x04
000003e0: ADD
000003e1: DUP1
000003e2: DUP1
000003e3: PUSH1 0x20
000003e5: ADD
000003e6: DUP3
000003e7: DUP2
000003e8: SUB
000003e9: DUP3
000003ea: MSTORE
000003eb: PUSH1 0x30
000003ed: DUP2
000003ee: MSTORE
000003ef: PUSH1 0x20
000003f1: ADD
000003f2: DUP1
000003f3: PUSH2 0x1099
000003f6: PUSH1 0x30
000003f8: SWAP2
000003f9: CODECOPY
000003fa: PUSH1 0x40
000003fc: ADD
000003fd: SWAP2
000003fe: POP
000003ff: POP
00000400: PUSH1 0x40
00000402: MLOAD
00000403: DUP1
00000404: SWAP2
00000405: SUB
00000406: SWAP1
00000407: REVERT
00000408: JUMPDEST
00000409: PUSH1 0x00
0000040b: CALLVALUE
0000040c: GT
0000040d: PUSH2 0x0447
00000410: JUMPI
00000411: PUSH1 0x40
00000413: MLOAD
00000414: PUSH3 0x461bcd
00000418: PUSH1 0xe5
0000041a: SHL
0000041b: DUP2
0000041c: MSTORE
0000041d: PUSH1 0x04
0000041f: ADD
00000420: DUP1
00000421: DUP1
00000422: PUSH1 0x20
00000424: ADD
00000425: DUP3
00000426: DUP2
00000427: SUB
00000428: DUP3
00000429: MSTORE
0000042a: PUSH1 0x26
0000042c: DUP2
0000042d: MSTORE
0000042e: PUSH1 0x20
00000430: ADD
00000431: DUP1
00000432: PUSH2 0x112f
00000435: PUSH1 0x26
00000437: SWAP2
00000438: CODECOPY
00000439: PUSH1 0x40
0000043b: ADD
0000043c: SWAP2
0000043d: POP
0000043e: POP
0000043f: PUSH1 0x40
00000441: MLOAD
00000442: DUP1
00000443: SWAP2
00000444: SUB
00000445: SWAP1
00000446: REVERT
00000447: JUMPDEST
00000448: PUSH1 0x05
0000044a: SLOAD
0000044b: PUSH1 0x01
0000044d: PUSH1 0x01
0000044f: PUSH1 0xa0
00000451: SHL
00000452: SUB
00000453: AND
00000454: PUSH2 0x048e
00000457: JUMPI
00000458: PUSH1 0x40
0000045a: MLOAD
0000045b: PUSH3 0x461bcd
0000045f: PUSH1 0xe5
00000461: SHL
00000462: DUP2
00000463: MSTORE
00000464: PUSH1 0x04
00000466: ADD
00000467: DUP1
00000468: DUP1
00000469: PUSH1 0x20
0000046b: ADD
0000046c: DUP3
0000046d: DUP2
0000046e: SUB
0000046f: DUP3
00000470: MSTORE
00000471: PUSH1 0x34
00000473: DUP2
00000474: MSTORE
00000475: PUSH1 0x20
00000477: ADD
00000478: DUP1
00000479: PUSH2 0x0fea
0000047c: PUSH1 0x34
0000047e: SWAP2
0000047f: CODECOPY
00000480: PUSH1 0x40
00000482: ADD
00000483: SWAP2
00000484: POP
00000485: POP
00000486: PUSH1 0x40
00000488: MLOAD
00000489: DUP1
0000048a: SWAP2
0000048b: SUB
0000048c: SWAP1
0000048d: REVERT
0000048e: JUMPDEST
0000048f: PUSH1 0x05
00000491: SLOAD
00000492: PUSH1 0x01
00000494: PUSH1 0x01
00000496: PUSH1 0xa0
00000498: SHL
00000499: SUB
0000049a: AND
0000049b: CALLER
0000049c: EQ
0000049d: ISZERO
0000049e: PUSH2 0x04d8
000004a1: JUMPI
000004a2: PUSH1 0x40
000004a4: MLOAD
000004a5: PUSH3 0x461bcd
000004a9: PUSH1 0xe5
000004ab: SHL
000004ac: DUP2
000004ad: MSTORE
000004ae: PUSH1 0x04
000004b0: ADD
000004b1: DUP1
000004b2: DUP1
000004b3: PUSH1 0x20
000004b5: ADD
000004b6: DUP3
000004b7: DUP2
000004b8: SUB
000004b9: DUP3
000004ba: MSTORE
000004bb: PUSH1 0x3a
000004bd: DUP2
000004be: MSTORE
000004bf: PUSH1 0x20
000004c1: ADD
000004c2: DUP1
000004c3: PUSH2 0x0f89
000004c6: PUSH1 0x3a
000004c8: SWAP2
000004c9: CODECOPY
000004ca: PUSH1 0x40
000004cc: ADD
000004cd: SWAP2
000004ce: POP
000004cf: POP
000004d0: PUSH1 0x40
000004d2: MLOAD
000004d3: DUP1
000004d4: SWAP2
000004d5: SUB
000004d6: SWAP1
000004d7: REVERT
000004d8: JUMPDEST
000004d9: PUSH1 0x07
000004db: SLOAD
000004dc: PUSH1 0xff
000004de: AND
000004df: ISZERO
000004e0: PUSH2 0x051a
000004e3: JUMPI
000004e4: PUSH1 0x40
000004e6: MLOAD
000004e7: PUSH3 0x461bcd
000004eb: PUSH1 0xe5
000004ed: SHL
000004ee: DUP2
000004ef: MSTORE
000004f0: PUSH1 0x04
000004f2: ADD
000004f3: DUP1
000004f4: DUP1
000004f5: PUSH1 0x20
000004f7: ADD
000004f8: DUP3
000004f9: DUP2
000004fa: SUB
000004fb: DUP3
000004fc: MSTORE
000004fd: PUSH1 0x2c
000004ff: DUP2
00000500: MSTORE
00000501: PUSH1 0x20
00000503: ADD
00000504: DUP1
00000505: PUSH2 0x101e
00000508: PUSH1 0x2c
0000050a: SWAP2
0000050b: CODECOPY
0000050c: PUSH1 0x40
0000050e: ADD
0000050f: SWAP2
00000510: POP
00000511: POP
00000512: PUSH1 0x40
00000514: MLOAD
00000515: DUP1
00000516: SWAP2
00000517: SUB
00000518: SWAP1
00000519: REVERT
0000051a: JUMPDEST
0000051b: PUSH1 0x02
0000051d: SLOAD
0000051e: TIMESTAMP
0000051f: LT
00000520: PUSH2 0x055a
00000523: JUMPI
00000524: PUSH1 0x40
00000526: MLOAD
00000527: PUSH3 0x461bcd
0000052b: PUSH1 0xe5
0000052d: SHL
0000052e: DUP2
0000052f: MSTORE
00000530: PUSH1 0x04
00000532: ADD
00000533: DUP1
00000534: DUP1
00000535: PUSH1 0x20
00000537: ADD
00000538: DUP3
00000539: DUP2
0000053a: SUB
0000053b: DUP3
0000053c: MSTORE
0000053d: PUSH1 0x29
0000053f: DUP2
00000540: MSTORE
00000541: PUSH1 0x20
00000543: ADD
00000544: DUP1
00000545: PUSH2 0x1070
00000548: PUSH1 0x29
0000054a: SWAP2
0000054b: CODECOPY
0000054c: PUSH1 0x40
0000054e: ADD
0000054f: SWAP2
00000550: POP
00000551: POP
00000552: PUSH1 0x40
00000554: MLOAD
00000555: DUP1
00000556: SWAP2
00000557: SUB
00000558: SWAP1
00000559: REVERT
0000055a: JUMPDEST
0000055b: PUSH2 0x0562
0000055e: PUSH2 0x0cf6
00000561: JUMP
00000562: JUMPDEST
00000563: PUSH1 0x08
00000565: SLOAD
00000566: CALLVALUE
00000567: ADD
00000568: GT
00000569: ISZERO
0000056a: PUSH2 0x05a4
0000056d: JUMPI
0000056e: PUSH1 0x40
00000570: MLOAD
00000571: PUSH3 0x461bcd
00000575: PUSH1 0xe5
00000577: SHL
00000578: DUP2
00000579: MSTORE
0000057a: PUSH1 0x04
0000057c: ADD
0000057d: DUP1
0000057e: DUP1
0000057f: PUSH1 0x20
00000581: ADD
00000582: DUP3
00000583: DUP2
00000584: SUB
00000585: DUP3
00000586: MSTORE
00000587: PUSH1 0x27
00000589: DUP2
0000058a: MSTORE
0000058b: PUSH1 0x20
0000058d: ADD
0000058e: DUP1
0000058f: PUSH2 0x11fd
00000592: PUSH1 0x27
00000594: SWAP2
00000595: CODECOPY
00000596: PUSH1 0x40
00000598: ADD
00000599: SWAP2
0000059a: POP
0000059b: POP
0000059c: PUSH1 0x40
0000059e: MLOAD
0000059f: DUP1
000005a0: SWAP2
000005a1: SUB
000005a2: SWAP1
000005a3: REVERT
000005a4: JUMPDEST
000005a5: CALLER
000005a6: PUSH1 0x00
000005a8: SWAP1
000005a9: DUP2
000005aa: MSTORE
000005ab: PUSH1 0x0a
000005ad: PUSH1 0x20
000005af: MSTORE
000005b0: PUSH1 0x40
000005b2: SWAP1
000005b3: KECCAK256
000005b4: SLOAD
000005b5: PUSH2 0x05fb
000005b8: JUMPI
000005b9: PUSH1 0x09
000005bb: DUP1
000005bc: SLOAD
000005bd: PUSH1 0x01
000005bf: DUP2
000005c0: ADD
000005c1: DUP3
000005c2: SSTORE
000005c3: PUSH1 0x00
000005c5: SWAP2
000005c6: SWAP1
000005c7: SWAP2
000005c8: MSTORE
000005c9: PUSH32 0x6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af
000005ea: ADD
000005eb: DUP1
000005ec: SLOAD
000005ed: PUSH1 0x01
000005ef: PUSH1 0x01
000005f1: PUSH1 0xa0
000005f3: SHL
000005f4: SUB
000005f5: NOT
000005f6: AND
000005f7: CALLER
000005f8: OR
000005f9: SWAP1
000005fa: SSTORE
000005fb: JUMPDEST
000005fc: CALLER
000005fd: PUSH1 0x00
000005ff: SWAP1
00000600: DUP2
00000601: MSTORE
00000602: PUSH1 0x0a
00000604: PUSH1 0x20
00000606: MSTORE
00000607: PUSH1 0x40
00000609: SWAP1
0000060a: KECCAK256
0000060b: SLOAD
0000060c: PUSH2 0x061b
0000060f: SWAP1
00000610: CALLVALUE
00000611: PUSH4 0xffffffff
00000616: PUSH2 0x0d56
00000619: AND
0000061a: JUMP
0000061b: JUMPDEST
0000061c: CALLER
0000061d: PUSH1 0x00
0000061f: SWAP1
00000620: DUP2
00000621: MSTORE
00000622: PUSH1 0x0a
00000624: PUSH1 0x20
00000626: MSTORE
00000627: PUSH1 0x40
00000629: SWAP1
0000062a: KECCAK256
0000062b: SSTORE
0000062c: PUSH1 0x08
0000062e: SLOAD
0000062f: PUSH2 0x063e
00000632: SWAP1
00000633: CALLVALUE
00000634: PUSH4 0xffffffff
00000639: PUSH2 0x0d56
0000063c: AND
0000063d: JUMP
0000063e: JUMPDEST
0000063f: PUSH1 0x08
00000641: SSTORE
00000642: PUSH1 0x40
00000644: MLOAD
00000645: CALLVALUE
00000646: SWAP1
00000647: CALLER
00000648: SWAP1
00000649: PUSH32 0x80fbd07d70e0d7ac483b3c1a1b9fd0cbddda15c9263cf2b6cd169d1900af1346
0000066a: SWAP1
0000066b: PUSH1 0x00
0000066d: SWAP1
0000066e: LOG3
0000066f: PUSH2 0x0676
00000672: PUSH2 0x0cf6
00000675: JUMP
00000676: JUMPDEST
00000677: PUSH1 0x08
00000679: SLOAD
0000067a: EQ
0000067b: ISZERO
0000067c: PUSH2 0x069a
0000067f: JUMPI
00000680: PUSH1 0x01
00000682: DUP1
00000683: SLOAD
00000684: PUSH1 0xff
00000686: PUSH1 0xa0
00000688: SHL
00000689: NOT
0000068a: AND
0000068b: PUSH1 0x01
0000068d: PUSH1 0xa1
0000068f: SHL
00000690: OR
00000691: SWAP1
00000692: SSTORE
00000693: PUSH2 0x069a
00000696: PUSH2 0x0bc3
00000699: JUMP
0000069a: JUMPDEST
0000069b: JUMP
0000069c: JUMPDEST
0000069d: PUSH1 0x60
0000069f: PUSH1 0x09
000006a1: DUP1
000006a2: SLOAD
000006a3: DUP1
000006a4: PUSH1 0x20
000006a6: MUL
000006a7: PUSH1 0x20
000006a9: ADD
000006aa: PUSH1 0x40
000006ac: MLOAD
000006ad: SWAP1
000006ae: DUP2
000006af: ADD
000006b0: PUSH1 0x40
000006b2: MSTORE
000006b3: DUP1
000006b4: SWAP3
000006b5: SWAP2
000006b6: SWAP1
000006b7: DUP2
000006b8: DUP2
000006b9: MSTORE
000006ba: PUSH1 0x20
000006bc: ADD
000006bd: DUP3
000006be: DUP1
000006bf: SLOAD
000006c0: DUP1
000006c1: ISZERO
000006c2: PUSH2 0x06f4
000006c5: JUMPI
000006c6: PUSH1 0x20
000006c8: MUL
000006c9: DUP3
000006ca: ADD
000006cb: SWAP2
000006cc: SWAP1
000006cd: PUSH1 0x00
000006cf: MSTORE
000006d0: PUSH1 0x20
000006d2: PUSH1 0x00
000006d4: KECCAK256
000006d5: SWAP1
000006d6: JUMPDEST
000006d7: DUP2
000006d8: SLOAD
000006d9: PUSH1 0x01
000006db: PUSH1 0x01
000006dd: PUSH1 0xa0
000006df: SHL
000006e0: SUB
000006e1: AND
000006e2: DUP2
000006e3: MSTORE
000006e4: PUSH1 0x01
000006e6: SWAP1
000006e7: SWAP2
000006e8: ADD
000006e9: SWAP1
000006ea: PUSH1 0x20
000006ec: ADD
000006ed: DUP1
000006ee: DUP4
000006ef: GT
000006f0: PUSH2 0x06d6
000006f3: JUMPI
000006f4: JUMPDEST
000006f5: POP
000006f6: POP
000006f7: POP
000006f8: POP
000006f9: POP
000006fa: SWAP1
000006fb: POP
000006fc: SWAP1
000006fd: JUMP
000006fe: JUMPDEST
000006ff: PUSH1 0x01
00000701: SLOAD
00000702: PUSH1 0x01
00000704: PUSH1 0x01
00000706: PUSH1 0xa0
00000708: SHL
00000709: SUB
0000070a: AND
0000070b: CALLER
0000070c: EQ
0000070d: PUSH2 0x0747
00000710: JUMPI
00000711: PUSH1 0x40
00000713: MLOAD
00000714: PUSH3 0x461bcd
00000718: PUSH1 0xe5
0000071a: SHL
0000071b: DUP2
0000071c: MSTORE
0000071d: PUSH1 0x04
0000071f: ADD
00000720: DUP1
00000721: DUP1
00000722: PUSH1 0x20
00000724: ADD
00000725: DUP3
00000726: DUP2
00000727: SUB
00000728: DUP3
00000729: MSTORE
0000072a: PUSH1 0x2c
0000072c: DUP2
0000072d: MSTORE
0000072e: PUSH1 0x20
00000730: ADD
00000731: DUP1
00000732: PUSH2 0x118e
00000735: PUSH1 0x2c
00000737: SWAP2
00000738: CODECOPY
00000739: PUSH1 0x40
0000073b: ADD
0000073c: SWAP2
0000073d: POP
0000073e: POP
0000073f: PUSH1 0x40
00000741: MLOAD
00000742: DUP1
00000743: SWAP2
00000744: SUB
00000745: SWAP1
00000746: REVERT
00000747: JUMPDEST
00000748: PUSH1 0x01
0000074a: DUP1
0000074b: SLOAD
0000074c: PUSH1 0x01
0000074e: PUSH1 0xa0
00000750: SHL
00000751: SWAP1
00000752: DIV
00000753: PUSH1 0xff
00000755: AND
00000756: PUSH1 0x02
00000758: DUP2
00000759: GT
0000075a: ISZERO
0000075b: PUSH2 0x0760
0000075e: JUMPI
0000075f: INVALID
00000760: JUMPDEST
00000761: EQ
00000762: DUP1
00000763: ISZERO
00000764: PUSH2 0x077b
00000767: JUMPI
00000768: POP
00000769: PUSH1 0x05
0000076b: SLOAD
0000076c: PUSH1 0x01
0000076e: PUSH1 0x01
00000770: PUSH1 0xa0
00000772: SHL
00000773: SUB
00000774: DUP3
00000775: DUP2
00000776: AND
00000777: SWAP2
00000778: AND
00000779: EQ
0000077a: ISZERO
0000077b: JUMPDEST
0000077c: ISZERO
0000077d: PUSH2 0x08b9
00000780: JUMPI
00000781: PUSH1 0x00
00000783: PUSH2 0x07af
00000786: PUSH8 0x0de0b6b3a7640000
0000078f: PUSH2 0x07a3
00000792: DUP6
00000793: PUSH1 0x04
00000795: SLOAD
00000796: PUSH2 0x0db9
00000799: SWAP1
0000079a: SWAP2
0000079b: SWAP1
0000079c: PUSH4 0xffffffff
000007a1: AND
000007a2: JUMP
000007a3: JUMPDEST
000007a4: SWAP1
000007a5: PUSH4 0xffffffff
000007aa: PUSH2 0x0e12
000007ad: AND
000007ae: JUMP
000007af: JUMPDEST
000007b0: PUSH1 0x01
000007b2: PUSH1 0x01
000007b4: PUSH1 0xa0
000007b6: SHL
000007b7: SUB
000007b8: DUP4
000007b9: AND
000007ba: PUSH1 0x00
000007bc: SWAP1
000007bd: DUP2
000007be: MSTORE
000007bf: PUSH1 0x0a
000007c1: PUSH1 0x20
000007c3: MSTORE
000007c4: PUSH1 0x40
000007c6: SWAP1
000007c7: KECCAK256
000007c8: SLOAD
000007c9: SWAP1
000007ca: SWAP2
000007cb: POP
000007cc: PUSH2 0x07dc
000007cf: SWAP1
000007d0: DUP3
000007d1: SWAP1
000007d2: PUSH4 0xffffffff
000007d7: PUSH2 0x0d56
000007da: AND
000007db: JUMP
000007dc: JUMPDEST
000007dd: PUSH1 0x01
000007df: PUSH1 0x01
000007e1: PUSH1 0xa0
000007e3: SHL
000007e4: SUB
000007e5: DUP4
000007e6: AND
000007e7: PUSH1 0x00
000007e9: DUP2
000007ea: DUP2
000007eb: MSTORE
000007ec: PUSH1 0x0a
000007ee: PUSH1 0x20
000007f0: MSTORE
000007f1: PUSH1 0x40
000007f3: DUP1
000007f4: DUP3
000007f5: KECCAK256
000007f6: DUP3
000007f7: SWAP1
000007f8: SSTORE
000007f9: MLOAD
000007fa: SWAP3
000007fb: SWAP4
000007fc: POP
000007fd: SWAP2
000007fe: DUP4
000007ff: SWAP1
00000800: DUP4
00000801: DUP2
00000802: DUP2
00000803: DUP2
00000804: DUP6
00000805: DUP8
00000806: GAS
00000807: CALL
00000808: SWAP3
00000809: POP
0000080a: POP
0000080b: POP
0000080c: RETURNDATASIZE
0000080d: DUP1
0000080e: PUSH1 0x00
00000810: DUP2
00000811: EQ
00000812: PUSH2 0x0837
00000815: JUMPI
00000816: PUSH1 0x40
00000818: MLOAD
00000819: SWAP2
0000081a: POP
0000081b: PUSH1 0x1f
0000081d: NOT
0000081e: PUSH1 0x3f
00000820: RETURNDATASIZE
00000821: ADD
00000822: AND
00000823: DUP3
00000824: ADD
00000825: PUSH1 0x40
00000827: MSTORE
00000828: RETURNDATASIZE
00000829: DUP3
0000082a: MSTORE
0000082b: RETURNDATASIZE
0000082c: PUSH1 0x00
0000082e: PUSH1 0x20
00000830: DUP5
00000831: ADD
00000832: RETURNDATACOPY
00000833: PUSH2 0x083c
00000836: JUMP
00000837: JUMPDEST
00000838: PUSH1 0x60
0000083a: SWAP2
0000083b: POP
0000083c: JUMPDEST
0000083d: POP
0000083e: POP
0000083f: SWAP1
00000840: POP
00000841: DUP1
00000842: PUSH2 0x087c
00000845: JUMPI
00000846: PUSH1 0x40
00000848: MLOAD
00000849: PUSH3 0x461bcd
0000084d: PUSH1 0xe5
0000084f: SHL
00000850: DUP2
00000851: MSTORE
00000852: PUSH1 0x04
00000854: ADD
00000855: DUP1
00000856: DUP1
00000857: PUSH1 0x20
00000859: ADD
0000085a: DUP3
0000085b: DUP2
0000085c: SUB
0000085d: DUP3
0000085e: MSTORE
0000085f: PUSH1 0x27
00000861: DUP2
00000862: MSTORE
00000863: PUSH1 0x20
00000865: ADD
00000866: DUP1
00000867: PUSH2 0x0fc3
0000086a: PUSH1 0x27
0000086c: SWAP2
0000086d: CODECOPY
0000086e: PUSH1 0x40
00000870: ADD
00000871: SWAP2
00000872: POP
00000873: POP
00000874: PUSH1 0x40
00000876: MLOAD
00000877: DUP1
00000878: SWAP2
00000879: SUB
0000087a: SWAP1
0000087b: REVERT
0000087c: JUMPDEST
0000087d: PUSH1 0x40
0000087f: MLOAD
00000880: DUP3
00000881: SWAP1
00000882: PUSH1 0x01
00000884: PUSH1 0x01
00000886: PUSH1 0xa0
00000888: SHL
00000889: SUB
0000088a: DUP6
0000088b: AND
0000088c: SWAP1
0000088d: PUSH32 0xedfe54e758e6dae751369919bd3c260baddfe62c3f49793bdad36629cb5ecd26
000008ae: SWAP1
000008af: PUSH1 0x00
000008b1: SWAP1
000008b2: LOG3
000008b3: POP
000008b4: POP
000008b5: PUSH2 0x09ff
000008b8: JUMP
000008b9: JUMPDEST
000008ba: PUSH1 0x02
000008bc: PUSH1 0x01
000008be: SLOAD
000008bf: PUSH1 0x01
000008c1: PUSH1 0xa0
000008c3: SHL
000008c4: SWAP1
000008c5: DIV
000008c6: PUSH1 0xff
000008c8: AND
000008c9: PUSH1 0x02
000008cb: DUP2
000008cc: GT
000008cd: ISZERO
000008ce: PUSH2 0x08d3
000008d1: JUMPI
000008d2: INVALID
000008d3: JUMPDEST
000008d4: EQ
000008d5: DUP1
000008d6: ISZERO
000008d7: PUSH2 0x08ed
000008da: JUMPI
000008db: POP
000008dc: PUSH1 0x05
000008de: SLOAD
000008df: PUSH1 0x01
000008e1: PUSH1 0x01
000008e3: PUSH1 0xa0
000008e5: SHL
000008e6: SUB
000008e7: DUP3
000008e8: DUP2
000008e9: AND
000008ea: SWAP2
000008eb: AND
000008ec: EQ
000008ed: JUMPDEST
000008ee: ISZERO
000008ef: PUSH2 0x09ff
000008f2: JUMPI
000008f3: PUSH1 0x00
000008f5: PUSH2 0x0917
000008f8: PUSH8 0x0de0b6b3a7640000
00000901: PUSH2 0x07a3
00000904: PUSH1 0x06
00000906: SLOAD
00000907: PUSH1 0x04
00000909: SLOAD
0000090a: PUSH2 0x0db9
0000090d: SWAP1
0000090e: SWAP2
0000090f: SWAP1
00000910: PUSH4 0xffffffff
00000915: AND
00000916: JUMP
00000917: JUMPDEST
00000918: SWAP1
00000919: POP
0000091a: PUSH2 0x092e
0000091d: PUSH1 0x03
0000091f: SLOAD
00000920: DUP3
00000921: PUSH2 0x0d56
00000924: SWAP1
00000925: SWAP2
00000926: SWAP1
00000927: PUSH4 0xffffffff
0000092c: AND
0000092d: JUMP
0000092e: JUMPDEST
0000092f: PUSH1 0x00
00000931: PUSH1 0x06
00000933: DUP2
00000934: SWAP1
00000935: SSTORE
00000936: PUSH1 0x40
00000938: MLOAD
00000939: SWAP2
0000093a: SWAP3
0000093b: POP
0000093c: SWAP1
0000093d: PUSH1 0x01
0000093f: PUSH1 0x01
00000941: PUSH1 0xa0
00000943: SHL
00000944: SUB
00000945: DUP5
00000946: AND
00000947: SWAP1
00000948: DUP4
00000949: SWAP1
0000094a: DUP4
0000094b: DUP2
0000094c: DUP2
0000094d: DUP2
0000094e: DUP6
0000094f: DUP8
00000950: GAS
00000951: CALL
00000952: SWAP3
00000953: POP
00000954: POP
00000955: POP
00000956: RETURNDATASIZE
00000957: DUP1
00000958: PUSH1 0x00
0000095a: DUP2
0000095b: EQ
0000095c: PUSH2 0x0981
0000095f: JUMPI
00000960: PUSH1 0x40
00000962: MLOAD
00000963: SWAP2
00000964: POP
00000965: PUSH1 0x1f
00000967: NOT
00000968: PUSH1 0x3f
0000096a: RETURNDATASIZE
0000096b: ADD
0000096c: AND
0000096d: DUP3
0000096e: ADD
0000096f: PUSH1 0x40
00000971: MSTORE
00000972: RETURNDATASIZE
00000973: DUP3
00000974: MSTORE
00000975: RETURNDATASIZE
00000976: PUSH1 0x00
00000978: PUSH1 0x20
0000097a: DUP5
0000097b: ADD
0000097c: RETURNDATACOPY
0000097d: PUSH2 0x0986
00000980: JUMP
00000981: JUMPDEST
00000982: PUSH1 0x60
00000984: SWAP2
00000985: POP
00000986: JUMPDEST
00000987: POP
00000988: POP
00000989: SWAP1
0000098a: POP
0000098b: DUP1
0000098c: PUSH2 0x09c6
0000098f: JUMPI
00000990: PUSH1 0x40
00000992: MLOAD
00000993: PUSH3 0x461bcd
00000997: PUSH1 0xe5
00000999: SHL
0000099a: DUP2
0000099b: MSTORE
0000099c: PUSH1 0x04
0000099e: ADD
0000099f: DUP1
000009a0: DUP1
000009a1: PUSH1 0x20
000009a3: ADD
000009a4: DUP3
000009a5: DUP2
000009a6: SUB
000009a7: DUP3
000009a8: MSTORE
000009a9: PUSH1 0x27
000009ab: DUP2
000009ac: MSTORE
000009ad: PUSH1 0x20
000009af: ADD
000009b0: DUP1
000009b1: PUSH2 0x0fc3
000009b4: PUSH1 0x27
000009b6: SWAP2
000009b7: CODECOPY
000009b8: PUSH1 0x40
000009ba: ADD
000009bb: SWAP2
000009bc: POP
000009bd: POP
000009be: PUSH1 0x40
000009c0: MLOAD
000009c1: DUP1
000009c2: SWAP2
000009c3: SUB
000009c4: SWAP1
000009c5: REVERT
000009c6: JUMPDEST
000009c7: PUSH1 0x40
000009c9: MLOAD
000009ca: DUP3
000009cb: SWAP1
000009cc: PUSH1 0x01
000009ce: PUSH1 0x01
000009d0: PUSH1 0xa0
000009d2: SHL
000009d3: SUB
000009d4: DUP6
000009d5: AND
000009d6: SWAP1
000009d7: PUSH32 0xedfe54e758e6dae751369919bd3c260baddfe62c3f49793bdad36629cb5ecd26
000009f8: SWAP1
000009f9: PUSH1 0x00
000009fb: SWAP1
000009fc: LOG3
000009fd: POP
000009fe: POP
000009ff: JUMPDEST
00000a00: POP
00000a01: POP
00000a02: JUMP
00000a03: JUMPDEST
00000a04: PUSH1 0x01
00000a06: SLOAD
00000a07: PUSH1 0x01
00000a09: PUSH1 0xa0
00000a0b: SHL
00000a0c: SWAP1
00000a0d: DIV
00000a0e: PUSH1 0xff
00000a10: AND
00000a11: SWAP1
00000a12: JUMP
00000a13: JUMPDEST
00000a14: PUSH1 0x08
00000a16: SLOAD
00000a17: SWAP1
00000a18: JUMP
00000a19: JUMPDEST
00000a1a: PUSH1 0x07
00000a1c: SLOAD
00000a1d: PUSH1 0xff
00000a1f: AND
00000a20: SWAP1
00000a21: JUMP
00000a22: JUMPDEST
00000a23: PUSH1 0x04
00000a25: SLOAD
00000a26: SWAP1
00000a27: JUMP
00000a28: JUMPDEST
00000a29: PUSH1 0x07
00000a2b: SLOAD
00000a2c: PUSH1 0xff
00000a2e: AND
00000a2f: DUP1
00000a30: ISZERO
00000a31: PUSH2 0x0a51
00000a34: JUMPI
00000a35: POP
00000a36: PUSH1 0x02
00000a38: PUSH1 0x01
00000a3a: SLOAD
00000a3b: PUSH1 0x01
00000a3d: PUSH1 0xa0
00000a3f: SHL
00000a40: SWAP1
00000a41: DIV
00000a42: PUSH1 0xff
00000a44: AND
00000a45: PUSH1 0x02
00000a47: DUP2
00000a48: GT
00000a49: ISZERO
00000a4a: PUSH2 0x0a4f
00000a4d: JUMPI
00000a4e: INVALID
00000a4f: JUMPDEST
00000a50: EQ
00000a51: JUMPDEST
00000a52: PUSH2 0x0a8c
00000a55: JUMPI
00000a56: PUSH1 0x40
00000a58: MLOAD
00000a59: PUSH3 0x461bcd
00000a5d: PUSH1 0xe5
00000a5f: SHL
00000a60: DUP2
00000a61: MSTORE
00000a62: PUSH1 0x04
00000a64: ADD
00000a65: DUP1
00000a66: DUP1
00000a67: PUSH1 0x20
00000a69: ADD
00000a6a: DUP3
00000a6b: DUP2
00000a6c: SUB
00000a6d: DUP3
00000a6e: MSTORE
00000a6f: PUSH1 0x45
00000a71: DUP2
00000a72: MSTORE
00000a73: PUSH1 0x20
00000a75: ADD
00000a76: DUP1
00000a77: PUSH2 0x10c9
00000a7a: PUSH1 0x45
00000a7c: SWAP2
00000a7d: CODECOPY
00000a7e: PUSH1 0x60
00000a80: ADD
00000a81: SWAP2
00000a82: POP
00000a83: POP
00000a84: PUSH1 0x40
00000a86: MLOAD
00000a87: DUP1
00000a88: SWAP2
00000a89: SUB
00000a8a: SWAP1
00000a8b: REVERT
00000a8c: JUMPDEST
00000a8d: CALLER
00000a8e: PUSH1 0x00
00000a90: SWAP1
00000a91: DUP2
00000a92: MSTORE
00000a93: PUSH1 0x0a
00000a95: PUSH1 0x20
00000a97: MSTORE
00000a98: PUSH1 0x40
00000a9a: SWAP1
00000a9b: KECCAK256
00000a9c: SLOAD
00000a9d: PUSH2 0x0ad7
00000aa0: JUMPI
00000aa1: PUSH1 0x40
00000aa3: MLOAD
00000aa4: PUSH3 0x461bcd
00000aa8: PUSH1 0xe5
00000aaa: SHL
00000aab: DUP2
00000aac: MSTORE
00000aad: PUSH1 0x04
00000aaf: ADD
00000ab0: DUP1
00000ab1: DUP1
00000ab2: PUSH1 0x20
00000ab4: ADD
00000ab5: DUP3
00000ab6: DUP2
00000ab7: SUB
00000ab8: DUP3
00000ab9: MSTORE
00000aba: PUSH1 0x43
00000abc: DUP2
00000abd: MSTORE
00000abe: PUSH1 0x20
00000ac0: ADD
00000ac1: DUP1
00000ac2: PUSH2 0x11ba
00000ac5: PUSH1 0x43
00000ac7: SWAP2
00000ac8: CODECOPY
00000ac9: PUSH1 0x60
00000acb: ADD
00000acc: SWAP2
00000acd: POP
00000ace: POP
00000acf: PUSH1 0x40
00000ad1: MLOAD
00000ad2: DUP1
00000ad3: SWAP2
00000ad4: SUB
00000ad5: SWAP1
00000ad6: REVERT
00000ad7: JUMPDEST
00000ad8: PUSH1 0x08
00000ada: SLOAD
00000adb: CALLER
00000adc: PUSH1 0x00
00000ade: SWAP1
00000adf: DUP2
00000ae0: MSTORE
00000ae1: PUSH1 0x0a
00000ae3: PUSH1 0x20
00000ae5: MSTORE
00000ae6: PUSH1 0x40
00000ae8: DUP2
00000ae9: KECCAK256
00000aea: SLOAD
00000aeb: SWAP1
00000aec: SWAP2
00000aed: PUSH2 0x0b08
00000af0: SWAP2
00000af1: PUSH2 0x07a3
00000af4: SWAP1
00000af5: PUSH8 0x0de0b6b3a7640000
00000afe: PUSH4 0xffffffff
00000b03: PUSH2 0x0db9
00000b06: AND
00000b07: JUMP
00000b08: JUMPDEST
00000b09: CALLER
00000b0a: PUSH1 0x00
00000b0c: SWAP1
00000b0d: DUP2
00000b0e: MSTORE
00000b0f: PUSH1 0x0a
00000b11: PUSH1 0x20
00000b13: MSTORE
00000b14: PUSH1 0x40
00000b16: DUP2
00000b17: KECCAK256
00000b18: DUP2
00000b19: SWAP1
00000b1a: SSTORE
00000b1b: PUSH1 0x06
00000b1d: SLOAD
00000b1e: SWAP2
00000b1f: SWAP3
00000b20: POP
00000b21: SWAP1
00000b22: PUSH2 0x0b40
00000b25: SWAP1
00000b26: PUSH8 0x0de0b6b3a7640000
00000b2f: SWAP1
00000b30: PUSH2 0x07a3
00000b33: SWAP1
00000b34: DUP6
00000b35: SWAP1
00000b36: PUSH4 0xffffffff
00000b3b: PUSH2 0x0db9
00000b3e: AND
00000b3f: JUMP
00000b40: JUMPDEST
00000b41: PUSH1 0x00
00000b43: DUP1
00000b44: SLOAD
00000b45: PUSH1 0x40
00000b47: DUP1
00000b48: MLOAD
00000b49: PUSH4 0x0f020c77
00000b4e: PUSH1 0xe3
00000b50: SHL
00000b51: DUP2
00000b52: MSTORE
00000b53: CALLER
00000b54: PUSH1 0x04
00000b56: DUP3
00000b57: ADD
00000b58: MSTORE
00000b59: PUSH1 0x24
00000b5b: DUP2
00000b5c: ADD
00000b5d: DUP6
00000b5e: SWAP1
00000b5f: MSTORE
00000b60: SWAP1
00000b61: MLOAD
00000b62: SWAP4
00000b63: SWAP5
00000b64: POP
00000b65: PUSH1 0x01
00000b67: PUSH1 0x01
00000b69: PUSH1 0xa0
00000b6b: SHL
00000b6c: SUB
00000b6d: SWAP1
00000b6e: SWAP2
00000b6f: AND
00000b70: SWAP3
00000b71: PUSH4 0x781063b8
00000b76: SWAP3
00000b77: PUSH1 0x44
00000b79: DUP1
00000b7a: DUP5
00000b7b: ADD
00000b7c: SWAP4
00000b7d: SWAP2
00000b7e: SWAP3
00000b7f: SWAP2
00000b80: DUP3
00000b81: SWAP1
00000b82: SUB
00000b83: ADD
00000b84: DUP2
00000b85: DUP4
00000b86: DUP8
00000b87: DUP1
00000b88: EXTCODESIZE
00000b89: ISZERO
00000b8a: DUP1
00000b8b: ISZERO
00000b8c: PUSH2 0x0b94
00000b8f: JUMPI
00000b90: PUSH1 0x00
00000b92: DUP1
00000b93: REVERT
00000b94: JUMPDEST
00000b95: POP
00000b96: GAS
00000b97: CALL
00000b98: ISZERO
00000b99: DUP1
00000b9a: ISZERO
00000b9b: PUSH2 0x0ba8
00000b9e: JUMPI
00000b9f: RETURNDATASIZE
00000ba0: PUSH1 0x00
00000ba2: DUP1
00000ba3: RETURNDATACOPY
00000ba4: RETURNDATASIZE
00000ba5: PUSH1 0x00
00000ba7: REVERT
00000ba8: JUMPDEST
00000ba9: POP
00000baa: POP
00000bab: POP
00000bac: POP
00000bad: POP
00000bae: POP
00000baf: JUMP
00000bb0: JUMPDEST
00000bb1: PUSH1 0x05
00000bb3: SLOAD
00000bb4: PUSH1 0x01
00000bb6: PUSH1 0x01
00000bb8: PUSH1 0xa0
00000bba: SHL
00000bbb: SUB
00000bbc: AND
00000bbd: SWAP1
00000bbe: JUMP
00000bbf: JUMPDEST
00000bc0: SELFBALANCE
00000bc1: SWAP1
00000bc2: JUMP
00000bc3: JUMPDEST
00000bc4: PUSH1 0x07
00000bc6: SLOAD
00000bc7: PUSH1 0xff
00000bc9: AND
00000bca: ISZERO
00000bcb: PUSH2 0x0c05
00000bce: JUMPI
00000bcf: PUSH1 0x40
00000bd1: MLOAD
00000bd2: PUSH3 0x461bcd
00000bd6: PUSH1 0xe5
00000bd8: SHL
00000bd9: DUP2
00000bda: MSTORE
00000bdb: PUSH1 0x04
00000bdd: ADD
00000bde: DUP1
00000bdf: DUP1
00000be0: PUSH1 0x20
00000be2: ADD
00000be3: DUP3
00000be4: DUP2
00000be5: SUB
00000be6: DUP3
00000be7: MSTORE
00000be8: PUSH1 0x26
00000bea: DUP2
00000beb: MSTORE
00000bec: PUSH1 0x20
00000bee: ADD
00000bef: DUP1
00000bf0: PUSH2 0x104a
00000bf3: PUSH1 0x26
00000bf5: SWAP2
00000bf6: CODECOPY
00000bf7: PUSH1 0x40
00000bf9: ADD
00000bfa: SWAP2
00000bfb: POP
00000bfc: POP
00000bfd: PUSH1 0x40
00000bff: MLOAD
00000c00: DUP1
00000c01: SWAP2
00000c02: SUB
00000c03: SWAP1
00000c04: REVERT
00000c05: JUMPDEST
00000c06: PUSH1 0x02
00000c08: PUSH1 0x01
00000c0a: SLOAD
00000c0b: PUSH1 0x01
00000c0d: PUSH1 0xa0
00000c0f: SHL
00000c10: SWAP1
00000c11: DIV
00000c12: PUSH1 0xff
00000c14: AND
00000c15: PUSH1 0x02
00000c17: DUP2
00000c18: GT
00000c19: ISZERO
00000c1a: PUSH2 0x0c1f
00000c1d: JUMPI
00000c1e: INVALID
00000c1f: JUMPDEST
00000c20: EQ
00000c21: DUP1
00000c22: PUSH2 0x0c4d
00000c25: JUMPI
00000c26: POP
00000c27: PUSH1 0x01
00000c29: DUP1
00000c2a: SLOAD
00000c2b: PUSH1 0x01
00000c2d: PUSH1 0xa0
00000c2f: SHL
00000c30: SWAP1
00000c31: DIV
00000c32: PUSH1 0xff
00000c34: AND
00000c35: PUSH1 0x02
00000c37: DUP2
00000c38: GT
00000c39: ISZERO
00000c3a: PUSH2 0x0c3f
00000c3d: JUMPI
00000c3e: INVALID
00000c3f: JUMPDEST
00000c40: EQ
00000c41: DUP1
00000c42: ISZERO
00000c43: PUSH2 0x0c4d
00000c46: JUMPI
00000c47: POP
00000c48: PUSH1 0x02
00000c4a: SLOAD
00000c4b: TIMESTAMP
00000c4c: GT
00000c4d: JUMPDEST
00000c4e: PUSH2 0x0c88
00000c51: JUMPI
00000c52: PUSH1 0x40
00000c54: MLOAD
00000c55: PUSH3 0x461bcd
00000c59: PUSH1 0xe5
00000c5b: SHL
00000c5c: DUP2
00000c5d: MSTORE
00000c5e: PUSH1 0x04
00000c60: ADD
00000c61: DUP1
00000c62: DUP1
00000c63: PUSH1 0x20
00000c65: ADD
00000c66: DUP3
00000c67: DUP2
00000c68: SUB
00000c69: DUP3
00000c6a: MSTORE
00000c6b: PUSH1 0x39
00000c6d: DUP2
00000c6e: MSTORE
00000c6f: PUSH1 0x20
00000c71: ADD
00000c72: DUP1
00000c73: PUSH2 0x1155
00000c76: PUSH1 0x39
00000c78: SWAP2
00000c79: CODECOPY
00000c7a: PUSH1 0x40
00000c7c: ADD
00000c7d: SWAP2
00000c7e: POP
00000c7f: POP
00000c80: PUSH1 0x40
00000c82: MLOAD
00000c83: DUP1
00000c84: SWAP2
00000c85: SUB
00000c86: SWAP1
00000c87: REVERT
00000c88: JUMPDEST
00000c89: PUSH1 0x07
00000c8b: DUP1
00000c8c: SLOAD
00000c8d: PUSH1 0xff
00000c8f: NOT
00000c90: AND
00000c91: PUSH1 0x01
00000c93: OR
00000c94: SWAP1
00000c95: SSTORE
00000c96: PUSH1 0x00
00000c98: DUP1
00000c99: SLOAD
00000c9a: PUSH1 0x40
00000c9c: DUP1
00000c9d: MLOAD
00000c9e: PUSH4 0x3b3e2b51
00000ca3: PUSH1 0xe1
00000ca5: SHL
00000ca6: DUP2
00000ca7: MSTORE
00000ca8: SWAP1
00000ca9: MLOAD
00000caa: PUSH1 0x01
00000cac: PUSH1 0x01
00000cae: PUSH1 0xa0
00000cb0: SHL
00000cb1: SUB
00000cb2: SWAP1
00000cb3: SWAP3
00000cb4: AND
00000cb5: SWAP3
00000cb6: PUSH4 0x767c56a2
00000cbb: SWAP3
00000cbc: PUSH1 0x04
00000cbe: DUP1
00000cbf: DUP5
00000cc0: ADD
00000cc1: SWAP4
00000cc2: DUP3
00000cc3: SWAP1
00000cc4: SUB
00000cc5: ADD
00000cc6: DUP2
00000cc7: DUP4
00000cc8: DUP8
00000cc9: DUP1
00000cca: EXTCODESIZE
00000ccb: ISZERO
00000ccc: DUP1
00000ccd: ISZERO
00000cce: PUSH2 0x0cd6
00000cd1: JUMPI
00000cd2: PUSH1 0x00
00000cd4: DUP1
00000cd5: REVERT
00000cd6: JUMPDEST
00000cd7: POP
00000cd8: GAS
00000cd9: CALL
00000cda: ISZERO
00000cdb: DUP1
00000cdc: ISZERO
00000cdd: PUSH2 0x0cea
00000ce0: JUMPI
00000ce1: RETURNDATASIZE
00000ce2: PUSH1 0x00
00000ce4: DUP1
00000ce5: RETURNDATACOPY
00000ce6: RETURNDATASIZE
00000ce7: PUSH1 0x00
00000ce9: REVERT
00000cea: JUMPDEST
00000ceb: POP
00000cec: POP
00000ced: POP
00000cee: POP
00000cef: JUMP
00000cf0: JUMPDEST
00000cf1: PUSH1 0x06
00000cf3: SLOAD
00000cf4: SWAP1
00000cf5: JUMP
00000cf6: JUMPDEST
00000cf7: PUSH1 0x00
00000cf9: PUSH2 0x0d1b
00000cfc: PUSH8 0x0de0b6b3a7640000
00000d05: PUSH2 0x07a3
00000d08: PUSH1 0x06
00000d0a: SLOAD
00000d0b: PUSH1 0x04
00000d0d: SLOAD
00000d0e: PUSH2 0x0db9
00000d11: SWAP1
00000d12: SWAP2
00000d13: SWAP1
00000d14: PUSH4 0xffffffff
00000d19: AND
00000d1a: JUMP
00000d1b: JUMPDEST
00000d1c: SWAP1
00000d1d: POP
00000d1e: SWAP1
00000d1f: JUMP
00000d20: JUMPDEST
00000d21: PUSH1 0x00
00000d23: SLOAD
00000d24: PUSH1 0x01
00000d26: PUSH1 0x01
00000d28: PUSH1 0xa0
00000d2a: SHL
00000d2b: SUB
00000d2c: AND
00000d2d: SWAP1
00000d2e: JUMP
00000d2f: JUMPDEST
00000d30: PUSH1 0x02
00000d32: SLOAD
00000d33: SWAP1
00000d34: JUMP
00000d35: JUMPDEST
00000d36: PUSH1 0x01
00000d38: PUSH1 0x01
00000d3a: PUSH1 0xa0
00000d3c: SHL
00000d3d: SUB
00000d3e: AND
00000d3f: PUSH1 0x00
00000d41: SWAP1
00000d42: DUP2
00000d43: MSTORE
00000d44: PUSH1 0x0a
00000d46: PUSH1 0x20
00000d48: MSTORE
00000d49: PUSH1 0x40
00000d4b: SWAP1
00000d4c: KECCAK256
00000d4d: SLOAD
00000d4e: SWAP1
00000d4f: JUMP
00000d50: JUMPDEST
00000d51: PUSH1 0x03
00000d53: SLOAD
00000d54: SWAP1
00000d55: JUMP
00000d56: JUMPDEST
00000d57: PUSH1 0x00
00000d59: DUP3
00000d5a: DUP3
00000d5b: ADD
00000d5c: DUP4
00000d5d: DUP2
00000d5e: LT
00000d5f: ISZERO
00000d60: PUSH2 0x0db0
00000d63: JUMPI
00000d64: PUSH1 0x40
00000d66: DUP1
00000d67: MLOAD
00000d68: PUSH3 0x461bcd
00000d6c: PUSH1 0xe5
00000d6e: SHL
00000d6f: DUP2
00000d70: MSTORE
00000d71: PUSH1 0x20
00000d73: PUSH1 0x04
00000d75: DUP3
00000d76: ADD
00000d77: MSTORE
00000d78: PUSH1 0x1b
00000d7a: PUSH1 0x24
00000d7c: DUP3
00000d7d: ADD
00000d7e: MSTORE
00000d7f: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
00000da0: PUSH1 0x44
00000da2: DUP3
00000da3: ADD
00000da4: MSTORE
00000da5: SWAP1
00000da6: MLOAD
00000da7: SWAP1
00000da8: DUP2
00000da9: SWAP1
00000daa: SUB
00000dab: PUSH1 0x64
00000dad: ADD
00000dae: SWAP1
00000daf: REVERT
00000db0: JUMPDEST
00000db1: SWAP1
00000db2: POP
00000db3: JUMPDEST
00000db4: SWAP3
00000db5: SWAP2
00000db6: POP
00000db7: POP
00000db8: JUMP
00000db9: JUMPDEST
00000dba: PUSH1 0x00
00000dbc: DUP3
00000dbd: PUSH2 0x0dc8
00000dc0: JUMPI
00000dc1: POP
00000dc2: PUSH1 0x00
00000dc4: PUSH2 0x0db3
00000dc7: JUMP
00000dc8: JUMPDEST
00000dc9: DUP3
00000dca: DUP3
00000dcb: MUL
00000dcc: DUP3
00000dcd: DUP5
00000dce: DUP3
00000dcf: DUP2
00000dd0: PUSH2 0x0dd5
00000dd3: JUMPI
00000dd4: INVALID
00000dd5: JUMPDEST
00000dd6: DIV
00000dd7: EQ
00000dd8: PUSH2 0x0db0
00000ddb: JUMPI
00000ddc: PUSH1 0x40
00000dde: MLOAD
00000ddf: PUSH3 0x461bcd
00000de3: PUSH1 0xe5
00000de5: SHL
00000de6: DUP2
00000de7: MSTORE
00000de8: PUSH1 0x04
00000dea: ADD
00000deb: DUP1
00000dec: DUP1
00000ded: PUSH1 0x20
00000def: ADD
00000df0: DUP3
00000df1: DUP2
00000df2: SUB
00000df3: DUP3
00000df4: MSTORE
00000df5: PUSH1 0x21
00000df7: DUP2
00000df8: MSTORE
00000df9: PUSH1 0x20
00000dfb: ADD
00000dfc: DUP1
00000dfd: PUSH2 0x110e
00000e00: PUSH1 0x21
00000e02: SWAP2
00000e03: CODECOPY
00000e04: PUSH1 0x40
00000e06: ADD
00000e07: SWAP2
00000e08: POP
00000e09: POP
00000e0a: PUSH1 0x40
00000e0c: MLOAD
00000e0d: DUP1
00000e0e: SWAP2
00000e0f: SUB
00000e10: SWAP1
00000e11: REVERT
00000e12: JUMPDEST
00000e13: PUSH1 0x00
00000e15: PUSH2 0x0db0
00000e18: DUP4
00000e19: DUP4
00000e1a: PUSH1 0x40
00000e1c: MLOAD
00000e1d: DUP1
00000e1e: PUSH1 0x40
00000e20: ADD
00000e21: PUSH1 0x40
00000e23: MSTORE
00000e24: DUP1
00000e25: PUSH1 0x1a
00000e27: DUP2
00000e28: MSTORE
00000e29: PUSH1 0x20
00000e2b: ADD
00000e2c: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00000e4d: DUP2
00000e4e: MSTORE
00000e4f: POP
00000e50: PUSH1 0x00
00000e52: DUP2
00000e53: DUP4
00000e54: PUSH2 0x0edb
00000e57: JUMPI
00000e58: PUSH1 0x40
00000e5a: MLOAD
00000e5b: PUSH3 0x461bcd
00000e5f: PUSH1 0xe5
00000e61: SHL
00000e62: DUP2
00000e63: MSTORE
00000e64: PUSH1 0x04
00000e66: ADD
00000e67: DUP1
00000e68: DUP1
00000e69: PUSH1 0x20
00000e6b: ADD
00000e6c: DUP3
00000e6d: DUP2
00000e6e: SUB
00000e6f: DUP3
00000e70: MSTORE
00000e71: DUP4
00000e72: DUP2
00000e73: DUP2
00000e74: MLOAD
00000e75: DUP2
00000e76: MSTORE
00000e77: PUSH1 0x20
00000e79: ADD
00000e7a: SWAP2
00000e7b: POP
00000e7c: DUP1
00000e7d: MLOAD
00000e7e: SWAP1
00000e7f: PUSH1 0x20
00000e81: ADD
00000e82: SWAP1
00000e83: DUP1
00000e84: DUP4
00000e85: DUP4
00000e86: PUSH1 0x00
00000e88: JUMPDEST
00000e89: DUP4
00000e8a: DUP2
00000e8b: LT
00000e8c: ISZERO
00000e8d: PUSH2 0x0ea0
00000e90: JUMPI
00000e91: DUP2
00000e92: DUP2
00000e93: ADD
00000e94: MLOAD
00000e95: DUP4
00000e96: DUP3
00000e97: ADD
00000e98: MSTORE
00000e99: PUSH1 0x20
00000e9b: ADD
00000e9c: PUSH2 0x0e88
00000e9f: JUMP
00000ea0: JUMPDEST
00000ea1: POP
00000ea2: POP
00000ea3: POP
00000ea4: POP
00000ea5: SWAP1
00000ea6: POP
00000ea7: SWAP1
00000ea8: DUP2
00000ea9: ADD
00000eaa: SWAP1
00000eab: PUSH1 0x1f
00000ead: AND
00000eae: DUP1
00000eaf: ISZERO
00000eb0: PUSH2 0x0ecd
00000eb3: JUMPI
00000eb4: DUP1
00000eb5: DUP3
00000eb6: SUB
00000eb7: DUP1
00000eb8: MLOAD
00000eb9: PUSH1 0x01
00000ebb: DUP4
00000ebc: PUSH1 0x20
00000ebe: SUB
00000ebf: PUSH2 0x0100
00000ec2: EXP
00000ec3: SUB
00000ec4: NOT
00000ec5: AND
00000ec6: DUP2
00000ec7: MSTORE
00000ec8: PUSH1 0x20
00000eca: ADD
00000ecb: SWAP2
00000ecc: POP
00000ecd: JUMPDEST
00000ece: POP
00000ecf: SWAP3
00000ed0: POP
00000ed1: POP
00000ed2: POP
00000ed3: PUSH1 0x40
00000ed5: MLOAD
00000ed6: DUP1
00000ed7: SWAP2
00000ed8: SUB
00000ed9: SWAP1
00000eda: REVERT
00000edb: JUMPDEST
00000edc: POP
00000edd: PUSH1 0x00
00000edf: DUP4
00000ee0: DUP6
00000ee1: DUP2
00000ee2: PUSH2 0x0ee7
00000ee5: JUMPI
00000ee6: INVALID
00000ee7: JUMPDEST
00000ee8: DIV
00000ee9: SWAP6
00000eea: SWAP5
00000eeb: POP
00000eec: POP
00000eed: POP
00000eee: POP
00000eef: POP
00000ef0: JUMP
00000ef1: JUMPDEST
00000ef2: PUSH1 0x00
00000ef4: PUSH2 0x0db0
00000ef7: DUP4
00000ef8: DUP4
00000ef9: PUSH1 0x40
00000efb: MLOAD
00000efc: DUP1
00000efd: PUSH1 0x40
00000eff: ADD
00000f00: PUSH1 0x40
00000f02: MSTORE
00000f03: DUP1
00000f04: PUSH1 0x1e
00000f06: DUP2
00000f07: MSTORE
00000f08: PUSH1 0x20
00000f0a: ADD
00000f0b: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00000f2c: DUP2
00000f2d: MSTORE
00000f2e: POP
00000f2f: PUSH1 0x00
00000f31: DUP2
00000f32: DUP5
00000f33: DUP5
00000f34: GT
00000f35: ISZERO
00000f36: PUSH2 0x0f80
00000f39: JUMPI
00000f3a: PUSH1 0x40
00000f3c: MLOAD
00000f3d: PUSH3 0x461bcd
00000f41: PUSH1 0xe5
00000f43: SHL
00000f44: DUP2
00000f45: MSTORE
00000f46: PUSH1 0x20
00000f48: PUSH1 0x04
00000f4a: DUP3
00000f4b: ADD
00000f4c: DUP2
00000f4d: DUP2
00000f4e: MSTORE
00000f4f: DUP4
00000f50: MLOAD
00000f51: PUSH1 0x24
00000f53: DUP5
00000f54: ADD
00000f55: MSTORE
00000f56: DUP4
00000f57: MLOAD
00000f58: SWAP1
00000f59: SWAP3
00000f5a: DUP4
00000f5b: SWAP3
00000f5c: PUSH1 0x44
00000f5e: SWAP1
00000f5f: SWAP2
00000f60: ADD
00000f61: SWAP2
00000f62: SWAP1
00000f63: DUP6
00000f64: ADD
00000f65: SWAP1
00000f66: DUP1
00000f67: DUP4
00000f68: DUP4
00000f69: PUSH1 0x00
00000f6b: DUP4
00000f6c: ISZERO
00000f6d: PUSH2 0x0ea0
00000f70: JUMPI
00000f71: DUP2
00000f72: DUP2
00000f73: ADD
00000f74: MLOAD
00000f75: DUP4
00000f76: DUP3
00000f77: ADD
00000f78: MSTORE
00000f79: PUSH1 0x20
00000f7b: ADD
00000f7c: PUSH2 0x0e88
00000f7f: JUMP
00000f80: JUMPDEST
00000f81: POP
00000f82: POP
00000f83: POP
00000f84: SWAP1
00000f85: SUB
00000f86: SWAP1
00000f87: JUMP
00000f88: INVALID
00000f89: JUMPDEST
00000f8a: PUSH4 0x6f756e74
00000f8f: PUSH6 0x72436f6d6d69
00000f96: PUSH21 0x45746865725d20496e697469616c20636c61696d61
00000fac: PUSH15 0x742063616e6e6f7420636f756e7465
00000fbc: PUSH19 0x636f6d6d69745b636f6c6c6563744574686572
00000fd0: POP
00000fd1: PUSH19 0x6f63656564735d205472616e73666572206661
00000fe5: PUSH10 0x6c65642e5b636f756e74
00000ff0: PUSH6 0x72436f6d6d69
00000ff7: PUSH21 0x45746865725d20496e697469616c20636c61696d61
0000100d: PUSH15 0x7420646f6573206e6f742065786973
0000101d: PUSH21 0x5b636f756e746572436f6d6d697445746865725d20
00001033: MSTORE8
00001034: PUSH9 0x6f7467756e20616c72
0000103e: PUSH6 0x61647920656e
00001045: PUSH2 0x6374
00001048: PUSH6 0x645b656e6163
0000104f: PUSH21 0x53686f7467756e5d2053686f7467756e20616c7265
00001065: PUSH2 0x6479
00001068: KECCAK256
00001069: PUSH6 0x6e6163746564
00001070: JUMPDEST
00001071: PUSH4 0x6f756e74
00001076: PUSH6 0x72436f6d6d69
0000107d: PUSH21 0x45746865725d20446561646c696e65206861732065
00001093: PUSH25 0x70697265645b636f756e746572436f6d6d697445746865725d
000010ad: KECCAK256
000010ae: COINBASE
000010af: PUSH4 0x636f756e
000010b4: PUSH21 0x20646f6573206e6f74206f776e205368617264735b
000010ca: PUSH4 0x6f6c6c65
000010cf: PUSH4 0x74536861
000010d4: PUSH19 0x6450726f63656564735d2053686f7467756e20
000010e8: PUSH9 0x6173206e6f74206265
000010f2: PUSH6 0x6e20656e6163
000010f9: PUSH21 0x6564206f7220696e76616c69642077696e6e657253
0000110f: PUSH2 0x6665
00001112: UNKNOWN(0x4D)
00001113: PUSH2 0x7468
00001116: GASPRICE
00001117: KECCAK256
00001118: PUSH14 0x756c7469706c69636174696f6e20
00001127: PUSH16 0x766572666c6f775b636f756e74657243
00001138: PUSH16 0x6d6d697445746865725d204574686572
00001149: KECCAK256
0000114a: PUSH10 0x73207265717569726564
00001155: JUMPDEST
00001156: PUSH6 0x6e6163745368
0000115d: PUSH16 0x7467756e5d20436f6e646974696f6e73
0000116e: KECCAK256
0000116f: PUSH15 0x6f74206d657420746f20656e616374
0000117f: KECCAK256
00001180: MSTORE8
00001181: PUSH9 0x6f7467756e20436c61
0000118b: PUSH22 0x73655b636f6c6c656374457468657250726f63656564
000011a2: PUSH20 0x5d2043616c6c6572206e6f7420617574686f7269
000011b7: PUSH27 0x65645b636f6c6c656374536861726450726f63656564735d204163
000011d3: PUSH4 0x6f756e74
000011d8: KECCAK256
000011d9: PUSH9 0x6173206e6f74207061
000011e3: PUSH19 0x74696369706174656420696e20636f756e7465
000011f7: PUSH19 0x636c61696d5b636f756e746572436f6d6d6974
0000120b: GASLIMIT
0000120c: PUSH21 0x6865725d204574686572206578636565647320676f
00001222: PUSH2 0x6ca2
00001225: PUSH6 0x627a7a723158
0000122c: KECCAK256
0000122d: PUSH20 0xc3b89a9c0f974b088a2d48ee180ea663379db93f
00001242: CODESIZE
00001243: PUSH26

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: 0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf
call_targets: 0xb035e18ee8d98e6f54810c9337ab6524caeef875
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb035e18ee8d98e6f54810c9337ab6524caeef875"
    ],
    "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": "0xebe7f760",
            "selector": "0xebe7f760",
            "calldata_variants": [
                "0xebe7f760",
                "0xebe7f7600000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf372872d",
            "selector": "0xf372872d",
            "calldata_variants": [
                "0xf372872d",
                "0xf372872d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6d8414f",
            "selector": "0xf6d8414f",
            "calldata_variants": [
                "0xf6d8414f",
                "0xf6d8414f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf9d820d0",
            "selector": "0xf9d820d0",
            "calldata_variants": [
                "0xf9d820d0",
                "0xf9d820d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb342221",
            "selector": "0xfb342221",
            "calldata_variants": [
                "0xfb342221",
                "0xfb3422210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6dce6c5e",
            "selector": "0x6dce6c5e",
            "calldata_variants": [
                "0x6dce6c5e",
                "0x6dce6c5e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6f9fb98a",
            "selector": "0x6f9fb98a",
            "calldata_variants": [
                "0x6f9fb98a",
                "0x6f9fb98a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x767c56a2",
            "selector": "0x767c56a2",
            "calldata_variants": [
                "0x767c56a2",
                "0x767c56a20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2055,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2385,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2967,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf
call_targets: 0xb035e18ee8d98e6f54810c9337ab6524caeef875
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb035e18ee8d98e6f54810c9337ab6524caeef875"
    ],
    "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": "0xebe7f760",
            "selector": "0xebe7f760",
            "calldata_variants": [
                "0xebe7f760",
                "0xebe7f7600000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf372872d",
            "selector": "0xf372872d",
            "calldata_variants": [
                "0xf372872d",
                "0xf372872d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6d8414f",
            "selector": "0xf6d8414f",
            "calldata_variants": [
                "0xf6d8414f",
                "0xf6d8414f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf9d820d0",
            "selector": "0xf9d820d0",
            "calldata_variants": [
                "0xf9d820d0",
                "0xf9d820d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb342221",
            "selector": "0xfb342221",
            "calldata_variants": [
                "0xfb342221",
                "0xfb3422210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6dce6c5e",
            "selector": "0x6dce6c5e",
            "calldata_variants": [
                "0x6dce6c5e",
                "0x6dce6c5e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6f9fb98a",
            "selector": "0x6f9fb98a",
            "calldata_variants": [
                "0x6f9fb98a",
                "0x6f9fb98a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x767c56a2",
            "selector": "0x767c56a2",
            "calldata_variants": [
                "0x767c56a2",
                "0x767c56a20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2055,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2385,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2967,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
medium other codex Computed external CALLs with possible ETH transfer; target/access control unclear 75 no
view
evidence_json
{
    "evidence": "Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.",
    "locations": [
        "pc:2055",
        "pc:2385",
        "pc:2967",
        "pc:3289"
    ],
    "recommendation": "Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.",
    "exploit_scenario": "If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior."
}