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

Analysis Run

019bab3b-aaaf-72e1-b91d-acd00fc28602

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 CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
38373 artifact.fetch complete 1 / 3 3 months ago
38374 proxy.resolve complete 1 / 3 3 months ago
38375 tool.cast_disasm complete 1 / 3 3 months ago
38376 analysis.bundle complete 1 / 3 3 months ago
38377 capability.graph complete 1 / 3 3 months ago
38378 detector.run complete 1 / 3 3 months ago
38379 validation.fork complete 1 / 3 3 months ago
38976 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
3
No findings?
no
Summary
Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.
View stdout
{"no_findings":false,"summary":"Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.","findings":[{"severity":"medium","category":"access_control","title":"Low-level CALLs with computed target/value lack visible authorization","exploit_scenario":"If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass.","recommendation":"Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.","evidence":"Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).","locations":["pc:0x624","pc:0xdb2","pc:0x1046"]},{"severity":"low","category":"reentrancy","title":"External CALLs combined with storage writes; no reentrancy guard detected","exploit_scenario":"If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain.","recommendation":"Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.","evidence":"CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.","locations":["pc:0x624","pc:0xdb2","pc:0x1046","pc:0x0ba4","pc:0x1239","pc:0x132b"]},{"severity":"low","category":"other","title":"Low-level token transfer call does not appear to validate return data","exploit_scenario":"If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches.","recommendation":"Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.","evidence":"CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.","locations":["pc:0xdb2","pc:0x1046"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-6fvrago8
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bab71-e2f0-75f2-9045-11bc08ec449b
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

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

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

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

thinking
**Preparing to read BYTECODE_BUNDLE.json**
exec
/bin/bash -lc 'rg --files' in /tmp/codex-6fvrago8 succeeded in 12ms:
codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 37ms:
{
  "analysis_artifact": {
    "address": "0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c",
    "artifact_hash": "0x630c62c9bfdada79bd4aa1673eb5e358b311a2325ab16d60f80a26ea5150a13f",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 12,
          "hash": "0x8cf08aeacb84a1bc630037c3757d252bc63c322d163054cb7b0b9efd67d5a274",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "CALLDATASIZE",
            "LT",
            "PUSH2",

thinking
**Parsing findings and searching proxies**
exec
/bin/bash -lc 'rg -n "proxy|EIP-1967|beacon|delegatecall|selfdestruct|storage|slot|fallback|receive|upgrade" BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 9ms:
5232:            "delegatecall": 0,
5233:            "selfdestruct": 0,
5236:          "storage": {
5238:            "slots": [
5242:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5247:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5252:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5257:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5262:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5267:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5272:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5286:            "delegatecall": 0,
5287:            "selfdestruct": 0,
5290:          "storage": {
5292:            "slots": [
5296:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5301:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5306:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5311:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5316:                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"

thinking
**Searching for functions and selectors**
exec
/bin/bash -lc 'rg -n "selector|function|functions|callsite|fallback|receive|proxy_evidence|storage" BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 6ms:
4263:      "callsites": [
5184:      "dispatcher_type": "selector_jump_table",
5185:      "function_entries": [
5188:          "selector": "0xffffffff"
5192:          "selector": "0x313ce567"
5196:          "selector": "0x4123cb6b"
5200:          "selector": "0x472d71d1"
5204:          "selector": "0x746c9171"
5208:          "selector": "0x86435354"
5212:          "selector": "0x88671ad4"
5216:          "selector": "0xaaf5eb68"
5220:          "selector": "0xbfe370d9"
5223:      "functions": [
5229:          "selector": "0xffffffff",
5236:          "storage": {
5283:          "selector": "0x313ce567",
5290:          "storage": {
5337:          "selector": "0x4123cb6b",
5344:          "storage": {
5391:          "selector": "0x472d71d1",

thinking
**Extracting callsite context**
exec
/bin/bash -lc "sed -n '4240,4320p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
            "STOP"
          ],
          "start_pc": 5009
        },
        {
          "end_pc": 5052,
          "hash": "0x9ca7702bcc96b6da41becbb5d9ce6a188ca9313cc93eccd42dfed8cde6b0a60c",
          "opcodes": [
            "OP_A1",
            "PUSH6",
            "SHA3",
            "RETURNDATASIZE",
            "OP_25",
            "OP_F8",
            "OP_4A",
            "OP_B7",
            "GASLIMIT",
            "PUSH26",
            "OP_29"
          ],

thinking
**Identifying storage sections**
exec
/bin/bash -lc "sed -n '5168,5255p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 29ms:
          "from": "bb:4884",
          "to": "bb:4906",
          "type": "control_flow_fallthrough"
        },
        {
          "from": "bb:4907",
          "to": "bb:4873",
          "type": "control_flow"
        },
        {
          "from": "bb:4996",
          "to": "bb:5001",
          "type": "control_flow_fallthrough"
        }
      ],
      "cfg_hash": "0x6b373b79285b5d8f76bf8d8df9c051b898de3053f8044cf0540cbeebe9ba3331",
      "dispatcher_type": "selector_jump_table",
      "function_entries": [
        {
          "entry_pc": 261,
exec
/bin/bash -lc "sed -n '5255,5345p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
                "op": "SLOAD",
                "pc": 2757,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2957,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 4833,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 4876,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
              }
            ],
exec
/bin/bash -lc "sed -n '5345,5445p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
            "reads": 13,
            "slots": [
              {
                "op": "SLOAD",
                "pc": 1282,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
              },
              {
                "op": "SLOAD",
                "pc": 1616,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2711,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2757,
exec
/bin/bash -lc "sed -n '5445,5565p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 27ms:
          "selector": "0x746c9171",
          "sinks": {
            "call": 3,
            "delegatecall": 0,
            "selfdestruct": 0,
            "staticcall": 0
          },
          "storage": {
            "reads": 13,
            "slots": [
              {
                "op": "SLOAD",
                "pc": 1282,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
              },
              {
                "op": "SLOAD",
                "pc": 1616,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
exec
/bin/bash -lc "sed -n '5565,5685p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 19ms:
                "pc": 1282,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
              },
              {
                "op": "SLOAD",
                "pc": 1616,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2711,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2757,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
exec
/bin/bash -lc "sed -n '5685,5755p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 14ms:
              },
              {
                "op": "SLOAD",
                "pc": 2757,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 2957,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 4833,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 4876,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
exec
/bin/bash -lc "sed -n '5755,5835p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
          {
            "op": "SLOAD",
            "pc": 2957,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
          },
          {
            "op": "SLOAD",
            "pc": 4833,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
          },
          {
            "op": "SLOAD",
            "pc": 4876,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
          }
        ],
        "writes": 3
      },
      "version": "analysis_artifact_v1"
    },

thinking
**Examining bytecode for external calls and reentrancy**
exec
/bin/bash -lc "rg -n \"pc\":\\s*1572 BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 exited 1 in 16ms:


thinking
**Considering search syntax for exact match**
exec
/bin/bash -lc "rg -n \"\\\"pc\\\"\\s*:\\s*1572\" BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 7ms:
4266:          "pc": 1572,
8017:          "pc": 1572,
8105:            "pc": 1572,
8157:            "pc": 1572,

thinking
**Checking context around line 8105**
exec
/bin/bash -lc "sed -n '8070,8145p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
          "type": "function"
        },
        {
          "entry_pc": 2868243304,
          "id": "fn:0x88671ad4",
          "selector": "0x88671ad4",
          "type": "function"
        },
        {
          "entry_pc": 3219353817,
          "id": "fn:0xaaf5eb68",
          "selector": "0xaaf5eb68",
          "type": "function"
        },
        {
          "entry_pc": 0,
          "id": "fn:0xbfe370d9",
          "selector": "0xbfe370d9",
          "type": "function"
        }

thinking
**Analyzing callsites and bytecode blocks**
exec
/bin/bash -lc "python - <<'PY'
import json
import bisect
import sys

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

bbs = data['analysis_artifact']['artifact_json']['basic_blocks']

call_pcs=[1572,3506,4166]

for pc in call_pcs:
    block=None
    for bb in bbs:
        if bb['start_pc']<=pc<=bb['end_pc']:
            block=bb
            break
    print('pc',pc,'block',block['start_pc'],block['end_pc'])
    # show opcodes
    print('opcodes:',block['opcodes'])
    print()
PY" in /tmp/codex-6fvrago8 succeeded in 32ms:
pc 1572 block 1470 1579
opcodes: ['JUMPDEST', 'PUSH1', 'OP_86', 'OP_82', 'OP_87', 'OP_87', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'MSTORE', 'PUSH1', 'MLOAD', 'OP_80', 'OP_85', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'PUSH1', 'AND', 'PUSH1', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_94', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'SUB', 'OP_90', 'OP_80', 'OP_84', 'SUB', 'OP_90', 'PUSH1', 'OP_86', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']

pc 3506 block 3375 3519
opcodes: ['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH1', 'MLOAD', 'OP_83', 'PUSH4', 'AND', 'PUSH29', 'MUL', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_80', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_92', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'PUSH1', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'OP_82', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

pc 4166 block 4135 4186
opcodes: ['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_90', 'OP_81', 'ISZERO', 'MUL', 'OP_90', 'PUSH1', 'MLOAD', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_88', 'OP_88', 'CALL', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'PUSH1', 'ISZERO', 'ISZERO', 'OP_83', 'ISZERO', 'ISZERO', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']


thinking
**Analyzing CALL and conditional jump opcodes**
exec
/bin/bash -lc "python - <<'PY'
import json

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

bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# sort by start_pc
bbs=sorted(bbs, key=lambda b:b['start_pc'])

# helper to get block index by start_pc
for i, bb in enumerate(bbs):
    if bb['start_pc']<=1572<=bb['end_pc']:
        idx=i
        break

for j in range(idx-2, idx+4):
    if 0<=j<len(bbs):
        bb=bbs[j]
        print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
        print(bb['opcodes'])
        print()
PY" in /tmp/codex-6fvrago8 succeeded in 77ms:
block 53 start 1423 end 1428
['JUMPDEST', 'ISZERO', 'PUSH2', 'JUMPI']

block 54 start 1429 end 1469
['PUSH1', 'OP_83', 'PUSH32', 'OP_90', 'DIV', 'ADD', 'OP_90', 'POP']

block 55 start 1470 end 1579
['JUMPDEST', 'PUSH1', 'OP_86', 'OP_82', 'OP_87', 'OP_87', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'MSTORE', 'PUSH1', 'MLOAD', 'OP_80', 'OP_85', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'PUSH1', 'AND', 'PUSH1', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_94', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'SUB', 'OP_90', 'OP_80', 'OP_84', 'SUB', 'OP_90', 'PUSH1', 'OP_86', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']

block 56 start 1580 end 1588
['RETURNDATASIZE', 'PUSH1', 'OP_80', 'RETURNDATACOPY', 'RETURNDATASIZE', 'PUSH1', 'REVERT']

block 57 start 1589 end 1612
['JUMPDEST', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'SUB', 'MLOAD', 'OP_91', 'POP', 'OP_81', 'OP_91', 'POP', 'POP', 'OP_94', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'JUMP']

block 58 start 1613 end 1618
['JUMPDEST', 'PUSH1', 'SLOAD', 'OP_81', 'JUMP']


thinking
**Analyzing CALL and revert logic**
exec
/bin/bash -lc "python - <<'PY'
import json

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

bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])

# find block containing 3506
for i, bb in enumerate(bbs):
    if bb['start_pc']<=3506<=bb['end_pc']:
        idx=i; break

for j in range(idx-2, idx+4):
    if 0<=j<len(bbs):
        bb=bbs[j]
        print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
        print(bb['opcodes'])
        print()
PY" in /tmp/codex-6fvrago8 succeeded in 26ms:
block 120 start 3351 end 3373
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_87', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

block 121 start 3374 end 3374
['INVALID']

block 122 start 3375 end 3519
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH1', 'MLOAD', 'OP_83', 'PUSH4', 'AND', 'PUSH29', 'MUL', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_80', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_92', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'PUSH1', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'OP_82', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

block 123 start 3520 end 3523
['PUSH1', 'OP_80', 'REVERT']

block 124 start 3524 end 3570
['JUMPDEST', 'PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

block 125 start 3571 end 3571
['INVALID']


thinking
**Analyzing call and revert logic**
exec
/bin/bash -lc "python - <<'PY'
import json

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

bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])

# find block containing 4166
for i, bb in enumerate(bbs):
    if bb['start_pc']<=4166<=bb['end_pc']:
        idx=i; break

for j in range(idx-2, idx+4):
    if 0<=j<len(bbs):
        bb=bbs[j]
        print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
        print(bb['opcodes'])
        print()
PY" in /tmp/codex-6fvrago8 succeeded in 25ms:
block 143 start 4086 end 4133
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH20', 'AND', 'PUSH2', 'OP_8A', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

block 144 start 4134 end 4134
['INVALID']

block 145 start 4135 end 4186
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_90', 'OP_81', 'ISZERO', 'MUL', 'OP_90', 'PUSH1', 'MLOAD', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_88', 'OP_88', 'CALL', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'PUSH1', 'ISZERO', 'ISZERO', 'OP_83', 'ISZERO', 'ISZERO', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']

block 146 start 4187 end 4232
['PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']

block 147 start 4233 end 4233
['INVALID']

block 148 start 4234 end 4256
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_87', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']


thinking
**Analyzing CALL and revert jumps**
exec
/bin/bash -lc "python - <<'PY'
import json

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

bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])

# find block with start 4257
for bb in bbs:
    if bb['start_pc'] in (4257,4258,4419,4420):
        print('block start',bb['start_pc'],'end',bb['end_pc'])
        print(bb['opcodes'])
        print()
PY" in /tmp/codex-6fvrago8 succeeded in 28ms:
block start 4257 end 4257
['INVALID']

block start 4258 end 4419
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_88', 'PUSH1', 'MLOAD', 'OP_80', 'OP_86', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_85', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_95', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'MLOAD', 'OP_80', 'OP_91', 'SUB', 'OP_90', 'OP_A1', 'PUSH2', 'JUMP']

block start 4420 end 4466
['JUMPDEST', 'PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']


thinking
**Analyzing contract call patterns and potential risks**
exec
/bin/bash -lc "python - <<'PY'
import json

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

sstore_pcs=[]
for bb in data['analysis_artifact']['artifact_json']['basic_blocks']:
    if 'SSTORE' in bb['opcodes']:
        # need to compute pc? we only have start/end; but we can approximate by listing block range
        sstore_pcs.append((bb['start_pc'], bb['end_pc'], bb['opcodes']))

print('SSTORE blocks:', len(sstore_pcs))
for start,end,ops in sstore_pcs[:10]:
    print(start,end,ops)
PY" in /tmp/codex-6fvrago8 succeeded in 32ms:
SSTORE blocks: 3
2980 3077 ['JUMPDEST', 'PUSH1', 'PUSH2', 'PUSH1', 'OP_84', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_81', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'OP_83', 'ISZERO', 'ISZERO', 'MUL', 'OR', 'OP_90', 'SSTORE', 'POP', 'PUSH2', 'OP_82', 'PUSH2', 'JUMP']
4665 4731 ['JUMPDEST', 'PUSH1', 'PUSH2', 'PUSH1', 'OP_8D', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_81', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'OP_83', 'ISZERO', 'ISZERO', 'MUL', 'OR', 'OP_90', 'SSTORE', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'OP_94', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'JUMP']
4907 4995 ['JUMPDEST', 'ADD', 'SLOAD', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_90', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'SSTORE', 'OP_80', 'OP_80', 'PUSH1', 'ADD', 'OP_91', 'POP', 'POP', 'PUSH2', 'JUMP']


thinking
**Summarizing findings on external calls and reentrancy risks**

I'll synthesize possible security issues including untrusted external CALLs with computed targets and values lacking detected access control, potential reentrancy risks due to external calls before state writes without guards, and low-level token transfers missing explicit return-data validation. I want to capture these cautiously with evidence and severity assessments, noting uncertainty from heuristics and bytecode analysis limits.
thinking
**Detailing evidence and crafting JSON report**

I'm organizing clear findings on low-level CALLs with computed targets lacking visible authorization, potential reentrancy issues without guards, and unchecked token transfer return data. I'll include precise hex PCs for call and SSTORE locations, reflect uncertainties from detector inconsistencies, and prepare a JSON summary following the specified schema.
codex
{"no_findings":false,"summary":"Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.","findings":[{"severity":"medium","category":"access_control","title":"Low-level CALLs with computed target/value lack visible authorization","exploit_scenario":"If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass.","recommendation":"Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.","evidence":"Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).","locations":["pc:0x624","pc:0xdb2","pc:0x1046"]},{"severity":"low","category":"reentrancy","title":"External CALLs combined with storage writes; no reentrancy guard detected","exploit_scenario":"If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain.","recommendation":"Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.","evidence":"CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.","locations":["pc:0x624","pc:0xdb2","pc:0x1046","pc:0x0ba4","pc:0x1239","pc:0x132b"]},{"severity":"low","category":"other","title":"Low-level token transfer call does not appear to validate return data","exploit_scenario":"If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches.","recommendation":"Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.","evidence":"CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.","locations":["pc:0xdb2","pc:0x1046"]}]}
tokens used
54,670
Metadata
{
    "codex": {
        "ran_at": "2026-01-11T05:09:35.195560+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 10108,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.",
    "raw_final": {
        "summary": "Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.",
        "findings": [
            {
                "title": "Low-level CALLs with computed target/value lack visible authorization",
                "category": "access_control",
                "evidence": "Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).",
                "severity": "medium",
                "locations": [
                    "pc:0x624",
                    "pc:0xdb2",
                    "pc:0x1046"
                ],
                "recommendation": "Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.",
                "exploit_scenario": "If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass."
            },
            {
                "title": "External CALLs combined with storage writes; no reentrancy guard detected",
                "category": "reentrancy",
                "evidence": "CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.",
                "severity": "low",
                "locations": [
                    "pc:0x624",
                    "pc:0xdb2",
                    "pc:0x1046",
                    "pc:0x0ba4",
                    "pc:0x1239",
                    "pc:0x132b"
                ],
                "recommendation": "Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.",
                "exploit_scenario": "If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain."
            },
            {
                "title": "Low-level token transfer call does not appear to validate return data",
                "category": "other",
                "evidence": "CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.",
                "severity": "low",
                "locations": [
                    "pc:0xdb2",
                    "pc:0x1046"
                ],
                "recommendation": "Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.",
                "exploit_scenario": "If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
0
Total opcodes
3041
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x008e
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002e: SWAP1
0000002f: DIV
00000030: PUSH4 0xffffffff
00000035: AND
00000036: DUP1
00000037: PUSH4 0x313ce567
0000003c: EQ
0000003d: PUSH2 0x0105
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0x4123cb6b
00000047: EQ
00000048: PUSH2 0x0136
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0x472d71d1
00000052: EQ
00000053: PUSH2 0x0161
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0x746c9171
0000005d: EQ
0000005e: PUSH2 0x021a
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0x86435354
00000068: EQ
00000069: PUSH2 0x0245
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0x88671ad4
00000073: EQ
00000074: PUSH2 0x02fe
00000077: JUMPI
00000078: DUP1
00000079: PUSH4 0xaaf5eb68
0000007e: EQ
0000007f: PUSH2 0x044a
00000082: JUMPI
00000083: DUP1
00000084: PUSH4 0xbfe370d9
00000089: EQ
0000008a: PUSH2 0x0475
0000008d: JUMPI
0000008e: JUMPDEST
0000008f: PUSH1 0x00
00000091: CALLVALUE
00000092: GT
00000093: ISZERO
00000094: PUSH2 0x0103
00000097: JUMPI
00000098: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c
000000b9: CALLER
000000ba: CALLVALUE
000000bb: PUSH1 0x40
000000bd: MLOAD
000000be: DUP1
000000bf: DUP4
000000c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000d5: AND
000000d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000eb: AND
000000ec: DUP2
000000ed: MSTORE
000000ee: PUSH1 0x20
000000f0: ADD
000000f1: DUP3
000000f2: DUP2
000000f3: MSTORE
000000f4: PUSH1 0x20
000000f6: ADD
000000f7: SWAP3
000000f8: POP
000000f9: POP
000000fa: POP
000000fb: PUSH1 0x40
000000fd: MLOAD
000000fe: DUP1
000000ff: SWAP2
00000100: SUB
00000101: SWAP1
00000102: LOG1
00000103: JUMPDEST
00000104: STOP
00000105: JUMPDEST
00000106: CALLVALUE
00000107: DUP1
00000108: ISZERO
00000109: PUSH2 0x0111
0000010c: JUMPI
0000010d: PUSH1 0x00
0000010f: DUP1
00000110: REVERT
00000111: JUMPDEST
00000112: POP
00000113: PUSH2 0x011a
00000116: PUSH2 0x04fa
00000119: JUMP
0000011a: JUMPDEST
0000011b: PUSH1 0x40
0000011d: MLOAD
0000011e: DUP1
0000011f: DUP3
00000120: PUSH1 0xff
00000122: AND
00000123: PUSH1 0xff
00000125: AND
00000126: DUP2
00000127: MSTORE
00000128: PUSH1 0x20
0000012a: ADD
0000012b: SWAP2
0000012c: POP
0000012d: POP
0000012e: PUSH1 0x40
00000130: MLOAD
00000131: DUP1
00000132: SWAP2
00000133: SUB
00000134: SWAP1
00000135: RETURN
00000136: JUMPDEST
00000137: CALLVALUE
00000138: DUP1
00000139: ISZERO
0000013a: PUSH2 0x0142
0000013d: JUMPI
0000013e: PUSH1 0x00
00000140: DUP1
00000141: REVERT
00000142: JUMPDEST
00000143: POP
00000144: PUSH2 0x014b
00000147: PUSH2 0x04ff
0000014a: JUMP
0000014b: JUMPDEST
0000014c: PUSH1 0x40
0000014e: MLOAD
0000014f: DUP1
00000150: DUP3
00000151: DUP2
00000152: MSTORE
00000153: PUSH1 0x20
00000155: ADD
00000156: SWAP2
00000157: POP
00000158: POP
00000159: PUSH1 0x40
0000015b: MLOAD
0000015c: DUP1
0000015d: SWAP2
0000015e: SUB
0000015f: SWAP1
00000160: RETURN
00000161: JUMPDEST
00000162: CALLVALUE
00000163: DUP1
00000164: ISZERO
00000165: PUSH2 0x016d
00000168: JUMPI
00000169: PUSH1 0x00
0000016b: DUP1
0000016c: REVERT
0000016d: JUMPDEST
0000016e: POP
0000016f: PUSH2 0x01d8
00000172: PUSH1 0x04
00000174: DUP1
00000175: CALLDATASIZE
00000176: SUB
00000177: DUP2
00000178: ADD
00000179: SWAP1
0000017a: DUP1
0000017b: DUP1
0000017c: CALLDATALOAD
0000017d: PUSH1 0x00
0000017f: NOT
00000180: AND
00000181: SWAP1
00000182: PUSH1 0x20
00000184: ADD
00000185: SWAP1
00000186: SWAP3
00000187: SWAP2
00000188: SWAP1
00000189: DUP1
0000018a: CALLDATALOAD
0000018b: PUSH1 0x00
0000018d: NOT
0000018e: AND
0000018f: SWAP1
00000190: PUSH1 0x20
00000192: ADD
00000193: SWAP1
00000194: SWAP3
00000195: SWAP2
00000196: SWAP1
00000197: DUP1
00000198: CALLDATALOAD
00000199: PUSH1 0x00
0000019b: NOT
0000019c: AND
0000019d: SWAP1
0000019e: PUSH1 0x20
000001a0: ADD
000001a1: SWAP1
000001a2: SWAP3
000001a3: SWAP2
000001a4: SWAP1
000001a5: DUP1
000001a6: CALLDATALOAD
000001a7: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000001c7: NOT
000001c8: AND
000001c9: SWAP1
000001ca: PUSH1 0x20
000001cc: ADD
000001cd: SWAP1
000001ce: SWAP3
000001cf: SWAP2
000001d0: SWAP1
000001d1: POP
000001d2: POP
000001d3: POP
000001d4: PUSH2 0x0505
000001d7: JUMP
000001d8: JUMPDEST
000001d9: PUSH1 0x40
000001db: MLOAD
000001dc: DUP1
000001dd: DUP3
000001de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001f3: AND
000001f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000209: AND
0000020a: DUP2
0000020b: MSTORE
0000020c: PUSH1 0x20
0000020e: ADD
0000020f: SWAP2
00000210: POP
00000211: POP
00000212: PUSH1 0x40
00000214: MLOAD
00000215: DUP1
00000216: SWAP2
00000217: SUB
00000218: SWAP1
00000219: RETURN
0000021a: JUMPDEST
0000021b: CALLVALUE
0000021c: DUP1
0000021d: ISZERO
0000021e: PUSH2 0x0226
00000221: JUMPI
00000222: PUSH1 0x00
00000224: DUP1
00000225: REVERT
00000226: JUMPDEST
00000227: POP
00000228: PUSH2 0x022f
0000022b: PUSH2 0x064d
0000022e: JUMP
0000022f: JUMPDEST
00000230: PUSH1 0x40
00000232: MLOAD
00000233: DUP1
00000234: DUP3
00000235: DUP2
00000236: MSTORE
00000237: PUSH1 0x20
00000239: ADD
0000023a: SWAP2
0000023b: POP
0000023c: POP
0000023d: PUSH1 0x40
0000023f: MLOAD
00000240: DUP1
00000241: SWAP2
00000242: SUB
00000243: SWAP1
00000244: RETURN
00000245: JUMPDEST
00000246: CALLVALUE
00000247: DUP1
00000248: ISZERO
00000249: PUSH2 0x0251
0000024c: JUMPI
0000024d: PUSH1 0x00
0000024f: DUP1
00000250: REVERT
00000251: JUMPDEST
00000252: POP
00000253: PUSH2 0x02bc
00000256: PUSH1 0x04
00000258: DUP1
00000259: CALLDATASIZE
0000025a: SUB
0000025b: DUP2
0000025c: ADD
0000025d: SWAP1
0000025e: DUP1
0000025f: DUP1
00000260: CALLDATALOAD
00000261: PUSH1 0x00
00000263: NOT
00000264: AND
00000265: SWAP1
00000266: PUSH1 0x20
00000268: ADD
00000269: SWAP1
0000026a: SWAP3
0000026b: SWAP2
0000026c: SWAP1
0000026d: DUP1
0000026e: CALLDATALOAD
0000026f: PUSH1 0x00
00000271: NOT
00000272: AND
00000273: SWAP1
00000274: PUSH1 0x20
00000276: ADD
00000277: SWAP1
00000278: SWAP3
00000279: SWAP2
0000027a: SWAP1
0000027b: DUP1
0000027c: CALLDATALOAD
0000027d: PUSH1 0x00
0000027f: NOT
00000280: AND
00000281: SWAP1
00000282: PUSH1 0x20
00000284: ADD
00000285: SWAP1
00000286: SWAP3
00000287: SWAP2
00000288: SWAP1
00000289: DUP1
0000028a: CALLDATALOAD
0000028b: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000002ab: NOT
000002ac: AND
000002ad: SWAP1
000002ae: PUSH1 0x20
000002b0: ADD
000002b1: SWAP1
000002b2: SWAP3
000002b3: SWAP2
000002b4: SWAP1
000002b5: POP
000002b6: POP
000002b7: POP
000002b8: PUSH2 0x0653
000002bb: JUMP
000002bc: JUMPDEST
000002bd: PUSH1 0x40
000002bf: MLOAD
000002c0: DUP1
000002c1: DUP3
000002c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002d7: AND
000002d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002ed: AND
000002ee: DUP2
000002ef: MSTORE
000002f0: PUSH1 0x20
000002f2: ADD
000002f3: SWAP2
000002f4: POP
000002f5: POP
000002f6: PUSH1 0x40
000002f8: MLOAD
000002f9: DUP1
000002fa: SWAP2
000002fb: SUB
000002fc: SWAP1
000002fd: RETURN
000002fe: JUMPDEST
000002ff: CALLVALUE
00000300: DUP1
00000301: ISZERO
00000302: PUSH2 0x030a
00000305: JUMPI
00000306: PUSH1 0x00
00000308: DUP1
00000309: REVERT
0000030a: JUMPDEST
0000030b: POP
0000030c: PUSH2 0x03cf
0000030f: PUSH1 0x04
00000311: DUP1
00000312: CALLDATASIZE
00000313: SUB
00000314: DUP2
00000315: ADD
00000316: SWAP1
00000317: DUP1
00000318: DUP1
00000319: CALLDATALOAD
0000031a: SWAP1
0000031b: PUSH1 0x20
0000031d: ADD
0000031e: SWAP1
0000031f: DUP3
00000320: ADD
00000321: DUP1
00000322: CALLDATALOAD
00000323: SWAP1
00000324: PUSH1 0x20
00000326: ADD
00000327: SWAP2
00000328: SWAP1
00000329: SWAP2
0000032a: SWAP3
0000032b: SWAP4
0000032c: SWAP2
0000032d: SWAP3
0000032e: SWAP4
0000032f: SWAP1
00000330: DUP1
00000331: CALLDATALOAD
00000332: SWAP1
00000333: PUSH1 0x20
00000335: ADD
00000336: SWAP1
00000337: DUP3
00000338: ADD
00000339: DUP1
0000033a: CALLDATALOAD
0000033b: SWAP1
0000033c: PUSH1 0x20
0000033e: ADD
0000033f: SWAP2
00000340: SWAP1
00000341: SWAP2
00000342: SWAP3
00000343: SWAP4
00000344: SWAP2
00000345: SWAP3
00000346: SWAP4
00000347: SWAP1
00000348: DUP1
00000349: CALLDATALOAD
0000034a: SWAP1
0000034b: PUSH1 0x20
0000034d: ADD
0000034e: SWAP1
0000034f: DUP3
00000350: ADD
00000351: DUP1
00000352: CALLDATALOAD
00000353: SWAP1
00000354: PUSH1 0x20
00000356: ADD
00000357: SWAP2
00000358: SWAP1
00000359: SWAP2
0000035a: SWAP3
0000035b: SWAP4
0000035c: SWAP2
0000035d: SWAP3
0000035e: SWAP4
0000035f: SWAP1
00000360: DUP1
00000361: CALLDATALOAD
00000362: SWAP1
00000363: PUSH1 0x20
00000365: ADD
00000366: SWAP1
00000367: DUP3
00000368: ADD
00000369: DUP1
0000036a: CALLDATALOAD
0000036b: SWAP1
0000036c: PUSH1 0x20
0000036e: ADD
0000036f: SWAP2
00000370: SWAP1
00000371: SWAP2
00000372: SWAP3
00000373: SWAP4
00000374: SWAP2
00000375: SWAP3
00000376: SWAP4
00000377: SWAP1
00000378: DUP1
00000379: CALLDATALOAD
0000037a: SWAP1
0000037b: PUSH1 0x20
0000037d: ADD
0000037e: SWAP1
0000037f: DUP3
00000380: ADD
00000381: DUP1
00000382: CALLDATALOAD
00000383: SWAP1
00000384: PUSH1 0x20
00000386: ADD
00000387: SWAP2
00000388: SWAP1
00000389: SWAP2
0000038a: SWAP3
0000038b: SWAP4
0000038c: SWAP2
0000038d: SWAP3
0000038e: SWAP4
0000038f: SWAP1
00000390: DUP1
00000391: CALLDATALOAD
00000392: SWAP1
00000393: PUSH1 0x20
00000395: ADD
00000396: SWAP1
00000397: DUP3
00000398: ADD
00000399: DUP1
0000039a: CALLDATALOAD
0000039b: SWAP1
0000039c: PUSH1 0x20
0000039e: ADD
0000039f: SWAP2
000003a0: SWAP1
000003a1: SWAP2
000003a2: SWAP3
000003a3: SWAP4
000003a4: SWAP2
000003a5: SWAP3
000003a6: SWAP4
000003a7: SWAP1
000003a8: DUP1
000003a9: CALLDATALOAD
000003aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003bf: AND
000003c0: SWAP1
000003c1: PUSH1 0x20
000003c3: ADD
000003c4: SWAP1
000003c5: SWAP3
000003c6: SWAP2
000003c7: SWAP1
000003c8: POP
000003c9: POP
000003ca: POP
000003cb: PUSH2 0x066b
000003ce: JUMP
000003cf: JUMPDEST
000003d0: PUSH1 0x40
000003d2: MLOAD
000003d3: DUP1
000003d4: DUP1
000003d5: PUSH1 0x20
000003d7: ADD
000003d8: DUP3
000003d9: DUP2
000003da: SUB
000003db: DUP3
000003dc: MSTORE
000003dd: DUP4
000003de: DUP2
000003df: DUP2
000003e0: MLOAD
000003e1: DUP2
000003e2: MSTORE
000003e3: PUSH1 0x20
000003e5: ADD
000003e6: SWAP2
000003e7: POP
000003e8: DUP1
000003e9: MLOAD
000003ea: SWAP1
000003eb: PUSH1 0x20
000003ed: ADD
000003ee: SWAP1
000003ef: DUP1
000003f0: DUP4
000003f1: DUP4
000003f2: PUSH1 0x00
000003f4: JUMPDEST
000003f5: DUP4
000003f6: DUP2
000003f7: LT
000003f8: ISZERO
000003f9: PUSH2 0x040f
000003fc: JUMPI
000003fd: DUP1
000003fe: DUP3
000003ff: ADD
00000400: MLOAD
00000401: DUP2
00000402: DUP5
00000403: ADD
00000404: MSTORE
00000405: PUSH1 0x20
00000407: DUP2
00000408: ADD
00000409: SWAP1
0000040a: POP
0000040b: PUSH2 0x03f4
0000040e: JUMP
0000040f: JUMPDEST
00000410: POP
00000411: POP
00000412: POP
00000413: POP
00000414: SWAP1
00000415: POP
00000416: SWAP1
00000417: DUP2
00000418: ADD
00000419: SWAP1
0000041a: PUSH1 0x1f
0000041c: AND
0000041d: DUP1
0000041e: ISZERO
0000041f: PUSH2 0x043c
00000422: JUMPI
00000423: DUP1
00000424: DUP3
00000425: SUB
00000426: DUP1
00000427: MLOAD
00000428: PUSH1 0x01
0000042a: DUP4
0000042b: PUSH1 0x20
0000042d: SUB
0000042e: PUSH2 0x0100
00000431: EXP
00000432: SUB
00000433: NOT
00000434: AND
00000435: DUP2
00000436: MSTORE
00000437: PUSH1 0x20
00000439: ADD
0000043a: SWAP2
0000043b: POP
0000043c: JUMPDEST
0000043d: POP
0000043e: SWAP3
0000043f: POP
00000440: POP
00000441: POP
00000442: PUSH1 0x40
00000444: MLOAD
00000445: DUP1
00000446: SWAP2
00000447: SUB
00000448: SWAP1
00000449: RETURN
0000044a: JUMPDEST
0000044b: CALLVALUE
0000044c: DUP1
0000044d: ISZERO
0000044e: PUSH2 0x0456
00000451: JUMPI
00000452: PUSH1 0x00
00000454: DUP1
00000455: REVERT
00000456: JUMPDEST
00000457: POP
00000458: PUSH2 0x045f
0000045b: PUSH2 0x084c
0000045e: JUMP
0000045f: JUMPDEST
00000460: PUSH1 0x40
00000462: MLOAD
00000463: DUP1
00000464: DUP3
00000465: DUP2
00000466: MSTORE
00000467: PUSH1 0x20
00000469: ADD
0000046a: SWAP2
0000046b: POP
0000046c: POP
0000046d: PUSH1 0x40
0000046f: MLOAD
00000470: DUP1
00000471: SWAP2
00000472: SUB
00000473: SWAP1
00000474: RETURN
00000475: JUMPDEST
00000476: CALLVALUE
00000477: DUP1
00000478: ISZERO
00000479: PUSH2 0x0481
0000047c: JUMPI
0000047d: PUSH1 0x00
0000047f: DUP1
00000480: REVERT
00000481: JUMPDEST
00000482: POP
00000483: PUSH2 0x04dc
00000486: PUSH1 0x04
00000488: DUP1
00000489: CALLDATASIZE
0000048a: SUB
0000048b: DUP2
0000048c: ADD
0000048d: SWAP1
0000048e: DUP1
0000048f: DUP1
00000490: CALLDATALOAD
00000491: SWAP1
00000492: PUSH1 0x20
00000494: ADD
00000495: SWAP1
00000496: DUP3
00000497: ADD
00000498: DUP1
00000499: CALLDATALOAD
0000049a: SWAP1
0000049b: PUSH1 0x20
0000049d: ADD
0000049e: SWAP1
0000049f: DUP1
000004a0: DUP1
000004a1: PUSH1 0x1f
000004a3: ADD
000004a4: PUSH1 0x20
000004a6: DUP1
000004a7: SWAP2
000004a8: DIV
000004a9: MUL
000004aa: PUSH1 0x20
000004ac: ADD
000004ad: PUSH1 0x40
000004af: MLOAD
000004b0: SWAP1
000004b1: DUP2
000004b2: ADD
000004b3: PUSH1 0x40
000004b5: MSTORE
000004b6: DUP1
000004b7: SWAP4
000004b8: SWAP3
000004b9: SWAP2
000004ba: SWAP1
000004bb: DUP2
000004bc: DUP2
000004bd: MSTORE
000004be: PUSH1 0x20
000004c0: ADD
000004c1: DUP4
000004c2: DUP4
000004c3: DUP1
000004c4: DUP3
000004c5: DUP5
000004c6: CALLDATACOPY
000004c7: DUP3
000004c8: ADD
000004c9: SWAP2
000004ca: POP
000004cb: POP
000004cc: POP
000004cd: POP
000004ce: POP
000004cf: POP
000004d0: SWAP2
000004d1: SWAP3
000004d2: SWAP2
000004d3: SWAP3
000004d4: SWAP1
000004d5: POP
000004d6: POP
000004d7: POP
000004d8: PUSH2 0x0857
000004db: JUMP
000004dc: JUMPDEST
000004dd: PUSH1 0x40
000004df: MLOAD
000004e0: DUP1
000004e1: DUP3
000004e2: PUSH1 0x00
000004e4: NOT
000004e5: AND
000004e6: PUSH1 0x00
000004e8: NOT
000004e9: AND
000004ea: DUP2
000004eb: MSTORE
000004ec: PUSH1 0x20
000004ee: ADD
000004ef: SWAP2
000004f0: POP
000004f1: POP
000004f2: PUSH1 0x40
000004f4: MLOAD
000004f5: DUP1
000004f6: SWAP2
000004f7: SUB
000004f8: SWAP1
000004f9: RETURN
000004fa: JUMPDEST
000004fb: PUSH1 0x12
000004fd: DUP2
000004fe: JUMP
000004ff: JUMPDEST
00000500: PUSH1 0x01
00000502: SLOAD
00000503: DUP2
00000504: JUMP
00000505: JUMPDEST
00000506: PUSH1 0x00
00000508: DUP1
00000509: DUP3
0000050a: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
0000052b: SWAP1
0000052c: DIV
0000052d: SWAP1
0000052e: POP
0000052f: PUSH1 0x00
00000531: PUSH1 0xff
00000533: AND
00000534: DUP4
00000535: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
00000556: SWAP1
00000557: DIV
00000558: PUSH1 0xff
0000055a: AND
0000055b: EQ
0000055c: DUP1
0000055d: PUSH2 0x058f
00000560: JUMPI
00000561: POP
00000562: PUSH1 0x01
00000564: PUSH1 0xff
00000566: AND
00000567: DUP4
00000568: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
00000589: SWAP1
0000058a: DIV
0000058b: PUSH1 0xff
0000058d: AND
0000058e: EQ
0000058f: JUMPDEST
00000590: ISZERO
00000591: PUSH2 0x05be
00000594: JUMPI
00000595: PUSH1 0x1b
00000597: DUP4
00000598: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
000005b9: SWAP1
000005ba: DIV
000005bb: ADD
000005bc: SWAP1
000005bd: POP
000005be: JUMPDEST
000005bf: PUSH1 0x01
000005c1: DUP7
000005c2: DUP3
000005c3: DUP8
000005c4: DUP8
000005c5: PUSH1 0x40
000005c7: MLOAD
000005c8: PUSH1 0x00
000005ca: DUP2
000005cb: MSTORE
000005cc: PUSH1 0x20
000005ce: ADD
000005cf: PUSH1 0x40
000005d1: MSTORE
000005d2: PUSH1 0x40
000005d4: MLOAD
000005d5: DUP1
000005d6: DUP6
000005d7: PUSH1 0x00
000005d9: NOT
000005da: AND
000005db: PUSH1 0x00
000005dd: NOT
000005de: AND
000005df: DUP2
000005e0: MSTORE
000005e1: PUSH1 0x20
000005e3: ADD
000005e4: DUP5
000005e5: PUSH1 0xff
000005e7: AND
000005e8: PUSH1 0xff
000005ea: AND
000005eb: DUP2
000005ec: MSTORE
000005ed: PUSH1 0x20
000005ef: ADD
000005f0: DUP4
000005f1: PUSH1 0x00
000005f3: NOT
000005f4: AND
000005f5: PUSH1 0x00
000005f7: NOT
000005f8: AND
000005f9: DUP2
000005fa: MSTORE
000005fb: PUSH1 0x20
000005fd: ADD
000005fe: DUP3
000005ff: PUSH1 0x00
00000601: NOT
00000602: AND
00000603: PUSH1 0x00
00000605: NOT
00000606: AND
00000607: DUP2
00000608: MSTORE
00000609: PUSH1 0x20
0000060b: ADD
0000060c: SWAP5
0000060d: POP
0000060e: POP
0000060f: POP
00000610: POP
00000611: POP
00000612: PUSH1 0x20
00000614: PUSH1 0x40
00000616: MLOAD
00000617: PUSH1 0x20
00000619: DUP2
0000061a: SUB
0000061b: SWAP1
0000061c: DUP1
0000061d: DUP5
0000061e: SUB
0000061f: SWAP1
00000620: PUSH1 0x00
00000622: DUP7
00000623: GAS
00000624: CALL
00000625: ISZERO
00000626: DUP1
00000627: ISZERO
00000628: PUSH2 0x0635
0000062b: JUMPI
0000062c: RETURNDATASIZE
0000062d: PUSH1 0x00
0000062f: DUP1
00000630: RETURNDATACOPY
00000631: RETURNDATASIZE
00000632: PUSH1 0x00
00000634: REVERT
00000635: JUMPDEST
00000636: POP
00000637: POP
00000638: POP
00000639: PUSH1 0x20
0000063b: PUSH1 0x40
0000063d: MLOAD
0000063e: SUB
0000063f: MLOAD
00000640: SWAP2
00000641: POP
00000642: DUP2
00000643: SWAP2
00000644: POP
00000645: POP
00000646: SWAP5
00000647: SWAP4
00000648: POP
00000649: POP
0000064a: POP
0000064b: POP
0000064c: JUMP
0000064d: JUMPDEST
0000064e: PUSH1 0x00
00000650: SLOAD
00000651: DUP2
00000652: JUMP
00000653: JUMPDEST
00000654: PUSH1 0x00
00000656: PUSH2 0x0661
00000659: DUP6
0000065a: DUP6
0000065b: DUP6
0000065c: DUP6
0000065d: PUSH2 0x0505
00000660: JUMP
00000661: JUMPDEST
00000662: SWAP1
00000663: POP
00000664: SWAP5
00000665: SWAP4
00000666: POP
00000667: POP
00000668: POP
00000669: POP
0000066a: JUMP
0000066b: JUMPDEST
0000066c: PUSH1 0x60
0000066e: PUSH1 0x00
00000670: PUSH2 0x0678
00000673: CALLER
00000674: PUSH2 0x0865
00000677: JUMP
00000678: JUMPDEST
00000679: ISZERO
0000067a: ISZERO
0000067b: PUSH2 0x0683
0000067e: JUMPI
0000067f: PUSH1 0x00
00000681: DUP1
00000682: REVERT
00000683: JUMPDEST
00000684: DUP11
00000685: DUP11
00000686: SWAP1
00000687: POP
00000688: DUP14
00000689: DUP14
0000068a: SWAP1
0000068b: POP
0000068c: EQ
0000068d: ISZERO
0000068e: ISZERO
0000068f: PUSH2 0x0697
00000692: JUMPI
00000693: PUSH1 0x00
00000695: DUP1
00000696: REVERT
00000697: JUMPDEST
00000698: PUSH2 0x0733
0000069b: DUP16
0000069c: DUP16
0000069d: DUP1
0000069e: DUP1
0000069f: PUSH1 0x1f
000006a1: ADD
000006a2: PUSH1 0x20
000006a4: DUP1
000006a5: SWAP2
000006a6: DIV
000006a7: MUL
000006a8: PUSH1 0x20
000006aa: ADD
000006ab: PUSH1 0x40
000006ad: MLOAD
000006ae: SWAP1
000006af: DUP2
000006b0: ADD
000006b1: PUSH1 0x40
000006b3: MSTORE
000006b4: DUP1
000006b5: SWAP4
000006b6: SWAP3
000006b7: SWAP2
000006b8: SWAP1
000006b9: DUP2
000006ba: DUP2
000006bb: MSTORE
000006bc: PUSH1 0x20
000006be: ADD
000006bf: DUP4
000006c0: DUP4
000006c1: DUP1
000006c2: DUP3
000006c3: DUP5
000006c4: CALLDATACOPY
000006c5: DUP3
000006c6: ADD
000006c7: SWAP2
000006c8: POP
000006c9: POP
000006ca: POP
000006cb: POP
000006cc: POP
000006cd: POP
000006ce: DUP15
000006cf: DUP15
000006d0: DUP1
000006d1: DUP1
000006d2: PUSH1 0x20
000006d4: MUL
000006d5: PUSH1 0x20
000006d7: ADD
000006d8: PUSH1 0x40
000006da: MLOAD
000006db: SWAP1
000006dc: DUP2
000006dd: ADD
000006de: PUSH1 0x40
000006e0: MSTORE
000006e1: DUP1
000006e2: SWAP4
000006e3: SWAP3
000006e4: SWAP2
000006e5: SWAP1
000006e6: DUP2
000006e7: DUP2
000006e8: MSTORE
000006e9: PUSH1 0x20
000006eb: ADD
000006ec: DUP4
000006ed: DUP4
000006ee: PUSH1 0x20
000006f0: MUL
000006f1: DUP1
000006f2: DUP3
000006f3: DUP5
000006f4: CALLDATACOPY
000006f5: DUP3
000006f6: ADD
000006f7: SWAP2
000006f8: POP
000006f9: POP
000006fa: POP
000006fb: POP
000006fc: POP
000006fd: POP
000006fe: DUP14
000006ff: DUP14
00000700: DUP1
00000701: DUP1
00000702: PUSH1 0x20
00000704: MUL
00000705: PUSH1 0x20
00000707: ADD
00000708: PUSH1 0x40
0000070a: MLOAD
0000070b: SWAP1
0000070c: DUP2
0000070d: ADD
0000070e: PUSH1 0x40
00000710: MSTORE
00000711: DUP1
00000712: SWAP4
00000713: SWAP3
00000714: SWAP2
00000715: SWAP1
00000716: DUP2
00000717: DUP2
00000718: MSTORE
00000719: PUSH1 0x20
0000071b: ADD
0000071c: DUP4
0000071d: DUP4
0000071e: PUSH1 0x20
00000720: MUL
00000721: DUP1
00000722: DUP3
00000723: DUP5
00000724: CALLDATACOPY
00000725: DUP3
00000726: ADD
00000727: SWAP2
00000728: POP
00000729: POP
0000072a: POP
0000072b: POP
0000072c: POP
0000072d: POP
0000072e: DUP7
0000072f: PUSH2 0x089b
00000732: JUMP
00000733: JUMPDEST
00000734: SWAP1
00000735: POP
00000736: PUSH2 0x07ce
00000739: DUP2
0000073a: DUP11
0000073b: DUP11
0000073c: DUP1
0000073d: DUP1
0000073e: PUSH1 0x20
00000740: MUL
00000741: PUSH1 0x20
00000743: ADD
00000744: PUSH1 0x40
00000746: MLOAD
00000747: SWAP1
00000748: DUP2
00000749: ADD
0000074a: PUSH1 0x40
0000074c: MSTORE
0000074d: DUP1
0000074e: SWAP4
0000074f: SWAP3
00000750: SWAP2
00000751: SWAP1
00000752: DUP2
00000753: DUP2
00000754: MSTORE
00000755: PUSH1 0x20
00000757: ADD
00000758: DUP4
00000759: DUP4
0000075a: PUSH1 0x20
0000075c: MUL
0000075d: DUP1
0000075e: DUP3
0000075f: DUP5
00000760: CALLDATACOPY
00000761: DUP3
00000762: ADD
00000763: SWAP2
00000764: POP
00000765: POP
00000766: POP
00000767: POP
00000768: POP
00000769: POP
0000076a: DUP10
0000076b: DUP10
0000076c: DUP1
0000076d: DUP1
0000076e: PUSH1 0x20
00000770: MUL
00000771: PUSH1 0x20
00000773: ADD
00000774: PUSH1 0x40
00000776: MLOAD
00000777: SWAP1
00000778: DUP2
00000779: ADD
0000077a: PUSH1 0x40
0000077c: MSTORE
0000077d: DUP1
0000077e: SWAP4
0000077f: SWAP3
00000780: SWAP2
00000781: SWAP1
00000782: DUP2
00000783: DUP2
00000784: MSTORE
00000785: PUSH1 0x20
00000787: ADD
00000788: DUP4
00000789: DUP4
0000078a: PUSH1 0x20
0000078c: MUL
0000078d: DUP1
0000078e: DUP3
0000078f: DUP5
00000790: CALLDATACOPY
00000791: DUP3
00000792: ADD
00000793: SWAP2
00000794: POP
00000795: POP
00000796: POP
00000797: POP
00000798: POP
00000799: POP
0000079a: DUP9
0000079b: DUP9
0000079c: DUP1
0000079d: DUP1
0000079e: PUSH1 0x20
000007a0: MUL
000007a1: PUSH1 0x20
000007a3: ADD
000007a4: PUSH1 0x40
000007a6: MLOAD
000007a7: SWAP1
000007a8: DUP2
000007a9: ADD
000007aa: PUSH1 0x40
000007ac: MSTORE
000007ad: DUP1
000007ae: SWAP4
000007af: SWAP3
000007b0: SWAP2
000007b1: SWAP1
000007b2: DUP2
000007b3: DUP2
000007b4: MSTORE
000007b5: PUSH1 0x20
000007b7: ADD
000007b8: DUP4
000007b9: DUP4
000007ba: PUSH1 0x20
000007bc: MUL
000007bd: DUP1
000007be: DUP3
000007bf: DUP5
000007c0: CALLDATACOPY
000007c1: DUP3
000007c2: ADD
000007c3: SWAP2
000007c4: POP
000007c5: POP
000007c6: POP
000007c7: POP
000007c8: POP
000007c9: POP
000007ca: PUSH2 0x0a73
000007cd: JUMP
000007ce: JUMPDEST
000007cf: POP
000007d0: PUSH2 0x0839
000007d3: DUP2
000007d4: DUP15
000007d5: DUP15
000007d6: DUP1
000007d7: DUP1
000007d8: PUSH1 0x20
000007da: MUL
000007db: PUSH1 0x20
000007dd: ADD
000007de: PUSH1 0x40
000007e0: MLOAD
000007e1: SWAP1
000007e2: DUP2
000007e3: ADD
000007e4: PUSH1 0x40
000007e6: MSTORE
000007e7: DUP1
000007e8: SWAP4
000007e9: SWAP3
000007ea: SWAP2
000007eb: SWAP1
000007ec: DUP2
000007ed: DUP2
000007ee: MSTORE
000007ef: PUSH1 0x20
000007f1: ADD
000007f2: DUP4
000007f3: DUP4
000007f4: PUSH1 0x20
000007f6: MUL
000007f7: DUP1
000007f8: DUP3
000007f9: DUP5
000007fa: CALLDATACOPY
000007fb: DUP3
000007fc: ADD
000007fd: SWAP2
000007fe: POP
000007ff: POP
00000800: POP
00000801: POP
00000802: POP
00000803: POP
00000804: DUP14
00000805: DUP14
00000806: DUP1
00000807: DUP1
00000808: PUSH1 0x20
0000080a: MUL
0000080b: PUSH1 0x20
0000080d: ADD
0000080e: PUSH1 0x40
00000810: MLOAD
00000811: SWAP1
00000812: DUP2
00000813: ADD
00000814: PUSH1 0x40
00000816: MSTORE
00000817: DUP1
00000818: SWAP4
00000819: SWAP3
0000081a: SWAP2
0000081b: SWAP1
0000081c: DUP2
0000081d: DUP2
0000081e: MSTORE
0000081f: PUSH1 0x20
00000821: ADD
00000822: DUP4
00000823: DUP4
00000824: PUSH1 0x20
00000826: MUL
00000827: DUP1
00000828: DUP3
00000829: DUP5
0000082a: CALLDATACOPY
0000082b: DUP3
0000082c: ADD
0000082d: SWAP2
0000082e: POP
0000082f: POP
00000830: POP
00000831: POP
00000832: POP
00000833: POP
00000834: DUP7
00000835: PUSH2 0x0c37
00000838: JUMP
00000839: JUMPDEST
0000083a: POP
0000083b: POP
0000083c: SWAP14
0000083d: SWAP13
0000083e: POP
0000083f: POP
00000840: POP
00000841: POP
00000842: POP
00000843: POP
00000844: POP
00000845: POP
00000846: POP
00000847: POP
00000848: POP
00000849: POP
0000084a: POP
0000084b: JUMP
0000084c: JUMPDEST
0000084d: PUSH1 0x12
0000084f: PUSH1 0xff
00000851: AND
00000852: PUSH1 0x0a
00000854: EXP
00000855: DUP2
00000856: JUMP
00000857: JUMPDEST
00000858: PUSH1 0x00
0000085a: PUSH1 0x20
0000085c: DUP3
0000085d: ADD
0000085e: MLOAD
0000085f: SWAP1
00000860: POP
00000861: SWAP2
00000862: SWAP1
00000863: POP
00000864: JUMP
00000865: JUMPDEST
00000866: PUSH1 0x00
00000868: DUP1
00000869: PUSH2 0x0102
0000086c: PUSH1 0x00
0000086e: DUP5
0000086f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000884: AND
00000885: DUP2
00000886: MSTORE
00000887: PUSH1 0x20
00000889: ADD
0000088a: SWAP1
0000088b: DUP2
0000088c: MSTORE
0000088d: PUSH1 0x20
0000088f: ADD
00000890: PUSH1 0x00
00000892: KECCAK256
00000893: SLOAD
00000894: GT
00000895: SWAP1
00000896: POP
00000897: SWAP2
00000898: SWAP1
00000899: POP
0000089a: JUMP
0000089b: JUMPDEST
0000089c: PUSH1 0x00
0000089e: DUP1
0000089f: PUSH1 0x00
000008a1: DUP7
000008a2: DUP7
000008a3: DUP7
000008a4: DUP7
000008a5: PUSH1 0x40
000008a7: MLOAD
000008a8: DUP1
000008a9: DUP6
000008aa: DUP1
000008ab: MLOAD
000008ac: SWAP1
000008ad: PUSH1 0x20
000008af: ADD
000008b0: SWAP1
000008b1: DUP1
000008b2: DUP4
000008b3: DUP4
000008b4: JUMPDEST
000008b5: PUSH1 0x20
000008b7: DUP4
000008b8: LT
000008b9: ISZERO
000008ba: ISZERO
000008bb: PUSH2 0x08d9
000008be: JUMPI
000008bf: DUP1
000008c0: MLOAD
000008c1: DUP3
000008c2: MSTORE
000008c3: PUSH1 0x20
000008c5: DUP3
000008c6: ADD
000008c7: SWAP2
000008c8: POP
000008c9: PUSH1 0x20
000008cb: DUP2
000008cc: ADD
000008cd: SWAP1
000008ce: POP
000008cf: PUSH1 0x20
000008d1: DUP4
000008d2: SUB
000008d3: SWAP3
000008d4: POP
000008d5: PUSH2 0x08b4
000008d8: JUMP
000008d9: JUMPDEST
000008da: PUSH1 0x01
000008dc: DUP4
000008dd: PUSH1 0x20
000008df: SUB
000008e0: PUSH2 0x0100
000008e3: EXP
000008e4: SUB
000008e5: DUP1
000008e6: NOT
000008e7: DUP3
000008e8: MLOAD
000008e9: AND
000008ea: DUP2
000008eb: DUP5
000008ec: MLOAD
000008ed: AND
000008ee: DUP1
000008ef: DUP3
000008f0: OR
000008f1: DUP6
000008f2: MSTORE
000008f3: POP
000008f4: POP
000008f5: POP
000008f6: POP
000008f7: POP
000008f8: POP
000008f9: SWAP1
000008fa: POP
000008fb: ADD
000008fc: DUP5
000008fd: DUP1
000008fe: MLOAD
000008ff: SWAP1
00000900: PUSH1 0x20
00000902: ADD
00000903: SWAP1
00000904: PUSH1 0x20
00000906: MUL
00000907: DUP1
00000908: DUP4
00000909: DUP4
0000090a: PUSH1 0x00
0000090c: JUMPDEST
0000090d: DUP4
0000090e: DUP2
0000090f: LT
00000910: ISZERO
00000911: PUSH2 0x0927
00000914: JUMPI
00000915: DUP1
00000916: DUP3
00000917: ADD
00000918: MLOAD
00000919: DUP2
0000091a: DUP5
0000091b: ADD
0000091c: MSTORE
0000091d: PUSH1 0x20
0000091f: DUP2
00000920: ADD
00000921: SWAP1
00000922: POP
00000923: PUSH2 0x090c
00000926: JUMP
00000927: JUMPDEST
00000928: POP
00000929: POP
0000092a: POP
0000092b: POP
0000092c: SWAP1
0000092d: POP
0000092e: ADD
0000092f: DUP4
00000930: DUP1
00000931: MLOAD
00000932: SWAP1
00000933: PUSH1 0x20
00000935: ADD
00000936: SWAP1
00000937: PUSH1 0x20
00000939: MUL
0000093a: DUP1
0000093b: DUP4
0000093c: DUP4
0000093d: PUSH1 0x00
0000093f: JUMPDEST
00000940: DUP4
00000941: DUP2
00000942: LT
00000943: ISZERO
00000944: PUSH2 0x095a
00000947: JUMPI
00000948: DUP1
00000949: DUP3
0000094a: ADD
0000094b: MLOAD
0000094c: DUP2
0000094d: DUP5
0000094e: ADD
0000094f: MSTORE
00000950: PUSH1 0x20
00000952: DUP2
00000953: ADD
00000954: SWAP1
00000955: POP
00000956: PUSH2 0x093f
00000959: JUMP
0000095a: JUMPDEST
0000095b: POP
0000095c: POP
0000095d: POP
0000095e: POP
0000095f: SWAP1
00000960: POP
00000961: ADD
00000962: DUP3
00000963: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000978: AND
00000979: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000098e: AND
0000098f: PUSH13 0x01000000000000000000000000
0000099d: MUL
0000099e: DUP2
0000099f: MSTORE
000009a0: PUSH1 0x14
000009a2: ADD
000009a3: SWAP5
000009a4: POP
000009a5: POP
000009a6: POP
000009a7: POP
000009a8: POP
000009a9: PUSH1 0x40
000009ab: MLOAD
000009ac: DUP1
000009ad: SWAP2
000009ae: SUB
000009af: SWAP1
000009b0: KECCAK256
000009b1: SWAP2
000009b2: POP
000009b3: DUP2
000009b4: PUSH1 0x40
000009b6: MLOAD
000009b7: PUSH1 0x20
000009b9: ADD
000009ba: DUP1
000009bb: DUP1
000009bc: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
000009dd: DUP2
000009de: MSTORE
000009df: POP
000009e0: PUSH1 0x1c
000009e2: ADD
000009e3: DUP3
000009e4: PUSH1 0x00
000009e6: NOT
000009e7: AND
000009e8: PUSH1 0x00
000009ea: NOT
000009eb: AND
000009ec: DUP2
000009ed: MSTORE
000009ee: PUSH1 0x20
000009f0: ADD
000009f1: SWAP2
000009f2: POP
000009f3: POP
000009f4: PUSH1 0x40
000009f6: MLOAD
000009f7: PUSH1 0x20
000009f9: DUP2
000009fa: DUP4
000009fb: SUB
000009fc: SUB
000009fd: DUP2
000009fe: MSTORE
000009ff: SWAP1
00000a00: PUSH1 0x40
00000a02: MSTORE
00000a03: PUSH1 0x40
00000a05: MLOAD
00000a06: DUP1
00000a07: DUP3
00000a08: DUP1
00000a09: MLOAD
00000a0a: SWAP1
00000a0b: PUSH1 0x20
00000a0d: ADD
00000a0e: SWAP1
00000a0f: DUP1
00000a10: DUP4
00000a11: DUP4
00000a12: JUMPDEST
00000a13: PUSH1 0x20
00000a15: DUP4
00000a16: LT
00000a17: ISZERO
00000a18: ISZERO
00000a19: PUSH2 0x0a37
00000a1c: JUMPI
00000a1d: DUP1
00000a1e: MLOAD
00000a1f: DUP3
00000a20: MSTORE
00000a21: PUSH1 0x20
00000a23: DUP3
00000a24: ADD
00000a25: SWAP2
00000a26: POP
00000a27: PUSH1 0x20
00000a29: DUP2
00000a2a: ADD
00000a2b: SWAP1
00000a2c: POP
00000a2d: PUSH1 0x20
00000a2f: DUP4
00000a30: SUB
00000a31: SWAP3
00000a32: POP
00000a33: PUSH2 0x0a12
00000a36: JUMP
00000a37: JUMPDEST
00000a38: PUSH1 0x01
00000a3a: DUP4
00000a3b: PUSH1 0x20
00000a3d: SUB
00000a3e: PUSH2 0x0100
00000a41: EXP
00000a42: SUB
00000a43: DUP1
00000a44: NOT
00000a45: DUP3
00000a46: MLOAD
00000a47: AND
00000a48: DUP2
00000a49: DUP5
00000a4a: MLOAD
00000a4b: AND
00000a4c: DUP1
00000a4d: DUP3
00000a4e: OR
00000a4f: DUP6
00000a50: MSTORE
00000a51: POP
00000a52: POP
00000a53: POP
00000a54: POP
00000a55: POP
00000a56: POP
00000a57: SWAP1
00000a58: POP
00000a59: ADD
00000a5a: SWAP2
00000a5b: POP
00000a5c: POP
00000a5d: PUSH1 0x40
00000a5f: MLOAD
00000a60: DUP1
00000a61: SWAP2
00000a62: SUB
00000a63: SWAP1
00000a64: KECCAK256
00000a65: SWAP1
00000a66: POP
00000a67: DUP1
00000a68: SWAP3
00000a69: POP
00000a6a: POP
00000a6b: POP
00000a6c: SWAP5
00000a6d: SWAP4
00000a6e: POP
00000a6f: POP
00000a70: POP
00000a71: POP
00000a72: JUMP
00000a73: JUMPDEST
00000a74: PUSH1 0x00
00000a76: DUP1
00000a77: PUSH1 0x00
00000a79: DUP1
00000a7a: PUSH1 0x00
00000a7c: DUP7
00000a7d: MLOAD
00000a7e: DUP9
00000a7f: MLOAD
00000a80: EQ
00000a81: ISZERO
00000a82: DUP1
00000a83: PUSH2 0x0a8e
00000a86: JUMPI
00000a87: POP
00000a88: DUP6
00000a89: MLOAD
00000a8a: DUP9
00000a8b: MLOAD
00000a8c: EQ
00000a8d: ISZERO
00000a8e: JUMPDEST
00000a8f: DUP1
00000a90: PUSH2 0x0a9b
00000a93: JUMPI
00000a94: POP
00000a95: PUSH1 0x00
00000a97: SLOAD
00000a98: DUP9
00000a99: MLOAD
00000a9a: LT
00000a9b: JUMPDEST
00000a9c: ISZERO
00000a9d: PUSH2 0x0aa5
00000aa0: JUMPI
00000aa1: PUSH1 0x00
00000aa3: DUP1
00000aa4: REVERT
00000aa5: JUMPDEST
00000aa6: PUSH2 0x0105
00000aa9: PUSH1 0x00
00000aab: DUP11
00000aac: PUSH1 0x00
00000aae: NOT
00000aaf: AND
00000ab0: PUSH1 0x00
00000ab2: NOT
00000ab3: AND
00000ab4: DUP2
00000ab5: MSTORE
00000ab6: PUSH1 0x20
00000ab8: ADD
00000ab9: SWAP1
00000aba: DUP2
00000abb: MSTORE
00000abc: PUSH1 0x20
00000abe: ADD
00000abf: PUSH1 0x00
00000ac1: KECCAK256
00000ac2: PUSH1 0x00
00000ac4: SWAP1
00000ac5: SLOAD
00000ac6: SWAP1
00000ac7: PUSH2 0x0100
00000aca: EXP
00000acb: SWAP1
00000acc: DIV
00000acd: PUSH1 0xff
00000acf: AND
00000ad0: SWAP4
00000ad1: POP
00000ad2: PUSH1 0x00
00000ad4: ISZERO
00000ad5: ISZERO
00000ad6: DUP5
00000ad7: ISZERO
00000ad8: ISZERO
00000ad9: EQ
00000ada: ISZERO
00000adb: ISZERO
00000adc: PUSH2 0x0ae4
00000adf: JUMPI
00000ae0: PUSH1 0x00
00000ae2: DUP1
00000ae3: REVERT
00000ae4: JUMPDEST
00000ae5: PUSH1 0x00
00000ae7: SWAP3
00000ae8: POP
00000ae9: JUMPDEST
00000aea: DUP8
00000aeb: MLOAD
00000aec: DUP4
00000aed: LT
00000aee: ISZERO
00000aef: PUSH2 0x0c27
00000af2: JUMPI
00000af3: PUSH2 0x0b43
00000af6: DUP10
00000af7: DUP10
00000af8: DUP6
00000af9: DUP2
00000afa: MLOAD
00000afb: DUP2
00000afc: LT
00000afd: ISZERO
00000afe: ISZERO
00000aff: PUSH2 0x0b04
00000b02: JUMPI
00000b03: INVALID
00000b04: JUMPDEST
00000b05: SWAP1
00000b06: PUSH1 0x20
00000b08: ADD
00000b09: SWAP1
00000b0a: PUSH1 0x20
00000b0c: MUL
00000b0d: ADD
00000b0e: MLOAD
00000b0f: DUP10
00000b10: DUP7
00000b11: DUP2
00000b12: MLOAD
00000b13: DUP2
00000b14: LT
00000b15: ISZERO
00000b16: ISZERO
00000b17: PUSH2 0x0b1c
00000b1a: JUMPI
00000b1b: INVALID
00000b1c: JUMPDEST
00000b1d: SWAP1
00000b1e: PUSH1 0x20
00000b20: ADD
00000b21: SWAP1
00000b22: PUSH1 0x20
00000b24: MUL
00000b25: ADD
00000b26: MLOAD
00000b27: DUP10
00000b28: DUP8
00000b29: DUP2
00000b2a: MLOAD
00000b2b: DUP2
00000b2c: LT
00000b2d: ISZERO
00000b2e: ISZERO
00000b2f: PUSH2 0x0b34
00000b32: JUMPI
00000b33: INVALID
00000b34: JUMPDEST
00000b35: SWAP1
00000b36: PUSH1 0x20
00000b38: ADD
00000b39: SWAP1
00000b3a: PUSH1 0x20
00000b3c: MUL
00000b3d: ADD
00000b3e: MLOAD
00000b3f: PUSH2 0x0653
00000b42: JUMP
00000b43: JUMPDEST
00000b44: SWAP2
00000b45: POP
00000b46: PUSH1 0x01
00000b48: ISZERO
00000b49: ISZERO
00000b4a: PUSH2 0x0103
00000b4d: PUSH1 0x00
00000b4f: DUP5
00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b65: AND
00000b66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b7b: AND
00000b7c: DUP2
00000b7d: MSTORE
00000b7e: PUSH1 0x20
00000b80: ADD
00000b81: SWAP1
00000b82: DUP2
00000b83: MSTORE
00000b84: PUSH1 0x20
00000b86: ADD
00000b87: PUSH1 0x00
00000b89: KECCAK256
00000b8a: PUSH1 0x00
00000b8c: SWAP1
00000b8d: SLOAD
00000b8e: SWAP1
00000b8f: PUSH2 0x0100
00000b92: EXP
00000b93: SWAP1
00000b94: DIV
00000b95: PUSH1 0xff
00000b97: AND
00000b98: ISZERO
00000b99: ISZERO
00000b9a: EQ
00000b9b: ISZERO
00000b9c: PUSH2 0x0ba4
00000b9f: JUMPI
00000ba0: PUSH1 0x00
00000ba2: DUP1
00000ba3: REVERT
00000ba4: JUMPDEST
00000ba5: PUSH1 0x01
00000ba7: PUSH2 0x0103
00000baa: PUSH1 0x00
00000bac: DUP5
00000bad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bc2: AND
00000bc3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bd8: AND
00000bd9: DUP2
00000bda: MSTORE
00000bdb: PUSH1 0x20
00000bdd: ADD
00000bde: SWAP1
00000bdf: DUP2
00000be0: MSTORE
00000be1: PUSH1 0x20
00000be3: ADD
00000be4: PUSH1 0x00
00000be6: KECCAK256
00000be7: PUSH1 0x00
00000be9: PUSH2 0x0100
00000bec: EXP
00000bed: DUP2
00000bee: SLOAD
00000bef: DUP2
00000bf0: PUSH1 0xff
00000bf2: MUL
00000bf3: NOT
00000bf4: AND
00000bf5: SWAP1
00000bf6: DUP4
00000bf7: ISZERO
00000bf8: ISZERO
00000bf9: MUL
00000bfa: OR
00000bfb: SWAP1
00000bfc: SSTORE
00000bfd: POP
00000bfe: PUSH2 0x0c06
00000c01: DUP3
00000c02: PUSH2 0x0865
00000c05: JUMP
00000c06: JUMPDEST
00000c07: SWAP1
00000c08: POP
00000c09: PUSH1 0x00
00000c0b: ISZERO
00000c0c: ISZERO
00000c0d: DUP2
00000c0e: ISZERO
00000c0f: ISZERO
00000c10: EQ
00000c11: ISZERO
00000c12: PUSH2 0x0c1a
00000c15: JUMPI
00000c16: PUSH1 0x00
00000c18: DUP1
00000c19: REVERT
00000c1a: JUMPDEST
00000c1b: DUP3
00000c1c: DUP1
00000c1d: PUSH1 0x01
00000c1f: ADD
00000c20: SWAP4
00000c21: POP
00000c22: POP
00000c23: PUSH2 0x0ae9
00000c26: JUMP
00000c27: JUMPDEST
00000c28: PUSH1 0x01
00000c2a: SWAP5
00000c2b: POP
00000c2c: POP
00000c2d: POP
00000c2e: POP
00000c2f: POP
00000c30: SWAP5
00000c31: SWAP4
00000c32: POP
00000c33: POP
00000c34: POP
00000c35: POP
00000c36: JUMP
00000c37: JUMPDEST
00000c38: PUSH1 0x00
00000c3a: DUP1
00000c3b: PUSH1 0x00
00000c3d: DUP1
00000c3e: PUSH1 0x00
00000c40: DUP1
00000c41: DUP10
00000c42: PUSH2 0x0c4a
00000c45: DUP2
00000c46: PUSH2 0x127c
00000c49: JUMP
00000c4a: JUMPDEST
00000c4b: ISZERO
00000c4c: ISZERO
00000c4d: PUSH2 0x0c55
00000c50: JUMPI
00000c51: PUSH1 0x00
00000c53: DUP1
00000c54: REVERT
00000c55: JUMPDEST
00000c56: PUSH1 0x00
00000c58: SWAP6
00000c59: POP
00000c5a: DUP8
00000c5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c70: AND
00000c71: SWAP5
00000c72: POP
00000c73: PUSH1 0x00
00000c75: DUP6
00000c76: EQ
00000c77: ISZERO
00000c78: ISZERO
00000c79: PUSH2 0x0c81
00000c7c: JUMPI
00000c7d: PUSH1 0x01
00000c7f: SWAP6
00000c80: POP
00000c81: JUMPDEST
00000c82: PUSH1 0x00
00000c84: SWAP4
00000c85: POP
00000c86: JUMPDEST
00000c87: DUP10
00000c88: MLOAD
00000c89: DUP5
00000c8a: LT
00000c8b: ISZERO
00000c8c: PUSH2 0x1239
00000c8f: JUMPI
00000c90: PUSH1 0x00
00000c92: SWAP3
00000c93: POP
00000c94: DUP6
00000c95: ISZERO
00000c96: PUSH2 0x0eae
00000c99: JUMPI
00000c9a: PUSH1 0x40
00000c9c: MLOAD
00000c9d: DUP1
00000c9e: DUP1
00000c9f: PUSH32 0x7472616e7366657228616464726573732c75696e743235362900000000000000
00000cc0: DUP2
00000cc1: MSTORE
00000cc2: POP
00000cc3: PUSH1 0x19
00000cc5: ADD
00000cc6: SWAP1
00000cc7: POP
00000cc8: PUSH1 0x40
00000cca: MLOAD
00000ccb: DUP1
00000ccc: SWAP2
00000ccd: SUB
00000cce: SWAP1
00000ccf: KECCAK256
00000cd0: SWAP2
00000cd1: POP
00000cd2: DUP8
00000cd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ce8: AND
00000ce9: DUP3
00000cea: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000d08: SWAP1
00000d09: DIV
00000d0a: DUP12
00000d0b: DUP7
00000d0c: DUP2
00000d0d: MLOAD
00000d0e: DUP2
00000d0f: LT
00000d10: ISZERO
00000d11: ISZERO
00000d12: PUSH2 0x0d17
00000d15: JUMPI
00000d16: INVALID
00000d17: JUMPDEST
00000d18: SWAP1
00000d19: PUSH1 0x20
00000d1b: ADD
00000d1c: SWAP1
00000d1d: PUSH1 0x20
00000d1f: MUL
00000d20: ADD
00000d21: MLOAD
00000d22: DUP12
00000d23: DUP8
00000d24: DUP2
00000d25: MLOAD
00000d26: DUP2
00000d27: LT
00000d28: ISZERO
00000d29: ISZERO
00000d2a: PUSH2 0x0d2f
00000d2d: JUMPI
00000d2e: INVALID
00000d2f: JUMPDEST
00000d30: SWAP1
00000d31: PUSH1 0x20
00000d33: ADD
00000d34: SWAP1
00000d35: PUSH1 0x20
00000d37: MUL
00000d38: ADD
00000d39: MLOAD
00000d3a: PUSH1 0x40
00000d3c: MLOAD
00000d3d: DUP4
00000d3e: PUSH4 0xffffffff
00000d43: AND
00000d44: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000d62: MUL
00000d63: DUP2
00000d64: MSTORE
00000d65: PUSH1 0x04
00000d67: ADD
00000d68: DUP1
00000d69: DUP4
00000d6a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d7f: AND
00000d80: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d95: AND
00000d96: DUP2
00000d97: MSTORE
00000d98: PUSH1 0x20
00000d9a: ADD
00000d9b: DUP3
00000d9c: DUP2
00000d9d: MSTORE
00000d9e: PUSH1 0x20
00000da0: ADD
00000da1: SWAP3
00000da2: POP
00000da3: POP
00000da4: POP
00000da5: PUSH1 0x00
00000da7: PUSH1 0x40
00000da9: MLOAD
00000daa: DUP1
00000dab: DUP4
00000dac: SUB
00000dad: DUP2
00000dae: PUSH1 0x00
00000db0: DUP8
00000db1: GAS
00000db2: CALL
00000db3: SWAP3
00000db4: POP
00000db5: POP
00000db6: POP
00000db7: SWAP3
00000db8: POP
00000db9: DUP3
00000dba: ISZERO
00000dbb: ISZERO
00000dbc: PUSH2 0x0dc4
00000dbf: JUMPI
00000dc0: PUSH1 0x00
00000dc2: DUP1
00000dc3: REVERT
00000dc4: JUMPDEST
00000dc5: PUSH32 0x0169d72b4638e9bc0f81e32c7cf97acd164b6d70e57234bc29346a946ae6ce1b
00000de6: DUP12
00000de7: DUP12
00000de8: DUP7
00000de9: DUP2
00000dea: MLOAD
00000deb: DUP2
00000dec: LT
00000ded: ISZERO
00000dee: ISZERO
00000def: PUSH2 0x0df4
00000df2: JUMPI
00000df3: INVALID
00000df4: JUMPDEST
00000df5: SWAP1
00000df6: PUSH1 0x20
00000df8: ADD
00000df9: SWAP1
00000dfa: PUSH1 0x20
00000dfc: MUL
00000dfd: ADD
00000dfe: MLOAD
00000dff: DUP12
00000e00: DUP8
00000e01: DUP2
00000e02: MLOAD
00000e03: DUP2
00000e04: LT
00000e05: ISZERO
00000e06: ISZERO
00000e07: PUSH2 0x0e0c
00000e0a: JUMPI
00000e0b: INVALID
00000e0c: JUMPDEST
00000e0d: SWAP1
00000e0e: PUSH1 0x20
00000e10: ADD
00000e11: SWAP1
00000e12: PUSH1 0x20
00000e14: MUL
00000e15: ADD
00000e16: MLOAD
00000e17: DUP12
00000e18: DUP9
00000e19: PUSH1 0x40
00000e1b: MLOAD
00000e1c: DUP1
00000e1d: DUP7
00000e1e: PUSH1 0x00
00000e20: NOT
00000e21: AND
00000e22: PUSH1 0x00
00000e24: NOT
00000e25: AND
00000e26: DUP2
00000e27: MSTORE
00000e28: PUSH1 0x20
00000e2a: ADD
00000e2b: DUP6
00000e2c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e41: AND
00000e42: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e57: AND
00000e58: DUP2
00000e59: MSTORE
00000e5a: PUSH1 0x20
00000e5c: ADD
00000e5d: DUP5
00000e5e: DUP2
00000e5f: MSTORE
00000e60: PUSH1 0x20
00000e62: ADD
00000e63: DUP4
00000e64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e79: AND
00000e7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e8f: AND
00000e90: DUP2
00000e91: MSTORE
00000e92: PUSH1 0x20
00000e94: ADD
00000e95: DUP3
00000e96: DUP2
00000e97: MSTORE
00000e98: PUSH1 0x20
00000e9a: ADD
00000e9b: SWAP6
00000e9c: POP
00000e9d: POP
00000e9e: POP
00000e9f: POP
00000ea0: POP
00000ea1: POP
00000ea2: PUSH1 0x40
00000ea4: MLOAD
00000ea5: DUP1
00000ea6: SWAP2
00000ea7: SUB
00000ea8: SWAP1
00000ea9: LOG1
00000eaa: PUSH2 0x122c
00000ead: JUMP
00000eae: JUMPDEST
00000eaf: PUSH1 0x00
00000eb1: DUP10
00000eb2: DUP6
00000eb3: DUP2
00000eb4: MLOAD
00000eb5: DUP2
00000eb6: LT
00000eb7: ISZERO
00000eb8: ISZERO
00000eb9: PUSH2 0x0ebe
00000ebc: JUMPI
00000ebd: INVALID
00000ebe: JUMPDEST
00000ebf: SWAP1
00000ec0: PUSH1 0x20
00000ec2: ADD
00000ec3: SWAP1
00000ec4: PUSH1 0x20
00000ec6: MUL
00000ec7: ADD
00000ec8: MLOAD
00000ec9: GT
00000eca: ISZERO
00000ecb: DUP1
00000ecc: PUSH2 0x0ef9
00000ecf: JUMPI
00000ed0: POP
00000ed1: PUSH1 0x12
00000ed3: PUSH1 0xff
00000ed5: AND
00000ed6: PUSH1 0x0a
00000ed8: EXP
00000ed9: PUSH5 0x02540be400
00000edf: MUL
00000ee0: DUP10
00000ee1: DUP6
00000ee2: DUP2
00000ee3: MLOAD
00000ee4: DUP2
00000ee5: LT
00000ee6: ISZERO
00000ee7: ISZERO
00000ee8: PUSH2 0x0eed
00000eeb: JUMPI
00000eec: INVALID
00000eed: JUMPDEST
00000eee: SWAP1
00000eef: PUSH1 0x20
00000ef1: ADD
00000ef2: SWAP1
00000ef3: PUSH1 0x20
00000ef5: MUL
00000ef6: ADD
00000ef7: MLOAD
00000ef8: GT
00000ef9: JUMPDEST
00000efa: ISZERO
00000efb: PUSH2 0x0fe8
00000efe: JUMPI
00000eff: PUSH32 0x02f9603e9005f6b7992543a30e8694c19e07aa1695feb1e26d1f34ae6c0f86a6
00000f20: DUP12
00000f21: DUP12
00000f22: DUP7
00000f23: DUP2
00000f24: MLOAD
00000f25: DUP2
00000f26: LT
00000f27: ISZERO
00000f28: ISZERO
00000f29: PUSH2 0x0f2e
00000f2c: JUMPI
00000f2d: INVALID
00000f2e: JUMPDEST
00000f2f: SWAP1
00000f30: PUSH1 0x20
00000f32: ADD
00000f33: SWAP1
00000f34: PUSH1 0x20
00000f36: MUL
00000f37: ADD
00000f38: MLOAD
00000f39: DUP12
00000f3a: DUP8
00000f3b: DUP2
00000f3c: MLOAD
00000f3d: DUP2
00000f3e: LT
00000f3f: ISZERO
00000f40: ISZERO
00000f41: PUSH2 0x0f46
00000f44: JUMPI
00000f45: INVALID
00000f46: JUMPDEST
00000f47: SWAP1
00000f48: PUSH1 0x20
00000f4a: ADD
00000f4b: SWAP1
00000f4c: PUSH1 0x20
00000f4e: MUL
00000f4f: ADD
00000f50: MLOAD
00000f51: DUP12
00000f52: DUP9
00000f53: PUSH1 0x40
00000f55: MLOAD
00000f56: DUP1
00000f57: DUP7
00000f58: PUSH1 0x00
00000f5a: NOT
00000f5b: AND
00000f5c: PUSH1 0x00
00000f5e: NOT
00000f5f: AND
00000f60: DUP2
00000f61: MSTORE
00000f62: PUSH1 0x20
00000f64: ADD
00000f65: DUP6
00000f66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f7b: AND
00000f7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f91: AND
00000f92: DUP2
00000f93: MSTORE
00000f94: PUSH1 0x20
00000f96: ADD
00000f97: DUP5
00000f98: DUP2
00000f99: MSTORE
00000f9a: PUSH1 0x20
00000f9c: ADD
00000f9d: DUP4
00000f9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fb3: AND
00000fb4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fc9: AND
00000fca: DUP2
00000fcb: MSTORE
00000fcc: PUSH1 0x20
00000fce: ADD
00000fcf: DUP3
00000fd0: DUP2
00000fd1: MSTORE
00000fd2: PUSH1 0x20
00000fd4: ADD
00000fd5: SWAP6
00000fd6: POP
00000fd7: POP
00000fd8: POP
00000fd9: POP
00000fda: POP
00000fdb: POP
00000fdc: PUSH1 0x40
00000fde: MLOAD
00000fdf: DUP1
00000fe0: SWAP2
00000fe1: SUB
00000fe2: SWAP1
00000fe3: LOG1
00000fe4: PUSH2 0x122b
00000fe7: JUMP
00000fe8: JUMPDEST
00000fe9: DUP10
00000fea: DUP5
00000feb: DUP2
00000fec: MLOAD
00000fed: DUP2
00000fee: LT
00000fef: ISZERO
00000ff0: ISZERO
00000ff1: PUSH2 0x0ff6
00000ff4: JUMPI
00000ff5: INVALID
00000ff6: JUMPDEST
00000ff7: SWAP1
00000ff8: PUSH1 0x20
00000ffa: ADD
00000ffb: SWAP1
00000ffc: PUSH1 0x20
00000ffe: MUL
00000fff: ADD
00001000: MLOAD
00001001: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001016: AND
00001017: PUSH2 0x08fc
0000101a: DUP11
0000101b: DUP7
0000101c: DUP2
0000101d: MLOAD
0000101e: DUP2
0000101f: LT
00001020: ISZERO
00001021: ISZERO
00001022: PUSH2 0x1027
00001025: JUMPI
00001026: INVALID
00001027: JUMPDEST
00001028: SWAP1
00001029: PUSH1 0x20
0000102b: ADD
0000102c: SWAP1
0000102d: PUSH1 0x20
0000102f: MUL
00001030: ADD
00001031: MLOAD
00001032: SWAP1
00001033: DUP2
00001034: ISZERO
00001035: MUL
00001036: SWAP1
00001037: PUSH1 0x40
00001039: MLOAD
0000103a: PUSH1 0x00
0000103c: PUSH1 0x40
0000103e: MLOAD
0000103f: DUP1
00001040: DUP4
00001041: SUB
00001042: DUP2
00001043: DUP6
00001044: DUP9
00001045: DUP9
00001046: CALL
00001047: SWAP4
00001048: POP
00001049: POP
0000104a: POP
0000104b: POP
0000104c: SWAP3
0000104d: POP
0000104e: PUSH1 0x00
00001050: ISZERO
00001051: ISZERO
00001052: DUP4
00001053: ISZERO
00001054: ISZERO
00001055: EQ
00001056: ISZERO
00001057: PUSH2 0x1144
0000105a: JUMPI
0000105b: PUSH32 0x02f9603e9005f6b7992543a30e8694c19e07aa1695feb1e26d1f34ae6c0f86a6
0000107c: DUP12
0000107d: DUP12
0000107e: DUP7
0000107f: DUP2
00001080: MLOAD
00001081: DUP2
00001082: LT
00001083: ISZERO
00001084: ISZERO
00001085: PUSH2 0x108a
00001088: JUMPI
00001089: INVALID
0000108a: JUMPDEST
0000108b: SWAP1
0000108c: PUSH1 0x20
0000108e: ADD
0000108f: SWAP1
00001090: PUSH1 0x20
00001092: MUL
00001093: ADD
00001094: MLOAD
00001095: DUP12
00001096: DUP8
00001097: DUP2
00001098: MLOAD
00001099: DUP2
0000109a: LT
0000109b: ISZERO
0000109c: ISZERO
0000109d: PUSH2 0x10a2
000010a0: JUMPI
000010a1: INVALID
000010a2: JUMPDEST
000010a3: SWAP1
000010a4: PUSH1 0x20
000010a6: ADD
000010a7: SWAP1
000010a8: PUSH1 0x20
000010aa: MUL
000010ab: ADD
000010ac: MLOAD
000010ad: DUP12
000010ae: DUP9
000010af: PUSH1 0x40
000010b1: MLOAD
000010b2: DUP1
000010b3: DUP7
000010b4: PUSH1 0x00
000010b6: NOT
000010b7: AND
000010b8: PUSH1 0x00
000010ba: NOT
000010bb: AND
000010bc: DUP2
000010bd: MSTORE
000010be: PUSH1 0x20
000010c0: ADD
000010c1: DUP6
000010c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010d7: AND
000010d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ed: AND
000010ee: DUP2
000010ef: MSTORE
000010f0: PUSH1 0x20
000010f2: ADD
000010f3: DUP5
000010f4: DUP2
000010f5: MSTORE
000010f6: PUSH1 0x20
000010f8: ADD
000010f9: DUP4
000010fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000110f: AND
00001110: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001125: AND
00001126: DUP2
00001127: MSTORE
00001128: PUSH1 0x20
0000112a: ADD
0000112b: DUP3
0000112c: DUP2
0000112d: MSTORE
0000112e: PUSH1 0x20
00001130: ADD
00001131: SWAP6
00001132: POP
00001133: POP
00001134: POP
00001135: POP
00001136: POP
00001137: POP
00001138: PUSH1 0x40
0000113a: MLOAD
0000113b: DUP1
0000113c: SWAP2
0000113d: SUB
0000113e: SWAP1
0000113f: LOG1
00001140: PUSH2 0x122a
00001143: JUMP
00001144: JUMPDEST
00001145: PUSH32 0x0169d72b4638e9bc0f81e32c7cf97acd164b6d70e57234bc29346a946ae6ce1b
00001166: DUP12
00001167: DUP12
00001168: DUP7
00001169: DUP2
0000116a: MLOAD
0000116b: DUP2
0000116c: LT
0000116d: ISZERO
0000116e: ISZERO
0000116f: PUSH2 0x1174
00001172: JUMPI
00001173: INVALID
00001174: JUMPDEST
00001175: SWAP1
00001176: PUSH1 0x20
00001178: ADD
00001179: SWAP1
0000117a: PUSH1 0x20
0000117c: MUL
0000117d: ADD
0000117e: MLOAD
0000117f: DUP12
00001180: DUP8
00001181: DUP2
00001182: MLOAD
00001183: DUP2
00001184: LT
00001185: ISZERO
00001186: ISZERO
00001187: PUSH2 0x118c
0000118a: JUMPI
0000118b: INVALID
0000118c: JUMPDEST
0000118d: SWAP1
0000118e: PUSH1 0x20
00001190: ADD
00001191: SWAP1
00001192: PUSH1 0x20
00001194: MUL
00001195: ADD
00001196: MLOAD
00001197: DUP12
00001198: DUP9
00001199: PUSH1 0x40
0000119b: MLOAD
0000119c: DUP1
0000119d: DUP7
0000119e: PUSH1 0x00
000011a0: NOT
000011a1: AND
000011a2: PUSH1 0x00
000011a4: NOT
000011a5: AND
000011a6: DUP2
000011a7: MSTORE
000011a8: PUSH1 0x20
000011aa: ADD
000011ab: DUP6
000011ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011c1: AND
000011c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011d7: AND
000011d8: DUP2
000011d9: MSTORE
000011da: PUSH1 0x20
000011dc: ADD
000011dd: DUP5
000011de: DUP2
000011df: MSTORE
000011e0: PUSH1 0x20
000011e2: ADD
000011e3: DUP4
000011e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011f9: AND
000011fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000120f: AND
00001210: DUP2
00001211: MSTORE
00001212: PUSH1 0x20
00001214: ADD
00001215: DUP3
00001216: DUP2
00001217: MSTORE
00001218: PUSH1 0x20
0000121a: ADD
0000121b: SWAP6
0000121c: POP
0000121d: POP
0000121e: POP
0000121f: POP
00001220: POP
00001221: POP
00001222: PUSH1 0x40
00001224: MLOAD
00001225: DUP1
00001226: SWAP2
00001227: SUB
00001228: SWAP1
00001229: LOG1
0000122a: JUMPDEST
0000122b: JUMPDEST
0000122c: JUMPDEST
0000122d: DUP4
0000122e: DUP1
0000122f: PUSH1 0x01
00001231: ADD
00001232: SWAP5
00001233: POP
00001234: POP
00001235: PUSH2 0x0c86
00001238: JUMP
00001239: JUMPDEST
0000123a: PUSH1 0x01
0000123c: PUSH2 0x0105
0000123f: PUSH1 0x00
00001241: DUP14
00001242: PUSH1 0x00
00001244: NOT
00001245: AND
00001246: PUSH1 0x00
00001248: NOT
00001249: AND
0000124a: DUP2
0000124b: MSTORE
0000124c: PUSH1 0x20
0000124e: ADD
0000124f: SWAP1
00001250: DUP2
00001251: MSTORE
00001252: PUSH1 0x20
00001254: ADD
00001255: PUSH1 0x00
00001257: KECCAK256
00001258: PUSH1 0x00
0000125a: PUSH2 0x0100
0000125d: EXP
0000125e: DUP2
0000125f: SLOAD
00001260: DUP2
00001261: PUSH1 0xff
00001263: MUL
00001264: NOT
00001265: AND
00001266: SWAP1
00001267: DUP4
00001268: ISZERO
00001269: ISZERO
0000126a: MUL
0000126b: OR
0000126c: SWAP1
0000126d: SSTORE
0000126e: POP
0000126f: POP
00001270: POP
00001271: POP
00001272: POP
00001273: POP
00001274: POP
00001275: SWAP5
00001276: SWAP4
00001277: POP
00001278: POP
00001279: POP
0000127a: POP
0000127b: JUMP
0000127c: JUMPDEST
0000127d: PUSH1 0x00
0000127f: DUP1
00001280: PUSH1 0x00
00001282: DUP1
00001283: PUSH2 0x0102
00001286: PUSH1 0x00
00001288: CALLER
00001289: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000129e: AND
0000129f: DUP2
000012a0: MSTORE
000012a1: PUSH1 0x20
000012a3: ADD
000012a4: SWAP1
000012a5: DUP2
000012a6: MSTORE
000012a7: PUSH1 0x20
000012a9: ADD
000012aa: PUSH1 0x00
000012ac: KECCAK256
000012ad: SLOAD
000012ae: SWAP3
000012af: POP
000012b0: PUSH1 0x00
000012b2: DUP4
000012b3: EQ
000012b4: ISZERO
000012b5: PUSH2 0x12c1
000012b8: JUMPI
000012b9: PUSH1 0x00
000012bb: SWAP4
000012bc: POP
000012bd: PUSH2 0x1389
000012c0: JUMP
000012c1: JUMPDEST
000012c2: PUSH2 0x0105
000012c5: PUSH1 0x00
000012c7: DUP7
000012c8: PUSH1 0x00
000012ca: NOT
000012cb: AND
000012cc: PUSH1 0x00
000012ce: NOT
000012cf: AND
000012d0: DUP2
000012d1: MSTORE
000012d2: PUSH1 0x20
000012d4: ADD
000012d5: SWAP1
000012d6: DUP2
000012d7: MSTORE
000012d8: PUSH1 0x20
000012da: ADD
000012db: PUSH1 0x00
000012dd: KECCAK256
000012de: PUSH1 0x00
000012e0: SWAP1
000012e1: SLOAD
000012e2: SWAP1
000012e3: PUSH2 0x0100
000012e6: EXP
000012e7: SWAP1
000012e8: DIV
000012e9: PUSH1 0xff
000012eb: AND
000012ec: SWAP2
000012ed: POP
000012ee: PUSH1 0x00
000012f0: ISZERO
000012f1: ISZERO
000012f2: DUP3
000012f3: ISZERO
000012f4: ISZERO
000012f5: EQ
000012f6: ISZERO
000012f7: ISZERO
000012f8: PUSH2 0x1304
000012fb: JUMPI
000012fc: PUSH1 0x00
000012fe: SWAP4
000012ff: POP
00001300: PUSH2 0x1389
00001303: JUMP
00001304: JUMPDEST
00001305: PUSH1 0x00
00001307: SWAP1
00001308: POP
00001309: JUMPDEST
0000130a: PUSH1 0x01
0000130c: SLOAD
0000130d: DUP2
0000130e: LT
0000130f: ISZERO
00001310: PUSH2 0x1384
00001313: JUMPI
00001314: PUSH2 0x0103
00001317: PUSH1 0x00
00001319: PUSH1 0x02
0000131b: PUSH1 0x01
0000131d: DUP5
0000131e: ADD
0000131f: PUSH2 0x0100
00001322: DUP2
00001323: LT
00001324: ISZERO
00001325: ISZERO
00001326: PUSH2 0x132b
00001329: JUMPI
0000132a: INVALID
0000132b: JUMPDEST
0000132c: ADD
0000132d: SLOAD
0000132e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001343: AND
00001344: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001359: AND
0000135a: DUP2
0000135b: MSTORE
0000135c: PUSH1 0x20
0000135e: ADD
0000135f: SWAP1
00001360: DUP2
00001361: MSTORE
00001362: PUSH1 0x20
00001364: ADD
00001365: PUSH1 0x00
00001367: KECCAK256
00001368: PUSH1 0x00
0000136a: PUSH2 0x0100
0000136d: EXP
0000136e: DUP2
0000136f: SLOAD
00001370: SWAP1
00001371: PUSH1 0xff
00001373: MUL
00001374: NOT
00001375: AND
00001376: SWAP1
00001377: SSTORE
00001378: DUP1
00001379: DUP1
0000137a: PUSH1 0x01
0000137c: ADD
0000137d: SWAP2
0000137e: POP
0000137f: POP
00001380: PUSH2 0x1309
00001383: JUMP
00001384: JUMPDEST
00001385: PUSH1 0x01
00001387: SWAP4
00001388: POP
00001389: JUMPDEST
0000138a: POP
0000138b: POP
0000138c: POP
0000138d: SWAP2
0000138e: SWAP1
0000138f: POP
00001390: JUMP
00001391: STOP
00001392: LOG1
00001393: PUSH6 0x627a7a723058
0000139a: KECCAK256
0000139b: RETURNDATASIZE
0000139c: UNKNOWN(0x25)
0000139d: UNKNOWN(0xF8)
0000139e: BLOBBASEFEE
0000139f: UNKNOWN(0xB7)
000013a0: GASLIMIT
000013a1: PUSH26 0x79afb11a847fcf6c567f2b76963c516e811e2694e731a087a500
000013bc: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb
call_targets: 0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x472d71d1",
            "selector": "0x472d71d1",
            "calldata_variants": [
                "0x472d71d1",
                "0x472d71d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x86435354",
            "selector": "0x86435354",
            "calldata_variants": [
                "0x86435354",
                "0x864353540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x88671ad4",
            "selector": "0x88671ad4",
            "calldata_variants": [
                "0x88671ad4",
                "0x88671ad40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaaf5eb68",
            "selector": "0xaaf5eb68",
            "calldata_variants": [
                "0xaaf5eb68",
                "0xaaf5eb680000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1572,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3506,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4166,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb
call_targets: 0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x472d71d1",
            "selector": "0x472d71d1",
            "calldata_variants": [
                "0x472d71d1",
                "0x472d71d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x86435354",
            "selector": "0x86435354",
            "calldata_variants": [
                "0x86435354",
                "0x864353540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x88671ad4",
            "selector": "0x88671ad4",
            "calldata_variants": [
                "0x88671ad4",
                "0x88671ad40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaaf5eb68",
            "selector": "0xaaf5eb68",
            "calldata_variants": [
                "0xaaf5eb68",
                "0xaaf5eb680000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1572,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3506,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4166,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
medium access_control codex Low-level CALLs with computed target/value lack visible authorization 75 no
view
evidence_json
{
    "evidence": "Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).",
    "locations": [
        "pc:0x624",
        "pc:0xdb2",
        "pc:0x1046"
    ],
    "recommendation": "Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.",
    "exploit_scenario": "If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass."
}
low reentrancy codex External CALLs combined with storage writes; no reentrancy guard detected 65 no
view
evidence_json
{
    "evidence": "CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.",
    "locations": [
        "pc:0x624",
        "pc:0xdb2",
        "pc:0x1046",
        "pc:0x0ba4",
        "pc:0x1239",
        "pc:0x132b"
    ],
    "recommendation": "Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.",
    "exploit_scenario": "If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain."
}
low other codex Low-level token transfer call does not appear to validate return data 65 no
view
evidence_json
{
    "evidence": "CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.",
    "locations": [
        "pc:0xdb2",
        "pc:0x1046"
    ],
    "recommendation": "Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.",
    "exploit_scenario": "If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches."
}