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

Analysis Run

019bab3b-a9f0-7106-bd41-4d2ed4375abc

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 11, 2026 4:06 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
38212 artifact.fetch complete 1 / 3 3 months ago
38213 proxy.resolve complete 1 / 3 3 months ago
38214 tool.cast_disasm complete 1 / 3 3 months ago
38215 analysis.bundle complete 1 / 3 3 months ago
38216 capability.graph complete 1 / 3 3 months ago
38217 detector.run complete 1 / 3 3 months ago
38218 validation.fork complete 1 / 3 3 months ago
38902 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
2
No findings?
no
Summary
One potential reentrancy pattern where an external CALL occurs before a subsequent SSTORE; several other CALLs use computed targets/values but address control is unclear from bytecode. The DELEGATECALL flagged by detectors appears in the post-STOP metadata tail (no JUMPDEST), so it is likely unreachable.
View stdout
{"no_findings":false,"summary":"One potential reentrancy pattern where an external CALL occurs before a subsequent SSTORE; several other CALLs use computed targets/values but address control is unclear from bytecode. The DELEGATECALL flagged by detectors appears in the post-STOP metadata tail (no JUMPDEST), so it is likely unreachable.","findings":[{"severity":"medium","category":"reentrancy","title":"External CALL before state update (potential reentrancy)","exploit_scenario":"If the CALL at pc:0x722 transfers ETH or invokes an attacker-controlled contract (target derived from CALLER/stack), a malicious receiver could reenter before the state update at pc:0x743 and repeat sensitive logic (e.g., withdrawals or accounting changes) to drain funds or bypass limits.","recommendation":"Apply checks-effects-interactions: move critical SSTORE updates before the external CALL or add a reentrancy guard around the function; consider pull-based payouts instead of direct CALLs.","evidence":"Bytecode shows a CALL at pc:0x722 followed by an SSTORE at pc:0x743, with no guard detected in the artifact; call arguments are computed from stack/CALLER, so the call can reach untrusted code.","locations":["pc:0x722","pc:0x743"]},{"severity":"low","category":"other","title":"External CALL targets/values are computed (audit address control)","exploit_scenario":"If any of the computed call targets/values at these callsites can be influenced by untrusted input or mutable storage without strict access control, an attacker could redirect value transfers or trigger malicious callbacks.","recommendation":"Verify that all CALL target addresses and values are either hardcoded or settable only by trusted roles; add explicit validation/allowlists for addresses and ensure reentrancy protections when calling external contracts.","evidence":"Detector evidence lists 6 CALL sites with target/value marked as computed and no guards detected; callsites at pc:0x398, 0x434, 0x6e6, 0x722, 0x842, 0x122c show EXTCODESIZE/CALL patterns with computed inputs and unknown returndata validation semantics.","locations":["pc:0x398","pc:0x434","pc:0x6e6","pc:0x722","pc:0x842","pc:0x122c"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-se7tuscj
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bab41-23b0-7ec2-9fb2-7bc052c22667
--------
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-se7tuscj succeeded in 5ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj succeeded in 11ms:
{
  "analysis_artifact": {
    "address": "0xf564141bda167a0f2c87ffd4480be627d90fa954",
    "artifact_hash": "0x77633968bd9970e978528a5b349253d8568da483a6687146698a1a7473851c5f",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 10,
          "hash": "0x3a4e38a4456e1ff8a68c8618d75691cf7c47fd41118136b60550622cd9713310",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "CALLDATASIZE",
            "ISZERO",
            "PUSH2",
            "JUMPI"

thinking
**Investigating proxy and storage patterns**
exec
/bin/bash -lc 'rg -n "storage" BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj succeeded in 11ms:
9749:          "storage": {
10313:          "storage": {
10877:          "storage": {
11441:          "storage": {
12005:          "storage": {
12569:          "storage": {
13133:          "storage": {
13697:          "storage": {
14261:          "storage": {
14825:          "storage": {
15389:          "storage": {
15953:          "storage": {
16517:          "storage": {
17081:          "storage": {
17645:          "storage": {
18209:          "storage": {
18789:      "storage": {

thinking
**Examining lines near storage usage**
exec
/bin/bash -lc "sed -n '9600,9805p' BYTECODE_BUNDLE.json" in /tmp/codex-se7tuscj succeeded in 27ms:
          "type": "control_flow_fallthrough"
        },
        {
          "from": "bb:5399",
          "to": "bb:5411",
          "type": "control_flow"
        },
        {
          "from": "bb:5399",
          "to": "bb:5406",
          "type": "control_flow_fallthrough"
        },
        {
          "from": "bb:5411",
          "to": "bb:5424",
          "type": "control_flow"
        },
        {
          "from": "bb:5411",
          "to": "bb:5419",

thinking
**Analyzing delegatecall patterns**
exec
/bin/bash -lc 'rg -n "call:5621" -n BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj succeeded in 6ms:
21896:          "to": "call:5621",
21900:          "from": "call:5621",
25170:          "id": "call:5621",
exec
/bin/bash -lc "sed -n '25080,25240p' BYTECODE_BUNDLE.json" in /tmp/codex-se7tuscj succeeded in 21ms:
          "id": "bb:5499",
          "start_pc": 5499,
          "type": "basic_block"
        },
        {
          "end_pc": 5511,
          "hash": "0xea18a74896baba07563605a1d18bab5d95166da1449914a8e0833030b047e029",
          "id": "bb:5503",
          "start_pc": 5503,
          "type": "basic_block"
        },
        {
          "end_pc": 5519,
          "hash": "0x7116c78759da41aaf0666d7532ff1a64eb93af1e624691d06550281a77e74768",
          "id": "bb:5512",
          "start_pc": 5512,
          "type": "basic_block"
        },
        {
          "end_pc": 5557,

thinking
**Exploring delegatecall context in basic blocks**
exec
/bin/bash -lc 'rg -n "start_pc": 5601 -n BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj exited 2 in 8ms:
rg: 5601: No such file or directory (os error 2)

thinking
**Checking pattern quoting for file detection**
exec
/bin/bash -lc "rg -n \"\\\"start_pc\\\": 5601\" BYTECODE_BUNDLE.json" in /tmp/codex-se7tuscj succeeded in 32ms:
7252:          "start_pc": 5601
25130:          "start_pc": 5601,

thinking
**Examining code near line 7200**
exec
/bin/bash -lc "sed -n '7180,7285p' BYTECODE_BUNDLE.json" in /tmp/codex-se7tuscj succeeded in 7ms:
            "PUSH1",
            "OP_80",
            "MLOAD",
            "PUSH1",
            "OP_81",
            "ADD",
            "OP_82",
            "MSTORE",
            "PUSH1",
            "OP_80",
            "OP_82",
            "MSTORE",
            "PUSH1",
            "OP_82",
            "ADD",
            "OP_81",
            "OP_90",
            "MSTORE",
            "OP_91",
            "OP_81",

thinking
**Analyzing delegatecall and function details**

I'm piecing together the context around a delegatecall in a specific function identified by selector 0x0d15fd77, trying to find evidence of security checks or proxy patterns. I'll explore function callsites, storage usage, and search for standard proxy indicators like EIP-1967 slots using the known storage slot hex. This should help clarify any untrusted delegatecall risks.
exec
/bin/bash -lc 'rg -n "360894" BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj exited 1 in 6ms:


thinking
**Searching for "beacon" usage**
exec
/bin/bash -lc 'rg -n "beacon|1967|implementation|proxy" BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj succeeded in 31ms:
19368:        "implementation": null,
19370:        "proxy": "0",
19375:      "proxy_evidence": {
19376:        "status": "not_proxy"
19379:    "implementation_address": null,
19380:    "is_proxy": false,

thinking
**Investigating bytecode artifacts**
exec
/bin/bash -lc 'rg -n "evidence|summary|bytecode" BYTECODE_BUNDLE.json' in /tmp/codex-se7tuscj succeeded in 8ms:
19375:      "proxy_evidence": {
19381:    "runtime_bytecode": {
25289:      "evidence_json": {
25325:      "evidence_json": {
25377:      "evidence_json": {
25428:  "heuristics_summary": {

thinking
**Checking around line 19368**
exec
/bin/bash -lc "sed -n '19290,19430p' BYTECODE_BUNDLE.json" in /tmp/codex-se7tuscj succeeded in 8ms:
            "pc": 4348,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
          },
          {
            "op": "SLOAD",
            "pc": 4374,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000010"
          },
          {
            "op": "SLOAD",
            "pc": 4410,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000011"
          },
          {
            "op": "SLOAD",
            "pc": 4446,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000012"
          },
          {
            "op": "SLOAD",

thinking
**Analyzing runtime bytecode for delegatecall and reentrancy risks**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

bytecode=data['artifact']['runtime_bytecode']['full']
if bytecode.startswith('0x'):
    bytecode=bytecode[2:]
code=unhexlify(bytecode)

# simple disassembler
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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

start=5580
end=5645
pc=0
i=0
# build mapping from pc to index for quick
# We will disassemble and print within range
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        data_bytes=code[pc+1:pc+1+n]
        imm=data_bytes.hex()
        if start <= pc <= end:
            print(f\"{pc:04x}: {name} 0x{imm}\")
        pc += 1+n
    else:
        if start <= pc <= end:
            print(f\"{pc:04x}: {name}\")
        pc += 1
PY" in /tmp/codex-se7tuscj succeeded in 37ms:
15cc: ADD
15cd: DUP2
15ce: SWAP1
15cf: MSTORE
15d0: SWAP2
15d1: DUP2
15d2: ADD
15d3: DUP3
15d4: SWAP1
15d5: MSTORE
15d6: PUSH1 0x60
15d8: DUP2
15d9: ADD
15da: SWAP2
15db: SWAP1
15dc: SWAP2
15dd: MSTORE
15de: SWAP1
15df: JUMP
15e0: STOP

thinking
**Analyzing delegatecall in metadata region**

I'm noticing that the delegatecall detected appears after the main STOP opcode, inside the metadata section of the bytecode, making it likely unreachable and a false positive. I want to verify there are no JUMPDEST opcodes there to confirm this, and then focus on examining actual CALL instructions within the executable code area to understand their behavior better.
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

bytecode=data['artifact']['runtime_bytecode']['full']
code=unhexlify(bytecode[2:] if bytecode.startswith('0x') else bytecode)

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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

# Build list of instructions with pc
instrs=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc+1:pc+1+n].hex()
        instrs.append((pc,f\"{name} 0x{imm}\"))
        pc += 1+n
    else:
        instrs.append((pc,name))
        pc += 1

# quick map from pc to index
pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}

def show_around(target_pc, window=12):
    idx=pc_to_idx.get(target_pc)
    if idx is None:
        print(f\"pc {target_pc} not found\")
        return
    start=max(0, idx-window)
    end=min(len(instrs), idx+window+1)
    for pc,inst in instrs[start:end]:
        marker='>>' if pc==target_pc else '  '
        print(f\"{marker} {pc:04x}: {inst}\")
    print()

for pc in [920,1076,1766,1826,2114,4652]:
    print(f\"Around pc {pc} (0x{pc:x})\")
    show_around(pc, window=10)
PY" in /tmp/codex-se7tuscj succeeded in 65ms:
Around pc 920 (0x398)
   038a: EXTCODESIZE
   038b: ISZERO
   038c: ISZERO
   038d: PUSH2 0x0392
   0390: JUMPI
   0391: INVALID
   0392: JUMPDEST
   0393: PUSH2 0x02c6
   0396: GAS
   0397: SUB
>> 0398: CALL
   0399: ISZERO
   039a: ISZERO
   039b: PUSH2 0x03a0
   039e: JUMPI
   039f: INVALID
   03a0: JUMPDEST
   03a1: POP
   03a2: POP

thinking
**Analyzing call instructions and context**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

bytecode=data['artifact']['runtime_bytecode']['full']
code=unhexlify(bytecode[2:] if bytecode.startswith('0x') else bytecode)

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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

# Build list of instructions with pc
instrs=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc+1:pc+1+n].hex()
        instrs.append((pc,f\"{name} 0x{imm}\"))
        pc += 1+n
    else:
        instrs.append((pc,name))
        pc += 1

pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}

def show_around(target_pc, window=25):
    idx=pc_to_idx.get(target_pc)
    if idx is None:
        print(f\"pc {target_pc} not found\")
        return
    start=max(0, idx-window)
    end=min(len(instrs), idx+window+1)
    for pc,inst in instrs[start:end]:
        marker='>>' if pc==target_pc else '  '
        print(f\"{marker} {pc:04x}: {inst}\")
    print()

for pc in [920,1076,1766,1826,2114,4652]:
    print(f\"Around pc {pc} (0x{pc:x})\")
    show_around(pc, window=20)
PY" in /tmp/codex-se7tuscj succeeded in 40ms:
Around pc 920 (0x398)
   0380: SWAP2
   0381: DUP4
   0382: SWAP1
   0383: SUB
   0384: ADD
   0385: SWAP1
   0386: DUP3
   0387: SWAP1
   0388: DUP8
   0389: DUP1
   038a: EXTCODESIZE
   038b: ISZERO
   038c: ISZERO
   038d: PUSH2 0x0392
   0390: JUMPI
   0391: INVALID
   0392: JUMPDEST
   0393: PUSH2 0x02c6
   0396: GAS

thinking
**Analyzing call and transfer patterns**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

bytecode=data['artifact']['runtime_bytecode']['full']
code=unhexlify(bytecode[2:] if bytecode.startswith('0x') else bytecode)

opcodes={
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
}

# find push4 immediate
targets={\"a9059cbb\",\"70a08231\",\"a620fcc7\",\"9507d39a\"}

pc=0
hits=[]
while pc < len(code):
    op=code[pc]
    if op==0x63:  # PUSH4
        imm=code[pc+1:pc+5].hex()
        if imm in targets:
            hits.append((pc, imm))
        pc+=5
    elif 0x60 <= op <= 0x7f:
        pc += 1 + (op-0x5f)
    else:
        pc += 1

for pc, imm in hits:
    print(hex(pc), imm)
PY" in /tmp/codex-se7tuscj succeeded in 34ms:
0x35d a620fcc7
0x373 a620fcc7
0x3ef 70a08231
0x40e 70a08231
0x677 a9059cbb
0x807 a620fcc7
0x81d a620fcc7
0x11e3 9507d39a

thinking
**Analyzing external calls and reentrancy risks**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

code=unhexlify(data['artifact']['runtime_bytecode']['full'][2:])

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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

# disassemble a range after call at 0x722
start=0x722
end=0x7b0
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc+1:pc+1+n].hex()
        if start <= pc <= end:
            print(f\"{pc:04x}: {name} 0x{imm}\")
        pc += 1+n
    else:
        if start <= pc <= end:
            print(f\"{pc:04x}: {name}\")
        pc += 1
PY" in /tmp/codex-se7tuscj succeeded in 40ms:
0722: CALL
0723: SWAP4
0724: POP
0725: POP
0726: POP
0727: POP
0728: ISZERO
0729: ISZERO
072a: PUSH2 0x0733
072d: JUMPI
072e: PUSH1 0x00
0730: PUSH1 0x00
0732: REVERT
0733: JUMPDEST
0734: PUSH1 0x16
0736: DUP1
0737: SLOAD
0738: PUSH1 0xa8
073a: PUSH1 0x02
073c: EXP

thinking
**Analyzing potential reentrancy risk in call sequence**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

code=unhexlify(data['artifact']['runtime_bytecode']['full'][2:])

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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

start=0x6f0
end=0x722
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc+1:pc+1+n].hex()
        if start <= pc <= end:
            print(f\"{pc:04x}: {name} 0x{imm}\")
        pc += 1+n
    else:
        if start <= pc <= end:
            print(f\"{pc:04x}: {name}\")
        pc += 1
PY" in /tmp/codex-se7tuscj succeeded in 34ms:
06f0: POP
06f1: PUSH1 0x40
06f3: MLOAD
06f4: MLOAD
06f5: ISZERO
06f6: ISZERO
06f7: SWAP1
06f8: POP
06f9: PUSH2 0x0702
06fc: JUMPI
06fd: PUSH1 0x00
06ff: PUSH1 0x00
0701: REVERT
0702: JUMPDEST
0703: PUSH1 0x40
0705: MLOAD
0706: PUSH1 0x01
0708: PUSH1 0xa0
070a: PUSH1 0x02
070c: EXP

thinking
**Analyzing potential reentrancy and call risks**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

code=unhexlify(data['artifact']['runtime_bytecode']['full'][2:])

# find SSTORE around 0x600-0x740
pc=0
sstore_pcs=[]
while pc < len(code):
    op=code[pc]
    if op==0x55:
        if 0x600 <= pc <= 0x740:
            sstore_pcs.append(pc)
        pc+=1
    elif 0x60 <= op <= 0x7f:
        pc += 1 + (op-0x5f)
    else:
        pc += 1

print(sstore_pcs)
PY" in /tmp/codex-se7tuscj succeeded in 31ms:
[1574, 1592, 1635]

thinking
**Analyzing SSTORE instructions near calls**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify

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

code=unhexlify(data['artifact']['runtime_bytecode']['full'][2:])

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',0x5c:'TLOAD',0x5d:'TSTORE',0x5e:'MCOPY',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}

start=0x600
end=0x680
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02x}')
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc+1:pc+1+n].hex()
        if start <= pc <= end:
            print(f\"{pc:04x}: {name} 0x{imm}\")
        pc += 1+n
    else:
        if start <= pc <= end:
            print(f\"{pc:04x}: {name}\")
        pc += 1
PY" in /tmp/codex-se7tuscj succeeded in 72ms:
0600: PUSH1 0xff
0602: AND
0603: SWAP1
0604: PUSH2 0x10f9
0607: JUMP
0608: JUMPDEST
0609: SWAP3
060a: POP
060b: PUSH1 0x00
060d: PUSH1 0x0f
060f: SLOAD
0610: GT
0611: ISZERO
0612: PUSH2 0x0629
0615: JUMPI
0616: PUSH2 0x0621
0619: DUP4
061a: PUSH1 0x0f
061c: SLOAD
061d: PUSH2 0x0d47

thinking
**Analyzing potential reentrancy and external calls**

I'm piecing together evidence of a possible reentrancy vulnerability due to an external CALL at pc 0x722 preceding a state update at pc 0x743, without an obvious guard. There are also multiple CALLs to computed addresses with unclear access control, posing a lower-severity risk. I'll prepare findings with supporting evidence including call program counters and summarize delegatecall metadata as non-impactful.
codex
{"no_findings":false,"summary":"One potential reentrancy pattern where an external CALL occurs before a subsequent SSTORE; several other CALLs use computed targets/values but address control is unclear from bytecode. The DELEGATECALL flagged by detectors appears in the post-STOP metadata tail (no JUMPDEST), so it is likely unreachable.","findings":[{"severity":"medium","category":"reentrancy","title":"External CALL before state update (potential reentrancy)","exploit_scenario":"If the CALL at pc:0x722 transfers ETH or invokes an attacker-controlled contract (target derived from CALLER/stack), a malicious receiver could reenter before the state update at pc:0x743 and repeat sensitive logic (e.g., withdrawals or accounting changes) to drain funds or bypass limits.","recommendation":"Apply checks-effects-interactions: move critical SSTORE updates before the external CALL or add a reentrancy guard around the function; consider pull-based payouts instead of direct CALLs.","evidence":"Bytecode shows a CALL at pc:0x722 followed by an SSTORE at pc:0x743, with no guard detected in the artifact; call arguments are computed from stack/CALLER, so the call can reach untrusted code.","locations":["pc:0x722","pc:0x743"]},{"severity":"low","category":"other","title":"External CALL targets/values are computed (audit address control)","exploit_scenario":"If any of the computed call targets/values at these callsites can be influenced by untrusted input or mutable storage without strict access control, an attacker could redirect value transfers or trigger malicious callbacks.","recommendation":"Verify that all CALL target addresses and values are either hardcoded or settable only by trusted roles; add explicit validation/allowlists for addresses and ensure reentrancy protections when calling external contracts.","evidence":"Detector evidence lists 6 CALL sites with target/value marked as computed and no guards detected; callsites at pc:0x398, 0x434, 0x6e6, 0x722, 0x842, 0x122c show EXTCODESIZE/CALL patterns with computed inputs and unknown returndata validation semantics.","locations":["pc:0x398","pc:0x434","pc:0x6e6","pc:0x722","pc:0x842","pc:0x122c"]}]}
tokens used
115,488
Metadata
{
    "codex": {
        "ran_at": "2026-01-11T04:18:28.052825+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 11290,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "One potential reentrancy pattern where an external CALL occurs before a subsequent SSTORE; several other CALLs use computed targets/values but address control is unclear from bytecode. The DELEGATECALL flagged by detectors appears in the post-STOP metadata tail (no JUMPDEST), so it is likely unreachable.",
    "raw_final": {
        "summary": "One potential reentrancy pattern where an external CALL occurs before a subsequent SSTORE; several other CALLs use computed targets/values but address control is unclear from bytecode. The DELEGATECALL flagged by detectors appears in the post-STOP metadata tail (no JUMPDEST), so it is likely unreachable.",
        "findings": [
            {
                "title": "External CALL before state update (potential reentrancy)",
                "category": "reentrancy",
                "evidence": "Bytecode shows a CALL at pc:0x722 followed by an SSTORE at pc:0x743, with no guard detected in the artifact; call arguments are computed from stack/CALLER, so the call can reach untrusted code.",
                "severity": "medium",
                "locations": [
                    "pc:0x722",
                    "pc:0x743"
                ],
                "recommendation": "Apply checks-effects-interactions: move critical SSTORE updates before the external CALL or add a reentrancy guard around the function; consider pull-based payouts instead of direct CALLs.",
                "exploit_scenario": "If the CALL at pc:0x722 transfers ETH or invokes an attacker-controlled contract (target derived from CALLER/stack), a malicious receiver could reenter before the state update at pc:0x743 and repeat sensitive logic (e.g., withdrawals or accounting changes) to drain funds or bypass limits."
            },
            {
                "title": "External CALL targets/values are computed (audit address control)",
                "category": "other",
                "evidence": "Detector evidence lists 6 CALL sites with target/value marked as computed and no guards detected; callsites at pc:0x398, 0x434, 0x6e6, 0x722, 0x842, 0x122c show EXTCODESIZE/CALL patterns with computed inputs and unknown returndata validation semantics.",
                "severity": "low",
                "locations": [
                    "pc:0x398",
                    "pc:0x434",
                    "pc:0x6e6",
                    "pc:0x722",
                    "pc:0x842",
                    "pc:0x122c"
                ],
                "recommendation": "Verify that all CALL target addresses and values are either hardcoded or settable only by trusted roles; add explicit validation/allowlists for addresses and ensure reentrancy protections when calling external contracts.",
                "exploit_scenario": "If any of the computed call targets/values at these callsites can be influenced by untrusted input or mutable storage without strict access control, an attacker could redirect value transfers or trigger malicious callbacks."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
5
Total opcodes
4017
Flags
delegatecall_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00ca
0000000a: JUMPI
0000000b: PUSH4 0xffffffff
00000010: PUSH1 0xe0
00000012: PUSH1 0x02
00000014: EXP
00000015: PUSH1 0x00
00000017: CALLDATALOAD
00000018: DIV
00000019: AND
0000001a: PUSH4 0x0d15fd77
0000001f: DUP2
00000020: EQ
00000021: PUSH2 0x00db
00000024: JUMPI
00000025: DUP1
00000026: PUSH4 0x2969d202
0000002b: EQ
0000002c: PUSH2 0x00fd
0000002f: JUMPI
00000030: DUP1
00000031: PUSH4 0x2e6dbdf9
00000036: EQ
00000037: PUSH2 0x011f
0000003a: JUMPI
0000003b: DUP1
0000003c: PUSH4 0x2e854433
00000041: EQ
00000042: PUSH2 0x0131
00000045: JUMPI
00000046: DUP1
00000047: PUSH4 0x47799092
0000004c: EQ
0000004d: PUSH2 0x0143
00000050: JUMPI
00000051: DUP1
00000052: PUSH4 0x4b60ce77
00000057: EQ
00000058: PUSH2 0x0158
0000005b: JUMPI
0000005c: DUP1
0000005d: PUSH4 0x4fb2e45d
00000062: EQ
00000063: PUSH2 0x0184
00000066: JUMPI
00000067: DUP1
00000068: PUSH4 0x5afb6ba5
0000006d: EQ
0000006e: PUSH2 0x01a2
00000071: JUMPI
00000072: DUP1
00000073: PUSH4 0x750142e6
00000078: EQ
00000079: PUSH2 0x01e9
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0x81f4be5e
00000083: EQ
00000084: PUSH2 0x020b
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0x84bcefd4
0000008e: EQ
0000008f: PUSH2 0x0237
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0x8da5cb5b
00000099: EQ
0000009a: PUSH2 0x0259
0000009d: JUMPI
0000009e: DUP1
0000009f: PUSH4 0x96c82e57
000000a4: EQ
000000a5: PUSH2 0x0285
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0xa0684251
000000af: EQ
000000b0: PUSH2 0x02a7
000000b3: JUMPI
000000b4: DUP1
000000b5: PUSH4 0xb8837957
000000ba: EQ
000000bb: PUSH2 0x02c9
000000be: JUMPI
000000bf: DUP1
000000c0: PUSH4 0xba16d600
000000c5: EQ
000000c6: PUSH2 0x02eb
000000c9: JUMPI
000000ca: JUMPDEST
000000cb: PUSH2 0x00d9
000000ce: JUMPDEST
000000cf: PUSH1 0x0b
000000d1: DUP1
000000d2: SLOAD
000000d3: CALLVALUE
000000d4: ADD
000000d5: SWAP1
000000d6: SSTORE
000000d7: JUMPDEST
000000d8: JUMP
000000d9: JUMPDEST
000000da: STOP
000000db: JUMPDEST
000000dc: CALLVALUE
000000dd: ISZERO
000000de: PUSH2 0x00e3
000000e1: JUMPI
000000e2: INVALID
000000e3: JUMPDEST
000000e4: PUSH2 0x00eb
000000e7: PUSH2 0x030d
000000ea: JUMP
000000eb: JUMPDEST
000000ec: PUSH1 0x40
000000ee: DUP1
000000ef: MLOAD
000000f0: SWAP2
000000f1: DUP3
000000f2: MSTORE
000000f3: MLOAD
000000f4: SWAP1
000000f5: DUP2
000000f6: SWAP1
000000f7: SUB
000000f8: PUSH1 0x20
000000fa: ADD
000000fb: SWAP1
000000fc: RETURN
000000fd: JUMPDEST
000000fe: CALLVALUE
000000ff: ISZERO
00000100: PUSH2 0x0105
00000103: JUMPI
00000104: INVALID
00000105: JUMPDEST
00000106: PUSH2 0x00eb
00000109: PUSH2 0x0313
0000010c: JUMP
0000010d: JUMPDEST
0000010e: PUSH1 0x40
00000110: DUP1
00000111: MLOAD
00000112: SWAP2
00000113: DUP3
00000114: MSTORE
00000115: MLOAD
00000116: SWAP1
00000117: DUP2
00000118: SWAP1
00000119: SUB
0000011a: PUSH1 0x20
0000011c: ADD
0000011d: SWAP1
0000011e: RETURN
0000011f: JUMPDEST
00000120: CALLVALUE
00000121: ISZERO
00000122: PUSH2 0x0127
00000125: JUMPI
00000126: INVALID
00000127: JUMPDEST
00000128: PUSH2 0x00d9
0000012b: PUSH2 0x0319
0000012e: JUMP
0000012f: JUMPDEST
00000130: STOP
00000131: JUMPDEST
00000132: CALLVALUE
00000133: ISZERO
00000134: PUSH2 0x0139
00000137: JUMPI
00000138: INVALID
00000139: JUMPDEST
0000013a: PUSH2 0x00d9
0000013d: PUSH2 0x0536
00000140: JUMP
00000141: JUMPDEST
00000142: STOP
00000143: JUMPDEST
00000144: CALLVALUE
00000145: ISZERO
00000146: PUSH2 0x014b
00000149: JUMPI
0000014a: INVALID
0000014b: JUMPDEST
0000014c: PUSH2 0x00d9
0000014f: PUSH1 0x04
00000151: CALLDATALOAD
00000152: PUSH2 0x0790
00000155: JUMP
00000156: JUMPDEST
00000157: STOP
00000158: JUMPDEST
00000159: CALLVALUE
0000015a: ISZERO
0000015b: PUSH2 0x0160
0000015e: JUMPI
0000015f: INVALID
00000160: JUMPDEST
00000161: PUSH2 0x0168
00000164: PUSH2 0x0a4e
00000167: JUMP
00000168: JUMPDEST
00000169: PUSH1 0x40
0000016b: DUP1
0000016c: MLOAD
0000016d: PUSH1 0x01
0000016f: PUSH1 0xa0
00000171: PUSH1 0x02
00000173: EXP
00000174: SUB
00000175: SWAP1
00000176: SWAP3
00000177: AND
00000178: DUP3
00000179: MSTORE
0000017a: MLOAD
0000017b: SWAP1
0000017c: DUP2
0000017d: SWAP1
0000017e: SUB
0000017f: PUSH1 0x20
00000181: ADD
00000182: SWAP1
00000183: RETURN
00000184: JUMPDEST
00000185: CALLVALUE
00000186: ISZERO
00000187: PUSH2 0x018c
0000018a: JUMPI
0000018b: INVALID
0000018c: JUMPDEST
0000018d: PUSH2 0x00d9
00000190: PUSH1 0x01
00000192: PUSH1 0xa0
00000194: PUSH1 0x02
00000196: EXP
00000197: SUB
00000198: PUSH1 0x04
0000019a: CALLDATALOAD
0000019b: AND
0000019c: PUSH2 0x0a5d
0000019f: JUMP
000001a0: JUMPDEST
000001a1: STOP
000001a2: JUMPDEST
000001a3: CALLVALUE
000001a4: ISZERO
000001a5: PUSH2 0x01aa
000001a8: JUMPI
000001a9: INVALID
000001aa: JUMPDEST
000001ab: PUSH2 0x01be
000001ae: PUSH1 0x01
000001b0: PUSH1 0xa0
000001b2: PUSH1 0x02
000001b4: EXP
000001b5: SUB
000001b6: PUSH1 0x04
000001b8: CALLDATALOAD
000001b9: AND
000001ba: PUSH2 0x0aa5
000001bd: JUMP
000001be: JUMPDEST
000001bf: PUSH1 0x40
000001c1: MLOAD
000001c2: DUP1
000001c3: DUP4
000001c4: DUP2
000001c5: MSTORE
000001c6: PUSH1 0x20
000001c8: ADD
000001c9: DUP3
000001ca: PUSH1 0x02
000001cc: DUP2
000001cd: GT
000001ce: ISZERO
000001cf: PUSH2 0x01d4
000001d2: JUMPI
000001d3: INVALID
000001d4: JUMPDEST
000001d5: PUSH1 0xff
000001d7: AND
000001d8: DUP2
000001d9: MSTORE
000001da: PUSH1 0x20
000001dc: ADD
000001dd: SWAP3
000001de: POP
000001df: POP
000001e0: POP
000001e1: PUSH1 0x40
000001e3: MLOAD
000001e4: DUP1
000001e5: SWAP2
000001e6: SUB
000001e7: SWAP1
000001e8: RETURN
000001e9: JUMPDEST
000001ea: CALLVALUE
000001eb: ISZERO
000001ec: PUSH2 0x01f1
000001ef: JUMPI
000001f0: INVALID
000001f1: JUMPDEST
000001f2: PUSH2 0x00eb
000001f5: PUSH2 0x0b2d
000001f8: JUMP
000001f9: JUMPDEST
000001fa: PUSH1 0x40
000001fc: DUP1
000001fd: MLOAD
000001fe: SWAP2
000001ff: DUP3
00000200: MSTORE
00000201: MLOAD
00000202: SWAP1
00000203: DUP2
00000204: SWAP1
00000205: SUB
00000206: PUSH1 0x20
00000208: ADD
00000209: SWAP1
0000020a: RETURN
0000020b: JUMPDEST
0000020c: CALLVALUE
0000020d: ISZERO
0000020e: PUSH2 0x0213
00000211: JUMPI
00000212: INVALID
00000213: JUMPDEST
00000214: PUSH2 0x0168
00000217: PUSH2 0x0b33
0000021a: JUMP
0000021b: JUMPDEST
0000021c: PUSH1 0x40
0000021e: DUP1
0000021f: MLOAD
00000220: PUSH1 0x01
00000222: PUSH1 0xa0
00000224: PUSH1 0x02
00000226: EXP
00000227: SUB
00000228: SWAP1
00000229: SWAP3
0000022a: AND
0000022b: DUP3
0000022c: MSTORE
0000022d: MLOAD
0000022e: SWAP1
0000022f: DUP2
00000230: SWAP1
00000231: SUB
00000232: PUSH1 0x20
00000234: ADD
00000235: SWAP1
00000236: RETURN
00000237: JUMPDEST
00000238: CALLVALUE
00000239: ISZERO
0000023a: PUSH2 0x023f
0000023d: JUMPI
0000023e: INVALID
0000023f: JUMPDEST
00000240: PUSH2 0x00eb
00000243: PUSH2 0x0b42
00000246: JUMP
00000247: JUMPDEST
00000248: PUSH1 0x40
0000024a: DUP1
0000024b: MLOAD
0000024c: SWAP2
0000024d: DUP3
0000024e: MSTORE
0000024f: MLOAD
00000250: SWAP1
00000251: DUP2
00000252: SWAP1
00000253: SUB
00000254: PUSH1 0x20
00000256: ADD
00000257: SWAP1
00000258: RETURN
00000259: JUMPDEST
0000025a: CALLVALUE
0000025b: ISZERO
0000025c: PUSH2 0x0261
0000025f: JUMPI
00000260: INVALID
00000261: JUMPDEST
00000262: PUSH2 0x0168
00000265: PUSH2 0x0b48
00000268: JUMP
00000269: JUMPDEST
0000026a: PUSH1 0x40
0000026c: DUP1
0000026d: MLOAD
0000026e: PUSH1 0x01
00000270: PUSH1 0xa0
00000272: PUSH1 0x02
00000274: EXP
00000275: SUB
00000276: SWAP1
00000277: SWAP3
00000278: AND
00000279: DUP3
0000027a: MSTORE
0000027b: MLOAD
0000027c: SWAP1
0000027d: DUP2
0000027e: SWAP1
0000027f: SUB
00000280: PUSH1 0x20
00000282: ADD
00000283: SWAP1
00000284: RETURN
00000285: JUMPDEST
00000286: CALLVALUE
00000287: ISZERO
00000288: PUSH2 0x028d
0000028b: JUMPI
0000028c: INVALID
0000028d: JUMPDEST
0000028e: PUSH2 0x00eb
00000291: PUSH2 0x0b57
00000294: JUMP
00000295: JUMPDEST
00000296: PUSH1 0x40
00000298: DUP1
00000299: MLOAD
0000029a: SWAP2
0000029b: DUP3
0000029c: MSTORE
0000029d: MLOAD
0000029e: SWAP1
0000029f: DUP2
000002a0: SWAP1
000002a1: SUB
000002a2: PUSH1 0x20
000002a4: ADD
000002a5: SWAP1
000002a6: RETURN
000002a7: JUMPDEST
000002a8: CALLVALUE
000002a9: ISZERO
000002aa: PUSH2 0x02af
000002ad: JUMPI
000002ae: INVALID
000002af: JUMPDEST
000002b0: PUSH2 0x00eb
000002b3: PUSH2 0x0b5d
000002b6: JUMP
000002b7: JUMPDEST
000002b8: PUSH1 0x40
000002ba: DUP1
000002bb: MLOAD
000002bc: SWAP2
000002bd: DUP3
000002be: MSTORE
000002bf: MLOAD
000002c0: SWAP1
000002c1: DUP2
000002c2: SWAP1
000002c3: SUB
000002c4: PUSH1 0x20
000002c6: ADD
000002c7: SWAP1
000002c8: RETURN
000002c9: JUMPDEST
000002ca: CALLVALUE
000002cb: ISZERO
000002cc: PUSH2 0x02d1
000002cf: JUMPI
000002d0: INVALID
000002d1: JUMPDEST
000002d2: PUSH2 0x00eb
000002d5: PUSH2 0x0b63
000002d8: JUMP
000002d9: JUMPDEST
000002da: PUSH1 0x40
000002dc: DUP1
000002dd: MLOAD
000002de: SWAP2
000002df: DUP3
000002e0: MSTORE
000002e1: MLOAD
000002e2: SWAP1
000002e3: DUP2
000002e4: SWAP1
000002e5: SUB
000002e6: PUSH1 0x20
000002e8: ADD
000002e9: SWAP1
000002ea: RETURN
000002eb: JUMPDEST
000002ec: CALLVALUE
000002ed: ISZERO
000002ee: PUSH2 0x02f3
000002f1: JUMPI
000002f2: INVALID
000002f3: JUMPDEST
000002f4: PUSH2 0x00eb
000002f7: PUSH2 0x0b69
000002fa: JUMP
000002fb: JUMPDEST
000002fc: PUSH1 0x40
000002fe: DUP1
000002ff: MLOAD
00000300: SWAP2
00000301: DUP3
00000302: MSTORE
00000303: MLOAD
00000304: SWAP1
00000305: DUP2
00000306: SWAP1
00000307: SUB
00000308: PUSH1 0x20
0000030a: ADD
0000030b: SWAP1
0000030c: RETURN
0000030d: JUMPDEST
0000030e: PUSH1 0x0c
00000310: SLOAD
00000311: DUP2
00000312: JUMP
00000313: JUMPDEST
00000314: PUSH1 0x0b
00000316: SLOAD
00000317: DUP2
00000318: JUMP
00000319: JUMPDEST
0000031a: PUSH2 0x0321
0000031d: PUSH2 0x1396
00000320: JUMP
00000321: JUMPDEST
00000322: PUSH1 0x16
00000324: SLOAD
00000325: PUSH1 0x00
00000327: SWAP1
00000328: DUP2
00000329: SWAP1
0000032a: DUP2
0000032b: SWAP1
0000032c: DUP2
0000032d: SWAP1
0000032e: DUP2
0000032f: SWAP1
00000330: PUSH1 0xa0
00000332: PUSH1 0x02
00000334: EXP
00000335: SWAP1
00000336: DIV
00000337: PUSH1 0xff
00000339: AND
0000033a: ISZERO
0000033b: PUSH2 0x0344
0000033e: JUMPI
0000033f: PUSH1 0x00
00000341: PUSH1 0x00
00000343: REVERT
00000344: JUMPDEST
00000345: PUSH1 0x15
00000347: SLOAD
00000348: PUSH1 0x40
0000034a: DUP1
0000034b: MLOAD
0000034c: PUSH1 0x00
0000034e: PUSH1 0x20
00000350: SWAP2
00000351: DUP3
00000352: ADD
00000353: DUP2
00000354: SWAP1
00000355: MSTORE
00000356: DUP3
00000357: MLOAD
00000358: PUSH1 0xe0
0000035a: PUSH1 0x02
0000035c: EXP
0000035d: PUSH4 0xa620fcc7
00000362: MUL
00000363: DUP2
00000364: MSTORE
00000365: SWAP3
00000366: MLOAD
00000367: PUSH1 0x01
00000369: PUSH1 0xa0
0000036b: PUSH1 0x02
0000036d: EXP
0000036e: SUB
0000036f: SWAP1
00000370: SWAP5
00000371: AND
00000372: SWAP4
00000373: PUSH4 0xa620fcc7
00000378: SWAP4
00000379: PUSH1 0x04
0000037b: DUP1
0000037c: DUP3
0000037d: ADD
0000037e: SWAP5
0000037f: SWAP4
00000380: SWAP2
00000381: DUP4
00000382: SWAP1
00000383: SUB
00000384: ADD
00000385: SWAP1
00000386: DUP3
00000387: SWAP1
00000388: DUP8
00000389: DUP1
0000038a: EXTCODESIZE
0000038b: ISZERO
0000038c: ISZERO
0000038d: PUSH2 0x0392
00000390: JUMPI
00000391: INVALID
00000392: JUMPDEST
00000393: PUSH2 0x02c6
00000396: GAS
00000397: SUB
00000398: CALL
00000399: ISZERO
0000039a: ISZERO
0000039b: PUSH2 0x03a0
0000039e: JUMPI
0000039f: INVALID
000003a0: JUMPDEST
000003a1: POP
000003a2: POP
000003a3: PUSH1 0x40
000003a5: MLOAD
000003a6: MLOAD
000003a7: PUSH1 0x0c
000003a9: SLOAD
000003aa: EQ
000003ab: SWAP1
000003ac: POP
000003ad: PUSH2 0x03b6
000003b0: JUMPI
000003b1: PUSH1 0x00
000003b3: PUSH1 0x00
000003b5: REVERT
000003b6: JUMPDEST
000003b7: PUSH1 0x0e
000003b9: SLOAD
000003ba: PUSH1 0x0b
000003bc: SLOAD
000003bd: LT
000003be: ISZERO
000003bf: PUSH2 0x03c8
000003c2: JUMPI
000003c3: PUSH1 0x00
000003c5: PUSH1 0x00
000003c7: REVERT
000003c8: JUMPDEST
000003c9: PUSH2 0x03d6
000003cc: PUSH1 0x0e
000003ce: SLOAD
000003cf: PUSH1 0x17
000003d1: SLOAD
000003d2: PUSH2 0x0b6f
000003d5: JUMP
000003d6: JUMPDEST
000003d7: PUSH1 0x16
000003d9: SLOAD
000003da: PUSH1 0x40
000003dc: DUP1
000003dd: MLOAD
000003de: PUSH1 0x00
000003e0: PUSH1 0x20
000003e2: SWAP2
000003e3: DUP3
000003e4: ADD
000003e5: DUP2
000003e6: SWAP1
000003e7: MSTORE
000003e8: DUP3
000003e9: MLOAD
000003ea: PUSH1 0xe0
000003ec: PUSH1 0x02
000003ee: EXP
000003ef: PUSH4 0x70a08231
000003f4: MUL
000003f5: DUP2
000003f6: MSTORE
000003f7: PUSH1 0x01
000003f9: PUSH1 0xa0
000003fb: PUSH1 0x02
000003fd: EXP
000003fe: SUB
000003ff: ADDRESS
00000400: DUP2
00000401: AND
00000402: PUSH1 0x04
00000404: DUP4
00000405: ADD
00000406: MSTORE
00000407: SWAP4
00000408: MLOAD
00000409: SWAP4
0000040a: SWAP1
0000040b: SWAP5
0000040c: AND
0000040d: SWAP4
0000040e: PUSH4 0x70a08231
00000413: SWAP4
00000414: PUSH1 0x24
00000416: DUP1
00000417: DUP4
00000418: ADD
00000419: SWAP5
0000041a: SWAP4
0000041b: SWAP2
0000041c: SWAP3
0000041d: DUP4
0000041e: SWAP1
0000041f: SUB
00000420: ADD
00000421: SWAP1
00000422: DUP3
00000423: SWAP1
00000424: DUP8
00000425: DUP1
00000426: EXTCODESIZE
00000427: ISZERO
00000428: ISZERO
00000429: PUSH2 0x042e
0000042c: JUMPI
0000042d: INVALID
0000042e: JUMPDEST
0000042f: PUSH2 0x02c6
00000432: GAS
00000433: SUB
00000434: CALL
00000435: ISZERO
00000436: ISZERO
00000437: PUSH2 0x043c
0000043a: JUMPI
0000043b: INVALID
0000043c: JUMPDEST
0000043d: POP
0000043e: POP
0000043f: PUSH1 0x40
00000441: MLOAD
00000442: MLOAD
00000443: SWAP2
00000444: SWAP1
00000445: SWAP2
00000446: LT
00000447: ISZERO
00000448: SWAP1
00000449: POP
0000044a: PUSH2 0x0453
0000044d: JUMPI
0000044e: PUSH1 0x00
00000450: PUSH1 0x00
00000452: REVERT
00000453: JUMPDEST
00000454: PUSH2 0x045b
00000457: PUSH2 0x0b9e
0000045a: JUMP
0000045b: JUMPDEST
0000045c: SWAP6
0000045d: POP
0000045e: PUSH1 0x08
00000460: SLOAD
00000461: SWAP5
00000462: POP
00000463: JUMPDEST
00000464: PUSH1 0x09
00000466: SLOAD
00000467: DUP6
00000468: GT
00000469: PUSH2 0x0490
0000046c: JUMPI
0000046d: PUSH2 0x0478
00000470: DUP5
00000471: PUSH1 0x0a
00000473: SLOAD
00000474: PUSH2 0x0d47
00000477: JUMP
00000478: JUMPDEST
00000479: SWAP4
0000047a: POP
0000047b: PUSH2 0x0486
0000047e: DUP7
0000047f: DUP7
00000480: DUP7
00000481: DUP7
00000482: PUSH2 0x0d6f
00000485: JUMP
00000486: JUMPDEST
00000487: SWAP3
00000488: POP
00000489: DUP4
0000048a: SWAP5
0000048b: POP
0000048c: PUSH2 0x0463
0000048f: JUMP
00000490: JUMPDEST
00000491: PUSH2 0x049e
00000494: PUSH1 0x02
00000496: SLOAD
00000497: PUSH1 0x0c
00000499: SLOAD
0000049a: PUSH2 0x0b6f
0000049d: JUMP
0000049e: JUMPDEST
0000049f: PUSH1 0x0e
000004a1: SLOAD
000004a2: SWAP1
000004a3: SWAP3
000004a4: POP
000004a5: DUP3
000004a6: LT
000004a7: PUSH2 0x04b0
000004aa: JUMPI
000004ab: PUSH1 0x00
000004ad: PUSH1 0x00
000004af: REVERT
000004b0: JUMPDEST
000004b1: PUSH1 0x0e
000004b3: DUP1
000004b4: SLOAD
000004b5: DUP4
000004b6: SWAP1
000004b7: SUB
000004b8: SWAP1
000004b9: SSTORE
000004ba: PUSH2 0x04c1
000004bd: PUSH2 0x0f59
000004c0: JUMP
000004c1: JUMPDEST
000004c2: PUSH1 0x0f
000004c4: SSTORE
000004c5: PUSH1 0x16
000004c7: DUP1
000004c8: SLOAD
000004c9: PUSH1 0xa0
000004cb: PUSH1 0x02
000004cd: EXP
000004ce: PUSH1 0xff
000004d0: MUL
000004d1: NOT
000004d2: AND
000004d3: PUSH1 0xa0
000004d5: PUSH1 0x02
000004d7: EXP
000004d8: OR
000004d9: SWAP1
000004da: SSTORE
000004db: PUSH1 0x10
000004dd: SLOAD
000004de: PUSH1 0x11
000004e0: SLOAD
000004e1: PUSH1 0x12
000004e3: SLOAD
000004e4: PUSH1 0x13
000004e6: SLOAD
000004e7: PUSH1 0x40
000004e9: DUP1
000004ea: MLOAD
000004eb: SWAP5
000004ec: DUP6
000004ed: MSTORE
000004ee: PUSH1 0x20
000004f0: DUP6
000004f1: ADD
000004f2: SWAP4
000004f3: SWAP1
000004f4: SWAP4
000004f5: MSTORE
000004f6: DUP4
000004f7: DUP4
000004f8: ADD
000004f9: SWAP2
000004fa: SWAP1
000004fb: SWAP2
000004fc: MSTORE
000004fd: PUSH1 0x60
000004ff: DUP4
00000500: ADD
00000501: MSTORE
00000502: MLOAD
00000503: PUSH32 0x23ab3fd308ef0e085d61939ed6d3e141f21837614a02ed448da4dce240245344
00000524: SWAP2
00000525: DUP2
00000526: SWAP1
00000527: SUB
00000528: PUSH1 0x80
0000052a: ADD
0000052b: SWAP1
0000052c: LOG1
0000052d: JUMPDEST
0000052e: JUMPDEST
0000052f: POP
00000530: POP
00000531: POP
00000532: POP
00000533: POP
00000534: POP
00000535: JUMP
00000536: JUMPDEST
00000537: PUSH1 0x16
00000539: SLOAD
0000053a: PUSH1 0x00
0000053c: SWAP1
0000053d: DUP2
0000053e: SWAP1
0000053f: PUSH1 0x01
00000541: SWAP1
00000542: PUSH1 0xa0
00000544: PUSH1 0x02
00000546: EXP
00000547: SWAP1
00000548: DIV
00000549: PUSH1 0xff
0000054b: AND
0000054c: ISZERO
0000054d: ISZERO
0000054e: DUP2
0000054f: EQ
00000550: PUSH2 0x0559
00000553: JUMPI
00000554: PUSH1 0x00
00000556: PUSH1 0x00
00000558: REVERT
00000559: JUMPDEST
0000055a: CALLER
0000055b: PUSH1 0x01
0000055d: JUMPDEST
0000055e: PUSH1 0x01
00000560: PUSH1 0xa0
00000562: PUSH1 0x02
00000564: EXP
00000565: SUB
00000566: DUP3
00000567: AND
00000568: PUSH1 0x00
0000056a: SWAP1
0000056b: DUP2
0000056c: MSTORE
0000056d: PUSH1 0x14
0000056f: PUSH1 0x20
00000571: MSTORE
00000572: PUSH1 0x40
00000574: SWAP1
00000575: KECCAK256
00000576: PUSH1 0x02
00000578: SWAP1
00000579: DUP2
0000057a: ADD
0000057b: SLOAD
0000057c: PUSH1 0xff
0000057e: AND
0000057f: SWAP1
00000580: DUP2
00000581: GT
00000582: ISZERO
00000583: PUSH2 0x0588
00000586: JUMPI
00000587: INVALID
00000588: JUMPDEST
00000589: EQ
0000058a: PUSH2 0x0593
0000058d: JUMPI
0000058e: PUSH1 0x00
00000590: PUSH1 0x00
00000592: REVERT
00000593: JUMPDEST
00000594: PUSH1 0x16
00000596: SLOAD
00000597: PUSH1 0xa8
00000599: PUSH1 0x02
0000059b: EXP
0000059c: SWAP1
0000059d: DIV
0000059e: PUSH1 0xff
000005a0: AND
000005a1: ISZERO
000005a2: PUSH2 0x05ab
000005a5: JUMPI
000005a6: PUSH1 0x00
000005a8: PUSH1 0x00
000005aa: REVERT
000005ab: JUMPDEST
000005ac: PUSH1 0x16
000005ae: DUP1
000005af: SLOAD
000005b0: PUSH1 0xa8
000005b2: PUSH1 0x02
000005b4: EXP
000005b5: PUSH1 0xff
000005b7: MUL
000005b8: NOT
000005b9: AND
000005ba: PUSH1 0xa8
000005bc: PUSH1 0x02
000005be: EXP
000005bf: OR
000005c0: SWAP1
000005c1: SSTORE
000005c2: PUSH1 0x01
000005c4: PUSH1 0xa0
000005c6: PUSH1 0x02
000005c8: EXP
000005c9: SUB
000005ca: CALLER
000005cb: AND
000005cc: PUSH1 0x00
000005ce: SWAP1
000005cf: DUP2
000005d0: MSTORE
000005d1: PUSH1 0x14
000005d3: PUSH1 0x20
000005d5: SWAP1
000005d6: DUP2
000005d7: MSTORE
000005d8: PUSH1 0x40
000005da: DUP1
000005db: DUP4
000005dc: KECCAK256
000005dd: DUP1
000005de: SLOAD
000005df: DUP5
000005e0: MSTORE
000005e1: PUSH1 0x07
000005e3: SWAP1
000005e4: SWAP3
000005e5: MSTORE
000005e6: SWAP1
000005e7: SWAP2
000005e8: KECCAK256
000005e9: PUSH1 0x01
000005eb: SWAP1
000005ec: DUP2
000005ed: ADD
000005ee: SLOAD
000005ef: SWAP1
000005f0: DUP3
000005f1: ADD
000005f2: SLOAD
000005f3: SWAP2
000005f4: SWAP6
000005f5: POP
000005f6: PUSH2 0x0608
000005f9: SWAP2
000005fa: PUSH2 0x0100
000005fd: SWAP1
000005fe: SWAP2
000005ff: DIV
00000600: PUSH1 0xff
00000602: AND
00000603: SWAP1
00000604: PUSH2 0x10f9
00000607: JUMP
00000608: JUMPDEST
00000609: SWAP3
0000060a: POP
0000060b: PUSH1 0x00
0000060d: PUSH1 0x0f
0000060f: SLOAD
00000610: GT
00000611: ISZERO
00000612: PUSH2 0x0629
00000615: JUMPI
00000616: PUSH2 0x0621
00000619: DUP4
0000061a: PUSH1 0x0f
0000061c: SLOAD
0000061d: PUSH2 0x0d47
00000620: JUMP
00000621: JUMPDEST
00000622: PUSH1 0x00
00000624: PUSH1 0x0f
00000626: SSTORE
00000627: SWAP3
00000628: POP
00000629: JUMPDEST
0000062a: PUSH2 0x0635
0000062d: PUSH1 0x0b
0000062f: SLOAD
00000630: DUP5
00000631: PUSH2 0x119a
00000634: JUMP
00000635: JUMPDEST
00000636: PUSH1 0x0b
00000638: SSTORE
00000639: PUSH1 0x01
0000063b: PUSH1 0xa0
0000063d: PUSH1 0x02
0000063f: EXP
00000640: SUB
00000641: CALLER
00000642: AND
00000643: PUSH1 0x00
00000645: SWAP1
00000646: DUP2
00000647: MSTORE
00000648: PUSH1 0x14
0000064a: PUSH1 0x20
0000064c: MSTORE
0000064d: PUSH1 0x40
0000064f: SWAP1
00000650: KECCAK256
00000651: PUSH1 0x02
00000653: SWAP1
00000654: DUP2
00000655: ADD
00000656: DUP1
00000657: SLOAD
00000658: PUSH1 0xff
0000065a: NOT
0000065b: AND
0000065c: PUSH1 0x01
0000065e: DUP4
0000065f: JUMPDEST
00000660: MUL
00000661: OR
00000662: SWAP1
00000663: SSTORE
00000664: POP
00000665: PUSH1 0x16
00000667: SLOAD
00000668: PUSH1 0x17
0000066a: SLOAD
0000066b: PUSH1 0x01
0000066d: PUSH1 0xa0
0000066f: PUSH1 0x02
00000671: EXP
00000672: SUB
00000673: SWAP1
00000674: SWAP2
00000675: AND
00000676: SWAP1
00000677: PUSH4 0xa9059cbb
0000067c: SWAP1
0000067d: CALLER
0000067e: SWAP1
0000067f: PUSH2 0x0689
00000682: SWAP1
00000683: DUP8
00000684: SWAP1
00000685: PUSH2 0x0b6f
00000688: JUMP
00000689: JUMPDEST
0000068a: PUSH1 0x00
0000068c: PUSH1 0x40
0000068e: MLOAD
0000068f: PUSH1 0x20
00000691: ADD
00000692: MSTORE
00000693: PUSH1 0x40
00000695: MLOAD
00000696: DUP4
00000697: PUSH4 0xffffffff
0000069c: AND
0000069d: PUSH1 0xe0
0000069f: PUSH1 0x02
000006a1: EXP
000006a2: MUL
000006a3: DUP2
000006a4: MSTORE
000006a5: PUSH1 0x04
000006a7: ADD
000006a8: DUP1
000006a9: DUP4
000006aa: PUSH1 0x01
000006ac: PUSH1 0xa0
000006ae: PUSH1 0x02
000006b0: EXP
000006b1: SUB
000006b2: AND
000006b3: PUSH1 0x01
000006b5: PUSH1 0xa0
000006b7: PUSH1 0x02
000006b9: EXP
000006ba: SUB
000006bb: AND
000006bc: DUP2
000006bd: MSTORE
000006be: PUSH1 0x20
000006c0: ADD
000006c1: DUP3
000006c2: DUP2
000006c3: MSTORE
000006c4: PUSH1 0x20
000006c6: ADD
000006c7: SWAP3
000006c8: POP
000006c9: POP
000006ca: POP
000006cb: PUSH1 0x20
000006cd: PUSH1 0x40
000006cf: MLOAD
000006d0: DUP1
000006d1: DUP4
000006d2: SUB
000006d3: DUP2
000006d4: PUSH1 0x00
000006d6: DUP8
000006d7: DUP1
000006d8: EXTCODESIZE
000006d9: ISZERO
000006da: ISZERO
000006db: PUSH2 0x06e0
000006de: JUMPI
000006df: INVALID
000006e0: JUMPDEST
000006e1: PUSH2 0x02c6
000006e4: GAS
000006e5: SUB
000006e6: CALL
000006e7: ISZERO
000006e8: ISZERO
000006e9: PUSH2 0x06ee
000006ec: JUMPI
000006ed: INVALID
000006ee: JUMPDEST
000006ef: POP
000006f0: POP
000006f1: PUSH1 0x40
000006f3: MLOAD
000006f4: MLOAD
000006f5: ISZERO
000006f6: ISZERO
000006f7: SWAP1
000006f8: POP
000006f9: PUSH2 0x0702
000006fc: JUMPI
000006fd: PUSH1 0x00
000006ff: PUSH1 0x00
00000701: REVERT
00000702: JUMPDEST
00000703: PUSH1 0x40
00000705: MLOAD
00000706: PUSH1 0x01
00000708: PUSH1 0xa0
0000070a: PUSH1 0x02
0000070c: EXP
0000070d: SUB
0000070e: CALLER
0000070f: AND
00000710: SWAP1
00000711: DUP5
00000712: ISZERO
00000713: PUSH2 0x08fc
00000716: MUL
00000717: SWAP1
00000718: DUP6
00000719: SWAP1
0000071a: PUSH1 0x00
0000071c: DUP2
0000071d: DUP2
0000071e: DUP2
0000071f: DUP6
00000720: DUP9
00000721: DUP9
00000722: CALL
00000723: SWAP4
00000724: POP
00000725: POP
00000726: POP
00000727: POP
00000728: ISZERO
00000729: ISZERO
0000072a: PUSH2 0x0733
0000072d: JUMPI
0000072e: PUSH1 0x00
00000730: PUSH1 0x00
00000732: REVERT
00000733: JUMPDEST
00000734: PUSH1 0x16
00000736: DUP1
00000737: SLOAD
00000738: PUSH1 0xa8
0000073a: PUSH1 0x02
0000073c: EXP
0000073d: PUSH1 0xff
0000073f: MUL
00000740: NOT
00000741: AND
00000742: SWAP1
00000743: SSTORE
00000744: PUSH1 0x40
00000746: DUP1
00000747: MLOAD
00000748: PUSH1 0x01
0000074a: PUSH1 0xa0
0000074c: PUSH1 0x02
0000074e: EXP
0000074f: SUB
00000750: CALLER
00000751: AND
00000752: DUP2
00000753: MSTORE
00000754: PUSH1 0x20
00000756: DUP2
00000757: ADD
00000758: DUP6
00000759: SWAP1
0000075a: MSTORE
0000075b: DUP2
0000075c: MLOAD
0000075d: PUSH32 0x5bf2177ec82333d646ddac9ef13ddd7f57260091072d459309fe1a9ee531e2ca
0000077e: SWAP3
0000077f: SWAP2
00000780: DUP2
00000781: SWAP1
00000782: SUB
00000783: SWAP1
00000784: SWAP2
00000785: ADD
00000786: SWAP1
00000787: LOG1
00000788: JUMPDEST
00000789: JUMPDEST
0000078a: POP
0000078b: JUMPDEST
0000078c: POP
0000078d: POP
0000078e: POP
0000078f: JUMP
00000790: JUMPDEST
00000791: PUSH1 0x00
00000793: PUSH1 0x00
00000795: PUSH1 0x00
00000797: PUSH1 0x00
00000799: PUSH1 0x00
0000079b: PUSH1 0x00
0000079d: PUSH1 0x00
0000079f: PUSH1 0x00
000007a1: PUSH1 0x00
000007a3: PUSH1 0x00
000007a5: PUSH1 0x00
000007a7: PUSH1 0x00
000007a9: SWAP1
000007aa: SLOAD
000007ab: SWAP1
000007ac: PUSH2 0x0100
000007af: EXP
000007b0: SWAP1
000007b1: DIV
000007b2: PUSH1 0x01
000007b4: PUSH1 0xa0
000007b6: PUSH1 0x02
000007b8: EXP
000007b9: SUB
000007ba: AND
000007bb: PUSH1 0x01
000007bd: PUSH1 0xa0
000007bf: PUSH1 0x02
000007c1: EXP
000007c2: SUB
000007c3: AND
000007c4: CALLER
000007c5: PUSH1 0x01
000007c7: PUSH1 0xa0
000007c9: PUSH1 0x02
000007cb: EXP
000007cc: SUB
000007cd: AND
000007ce: EQ
000007cf: ISZERO
000007d0: PUSH2 0x0a40
000007d3: JUMPI
000007d4: PUSH1 0x16
000007d6: SLOAD
000007d7: PUSH1 0x00
000007d9: SWAP1
000007da: PUSH1 0xa0
000007dc: PUSH1 0x02
000007de: EXP
000007df: SWAP1
000007e0: DIV
000007e1: PUSH1 0xff
000007e3: AND
000007e4: ISZERO
000007e5: PUSH2 0x07ee
000007e8: JUMPI
000007e9: PUSH1 0x00
000007eb: PUSH1 0x00
000007ed: REVERT
000007ee: JUMPDEST
000007ef: PUSH1 0x15
000007f1: SLOAD
000007f2: PUSH1 0x40
000007f4: DUP1
000007f5: MLOAD
000007f6: PUSH1 0x00
000007f8: PUSH1 0x20
000007fa: SWAP2
000007fb: DUP3
000007fc: ADD
000007fd: DUP2
000007fe: SWAP1
000007ff: MSTORE
00000800: DUP3
00000801: MLOAD
00000802: PUSH1 0xe0
00000804: PUSH1 0x02
00000806: EXP
00000807: PUSH4 0xa620fcc7
0000080c: MUL
0000080d: DUP2
0000080e: MSTORE
0000080f: SWAP3
00000810: MLOAD
00000811: PUSH1 0x01
00000813: PUSH1 0xa0
00000815: PUSH1 0x02
00000817: EXP
00000818: SUB
00000819: SWAP1
0000081a: SWAP5
0000081b: AND
0000081c: SWAP4
0000081d: PUSH4 0xa620fcc7
00000822: SWAP4
00000823: PUSH1 0x04
00000825: DUP1
00000826: DUP3
00000827: ADD
00000828: SWAP5
00000829: SWAP4
0000082a: SWAP2
0000082b: DUP4
0000082c: SWAP1
0000082d: SUB
0000082e: ADD
0000082f: SWAP1
00000830: DUP3
00000831: SWAP1
00000832: DUP8
00000833: DUP1
00000834: EXTCODESIZE
00000835: ISZERO
00000836: ISZERO
00000837: PUSH2 0x083c
0000083a: JUMPI
0000083b: INVALID
0000083c: JUMPDEST
0000083d: PUSH2 0x02c6
00000840: GAS
00000841: SUB
00000842: CALL
00000843: ISZERO
00000844: ISZERO
00000845: PUSH2 0x084a
00000848: JUMPI
00000849: INVALID
0000084a: JUMPDEST
0000084b: POP
0000084c: POP
0000084d: PUSH1 0x40
0000084f: MLOAD
00000850: MLOAD
00000851: SWAP7
00000852: POP
00000853: POP
00000854: DUP6
00000855: DUP13
00000856: LT
00000857: PUSH2 0x0860
0000085a: JUMPI
0000085b: PUSH1 0x00
0000085d: PUSH1 0x00
0000085f: REVERT
00000860: JUMPDEST
00000861: PUSH1 0x0c
00000863: SLOAD
00000864: DUP7
00000865: SWAP1
00000866: LT
00000867: PUSH2 0x0870
0000086a: JUMPI
0000086b: PUSH1 0x00
0000086d: PUSH1 0x00
0000086f: REVERT
00000870: JUMPDEST
00000871: PUSH2 0x0879
00000874: DUP13
00000875: PUSH2 0x11b3
00000878: JUMP
00000879: JUMPDEST
0000087a: SWAP4
0000087b: SWAP15
0000087c: POP
0000087d: SWAP2
0000087e: SWAP13
0000087f: POP
00000880: SWAP11
00000881: POP
00000882: SWAP9
00000883: POP
00000884: SWAP7
00000885: POP
00000886: PUSH1 0x01
00000888: PUSH1 0xa0
0000088a: PUSH1 0x02
0000088c: EXP
0000088d: SUB
0000088e: DUP12
0000088f: AND
00000890: ISZERO
00000891: ISZERO
00000892: PUSH2 0x089b
00000895: JUMPI
00000896: PUSH1 0x00
00000898: PUSH1 0x00
0000089a: REVERT
0000089b: JUMPDEST
0000089c: PUSH1 0x00
0000089e: JUMPDEST
0000089f: PUSH1 0x01
000008a1: PUSH1 0xa0
000008a3: PUSH1 0x02
000008a5: EXP
000008a6: SUB
000008a7: DUP13
000008a8: AND
000008a9: PUSH1 0x00
000008ab: SWAP1
000008ac: DUP2
000008ad: MSTORE
000008ae: PUSH1 0x14
000008b0: PUSH1 0x20
000008b2: MSTORE
000008b3: PUSH1 0x40
000008b5: SWAP1
000008b6: KECCAK256
000008b7: PUSH1 0x02
000008b9: SWAP1
000008ba: DUP2
000008bb: ADD
000008bc: SLOAD
000008bd: PUSH1 0xff
000008bf: AND
000008c0: SWAP1
000008c1: DUP2
000008c2: GT
000008c3: ISZERO
000008c4: PUSH2 0x08c9
000008c7: JUMPI
000008c8: INVALID
000008c9: JUMPDEST
000008ca: EQ
000008cb: PUSH2 0x08d4
000008ce: JUMPI
000008cf: PUSH1 0x00
000008d1: PUSH1 0x00
000008d3: REVERT
000008d4: JUMPDEST
000008d5: PUSH1 0x0a
000008d7: SLOAD
000008d8: DUP11
000008d9: DUP2
000008da: ISZERO
000008db: ISZERO
000008dc: PUSH2 0x08e1
000008df: JUMPI
000008e0: INVALID
000008e1: JUMPDEST
000008e2: MOD
000008e3: SWAP5
000008e4: POP
000008e5: PUSH1 0x08
000008e7: SLOAD
000008e8: DUP11
000008e9: LT
000008ea: ISZERO
000008eb: PUSH2 0x08f8
000008ee: JUMPI
000008ef: PUSH1 0x08
000008f1: SLOAD
000008f2: SWAP4
000008f3: POP
000008f4: PUSH2 0x093a
000008f7: JUMP
000008f8: JUMPDEST
000008f9: PUSH1 0x09
000008fb: SLOAD
000008fc: DUP11
000008fd: GT
000008fe: ISZERO
000008ff: PUSH2 0x090c
00000902: JUMPI
00000903: PUSH1 0x09
00000905: SLOAD
00000906: SWAP4
00000907: POP
00000908: PUSH2 0x093a
0000090b: JUMP
0000090c: JUMPDEST
0000090d: DUP10
0000090e: SWAP4
0000090f: POP
00000910: DUP5
00000911: ISZERO
00000912: PUSH2 0x093a
00000915: JUMPI
00000916: PUSH2 0x091f
00000919: DUP11
0000091a: DUP7
0000091b: PUSH2 0x119a
0000091e: JUMP
0000091f: JUMPDEST
00000920: SWAP4
00000921: POP
00000922: PUSH1 0x01
00000924: SLOAD
00000925: DUP5
00000926: LT
00000927: ISZERO
00000928: PUSH2 0x093a
0000092b: JUMPI
0000092c: PUSH2 0x0937
0000092f: DUP5
00000930: PUSH1 0x0a
00000932: SLOAD
00000933: PUSH2 0x0d47
00000936: JUMP
00000937: JUMPDEST
00000938: SWAP4
00000939: POP
0000093a: JUMPDEST
0000093b: JUMPDEST
0000093c: JUMPDEST
0000093d: JUMPDEST
0000093e: PUSH1 0x00
00000940: DUP5
00000941: DUP2
00000942: MSTORE
00000943: PUSH1 0x07
00000945: PUSH1 0x20
00000947: MSTORE
00000948: PUSH1 0x40
0000094a: SWAP1
0000094b: KECCAK256
0000094c: PUSH1 0x01
0000094e: DUP2
0000094f: ADD
00000950: SLOAD
00000951: SWAP1
00000952: SWAP4
00000953: POP
00000954: PUSH3 0x010000
00000958: SWAP1
00000959: DIV
0000095a: PUSH1 0xff
0000095c: AND
0000095d: ISZERO
0000095e: ISZERO
0000095f: PUSH2 0x0968
00000962: JUMPI
00000963: PUSH1 0x00
00000965: PUSH1 0x00
00000967: REVERT
00000968: JUMPDEST
00000969: PUSH2 0x0973
0000096c: DUP10
0000096d: DUP10
0000096e: DUP10
0000096f: PUSH2 0x127f
00000972: JUMP
00000973: JUMPDEST
00000974: PUSH1 0x00
00000976: DUP6
00000977: DUP2
00000978: MSTORE
00000979: PUSH1 0x07
0000097b: PUSH1 0x20
0000097d: MSTORE
0000097e: PUSH1 0x40
00000980: SWAP1
00000981: KECCAK256
00000982: SLOAD
00000983: SWAP1
00000984: SWAP3
00000985: POP
00000986: PUSH2 0x098f
00000989: SWAP1
0000098a: DUP4
0000098b: PUSH2 0x0d47
0000098e: JUMP
0000098f: JUMPDEST
00000990: PUSH1 0x00
00000992: DUP6
00000993: DUP2
00000994: MSTORE
00000995: PUSH1 0x07
00000997: PUSH1 0x20
00000999: MSTORE
0000099a: PUSH1 0x40
0000099c: SWAP1
0000099d: KECCAK256
0000099e: SSTORE
0000099f: PUSH1 0x0d
000009a1: SLOAD
000009a2: PUSH2 0x09ab
000009a5: SWAP1
000009a6: DUP4
000009a7: PUSH2 0x0d47
000009aa: JUMP
000009ab: JUMPDEST
000009ac: PUSH1 0x0d
000009ae: SSTORE
000009af: PUSH1 0x0c
000009b1: DUP1
000009b2: SLOAD
000009b3: PUSH1 0x01
000009b5: SWAP1
000009b6: DUP2
000009b7: ADD
000009b8: SWAP1
000009b9: SWAP2
000009ba: SSTORE
000009bb: PUSH1 0x01
000009bd: PUSH1 0xa0
000009bf: PUSH1 0x02
000009c1: EXP
000009c2: SUB
000009c3: DUP13
000009c4: AND
000009c5: PUSH1 0x00
000009c7: SWAP1
000009c8: DUP2
000009c9: MSTORE
000009ca: PUSH1 0x14
000009cc: PUSH1 0x20
000009ce: MSTORE
000009cf: PUSH1 0x40
000009d1: SWAP1
000009d2: KECCAK256
000009d3: DUP6
000009d4: DUP2
000009d5: SSTORE
000009d6: DUP1
000009d7: DUP3
000009d8: ADD
000009d9: DUP5
000009da: SWAP1
000009db: SSTORE
000009dc: PUSH1 0x02
000009de: ADD
000009df: DUP1
000009e0: SLOAD
000009e1: PUSH1 0xff
000009e3: NOT
000009e4: AND
000009e5: DUP3
000009e6: DUP1
000009e7: JUMPDEST
000009e8: MUL
000009e9: OR
000009ea: SWAP1
000009eb: SSTORE
000009ec: POP
000009ed: PUSH1 0x40
000009ef: DUP1
000009f0: MLOAD
000009f1: PUSH1 0x01
000009f3: PUSH1 0xa0
000009f5: PUSH1 0x02
000009f7: EXP
000009f8: SUB
000009f9: DUP14
000009fa: AND
000009fb: DUP2
000009fc: MSTORE
000009fd: PUSH1 0x20
000009ff: DUP2
00000a00: ADD
00000a01: DUP13
00000a02: SWAP1
00000a03: MSTORE
00000a04: DUP1
00000a05: DUP3
00000a06: ADD
00000a07: DUP7
00000a08: SWAP1
00000a09: MSTORE
00000a0a: PUSH1 0x60
00000a0c: DUP2
00000a0d: ADD
00000a0e: DUP5
00000a0f: SWAP1
00000a10: MSTORE
00000a11: SWAP1
00000a12: MLOAD
00000a13: PUSH32 0x9ec97c382d56b4d35b4d7057460ea7f57ff800af60a182833c33dc3e9b65726e
00000a34: SWAP2
00000a35: DUP2
00000a36: SWAP1
00000a37: SUB
00000a38: PUSH1 0x80
00000a3a: ADD
00000a3b: SWAP1
00000a3c: LOG1
00000a3d: JUMPDEST
00000a3e: JUMPDEST
00000a3f: POP
00000a40: JUMPDEST
00000a41: JUMPDEST
00000a42: POP
00000a43: POP
00000a44: POP
00000a45: POP
00000a46: POP
00000a47: POP
00000a48: POP
00000a49: POP
00000a4a: POP
00000a4b: POP
00000a4c: POP
00000a4d: JUMP
00000a4e: JUMPDEST
00000a4f: PUSH1 0x16
00000a51: SLOAD
00000a52: PUSH1 0x01
00000a54: PUSH1 0xa0
00000a56: PUSH1 0x02
00000a58: EXP
00000a59: SUB
00000a5a: AND
00000a5b: DUP2
00000a5c: JUMP
00000a5d: JUMPDEST
00000a5e: PUSH1 0x00
00000a60: SLOAD
00000a61: CALLER
00000a62: PUSH1 0x01
00000a64: PUSH1 0xa0
00000a66: PUSH1 0x02
00000a68: EXP
00000a69: SUB
00000a6a: SWAP1
00000a6b: DUP2
00000a6c: AND
00000a6d: SWAP2
00000a6e: AND
00000a6f: EQ
00000a70: ISZERO
00000a71: PUSH2 0x0a9f
00000a74: JUMPI
00000a75: PUSH1 0x01
00000a77: PUSH1 0xa0
00000a79: PUSH1 0x02
00000a7b: EXP
00000a7c: SUB
00000a7d: DUP2
00000a7e: AND
00000a7f: ISZERO
00000a80: PUSH2 0x0a9f
00000a83: JUMPI
00000a84: PUSH1 0x00
00000a86: DUP1
00000a87: SLOAD
00000a88: PUSH1 0x01
00000a8a: PUSH1 0xa0
00000a8c: PUSH1 0x02
00000a8e: EXP
00000a8f: SUB
00000a90: NOT
00000a91: AND
00000a92: PUSH1 0x01
00000a94: PUSH1 0xa0
00000a96: PUSH1 0x02
00000a98: EXP
00000a99: SUB
00000a9a: DUP4
00000a9b: AND
00000a9c: OR
00000a9d: SWAP1
00000a9e: SSTORE
00000a9f: JUMPDEST
00000aa0: JUMPDEST
00000aa1: JUMPDEST
00000aa2: JUMPDEST
00000aa3: POP
00000aa4: JUMP
00000aa5: JUMPDEST
00000aa6: PUSH1 0x16
00000aa8: SLOAD
00000aa9: PUSH1 0x00
00000aab: SWAP1
00000aac: DUP2
00000aad: SWAP1
00000aae: DUP2
00000aaf: SWAP1
00000ab0: DUP2
00000ab1: SWAP1
00000ab2: PUSH1 0x01
00000ab4: SWAP1
00000ab5: PUSH1 0xa0
00000ab7: PUSH1 0x02
00000ab9: EXP
00000aba: SWAP1
00000abb: DIV
00000abc: PUSH1 0xff
00000abe: AND
00000abf: ISZERO
00000ac0: ISZERO
00000ac1: DUP2
00000ac2: EQ
00000ac3: PUSH2 0x0acc
00000ac6: JUMPI
00000ac7: PUSH1 0x00
00000ac9: PUSH1 0x00
00000acb: REVERT
00000acc: JUMPDEST
00000acd: PUSH1 0x01
00000acf: PUSH1 0xa0
00000ad1: PUSH1 0x02
00000ad3: EXP
00000ad4: SUB
00000ad5: DUP7
00000ad6: AND
00000ad7: PUSH1 0x00
00000ad9: SWAP1
00000ada: DUP2
00000adb: MSTORE
00000adc: PUSH1 0x14
00000ade: PUSH1 0x20
00000ae0: SWAP1
00000ae1: DUP2
00000ae2: MSTORE
00000ae3: PUSH1 0x40
00000ae5: DUP1
00000ae6: DUP4
00000ae7: KECCAK256
00000ae8: DUP1
00000ae9: SLOAD
00000aea: DUP5
00000aeb: MSTORE
00000aec: PUSH1 0x07
00000aee: SWAP1
00000aef: SWAP3
00000af0: MSTORE
00000af1: SWAP1
00000af2: SWAP2
00000af3: KECCAK256
00000af4: PUSH1 0x01
00000af6: SWAP1
00000af7: DUP2
00000af8: ADD
00000af9: SLOAD
00000afa: SWAP1
00000afb: DUP3
00000afc: ADD
00000afd: SLOAD
00000afe: SWAP2
00000aff: SWAP5
00000b00: POP
00000b01: PUSH2 0x0b13
00000b04: SWAP2
00000b05: PUSH2 0x0100
00000b08: SWAP1
00000b09: SWAP2
00000b0a: DIV
00000b0b: PUSH1 0xff
00000b0d: AND
00000b0e: SWAP1
00000b0f: PUSH2 0x10f9
00000b12: JUMP
00000b13: JUMPDEST
00000b14: PUSH1 0x02
00000b16: DUP5
00000b17: ADD
00000b18: SLOAD
00000b19: SWAP1
00000b1a: SWAP6
00000b1b: POP
00000b1c: PUSH1 0xff
00000b1e: AND
00000b1f: SWAP4
00000b20: POP
00000b21: DUP5
00000b22: SWAP2
00000b23: POP
00000b24: JUMPDEST
00000b25: JUMPDEST
00000b26: POP
00000b27: POP
00000b28: POP
00000b29: SWAP2
00000b2a: POP
00000b2b: SWAP2
00000b2c: JUMP
00000b2d: JUMPDEST
00000b2e: PUSH1 0x0e
00000b30: SLOAD
00000b31: DUP2
00000b32: JUMP
00000b33: JUMPDEST
00000b34: PUSH1 0x15
00000b36: SLOAD
00000b37: PUSH1 0x01
00000b39: PUSH1 0xa0
00000b3b: PUSH1 0x02
00000b3d: EXP
00000b3e: SUB
00000b3f: AND
00000b40: DUP2
00000b41: JUMP
00000b42: JUMPDEST
00000b43: PUSH1 0x01
00000b45: SLOAD
00000b46: DUP2
00000b47: JUMP
00000b48: JUMPDEST
00000b49: PUSH1 0x00
00000b4b: SLOAD
00000b4c: PUSH1 0x01
00000b4e: PUSH1 0xa0
00000b50: PUSH1 0x02
00000b52: EXP
00000b53: SUB
00000b54: AND
00000b55: DUP2
00000b56: JUMP
00000b57: JUMPDEST
00000b58: PUSH1 0x0d
00000b5a: SLOAD
00000b5b: DUP2
00000b5c: JUMP
00000b5d: JUMPDEST
00000b5e: PUSH1 0x0f
00000b60: SLOAD
00000b61: DUP2
00000b62: JUMP
00000b63: JUMPDEST
00000b64: PUSH1 0x17
00000b66: SLOAD
00000b67: DUP2
00000b68: JUMP
00000b69: JUMPDEST
00000b6a: PUSH1 0x02
00000b6c: SLOAD
00000b6d: DUP2
00000b6e: JUMP
00000b6f: JUMPDEST
00000b70: PUSH1 0x00
00000b72: DUP3
00000b73: DUP3
00000b74: MUL
00000b75: PUSH2 0x0b93
00000b78: DUP5
00000b79: ISZERO
00000b7a: DUP1
00000b7b: PUSH2 0x0b8e
00000b7e: JUMPI
00000b7f: POP
00000b80: DUP4
00000b81: DUP6
00000b82: DUP4
00000b83: DUP2
00000b84: ISZERO
00000b85: ISZERO
00000b86: PUSH2 0x0b8b
00000b89: JUMPI
00000b8a: INVALID
00000b8b: JUMPDEST
00000b8c: DIV
00000b8d: EQ
00000b8e: JUMPDEST
00000b8f: PUSH2 0x130d
00000b92: JUMP
00000b93: JUMPDEST
00000b94: DUP1
00000b95: SWAP2
00000b96: POP
00000b97: JUMPDEST
00000b98: POP
00000b99: SWAP3
00000b9a: SWAP2
00000b9b: POP
00000b9c: POP
00000b9d: JUMP
00000b9e: JUMPDEST
00000b9f: PUSH2 0x0ba6
00000ba2: PUSH2 0x1396
00000ba5: JUMP
00000ba6: JUMPDEST
00000ba7: PUSH1 0x00
00000ba9: PUSH1 0x00
00000bab: PUSH2 0x0bb5
00000bae: PUSH1 0x03
00000bb0: SLOAD
00000bb1: PUSH2 0x131e
00000bb4: JUMP
00000bb5: JUMPDEST
00000bb6: PUSH1 0xc0
00000bb8: DUP6
00000bb9: ADD
00000bba: MSTORE
00000bbb: PUSH1 0xa0
00000bbd: DUP5
00000bbe: ADD
00000bbf: MSTORE
00000bc0: PUSH1 0x04
00000bc2: SLOAD
00000bc3: PUSH2 0x0bcb
00000bc6: SWAP1
00000bc7: PUSH2 0x131e
00000bca: JUMP
00000bcb: JUMPDEST
00000bcc: PUSH1 0xe0
00000bce: DUP6
00000bcf: ADD
00000bd0: DUP2
00000bd1: SWAP1
00000bd2: MSTORE
00000bd3: PUSH1 0x80
00000bd5: DUP6
00000bd6: ADD
00000bd7: SWAP2
00000bd8: SWAP1
00000bd9: SWAP2
00000bda: MSTORE
00000bdb: PUSH1 0x01
00000bdd: SLOAD
00000bde: PUSH2 0x0be7
00000be1: SWAP2
00000be2: SWAP1
00000be3: PUSH2 0x119a
00000be6: JUMP
00000be7: JUMPDEST
00000be8: SWAP2
00000be9: POP
00000bea: PUSH2 0x0c0b
00000bed: PUSH1 0x01
00000bef: SLOAD
00000bf0: PUSH1 0x04
00000bf2: PUSH2 0x0bfc
00000bf5: DUP6
00000bf6: PUSH1 0x05
00000bf8: PUSH2 0x0b6f
00000bfb: JUMP
00000bfc: JUMPDEST
00000bfd: DUP2
00000bfe: ISZERO
00000bff: ISZERO
00000c00: PUSH2 0x0c05
00000c03: JUMPI
00000c04: INVALID
00000c05: JUMPDEST
00000c06: DIV
00000c07: PUSH2 0x0d47
00000c0a: JUMP
00000c0b: JUMPDEST
00000c0c: PUSH2 0x0100
00000c0f: DUP5
00000c10: ADD
00000c11: MSTORE
00000c12: PUSH1 0x01
00000c14: SLOAD
00000c15: PUSH2 0x0c34
00000c18: SWAP1
00000c19: PUSH1 0x03
00000c1b: PUSH2 0x0bfc
00000c1e: DUP6
00000c1f: PUSH1 0x04
00000c21: PUSH2 0x0b6f
00000c24: JUMP
00000c25: JUMPDEST
00000c26: DUP2
00000c27: ISZERO
00000c28: ISZERO
00000c29: PUSH2 0x0c05
00000c2c: JUMPI
00000c2d: INVALID
00000c2e: JUMPDEST
00000c2f: DIV
00000c30: PUSH2 0x0d47
00000c33: JUMP
00000c34: JUMPDEST
00000c35: PUSH2 0x0120
00000c38: DUP5
00000c39: ADD
00000c3a: MSTORE
00000c3b: PUSH1 0x01
00000c3d: SLOAD
00000c3e: PUSH2 0x0c5d
00000c41: SWAP1
00000c42: PUSH1 0x02
00000c44: PUSH2 0x0bfc
00000c47: DUP6
00000c48: PUSH1 0x03
00000c4a: PUSH2 0x0b6f
00000c4d: JUMP
00000c4e: JUMPDEST
00000c4f: DUP2
00000c50: ISZERO
00000c51: ISZERO
00000c52: PUSH2 0x0c05
00000c55: JUMPI
00000c56: INVALID
00000c57: JUMPDEST
00000c58: DIV
00000c59: PUSH2 0x0d47
00000c5c: JUMP
00000c5d: JUMPDEST
00000c5e: PUSH2 0x0140
00000c61: DUP5
00000c62: ADD
00000c63: MSTORE
00000c64: PUSH1 0x01
00000c66: SLOAD
00000c67: PUSH2 0x0c7a
00000c6a: SWAP1
00000c6b: PUSH2 0x0c75
00000c6e: DUP5
00000c6f: PUSH1 0x02
00000c71: PUSH2 0x0b6f
00000c74: JUMP
00000c75: JUMPDEST
00000c76: PUSH2 0x0d47
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: PUSH2 0x0160
00000c7e: DUP5
00000c7f: ADD
00000c80: MSTORE
00000c81: PUSH1 0x01
00000c83: SLOAD
00000c84: PUSH1 0x80
00000c86: DUP5
00000c87: ADD
00000c88: MLOAD
00000c89: PUSH2 0x0c92
00000c8c: SWAP2
00000c8d: SWAP1
00000c8e: PUSH2 0x119a
00000c91: JUMP
00000c92: JUMPDEST
00000c93: SWAP2
00000c94: POP
00000c95: PUSH1 0x04
00000c97: PUSH2 0x0ca1
00000c9a: DUP4
00000c9b: PUSH1 0x05
00000c9d: PUSH2 0x0b6f
00000ca0: JUMP
00000ca1: JUMPDEST
00000ca2: DUP2
00000ca3: ISZERO
00000ca4: ISZERO
00000ca5: PUSH2 0x0caa
00000ca8: JUMPI
00000ca9: INVALID
00000caa: JUMPDEST
00000cab: DIV
00000cac: SWAP1
00000cad: POP
00000cae: PUSH1 0x01
00000cb0: SLOAD
00000cb1: DUP2
00000cb2: LT
00000cb3: ISZERO
00000cb4: PUSH2 0x0d3e
00000cb7: JUMPI
00000cb8: PUSH1 0x01
00000cba: SLOAD
00000cbb: DUP2
00000cbc: SWAP1
00000cbd: SUB
00000cbe: PUSH1 0x60
00000cc0: DUP5
00000cc1: ADD
00000cc2: MSTORE
00000cc3: PUSH1 0x03
00000cc5: PUSH2 0x0ccf
00000cc8: DUP4
00000cc9: PUSH1 0x04
00000ccb: PUSH2 0x0b6f
00000cce: JUMP
00000ccf: JUMPDEST
00000cd0: DUP2
00000cd1: ISZERO
00000cd2: ISZERO
00000cd3: PUSH2 0x0cd8
00000cd6: JUMPI
00000cd7: INVALID
00000cd8: JUMPDEST
00000cd9: DIV
00000cda: SWAP1
00000cdb: POP
00000cdc: PUSH1 0x01
00000cde: SLOAD
00000cdf: DUP2
00000ce0: LT
00000ce1: ISZERO
00000ce2: PUSH2 0x0d3e
00000ce5: JUMPI
00000ce6: PUSH1 0x01
00000ce8: SLOAD
00000ce9: DUP2
00000cea: SWAP1
00000ceb: SUB
00000cec: PUSH1 0x40
00000cee: DUP5
00000cef: ADD
00000cf0: MSTORE
00000cf1: PUSH1 0x02
00000cf3: PUSH2 0x0cfd
00000cf6: DUP4
00000cf7: PUSH1 0x03
00000cf9: PUSH2 0x0b6f
00000cfc: JUMP
00000cfd: JUMPDEST
00000cfe: DUP2
00000cff: ISZERO
00000d00: ISZERO
00000d01: PUSH2 0x0d06
00000d04: JUMPI
00000d05: INVALID
00000d06: JUMPDEST
00000d07: DIV
00000d08: SWAP1
00000d09: POP
00000d0a: PUSH1 0x01
00000d0c: SLOAD
00000d0d: DUP2
00000d0e: LT
00000d0f: ISZERO
00000d10: PUSH2 0x0d3e
00000d13: JUMPI
00000d14: PUSH1 0x01
00000d16: SLOAD
00000d17: DUP2
00000d18: SWAP1
00000d19: SUB
00000d1a: PUSH1 0x20
00000d1c: DUP5
00000d1d: ADD
00000d1e: MSTORE
00000d1f: PUSH2 0x0d29
00000d22: DUP3
00000d23: PUSH1 0x02
00000d25: PUSH2 0x0b6f
00000d28: JUMP
00000d29: JUMPDEST
00000d2a: SWAP1
00000d2b: POP
00000d2c: PUSH1 0x01
00000d2e: SLOAD
00000d2f: DUP2
00000d30: LT
00000d31: ISZERO
00000d32: PUSH2 0x0d3e
00000d35: JUMPI
00000d36: PUSH1 0x01
00000d38: SLOAD
00000d39: DUP2
00000d3a: SWAP1
00000d3b: SUB
00000d3c: DUP4
00000d3d: MSTORE
00000d3e: JUMPDEST
00000d3f: JUMPDEST
00000d40: JUMPDEST
00000d41: JUMPDEST
00000d42: JUMPDEST
00000d43: POP
00000d44: POP
00000d45: SWAP1
00000d46: JUMP
00000d47: JUMPDEST
00000d48: PUSH1 0x00
00000d4a: DUP3
00000d4b: DUP3
00000d4c: ADD
00000d4d: PUSH2 0x0b93
00000d50: DUP5
00000d51: DUP3
00000d52: LT
00000d53: DUP1
00000d54: ISZERO
00000d55: SWAP1
00000d56: PUSH2 0x0b8e
00000d59: JUMPI
00000d5a: POP
00000d5b: DUP4
00000d5c: DUP3
00000d5d: LT
00000d5e: ISZERO
00000d5f: JUMPDEST
00000d60: PUSH2 0x130d
00000d63: JUMP
00000d64: JUMPDEST
00000d65: DUP1
00000d66: SWAP2
00000d67: POP
00000d68: JUMPDEST
00000d69: POP
00000d6a: SWAP3
00000d6b: SWAP2
00000d6c: POP
00000d6d: POP
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: PUSH1 0x00
00000d72: PUSH1 0x00
00000d74: PUSH1 0x00
00000d76: PUSH1 0x01
00000d78: SLOAD
00000d79: DUP7
00000d7a: GT
00000d7b: ISZERO
00000d7c: DUP1
00000d7d: ISZERO
00000d7e: PUSH2 0x0d91
00000d81: JUMPI
00000d82: POP
00000d83: PUSH1 0x01
00000d85: SLOAD
00000d86: DUP6
00000d87: LT
00000d88: ISZERO
00000d89: DUP1
00000d8a: PUSH2 0x0d91
00000d8d: JUMPI
00000d8e: POP
00000d8f: DUP5
00000d90: ISZERO
00000d91: JUMPDEST
00000d92: JUMPDEST
00000d93: ISZERO
00000d94: PUSH2 0x0dbd
00000d97: JUMPI
00000d98: POP
00000d99: POP
00000d9a: POP
00000d9b: PUSH1 0x00
00000d9d: DUP4
00000d9e: DUP2
00000d9f: MSTORE
00000da0: PUSH1 0x07
00000da2: PUSH1 0x20
00000da4: MSTORE
00000da5: PUSH1 0x40
00000da7: SWAP1
00000da8: KECCAK256
00000da9: SLOAD
00000daa: PUSH1 0x13
00000dac: DUP1
00000dad: SLOAD
00000dae: SWAP1
00000daf: SWAP2
00000db0: ADD
00000db1: SWAP1
00000db2: SSTORE
00000db3: PUSH1 0x01
00000db5: PUSH1 0x06
00000db7: PUSH1 0x04
00000db9: PUSH2 0x0f1a
00000dbc: JUMP
00000dbd: JUMPDEST
00000dbe: DUP4
00000dbf: ISZERO
00000dc0: PUSH2 0x0de7
00000dc3: JUMPI
00000dc4: POP
00000dc5: POP
00000dc6: POP
00000dc7: PUSH1 0x00
00000dc9: DUP4
00000dca: DUP2
00000dcb: MSTORE
00000dcc: PUSH1 0x07
00000dce: PUSH1 0x20
00000dd0: MSTORE
00000dd1: PUSH1 0x40
00000dd3: DUP2
00000dd4: KECCAK256
00000dd5: SLOAD
00000dd6: PUSH1 0x13
00000dd8: DUP1
00000dd9: SLOAD
00000dda: SWAP1
00000ddb: SWAP2
00000ddc: ADD
00000ddd: SWAP1
00000dde: SSTORE
00000ddf: PUSH1 0x06
00000de1: PUSH1 0x04
00000de3: PUSH2 0x0f1a
00000de6: JUMP
00000de7: JUMPDEST
00000de8: DUP7
00000de9: MLOAD
00000dea: DUP7
00000deb: LT
00000dec: DUP1
00000ded: ISZERO
00000dee: SWAP1
00000def: PUSH2 0x0dfd
00000df2: JUMPI
00000df3: POP
00000df4: DUP7
00000df5: PUSH2 0x0160
00000df8: ADD
00000df9: MLOAD
00000dfa: DUP7
00000dfb: GT
00000dfc: ISZERO
00000dfd: JUMPDEST
00000dfe: ISZERO
00000dff: PUSH2 0x0f1a
00000e02: JUMPI
00000e03: DUP7
00000e04: PUSH1 0x20
00000e06: ADD
00000e07: MLOAD
00000e08: DUP7
00000e09: LT
00000e0a: ISZERO
00000e0b: DUP1
00000e0c: ISZERO
00000e0d: PUSH2 0x0e1b
00000e10: JUMPI
00000e11: POP
00000e12: DUP7
00000e13: PUSH2 0x0140
00000e16: ADD
00000e17: MLOAD
00000e18: DUP7
00000e19: GT
00000e1a: ISZERO
00000e1b: JUMPDEST
00000e1c: ISZERO
00000e1d: PUSH2 0x0f15
00000e20: JUMPI
00000e21: DUP7
00000e22: PUSH1 0x40
00000e24: ADD
00000e25: MLOAD
00000e26: DUP7
00000e27: LT
00000e28: ISZERO
00000e29: DUP1
00000e2a: ISZERO
00000e2b: PUSH2 0x0e39
00000e2e: JUMPI
00000e2f: POP
00000e30: DUP7
00000e31: PUSH2 0x0120
00000e34: ADD
00000e35: MLOAD
00000e36: DUP7
00000e37: GT
00000e38: ISZERO
00000e39: JUMPDEST
00000e3a: ISZERO
00000e3b: PUSH2 0x0f0b
00000e3e: JUMPI
00000e3f: DUP7
00000e40: PUSH1 0x60
00000e42: ADD
00000e43: MLOAD
00000e44: DUP7
00000e45: LT
00000e46: ISZERO
00000e47: DUP1
00000e48: ISZERO
00000e49: PUSH2 0x0e57
00000e4c: JUMPI
00000e4d: POP
00000e4e: DUP7
00000e4f: PUSH2 0x0100
00000e52: ADD
00000e53: MLOAD
00000e54: DUP7
00000e55: GT
00000e56: ISZERO
00000e57: JUMPDEST
00000e58: ISZERO
00000e59: PUSH2 0x0f01
00000e5c: JUMPI
00000e5d: DUP7
00000e5e: PUSH1 0x80
00000e60: ADD
00000e61: MLOAD
00000e62: DUP7
00000e63: LT
00000e64: ISZERO
00000e65: DUP1
00000e66: ISZERO
00000e67: PUSH2 0x0e74
00000e6a: JUMPI
00000e6b: POP
00000e6c: DUP7
00000e6d: PUSH1 0xe0
00000e6f: ADD
00000e70: MLOAD
00000e71: DUP7
00000e72: GT
00000e73: ISZERO
00000e74: JUMPDEST
00000e75: ISZERO
00000e76: PUSH2 0x0edd
00000e79: JUMPI
00000e7a: DUP7
00000e7b: PUSH1 0xa0
00000e7d: ADD
00000e7e: MLOAD
00000e7f: DUP7
00000e80: LT
00000e81: ISZERO
00000e82: DUP1
00000e83: ISZERO
00000e84: PUSH2 0x0e91
00000e87: JUMPI
00000e88: POP
00000e89: DUP7
00000e8a: PUSH1 0xc0
00000e8c: ADD
00000e8d: MLOAD
00000e8e: DUP7
00000e8f: GT
00000e90: ISZERO
00000e91: JUMPDEST
00000e92: ISZERO
00000e93: PUSH2 0x0eb9
00000e96: JUMPI
00000e97: POP
00000e98: POP
00000e99: PUSH1 0x00
00000e9b: DUP5
00000e9c: DUP2
00000e9d: MSTORE
00000e9e: PUSH1 0x07
00000ea0: PUSH1 0x20
00000ea2: MSTORE
00000ea3: PUSH1 0x40
00000ea5: SWAP1
00000ea6: KECCAK256
00000ea7: SLOAD
00000ea8: PUSH1 0x12
00000eaa: DUP1
00000eab: SLOAD
00000eac: SWAP1
00000ead: SWAP2
00000eae: ADD
00000eaf: SWAP1
00000eb0: SSTORE
00000eb1: PUSH1 0x06
00000eb3: PUSH1 0x03
00000eb5: PUSH2 0x0ed8
00000eb8: JUMP
00000eb9: JUMPDEST
00000eba: POP
00000ebb: POP
00000ebc: PUSH1 0x00
00000ebe: DUP5
00000ebf: DUP2
00000ec0: MSTORE
00000ec1: PUSH1 0x07
00000ec3: PUSH1 0x20
00000ec5: MSTORE
00000ec6: PUSH1 0x40
00000ec8: SWAP1
00000ec9: KECCAK256
00000eca: SLOAD
00000ecb: PUSH1 0x11
00000ecd: DUP1
00000ece: SLOAD
00000ecf: SWAP1
00000ed0: SWAP2
00000ed1: ADD
00000ed2: SWAP1
00000ed3: SSTORE
00000ed4: PUSH1 0x05
00000ed6: PUSH1 0x02
00000ed8: JUMPDEST
00000ed9: PUSH2 0x0efc
00000edc: JUMP
00000edd: JUMPDEST
00000ede: POP
00000edf: POP
00000ee0: PUSH1 0x00
00000ee2: DUP5
00000ee3: DUP2
00000ee4: MSTORE
00000ee5: PUSH1 0x07
00000ee7: PUSH1 0x20
00000ee9: MSTORE
00000eea: PUSH1 0x40
00000eec: SWAP1
00000eed: KECCAK256
00000eee: SLOAD
00000eef: PUSH1 0x10
00000ef1: DUP1
00000ef2: SLOAD
00000ef3: SWAP1
00000ef4: SWAP2
00000ef5: ADD
00000ef6: SWAP1
00000ef7: SSTORE
00000ef8: PUSH1 0x04
00000efa: PUSH1 0x01
00000efc: JUMPDEST
00000efd: PUSH2 0x0f06
00000f00: JUMP
00000f01: JUMPDEST
00000f02: PUSH1 0x03
00000f04: SWAP2
00000f05: POP
00000f06: JUMPDEST
00000f07: PUSH2 0x0f10
00000f0a: JUMP
00000f0b: JUMPDEST
00000f0c: PUSH1 0x02
00000f0e: SWAP2
00000f0f: POP
00000f10: JUMPDEST
00000f11: PUSH2 0x0f1a
00000f14: JUMP
00000f15: JUMPDEST
00000f16: PUSH1 0x01
00000f18: SWAP2
00000f19: POP
00000f1a: JUMPDEST
00000f1b: JUMPDEST
00000f1c: JUMPDEST
00000f1d: JUMPDEST
00000f1e: PUSH1 0x00
00000f20: DUP7
00000f21: DUP2
00000f22: MSTORE
00000f23: PUSH1 0x07
00000f25: PUSH1 0x20
00000f27: MSTORE
00000f28: PUSH1 0x40
00000f2a: SWAP1
00000f2b: KECCAK256
00000f2c: PUSH1 0x01
00000f2e: ADD
00000f2f: DUP1
00000f30: SLOAD
00000f31: PUSH1 0xff
00000f33: DUP4
00000f34: DUP2
00000f35: AND
00000f36: PUSH2 0x0100
00000f39: MUL
00000f3a: PUSH2 0xff00
00000f3d: NOT
00000f3e: SWAP2
00000f3f: DUP7
00000f40: AND
00000f41: PUSH1 0xff
00000f43: NOT
00000f44: SWAP1
00000f45: SWAP4
00000f46: AND
00000f47: SWAP3
00000f48: SWAP1
00000f49: SWAP3
00000f4a: OR
00000f4b: AND
00000f4c: OR
00000f4d: SWAP1
00000f4e: SSTORE
00000f4f: JUMPDEST
00000f50: POP
00000f51: POP
00000f52: SWAP5
00000f53: SWAP4
00000f54: POP
00000f55: POP
00000f56: POP
00000f57: POP
00000f58: JUMP
00000f59: JUMPDEST
00000f5a: PUSH1 0x00
00000f5c: PUSH1 0x00
00000f5e: PUSH1 0x00
00000f60: PUSH1 0x00
00000f62: PUSH1 0x00
00000f64: PUSH1 0x00
00000f66: PUSH2 0x0f73
00000f69: PUSH1 0x12
00000f6b: SLOAD
00000f6c: PUSH1 0x13
00000f6e: SLOAD
00000f6f: PUSH2 0x0d47
00000f72: JUMP
00000f73: JUMPDEST
00000f74: PUSH1 0x12
00000f76: DUP2
00000f77: SWAP1
00000f78: SSTORE
00000f79: PUSH1 0x11
00000f7b: SLOAD
00000f7c: PUSH2 0x0f84
00000f7f: SWAP2
00000f80: PUSH2 0x0d47
00000f83: JUMP
00000f84: JUMPDEST
00000f85: PUSH1 0x11
00000f87: DUP2
00000f88: SWAP1
00000f89: SSTORE
00000f8a: PUSH1 0x10
00000f8c: SLOAD
00000f8d: PUSH2 0x0f95
00000f90: SWAP2
00000f91: PUSH2 0x0d47
00000f94: JUMP
00000f95: JUMPDEST
00000f96: PUSH1 0x10
00000f98: DUP2
00000f99: SWAP1
00000f9a: SSTORE
00000f9b: ISZERO
00000f9c: ISZERO
00000f9d: PUSH2 0x0fad
00000fa0: JUMPI
00000fa1: PUSH1 0x0e
00000fa3: SLOAD
00000fa4: SWAP5
00000fa5: POP
00000fa6: DUP5
00000fa7: SWAP6
00000fa8: POP
00000fa9: PUSH2 0x10f1
00000fac: JUMP
00000fad: JUMPDEST
00000fae: PUSH1 0x0e
00000fb0: SLOAD
00000fb1: PUSH1 0x0a
00000fb3: SWAP1
00000fb4: JUMPDEST
00000fb5: DIV
00000fb6: SWAP4
00000fb7: POP
00000fb8: PUSH2 0x0fc2
00000fbb: DUP5
00000fbc: PUSH1 0x02
00000fbe: PUSH2 0x0b6f
00000fc1: JUMP
00000fc2: JUMPDEST
00000fc3: SWAP3
00000fc4: POP
00000fc5: DUP3
00000fc6: SWAP2
00000fc7: POP
00000fc8: PUSH2 0x0fd3
00000fcb: PUSH1 0x0e
00000fcd: SLOAD
00000fce: DUP4
00000fcf: PUSH2 0x119a
00000fd2: JUMP
00000fd3: JUMPDEST
00000fd4: SWAP1
00000fd5: POP
00000fd6: PUSH2 0x0fdf
00000fd9: DUP2
00000fda: DUP5
00000fdb: PUSH2 0x119a
00000fde: JUMP
00000fdf: JUMPDEST
00000fe0: SWAP1
00000fe1: POP
00000fe2: PUSH2 0x0feb
00000fe5: DUP2
00000fe6: DUP6
00000fe7: PUSH2 0x119a
00000fea: JUMP
00000feb: JUMPDEST
00000fec: SWAP1
00000fed: POP
00000fee: PUSH1 0x10
00000ff0: SLOAD
00000ff1: DUP2
00000ff2: DUP2
00000ff3: ISZERO
00000ff4: ISZERO
00000ff5: PUSH2 0x0ffa
00000ff8: JUMPI
00000ff9: INVALID
00000ffa: JUMPDEST
00000ffb: MOD
00000ffc: SWAP5
00000ffd: POP
00000ffe: PUSH1 0x10
00001000: SLOAD
00001001: DUP2
00001002: DUP2
00001003: ISZERO
00001004: ISZERO
00001005: PUSH2 0x100a
00001008: JUMPI
00001009: INVALID
0000100a: JUMPDEST
0000100b: DIV
0000100c: PUSH1 0x10
0000100e: SSTORE
0000100f: PUSH1 0x11
00001011: SLOAD
00001012: PUSH1 0x00
00001014: SWAP1
00001015: GT
00001016: ISZERO
00001017: PUSH2 0x104c
0000101a: JUMPI
0000101b: PUSH2 0x1024
0000101e: DUP3
0000101f: DUP7
00001020: PUSH2 0x0d47
00001023: JUMP
00001024: JUMPDEST
00001025: SWAP2
00001026: POP
00001027: PUSH1 0x11
00001029: SLOAD
0000102a: DUP3
0000102b: DUP2
0000102c: ISZERO
0000102d: ISZERO
0000102e: PUSH2 0x1033
00001031: JUMPI
00001032: INVALID
00001033: JUMPDEST
00001034: MOD
00001035: SWAP5
00001036: POP
00001037: PUSH1 0x11
00001039: SLOAD
0000103a: DUP3
0000103b: DUP2
0000103c: ISZERO
0000103d: ISZERO
0000103e: PUSH2 0x1043
00001041: JUMPI
00001042: INVALID
00001043: JUMPDEST
00001044: DIV
00001045: PUSH1 0x11
00001047: SSTORE
00001048: PUSH2 0x1059
0000104b: JUMP
0000104c: JUMPDEST
0000104d: PUSH2 0x1056
00001050: DUP6
00001051: DUP4
00001052: PUSH2 0x0d47
00001055: JUMP
00001056: JUMPDEST
00001057: SWAP5
00001058: POP
00001059: JUMPDEST
0000105a: PUSH1 0x00
0000105c: PUSH1 0x12
0000105e: SLOAD
0000105f: GT
00001060: ISZERO
00001061: PUSH2 0x1096
00001064: JUMPI
00001065: PUSH2 0x106e
00001068: DUP4
00001069: DUP7
0000106a: PUSH2 0x0d47
0000106d: JUMP
0000106e: JUMPDEST
0000106f: SWAP3
00001070: POP
00001071: PUSH1 0x12
00001073: SLOAD
00001074: DUP4
00001075: DUP2
00001076: ISZERO
00001077: ISZERO
00001078: PUSH2 0x107d
0000107b: JUMPI
0000107c: INVALID
0000107d: JUMPDEST
0000107e: MOD
0000107f: SWAP5
00001080: POP
00001081: PUSH1 0x12
00001083: SLOAD
00001084: DUP4
00001085: DUP2
00001086: ISZERO
00001087: ISZERO
00001088: PUSH2 0x108d
0000108b: JUMPI
0000108c: INVALID
0000108d: JUMPDEST
0000108e: DIV
0000108f: PUSH1 0x12
00001091: SSTORE
00001092: PUSH2 0x10a3
00001095: JUMP
00001096: JUMPDEST
00001097: PUSH2 0x10a0
0000109a: DUP6
0000109b: DUP5
0000109c: PUSH2 0x0d47
0000109f: JUMP
000010a0: JUMPDEST
000010a1: SWAP5
000010a2: POP
000010a3: JUMPDEST
000010a4: PUSH1 0x00
000010a6: PUSH1 0x13
000010a8: SLOAD
000010a9: GT
000010aa: ISZERO
000010ab: PUSH2 0x10e0
000010ae: JUMPI
000010af: PUSH2 0x10b8
000010b2: DUP5
000010b3: DUP7
000010b4: PUSH2 0x0d47
000010b7: JUMP
000010b8: JUMPDEST
000010b9: SWAP4
000010ba: POP
000010bb: PUSH1 0x13
000010bd: SLOAD
000010be: DUP5
000010bf: DUP2
000010c0: ISZERO
000010c1: ISZERO
000010c2: PUSH2 0x10c7
000010c5: JUMPI
000010c6: INVALID
000010c7: JUMPDEST
000010c8: MOD
000010c9: SWAP5
000010ca: POP
000010cb: PUSH1 0x13
000010cd: SLOAD
000010ce: DUP5
000010cf: DUP2
000010d0: ISZERO
000010d1: ISZERO
000010d2: PUSH2 0x10d7
000010d5: JUMPI
000010d6: INVALID
000010d7: JUMPDEST
000010d8: DIV
000010d9: PUSH1 0x13
000010db: SSTORE
000010dc: PUSH2 0x10ed
000010df: JUMP
000010e0: JUMPDEST
000010e1: PUSH2 0x10ea
000010e4: DUP6
000010e5: DUP6
000010e6: PUSH2 0x0d47
000010e9: JUMP
000010ea: JUMPDEST
000010eb: SWAP5
000010ec: POP
000010ed: JUMPDEST
000010ee: DUP5
000010ef: SWAP6
000010f0: POP
000010f1: JUMPDEST
000010f2: POP
000010f3: POP
000010f4: POP
000010f5: POP
000010f6: POP
000010f7: SWAP1
000010f8: JUMP
000010f9: JUMPDEST
000010fa: PUSH1 0x02
000010fc: SLOAD
000010fd: PUSH1 0x00
000010ff: SWAP1
00001100: PUSH1 0xff
00001102: DUP5
00001103: AND
00001104: DUP3
00001105: SWAP1
00001106: GT
00001107: ISZERO
00001108: PUSH2 0x1123
0000110b: JUMPI
0000110c: PUSH2 0x1120
0000110f: DUP2
00001110: PUSH2 0x0c75
00001113: DUP6
00001114: PUSH1 0x10
00001116: SLOAD
00001117: PUSH2 0x0b6f
0000111a: JUMP
0000111b: JUMPDEST
0000111c: PUSH2 0x0d47
0000111f: JUMP
00001120: JUMPDEST
00001121: SWAP1
00001122: POP
00001123: JUMPDEST
00001124: PUSH1 0x01
00001126: DUP5
00001127: PUSH1 0xff
00001129: AND
0000112a: GT
0000112b: ISZERO
0000112c: PUSH2 0x1147
0000112f: JUMPI
00001130: PUSH2 0x1144
00001133: DUP2
00001134: PUSH2 0x0c75
00001137: DUP6
00001138: PUSH1 0x11
0000113a: SLOAD
0000113b: PUSH2 0x0b6f
0000113e: JUMP
0000113f: JUMPDEST
00001140: PUSH2 0x0d47
00001143: JUMP
00001144: JUMPDEST
00001145: SWAP1
00001146: POP
00001147: JUMPDEST
00001148: PUSH1 0x02
0000114a: DUP5
0000114b: PUSH1 0xff
0000114d: AND
0000114e: GT
0000114f: ISZERO
00001150: PUSH2 0x116b
00001153: JUMPI
00001154: PUSH2 0x1168
00001157: DUP2
00001158: PUSH2 0x0c75
0000115b: DUP6
0000115c: PUSH1 0x12
0000115e: SLOAD
0000115f: PUSH2 0x0b6f
00001162: JUMP
00001163: JUMPDEST
00001164: PUSH2 0x0d47
00001167: JUMP
00001168: JUMPDEST
00001169: SWAP1
0000116a: POP
0000116b: JUMPDEST
0000116c: PUSH1 0x03
0000116e: DUP5
0000116f: PUSH1 0xff
00001171: AND
00001172: GT
00001173: ISZERO
00001174: PUSH2 0x0b93
00001177: JUMPI
00001178: PUSH2 0x118c
0000117b: DUP2
0000117c: PUSH2 0x0c75
0000117f: DUP6
00001180: PUSH1 0x13
00001182: SLOAD
00001183: PUSH2 0x0b6f
00001186: JUMP
00001187: JUMPDEST
00001188: PUSH2 0x0d47
0000118b: JUMP
0000118c: JUMPDEST
0000118d: SWAP1
0000118e: POP
0000118f: JUMPDEST
00001190: DUP1
00001191: SWAP2
00001192: POP
00001193: JUMPDEST
00001194: POP
00001195: SWAP3
00001196: SWAP2
00001197: POP
00001198: POP
00001199: JUMP
0000119a: JUMPDEST
0000119b: PUSH1 0x00
0000119d: PUSH2 0x11a8
000011a0: DUP4
000011a1: DUP4
000011a2: GT
000011a3: ISZERO
000011a4: PUSH2 0x130d
000011a7: JUMP
000011a8: JUMPDEST
000011a9: POP
000011aa: DUP1
000011ab: DUP3
000011ac: SUB
000011ad: JUMPDEST
000011ae: SWAP3
000011af: SWAP2
000011b0: POP
000011b1: POP
000011b2: JUMP
000011b3: JUMPDEST
000011b4: PUSH1 0x00
000011b6: PUSH1 0x00
000011b8: PUSH1 0x00
000011ba: PUSH1 0x00
000011bc: PUSH1 0x00
000011be: PUSH1 0x00
000011c0: PUSH1 0x00
000011c2: PUSH1 0x00
000011c4: PUSH1 0x15
000011c6: PUSH1 0x00
000011c8: SWAP1
000011c9: SLOAD
000011ca: SWAP1
000011cb: PUSH2 0x0100
000011ce: EXP
000011cf: SWAP1
000011d0: DIV
000011d1: PUSH1 0x01
000011d3: PUSH1 0xa0
000011d5: PUSH1 0x02
000011d7: EXP
000011d8: SUB
000011d9: AND
000011da: PUSH1 0x01
000011dc: PUSH1 0xa0
000011de: PUSH1 0x02
000011e0: EXP
000011e1: SUB
000011e2: AND
000011e3: PUSH4 0x9507d39a
000011e8: DUP11
000011e9: PUSH1 0x00
000011eb: PUSH1 0x40
000011ed: MLOAD
000011ee: PUSH1 0xe0
000011f0: ADD
000011f1: MSTORE
000011f2: PUSH1 0x40
000011f4: MLOAD
000011f5: DUP3
000011f6: PUSH4 0xffffffff
000011fb: AND
000011fc: PUSH1 0xe0
000011fe: PUSH1 0x02
00001200: EXP
00001201: MUL
00001202: DUP2
00001203: MSTORE
00001204: PUSH1 0x04
00001206: ADD
00001207: DUP1
00001208: DUP3
00001209: DUP2
0000120a: MSTORE
0000120b: PUSH1 0x20
0000120d: ADD
0000120e: SWAP2
0000120f: POP
00001210: POP
00001211: PUSH1 0xe0
00001213: PUSH1 0x40
00001215: MLOAD
00001216: DUP1
00001217: DUP4
00001218: SUB
00001219: DUP2
0000121a: PUSH1 0x00
0000121c: DUP8
0000121d: DUP1
0000121e: EXTCODESIZE
0000121f: ISZERO
00001220: ISZERO
00001221: PUSH2 0x1226
00001224: JUMPI
00001225: INVALID
00001226: JUMPDEST
00001227: PUSH2 0x02c6
0000122a: GAS
0000122b: SUB
0000122c: CALL
0000122d: ISZERO
0000122e: ISZERO
0000122f: PUSH2 0x1234
00001232: JUMPI
00001233: INVALID
00001234: JUMPDEST
00001235: POP
00001236: POP
00001237: PUSH1 0x40
00001239: DUP1
0000123a: MLOAD
0000123b: DUP1
0000123c: MLOAD
0000123d: PUSH1 0x20
0000123f: DUP3
00001240: ADD
00001241: MLOAD
00001242: SWAP3
00001243: DUP3
00001244: ADD
00001245: MLOAD
00001246: PUSH1 0x60
00001248: DUP4
00001249: ADD
0000124a: MLOAD
0000124b: PUSH1 0x80
0000124d: DUP5
0000124e: ADD
0000124f: MLOAD
00001250: PUSH1 0xa0
00001252: DUP6
00001253: ADD
00001254: MLOAD
00001255: PUSH1 0xc0
00001257: SWAP1
00001258: SWAP6
00001259: ADD
0000125a: MLOAD
0000125b: SWAP15
0000125c: POP
0000125d: SWAP3
0000125e: SWAP13
0000125f: POP
00001260: SWAP11
00001261: POP
00001262: SWAP9
00001263: POP
00001264: DUP9
00001265: DUP4
00001266: EQ
00001267: ISZERO
00001268: SWAP8
00001269: POP
0000126a: SWAP2
0000126b: SWAP6
0000126c: POP
0000126d: SWAP1
0000126e: SWAP4
0000126f: POP
00001270: SWAP2
00001271: POP
00001272: POP
00001273: JUMPDEST
00001274: POP
00001275: POP
00001276: POP
00001277: SWAP2
00001278: SWAP4
00001279: SWAP6
0000127a: SWAP1
0000127b: SWAP3
0000127c: SWAP5
0000127d: POP
0000127e: JUMP
0000127f: JUMPDEST
00001280: PUSH1 0x00
00001282: DUP1
00001283: PUSH1 0x64
00001285: PUSH2 0x129a
00001288: PUSH8 0x0de0b6b3a7640000
00001291: DUP8
00001292: JUMPDEST
00001293: DIV
00001294: PUSH1 0x64
00001296: PUSH2 0x0d47
00001299: JUMP
0000129a: JUMPDEST
0000129b: DUP2
0000129c: ISZERO
0000129d: ISZERO
0000129e: PUSH2 0x12a3
000012a1: JUMPI
000012a2: INVALID
000012a3: JUMPDEST
000012a4: DIV
000012a5: SWAP1
000012a6: POP
000012a7: PUSH1 0x05
000012a9: SLOAD
000012aa: DUP5
000012ab: GT
000012ac: ISZERO
000012ad: ISZERO
000012ae: PUSH2 0x12cf
000012b1: JUMPI
000012b2: PUSH1 0x04
000012b4: PUSH2 0x12be
000012b7: DUP3
000012b8: PUSH1 0x05
000012ba: PUSH2 0x0b6f
000012bd: JUMP
000012be: JUMPDEST
000012bf: DUP2
000012c0: ISZERO
000012c1: ISZERO
000012c2: PUSH2 0x12c7
000012c5: JUMPI
000012c6: INVALID
000012c7: JUMPDEST
000012c8: DIV
000012c9: SWAP1
000012ca: POP
000012cb: PUSH2 0x12f2
000012ce: JUMP
000012cf: JUMPDEST
000012d0: PUSH1 0x06
000012d2: SLOAD
000012d3: DUP5
000012d4: GT
000012d5: PUSH2 0x12f2
000012d8: JUMPI
000012d9: PUSH1 0x08
000012db: PUSH2 0x12e5
000012de: DUP3
000012df: PUSH1 0x09
000012e1: PUSH2 0x0b6f
000012e4: JUMP
000012e5: JUMPDEST
000012e6: DUP2
000012e7: ISZERO
000012e8: ISZERO
000012e9: PUSH2 0x12ee
000012ec: JUMPI
000012ed: INVALID
000012ee: JUMPDEST
000012ef: DIV
000012f0: SWAP1
000012f1: POP
000012f2: JUMPDEST
000012f3: JUMPDEST
000012f4: DUP3
000012f5: ISZERO
000012f6: PUSH2 0x1301
000012f9: JUMPI
000012fa: PUSH1 0x02
000012fc: DUP2
000012fd: JUMPDEST
000012fe: DIV
000012ff: SWAP1
00001300: POP
00001301: JUMPDEST
00001302: DUP1
00001303: SWAP2
00001304: POP
00001305: JUMPDEST
00001306: POP
00001307: SWAP4
00001308: SWAP3
00001309: POP
0000130a: POP
0000130b: POP
0000130c: JUMP
0000130d: JUMPDEST
0000130e: DUP1
0000130f: ISZERO
00001310: ISZERO
00001311: PUSH2 0x0a9f
00001314: JUMPI
00001315: PUSH1 0x00
00001317: PUSH1 0x00
00001319: REVERT
0000131a: JUMPDEST
0000131b: JUMPDEST
0000131c: POP
0000131d: JUMP
0000131e: JUMPDEST
0000131f: PUSH1 0x00
00001321: PUSH1 0x00
00001323: PUSH1 0x00
00001325: PUSH1 0x00
00001327: PUSH2 0x1332
0000132a: PUSH2 0x03e8
0000132d: DUP7
0000132e: PUSH2 0x119a
00001331: JUMP
00001332: JUMPDEST
00001333: SWAP2
00001334: POP
00001335: PUSH2 0x03e8
00001338: PUSH2 0x1343
0000133b: PUSH1 0x01
0000133d: SLOAD
0000133e: DUP5
0000133f: PUSH2 0x0b6f
00001342: JUMP
00001343: JUMPDEST
00001344: DUP2
00001345: ISZERO
00001346: ISZERO
00001347: PUSH2 0x134c
0000134a: JUMPI
0000134b: INVALID
0000134c: JUMPDEST
0000134d: DIV
0000134e: SWAP4
0000134f: POP
00001350: DUP2
00001351: PUSH2 0x135c
00001354: PUSH2 0x03e8
00001357: DUP8
00001358: PUSH2 0x0b6f
0000135b: JUMP
0000135c: JUMPDEST
0000135d: DUP2
0000135e: ISZERO
0000135f: ISZERO
00001360: PUSH2 0x1365
00001363: JUMPI
00001364: INVALID
00001365: JUMPDEST
00001366: DIV
00001367: SWAP1
00001368: POP
00001369: PUSH2 0x03e8
0000136c: PUSH2 0x1382
0000136f: PUSH1 0x01
00001371: SLOAD
00001372: PUSH2 0x137d
00001375: PUSH2 0x03e8
00001378: DUP6
00001379: PUSH2 0x0d47
0000137c: JUMP
0000137d: JUMPDEST
0000137e: PUSH2 0x0b6f
00001381: JUMP
00001382: JUMPDEST
00001383: DUP2
00001384: ISZERO
00001385: ISZERO
00001386: PUSH2 0x138b
00001389: JUMPI
0000138a: INVALID
0000138b: JUMPDEST
0000138c: DIV
0000138d: SWAP3
0000138e: POP
0000138f: JUMPDEST
00001390: POP
00001391: POP
00001392: SWAP2
00001393: POP
00001394: SWAP2
00001395: JUMP
00001396: JUMPDEST
00001397: PUSH2 0x0180
0000139a: PUSH1 0x40
0000139c: MLOAD
0000139d: SWAP1
0000139e: DUP2
0000139f: ADD
000013a0: PUSH1 0x40
000013a2: MSTORE
000013a3: DUP1
000013a4: PUSH1 0x00
000013a6: DUP2
000013a7: MSTORE
000013a8: PUSH1 0x20
000013aa: ADD
000013ab: PUSH1 0x00
000013ad: DUP2
000013ae: MSTORE
000013af: PUSH1 0x20
000013b1: ADD
000013b2: PUSH1 0x00
000013b4: DUP2
000013b5: MSTORE
000013b6: PUSH1 0x20
000013b8: ADD
000013b9: PUSH1 0x00
000013bb: DUP2
000013bc: MSTORE
000013bd: PUSH1 0x20
000013bf: ADD
000013c0: PUSH1 0x00
000013c2: DUP2
000013c3: MSTORE
000013c4: PUSH1 0x20
000013c6: ADD
000013c7: PUSH1 0x00
000013c9: DUP2
000013ca: MSTORE
000013cb: PUSH1 0x20
000013cd: ADD
000013ce: PUSH1 0x00
000013d0: DUP2
000013d1: MSTORE
000013d2: PUSH1 0x20
000013d4: ADD
000013d5: PUSH1 0x00
000013d7: DUP2
000013d8: MSTORE
000013d9: PUSH1 0x20
000013db: ADD
000013dc: PUSH1 0x00
000013de: DUP2
000013df: MSTORE
000013e0: PUSH1 0x20
000013e2: ADD
000013e3: PUSH1 0x00
000013e5: DUP2
000013e6: MSTORE
000013e7: PUSH1 0x20
000013e9: ADD
000013ea: PUSH1 0x00
000013ec: DUP2
000013ed: MSTORE
000013ee: PUSH1 0x20
000013f0: ADD
000013f1: PUSH1 0x00
000013f3: DUP2
000013f4: MSTORE
000013f5: POP
000013f6: SWAP1
000013f7: JUMP
000013f8: JUMPDEST
000013f9: PUSH1 0x00
000013fb: DUP4
000013fc: ISZERO
000013fd: ISZERO
000013fe: PUSH2 0x1407
00001401: JUMPI
00001402: PUSH1 0x00
00001404: PUSH1 0x00
00001406: REVERT
00001407: JUMPDEST
00001408: DUP4
00001409: DUP4
0000140a: GT
0000140b: PUSH2 0x1414
0000140e: JUMPI
0000140f: PUSH1 0x00
00001411: PUSH1 0x00
00001413: REVERT
00001414: JUMPDEST
00001415: DUP2
00001416: ISZERO
00001417: ISZERO
00001418: PUSH2 0x1421
0000141b: JUMPI
0000141c: PUSH1 0x00
0000141e: PUSH1 0x00
00001420: REVERT
00001421: JUMPDEST
00001422: DUP2
00001423: DUP5
00001424: DUP2
00001425: ISZERO
00001426: ISZERO
00001427: PUSH2 0x142c
0000142a: JUMPI
0000142b: INVALID
0000142c: JUMPDEST
0000142d: MOD
0000142e: ISZERO
0000142f: PUSH2 0x1438
00001432: JUMPI
00001433: PUSH1 0x00
00001435: PUSH1 0x00
00001437: REVERT
00001438: JUMPDEST
00001439: DUP2
0000143a: DUP4
0000143b: DUP2
0000143c: ISZERO
0000143d: ISZERO
0000143e: PUSH2 0x1443
00001441: JUMPI
00001442: INVALID
00001443: JUMPDEST
00001444: MOD
00001445: ISZERO
00001446: PUSH2 0x144f
00001449: JUMPI
0000144a: PUSH1 0x00
0000144c: PUSH1 0x00
0000144e: REVERT
0000144f: JUMPDEST
00001450: POP
00001451: PUSH1 0x08
00001453: DUP4
00001454: SWAP1
00001455: SSTORE
00001456: PUSH1 0x09
00001458: DUP3
00001459: SWAP1
0000145a: SSTORE
0000145b: PUSH1 0x0a
0000145d: DUP2
0000145e: SWAP1
0000145f: SSTORE
00001460: DUP3
00001461: JUMPDEST
00001462: DUP3
00001463: DUP2
00001464: GT
00001465: PUSH2 0x0788
00001468: JUMPI
00001469: PUSH2 0x1470
0000146c: PUSH2 0x1588
0000146f: JUMP
00001470: JUMPDEST
00001471: PUSH1 0x00
00001473: DUP3
00001474: DUP2
00001475: MSTORE
00001476: PUSH1 0x07
00001478: PUSH1 0x20
0000147a: SWAP1
0000147b: DUP2
0000147c: MSTORE
0000147d: PUSH1 0x40
0000147f: SWAP2
00001480: DUP3
00001481: SWAP1
00001482: KECCAK256
00001483: DUP4
00001484: MLOAD
00001485: DUP2
00001486: SSTORE
00001487: SWAP1
00001488: DUP4
00001489: ADD
0000148a: MLOAD
0000148b: PUSH1 0x01
0000148d: SWAP1
0000148e: SWAP2
0000148f: ADD
00001490: DUP1
00001491: SLOAD
00001492: SWAP3
00001493: DUP5
00001494: ADD
00001495: MLOAD
00001496: PUSH1 0x60
00001498: SWAP1
00001499: SWAP5
0000149a: ADD
0000149b: MLOAD
0000149c: PUSH1 0xff
0000149e: NOT
0000149f: SWAP1
000014a0: SWAP4
000014a1: AND
000014a2: PUSH1 0xff
000014a4: SWAP3
000014a5: DUP4
000014a6: AND
000014a7: OR
000014a8: PUSH2 0xff00
000014ab: NOT
000014ac: AND
000014ad: PUSH2 0x0100
000014b0: SWAP3
000014b1: SWAP1
000014b2: SWAP5
000014b3: AND
000014b4: SWAP2
000014b5: SWAP1
000014b6: SWAP2
000014b7: MUL
000014b8: SWAP3
000014b9: SWAP1
000014ba: SWAP3
000014bb: OR
000014bc: PUSH3 0xff0000
000014c0: NOT
000014c1: AND
000014c2: PUSH3 0x010000
000014c6: SWAP2
000014c7: ISZERO
000014c8: ISZERO
000014c9: SWAP2
000014ca: SWAP1
000014cb: SWAP2
000014cc: MUL
000014cd: OR
000014ce: SWAP1
000014cf: SSTORE
000014d0: JUMPDEST
000014d1: DUP2
000014d2: ADD
000014d3: PUSH2 0x1461
000014d6: JUMP
000014d7: JUMPDEST
000014d8: JUMPDEST
000014d9: POP
000014da: POP
000014db: POP
000014dc: POP
000014dd: JUMP
000014de: JUMPDEST
000014df: PUSH1 0x00
000014e1: DUP1
000014e2: DUP8
000014e3: GT
000014e4: PUSH2 0x14ed
000014e7: JUMPI
000014e8: PUSH1 0x00
000014ea: PUSH1 0x00
000014ec: REVERT
000014ed: JUMPDEST
000014ee: PUSH1 0x00
000014f0: DUP6
000014f1: GT
000014f2: DUP1
000014f3: ISZERO
000014f4: PUSH2 0x14fe
000014f7: JUMPI
000014f8: POP
000014f9: PUSH2 0x03e8
000014fc: DUP6
000014fd: LT
000014fe: JUMPDEST
000014ff: DUP1
00001500: ISZERO
00001501: PUSH2 0x150a
00001504: JUMPI
00001505: POP
00001506: DUP5
00001507: DUP5
00001508: LT
00001509: ISZERO
0000150a: JUMPDEST
0000150b: DUP1
0000150c: ISZERO
0000150d: PUSH2 0x1517
00001510: JUMPI
00001511: POP
00001512: PUSH2 0x03e8
00001515: DUP5
00001516: LT
00001517: JUMPDEST
00001518: ISZERO
00001519: ISZERO
0000151a: PUSH2 0x1523
0000151d: JUMPI
0000151e: PUSH1 0x00
00001520: PUSH1 0x00
00001522: REVERT
00001523: JUMPDEST
00001524: DUP2
00001525: DUP4
00001526: LT
00001527: PUSH2 0x1530
0000152a: JUMPI
0000152b: PUSH1 0x00
0000152d: PUSH1 0x00
0000152f: REVERT
00001530: JUMPDEST
00001531: PUSH1 0x01
00001533: DUP8
00001534: SWAP1
00001535: SSTORE
00001536: PUSH1 0x02
00001538: DUP7
00001539: SWAP1
0000153a: SSTORE
0000153b: PUSH1 0x03
0000153d: DUP6
0000153e: SWAP1
0000153f: SSTORE
00001540: PUSH1 0x04
00001542: DUP5
00001543: DUP2
00001544: SSTORE
00001545: PUSH2 0x154e
00001548: DUP4
00001549: DUP6
0000154a: PUSH2 0x119a
0000154d: JUMP
0000154e: JUMPDEST
0000154f: DUP2
00001550: ISZERO
00001551: ISZERO
00001552: PUSH2 0x1557
00001555: JUMPI
00001556: INVALID
00001557: JUMPDEST
00001558: DIV
00001559: SWAP1
0000155a: POP
0000155b: PUSH2 0x1564
0000155e: DUP4
0000155f: DUP3
00001560: PUSH2 0x0d47
00001563: JUMP
00001564: JUMPDEST
00001565: PUSH1 0x05
00001567: SSTORE
00001568: PUSH2 0x157b
0000156b: DUP4
0000156c: PUSH2 0x0c75
0000156f: PUSH1 0x02
00001571: DUP5
00001572: PUSH2 0x0b6f
00001575: JUMP
00001576: JUMPDEST
00001577: PUSH2 0x0d47
0000157a: JUMP
0000157b: JUMPDEST
0000157c: PUSH1 0x06
0000157e: SSTORE
0000157f: JUMPDEST
00001580: POP
00001581: POP
00001582: POP
00001583: POP
00001584: POP
00001585: POP
00001586: POP
00001587: JUMP
00001588: JUMPDEST
00001589: PUSH2 0x1590
0000158c: PUSH2 0x15b9
0000158f: JUMP
00001590: JUMPDEST
00001591: POP
00001592: PUSH1 0x40
00001594: DUP1
00001595: MLOAD
00001596: PUSH1 0x80
00001598: DUP2
00001599: ADD
0000159a: DUP3
0000159b: MSTORE
0000159c: PUSH1 0x00
0000159e: DUP1
0000159f: DUP3
000015a0: MSTORE
000015a1: PUSH1 0x20
000015a3: DUP3
000015a4: ADD
000015a5: DUP2
000015a6: SWAP1
000015a7: MSTORE
000015a8: SWAP2
000015a9: DUP2
000015aa: ADD
000015ab: SWAP2
000015ac: SWAP1
000015ad: SWAP2
000015ae: MSTORE
000015af: PUSH1 0x01
000015b1: PUSH1 0x60
000015b3: DUP3
000015b4: ADD
000015b5: MSTORE
000015b6: JUMPDEST
000015b7: SWAP1
000015b8: JUMP
000015b9: JUMPDEST
000015ba: PUSH1 0x40
000015bc: DUP1
000015bd: MLOAD
000015be: PUSH1 0x80
000015c0: DUP2
000015c1: ADD
000015c2: DUP3
000015c3: MSTORE
000015c4: PUSH1 0x00
000015c6: DUP1
000015c7: DUP3
000015c8: MSTORE
000015c9: PUSH1 0x20
000015cb: DUP3
000015cc: ADD
000015cd: DUP2
000015ce: SWAP1
000015cf: MSTORE
000015d0: SWAP2
000015d1: DUP2
000015d2: ADD
000015d3: DUP3
000015d4: SWAP1
000015d5: MSTORE
000015d6: PUSH1 0x60
000015d8: DUP2
000015d9: ADD
000015da: SWAP2
000015db: SWAP1
000015dc: SWAP2
000015dd: MSTORE
000015de: SWAP1
000015df: JUMP
000015e0: STOP
000015e1: LOG1
000015e2: PUSH6 0x627a7a723058
000015e9: KECCAK256
000015ea: SWAP7
000015eb: UNKNOWN(0xB6)
000015ec: UNKNOWN(0xD7)
000015ed: UNKNOWN(0x22)
000015ee: DUP9
000015ef: UNKNOWN(0xE2)
000015f0: UNKNOWN(0xC1)
000015f1: UNKNOWN(0xE6)
000015f2: OR
000015f3: DUP2
000015f4: UNKNOWN(0x0D)
000015f5: DELEGATECALL
000015f6: RETURNDATASIZE
000015f7: LOG1
000015f8: UNKNOWN(0xD7)
000015f9: TSTORE
000015fa: UNKNOWN(0x2B)
000015fb: UNKNOWN(0x25)
000015fc: PUSH14 0x67e4b88f0d5ab8c03f16ad507500
0000160b: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0xa7a3ffc00720facd3a92e51982e8f9d1bddc8f78d9ef1ad16e3090262dc3be6d
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0xa7a3ffc00720facd3a92e51982e8f9d1bddc8f78d9ef1ad16e3090262dc3be6d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "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": "0x0d15fd77",
            "selector": "0x0d15fd77",
            "calldata_variants": [
                "0x0d15fd77",
                "0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2969d202",
            "selector": "0x2969d202",
            "calldata_variants": [
                "0x2969d202",
                "0x2969d2020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e6dbdf9",
            "selector": "0x2e6dbdf9",
            "calldata_variants": [
                "0x2e6dbdf9",
                "0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e854433",
            "selector": "0x2e854433",
            "calldata_variants": [
                "0x2e854433",
                "0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x47799092",
            "selector": "0x47799092",
            "calldata_variants": [
                "0x47799092",
                "0x477990920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4b60ce77",
            "selector": "0x4b60ce77",
            "calldata_variants": [
                "0x4b60ce77",
                "0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4fb2e45d",
            "selector": "0x4fb2e45d",
            "calldata_variants": [
                "0x4fb2e45d",
                "0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x5afb6ba5",
            "selector": "0x5afb6ba5",
            "calldata_variants": [
                "0x5afb6ba5",
                "0x5afb6ba50000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5621,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xe612ba76921025f91422b9b672563768202ab8c1659d82fa5dbe5fa777965f25
call_targets: 0xf564141bda167a0f2c87ffd4480be627d90fa954
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe612ba76921025f91422b9b672563768202ab8c1659d82fa5dbe5fa777965f25",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf564141bda167a0f2c87ffd4480be627d90fa954"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0d15fd77",
            "selector": "0x0d15fd77",
            "calldata_variants": [
                "0x0d15fd77",
                "0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2969d202",
            "selector": "0x2969d202",
            "calldata_variants": [
                "0x2969d202",
                "0x2969d2020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e6dbdf9",
            "selector": "0x2e6dbdf9",
            "calldata_variants": [
                "0x2e6dbdf9",
                "0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e854433",
            "selector": "0x2e854433",
            "calldata_variants": [
                "0x2e854433",
                "0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x47799092",
            "selector": "0x47799092",
            "calldata_variants": [
                "0x47799092",
                "0x477990920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4b60ce77",
            "selector": "0x4b60ce77",
            "calldata_variants": [
                "0x4b60ce77",
                "0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4fb2e45d",
            "selector": "0x4fb2e45d",
            "calldata_variants": [
                "0x4fb2e45d",
                "0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x5afb6ba5",
            "selector": "0x5afb6ba5",
            "calldata_variants": [
                "0x5afb6ba5",
                "0x5afb6ba50000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 920,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1076,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1766,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xe612ba76921025f91422b9b672563768202ab8c1659d82fa5dbe5fa777965f25
call_targets: 0xf564141bda167a0f2c87ffd4480be627d90fa954
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe612ba76921025f91422b9b672563768202ab8c1659d82fa5dbe5fa777965f25",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf564141bda167a0f2c87ffd4480be627d90fa954"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0d15fd77",
            "selector": "0x0d15fd77",
            "calldata_variants": [
                "0x0d15fd77",
                "0x0d15fd770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2969d202",
            "selector": "0x2969d202",
            "calldata_variants": [
                "0x2969d202",
                "0x2969d2020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e6dbdf9",
            "selector": "0x2e6dbdf9",
            "calldata_variants": [
                "0x2e6dbdf9",
                "0x2e6dbdf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e854433",
            "selector": "0x2e854433",
            "calldata_variants": [
                "0x2e854433",
                "0x2e8544330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x47799092",
            "selector": "0x47799092",
            "calldata_variants": [
                "0x47799092",
                "0x477990920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4b60ce77",
            "selector": "0x4b60ce77",
            "calldata_variants": [
                "0x4b60ce77",
                "0x4b60ce770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4fb2e45d",
            "selector": "0x4fb2e45d",
            "calldata_variants": [
                "0x4fb2e45d",
                "0x4fb2e45d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x5afb6ba5",
            "selector": "0x5afb6ba5",
            "calldata_variants": [
                "0x5afb6ba5",
                "0x5afb6ba50000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 920,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1076,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1766,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}
medium reentrancy codex External CALL before state update (potential reentrancy) 75 no
view
evidence_json
{
    "evidence": "Bytecode shows a CALL at pc:0x722 followed by an SSTORE at pc:0x743, with no guard detected in the artifact; call arguments are computed from stack/CALLER, so the call can reach untrusted code.",
    "locations": [
        "pc:0x722",
        "pc:0x743"
    ],
    "recommendation": "Apply checks-effects-interactions: move critical SSTORE updates before the external CALL or add a reentrancy guard around the function; consider pull-based payouts instead of direct CALLs.",
    "exploit_scenario": "If the CALL at pc:0x722 transfers ETH or invokes an attacker-controlled contract (target derived from CALLER/stack), a malicious receiver could reenter before the state update at pc:0x743 and repeat sensitive logic (e.g., withdrawals or accounting changes) to drain funds or bypass limits."
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
low other codex External CALL targets/values are computed (audit address control) 65 no
view
evidence_json
{
    "evidence": "Detector evidence lists 6 CALL sites with target/value marked as computed and no guards detected; callsites at pc:0x398, 0x434, 0x6e6, 0x722, 0x842, 0x122c show EXTCODESIZE/CALL patterns with computed inputs and unknown returndata validation semantics.",
    "locations": [
        "pc:0x398",
        "pc:0x434",
        "pc:0x6e6",
        "pc:0x722",
        "pc:0x842",
        "pc:0x122c"
    ],
    "recommendation": "Verify that all CALL target addresses and values are either hardcoded or settable only by trusted roles; add explicit validation/allowlists for addresses and ensure reentrancy protections when calling external contracts.",
    "exploit_scenario": "If any of the computed call targets/values at these callsites can be influenced by untrusted input or mutable storage without strict access control, an attacker could redirect value transfers or trigger malicious callbacks."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}