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

Analysis Run

019bb004-7a88-71a8-a984-b890b5639b62

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 12, 2026 2:24 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
Authorization based on tx.origin
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
39262 artifact.fetch complete 1 / 3 3 months ago
39263 proxy.resolve complete 1 / 3 3 months ago
39264 tool.cast_disasm complete 1 / 3 3 months ago
39265 analysis.bundle complete 1 / 3 3 months ago
39266 capability.graph complete 1 / 3 3 months ago
39267 detector.run complete 1 / 3 3 months ago
39268 validation.fork complete 1 / 3 3 months ago
39437 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
1 medium finding: a low-level CALL at pc 4461 uses computed target/value with no explicit success validation in the artifacts; detector hits for tx.origin/CREATE appear in metadata after the INVALID marker and look non-executable.
View stdout
{"no_findings":false,"summary":"1 medium finding: a low-level CALL at pc 4461 uses computed target/value with no explicit success validation in the artifacts; detector hits for tx.origin/CREATE appear in metadata after the INVALID marker and look non-executable.","findings":[{"severity":"medium","category":"reentrancy","title":"Low-level CALL to computed target/value without clear success handling","exploit_scenario":"If the CALL target/value are influenced by user input or mutable storage (they are marked as computed), a malicious recipient contract can revert or reenter during the call. The bytecode artifacts do not show a clear success check; if state is updated regardless, payouts could be silently lost or reentrancy could impact invariants. Uncertainty remains because only bytecode-level evidence is available.","recommendation":"Validate the CALL success flag and handle failures explicitly (revert or record failure). If this is a payout to external accounts, use a pull-based claim pattern and/or a reentrancy guard around state updates that interact with external calls.","evidence":"callsites list shows CALL at pc 4461 with computed target/value and `returndata_checked: null`; detector findings report untrusted CALL target and possible ETH value transfer for the same callsite.","locations":["pc:4461"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-b1wpn690
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb005-37a8-7882-a1c7-6fe6a51e5308
--------
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
**Reading BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-b1wpn690 succeeded in 8ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-b1wpn690 succeeded in 7ms:
{
  "analysis_artifact": {
    "address": "0xecb55b39adb7c166ccab4ccb77463ded1d201de4",
    "artifact_hash": "0x7e37dc63a9e7e68cd00378755045051d063bd2009d13e0c0c82e2ead83ca8114",
    "artifact_json": {
      "auth": {
        "guards": [
          {
            "pc": 6054,
            "type": "tx_origin_used"
          }
        ]
      },
      "basic_blocks": [
        {
          "end_pc": 12,
          "hash": "0x8f1f0df1f19269f02266b776852d6ed8040a605e1bb8a65f5667180b0eea0664",
          "opcodes": [
            "PUSH1",
            "PUSH1",

thinking
**Investigating callsite with pc 4461**
exec
/bin/bash -lc 'rg -n "pc": 4461 BYTECODE_BUNDLE.json' in /tmp/codex-b1wpn690 exited 2 in 19ms:
rg: 4461: No such file or directory (os error 2)

thinking
**Noticing quoting misuse in rg pattern**
exec
/bin/bash -lc "rg -n \"pc\":\\ 4461 BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 exited 1 in 6ms:


thinking
**Searching for numeric matches in code**
exec
/bin/bash -lc 'rg -n "4461" BYTECODE_BUNDLE.json | head' in /tmp/codex-b1wpn690 succeeded in 34ms:
6088:          "pc": 4461,
15156:          "to": "call:4461",
15160:          "from": "call:4461",
17638:          "id": "call:4461",
17640:          "pc": 4461,
17857:            "pc": 4461,
17900:            "pc": 4461,

thinking
**Inspecting callsite usage**
exec
/bin/bash -lc "sed -n '6070,6120p' BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 succeeded in 6ms:
            "SHA3",
            "OP_A1",
            "OP_A3",
            "OP_E8",
            "ORIGIN",
            "CREATE",
            "OP_86",
            "OP_DE",
            "PUSH13",
            "PUSH12",
            "PUSH16"
          ],
          "start_pc": 6041
        }
      ],
      "callsites": [
        {
          "opcode": "CALL",
          "pc": 4461,
          "returndata_checked": null,

thinking
**Searching for basic blocks around PC 4461**
exec
/bin/bash -lc 'rg -n "start_pc": 44" BYTECODE_BUNDLE.json | head' in /tmp/codex-b1wpn690 exited 2 in 5ms:
/bin/bash: -c: line 1: unexpected EOF while looking for matching `"'
/bin/bash: -c: line 2: syntax error: unexpected end of file

thinking
**Adjusting quote style**
exec
/bin/bash -lc "rg -n 'start_pc\": 44' BYTECODE_BUNDLE.json | head" in /tmp/codex-b1wpn690 succeeded in 10ms:
4485:          "start_pc": 4424
4517:          "start_pc": 4476
17046:          "start_pc": 4424,
17053:          "start_pc": 4476,

thinking
**Checking code block boundaries around PC 4461**
exec
/bin/bash -lc "sed -n '4440,4495p' BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 succeeded in 8ms:
          "end_pc": 4475,
          "hash": "0xcb9620a4d00d0f8249e9b14bafc7ff3e112e8459e7d79566ace4bcb70b4207b5",
          "opcodes": [
            "JUMPDEST",
            "PUSH1",
            "MLOAD",
            "OP_80",
            "OP_91",
            "SUB",
            "OP_90",
            "OP_A2",
            "PUSH1",
            "OP_83",
            "PUSH1",
            "PUSH1",
            "PUSH1",
            "SHL",
            "SUB",
            "AND",
            "OP_82",

thinking
**Examining call and reentrancy patterns**
exec
/bin/bash -lc 'rg -n "storage" BYTECODE_BUNDLE.json | head -n 20' in /tmp/codex-b1wpn690 succeeded in 8ms:
8074:          "storage": {
8243:          "storage": {
8412:          "storage": {
8581:          "storage": {
8750:          "storage": {
8919:          "storage": {
9088:          "storage": {
9257:          "storage": {
9426:          "storage": {
9595:          "storage": {
9764:          "storage": {
9933:          "storage": {
10102:          "storage": {
10271:          "storage": {
10440:          "storage": {
10609:          "storage": {
10778:          "storage": {
10947:          "storage": {
11116:          "storage": {
11285:          "storage": {

thinking
**Inspecting storage sections near line 8074**
exec
/bin/bash -lc "sed -n '8040,8095p' BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 succeeded in 26ms:
          "entry_pc": null,
          "selector": "0x23b872dd"
        },
        {
          "entry_pc": 117300739,
          "selector": "0x03c83302"
        },
        {
          "entry_pc": 157198259,
          "selector": "0x06fdde03"
        },
        {
          "entry_pc": null,
          "selector": "0x095ea7b3"
        }
      ],
      "functions": [
        {
          "auth": {
            "guards": [

thinking
**Analyzing function and storage usage**
exec
/bin/bash -lc 'rg -n "360894a13ba1a321" BYTECODE_BUNDLE.json' in /tmp/codex-b1wpn690 exited 1 in 9ms:


thinking
**Analyzing potential vulnerabilities from auth guards and calls**
exec
/bin/bash -lc "rg -n '\"create\"' BYTECODE_BUNDLE.json | head" in /tmp/codex-b1wpn690 succeeded in 9ms:
12992:        "create": 1,

thinking
**Examining code near line 12992**
exec
/bin/bash -lc "sed -n '12960,13030p' BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 succeeded in 6ms:
        "0xbe10b614",
        "0xdd62ed3e",
        "0xe30443bc",
        "0xfbcbc0f1",
        "0xa457c2d7",
        "0xa8b9d240",
        "0xa9059cbb",
        "0xaafd847a",
        "0x85a6b3ae",
        "0x8da5cb5b",
        "0x91b89fba",
        "0x95d89b41",
        "0x6a474002",
        "0x70a08231",
        "0x715018a6",
        "0x36951356",
        "0x39509351",
        "0x4e7b827f",
        "0x52b5f81d",
        "0x27ce0147",

thinking
**Investigating contract creation references**
exec
/bin/bash -lc 'rg -n "evidence" BYTECODE_BUNDLE.json | head -n 20' in /tmp/codex-b1wpn690 succeeded in 33ms:
13185:      "proxy_evidence": {
17831:      "evidence_json": {
17852:      "evidence_json": {
17895:      "evidence_json": {
17938:      "evidence_json": {

thinking
**Exploring proxy_evidence context**
exec
/bin/bash -lc "sed -n '13160,13210p' BYTECODE_BUNDLE.json" in /tmp/codex-b1wpn690 succeeded in 21ms:
  },
  "analysis_run": {
    "address": "0xecb55b39adb7c166ccab4ccb77463ded1d201de4",
    "block_number": null,
    "chain_id": 1,
    "child_links": [],
    "created_at": "2026-01-12T02:24:02.000000Z",
    "id": "019bb004-7a88-71a8-a984-b890b5639b62",
    "parent_links": [],
    "status": "running",
    "updated_at": "2026-01-12T02:24:02.000000Z"
  },
  "artifact": {
    "codehash": "0x286394bd7ba3c0ba46eb541309d0613e0f747a02142255a05ede82f982ffc6ce",
    "compiler_json": {
      "compiler_version": null,
      "etherscan": {
        "contract_name": null,
        "implementation": null,
        "license": "Unknown",

thinking
**Analyzing runtime bytecode and call behavior**
exec
/bin/bash -lc "python - <<'PY'
import json
import sys
from pathlib import Path

# opcode map
opcodes = {
    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',
    0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
for i in range(1,33):
    opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17):
    opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17):
    opcodes[0x8f+i]=f'SWAP{i}'

j = json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode = j['artifact']['runtime_bytecode']['full'][2:]
code = bytes.fromhex(hexcode)

start = 4400
end = 4505
pc = 0
out = []
while pc < len(code):
    op = code[pc]
    name = opcodes.get(op, f'OP_{op:02x}')
    if start <= pc <= end:
        if name.startswith('PUSH'):
            n = int(name[4:])
            data = code[pc+1:pc+1+n]
            out.append((pc, name, data.hex()))
            pc += 1+n
            continue
        out.append((pc, name, ''))
    if name.startswith('PUSH'):
        n = int(name[4:])
        pc += 1+n
    else:
        pc += 1

for pc,name,data in out:
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-b1wpn690 succeeded in 49ms:
1130 DUP8
1131 SWAP1
1132 SWAP2
1133 DUP3
1134 MSTORE
1135 PUSH1 0x01
1137 PUSH1 0x01
1139 PUSH1 0xa0
113b SHL
113c SUB
113d AND
113e PUSH1 0x20
1140 DUP3
1141 ADD
1142 MSTORE
1143 PUSH1 0x40
1145 ADD
1146 SWAP1
1147 JUMP
1148 JUMPDEST

thinking
**Analyzing low-level call in assembly**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

opcodes = {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',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'

j = json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code = bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])

start=0x10e0
end=0x11b5
pc=0
out=[]
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if start <= pc <= end:
        if name.startswith('PUSH'):
            n=int(name[4:])
            data=code[pc+1:pc+1+n]
            out.append((pc,name,data.hex()))
            pc+=1+n
            continue
        out.append((pc,name,''))
    if name.startswith('PUSH'):
        n=int(name[4:])
        pc+=1+n
    else:
        pc+=1

for pc,name,data in out:
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-b1wpn690 succeeded in 64ms:
10e1 SWAP1
10e2 DUP3
10e3 PUSH2 0x0dd3
10e6 JUMP
10e7 JUMPDEST
10e8 PUSH1 0x01
10ea PUSH1 0x01
10ec PUSH1 0xa0
10ee SHL
10ef SUB
10f0 DUP6
10f1 AND
10f2 PUSH1 0x00
10f4 DUP2
10f5 DUP2
10f6 MSTORE
10f7 PUSH1 0x07
10f9 PUSH1 0x20
10fb MSTORE
10fc PUSH1 0x40

thinking
**Analyzing external calls and event logging**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

opcodes = {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',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'

j = json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code = bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])

start=0x1760
end=0x17d5
pc=0
out=[]
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if start <= pc <= end:
        if name.startswith('PUSH'):
            n=int(name[4:])
            data=code[pc+1:pc+1+n]
            out.append((pc,name,data.hex()))
            pc+=1+n
            continue
        out.append((pc,name,''))
    if name.startswith('PUSH'):
        n=int(name[4:])
        pc+=1+n
    else:
        pc+=1

for pc,name,data in out:
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-b1wpn690 succeeded in 84ms:
1760 ISZERO
1761 PUSH1 0x01
1763 PUSH1 0xff
1765 SHL
1766 DUP6
1767 ADD
1768 DUP5
1769 SLT
176a AND
176b ISZERO
176c PUSH2 0x1777
176f JUMPI
1770 PUSH2 0x1777
1773 PUSH2 0x1623
1776 JUMP
1777 JUMPDEST
1778 PUSH1 0x01
177a PUSH1 0x01
177c PUSH1 0xff
177e SHL

thinking
**Analyzing ORIGIN and CREATE in metadata**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

j=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])

# find possible metadata start by looking for 0xfea2646970667358 (solc marker)
marker=b'\\xfea2646970667358'
idx=code.find(marker)
print('metadata_marker_pc', idx)

origin_pcs=[i for i,b in enumerate(code) if b==0x32]
print('origin_pcs', origin_pcs[:10], 'count', len(origin_pcs))
if idx"'!=-1:
    pre=[pc for pc in origin_pcs if pc < idx]
    print('"'origin_before_metadata', pre)
    print('origin_after_metadata', [pc for pc in origin_pcs if pc>=idx][:10])
PY" in /tmp/codex-b1wpn690 succeeded in 35ms:
metadata_marker_pc -1
origin_pcs [2801, 3047, 3832, 4384, 4839, 5074, 5189, 5415, 6054] count 9

thinking
**Investigating missing metadata marker**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
j=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])
print('len', len(code))
print(code[-80:].hex())
PY" in /tmp/codex-b1wpn690 succeeded in 31ms:
len 6094
1b038401831381161561179257611792611623565b5050039056fea2646970667358221220a1a3e832f086de6cb61f3b31813c5ae482d8dd06bf6b057ed57fae724de6effc64736f6c634300080d0033

thinking
**Investigating metadata marker byte mismatch**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
j=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])
marker=bytes.fromhex('fea2646970667358')
idx=code.find(marker)
print('metadata_marker_pc', idx)
origin_pcs=[i for i,b in enumerate(code) if b==0x32]
print('origin_pcs', origin_pcs)
print('origin_before_metadata', [pc for pc in origin_pcs if pc < idx])
print('origin_after_metadata', [pc for pc in origin_pcs if pc >= idx])
PY" in /tmp/codex-b1wpn690 succeeded in 69ms:
metadata_marker_pc 6040
origin_pcs [2801, 3047, 3832, 4384, 4839, 5074, 5189, 5415, 6054]
origin_before_metadata [2801, 3047, 3832, 4384, 4839, 5074, 5189, 5415]
origin_after_metadata [6054]

thinking
**Analyzing actual ORIGIN instructions**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

opcodes = {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',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'

j=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])

instrs=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op, f'OP_{op:02x}')
    instrs.append((pc, name))
    if name.startswith('PUSH'):
        n=int(name[4:])
        pc += 1+n
    else:
        pc += 1

origin_pcs=[pc for pc,name in instrs if name=='ORIGIN']
create_pcs=[pc for pc,name in instrs if name=='CREATE']
print('origin_instr_pcs', origin_pcs)
print('create_instr_pcs', create_pcs)
PY" in /tmp/codex-b1wpn690 succeeded in 43ms:
origin_instr_pcs [6054]
create_instr_pcs [6055]

thinking
**Analyzing false positives and call validation**

I'm sorting out that ORIGIN and CREATE opcodes come from metadata, not executable code, so flagged uses are false positives. The real concern is an external call to an untrusted address with value sent, where the contract updates state before the call but doesn’t reliably check if the call succeeded—this could cause dividends to be lost if the transfer fails. I’m planning to disassemble further to verify how the call’s success flag is handled in later code.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

opcodes = {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',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'

j=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(j['artifact']['runtime_bytecode']['full'][2:])

start=0x1190
end=0x1215
pc=0
out=[]
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op, f'OP_{op:02x}')
    if start <= pc <= end:
        if name.startswith('PUSH'):
            n=int(name[4:])
            data=code[pc+1:pc+1+n]
            out.append((pc,name,data.hex()))
            pc+=1+n
            continue
        out.append((pc,name,''))
    if name.startswith('PUSH'):
        n=int(name[4:])
        pc+=1+n
    else:
        pc+=1

for pc,name,data in out:
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-b1wpn690 succeeded in 34ms:
1190 MSTORE
1191 RETURNDATASIZE
1192 PUSH1 0x00
1194 PUSH1 0x20
1196 DUP5
1197 ADD
1198 RETURNDATACOPY
1199 PUSH2 0x11a2
119c JUMP
119d JUMPDEST
119e PUSH1 0x60
11a0 SWAP2
11a1 POP
11a2 JUMPDEST
11a3 POP
11a4 POP
11a5 SWAP1
11a6 POP
11a7 DUP1
11a8 PUSH2 0x11f4

thinking
**Analyzing call handling and potential risks**
codex
{"no_findings":false,"summary":"1 medium finding: a low-level CALL at pc 4461 uses computed target/value with no explicit success validation in the artifacts; detector hits for tx.origin/CREATE appear in metadata after the INVALID marker and look non-executable.","findings":[{"severity":"medium","category":"reentrancy","title":"Low-level CALL to computed target/value without clear success handling","exploit_scenario":"If the CALL target/value are influenced by user input or mutable storage (they are marked as computed), a malicious recipient contract can revert or reenter during the call. The bytecode artifacts do not show a clear success check; if state is updated regardless, payouts could be silently lost or reentrancy could impact invariants. Uncertainty remains because only bytecode-level evidence is available.","recommendation":"Validate the CALL success flag and handle failures explicitly (revert or record failure). If this is a payout to external accounts, use a pull-based claim pattern and/or a reentrancy guard around state updates that interact with external calls.","evidence":"callsites list shows CALL at pc 4461 with computed target/value and `returndata_checked: null`; detector findings report untrusted CALL target and possible ETH value transfer for the same callsite.","locations":["pc:4461"]}]}
tokens used
64,406
Metadata
{
    "codex": {
        "ran_at": "2026-01-12T02:30:39.573686+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 12190,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "1 medium finding: a low-level CALL at pc 4461 uses computed target/value with no explicit success validation in the artifacts; detector hits for tx.origin/CREATE appear in metadata after the INVALID marker and look non-executable.",
    "raw_final": {
        "summary": "1 medium finding: a low-level CALL at pc 4461 uses computed target/value with no explicit success validation in the artifacts; detector hits for tx.origin/CREATE appear in metadata after the INVALID marker and look non-executable.",
        "findings": [
            {
                "title": "Low-level CALL to computed target/value without clear success handling",
                "category": "reentrancy",
                "evidence": "callsites list shows CALL at pc 4461 with computed target/value and `returndata_checked: null`; detector findings report untrusted CALL target and possible ETH value transfer for the same callsite.",
                "severity": "medium",
                "locations": [
                    "pc:4461"
                ],
                "recommendation": "Validate the CALL success flag and handle failures explicitly (revert or record failure). If this is a payout to external accounts, use a pull-based claim pattern and/or a reentrancy guard around state updates that interact with external calls.",
                "exploit_scenario": "If the CALL target/value are influenced by user input or mutable storage (they are marked as computed), a malicious recipient contract can revert or reenter during the call. The bytecode artifacts do not show a clear success check; if state is updated regardless, payouts could be silently lost or reentrancy could impact invariants. Uncertainty remains because only bytecode-level evidence is available."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
3598
Flags
create_opcodes_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x01c6
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6a474002
00000019: GT
0000001a: PUSH2 0x00f7
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xa457c2d7
00000024: GT
00000025: PUSH2 0x0095
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xbe10b614
0000002f: GT
00000030: PUSH2 0x0064
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xbe10b614
0000003a: EQ
0000003b: PUSH2 0x050a
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xdd62ed3e
00000045: EQ
00000046: PUSH2 0x053e
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe30443bc
00000050: EQ
00000051: PUSH2 0x0584
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfbcbc0f1
0000005b: EQ
0000005c: PUSH2 0x05a4
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xa457c2d7
0000006b: EQ
0000006c: PUSH2 0x0474
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xa8b9d240
00000076: EQ
00000077: PUSH2 0x0494
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xa9059cbb
00000081: EQ
00000082: PUSH2 0x04b4
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xaafd847a
0000008c: EQ
0000008d: PUSH2 0x04d4
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x85a6b3ae
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x85a6b3ae
000000a7: EQ
000000a8: PUSH2 0x0401
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x8da5cb5b
000000b2: EQ
000000b3: PUSH2 0x0417
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x91b89fba
000000bd: EQ
000000be: PUSH2 0x043f
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x95d89b41
000000c8: EQ
000000c9: PUSH2 0x045f
000000cc: JUMPI
000000cd: PUSH1 0x00
000000cf: DUP1
000000d0: REVERT
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x6a474002
000000d8: EQ
000000d9: PUSH2 0x03a1
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x70a08231
000000e3: EQ
000000e4: PUSH2 0x03b6
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x715018a6
000000ee: EQ
000000ef: PUSH2 0x03ec
000000f2: JUMPI
000000f3: PUSH1 0x00
000000f5: DUP1
000000f6: REVERT
000000f7: JUMPDEST
000000f8: DUP1
000000f9: PUSH4 0x27ce0147
000000fe: GT
000000ff: PUSH2 0x0164
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x36951356
00000109: GT
0000010a: PUSH2 0x013e
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x36951356
00000114: EQ
00000115: PUSH2 0x0311
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x39509351
0000011f: EQ
00000120: PUSH2 0x0331
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x4e7b827f
0000012a: EQ
0000012b: PUSH2 0x0351
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x52b5f81d
00000135: EQ
00000136: PUSH2 0x0381
00000139: JUMPI
0000013a: PUSH1 0x00
0000013c: DUP1
0000013d: REVERT
0000013e: JUMPDEST
0000013f: DUP1
00000140: PUSH4 0x27ce0147
00000145: EQ
00000146: PUSH2 0x02b5
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH4 0x313ce567
00000150: EQ
00000151: PUSH2 0x02d5
00000154: JUMPI
00000155: DUP1
00000156: PUSH4 0x31e79db0
0000015b: EQ
0000015c: PUSH2 0x02f1
0000015f: JUMPI
00000160: PUSH1 0x00
00000162: DUP1
00000163: REVERT
00000164: JUMPDEST
00000165: DUP1
00000166: PUSH4 0x09bbedde
0000016b: GT
0000016c: PUSH2 0x01a0
0000016f: JUMPI
00000170: DUP1
00000171: PUSH4 0x09bbedde
00000176: EQ
00000177: PUSH2 0x023d
0000017a: JUMPI
0000017b: DUP1
0000017c: PUSH4 0x18160ddd
00000181: EQ
00000182: PUSH2 0x0260
00000185: JUMPI
00000186: DUP1
00000187: PUSH4 0x18c18adb
0000018c: EQ
0000018d: PUSH2 0x0275
00000190: JUMPI
00000191: DUP1
00000192: PUSH4 0x23b872dd
00000197: EQ
00000198: PUSH2 0x0295
0000019b: JUMPI
0000019c: PUSH1 0x00
0000019e: DUP1
0000019f: REVERT
000001a0: JUMPDEST
000001a1: DUP1
000001a2: PUSH4 0x03c83302
000001a7: EQ
000001a8: PUSH2 0x01da
000001ab: JUMPI
000001ac: DUP1
000001ad: PUSH4 0x06fdde03
000001b2: EQ
000001b3: PUSH2 0x01e2
000001b6: JUMPI
000001b7: DUP1
000001b8: PUSH4 0x095ea7b3
000001bd: EQ
000001be: PUSH2 0x020d
000001c1: JUMPI
000001c2: PUSH1 0x00
000001c4: DUP1
000001c5: REVERT
000001c6: JUMPDEST
000001c7: CALLDATASIZE
000001c8: PUSH2 0x01d5
000001cb: JUMPI
000001cc: PUSH2 0x01d3
000001cf: PUSH2 0x05d9
000001d2: JUMP
000001d3: JUMPDEST
000001d4: STOP
000001d5: JUMPDEST
000001d6: PUSH1 0x00
000001d8: DUP1
000001d9: REVERT
000001da: JUMPDEST
000001db: PUSH2 0x01d3
000001de: PUSH2 0x05d9
000001e1: JUMP
000001e2: JUMPDEST
000001e3: CALLVALUE
000001e4: DUP1
000001e5: ISZERO
000001e6: PUSH2 0x01ee
000001e9: JUMPI
000001ea: PUSH1 0x00
000001ec: DUP1
000001ed: REVERT
000001ee: JUMPDEST
000001ef: POP
000001f0: PUSH2 0x01f7
000001f3: PUSH2 0x066c
000001f6: JUMP
000001f7: JUMPDEST
000001f8: PUSH1 0x40
000001fa: MLOAD
000001fb: PUSH2 0x0204
000001fe: SWAP2
000001ff: SWAP1
00000200: PUSH2 0x14f3
00000203: JUMP
00000204: JUMPDEST
00000205: PUSH1 0x40
00000207: MLOAD
00000208: DUP1
00000209: SWAP2
0000020a: SUB
0000020b: SWAP1
0000020c: RETURN
0000020d: JUMPDEST
0000020e: CALLVALUE
0000020f: DUP1
00000210: ISZERO
00000211: PUSH2 0x0219
00000214: JUMPI
00000215: PUSH1 0x00
00000217: DUP1
00000218: REVERT
00000219: JUMPDEST
0000021a: POP
0000021b: PUSH2 0x022d
0000021e: PUSH2 0x0228
00000221: CALLDATASIZE
00000222: PUSH1 0x04
00000224: PUSH2 0x1560
00000227: JUMP
00000228: JUMPDEST
00000229: PUSH2 0x06fe
0000022c: JUMP
0000022d: JUMPDEST
0000022e: PUSH1 0x40
00000230: MLOAD
00000231: SWAP1
00000232: ISZERO
00000233: ISZERO
00000234: DUP2
00000235: MSTORE
00000236: PUSH1 0x20
00000238: ADD
00000239: PUSH2 0x0204
0000023c: JUMP
0000023d: JUMPDEST
0000023e: CALLVALUE
0000023f: DUP1
00000240: ISZERO
00000241: PUSH2 0x0249
00000244: JUMPI
00000245: PUSH1 0x00
00000247: DUP1
00000248: REVERT
00000249: JUMPDEST
0000024a: POP
0000024b: PUSH2 0x0252
0000024e: PUSH2 0x0718
00000251: JUMP
00000252: JUMPDEST
00000253: PUSH1 0x40
00000255: MLOAD
00000256: SWAP1
00000257: DUP2
00000258: MSTORE
00000259: PUSH1 0x20
0000025b: ADD
0000025c: PUSH2 0x0204
0000025f: JUMP
00000260: JUMPDEST
00000261: CALLVALUE
00000262: DUP1
00000263: ISZERO
00000264: PUSH2 0x026c
00000267: JUMPI
00000268: PUSH1 0x00
0000026a: DUP1
0000026b: REVERT
0000026c: JUMPDEST
0000026d: POP
0000026e: PUSH1 0x02
00000270: SLOAD
00000271: PUSH2 0x0252
00000274: JUMP
00000275: JUMPDEST
00000276: CALLVALUE
00000277: DUP1
00000278: ISZERO
00000279: PUSH2 0x0281
0000027c: JUMPI
0000027d: PUSH1 0x00
0000027f: DUP1
00000280: REVERT
00000281: JUMPDEST
00000282: POP
00000283: PUSH2 0x01d3
00000286: PUSH2 0x0290
00000289: CALLDATASIZE
0000028a: PUSH1 0x04
0000028c: PUSH2 0x1560
0000028f: JUMP
00000290: JUMPDEST
00000291: PUSH2 0x0728
00000294: JUMP
00000295: JUMPDEST
00000296: CALLVALUE
00000297: DUP1
00000298: ISZERO
00000299: PUSH2 0x02a1
0000029c: JUMPI
0000029d: PUSH1 0x00
0000029f: DUP1
000002a0: REVERT
000002a1: JUMPDEST
000002a2: POP
000002a3: PUSH2 0x022d
000002a6: PUSH2 0x02b0
000002a9: CALLDATASIZE
000002aa: PUSH1 0x04
000002ac: PUSH2 0x158c
000002af: JUMP
000002b0: JUMPDEST
000002b1: PUSH2 0x0839
000002b4: JUMP
000002b5: JUMPDEST
000002b6: CALLVALUE
000002b7: DUP1
000002b8: ISZERO
000002b9: PUSH2 0x02c1
000002bc: JUMPI
000002bd: PUSH1 0x00
000002bf: DUP1
000002c0: REVERT
000002c1: JUMPDEST
000002c2: POP
000002c3: PUSH2 0x0252
000002c6: PUSH2 0x02d0
000002c9: CALLDATASIZE
000002ca: PUSH1 0x04
000002cc: PUSH2 0x15cd
000002cf: JUMP
000002d0: JUMPDEST
000002d1: PUSH2 0x085d
000002d4: JUMP
000002d5: JUMPDEST
000002d6: CALLVALUE
000002d7: DUP1
000002d8: ISZERO
000002d9: PUSH2 0x02e1
000002dc: JUMPI
000002dd: PUSH1 0x00
000002df: DUP1
000002e0: REVERT
000002e1: JUMPDEST
000002e2: POP
000002e3: PUSH1 0x40
000002e5: MLOAD
000002e6: PUSH1 0x12
000002e8: DUP2
000002e9: MSTORE
000002ea: PUSH1 0x20
000002ec: ADD
000002ed: PUSH2 0x0204
000002f0: JUMP
000002f1: JUMPDEST
000002f2: CALLVALUE
000002f3: DUP1
000002f4: ISZERO
000002f5: PUSH2 0x02fd
000002f8: JUMPI
000002f9: PUSH1 0x00
000002fb: DUP1
000002fc: REVERT
000002fd: JUMPDEST
000002fe: POP
000002ff: PUSH2 0x01d3
00000302: PUSH2 0x030c
00000305: CALLDATASIZE
00000306: PUSH1 0x04
00000308: PUSH2 0x15cd
0000030b: JUMP
0000030c: JUMPDEST
0000030d: PUSH2 0x08b9
00000310: JUMP
00000311: JUMPDEST
00000312: CALLVALUE
00000313: DUP1
00000314: ISZERO
00000315: PUSH2 0x031d
00000318: JUMPI
00000319: PUSH1 0x00
0000031b: DUP1
0000031c: REVERT
0000031d: JUMPDEST
0000031e: POP
0000031f: PUSH2 0x022d
00000322: PUSH2 0x032c
00000325: CALLDATASIZE
00000326: PUSH1 0x04
00000328: PUSH2 0x15cd
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x0997
00000330: JUMP
00000331: JUMPDEST
00000332: CALLVALUE
00000333: DUP1
00000334: ISZERO
00000335: PUSH2 0x033d
00000338: JUMPI
00000339: PUSH1 0x00
0000033b: DUP1
0000033c: REVERT
0000033d: JUMPDEST
0000033e: POP
0000033f: PUSH2 0x022d
00000342: PUSH2 0x034c
00000345: CALLDATASIZE
00000346: PUSH1 0x04
00000348: PUSH2 0x1560
0000034b: JUMP
0000034c: JUMPDEST
0000034d: PUSH2 0x09e3
00000350: JUMP
00000351: JUMPDEST
00000352: CALLVALUE
00000353: DUP1
00000354: ISZERO
00000355: PUSH2 0x035d
00000358: JUMPI
00000359: PUSH1 0x00
0000035b: DUP1
0000035c: REVERT
0000035d: JUMPDEST
0000035e: POP
0000035f: PUSH2 0x022d
00000362: PUSH2 0x036c
00000365: CALLDATASIZE
00000366: PUSH1 0x04
00000368: PUSH2 0x15cd
0000036b: JUMP
0000036c: JUMPDEST
0000036d: PUSH1 0x0d
0000036f: PUSH1 0x20
00000371: MSTORE
00000372: PUSH1 0x00
00000374: SWAP1
00000375: DUP2
00000376: MSTORE
00000377: PUSH1 0x40
00000379: SWAP1
0000037a: KECCAK256
0000037b: SLOAD
0000037c: PUSH1 0xff
0000037e: AND
0000037f: DUP2
00000380: JUMP
00000381: JUMPDEST
00000382: CALLVALUE
00000383: DUP1
00000384: ISZERO
00000385: PUSH2 0x038d
00000388: JUMPI
00000389: PUSH1 0x00
0000038b: DUP1
0000038c: REVERT
0000038d: JUMPDEST
0000038e: POP
0000038f: PUSH2 0x0252
00000392: PUSH2 0x039c
00000395: CALLDATASIZE
00000396: PUSH1 0x04
00000398: PUSH2 0x15ea
0000039b: JUMP
0000039c: JUMPDEST
0000039d: PUSH2 0x0a22
000003a0: JUMP
000003a1: JUMPDEST
000003a2: CALLVALUE
000003a3: DUP1
000003a4: ISZERO
000003a5: PUSH2 0x03ad
000003a8: JUMPI
000003a9: PUSH1 0x00
000003ab: DUP1
000003ac: REVERT
000003ad: JUMPDEST
000003ae: POP
000003af: PUSH2 0x01d3
000003b2: PUSH2 0x0a63
000003b5: JUMP
000003b6: JUMPDEST
000003b7: CALLVALUE
000003b8: DUP1
000003b9: ISZERO
000003ba: PUSH2 0x03c2
000003bd: JUMPI
000003be: PUSH1 0x00
000003c0: DUP1
000003c1: REVERT
000003c2: JUMPDEST
000003c3: POP
000003c4: PUSH2 0x0252
000003c7: PUSH2 0x03d1
000003ca: CALLDATASIZE
000003cb: PUSH1 0x04
000003cd: PUSH2 0x15cd
000003d0: JUMP
000003d1: JUMPDEST
000003d2: PUSH1 0x01
000003d4: PUSH1 0x01
000003d6: PUSH1 0xa0
000003d8: SHL
000003d9: SUB
000003da: AND
000003db: PUSH1 0x00
000003dd: SWAP1
000003de: DUP2
000003df: MSTORE
000003e0: PUSH1 0x20
000003e2: DUP2
000003e3: SWAP1
000003e4: MSTORE
000003e5: PUSH1 0x40
000003e7: SWAP1
000003e8: KECCAK256
000003e9: SLOAD
000003ea: SWAP1
000003eb: JUMP
000003ec: JUMPDEST
000003ed: CALLVALUE
000003ee: DUP1
000003ef: ISZERO
000003f0: PUSH2 0x03f8
000003f3: JUMPI
000003f4: PUSH1 0x00
000003f6: DUP1
000003f7: REVERT
000003f8: JUMPDEST
000003f9: POP
000003fa: PUSH2 0x01d3
000003fd: PUSH2 0x0b0b
00000400: JUMP
00000401: JUMPDEST
00000402: CALLVALUE
00000403: DUP1
00000404: ISZERO
00000405: PUSH2 0x040d
00000408: JUMPI
00000409: PUSH1 0x00
0000040b: DUP1
0000040c: REVERT
0000040d: JUMPDEST
0000040e: POP
0000040f: PUSH2 0x0252
00000412: PUSH1 0x08
00000414: SLOAD
00000415: DUP2
00000416: JUMP
00000417: JUMPDEST
00000418: CALLVALUE
00000419: DUP1
0000041a: ISZERO
0000041b: PUSH2 0x0423
0000041e: JUMPI
0000041f: PUSH1 0x00
00000421: DUP1
00000422: REVERT
00000423: JUMPDEST
00000424: POP
00000425: PUSH1 0x09
00000427: SLOAD
00000428: PUSH1 0x40
0000042a: MLOAD
0000042b: PUSH1 0x01
0000042d: PUSH1 0x01
0000042f: PUSH1 0xa0
00000431: SHL
00000432: SUB
00000433: SWAP1
00000434: SWAP2
00000435: AND
00000436: DUP2
00000437: MSTORE
00000438: PUSH1 0x20
0000043a: ADD
0000043b: PUSH2 0x0204
0000043e: JUMP
0000043f: JUMPDEST
00000440: CALLVALUE
00000441: DUP1
00000442: ISZERO
00000443: PUSH2 0x044b
00000446: JUMPI
00000447: PUSH1 0x00
00000449: DUP1
0000044a: REVERT
0000044b: JUMPDEST
0000044c: POP
0000044d: PUSH2 0x0252
00000450: PUSH2 0x045a
00000453: CALLDATASIZE
00000454: PUSH1 0x04
00000456: PUSH2 0x15cd
00000459: JUMP
0000045a: JUMPDEST
0000045b: PUSH2 0x0b7f
0000045e: JUMP
0000045f: JUMPDEST
00000460: CALLVALUE
00000461: DUP1
00000462: ISZERO
00000463: PUSH2 0x046b
00000466: JUMPI
00000467: PUSH1 0x00
00000469: DUP1
0000046a: REVERT
0000046b: JUMPDEST
0000046c: POP
0000046d: PUSH2 0x01f7
00000470: PUSH2 0x0b8a
00000473: JUMP
00000474: JUMPDEST
00000475: CALLVALUE
00000476: DUP1
00000477: ISZERO
00000478: PUSH2 0x0480
0000047b: JUMPI
0000047c: PUSH1 0x00
0000047e: DUP1
0000047f: REVERT
00000480: JUMPDEST
00000481: POP
00000482: PUSH2 0x022d
00000485: PUSH2 0x048f
00000488: CALLDATASIZE
00000489: PUSH1 0x04
0000048b: PUSH2 0x1560
0000048e: JUMP
0000048f: JUMPDEST
00000490: PUSH2 0x0b99
00000493: JUMP
00000494: JUMPDEST
00000495: CALLVALUE
00000496: DUP1
00000497: ISZERO
00000498: PUSH2 0x04a0
0000049b: JUMPI
0000049c: PUSH1 0x00
0000049e: DUP1
0000049f: REVERT
000004a0: JUMPDEST
000004a1: POP
000004a2: PUSH2 0x0252
000004a5: PUSH2 0x04af
000004a8: CALLDATASIZE
000004a9: PUSH1 0x04
000004ab: PUSH2 0x15cd
000004ae: JUMP
000004af: JUMPDEST
000004b0: PUSH2 0x0c2b
000004b3: JUMP
000004b4: JUMPDEST
000004b5: CALLVALUE
000004b6: DUP1
000004b7: ISZERO
000004b8: PUSH2 0x04c0
000004bb: JUMPI
000004bc: PUSH1 0x00
000004be: DUP1
000004bf: REVERT
000004c0: JUMPDEST
000004c1: POP
000004c2: PUSH2 0x022d
000004c5: PUSH2 0x04cf
000004c8: CALLDATASIZE
000004c9: PUSH1 0x04
000004cb: PUSH2 0x1560
000004ce: JUMP
000004cf: JUMPDEST
000004d0: PUSH2 0x0c57
000004d3: JUMP
000004d4: JUMPDEST
000004d5: CALLVALUE
000004d6: DUP1
000004d7: ISZERO
000004d8: PUSH2 0x04e0
000004db: JUMPI
000004dc: PUSH1 0x00
000004de: DUP1
000004df: REVERT
000004e0: JUMPDEST
000004e1: POP
000004e2: PUSH2 0x0252
000004e5: PUSH2 0x04ef
000004e8: CALLDATASIZE
000004e9: PUSH1 0x04
000004eb: PUSH2 0x15cd
000004ee: JUMP
000004ef: JUMPDEST
000004f0: PUSH1 0x01
000004f2: PUSH1 0x01
000004f4: PUSH1 0xa0
000004f6: SHL
000004f7: SUB
000004f8: AND
000004f9: PUSH1 0x00
000004fb: SWAP1
000004fc: DUP2
000004fd: MSTORE
000004fe: PUSH1 0x07
00000500: PUSH1 0x20
00000502: MSTORE
00000503: PUSH1 0x40
00000505: SWAP1
00000506: KECCAK256
00000507: SLOAD
00000508: SWAP1
00000509: JUMP
0000050a: JUMPDEST
0000050b: CALLVALUE
0000050c: DUP1
0000050d: ISZERO
0000050e: PUSH2 0x0516
00000511: JUMPI
00000512: PUSH1 0x00
00000514: DUP1
00000515: REVERT
00000516: JUMPDEST
00000517: POP
00000518: PUSH2 0x0252
0000051b: PUSH32 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
0000053c: DUP2
0000053d: JUMP
0000053e: JUMPDEST
0000053f: CALLVALUE
00000540: DUP1
00000541: ISZERO
00000542: PUSH2 0x054a
00000545: JUMPI
00000546: PUSH1 0x00
00000548: DUP1
00000549: REVERT
0000054a: JUMPDEST
0000054b: POP
0000054c: PUSH2 0x0252
0000054f: PUSH2 0x0559
00000552: CALLDATASIZE
00000553: PUSH1 0x04
00000555: PUSH2 0x15ea
00000558: JUMP
00000559: JUMPDEST
0000055a: PUSH1 0x01
0000055c: PUSH1 0x01
0000055e: PUSH1 0xa0
00000560: SHL
00000561: SUB
00000562: SWAP2
00000563: DUP3
00000564: AND
00000565: PUSH1 0x00
00000567: SWAP1
00000568: DUP2
00000569: MSTORE
0000056a: PUSH1 0x01
0000056c: PUSH1 0x20
0000056e: SWAP1
0000056f: DUP2
00000570: MSTORE
00000571: PUSH1 0x40
00000573: DUP1
00000574: DUP4
00000575: KECCAK256
00000576: SWAP4
00000577: SWAP1
00000578: SWAP5
00000579: AND
0000057a: DUP3
0000057b: MSTORE
0000057c: SWAP2
0000057d: SWAP1
0000057e: SWAP2
0000057f: MSTORE
00000580: KECCAK256
00000581: SLOAD
00000582: SWAP1
00000583: JUMP
00000584: JUMPDEST
00000585: CALLVALUE
00000586: DUP1
00000587: ISZERO
00000588: PUSH2 0x0590
0000058b: JUMPI
0000058c: PUSH1 0x00
0000058e: DUP1
0000058f: REVERT
00000590: JUMPDEST
00000591: POP
00000592: PUSH2 0x01d3
00000595: PUSH2 0x059f
00000598: CALLDATASIZE
00000599: PUSH1 0x04
0000059b: PUSH2 0x1560
0000059e: JUMP
0000059f: JUMPDEST
000005a0: PUSH2 0x0c65
000005a3: JUMP
000005a4: JUMPDEST
000005a5: CALLVALUE
000005a6: DUP1
000005a7: ISZERO
000005a8: PUSH2 0x05b0
000005ab: JUMPI
000005ac: PUSH1 0x00
000005ae: DUP1
000005af: REVERT
000005b0: JUMPDEST
000005b1: POP
000005b2: PUSH2 0x05c4
000005b5: PUSH2 0x05bf
000005b8: CALLDATASIZE
000005b9: PUSH1 0x04
000005bb: PUSH2 0x15cd
000005be: JUMP
000005bf: JUMPDEST
000005c0: PUSH2 0x0d93
000005c3: JUMP
000005c4: JUMPDEST
000005c5: PUSH1 0x40
000005c7: DUP1
000005c8: MLOAD
000005c9: SWAP3
000005ca: DUP4
000005cb: MSTORE
000005cc: PUSH1 0x20
000005ce: DUP4
000005cf: ADD
000005d0: SWAP2
000005d1: SWAP1
000005d2: SWAP2
000005d3: MSTORE
000005d4: ADD
000005d5: PUSH2 0x0204
000005d8: JUMP
000005d9: JUMPDEST
000005da: PUSH1 0x00
000005dc: PUSH2 0x05e4
000005df: PUSH1 0x02
000005e1: SLOAD
000005e2: SWAP1
000005e3: JUMP
000005e4: JUMPDEST
000005e5: GT
000005e6: PUSH2 0x05ee
000005e9: JUMPI
000005ea: PUSH1 0x00
000005ec: DUP1
000005ed: REVERT
000005ee: JUMPDEST
000005ef: CALLVALUE
000005f0: ISZERO
000005f1: PUSH2 0x066a
000005f4: JUMPI
000005f5: PUSH2 0x0621
000005f8: PUSH2 0x0600
000005fb: PUSH1 0x02
000005fd: SLOAD
000005fe: SWAP1
000005ff: JUMP
00000600: JUMPDEST
00000601: PUSH2 0x060e
00000604: CALLVALUE
00000605: PUSH1 0x01
00000607: PUSH1 0x80
00000609: SHL
0000060a: PUSH2 0x0dc0
0000060d: JUMP
0000060e: JUMPDEST
0000060f: PUSH2 0x0618
00000612: SWAP2
00000613: SWAP1
00000614: PUSH2 0x1639
00000617: JUMP
00000618: JUMPDEST
00000619: PUSH1 0x05
0000061b: SLOAD
0000061c: SWAP1
0000061d: PUSH2 0x0dd3
00000620: JUMP
00000621: JUMPDEST
00000622: PUSH1 0x05
00000624: SSTORE
00000625: PUSH1 0x40
00000627: MLOAD
00000628: CALLVALUE
00000629: DUP2
0000062a: MSTORE
0000062b: CALLER
0000062c: SWAP1
0000062d: PUSH32 0xa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511
0000064e: SWAP1
0000064f: PUSH1 0x20
00000651: ADD
00000652: PUSH1 0x40
00000654: MLOAD
00000655: DUP1
00000656: SWAP2
00000657: SUB
00000658: SWAP1
00000659: LOG2
0000065a: PUSH1 0x08
0000065c: SLOAD
0000065d: PUSH2 0x0666
00000660: SWAP1
00000661: CALLVALUE
00000662: PUSH2 0x0dd3
00000665: JUMP
00000666: JUMPDEST
00000667: PUSH1 0x08
00000669: SSTORE
0000066a: JUMPDEST
0000066b: JUMP
0000066c: JUMPDEST
0000066d: PUSH1 0x60
0000066f: PUSH1 0x03
00000671: DUP1
00000672: SLOAD
00000673: PUSH2 0x067b
00000676: SWAP1
00000677: PUSH2 0x165b
0000067a: JUMP
0000067b: JUMPDEST
0000067c: DUP1
0000067d: PUSH1 0x1f
0000067f: ADD
00000680: PUSH1 0x20
00000682: DUP1
00000683: SWAP2
00000684: DIV
00000685: MUL
00000686: PUSH1 0x20
00000688: ADD
00000689: PUSH1 0x40
0000068b: MLOAD
0000068c: SWAP1
0000068d: DUP2
0000068e: ADD
0000068f: PUSH1 0x40
00000691: MSTORE
00000692: DUP1
00000693: SWAP3
00000694: SWAP2
00000695: SWAP1
00000696: DUP2
00000697: DUP2
00000698: MSTORE
00000699: PUSH1 0x20
0000069b: ADD
0000069c: DUP3
0000069d: DUP1
0000069e: SLOAD
0000069f: PUSH2 0x06a7
000006a2: SWAP1
000006a3: PUSH2 0x165b
000006a6: JUMP
000006a7: JUMPDEST
000006a8: DUP1
000006a9: ISZERO
000006aa: PUSH2 0x06f4
000006ad: JUMPI
000006ae: DUP1
000006af: PUSH1 0x1f
000006b1: LT
000006b2: PUSH2 0x06c9
000006b5: JUMPI
000006b6: PUSH2 0x0100
000006b9: DUP1
000006ba: DUP4
000006bb: SLOAD
000006bc: DIV
000006bd: MUL
000006be: DUP4
000006bf: MSTORE
000006c0: SWAP2
000006c1: PUSH1 0x20
000006c3: ADD
000006c4: SWAP2
000006c5: PUSH2 0x06f4
000006c8: JUMP
000006c9: JUMPDEST
000006ca: DUP3
000006cb: ADD
000006cc: SWAP2
000006cd: SWAP1
000006ce: PUSH1 0x00
000006d0: MSTORE
000006d1: PUSH1 0x20
000006d3: PUSH1 0x00
000006d5: KECCAK256
000006d6: SWAP1
000006d7: JUMPDEST
000006d8: DUP2
000006d9: SLOAD
000006da: DUP2
000006db: MSTORE
000006dc: SWAP1
000006dd: PUSH1 0x01
000006df: ADD
000006e0: SWAP1
000006e1: PUSH1 0x20
000006e3: ADD
000006e4: DUP1
000006e5: DUP4
000006e6: GT
000006e7: PUSH2 0x06d7
000006ea: JUMPI
000006eb: DUP3
000006ec: SWAP1
000006ed: SUB
000006ee: PUSH1 0x1f
000006f0: AND
000006f1: DUP3
000006f2: ADD
000006f3: SWAP2
000006f4: JUMPDEST
000006f5: POP
000006f6: POP
000006f7: POP
000006f8: POP
000006f9: POP
000006fa: SWAP1
000006fb: POP
000006fc: SWAP1
000006fd: JUMP
000006fe: JUMPDEST
000006ff: PUSH1 0x00
00000701: CALLER
00000702: PUSH2 0x070c
00000705: DUP2
00000706: DUP6
00000707: DUP6
00000708: PUSH2 0x0ddf
0000070b: JUMP
0000070c: JUMPDEST
0000070d: PUSH1 0x01
0000070f: SWAP2
00000710: POP
00000711: POP
00000712: JUMPDEST
00000713: SWAP3
00000714: SWAP2
00000715: POP
00000716: POP
00000717: JUMP
00000718: JUMPDEST
00000719: PUSH1 0x00
0000071b: PUSH2 0x0723
0000071e: PUSH1 0x0b
00000720: SLOAD
00000721: SWAP1
00000722: JUMP
00000723: JUMPDEST
00000724: SWAP1
00000725: POP
00000726: SWAP1
00000727: JUMP
00000728: JUMPDEST
00000729: PUSH1 0x09
0000072b: SLOAD
0000072c: PUSH1 0x01
0000072e: PUSH1 0x01
00000730: PUSH1 0xa0
00000732: SHL
00000733: SUB
00000734: AND
00000735: CALLER
00000736: EQ
00000737: PUSH2 0x075b
0000073a: JUMPI
0000073b: PUSH1 0x40
0000073d: MLOAD
0000073e: PUSH3 0x461bcd
00000742: PUSH1 0xe5
00000744: SHL
00000745: DUP2
00000746: MSTORE
00000747: PUSH1 0x04
00000749: ADD
0000074a: PUSH2 0x0752
0000074d: SWAP1
0000074e: PUSH2 0x1695
00000751: JUMP
00000752: JUMPDEST
00000753: PUSH1 0x40
00000755: MLOAD
00000756: DUP1
00000757: SWAP2
00000758: SUB
00000759: SWAP1
0000075a: REVERT
0000075b: JUMPDEST
0000075c: PUSH1 0x01
0000075e: PUSH1 0x01
00000760: PUSH1 0xa0
00000762: SHL
00000763: SUB
00000764: DUP3
00000765: AND
00000766: PUSH1 0x00
00000768: SWAP1
00000769: DUP2
0000076a: MSTORE
0000076b: PUSH1 0x0d
0000076d: PUSH1 0x20
0000076f: MSTORE
00000770: PUSH1 0x40
00000772: SWAP1
00000773: KECCAK256
00000774: DUP1
00000775: SLOAD
00000776: PUSH1 0xff
00000778: NOT
00000779: AND
0000077a: SWAP1
0000077b: SSTORE
0000077c: PUSH32 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
0000079d: DUP2
0000079e: LT
0000079f: PUSH2 0x0801
000007a2: JUMPI
000007a3: PUSH2 0x07ac
000007a6: DUP3
000007a7: DUP3
000007a8: PUSH2 0x0e43
000007ab: JUMP
000007ac: JUMPDEST
000007ad: PUSH1 0x01
000007af: PUSH1 0x01
000007b1: PUSH1 0xa0
000007b3: SHL
000007b4: SUB
000007b5: DUP3
000007b6: AND
000007b7: PUSH1 0x00
000007b9: SWAP1
000007ba: DUP2
000007bb: MSTORE
000007bc: PUSH1 0x0c
000007be: PUSH1 0x20
000007c0: MSTORE
000007c1: PUSH1 0x40
000007c3: DUP2
000007c4: KECCAK256
000007c5: SLOAD
000007c6: PUSH1 0xff
000007c8: AND
000007c9: ISZERO
000007ca: ISZERO
000007cb: SWAP1
000007cc: SUB
000007cd: PUSH2 0x0801
000007d0: JUMPI
000007d1: PUSH1 0x01
000007d3: PUSH1 0x01
000007d5: PUSH1 0xa0
000007d7: SHL
000007d8: SUB
000007d9: DUP3
000007da: AND
000007db: PUSH1 0x00
000007dd: SWAP1
000007de: DUP2
000007df: MSTORE
000007e0: PUSH1 0x0c
000007e2: PUSH1 0x20
000007e4: MSTORE
000007e5: PUSH1 0x40
000007e7: SWAP1
000007e8: KECCAK256
000007e9: DUP1
000007ea: SLOAD
000007eb: PUSH1 0xff
000007ed: NOT
000007ee: AND
000007ef: PUSH1 0x01
000007f1: OR
000007f2: SWAP1
000007f3: SSTORE
000007f4: PUSH2 0x0801
000007f7: PUSH1 0x0b
000007f9: DUP1
000007fa: SLOAD
000007fb: PUSH1 0x01
000007fd: ADD
000007fe: SWAP1
000007ff: SSTORE
00000800: JUMP
00000801: JUMPDEST
00000802: PUSH1 0x40
00000804: MLOAD
00000805: PUSH1 0x01
00000807: PUSH1 0x01
00000809: PUSH1 0xa0
0000080b: SHL
0000080c: SUB
0000080d: DUP4
0000080e: AND
0000080f: SWAP1
00000810: PUSH32 0xa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b25
00000831: SWAP1
00000832: PUSH1 0x00
00000834: SWAP1
00000835: LOG2
00000836: POP
00000837: POP
00000838: JUMP
00000839: JUMPDEST
0000083a: PUSH1 0x00
0000083c: CALLER
0000083d: PUSH2 0x0847
00000840: DUP6
00000841: DUP3
00000842: DUP6
00000843: PUSH2 0x0ea2
00000846: JUMP
00000847: JUMPDEST
00000848: PUSH2 0x0852
0000084b: DUP6
0000084c: DUP6
0000084d: DUP6
0000084e: PUSH2 0x0f2e
00000851: JUMP
00000852: JUMPDEST
00000853: POP
00000854: PUSH1 0x01
00000856: SWAP5
00000857: SWAP4
00000858: POP
00000859: POP
0000085a: POP
0000085b: POP
0000085c: JUMP
0000085d: JUMPDEST
0000085e: PUSH1 0x01
00000860: PUSH1 0x01
00000862: PUSH1 0xa0
00000864: SHL
00000865: SUB
00000866: DUP2
00000867: AND
00000868: PUSH1 0x00
0000086a: SWAP1
0000086b: DUP2
0000086c: MSTORE
0000086d: PUSH1 0x06
0000086f: PUSH1 0x20
00000871: SWAP1
00000872: DUP2
00000873: MSTORE
00000874: PUSH1 0x40
00000876: DUP1
00000877: DUP4
00000878: KECCAK256
00000879: SLOAD
0000087a: SWAP2
0000087b: DUP4
0000087c: SWAP1
0000087d: MSTORE
0000087e: DUP3
0000087f: KECCAK256
00000880: SLOAD
00000881: PUSH1 0x05
00000883: SLOAD
00000884: PUSH1 0x01
00000886: PUSH1 0x80
00000888: SHL
00000889: SWAP3
0000088a: PUSH2 0x08af
0000088d: SWAP3
0000088e: PUSH2 0x08aa
00000891: SWAP3
00000892: PUSH2 0x08a4
00000895: SWAP2
00000896: PUSH2 0x089f
00000899: SWAP2
0000089a: SWAP1
0000089b: PUSH2 0x0dc0
0000089e: JUMP
0000089f: JUMPDEST
000008a0: PUSH2 0x0f8d
000008a3: JUMP
000008a4: JUMPDEST
000008a5: SWAP1
000008a6: PUSH2 0x0ffb
000008a9: JUMP
000008aa: JUMPDEST
000008ab: PUSH2 0x1007
000008ae: JUMP
000008af: JUMPDEST
000008b0: PUSH2 0x0712
000008b3: SWAP2
000008b4: SWAP1
000008b5: PUSH2 0x1639
000008b8: JUMP
000008b9: JUMPDEST
000008ba: PUSH1 0x09
000008bc: SLOAD
000008bd: PUSH1 0x01
000008bf: PUSH1 0x01
000008c1: PUSH1 0xa0
000008c3: SHL
000008c4: SUB
000008c5: AND
000008c6: CALLER
000008c7: EQ
000008c8: PUSH2 0x08e3
000008cb: JUMPI
000008cc: PUSH1 0x40
000008ce: MLOAD
000008cf: PUSH3 0x461bcd
000008d3: PUSH1 0xe5
000008d5: SHL
000008d6: DUP2
000008d7: MSTORE
000008d8: PUSH1 0x04
000008da: ADD
000008db: PUSH2 0x0752
000008de: SWAP1
000008df: PUSH2 0x1695
000008e2: JUMP
000008e3: JUMPDEST
000008e4: PUSH1 0x01
000008e6: PUSH1 0x01
000008e8: PUSH1 0xa0
000008ea: SHL
000008eb: SUB
000008ec: DUP2
000008ed: AND
000008ee: PUSH1 0x00
000008f0: SWAP1
000008f1: DUP2
000008f2: MSTORE
000008f3: PUSH1 0x0d
000008f5: PUSH1 0x20
000008f7: MSTORE
000008f8: PUSH1 0x40
000008fa: DUP2
000008fb: KECCAK256
000008fc: DUP1
000008fd: SLOAD
000008fe: PUSH1 0xff
00000900: NOT
00000901: AND
00000902: PUSH1 0x01
00000904: OR
00000905: SWAP1
00000906: SSTORE
00000907: PUSH2 0x0911
0000090a: SWAP1
0000090b: DUP3
0000090c: SWAP1
0000090d: PUSH2 0x0e43
00000910: JUMP
00000911: JUMPDEST
00000912: PUSH1 0x01
00000914: PUSH1 0x01
00000916: PUSH1 0xa0
00000918: SHL
00000919: SUB
0000091a: DUP2
0000091b: AND
0000091c: PUSH1 0x00
0000091e: SWAP1
0000091f: DUP2
00000920: MSTORE
00000921: PUSH1 0x0c
00000923: PUSH1 0x20
00000925: MSTORE
00000926: PUSH1 0x40
00000928: SWAP1
00000929: KECCAK256
0000092a: SLOAD
0000092b: PUSH1 0xff
0000092d: AND
0000092e: ISZERO
0000092f: ISZERO
00000930: PUSH1 0x01
00000932: SUB
00000933: PUSH2 0x0960
00000936: JUMPI
00000937: PUSH1 0x01
00000939: PUSH1 0x01
0000093b: PUSH1 0xa0
0000093d: SHL
0000093e: SUB
0000093f: DUP2
00000940: AND
00000941: PUSH1 0x00
00000943: SWAP1
00000944: DUP2
00000945: MSTORE
00000946: PUSH1 0x0c
00000948: PUSH1 0x20
0000094a: MSTORE
0000094b: PUSH1 0x40
0000094d: SWAP1
0000094e: KECCAK256
0000094f: DUP1
00000950: SLOAD
00000951: PUSH1 0xff
00000953: NOT
00000954: AND
00000955: SWAP1
00000956: SSTORE
00000957: PUSH2 0x0960
0000095a: PUSH1 0x0b
0000095c: PUSH2 0x1059
0000095f: JUMP
00000960: JUMPDEST
00000961: PUSH1 0x40
00000963: MLOAD
00000964: PUSH1 0x01
00000966: PUSH1 0x01
00000968: PUSH1 0xa0
0000096a: SHL
0000096b: SUB
0000096c: DUP3
0000096d: AND
0000096e: SWAP1
0000096f: PUSH32 0xa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b25
00000990: SWAP1
00000991: PUSH1 0x00
00000993: SWAP1
00000994: LOG2
00000995: POP
00000996: JUMP
00000997: JUMPDEST
00000998: PUSH1 0x09
0000099a: SLOAD
0000099b: PUSH1 0x00
0000099d: SWAP1
0000099e: PUSH1 0x01
000009a0: PUSH1 0x01
000009a2: PUSH1 0xa0
000009a4: SHL
000009a5: SUB
000009a6: AND
000009a7: CALLER
000009a8: EQ
000009a9: PUSH2 0x09c4
000009ac: JUMPI
000009ad: PUSH1 0x40
000009af: MLOAD
000009b0: PUSH3 0x461bcd
000009b4: PUSH1 0xe5
000009b6: SHL
000009b7: DUP2
000009b8: MSTORE
000009b9: PUSH1 0x04
000009bb: ADD
000009bc: PUSH2 0x0752
000009bf: SWAP1
000009c0: PUSH2 0x1695
000009c3: JUMP
000009c4: JUMPDEST
000009c5: POP
000009c6: PUSH1 0x01
000009c8: PUSH1 0x01
000009ca: PUSH1 0xa0
000009cc: SHL
000009cd: SUB
000009ce: AND
000009cf: PUSH1 0x00
000009d1: SWAP1
000009d2: DUP2
000009d3: MSTORE
000009d4: PUSH1 0x0d
000009d6: PUSH1 0x20
000009d8: MSTORE
000009d9: PUSH1 0x40
000009db: SWAP1
000009dc: KECCAK256
000009dd: SLOAD
000009de: PUSH1 0xff
000009e0: AND
000009e1: SWAP1
000009e2: JUMP
000009e3: JUMPDEST
000009e4: CALLER
000009e5: PUSH1 0x00
000009e7: DUP2
000009e8: DUP2
000009e9: MSTORE
000009ea: PUSH1 0x01
000009ec: PUSH1 0x20
000009ee: SWAP1
000009ef: DUP2
000009f0: MSTORE
000009f1: PUSH1 0x40
000009f3: DUP1
000009f4: DUP4
000009f5: KECCAK256
000009f6: PUSH1 0x01
000009f8: PUSH1 0x01
000009fa: PUSH1 0xa0
000009fc: SHL
000009fd: SUB
000009fe: DUP8
000009ff: AND
00000a00: DUP5
00000a01: MSTORE
00000a02: SWAP1
00000a03: SWAP2
00000a04: MSTORE
00000a05: DUP2
00000a06: KECCAK256
00000a07: SLOAD
00000a08: SWAP1
00000a09: SWAP2
00000a0a: SWAP1
00000a0b: PUSH2 0x070c
00000a0e: SWAP1
00000a0f: DUP3
00000a10: SWAP1
00000a11: DUP7
00000a12: SWAP1
00000a13: PUSH2 0x0a1d
00000a16: SWAP1
00000a17: DUP8
00000a18: SWAP1
00000a19: PUSH2 0x16ca
00000a1c: JUMP
00000a1d: JUMPDEST
00000a1e: PUSH2 0x0ddf
00000a21: JUMP
00000a22: JUMPDEST
00000a23: PUSH1 0x09
00000a25: SLOAD
00000a26: PUSH1 0x00
00000a28: SWAP1
00000a29: PUSH1 0x01
00000a2b: PUSH1 0x01
00000a2d: PUSH1 0xa0
00000a2f: SHL
00000a30: SUB
00000a31: AND
00000a32: CALLER
00000a33: EQ
00000a34: PUSH2 0x0a4f
00000a37: JUMPI
00000a38: PUSH1 0x40
00000a3a: MLOAD
00000a3b: PUSH3 0x461bcd
00000a3f: PUSH1 0xe5
00000a41: SHL
00000a42: DUP2
00000a43: MSTORE
00000a44: PUSH1 0x04
00000a46: ADD
00000a47: PUSH2 0x0752
00000a4a: SWAP1
00000a4b: PUSH2 0x1695
00000a4e: JUMP
00000a4f: JUMPDEST
00000a50: PUSH1 0x00
00000a52: PUSH2 0x0a5b
00000a55: DUP5
00000a56: DUP5
00000a57: PUSH2 0x10b0
00000a5a: JUMP
00000a5b: JUMPDEST
00000a5c: SWAP5
00000a5d: SWAP4
00000a5e: POP
00000a5f: POP
00000a60: POP
00000a61: POP
00000a62: JUMP
00000a63: JUMPDEST
00000a64: PUSH1 0x40
00000a66: MLOAD
00000a67: PUSH3 0x461bcd
00000a6b: PUSH1 0xe5
00000a6d: SHL
00000a6e: DUP2
00000a6f: MSTORE
00000a70: PUSH1 0x20
00000a72: PUSH1 0x04
00000a74: DUP3
00000a75: ADD
00000a76: MSTORE
00000a77: PUSH1 0x6b
00000a79: PUSH1 0x24
00000a7b: DUP3
00000a7c: ADD
00000a7d: MSTORE
00000a7e: PUSH32 0x4469616d6f6e645f4469766964656e645f547261636b65723a20776974686472
00000a9f: PUSH1 0x44
00000aa1: DUP3
00000aa2: ADD
00000aa3: MSTORE
00000aa4: PUSH32 0x61774469766964656e642064697361626c65642e20557365207468652027636c
00000ac5: PUSH1 0x64
00000ac7: DUP3
00000ac8: ADD
00000ac9: MSTORE
00000aca: PUSH32 0x61696d272066756e6374696f6e206f6e20746865206d61696e204469616d6f6e
00000aeb: PUSH1 0x84
00000aed: DUP3
00000aee: ADD
00000aef: MSTORE
00000af0: PUSH11 0x321031b7b73a3930b1ba17
00000afc: PUSH1 0xa9
00000afe: SHL
00000aff: PUSH1 0xa4
00000b01: DUP3
00000b02: ADD
00000b03: MSTORE
00000b04: PUSH1 0xc4
00000b06: ADD
00000b07: PUSH2 0x0752
00000b0a: JUMP
00000b0b: JUMPDEST
00000b0c: PUSH1 0x09
00000b0e: SLOAD
00000b0f: PUSH1 0x01
00000b11: PUSH1 0x01
00000b13: PUSH1 0xa0
00000b15: SHL
00000b16: SUB
00000b17: AND
00000b18: CALLER
00000b19: EQ
00000b1a: PUSH2 0x0b35
00000b1d: JUMPI
00000b1e: PUSH1 0x40
00000b20: MLOAD
00000b21: PUSH3 0x461bcd
00000b25: PUSH1 0xe5
00000b27: SHL
00000b28: DUP2
00000b29: MSTORE
00000b2a: PUSH1 0x04
00000b2c: ADD
00000b2d: PUSH2 0x0752
00000b30: SWAP1
00000b31: PUSH2 0x1695
00000b34: JUMP
00000b35: JUMPDEST
00000b36: PUSH1 0x09
00000b38: SLOAD
00000b39: PUSH1 0x40
00000b3b: MLOAD
00000b3c: PUSH1 0x00
00000b3e: SWAP2
00000b3f: PUSH1 0x01
00000b41: PUSH1 0x01
00000b43: PUSH1 0xa0
00000b45: SHL
00000b46: SUB
00000b47: AND
00000b48: SWAP1
00000b49: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000b6a: SWAP1
00000b6b: DUP4
00000b6c: SWAP1
00000b6d: LOG3
00000b6e: PUSH1 0x09
00000b70: DUP1
00000b71: SLOAD
00000b72: PUSH1 0x01
00000b74: PUSH1 0x01
00000b76: PUSH1 0xa0
00000b78: SHL
00000b79: SUB
00000b7a: NOT
00000b7b: AND
00000b7c: SWAP1
00000b7d: SSTORE
00000b7e: JUMP
00000b7f: JUMPDEST
00000b80: PUSH1 0x00
00000b82: PUSH2 0x0712
00000b85: DUP3
00000b86: PUSH2 0x0c2b
00000b89: JUMP
00000b8a: JUMPDEST
00000b8b: PUSH1 0x60
00000b8d: PUSH1 0x04
00000b8f: DUP1
00000b90: SLOAD
00000b91: PUSH2 0x067b
00000b94: SWAP1
00000b95: PUSH2 0x165b
00000b98: JUMP
00000b99: JUMPDEST
00000b9a: CALLER
00000b9b: PUSH1 0x00
00000b9d: DUP2
00000b9e: DUP2
00000b9f: MSTORE
00000ba0: PUSH1 0x01
00000ba2: PUSH1 0x20
00000ba4: SWAP1
00000ba5: DUP2
00000ba6: MSTORE
00000ba7: PUSH1 0x40
00000ba9: DUP1
00000baa: DUP4
00000bab: KECCAK256
00000bac: PUSH1 0x01
00000bae: PUSH1 0x01
00000bb0: PUSH1 0xa0
00000bb2: SHL
00000bb3: SUB
00000bb4: DUP8
00000bb5: AND
00000bb6: DUP5
00000bb7: MSTORE
00000bb8: SWAP1
00000bb9: SWAP2
00000bba: MSTORE
00000bbb: DUP2
00000bbc: KECCAK256
00000bbd: SLOAD
00000bbe: SWAP1
00000bbf: SWAP2
00000bc0: SWAP1
00000bc1: DUP4
00000bc2: DUP2
00000bc3: LT
00000bc4: ISZERO
00000bc5: PUSH2 0x0c1e
00000bc8: JUMPI
00000bc9: PUSH1 0x40
00000bcb: MLOAD
00000bcc: PUSH3 0x461bcd
00000bd0: PUSH1 0xe5
00000bd2: SHL
00000bd3: DUP2
00000bd4: MSTORE
00000bd5: PUSH1 0x20
00000bd7: PUSH1 0x04
00000bd9: DUP3
00000bda: ADD
00000bdb: MSTORE
00000bdc: PUSH1 0x25
00000bde: PUSH1 0x24
00000be0: DUP3
00000be1: ADD
00000be2: MSTORE
00000be3: PUSH32 0x45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77
00000c04: PUSH1 0x44
00000c06: DUP3
00000c07: ADD
00000c08: MSTORE
00000c09: PUSH5 0x207a65726f
00000c0f: PUSH1 0xd8
00000c11: SHL
00000c12: PUSH1 0x64
00000c14: DUP3
00000c15: ADD
00000c16: MSTORE
00000c17: PUSH1 0x84
00000c19: ADD
00000c1a: PUSH2 0x0752
00000c1d: JUMP
00000c1e: JUMPDEST
00000c1f: PUSH2 0x0852
00000c22: DUP3
00000c23: DUP7
00000c24: DUP7
00000c25: DUP5
00000c26: SUB
00000c27: PUSH2 0x0ddf
00000c2a: JUMP
00000c2b: JUMPDEST
00000c2c: PUSH1 0x01
00000c2e: PUSH1 0x01
00000c30: PUSH1 0xa0
00000c32: SHL
00000c33: SUB
00000c34: DUP2
00000c35: AND
00000c36: PUSH1 0x00
00000c38: SWAP1
00000c39: DUP2
00000c3a: MSTORE
00000c3b: PUSH1 0x07
00000c3d: PUSH1 0x20
00000c3f: MSTORE
00000c40: PUSH1 0x40
00000c42: DUP2
00000c43: KECCAK256
00000c44: SLOAD
00000c45: PUSH2 0x0712
00000c48: SWAP1
00000c49: PUSH2 0x0c51
00000c4c: DUP5
00000c4d: PUSH2 0x085d
00000c50: JUMP
00000c51: JUMPDEST
00000c52: SWAP1
00000c53: PUSH2 0x1206
00000c56: JUMP
00000c57: JUMPDEST
00000c58: PUSH1 0x00
00000c5a: CALLER
00000c5b: PUSH2 0x070c
00000c5e: DUP2
00000c5f: DUP6
00000c60: DUP6
00000c61: PUSH2 0x0f2e
00000c64: JUMP
00000c65: JUMPDEST
00000c66: PUSH1 0x09
00000c68: SLOAD
00000c69: PUSH1 0x01
00000c6b: PUSH1 0x01
00000c6d: PUSH1 0xa0
00000c6f: SHL
00000c70: SUB
00000c71: AND
00000c72: CALLER
00000c73: EQ
00000c74: PUSH2 0x0c8f
00000c77: JUMPI
00000c78: PUSH1 0x40
00000c7a: MLOAD
00000c7b: PUSH3 0x461bcd
00000c7f: PUSH1 0xe5
00000c81: SHL
00000c82: DUP2
00000c83: MSTORE
00000c84: PUSH1 0x04
00000c86: ADD
00000c87: PUSH2 0x0752
00000c8a: SWAP1
00000c8b: PUSH2 0x1695
00000c8e: JUMP
00000c8f: JUMPDEST
00000c90: PUSH1 0x01
00000c92: PUSH1 0x01
00000c94: PUSH1 0xa0
00000c96: SHL
00000c97: SUB
00000c98: DUP3
00000c99: AND
00000c9a: PUSH1 0x00
00000c9c: SWAP1
00000c9d: DUP2
00000c9e: MSTORE
00000c9f: PUSH1 0x0d
00000ca1: PUSH1 0x20
00000ca3: MSTORE
00000ca4: PUSH1 0x40
00000ca6: SWAP1
00000ca7: KECCAK256
00000ca8: SLOAD
00000ca9: PUSH1 0xff
00000cab: AND
00000cac: PUSH2 0x0d35
00000caf: JUMPI
00000cb0: PUSH32 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
00000cd1: DUP2
00000cd2: LT
00000cd3: PUSH2 0x0d39
00000cd6: JUMPI
00000cd7: PUSH2 0x0ce0
00000cda: DUP3
00000cdb: DUP3
00000cdc: PUSH2 0x0e43
00000cdf: JUMP
00000ce0: JUMPDEST
00000ce1: PUSH1 0x01
00000ce3: PUSH1 0x01
00000ce5: PUSH1 0xa0
00000ce7: SHL
00000ce8: SUB
00000ce9: DUP3
00000cea: AND
00000ceb: PUSH1 0x00
00000ced: SWAP1
00000cee: DUP2
00000cef: MSTORE
00000cf0: PUSH1 0x0c
00000cf2: PUSH1 0x20
00000cf4: MSTORE
00000cf5: PUSH1 0x40
00000cf7: DUP2
00000cf8: KECCAK256
00000cf9: SLOAD
00000cfa: PUSH1 0xff
00000cfc: AND
00000cfd: ISZERO
00000cfe: ISZERO
00000cff: SWAP1
00000d00: SUB
00000d01: PUSH2 0x0d35
00000d04: JUMPI
00000d05: PUSH1 0x01
00000d07: PUSH1 0x01
00000d09: PUSH1 0xa0
00000d0b: SHL
00000d0c: SUB
00000d0d: DUP3
00000d0e: AND
00000d0f: PUSH1 0x00
00000d11: SWAP1
00000d12: DUP2
00000d13: MSTORE
00000d14: PUSH1 0x0c
00000d16: PUSH1 0x20
00000d18: MSTORE
00000d19: PUSH1 0x40
00000d1b: SWAP1
00000d1c: KECCAK256
00000d1d: DUP1
00000d1e: SLOAD
00000d1f: PUSH1 0xff
00000d21: NOT
00000d22: AND
00000d23: PUSH1 0x01
00000d25: OR
00000d26: SWAP1
00000d27: SSTORE
00000d28: PUSH2 0x0d35
00000d2b: PUSH1 0x0b
00000d2d: DUP1
00000d2e: SLOAD
00000d2f: PUSH1 0x01
00000d31: ADD
00000d32: SWAP1
00000d33: SSTORE
00000d34: JUMP
00000d35: JUMPDEST
00000d36: POP
00000d37: POP
00000d38: JUMP
00000d39: JUMPDEST
00000d3a: PUSH2 0x0d44
00000d3d: DUP3
00000d3e: PUSH1 0x00
00000d40: PUSH2 0x0e43
00000d43: JUMP
00000d44: JUMPDEST
00000d45: PUSH1 0x01
00000d47: PUSH1 0x01
00000d49: PUSH1 0xa0
00000d4b: SHL
00000d4c: SUB
00000d4d: DUP3
00000d4e: AND
00000d4f: PUSH1 0x00
00000d51: SWAP1
00000d52: DUP2
00000d53: MSTORE
00000d54: PUSH1 0x0c
00000d56: PUSH1 0x20
00000d58: MSTORE
00000d59: PUSH1 0x40
00000d5b: SWAP1
00000d5c: KECCAK256
00000d5d: SLOAD
00000d5e: PUSH1 0xff
00000d60: AND
00000d61: ISZERO
00000d62: ISZERO
00000d63: PUSH1 0x01
00000d65: SUB
00000d66: PUSH2 0x0d35
00000d69: JUMPI
00000d6a: PUSH1 0x01
00000d6c: PUSH1 0x01
00000d6e: PUSH1 0xa0
00000d70: SHL
00000d71: SUB
00000d72: DUP3
00000d73: AND
00000d74: PUSH1 0x00
00000d76: SWAP1
00000d77: DUP2
00000d78: MSTORE
00000d79: PUSH1 0x0c
00000d7b: PUSH1 0x20
00000d7d: MSTORE
00000d7e: PUSH1 0x40
00000d80: SWAP1
00000d81: KECCAK256
00000d82: DUP1
00000d83: SLOAD
00000d84: PUSH1 0xff
00000d86: NOT
00000d87: AND
00000d88: SWAP1
00000d89: SSTORE
00000d8a: PUSH2 0x0d35
00000d8d: PUSH1 0x0b
00000d8f: PUSH2 0x1059
00000d92: JUMP
00000d93: JUMPDEST
00000d94: PUSH1 0x00
00000d96: DUP1
00000d97: PUSH2 0x0d9f
00000d9a: DUP4
00000d9b: PUSH2 0x0c2b
00000d9e: JUMP
00000d9f: JUMPDEST
00000da0: PUSH1 0x01
00000da2: PUSH1 0x01
00000da4: PUSH1 0xa0
00000da6: SHL
00000da7: SUB
00000da8: SWAP1
00000da9: SWAP4
00000daa: AND
00000dab: PUSH1 0x00
00000dad: SWAP1
00000dae: DUP2
00000daf: MSTORE
00000db0: PUSH1 0x07
00000db2: PUSH1 0x20
00000db4: MSTORE
00000db5: PUSH1 0x40
00000db7: SWAP1
00000db8: KECCAK256
00000db9: SLOAD
00000dba: SWAP3
00000dbb: SWAP4
00000dbc: SWAP2
00000dbd: POP
00000dbe: POP
00000dbf: JUMP
00000dc0: JUMPDEST
00000dc1: PUSH1 0x00
00000dc3: PUSH2 0x0dcc
00000dc6: DUP3
00000dc7: DUP5
00000dc8: PUSH2 0x16e2
00000dcb: JUMP
00000dcc: JUMPDEST
00000dcd: SWAP4
00000dce: SWAP3
00000dcf: POP
00000dd0: POP
00000dd1: POP
00000dd2: JUMP
00000dd3: JUMPDEST
00000dd4: PUSH1 0x00
00000dd6: PUSH2 0x0dcc
00000dd9: DUP3
00000dda: DUP5
00000ddb: PUSH2 0x16ca
00000dde: JUMP
00000ddf: JUMPDEST
00000de0: PUSH1 0x40
00000de2: MLOAD
00000de3: PUSH3 0x461bcd
00000de7: PUSH1 0xe5
00000de9: SHL
00000dea: DUP2
00000deb: MSTORE
00000dec: PUSH1 0x20
00000dee: PUSH1 0x04
00000df0: DUP3
00000df1: ADD
00000df2: MSTORE
00000df3: PUSH1 0x2e
00000df5: PUSH1 0x24
00000df7: DUP3
00000df8: ADD
00000df9: MSTORE
00000dfa: PUSH32 0x4469616d6f6e645f4469766964656e645f547261636b65723a204e6f20617070
00000e1b: PUSH1 0x44
00000e1d: DUP3
00000e1e: ADD
00000e1f: MSTORE
00000e20: PUSH14 0x1c9bdd985b1cc8185b1b1bddd959
00000e2f: PUSH1 0x92
00000e31: SHL
00000e32: PUSH1 0x64
00000e34: DUP3
00000e35: ADD
00000e36: MSTORE
00000e37: PUSH1 0x84
00000e39: ADD
00000e3a: PUSH2 0x0752
00000e3d: JUMP
00000e3e: JUMPDEST
00000e3f: POP
00000e40: POP
00000e41: POP
00000e42: JUMP
00000e43: JUMPDEST
00000e44: PUSH1 0x01
00000e46: PUSH1 0x01
00000e48: PUSH1 0xa0
00000e4a: SHL
00000e4b: SUB
00000e4c: DUP3
00000e4d: AND
00000e4e: PUSH1 0x00
00000e50: SWAP1
00000e51: DUP2
00000e52: MSTORE
00000e53: PUSH1 0x20
00000e55: DUP2
00000e56: SWAP1
00000e57: MSTORE
00000e58: PUSH1 0x40
00000e5a: SWAP1
00000e5b: KECCAK256
00000e5c: SLOAD
00000e5d: DUP1
00000e5e: DUP3
00000e5f: GT
00000e60: ISZERO
00000e61: PUSH2 0x0e82
00000e64: JUMPI
00000e65: PUSH1 0x00
00000e67: PUSH2 0x0e70
00000e6a: DUP4
00000e6b: DUP4
00000e6c: PUSH2 0x1206
00000e6f: JUMP
00000e70: JUMPDEST
00000e71: SWAP1
00000e72: POP
00000e73: PUSH2 0x0e7c
00000e76: DUP5
00000e77: DUP3
00000e78: PUSH2 0x1212
00000e7b: JUMP
00000e7c: JUMPDEST
00000e7d: POP
00000e7e: POP
00000e7f: POP
00000e80: POP
00000e81: JUMP
00000e82: JUMPDEST
00000e83: DUP1
00000e84: DUP3
00000e85: LT
00000e86: ISZERO
00000e87: PUSH2 0x0e3e
00000e8a: JUMPI
00000e8b: PUSH1 0x00
00000e8d: PUSH2 0x0e96
00000e90: DUP3
00000e91: DUP5
00000e92: PUSH2 0x1206
00000e95: JUMP
00000e96: JUMPDEST
00000e97: SWAP1
00000e98: POP
00000e99: PUSH2 0x0e7c
00000e9c: DUP5
00000e9d: DUP3
00000e9e: PUSH2 0x1276
00000ea1: JUMP
00000ea2: JUMPDEST
00000ea3: PUSH1 0x01
00000ea5: PUSH1 0x01
00000ea7: PUSH1 0xa0
00000ea9: SHL
00000eaa: SUB
00000eab: DUP4
00000eac: DUP2
00000ead: AND
00000eae: PUSH1 0x00
00000eb0: SWAP1
00000eb1: DUP2
00000eb2: MSTORE
00000eb3: PUSH1 0x01
00000eb5: PUSH1 0x20
00000eb7: SWAP1
00000eb8: DUP2
00000eb9: MSTORE
00000eba: PUSH1 0x40
00000ebc: DUP1
00000ebd: DUP4
00000ebe: KECCAK256
00000ebf: SWAP4
00000ec0: DUP7
00000ec1: AND
00000ec2: DUP4
00000ec3: MSTORE
00000ec4: SWAP3
00000ec5: SWAP1
00000ec6: MSTORE
00000ec7: KECCAK256
00000ec8: SLOAD
00000ec9: PUSH1 0x00
00000ecb: NOT
00000ecc: DUP2
00000ecd: EQ
00000ece: PUSH2 0x0e7c
00000ed1: JUMPI
00000ed2: DUP2
00000ed3: DUP2
00000ed4: LT
00000ed5: ISZERO
00000ed6: PUSH2 0x0f21
00000ed9: JUMPI
00000eda: PUSH1 0x40
00000edc: MLOAD
00000edd: PUSH3 0x461bcd
00000ee1: PUSH1 0xe5
00000ee3: SHL
00000ee4: DUP2
00000ee5: MSTORE
00000ee6: PUSH1 0x20
00000ee8: PUSH1 0x04
00000eea: DUP3
00000eeb: ADD
00000eec: MSTORE
00000eed: PUSH1 0x1d
00000eef: PUSH1 0x24
00000ef1: DUP3
00000ef2: ADD
00000ef3: MSTORE
00000ef4: PUSH32 0x45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000
00000f15: PUSH1 0x44
00000f17: DUP3
00000f18: ADD
00000f19: MSTORE
00000f1a: PUSH1 0x64
00000f1c: ADD
00000f1d: PUSH2 0x0752
00000f20: JUMP
00000f21: JUMPDEST
00000f22: PUSH2 0x0e7c
00000f25: DUP5
00000f26: DUP5
00000f27: DUP5
00000f28: DUP5
00000f29: SUB
00000f2a: PUSH2 0x0ddf
00000f2d: JUMP
00000f2e: JUMPDEST
00000f2f: PUSH1 0x40
00000f31: MLOAD
00000f32: PUSH3 0x461bcd
00000f36: PUSH1 0xe5
00000f38: SHL
00000f39: DUP2
00000f3a: MSTORE
00000f3b: PUSH1 0x20
00000f3d: PUSH1 0x04
00000f3f: DUP3
00000f40: ADD
00000f41: MSTORE
00000f42: PUSH1 0x2e
00000f44: PUSH1 0x24
00000f46: DUP3
00000f47: ADD
00000f48: MSTORE
00000f49: PUSH32 0x4469616d6f6e645f4469766964656e645f547261636b65723a204e6f20747261
00000f6a: PUSH1 0x44
00000f6c: DUP3
00000f6d: ADD
00000f6e: MSTORE
00000f6f: PUSH14 0x1b9cd9995c9cc8185b1b1bddd959
00000f7e: PUSH1 0x92
00000f80: SHL
00000f81: PUSH1 0x64
00000f83: DUP3
00000f84: ADD
00000f85: MSTORE
00000f86: PUSH1 0x84
00000f88: ADD
00000f89: PUSH2 0x0752
00000f8c: JUMP
00000f8d: JUMPDEST
00000f8e: PUSH1 0x00
00000f90: PUSH1 0x01
00000f92: PUSH1 0x01
00000f94: PUSH1 0xff
00000f96: SHL
00000f97: SUB
00000f98: DUP3
00000f99: GT
00000f9a: ISZERO
00000f9b: PUSH2 0x0ff7
00000f9e: JUMPI
00000f9f: PUSH1 0x40
00000fa1: MLOAD
00000fa2: PUSH3 0x461bcd
00000fa6: PUSH1 0xe5
00000fa8: SHL
00000fa9: DUP2
00000faa: MSTORE
00000fab: PUSH1 0x20
00000fad: PUSH1 0x04
00000faf: DUP3
00000fb0: ADD
00000fb1: MSTORE
00000fb2: PUSH1 0x28
00000fb4: PUSH1 0x24
00000fb6: DUP3
00000fb7: ADD
00000fb8: MSTORE
00000fb9: PUSH32 0x53616665436173743a2076616c756520646f65736e27742066697420696e2061
00000fda: PUSH1 0x44
00000fdc: DUP3
00000fdd: ADD
00000fde: MSTORE
00000fdf: PUSH8 0x371034b73a191a9b
00000fe8: PUSH1 0xc1
00000fea: SHL
00000feb: PUSH1 0x64
00000fed: DUP3
00000fee: ADD
00000fef: MSTORE
00000ff0: PUSH1 0x84
00000ff2: ADD
00000ff3: PUSH2 0x0752
00000ff6: JUMP
00000ff7: JUMPDEST
00000ff8: POP
00000ff9: SWAP1
00000ffa: JUMP
00000ffb: JUMPDEST
00000ffc: PUSH1 0x00
00000ffe: PUSH2 0x0dcc
00001001: DUP3
00001002: DUP5
00001003: PUSH2 0x1701
00001006: JUMP
00001007: JUMPDEST
00001008: PUSH1 0x00
0000100a: DUP1
0000100b: DUP3
0000100c: SLT
0000100d: ISZERO
0000100e: PUSH2 0x0ff7
00001011: JUMPI
00001012: PUSH1 0x40
00001014: MLOAD
00001015: PUSH3 0x461bcd
00001019: PUSH1 0xe5
0000101b: SHL
0000101c: DUP2
0000101d: MSTORE
0000101e: PUSH1 0x20
00001020: PUSH1 0x04
00001022: DUP3
00001023: ADD
00001024: DUP2
00001025: SWAP1
00001026: MSTORE
00001027: PUSH1 0x24
00001029: DUP3
0000102a: ADD
0000102b: MSTORE
0000102c: PUSH32 0x53616665436173743a2076616c7565206d75737420626520706f736974697665
0000104d: PUSH1 0x44
0000104f: DUP3
00001050: ADD
00001051: MSTORE
00001052: PUSH1 0x64
00001054: ADD
00001055: PUSH2 0x0752
00001058: JUMP
00001059: JUMPDEST
0000105a: DUP1
0000105b: SLOAD
0000105c: DUP1
0000105d: PUSH2 0x10a8
00001060: JUMPI
00001061: PUSH1 0x40
00001063: MLOAD
00001064: PUSH3 0x461bcd
00001068: PUSH1 0xe5
0000106a: SHL
0000106b: DUP2
0000106c: MSTORE
0000106d: PUSH1 0x20
0000106f: PUSH1 0x04
00001071: DUP3
00001072: ADD
00001073: MSTORE
00001074: PUSH1 0x1b
00001076: PUSH1 0x24
00001078: DUP3
00001079: ADD
0000107a: MSTORE
0000107b: PUSH32 0x436f756e7465723a2064656372656d656e74206f766572666c6f770000000000
0000109c: PUSH1 0x44
0000109e: DUP3
0000109f: ADD
000010a0: MSTORE
000010a1: PUSH1 0x64
000010a3: ADD
000010a4: PUSH2 0x0752
000010a7: JUMP
000010a8: JUMPDEST
000010a9: PUSH1 0x00
000010ab: NOT
000010ac: ADD
000010ad: SWAP1
000010ae: SSTORE
000010af: JUMP
000010b0: JUMPDEST
000010b1: PUSH1 0x00
000010b3: DUP1
000010b4: PUSH2 0x10bc
000010b7: DUP5
000010b8: PUSH2 0x0c2b
000010bb: JUMP
000010bc: JUMPDEST
000010bd: SWAP1
000010be: POP
000010bf: DUP1
000010c0: ISZERO
000010c1: PUSH2 0x11fc
000010c4: JUMPI
000010c5: PUSH1 0x01
000010c7: PUSH1 0x01
000010c9: PUSH1 0xa0
000010cb: SHL
000010cc: SUB
000010cd: DUP5
000010ce: AND
000010cf: PUSH1 0x00
000010d1: SWAP1
000010d2: DUP2
000010d3: MSTORE
000010d4: PUSH1 0x07
000010d6: PUSH1 0x20
000010d8: MSTORE
000010d9: PUSH1 0x40
000010db: SWAP1
000010dc: KECCAK256
000010dd: SLOAD
000010de: PUSH2 0x10e7
000010e1: SWAP1
000010e2: DUP3
000010e3: PUSH2 0x0dd3
000010e6: JUMP
000010e7: JUMPDEST
000010e8: PUSH1 0x01
000010ea: PUSH1 0x01
000010ec: PUSH1 0xa0
000010ee: SHL
000010ef: SUB
000010f0: DUP6
000010f1: AND
000010f2: PUSH1 0x00
000010f4: DUP2
000010f5: DUP2
000010f6: MSTORE
000010f7: PUSH1 0x07
000010f9: PUSH1 0x20
000010fb: MSTORE
000010fc: PUSH1 0x40
000010fe: SWAP1
000010ff: DUP2
00001100: SWAP1
00001101: KECCAK256
00001102: SWAP3
00001103: SWAP1
00001104: SWAP3
00001105: SSTORE
00001106: SWAP1
00001107: MLOAD
00001108: PUSH32 0xeb063efb53b3790d2bc15284b59af7544466c8787c2883321ee27095647911b6
00001129: SWAP1
0000112a: PUSH2 0x1148
0000112d: SWAP1
0000112e: DUP5
0000112f: SWAP1
00001130: DUP8
00001131: SWAP1
00001132: SWAP2
00001133: DUP3
00001134: MSTORE
00001135: PUSH1 0x01
00001137: PUSH1 0x01
00001139: PUSH1 0xa0
0000113b: SHL
0000113c: SUB
0000113d: AND
0000113e: PUSH1 0x20
00001140: DUP3
00001141: ADD
00001142: MSTORE
00001143: PUSH1 0x40
00001145: ADD
00001146: SWAP1
00001147: JUMP
00001148: JUMPDEST
00001149: PUSH1 0x40
0000114b: MLOAD
0000114c: DUP1
0000114d: SWAP2
0000114e: SUB
0000114f: SWAP1
00001150: LOG2
00001151: PUSH1 0x00
00001153: DUP4
00001154: PUSH1 0x01
00001156: PUSH1 0x01
00001158: PUSH1 0xa0
0000115a: SHL
0000115b: SUB
0000115c: AND
0000115d: DUP3
0000115e: PUSH1 0x40
00001160: MLOAD
00001161: PUSH1 0x00
00001163: PUSH1 0x40
00001165: MLOAD
00001166: DUP1
00001167: DUP4
00001168: SUB
00001169: DUP2
0000116a: DUP6
0000116b: DUP8
0000116c: GAS
0000116d: CALL
0000116e: SWAP3
0000116f: POP
00001170: POP
00001171: POP
00001172: RETURNDATASIZE
00001173: DUP1
00001174: PUSH1 0x00
00001176: DUP2
00001177: EQ
00001178: PUSH2 0x119d
0000117b: JUMPI
0000117c: PUSH1 0x40
0000117e: MLOAD
0000117f: SWAP2
00001180: POP
00001181: PUSH1 0x1f
00001183: NOT
00001184: PUSH1 0x3f
00001186: RETURNDATASIZE
00001187: ADD
00001188: AND
00001189: DUP3
0000118a: ADD
0000118b: PUSH1 0x40
0000118d: MSTORE
0000118e: RETURNDATASIZE
0000118f: DUP3
00001190: MSTORE
00001191: RETURNDATASIZE
00001192: PUSH1 0x00
00001194: PUSH1 0x20
00001196: DUP5
00001197: ADD
00001198: RETURNDATACOPY
00001199: PUSH2 0x11a2
0000119c: JUMP
0000119d: JUMPDEST
0000119e: PUSH1 0x60
000011a0: SWAP2
000011a1: POP
000011a2: JUMPDEST
000011a3: POP
000011a4: POP
000011a5: SWAP1
000011a6: POP
000011a7: DUP1
000011a8: PUSH2 0x11f4
000011ab: JUMPI
000011ac: PUSH1 0x01
000011ae: PUSH1 0x01
000011b0: PUSH1 0xa0
000011b2: SHL
000011b3: SUB
000011b4: DUP6
000011b5: AND
000011b6: PUSH1 0x00
000011b8: SWAP1
000011b9: DUP2
000011ba: MSTORE
000011bb: PUSH1 0x07
000011bd: PUSH1 0x20
000011bf: MSTORE
000011c0: PUSH1 0x40
000011c2: SWAP1
000011c3: KECCAK256
000011c4: SLOAD
000011c5: PUSH2 0x11ce
000011c8: SWAP1
000011c9: DUP4
000011ca: PUSH2 0x1206
000011cd: JUMP
000011ce: JUMPDEST
000011cf: PUSH1 0x01
000011d1: PUSH1 0x01
000011d3: PUSH1 0xa0
000011d5: SHL
000011d6: SUB
000011d7: DUP7
000011d8: AND
000011d9: PUSH1 0x00
000011db: SWAP1
000011dc: DUP2
000011dd: MSTORE
000011de: PUSH1 0x07
000011e0: PUSH1 0x20
000011e2: MSTORE
000011e3: PUSH1 0x40
000011e5: DUP2
000011e6: KECCAK256
000011e7: SWAP2
000011e8: SWAP1
000011e9: SWAP2
000011ea: SSTORE
000011eb: SWAP3
000011ec: POP
000011ed: PUSH2 0x0712
000011f0: SWAP2
000011f1: POP
000011f2: POP
000011f3: JUMP
000011f4: JUMPDEST
000011f5: POP
000011f6: SWAP1
000011f7: POP
000011f8: PUSH2 0x0712
000011fb: JUMP
000011fc: JUMPDEST
000011fd: POP
000011fe: PUSH1 0x00
00001200: SWAP4
00001201: SWAP3
00001202: POP
00001203: POP
00001204: POP
00001205: JUMP
00001206: JUMPDEST
00001207: PUSH1 0x00
00001209: PUSH2 0x0dcc
0000120c: DUP3
0000120d: DUP5
0000120e: PUSH2 0x1742
00001211: JUMP
00001212: JUMPDEST
00001213: PUSH2 0x121c
00001216: DUP3
00001217: DUP3
00001218: PUSH2 0x12ba
0000121b: JUMP
0000121c: JUMPDEST
0000121d: PUSH2 0x1256
00001220: PUSH2 0x1237
00001223: PUSH2 0x089f
00001226: DUP4
00001227: PUSH1 0x05
00001229: SLOAD
0000122a: PUSH2 0x0dc0
0000122d: SWAP1
0000122e: SWAP2
0000122f: SWAP1
00001230: PUSH4 0xffffffff
00001235: AND
00001236: JUMP
00001237: JUMPDEST
00001238: PUSH1 0x01
0000123a: PUSH1 0x01
0000123c: PUSH1 0xa0
0000123e: SHL
0000123f: SUB
00001240: DUP5
00001241: AND
00001242: PUSH1 0x00
00001244: SWAP1
00001245: DUP2
00001246: MSTORE
00001247: PUSH1 0x06
00001249: PUSH1 0x20
0000124b: MSTORE
0000124c: PUSH1 0x40
0000124e: SWAP1
0000124f: KECCAK256
00001250: SLOAD
00001251: SWAP1
00001252: PUSH2 0x1399
00001255: JUMP
00001256: JUMPDEST
00001257: PUSH1 0x01
00001259: PUSH1 0x01
0000125b: PUSH1 0xa0
0000125d: SHL
0000125e: SUB
0000125f: SWAP1
00001260: SWAP3
00001261: AND
00001262: PUSH1 0x00
00001264: SWAP1
00001265: DUP2
00001266: MSTORE
00001267: PUSH1 0x06
00001269: PUSH1 0x20
0000126b: MSTORE
0000126c: PUSH1 0x40
0000126e: SWAP1
0000126f: KECCAK256
00001270: SWAP2
00001271: SWAP1
00001272: SWAP2
00001273: SSTORE
00001274: POP
00001275: JUMP
00001276: JUMPDEST
00001277: PUSH2 0x1280
0000127a: DUP3
0000127b: DUP3
0000127c: PUSH2 0x13a5
0000127f: JUMP
00001280: JUMPDEST
00001281: PUSH2 0x1256
00001284: PUSH2 0x129b
00001287: PUSH2 0x089f
0000128a: DUP4
0000128b: PUSH1 0x05
0000128d: SLOAD
0000128e: PUSH2 0x0dc0
00001291: SWAP1
00001292: SWAP2
00001293: SWAP1
00001294: PUSH4 0xffffffff
00001299: AND
0000129a: JUMP
0000129b: JUMPDEST
0000129c: PUSH1 0x01
0000129e: PUSH1 0x01
000012a0: PUSH1 0xa0
000012a2: SHL
000012a3: SUB
000012a4: DUP5
000012a5: AND
000012a6: PUSH1 0x00
000012a8: SWAP1
000012a9: DUP2
000012aa: MSTORE
000012ab: PUSH1 0x06
000012ad: PUSH1 0x20
000012af: MSTORE
000012b0: PUSH1 0x40
000012b2: SWAP1
000012b3: KECCAK256
000012b4: SLOAD
000012b5: SWAP1
000012b6: PUSH2 0x0ffb
000012b9: JUMP
000012ba: JUMPDEST
000012bb: PUSH1 0x01
000012bd: PUSH1 0x01
000012bf: PUSH1 0xa0
000012c1: SHL
000012c2: SUB
000012c3: DUP3
000012c4: AND
000012c5: PUSH2 0x1310
000012c8: JUMPI
000012c9: PUSH1 0x40
000012cb: MLOAD
000012cc: PUSH3 0x461bcd
000012d0: PUSH1 0xe5
000012d2: SHL
000012d3: DUP2
000012d4: MSTORE
000012d5: PUSH1 0x20
000012d7: PUSH1 0x04
000012d9: DUP3
000012da: ADD
000012db: MSTORE
000012dc: PUSH1 0x1f
000012de: PUSH1 0x24
000012e0: DUP3
000012e1: ADD
000012e2: MSTORE
000012e3: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300
00001304: PUSH1 0x44
00001306: DUP3
00001307: ADD
00001308: MSTORE
00001309: PUSH1 0x64
0000130b: ADD
0000130c: PUSH2 0x0752
0000130f: JUMP
00001310: JUMPDEST
00001311: DUP1
00001312: PUSH1 0x02
00001314: PUSH1 0x00
00001316: DUP3
00001317: DUP3
00001318: SLOAD
00001319: PUSH2 0x1322
0000131c: SWAP2
0000131d: SWAP1
0000131e: PUSH2 0x16ca
00001321: JUMP
00001322: JUMPDEST
00001323: SWAP1
00001324: SWAP2
00001325: SSTORE
00001326: POP
00001327: POP
00001328: PUSH1 0x01
0000132a: PUSH1 0x01
0000132c: PUSH1 0xa0
0000132e: SHL
0000132f: SUB
00001330: DUP3
00001331: AND
00001332: PUSH1 0x00
00001334: SWAP1
00001335: DUP2
00001336: MSTORE
00001337: PUSH1 0x20
00001339: DUP2
0000133a: SWAP1
0000133b: MSTORE
0000133c: PUSH1 0x40
0000133e: DUP2
0000133f: KECCAK256
00001340: DUP1
00001341: SLOAD
00001342: DUP4
00001343: SWAP3
00001344: SWAP1
00001345: PUSH2 0x134f
00001348: SWAP1
00001349: DUP5
0000134a: SWAP1
0000134b: PUSH2 0x16ca
0000134e: JUMP
0000134f: JUMPDEST
00001350: SWAP1
00001351: SWAP2
00001352: SSTORE
00001353: POP
00001354: POP
00001355: PUSH1 0x40
00001357: MLOAD
00001358: DUP2
00001359: DUP2
0000135a: MSTORE
0000135b: PUSH1 0x01
0000135d: PUSH1 0x01
0000135f: PUSH1 0xa0
00001361: SHL
00001362: SUB
00001363: DUP4
00001364: AND
00001365: SWAP1
00001366: PUSH1 0x00
00001368: SWAP1
00001369: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000138a: SWAP1
0000138b: PUSH1 0x20
0000138d: ADD
0000138e: PUSH1 0x40
00001390: MLOAD
00001391: DUP1
00001392: SWAP2
00001393: SUB
00001394: SWAP1
00001395: LOG3
00001396: POP
00001397: POP
00001398: JUMP
00001399: JUMPDEST
0000139a: PUSH1 0x00
0000139c: PUSH2 0x0dcc
0000139f: DUP3
000013a0: DUP5
000013a1: PUSH2 0x1759
000013a4: JUMP
000013a5: JUMPDEST
000013a6: PUSH1 0x01
000013a8: PUSH1 0x01
000013aa: PUSH1 0xa0
000013ac: SHL
000013ad: SUB
000013ae: DUP3
000013af: AND
000013b0: PUSH2 0x1405
000013b3: JUMPI
000013b4: PUSH1 0x40
000013b6: MLOAD
000013b7: PUSH3 0x461bcd
000013bb: PUSH1 0xe5
000013bd: SHL
000013be: DUP2
000013bf: MSTORE
000013c0: PUSH1 0x20
000013c2: PUSH1 0x04
000013c4: DUP3
000013c5: ADD
000013c6: MSTORE
000013c7: PUSH1 0x21
000013c9: PUSH1 0x24
000013cb: DUP3
000013cc: ADD
000013cd: MSTORE
000013ce: PUSH32 0x45524332303a206275726e2066726f6d20746865207a65726f20616464726573
000013ef: PUSH1 0x44
000013f1: DUP3
000013f2: ADD
000013f3: MSTORE
000013f4: PUSH1 0x73
000013f6: PUSH1 0xf8
000013f8: SHL
000013f9: PUSH1 0x64
000013fb: DUP3
000013fc: ADD
000013fd: MSTORE
000013fe: PUSH1 0x84
00001400: ADD
00001401: PUSH2 0x0752
00001404: JUMP
00001405: JUMPDEST
00001406: PUSH1 0x01
00001408: PUSH1 0x01
0000140a: PUSH1 0xa0
0000140c: SHL
0000140d: SUB
0000140e: DUP3
0000140f: AND
00001410: PUSH1 0x00
00001412: SWAP1
00001413: DUP2
00001414: MSTORE
00001415: PUSH1 0x20
00001417: DUP2
00001418: SWAP1
00001419: MSTORE
0000141a: PUSH1 0x40
0000141c: SWAP1
0000141d: KECCAK256
0000141e: SLOAD
0000141f: DUP2
00001420: DUP2
00001421: LT
00001422: ISZERO
00001423: PUSH2 0x1479
00001426: JUMPI
00001427: PUSH1 0x40
00001429: MLOAD
0000142a: PUSH3 0x461bcd
0000142e: PUSH1 0xe5
00001430: SHL
00001431: DUP2
00001432: MSTORE
00001433: PUSH1 0x20
00001435: PUSH1 0x04
00001437: DUP3
00001438: ADD
00001439: MSTORE
0000143a: PUSH1 0x22
0000143c: PUSH1 0x24
0000143e: DUP3
0000143f: ADD
00001440: MSTORE
00001441: PUSH32 0x45524332303a206275726e20616d6f756e7420657863656564732062616c616e
00001462: PUSH1 0x44
00001464: DUP3
00001465: ADD
00001466: MSTORE
00001467: PUSH2 0x6365
0000146a: PUSH1 0xf0
0000146c: SHL
0000146d: PUSH1 0x64
0000146f: DUP3
00001470: ADD
00001471: MSTORE
00001472: PUSH1 0x84
00001474: ADD
00001475: PUSH2 0x0752
00001478: JUMP
00001479: JUMPDEST
0000147a: PUSH1 0x01
0000147c: PUSH1 0x01
0000147e: PUSH1 0xa0
00001480: SHL
00001481: SUB
00001482: DUP4
00001483: AND
00001484: PUSH1 0x00
00001486: SWAP1
00001487: DUP2
00001488: MSTORE
00001489: PUSH1 0x20
0000148b: DUP2
0000148c: SWAP1
0000148d: MSTORE
0000148e: PUSH1 0x40
00001490: DUP2
00001491: KECCAK256
00001492: DUP4
00001493: DUP4
00001494: SUB
00001495: SWAP1
00001496: SSTORE
00001497: PUSH1 0x02
00001499: DUP1
0000149a: SLOAD
0000149b: DUP5
0000149c: SWAP3
0000149d: SWAP1
0000149e: PUSH2 0x14a8
000014a1: SWAP1
000014a2: DUP5
000014a3: SWAP1
000014a4: PUSH2 0x1742
000014a7: JUMP
000014a8: JUMPDEST
000014a9: SWAP1
000014aa: SWAP2
000014ab: SSTORE
000014ac: POP
000014ad: POP
000014ae: PUSH1 0x40
000014b0: MLOAD
000014b1: DUP3
000014b2: DUP2
000014b3: MSTORE
000014b4: PUSH1 0x00
000014b6: SWAP1
000014b7: PUSH1 0x01
000014b9: PUSH1 0x01
000014bb: PUSH1 0xa0
000014bd: SHL
000014be: SUB
000014bf: DUP6
000014c0: AND
000014c1: SWAP1
000014c2: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000014e3: SWAP1
000014e4: PUSH1 0x20
000014e6: ADD
000014e7: PUSH1 0x40
000014e9: MLOAD
000014ea: DUP1
000014eb: SWAP2
000014ec: SUB
000014ed: SWAP1
000014ee: LOG3
000014ef: POP
000014f0: POP
000014f1: POP
000014f2: JUMP
000014f3: JUMPDEST
000014f4: PUSH1 0x00
000014f6: PUSH1 0x20
000014f8: DUP1
000014f9: DUP4
000014fa: MSTORE
000014fb: DUP4
000014fc: MLOAD
000014fd: DUP1
000014fe: DUP3
000014ff: DUP6
00001500: ADD
00001501: MSTORE
00001502: PUSH1 0x00
00001504: JUMPDEST
00001505: DUP2
00001506: DUP2
00001507: LT
00001508: ISZERO
00001509: PUSH2 0x1520
0000150c: JUMPI
0000150d: DUP6
0000150e: DUP2
0000150f: ADD
00001510: DUP4
00001511: ADD
00001512: MLOAD
00001513: DUP6
00001514: DUP3
00001515: ADD
00001516: PUSH1 0x40
00001518: ADD
00001519: MSTORE
0000151a: DUP3
0000151b: ADD
0000151c: PUSH2 0x1504
0000151f: JUMP
00001520: JUMPDEST
00001521: DUP2
00001522: DUP2
00001523: GT
00001524: ISZERO
00001525: PUSH2 0x1532
00001528: JUMPI
00001529: PUSH1 0x00
0000152b: PUSH1 0x40
0000152d: DUP4
0000152e: DUP8
0000152f: ADD
00001530: ADD
00001531: MSTORE
00001532: JUMPDEST
00001533: POP
00001534: PUSH1 0x1f
00001536: ADD
00001537: PUSH1 0x1f
00001539: NOT
0000153a: AND
0000153b: SWAP3
0000153c: SWAP1
0000153d: SWAP3
0000153e: ADD
0000153f: PUSH1 0x40
00001541: ADD
00001542: SWAP4
00001543: SWAP3
00001544: POP
00001545: POP
00001546: POP
00001547: JUMP
00001548: JUMPDEST
00001549: PUSH1 0x01
0000154b: PUSH1 0x01
0000154d: PUSH1 0xa0
0000154f: SHL
00001550: SUB
00001551: DUP2
00001552: AND
00001553: DUP2
00001554: EQ
00001555: PUSH2 0x155d
00001558: JUMPI
00001559: PUSH1 0x00
0000155b: DUP1
0000155c: REVERT
0000155d: JUMPDEST
0000155e: POP
0000155f: JUMP
00001560: JUMPDEST
00001561: PUSH1 0x00
00001563: DUP1
00001564: PUSH1 0x40
00001566: DUP4
00001567: DUP6
00001568: SUB
00001569: SLT
0000156a: ISZERO
0000156b: PUSH2 0x1573
0000156e: JUMPI
0000156f: PUSH1 0x00
00001571: DUP1
00001572: REVERT
00001573: JUMPDEST
00001574: DUP3
00001575: CALLDATALOAD
00001576: PUSH2 0x157e
00001579: DUP2
0000157a: PUSH2 0x1548
0000157d: JUMP
0000157e: JUMPDEST
0000157f: SWAP5
00001580: PUSH1 0x20
00001582: SWAP4
00001583: SWAP1
00001584: SWAP4
00001585: ADD
00001586: CALLDATALOAD
00001587: SWAP4
00001588: POP
00001589: POP
0000158a: POP
0000158b: JUMP
0000158c: JUMPDEST
0000158d: PUSH1 0x00
0000158f: DUP1
00001590: PUSH1 0x00
00001592: PUSH1 0x60
00001594: DUP5
00001595: DUP7
00001596: SUB
00001597: SLT
00001598: ISZERO
00001599: PUSH2 0x15a1
0000159c: JUMPI
0000159d: PUSH1 0x00
0000159f: DUP1
000015a0: REVERT
000015a1: JUMPDEST
000015a2: DUP4
000015a3: CALLDATALOAD
000015a4: PUSH2 0x15ac
000015a7: DUP2
000015a8: PUSH2 0x1548
000015ab: JUMP
000015ac: JUMPDEST
000015ad: SWAP3
000015ae: POP
000015af: PUSH1 0x20
000015b1: DUP5
000015b2: ADD
000015b3: CALLDATALOAD
000015b4: PUSH2 0x15bc
000015b7: DUP2
000015b8: PUSH2 0x1548
000015bb: JUMP
000015bc: JUMPDEST
000015bd: SWAP3
000015be: SWAP6
000015bf: SWAP3
000015c0: SWAP5
000015c1: POP
000015c2: POP
000015c3: POP
000015c4: PUSH1 0x40
000015c6: SWAP2
000015c7: SWAP1
000015c8: SWAP2
000015c9: ADD
000015ca: CALLDATALOAD
000015cb: SWAP1
000015cc: JUMP
000015cd: JUMPDEST
000015ce: PUSH1 0x00
000015d0: PUSH1 0x20
000015d2: DUP3
000015d3: DUP5
000015d4: SUB
000015d5: SLT
000015d6: ISZERO
000015d7: PUSH2 0x15df
000015da: JUMPI
000015db: PUSH1 0x00
000015dd: DUP1
000015de: REVERT
000015df: JUMPDEST
000015e0: DUP2
000015e1: CALLDATALOAD
000015e2: PUSH2 0x0dcc
000015e5: DUP2
000015e6: PUSH2 0x1548
000015e9: JUMP
000015ea: JUMPDEST
000015eb: PUSH1 0x00
000015ed: DUP1
000015ee: PUSH1 0x40
000015f0: DUP4
000015f1: DUP6
000015f2: SUB
000015f3: SLT
000015f4: ISZERO
000015f5: PUSH2 0x15fd
000015f8: JUMPI
000015f9: PUSH1 0x00
000015fb: DUP1
000015fc: REVERT
000015fd: JUMPDEST
000015fe: DUP3
000015ff: CALLDATALOAD
00001600: PUSH2 0x1608
00001603: DUP2
00001604: PUSH2 0x1548
00001607: JUMP
00001608: JUMPDEST
00001609: SWAP2
0000160a: POP
0000160b: PUSH1 0x20
0000160d: DUP4
0000160e: ADD
0000160f: CALLDATALOAD
00001610: PUSH2 0x1618
00001613: DUP2
00001614: PUSH2 0x1548
00001617: JUMP
00001618: JUMPDEST
00001619: DUP1
0000161a: SWAP2
0000161b: POP
0000161c: POP
0000161d: SWAP3
0000161e: POP
0000161f: SWAP3
00001620: SWAP1
00001621: POP
00001622: JUMP
00001623: JUMPDEST
00001624: PUSH4 0x4e487b71
00001629: PUSH1 0xe0
0000162b: SHL
0000162c: PUSH1 0x00
0000162e: MSTORE
0000162f: PUSH1 0x11
00001631: PUSH1 0x04
00001633: MSTORE
00001634: PUSH1 0x24
00001636: PUSH1 0x00
00001638: REVERT
00001639: JUMPDEST
0000163a: PUSH1 0x00
0000163c: DUP3
0000163d: PUSH2 0x1656
00001640: JUMPI
00001641: PUSH4 0x4e487b71
00001646: PUSH1 0xe0
00001648: SHL
00001649: PUSH1 0x00
0000164b: MSTORE
0000164c: PUSH1 0x12
0000164e: PUSH1 0x04
00001650: MSTORE
00001651: PUSH1 0x24
00001653: PUSH1 0x00
00001655: REVERT
00001656: JUMPDEST
00001657: POP
00001658: DIV
00001659: SWAP1
0000165a: JUMP
0000165b: JUMPDEST
0000165c: PUSH1 0x01
0000165e: DUP2
0000165f: DUP2
00001660: SHR
00001661: SWAP1
00001662: DUP3
00001663: AND
00001664: DUP1
00001665: PUSH2 0x166f
00001668: JUMPI
00001669: PUSH1 0x7f
0000166b: DUP3
0000166c: AND
0000166d: SWAP2
0000166e: POP
0000166f: JUMPDEST
00001670: PUSH1 0x20
00001672: DUP3
00001673: LT
00001674: DUP2
00001675: SUB
00001676: PUSH2 0x168f
00001679: JUMPI
0000167a: PUSH4 0x4e487b71
0000167f: PUSH1 0xe0
00001681: SHL
00001682: PUSH1 0x00
00001684: MSTORE
00001685: PUSH1 0x22
00001687: PUSH1 0x04
00001689: MSTORE
0000168a: PUSH1 0x24
0000168c: PUSH1 0x00
0000168e: REVERT
0000168f: JUMPDEST
00001690: POP
00001691: SWAP2
00001692: SWAP1
00001693: POP
00001694: JUMP
00001695: JUMPDEST
00001696: PUSH1 0x20
00001698: DUP1
00001699: DUP3
0000169a: MSTORE
0000169b: DUP2
0000169c: DUP2
0000169d: ADD
0000169e: MSTORE
0000169f: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
000016c0: PUSH1 0x40
000016c2: DUP3
000016c3: ADD
000016c4: MSTORE
000016c5: PUSH1 0x60
000016c7: ADD
000016c8: SWAP1
000016c9: JUMP
000016ca: JUMPDEST
000016cb: PUSH1 0x00
000016cd: DUP3
000016ce: NOT
000016cf: DUP3
000016d0: GT
000016d1: ISZERO
000016d2: PUSH2 0x16dd
000016d5: JUMPI
000016d6: PUSH2 0x16dd
000016d9: PUSH2 0x1623
000016dc: JUMP
000016dd: JUMPDEST
000016de: POP
000016df: ADD
000016e0: SWAP1
000016e1: JUMP
000016e2: JUMPDEST
000016e3: PUSH1 0x00
000016e5: DUP2
000016e6: PUSH1 0x00
000016e8: NOT
000016e9: DIV
000016ea: DUP4
000016eb: GT
000016ec: DUP3
000016ed: ISZERO
000016ee: ISZERO
000016ef: AND
000016f0: ISZERO
000016f1: PUSH2 0x16fc
000016f4: JUMPI
000016f5: PUSH2 0x16fc
000016f8: PUSH2 0x1623
000016fb: JUMP
000016fc: JUMPDEST
000016fd: POP
000016fe: MUL
000016ff: SWAP1
00001700: JUMP
00001701: JUMPDEST
00001702: PUSH1 0x00
00001704: DUP1
00001705: DUP3
00001706: SLT
00001707: DUP1
00001708: ISZERO
00001709: PUSH1 0x01
0000170b: PUSH1 0x01
0000170d: PUSH1 0xff
0000170f: SHL
00001710: SUB
00001711: DUP5
00001712: SWAP1
00001713: SUB
00001714: DUP6
00001715: SGT
00001716: AND
00001717: ISZERO
00001718: PUSH2 0x1723
0000171b: JUMPI
0000171c: PUSH2 0x1723
0000171f: PUSH2 0x1623
00001722: JUMP
00001723: JUMPDEST
00001724: PUSH1 0x01
00001726: PUSH1 0xff
00001728: SHL
00001729: DUP4
0000172a: SWAP1
0000172b: SUB
0000172c: DUP5
0000172d: SLT
0000172e: DUP2
0000172f: AND
00001730: ISZERO
00001731: PUSH2 0x173c
00001734: JUMPI
00001735: PUSH2 0x173c
00001738: PUSH2 0x1623
0000173b: JUMP
0000173c: JUMPDEST
0000173d: POP
0000173e: POP
0000173f: ADD
00001740: SWAP1
00001741: JUMP
00001742: JUMPDEST
00001743: PUSH1 0x00
00001745: DUP3
00001746: DUP3
00001747: LT
00001748: ISZERO
00001749: PUSH2 0x1754
0000174c: JUMPI
0000174d: PUSH2 0x1754
00001750: PUSH2 0x1623
00001753: JUMP
00001754: JUMPDEST
00001755: POP
00001756: SUB
00001757: SWAP1
00001758: JUMP
00001759: JUMPDEST
0000175a: PUSH1 0x00
0000175c: DUP1
0000175d: DUP4
0000175e: SLT
0000175f: DUP1
00001760: ISZERO
00001761: PUSH1 0x01
00001763: PUSH1 0xff
00001765: SHL
00001766: DUP6
00001767: ADD
00001768: DUP5
00001769: SLT
0000176a: AND
0000176b: ISZERO
0000176c: PUSH2 0x1777
0000176f: JUMPI
00001770: PUSH2 0x1777
00001773: PUSH2 0x1623
00001776: JUMP
00001777: JUMPDEST
00001778: PUSH1 0x01
0000177a: PUSH1 0x01
0000177c: PUSH1 0xff
0000177e: SHL
0000177f: SUB
00001780: DUP5
00001781: ADD
00001782: DUP4
00001783: SGT
00001784: DUP2
00001785: AND
00001786: ISZERO
00001787: PUSH2 0x1792
0000178a: JUMPI
0000178b: PUSH2 0x1792
0000178e: PUSH2 0x1623
00001791: JUMP
00001792: JUMPDEST
00001793: POP
00001794: POP
00001795: SUB
00001796: SWAP1
00001797: JUMP
00001798: INVALID
00001799: LOG2
0000179a: PUSH5 0x6970667358
000017a0: UNKNOWN(0x22)
000017a1: SLT
000017a2: KECCAK256
000017a3: LOG1
000017a4: LOG3
000017a5: UNKNOWN(0xE8)
000017a6: ORIGIN
000017a7: CREATE
000017a8: DUP7
000017a9: UNKNOWN(0xDE)
000017aa: PUSH13 0xb61f3b31813c5ae482d8dd06bf
000017b8: PUSH12 0x057ed57fae724de6effc6473
000017c5: PUSH16

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xbe10b614",
            "selector": "0xbe10b614",
            "calldata_variants": [
                "0xbe10b614",
                "0xbe10b6140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30443bc",
            "selector": "0xe30443bc",
            "calldata_variants": [
                "0xe30443bc",
                "0xe30443bc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbcbc0f1",
            "selector": "0xfbcbc0f1",
            "calldata_variants": [
                "0xfbcbc0f1",
                "0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa457c2d7",
            "selector": "0xa457c2d7",
            "calldata_variants": [
                "0xa457c2d7",
                "0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa8b9d240",
            "selector": "0xa8b9d240",
            "calldata_variants": [
                "0xa8b9d240",
                "0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9059cbb",
            "selector": "0xa9059cbb",
            "calldata_variants": [
                "0xa9059cbb",
                "0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaafd847a",
            "selector": "0xaafd847a",
            "calldata_variants": [
                "0xaafd847a",
                "0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 6054,
            "type": "tx_origin_used"
        }
    ]
}
medium reentrancy codex Low-level CALL to computed target/value without clear success handling 75 no
view
evidence_json
{
    "evidence": "callsites list shows CALL at pc 4461 with computed target/value and `returndata_checked: null`; detector findings report untrusted CALL target and possible ETH value transfer for the same callsite.",
    "locations": [
        "pc:4461"
    ],
    "recommendation": "Validate the CALL success flag and handle failures explicitly (revert or record failure). If this is a payout to external accounts, use a pull-based claim pattern and/or a reentrancy guard around state updates that interact with external calls.",
    "exploit_scenario": "If the CALL target/value are influenced by user input or mutable storage (they are marked as computed), a malicious recipient contract can revert or reenter during the call. The bytecode artifacts do not show a clear success check; if state is updated regardless, payouts could be silently lost or reentrancy could impact invariants. Uncertainty remains because only bytecode-level evidence is available."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x0c826205efeb524661f215f5ba933e494832ce18b7c4819a39d0b706f8a78adb
call_targets: 0xecb55b39adb7c166ccab4ccb77463ded1d201de4
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x0c826205efeb524661f215f5ba933e494832ce18b7c4819a39d0b706f8a78adb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xecb55b39adb7c166ccab4ccb77463ded1d201de4"
    ],
    "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": "0xbe10b614",
            "selector": "0xbe10b614",
            "calldata_variants": [
                "0xbe10b614",
                "0xbe10b6140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30443bc",
            "selector": "0xe30443bc",
            "calldata_variants": [
                "0xe30443bc",
                "0xe30443bc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbcbc0f1",
            "selector": "0xfbcbc0f1",
            "calldata_variants": [
                "0xfbcbc0f1",
                "0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa457c2d7",
            "selector": "0xa457c2d7",
            "calldata_variants": [
                "0xa457c2d7",
                "0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa8b9d240",
            "selector": "0xa8b9d240",
            "calldata_variants": [
                "0xa8b9d240",
                "0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9059cbb",
            "selector": "0xa9059cbb",
            "calldata_variants": [
                "0xa9059cbb",
                "0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaafd847a",
            "selector": "0xaafd847a",
            "calldata_variants": [
                "0xaafd847a",
                "0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4461,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 6054,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x0c826205efeb524661f215f5ba933e494832ce18b7c4819a39d0b706f8a78adb
call_targets: 0xecb55b39adb7c166ccab4ccb77463ded1d201de4
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x0c826205efeb524661f215f5ba933e494832ce18b7c4819a39d0b706f8a78adb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xecb55b39adb7c166ccab4ccb77463ded1d201de4"
    ],
    "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": "0xbe10b614",
            "selector": "0xbe10b614",
            "calldata_variants": [
                "0xbe10b614",
                "0xbe10b6140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30443bc",
            "selector": "0xe30443bc",
            "calldata_variants": [
                "0xe30443bc",
                "0xe30443bc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbcbc0f1",
            "selector": "0xfbcbc0f1",
            "calldata_variants": [
                "0xfbcbc0f1",
                "0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa457c2d7",
            "selector": "0xa457c2d7",
            "calldata_variants": [
                "0xa457c2d7",
                "0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa8b9d240",
            "selector": "0xa8b9d240",
            "calldata_variants": [
                "0xa8b9d240",
                "0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9059cbb",
            "selector": "0xa9059cbb",
            "calldata_variants": [
                "0xa9059cbb",
                "0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaafd847a",
            "selector": "0xaafd847a",
            "calldata_variants": [
                "0xaafd847a",
                "0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4461,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 6054,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x59f9952796e75356aa0092d78ae5e744f4e5f9ce82527e6ace7bc1efecc27fa0
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x59f9952796e75356aa0092d78ae5e744f4e5f9ce82527e6ace7bc1efecc27fa0",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xbe10b614",
            "selector": "0xbe10b614",
            "calldata_variants": [
                "0xbe10b614",
                "0xbe10b6140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30443bc",
            "selector": "0xe30443bc",
            "calldata_variants": [
                "0xe30443bc",
                "0xe30443bc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbcbc0f1",
            "selector": "0xfbcbc0f1",
            "calldata_variants": [
                "0xfbcbc0f1",
                "0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa457c2d7",
            "selector": "0xa457c2d7",
            "calldata_variants": [
                "0xa457c2d7",
                "0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa8b9d240",
            "selector": "0xa8b9d240",
            "calldata_variants": [
                "0xa8b9d240",
                "0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9059cbb",
            "selector": "0xa9059cbb",
            "calldata_variants": [
                "0xa9059cbb",
                "0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaafd847a",
            "selector": "0xaafd847a",
            "calldata_variants": [
                "0xaafd847a",
                "0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 1,
    "create2_count": 0
}
low other cast Contract creation opcode present 60 no
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 1,
    "create2_count": 0
}