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

Analysis Run

019ba9e0-bde2-7288-8ffe-0e2a23d3c7d7

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 10, 2026 9:47 PM
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
37998 artifact.fetch complete 1 / 3 3 months ago
37999 proxy.resolve complete 1 / 3 3 months ago
38000 tool.cast_disasm complete 1 / 3 3 months ago
38001 analysis.bundle complete 1 / 3 3 months ago
38002 capability.graph complete 1 / 3 3 months ago
38003 detector.run complete 1 / 3 3 months ago
38004 validation.fork complete 1 / 3 3 months ago
38166 report.consolidate complete 1 / 6 3 months ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.
View stdout
{"no_findings":false,"summary":"Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.","findings":[{"severity":"low","category":"reentrancy","title":"External CALL to storage-derived target (possible untrusted call / reentrancy surface)","exploit_scenario":"Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it.","recommendation":"Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.","evidence":"Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.","locations":["pc:825","pc:945","pc:1640","pc:1669"]},{"severity":"low","category":"other","title":"ERC20 transfer/transferFrom return values appear unchecked","exploit_scenario":"The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies.","recommendation":"Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.","evidence":"After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.","locations":["pc:945","pc:962","pc:998","pc:1669","pc:1677","pc:1721"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-kx1wpuy2
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019baa4f-4aaf-7ff0-9d12-2e86225ed422
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

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

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

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

thinking
**Reading BYTECODE_BUNDLE.json file**
exec
/bin/bash -lc ls in /tmp/codex-kx1wpuy2 succeeded in 7ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 succeeded in 30ms:
{
  "analysis_artifact": {
    "address": "0x123e33e6f65fe44314f863a24c58fdc2f5264f33",
    "artifact_hash": "0xbd62b2a4e34fa25fd3d09c0da5274de7f264886770eeb6904a0852c54aedd2a2",
    "artifact_json": {
      "auth": {
        "guards": [
          {
            "pc": 527,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
          },
          {
            "pc": 739,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
          },
          {
            "pc": 1123,
            "type": "msg_sender_eq_const",

thinking
**Analyzing CALL instructions for security implications**
exec
/bin/bash -lc 'rg -n "call:945|pc": 945" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 exited 2 in 5ms:
/bin/bash: -c: line 1: unexpected EOF while looking for matching `"'
/bin/bash: -c: line 2: syntax error: unexpected end of file

thinking
**Correcting quote usage**
exec
/bin/bash -lc "rg -n 'call:945|pc\": 945' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 8ms:
4122:          "pc": 945,
7513:          "to": "call:945",
7517:          "from": "call:945",
9392:          "id": "call:945",
9394:          "pc": 945,
9480:            "pc": 945,
9566:            "pc": 945,

thinking
**Gathering callsite context**
exec
/bin/bash -lc "sed -n '9360,9425p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 17ms:
          "start_pc": 4258,
          "type": "basic_block"
        },
        {
          "end_pc": 4264,
          "hash": "0x85768abf056509ab43c86ae6cee950a8cab8c1294704a0a819b242d2a6f7ad5f",
          "id": "bb:4262",
          "start_pc": 4262,
          "type": "basic_block"
        },
        {
          "end_pc": 4265,
          "hash": "0x47014c4e40fc5d0f3310aa2becff76884caa1738830af9dbc5081feef0ba7717",
          "id": "bb:4265",
          "start_pc": 4265,
          "type": "basic_block"
        },
        {
          "end_pc": 4287,
          "hash": "0x10af8acf7611f01a699f8ce83b10b4b94c73540e67d6e60346da1af0359f9768",

thinking
**Examining call context for target**
exec
/bin/bash -lc "sed -n '7485,7535p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 30ms:
        },
        {
          "from": "fn:0xa6f9dae1",
          "to": "bb:3605681073",
          "type": "entry"
        },
        {
          "from": "fn:0xd6ea53b1",
          "to": "bb:4199134701",
          "type": "entry"
        },
        {
          "from": "fn:0x06394c9b",
          "to": "bb:149402029",
          "type": "entry"
        },
        {
          "from": "fn:0x08e7b1ad",
          "to": "bb:683770180",
          "type": "entry"

thinking
**Searching for block with id bb:942**
exec
/bin/bash -lc "rg -n '\"id\": \"bb:942\"' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 26ms:
8001:          "id": "bb:942",
exec
/bin/bash -lc "sed -n '7970,8035p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
        {
          "end_pc": 824,
          "hash": "0xad828981d61e4db79ff788051bcdd93322ea66a3bd4428d31b3d8b88f6cd0195",
          "id": "bb:816",
          "start_pc": 816,
          "type": "basic_block"
        },
        {
          "end_pc": 915,
          "hash": "0xe4effee9db632b81fa79ebec4d7d17a282b3a21a5d161814f29b9a9bdb231e93",
          "id": "bb:825",
          "start_pc": 825,
          "type": "basic_block"
        },
        {
          "end_pc": 937,
          "hash": "0x12adbf845543b1539fb413b04de7a94027d3bd6debeca4caddf8f2ba159590b3",
          "id": "bb:916",
          "start_pc": 916,
          "type": "basic_block"

thinking
**Searching for opcode details in basic_blocks**
exec
/bin/bash -lc "rg -n '\"start_pc\": 942' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
979:          "start_pc": 942
8002:          "start_pc": 942,

thinking
**Inspecting basic_blocks for opcodes**
exec
/bin/bash -lc "sed -n '930,990p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 30ms:
        },
        {
          "end_pc": 937,
          "hash": "0x12adbf845543b1539fb413b04de7a94027d3bd6debeca4caddf8f2ba159590b3",
          "opcodes": [
            "JUMPDEST",
            "PUSH1",
            "PUSH1",
            "MLOAD",
            "OP_80",
            "OP_83",
            "SUB",
            "OP_81",
            "PUSH1",
            "OP_87",
            "OP_80",
            "EXTCODESIZE",
            "ISZERO",
            "OP_80",
            "ISZERO",

thinking
**Analyzing external call sequence and stack setup**
exec
/bin/bash -lc "rg -n '\"start_pc\": 1666' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
1453:          "start_pc": 1666
8156:          "start_pc": 1666,
exec
/bin/bash -lc "sed -n '1435,1475p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
            "REVERT"
          ],
          "start_pc": 1662
        },
        {
          "end_pc": 1676,
          "hash": "0x5632b2abffcde665bdf372bb844a9d7bc931694ef4d89741080d4dc459fca92f",
          "opcodes": [
            "JUMPDEST",
            "POP",
            "GAS",
            "CALL",
            "ISZERO",
            "OP_80",
            "ISZERO",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 1666
        },

thinking
**Checking preceding code block**
exec
/bin/bash -lc "sed -n '1400,1445p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
            "PUSH2",
            "JUMP"
          ],
          "start_pc": 1548
        },
        {
          "end_pc": 1661,
          "hash": "0xeb0119c3f5a217d1f4db95aeb76ab92e07882fdff7aa2f208cb3ea324f455ab9",
          "opcodes": [
            "JUMPDEST",
            "PUSH1",
            "PUSH1",
            "MLOAD",
            "OP_80",
            "OP_83",
            "SUB",
            "OP_81",
            "PUSH1",
            "OP_87",
            "OP_80",

thinking
**Analyzing contract upgradeability and access control**
exec
/bin/bash -lc 'rg -n "1967|proxy|beacon|implementation" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 succeeded in 9ms:
6375:        "implementation": null,
6377:        "proxy": "0",
6382:      "proxy_evidence": {
6383:        "status": "not_proxy"
6386:    "implementation_address": null,
6387:    "is_proxy": false,

thinking
**Inspecting call evidence near 6360**
exec
/bin/bash -lc "sed -n '6325,6405p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
          {
            "op": "SLOAD",
            "pc": 2008,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
          },
          {
            "op": "SLOAD",
            "pc": 2220,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
          },
          {
            "op": "SLOAD",
            "pc": 2434,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
          },
          {
            "op": "SLOAD",
            "pc": 2575,
            "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
          }

thinking
**Analyzing runtime bytecode and storage slots**

I’m carefully parsing the runtime bytecode to understand function selectors, storage slot usage, and revert reasons indicating access control roles like operator, payer, and owner. I’m piecing together how storage slots 0-4 might hold key addresses and how token operations and permissions are checked, trying to make sense of calldata dispatch and slot reads without disassembler tools. This looks promising to identify potential vulnerabilities.
exec
/bin/bash -lc 'rg -n "storage_accesses|storage_slots" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 exited 1 in 25ms:


thinking
**Searching for storage references**
exec
/bin/bash -lc "rg -n 'storage' BYTECODE_BUNDLE.json | head" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
5309:          "storage": {
5434:          "storage": {
5559:          "storage": {
5684:          "storage": {
5809:          "storage": {
5934:          "storage": {
6059:          "storage": {
6184:          "storage": {
6276:      "storage": {

thinking
**Inspecting storage sections near line 5270**
exec
/bin/bash -lc "sed -n '5250,5335p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
        {
          "entry_pc": null,
          "selector": "0x78db00ec"
        }
      ],
      "functions": [
        {
          "auth": {
            "guards": [
              {
                "pc": 527,
                "type": "msg_sender_eq_const",
                "value": "0xffffffffffffffffffffffffffffffffffffffff"
              },
              {
                "pc": 739,
                "type": "msg_sender_eq_const",
                "value": "0xffffffffffffffffffffffffffffffffffffffff"
              },
              {

thinking
**Examining storage reads and writes**
exec
/bin/bash -lc "sed -n '5335,5425p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 1370,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 1540,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
              },
              {
                "op": "SLOAD",
                "pc": 1551,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 1797,

thinking
**Continuing to browse function entries**
exec
/bin/bash -lc "sed -n '5425,5530p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 29ms:
          },
          "entry_pc": 3605681073,
          "selector": "0xa6f9dae1",
          "sinks": {
            "call": 2,
            "delegatecall": 0,
            "selfdestruct": 0,
            "staticcall": 1
          },
          "storage": {
            "reads": 17,
            "slots": [
              {
                "op": "SLOAD",
                "pc": 475,
                "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
              },
              {
                "op": "SLOAD",
                "pc": 687,


thinking
**Analyzing runtime access controls and token calls**

This deep dive unpacks storage-based role checks and function behaviors, revealing that access control reliably reads from storage slots despite some static analysis conflicts. I'm spotting potential risks like unchecked ERC20 return values on low-level calls and examining how storage writes relate to external calls to assess reentrancy and correctness possibilities. There's a lot to unpack here about how the contract manages operator, payer, and owner roles alongside token interactions!
thinking
**Examining setter functions and call value handling**

I'll parse how various setter functions enforce access control and identify if any allow changing critical addresses without checks. I’m also digging into whether ETH transfers occur via CALL with nonzero value, how those values are set, and if all calls correctly handle return values and reentrancy concerns—there's a lot to piece together from these runtime snippets!
exec
/bin/bash -lc "sed -n '860,930p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
          "hash": "0xc53d430e058a79292eacfcc5590d2d59c9a4016e98c38b5316dbd1a6253674d7",
          "opcodes": [
            "PUSH1",
            "MLOAD",
            "PUSH32",
            "OP_81",
            "MSTORE",
            "PUSH1",
            "ADD",
            "PUSH2",
            "OP_90",
            "PUSH2",
            "JUMP"
          ],
          "start_pc": 767
        },
        {
          "end_pc": 824,
          "hash": "0xad828981d61e4db79ff788051bcdd93322ea66a3bd4428d31b3d8b88f6cd0195",
          "opcodes": [

thinking
**Analyzing external call patterns and risks**
exec
/bin/bash -lc "sed -n '960,1035p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 15ms:
            "OP_80",
            "REVERT"
          ],
          "start_pc": 938
        },
        {
          "end_pc": 952,
          "hash": "0xe6e7518e4f61a82886a571bee0ead8ee04ef4cdd3dcc130f60f64c79ddd06c72",
          "opcodes": [
            "JUMPDEST",
            "POP",
            "GAS",
            "CALL",
            "ISZERO",
            "OP_80",
            "ISZERO",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 942

thinking
**Identifying necessary blocks**
exec
/bin/bash -lc "sed -n '1035,1085p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 8ms:
            "POP",
            "PUSH32",
            "ADDRESS",
            "OP_84",
            "OP_83",
            "TIMESTAMP",
            "PUSH1",
            "MLOAD",
            "PUSH2",
            "OP_94",
            "OP_93",
            "OP_92",
            "OP_91",
            "OP_90",
            "PUSH2",
            "JUMP"
          ],
          "start_pc": 998
        },
        {


thinking
**Analyzing unchecked external calls and return values**

I'm carefully assessing the contract's calls to external token addresses stored in storage slots, noting unchecked ERC20 return values and potential untrusted external calls without reentrancy guards. The evidence shows calls at specific program counters copy return data without validating success booleans, and calls use storage-derived addresses with possible ETH value transfers. Access control is generally present but the risks hinge on trusted setting of critical addresses by privileged roles. Overall, I judge severity conservatively as low to medium and plan to include detailed findings with locations and recommendations.
thinking
**Detailing unchecked ERC20 return values**

I'm outlining a medium-to-low severity finding about token transfers that don’t validate ERC20 return values, which could lead to silent failures in transfer logic. The evidence includes call sites where only success flags are checked and return data is copied but never verified boolean-wise before proceeding to event logs. I’m planning to advise using safer token interaction practices like SafeERC20 and to note uncertainty in the exploit scenario.
codex
{"no_findings":false,"summary":"Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.","findings":[{"severity":"low","category":"reentrancy","title":"External CALL to storage-derived target (possible untrusted call / reentrancy surface)","exploit_scenario":"Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it.","recommendation":"Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.","evidence":"Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.","locations":["pc:825","pc:945","pc:1640","pc:1669"]},{"severity":"low","category":"other","title":"ERC20 transfer/transferFrom return values appear unchecked","exploit_scenario":"The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies.","recommendation":"Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.","evidence":"After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.","locations":["pc:945","pc:962","pc:998","pc:1669","pc:1677","pc:1721"]}]}
tokens used
119,806
Metadata
{
    "codex": {
        "ran_at": "2026-01-10T23:52:52.729286+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 8640,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.",
    "raw_final": {
        "summary": "Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.",
        "findings": [
            {
                "title": "External CALL to storage-derived target (possible untrusted call / reentrancy surface)",
                "category": "reentrancy",
                "evidence": "Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.",
                "severity": "low",
                "locations": [
                    "pc:825",
                    "pc:945",
                    "pc:1640",
                    "pc:1669"
                ],
                "recommendation": "Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.",
                "exploit_scenario": "Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it."
            },
            {
                "title": "ERC20 transfer/transferFrom return values appear unchecked",
                "category": "other",
                "evidence": "After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.",
                "severity": "low",
                "locations": [
                    "pc:945",
                    "pc:962",
                    "pc:998",
                    "pc:1669",
                    "pc:1677",
                    "pc:1721"
                ],
                "recommendation": "Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.",
                "exploit_scenario": "The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies."
            }
        ],
        "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
3
Total opcodes
2219
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 0x007f
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x7d81c4c1
00000019: GT
0000001a: PUSH2 0x004e
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x7d81c4c1
00000024: EQ
00000025: PUSH2 0x012f
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa6f9dae1
0000002f: EQ
00000030: PUSH2 0x0158
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd6ea53b1
0000003a: EQ
0000003b: PUSH2 0x0181
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xfa49b5ed
00000045: EQ
00000046: PUSH2 0x01aa
00000049: JUMPI
0000004a: PUSH2 0x0086
0000004d: JUMP
0000004e: JUMPDEST
0000004f: DUP1
00000050: PUSH4 0x06394c9b
00000055: EQ
00000056: PUSH2 0x008b
00000059: JUMPI
0000005a: DUP1
0000005b: PUSH4 0x08e7b1ad
00000060: EQ
00000061: PUSH2 0x00b4
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x28c18144
0000006b: EQ
0000006c: PUSH2 0x00dd
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x78db00ec
00000076: EQ
00000077: PUSH2 0x0106
0000007a: JUMPI
0000007b: PUSH2 0x0086
0000007e: JUMP
0000007f: JUMPDEST
00000080: CALLDATASIZE
00000081: PUSH2 0x0086
00000084: JUMPI
00000085: STOP
00000086: JUMPDEST
00000087: PUSH1 0x00
00000089: DUP1
0000008a: REVERT
0000008b: JUMPDEST
0000008c: CALLVALUE
0000008d: DUP1
0000008e: ISZERO
0000008f: PUSH2 0x0097
00000092: JUMPI
00000093: PUSH1 0x00
00000095: DUP1
00000096: REVERT
00000097: JUMPDEST
00000098: POP
00000099: PUSH2 0x00b2
0000009c: PUSH1 0x04
0000009e: DUP1
0000009f: CALLDATASIZE
000000a0: SUB
000000a1: DUP2
000000a2: ADD
000000a3: SWAP1
000000a4: PUSH2 0x00ad
000000a7: SWAP2
000000a8: SWAP1
000000a9: PUSH2 0x0aed
000000ac: JUMP
000000ad: JUMPDEST
000000ae: PUSH2 0x01d5
000000b1: JUMP
000000b2: JUMPDEST
000000b3: STOP
000000b4: JUMPDEST
000000b5: CALLVALUE
000000b6: DUP1
000000b7: ISZERO
000000b8: PUSH2 0x00c0
000000bb: JUMPI
000000bc: PUSH1 0x00
000000be: DUP1
000000bf: REVERT
000000c0: JUMPDEST
000000c1: POP
000000c2: PUSH2 0x00db
000000c5: PUSH1 0x04
000000c7: DUP1
000000c8: CALLDATASIZE
000000c9: SUB
000000ca: DUP2
000000cb: ADD
000000cc: SWAP1
000000cd: PUSH2 0x00d6
000000d0: SWAP2
000000d1: SWAP1
000000d2: PUSH2 0x0b1a
000000d5: JUMP
000000d6: JUMPDEST
000000d7: PUSH2 0x02a9
000000da: JUMP
000000db: JUMPDEST
000000dc: STOP
000000dd: JUMPDEST
000000de: CALLVALUE
000000df: DUP1
000000e0: ISZERO
000000e1: PUSH2 0x00e9
000000e4: JUMPI
000000e5: PUSH1 0x00
000000e7: DUP1
000000e8: REVERT
000000e9: JUMPDEST
000000ea: POP
000000eb: PUSH2 0x0104
000000ee: PUSH1 0x04
000000f0: DUP1
000000f1: CALLDATASIZE
000000f2: SUB
000000f3: DUP2
000000f4: ADD
000000f5: SWAP1
000000f6: PUSH2 0x00ff
000000f9: SWAP2
000000fa: SWAP1
000000fb: PUSH2 0x0be3
000000fe: JUMP
000000ff: JUMPDEST
00000100: PUSH2 0x0429
00000103: JUMP
00000104: JUMPDEST
00000105: STOP
00000106: JUMPDEST
00000107: CALLVALUE
00000108: DUP1
00000109: ISZERO
0000010a: PUSH2 0x0112
0000010d: JUMPI
0000010e: PUSH1 0x00
00000110: DUP1
00000111: REVERT
00000112: JUMPDEST
00000113: POP
00000114: PUSH2 0x012d
00000117: PUSH1 0x04
00000119: DUP1
0000011a: CALLDATASIZE
0000011b: SUB
0000011c: DUP2
0000011d: ADD
0000011e: SWAP1
0000011f: PUSH2 0x0128
00000122: SWAP2
00000123: SWAP1
00000124: PUSH2 0x0b1a
00000127: JUMP
00000128: JUMPDEST
00000129: PUSH2 0x04c3
0000012c: JUMP
0000012d: JUMPDEST
0000012e: STOP
0000012f: JUMPDEST
00000130: CALLVALUE
00000131: DUP1
00000132: ISZERO
00000133: PUSH2 0x013b
00000136: JUMPI
00000137: PUSH1 0x00
00000139: DUP1
0000013a: REVERT
0000013b: JUMPDEST
0000013c: POP
0000013d: PUSH2 0x0156
00000140: PUSH1 0x04
00000142: DUP1
00000143: CALLDATASIZE
00000144: SUB
00000145: DUP2
00000146: ADD
00000147: SWAP1
00000148: PUSH2 0x0151
0000014b: SWAP2
0000014c: SWAP1
0000014d: PUSH2 0x0bb6
00000150: JUMP
00000151: JUMPDEST
00000152: PUSH2 0x06ff
00000155: JUMP
00000156: JUMPDEST
00000157: STOP
00000158: JUMPDEST
00000159: CALLVALUE
0000015a: DUP1
0000015b: ISZERO
0000015c: PUSH2 0x0164
0000015f: JUMPI
00000160: PUSH1 0x00
00000162: DUP1
00000163: REVERT
00000164: JUMPDEST
00000165: POP
00000166: PUSH2 0x017f
00000169: PUSH1 0x04
0000016b: DUP1
0000016c: CALLDATASIZE
0000016d: SUB
0000016e: DUP2
0000016f: ADD
00000170: SWAP1
00000171: PUSH2 0x017a
00000174: SWAP2
00000175: SWAP1
00000176: PUSH2 0x0aed
00000179: JUMP
0000017a: JUMPDEST
0000017b: PUSH2 0x07d2
0000017e: JUMP
0000017f: JUMPDEST
00000180: STOP
00000181: JUMPDEST
00000182: CALLVALUE
00000183: DUP1
00000184: ISZERO
00000185: PUSH2 0x018d
00000188: JUMPI
00000189: PUSH1 0x00
0000018b: DUP1
0000018c: REVERT
0000018d: JUMPDEST
0000018e: POP
0000018f: PUSH2 0x01a8
00000192: PUSH1 0x04
00000194: DUP1
00000195: CALLDATASIZE
00000196: SUB
00000197: DUP2
00000198: ADD
00000199: SWAP1
0000019a: PUSH2 0x01a3
0000019d: SWAP2
0000019e: SWAP1
0000019f: PUSH2 0x0aed
000001a2: JUMP
000001a3: JUMPDEST
000001a4: PUSH2 0x08a6
000001a7: JUMP
000001a8: JUMPDEST
000001a9: STOP
000001aa: JUMPDEST
000001ab: CALLVALUE
000001ac: DUP1
000001ad: ISZERO
000001ae: PUSH2 0x01b6
000001b1: JUMPI
000001b2: PUSH1 0x00
000001b4: DUP1
000001b5: REVERT
000001b6: JUMPDEST
000001b7: POP
000001b8: PUSH2 0x01bf
000001bb: PUSH2 0x097a
000001be: JUMP
000001bf: JUMPDEST
000001c0: PUSH1 0x40
000001c2: MLOAD
000001c3: PUSH2 0x01cc
000001c6: SWAP2
000001c7: SWAP1
000001c8: PUSH2 0x0e24
000001cb: JUMP
000001cc: JUMPDEST
000001cd: PUSH1 0x40
000001cf: MLOAD
000001d0: DUP1
000001d1: SWAP2
000001d2: SUB
000001d3: SWAP1
000001d4: RETURN
000001d5: JUMPDEST
000001d6: PUSH1 0x01
000001d8: PUSH1 0x00
000001da: SWAP1
000001db: SLOAD
000001dc: SWAP1
000001dd: PUSH2 0x0100
000001e0: EXP
000001e1: SWAP1
000001e2: DIV
000001e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001f8: AND
000001f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000020e: AND
0000020f: CALLER
00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000225: AND
00000226: EQ
00000227: PUSH2 0x0265
0000022a: JUMPI
0000022b: PUSH1 0x40
0000022d: MLOAD
0000022e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000024f: DUP2
00000250: MSTORE
00000251: PUSH1 0x04
00000253: ADD
00000254: PUSH2 0x025c
00000257: SWAP1
00000258: PUSH2 0x0e04
0000025b: JUMP
0000025c: JUMPDEST
0000025d: PUSH1 0x40
0000025f: MLOAD
00000260: DUP1
00000261: SWAP2
00000262: SUB
00000263: SWAP1
00000264: REVERT
00000265: JUMPDEST
00000266: DUP1
00000267: PUSH1 0x02
00000269: PUSH1 0x00
0000026b: PUSH2 0x0100
0000026e: EXP
0000026f: DUP2
00000270: SLOAD
00000271: DUP2
00000272: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000287: MUL
00000288: NOT
00000289: AND
0000028a: SWAP1
0000028b: DUP4
0000028c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002a1: AND
000002a2: MUL
000002a3: OR
000002a4: SWAP1
000002a5: SSTORE
000002a6: POP
000002a7: POP
000002a8: JUMP
000002a9: JUMPDEST
000002aa: PUSH1 0x03
000002ac: PUSH1 0x00
000002ae: SWAP1
000002af: SLOAD
000002b0: SWAP1
000002b1: PUSH2 0x0100
000002b4: EXP
000002b5: SWAP1
000002b6: DIV
000002b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002cc: AND
000002cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002e2: AND
000002e3: CALLER
000002e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002f9: AND
000002fa: EQ
000002fb: PUSH2 0x0339
000002fe: JUMPI
000002ff: PUSH1 0x40
00000301: MLOAD
00000302: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000323: DUP2
00000324: MSTORE
00000325: PUSH1 0x04
00000327: ADD
00000328: PUSH2 0x0330
0000032b: SWAP1
0000032c: PUSH2 0x0de4
0000032f: JUMP
00000330: JUMPDEST
00000331: PUSH1 0x40
00000333: MLOAD
00000334: DUP1
00000335: SWAP2
00000336: SUB
00000337: SWAP1
00000338: REVERT
00000339: JUMPDEST
0000033a: PUSH1 0x00
0000033c: DUP1
0000033d: SLOAD
0000033e: SWAP1
0000033f: PUSH2 0x0100
00000342: EXP
00000343: SWAP1
00000344: DIV
00000345: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035a: AND
0000035b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000370: AND
00000371: PUSH4 0xa9059cbb
00000376: DUP5
00000377: DUP5
00000378: PUSH1 0x40
0000037a: MLOAD
0000037b: DUP4
0000037c: PUSH4 0xffffffff
00000381: AND
00000382: PUSH1 0xe0
00000384: SHL
00000385: DUP2
00000386: MSTORE
00000387: PUSH1 0x04
00000389: ADD
0000038a: PUSH2 0x0394
0000038d: SWAP3
0000038e: SWAP2
0000038f: SWAP1
00000390: PUSH2 0x0d9b
00000393: JUMP
00000394: JUMPDEST
00000395: PUSH1 0x20
00000397: PUSH1 0x40
00000399: MLOAD
0000039a: DUP1
0000039b: DUP4
0000039c: SUB
0000039d: DUP2
0000039e: PUSH1 0x00
000003a0: DUP8
000003a1: DUP1
000003a2: EXTCODESIZE
000003a3: ISZERO
000003a4: DUP1
000003a5: ISZERO
000003a6: PUSH2 0x03ae
000003a9: JUMPI
000003aa: PUSH1 0x00
000003ac: DUP1
000003ad: REVERT
000003ae: JUMPDEST
000003af: POP
000003b0: GAS
000003b1: CALL
000003b2: ISZERO
000003b3: DUP1
000003b4: ISZERO
000003b5: PUSH2 0x03c2
000003b8: JUMPI
000003b9: RETURNDATASIZE
000003ba: PUSH1 0x00
000003bc: DUP1
000003bd: RETURNDATACOPY
000003be: RETURNDATASIZE
000003bf: PUSH1 0x00
000003c1: REVERT
000003c2: JUMPDEST
000003c3: POP
000003c4: POP
000003c5: POP
000003c6: POP
000003c7: PUSH1 0x40
000003c9: MLOAD
000003ca: RETURNDATASIZE
000003cb: PUSH1 0x1f
000003cd: NOT
000003ce: PUSH1 0x1f
000003d0: DUP3
000003d1: ADD
000003d2: AND
000003d3: DUP3
000003d4: ADD
000003d5: DUP1
000003d6: PUSH1 0x40
000003d8: MSTORE
000003d9: POP
000003da: DUP2
000003db: ADD
000003dc: SWAP1
000003dd: PUSH2 0x03e6
000003e0: SWAP2
000003e1: SWAP1
000003e2: PUSH2 0x0b89
000003e5: JUMP
000003e6: JUMPDEST
000003e7: POP
000003e8: PUSH32 0x8679060cc1d9d7559a679728ac8b58dcce1026fac1f09068eafa9250e55214f2
00000409: ADDRESS
0000040a: DUP5
0000040b: DUP4
0000040c: TIMESTAMP
0000040d: PUSH1 0x40
0000040f: MLOAD
00000410: PUSH2 0x041c
00000413: SWAP5
00000414: SWAP4
00000415: SWAP3
00000416: SWAP2
00000417: SWAP1
00000418: PUSH2 0x0d18
0000041b: JUMP
0000041c: JUMPDEST
0000041d: PUSH1 0x40
0000041f: MLOAD
00000420: DUP1
00000421: SWAP2
00000422: SUB
00000423: SWAP1
00000424: LOG1
00000425: POP
00000426: POP
00000427: POP
00000428: JUMP
00000429: JUMPDEST
0000042a: PUSH1 0x01
0000042c: PUSH1 0x00
0000042e: SWAP1
0000042f: SLOAD
00000430: SWAP1
00000431: PUSH2 0x0100
00000434: EXP
00000435: SWAP1
00000436: DIV
00000437: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000044c: AND
0000044d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000462: AND
00000463: CALLER
00000464: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000479: AND
0000047a: EQ
0000047b: PUSH2 0x04b9
0000047e: JUMPI
0000047f: PUSH1 0x40
00000481: MLOAD
00000482: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000004a3: DUP2
000004a4: MSTORE
000004a5: PUSH1 0x04
000004a7: ADD
000004a8: PUSH2 0x04b0
000004ab: SWAP1
000004ac: PUSH2 0x0e04
000004af: JUMP
000004b0: JUMPDEST
000004b1: PUSH1 0x40
000004b3: MLOAD
000004b4: DUP1
000004b5: SWAP2
000004b6: SUB
000004b7: SWAP1
000004b8: REVERT
000004b9: JUMPDEST
000004ba: DUP1
000004bb: PUSH1 0x04
000004bd: DUP2
000004be: SWAP1
000004bf: SSTORE
000004c0: POP
000004c1: POP
000004c2: JUMP
000004c3: JUMPDEST
000004c4: PUSH1 0x02
000004c6: PUSH1 0x00
000004c8: SWAP1
000004c9: SLOAD
000004ca: SWAP1
000004cb: PUSH2 0x0100
000004ce: EXP
000004cf: SWAP1
000004d0: DIV
000004d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004e6: AND
000004e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004fc: AND
000004fd: CALLER
000004fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000513: AND
00000514: EQ
00000515: PUSH2 0x0553
00000518: JUMPI
00000519: PUSH1 0x40
0000051b: MLOAD
0000051c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000053d: DUP2
0000053e: MSTORE
0000053f: PUSH1 0x04
00000541: ADD
00000542: PUSH2 0x054a
00000545: SWAP1
00000546: PUSH2 0x0dc4
00000549: JUMP
0000054a: JUMPDEST
0000054b: PUSH1 0x40
0000054d: MLOAD
0000054e: DUP1
0000054f: SWAP2
00000550: SUB
00000551: SWAP1
00000552: REVERT
00000553: JUMPDEST
00000554: PUSH1 0x00
00000556: DUP1
00000557: PUSH1 0x00
00000559: SWAP1
0000055a: SLOAD
0000055b: SWAP1
0000055c: PUSH2 0x0100
0000055f: EXP
00000560: SWAP1
00000561: DIV
00000562: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000577: AND
00000578: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000058d: AND
0000058e: PUSH4 0x70a08231
00000593: DUP6
00000594: PUSH1 0x40
00000596: MLOAD
00000597: DUP3
00000598: PUSH4 0xffffffff
0000059d: AND
0000059e: PUSH1 0xe0
000005a0: SHL
000005a1: DUP2
000005a2: MSTORE
000005a3: PUSH1 0x04
000005a5: ADD
000005a6: PUSH2 0x05af
000005a9: SWAP2
000005aa: SWAP1
000005ab: PUSH2 0x0cfd
000005ae: JUMP
000005af: JUMPDEST
000005b0: PUSH1 0x20
000005b2: PUSH1 0x40
000005b4: MLOAD
000005b5: DUP1
000005b6: DUP4
000005b7: SUB
000005b8: DUP2
000005b9: DUP7
000005ba: DUP1
000005bb: EXTCODESIZE
000005bc: ISZERO
000005bd: DUP1
000005be: ISZERO
000005bf: PUSH2 0x05c7
000005c2: JUMPI
000005c3: PUSH1 0x00
000005c5: DUP1
000005c6: REVERT
000005c7: JUMPDEST
000005c8: POP
000005c9: GAS
000005ca: STATICCALL
000005cb: ISZERO
000005cc: DUP1
000005cd: ISZERO
000005ce: PUSH2 0x05db
000005d1: JUMPI
000005d2: RETURNDATASIZE
000005d3: PUSH1 0x00
000005d5: DUP1
000005d6: RETURNDATACOPY
000005d7: RETURNDATASIZE
000005d8: PUSH1 0x00
000005da: REVERT
000005db: JUMPDEST
000005dc: POP
000005dd: POP
000005de: POP
000005df: POP
000005e0: PUSH1 0x40
000005e2: MLOAD
000005e3: RETURNDATASIZE
000005e4: PUSH1 0x1f
000005e6: NOT
000005e7: PUSH1 0x1f
000005e9: DUP3
000005ea: ADD
000005eb: AND
000005ec: DUP3
000005ed: ADD
000005ee: DUP1
000005ef: PUSH1 0x40
000005f1: MSTORE
000005f2: POP
000005f3: DUP2
000005f4: ADD
000005f5: SWAP1
000005f6: PUSH2 0x05ff
000005f9: SWAP2
000005fa: SWAP1
000005fb: PUSH2 0x0c10
000005fe: JUMP
000005ff: JUMPDEST
00000600: SWAP1
00000601: POP
00000602: PUSH1 0x04
00000604: SLOAD
00000605: DUP2
00000606: GT
00000607: ISZERO
00000608: PUSH2 0x06f9
0000060b: JUMPI
0000060c: PUSH1 0x00
0000060e: DUP1
0000060f: SLOAD
00000610: SWAP1
00000611: PUSH2 0x0100
00000614: EXP
00000615: SWAP1
00000616: DIV
00000617: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000062c: AND
0000062d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000642: AND
00000643: PUSH4 0x23b872dd
00000648: DUP6
00000649: ADDRESS
0000064a: DUP7
0000064b: PUSH1 0x40
0000064d: MLOAD
0000064e: DUP5
0000064f: PUSH4 0xffffffff
00000654: AND
00000655: PUSH1 0xe0
00000657: SHL
00000658: DUP2
00000659: MSTORE
0000065a: PUSH1 0x04
0000065c: ADD
0000065d: PUSH2 0x0668
00000660: SWAP4
00000661: SWAP3
00000662: SWAP2
00000663: SWAP1
00000664: PUSH2 0x0d64
00000667: JUMP
00000668: JUMPDEST
00000669: PUSH1 0x20
0000066b: PUSH1 0x40
0000066d: MLOAD
0000066e: DUP1
0000066f: DUP4
00000670: SUB
00000671: DUP2
00000672: PUSH1 0x00
00000674: DUP8
00000675: DUP1
00000676: EXTCODESIZE
00000677: ISZERO
00000678: DUP1
00000679: ISZERO
0000067a: PUSH2 0x0682
0000067d: JUMPI
0000067e: PUSH1 0x00
00000680: DUP1
00000681: REVERT
00000682: JUMPDEST
00000683: POP
00000684: GAS
00000685: CALL
00000686: ISZERO
00000687: DUP1
00000688: ISZERO
00000689: PUSH2 0x0696
0000068c: JUMPI
0000068d: RETURNDATASIZE
0000068e: PUSH1 0x00
00000690: DUP1
00000691: RETURNDATACOPY
00000692: RETURNDATASIZE
00000693: PUSH1 0x00
00000695: REVERT
00000696: JUMPDEST
00000697: POP
00000698: POP
00000699: POP
0000069a: POP
0000069b: PUSH1 0x40
0000069d: MLOAD
0000069e: RETURNDATASIZE
0000069f: PUSH1 0x1f
000006a1: NOT
000006a2: PUSH1 0x1f
000006a4: DUP3
000006a5: ADD
000006a6: AND
000006a7: DUP3
000006a8: ADD
000006a9: DUP1
000006aa: PUSH1 0x40
000006ac: MSTORE
000006ad: POP
000006ae: DUP2
000006af: ADD
000006b0: SWAP1
000006b1: PUSH2 0x06ba
000006b4: SWAP2
000006b5: SWAP1
000006b6: PUSH2 0x0b89
000006b9: JUMP
000006ba: JUMPDEST
000006bb: POP
000006bc: PUSH32 0x8679060cc1d9d7559a679728ac8b58dcce1026fac1f09068eafa9250e55214f2
000006dd: DUP5
000006de: ADDRESS
000006df: DUP5
000006e0: TIMESTAMP
000006e1: PUSH1 0x40
000006e3: MLOAD
000006e4: PUSH2 0x06f0
000006e7: SWAP5
000006e8: SWAP4
000006e9: SWAP3
000006ea: SWAP2
000006eb: SWAP1
000006ec: PUSH2 0x0d18
000006ef: JUMP
000006f0: JUMPDEST
000006f1: PUSH1 0x40
000006f3: MLOAD
000006f4: DUP1
000006f5: SWAP2
000006f6: SUB
000006f7: SWAP1
000006f8: LOG1
000006f9: JUMPDEST
000006fa: POP
000006fb: POP
000006fc: POP
000006fd: POP
000006fe: JUMP
000006ff: JUMPDEST
00000700: PUSH1 0x01
00000702: PUSH1 0x00
00000704: SWAP1
00000705: SLOAD
00000706: SWAP1
00000707: PUSH2 0x0100
0000070a: EXP
0000070b: SWAP1
0000070c: DIV
0000070d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000722: AND
00000723: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000738: AND
00000739: CALLER
0000073a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000074f: AND
00000750: EQ
00000751: PUSH2 0x078f
00000754: JUMPI
00000755: PUSH1 0x40
00000757: MLOAD
00000758: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000779: DUP2
0000077a: MSTORE
0000077b: PUSH1 0x04
0000077d: ADD
0000077e: PUSH2 0x0786
00000781: SWAP1
00000782: PUSH2 0x0e04
00000785: JUMP
00000786: JUMPDEST
00000787: PUSH1 0x40
00000789: MLOAD
0000078a: DUP1
0000078b: SWAP2
0000078c: SUB
0000078d: SWAP1
0000078e: REVERT
0000078f: JUMPDEST
00000790: DUP1
00000791: PUSH1 0x00
00000793: DUP1
00000794: PUSH2 0x0100
00000797: EXP
00000798: DUP2
00000799: SLOAD
0000079a: DUP2
0000079b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007b0: MUL
000007b1: NOT
000007b2: AND
000007b3: SWAP1
000007b4: DUP4
000007b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ca: AND
000007cb: MUL
000007cc: OR
000007cd: SWAP1
000007ce: SSTORE
000007cf: POP
000007d0: POP
000007d1: JUMP
000007d2: JUMPDEST
000007d3: PUSH1 0x01
000007d5: PUSH1 0x00
000007d7: SWAP1
000007d8: SLOAD
000007d9: SWAP1
000007da: PUSH2 0x0100
000007dd: EXP
000007de: SWAP1
000007df: DIV
000007e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007f5: AND
000007f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000080b: AND
0000080c: CALLER
0000080d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000822: AND
00000823: EQ
00000824: PUSH2 0x0862
00000827: JUMPI
00000828: PUSH1 0x40
0000082a: MLOAD
0000082b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000084c: DUP2
0000084d: MSTORE
0000084e: PUSH1 0x04
00000850: ADD
00000851: PUSH2 0x0859
00000854: SWAP1
00000855: PUSH2 0x0e04
00000858: JUMP
00000859: JUMPDEST
0000085a: PUSH1 0x40
0000085c: MLOAD
0000085d: DUP1
0000085e: SWAP2
0000085f: SUB
00000860: SWAP1
00000861: REVERT
00000862: JUMPDEST
00000863: DUP1
00000864: PUSH1 0x01
00000866: PUSH1 0x00
00000868: PUSH2 0x0100
0000086b: EXP
0000086c: DUP2
0000086d: SLOAD
0000086e: DUP2
0000086f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000884: MUL
00000885: NOT
00000886: AND
00000887: SWAP1
00000888: DUP4
00000889: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000089e: AND
0000089f: MUL
000008a0: OR
000008a1: SWAP1
000008a2: SSTORE
000008a3: POP
000008a4: POP
000008a5: JUMP
000008a6: JUMPDEST
000008a7: PUSH1 0x01
000008a9: PUSH1 0x00
000008ab: SWAP1
000008ac: SLOAD
000008ad: SWAP1
000008ae: PUSH2 0x0100
000008b1: EXP
000008b2: SWAP1
000008b3: DIV
000008b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008c9: AND
000008ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008df: AND
000008e0: CALLER
000008e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008f6: AND
000008f7: EQ
000008f8: PUSH2 0x0936
000008fb: JUMPI
000008fc: PUSH1 0x40
000008fe: MLOAD
000008ff: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000920: DUP2
00000921: MSTORE
00000922: PUSH1 0x04
00000924: ADD
00000925: PUSH2 0x092d
00000928: SWAP1
00000929: PUSH2 0x0e04
0000092c: JUMP
0000092d: JUMPDEST
0000092e: PUSH1 0x40
00000930: MLOAD
00000931: DUP1
00000932: SWAP2
00000933: SUB
00000934: SWAP1
00000935: REVERT
00000936: JUMPDEST
00000937: DUP1
00000938: PUSH1 0x03
0000093a: PUSH1 0x00
0000093c: PUSH2 0x0100
0000093f: EXP
00000940: DUP2
00000941: SLOAD
00000942: DUP2
00000943: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000958: MUL
00000959: NOT
0000095a: AND
0000095b: SWAP1
0000095c: DUP4
0000095d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000972: AND
00000973: MUL
00000974: OR
00000975: SWAP1
00000976: SSTORE
00000977: POP
00000978: POP
00000979: JUMP
0000097a: JUMPDEST
0000097b: PUSH1 0x00
0000097d: PUSH1 0x01
0000097f: PUSH1 0x00
00000981: SWAP1
00000982: SLOAD
00000983: SWAP1
00000984: PUSH2 0x0100
00000987: EXP
00000988: SWAP1
00000989: DIV
0000098a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000099f: AND
000009a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009b5: AND
000009b6: CALLER
000009b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009cc: AND
000009cd: EQ
000009ce: PUSH2 0x0a0c
000009d1: JUMPI
000009d2: PUSH1 0x40
000009d4: MLOAD
000009d5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000009f6: DUP2
000009f7: MSTORE
000009f8: PUSH1 0x04
000009fa: ADD
000009fb: PUSH2 0x0a03
000009fe: SWAP1
000009ff: PUSH2 0x0e04
00000a02: JUMP
00000a03: JUMPDEST
00000a04: PUSH1 0x40
00000a06: MLOAD
00000a07: DUP1
00000a08: SWAP2
00000a09: SUB
00000a0a: SWAP1
00000a0b: REVERT
00000a0c: JUMPDEST
00000a0d: PUSH1 0x04
00000a0f: SLOAD
00000a10: SWAP1
00000a11: POP
00000a12: SWAP1
00000a13: JUMP
00000a14: JUMPDEST
00000a15: PUSH1 0x00
00000a17: PUSH2 0x0a27
00000a1a: PUSH2 0x0a22
00000a1d: DUP5
00000a1e: PUSH2 0x0e64
00000a21: JUMP
00000a22: JUMPDEST
00000a23: PUSH2 0x0e3f
00000a26: JUMP
00000a27: JUMPDEST
00000a28: SWAP1
00000a29: POP
00000a2a: DUP3
00000a2b: DUP2
00000a2c: MSTORE
00000a2d: PUSH1 0x20
00000a2f: DUP2
00000a30: ADD
00000a31: DUP5
00000a32: DUP5
00000a33: DUP5
00000a34: ADD
00000a35: GT
00000a36: ISZERO
00000a37: PUSH2 0x0a43
00000a3a: JUMPI
00000a3b: PUSH2 0x0a42
00000a3e: PUSH2 0x0fb2
00000a41: JUMP
00000a42: JUMPDEST
00000a43: JUMPDEST
00000a44: PUSH2 0x0a4e
00000a47: DUP5
00000a48: DUP3
00000a49: DUP6
00000a4a: PUSH2 0x0f0b
00000a4d: JUMP
00000a4e: JUMPDEST
00000a4f: POP
00000a50: SWAP4
00000a51: SWAP3
00000a52: POP
00000a53: POP
00000a54: POP
00000a55: JUMP
00000a56: JUMPDEST
00000a57: PUSH1 0x00
00000a59: DUP2
00000a5a: CALLDATALOAD
00000a5b: SWAP1
00000a5c: POP
00000a5d: PUSH2 0x0a65
00000a60: DUP2
00000a61: PUSH2 0x104d
00000a64: JUMP
00000a65: JUMPDEST
00000a66: SWAP3
00000a67: SWAP2
00000a68: POP
00000a69: POP
00000a6a: JUMP
00000a6b: JUMPDEST
00000a6c: PUSH1 0x00
00000a6e: DUP2
00000a6f: MLOAD
00000a70: SWAP1
00000a71: POP
00000a72: PUSH2 0x0a7a
00000a75: DUP2
00000a76: PUSH2 0x1064
00000a79: JUMP
00000a7a: JUMPDEST
00000a7b: SWAP3
00000a7c: SWAP2
00000a7d: POP
00000a7e: POP
00000a7f: JUMP
00000a80: JUMPDEST
00000a81: PUSH1 0x00
00000a83: DUP2
00000a84: CALLDATALOAD
00000a85: SWAP1
00000a86: POP
00000a87: PUSH2 0x0a8f
00000a8a: DUP2
00000a8b: PUSH2 0x107b
00000a8e: JUMP
00000a8f: JUMPDEST
00000a90: SWAP3
00000a91: SWAP2
00000a92: POP
00000a93: POP
00000a94: JUMP
00000a95: JUMPDEST
00000a96: PUSH1 0x00
00000a98: DUP3
00000a99: PUSH1 0x1f
00000a9b: DUP4
00000a9c: ADD
00000a9d: SLT
00000a9e: PUSH2 0x0aaa
00000aa1: JUMPI
00000aa2: PUSH2 0x0aa9
00000aa5: PUSH2 0x0fad
00000aa8: JUMP
00000aa9: JUMPDEST
00000aaa: JUMPDEST
00000aab: DUP2
00000aac: CALLDATALOAD
00000aad: PUSH2 0x0aba
00000ab0: DUP5
00000ab1: DUP3
00000ab2: PUSH1 0x20
00000ab4: DUP7
00000ab5: ADD
00000ab6: PUSH2 0x0a14
00000ab9: JUMP
00000aba: JUMPDEST
00000abb: SWAP2
00000abc: POP
00000abd: POP
00000abe: SWAP3
00000abf: SWAP2
00000ac0: POP
00000ac1: POP
00000ac2: JUMP
00000ac3: JUMPDEST
00000ac4: PUSH1 0x00
00000ac6: DUP2
00000ac7: CALLDATALOAD
00000ac8: SWAP1
00000ac9: POP
00000aca: PUSH2 0x0ad2
00000acd: DUP2
00000ace: PUSH2 0x1092
00000ad1: JUMP
00000ad2: JUMPDEST
00000ad3: SWAP3
00000ad4: SWAP2
00000ad5: POP
00000ad6: POP
00000ad7: JUMP
00000ad8: JUMPDEST
00000ad9: PUSH1 0x00
00000adb: DUP2
00000adc: MLOAD
00000add: SWAP1
00000ade: POP
00000adf: PUSH2 0x0ae7
00000ae2: DUP2
00000ae3: PUSH2 0x1092
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: SWAP3
00000ae9: SWAP2
00000aea: POP
00000aeb: POP
00000aec: JUMP
00000aed: JUMPDEST
00000aee: PUSH1 0x00
00000af0: PUSH1 0x20
00000af2: DUP3
00000af3: DUP5
00000af4: SUB
00000af5: SLT
00000af6: ISZERO
00000af7: PUSH2 0x0b03
00000afa: JUMPI
00000afb: PUSH2 0x0b02
00000afe: PUSH2 0x0fbc
00000b01: JUMP
00000b02: JUMPDEST
00000b03: JUMPDEST
00000b04: PUSH1 0x00
00000b06: PUSH2 0x0b11
00000b09: DUP5
00000b0a: DUP3
00000b0b: DUP6
00000b0c: ADD
00000b0d: PUSH2 0x0a56
00000b10: JUMP
00000b11: JUMPDEST
00000b12: SWAP2
00000b13: POP
00000b14: POP
00000b15: SWAP3
00000b16: SWAP2
00000b17: POP
00000b18: POP
00000b19: JUMP
00000b1a: JUMPDEST
00000b1b: PUSH1 0x00
00000b1d: DUP1
00000b1e: PUSH1 0x00
00000b20: PUSH1 0x60
00000b22: DUP5
00000b23: DUP7
00000b24: SUB
00000b25: SLT
00000b26: ISZERO
00000b27: PUSH2 0x0b33
00000b2a: JUMPI
00000b2b: PUSH2 0x0b32
00000b2e: PUSH2 0x0fbc
00000b31: JUMP
00000b32: JUMPDEST
00000b33: JUMPDEST
00000b34: PUSH1 0x00
00000b36: PUSH2 0x0b41
00000b39: DUP7
00000b3a: DUP3
00000b3b: DUP8
00000b3c: ADD
00000b3d: PUSH2 0x0a56
00000b40: JUMP
00000b41: JUMPDEST
00000b42: SWAP4
00000b43: POP
00000b44: POP
00000b45: PUSH1 0x20
00000b47: PUSH2 0x0b52
00000b4a: DUP7
00000b4b: DUP3
00000b4c: DUP8
00000b4d: ADD
00000b4e: PUSH2 0x0ac3
00000b51: JUMP
00000b52: JUMPDEST
00000b53: SWAP3
00000b54: POP
00000b55: POP
00000b56: PUSH1 0x40
00000b58: DUP5
00000b59: ADD
00000b5a: CALLDATALOAD
00000b5b: PUSH8 0xffffffffffffffff
00000b64: DUP2
00000b65: GT
00000b66: ISZERO
00000b67: PUSH2 0x0b73
00000b6a: JUMPI
00000b6b: PUSH2 0x0b72
00000b6e: PUSH2 0x0fb7
00000b71: JUMP
00000b72: JUMPDEST
00000b73: JUMPDEST
00000b74: PUSH2 0x0b7f
00000b77: DUP7
00000b78: DUP3
00000b79: DUP8
00000b7a: ADD
00000b7b: PUSH2 0x0a95
00000b7e: JUMP
00000b7f: JUMPDEST
00000b80: SWAP2
00000b81: POP
00000b82: POP
00000b83: SWAP3
00000b84: POP
00000b85: SWAP3
00000b86: POP
00000b87: SWAP3
00000b88: JUMP
00000b89: JUMPDEST
00000b8a: PUSH1 0x00
00000b8c: PUSH1 0x20
00000b8e: DUP3
00000b8f: DUP5
00000b90: SUB
00000b91: SLT
00000b92: ISZERO
00000b93: PUSH2 0x0b9f
00000b96: JUMPI
00000b97: PUSH2 0x0b9e
00000b9a: PUSH2 0x0fbc
00000b9d: JUMP
00000b9e: JUMPDEST
00000b9f: JUMPDEST
00000ba0: PUSH1 0x00
00000ba2: PUSH2 0x0bad
00000ba5: DUP5
00000ba6: DUP3
00000ba7: DUP6
00000ba8: ADD
00000ba9: PUSH2 0x0a6b
00000bac: JUMP
00000bad: JUMPDEST
00000bae: SWAP2
00000baf: POP
00000bb0: POP
00000bb1: SWAP3
00000bb2: SWAP2
00000bb3: POP
00000bb4: POP
00000bb5: JUMP
00000bb6: JUMPDEST
00000bb7: PUSH1 0x00
00000bb9: PUSH1 0x20
00000bbb: DUP3
00000bbc: DUP5
00000bbd: SUB
00000bbe: SLT
00000bbf: ISZERO
00000bc0: PUSH2 0x0bcc
00000bc3: JUMPI
00000bc4: PUSH2 0x0bcb
00000bc7: PUSH2 0x0fbc
00000bca: JUMP
00000bcb: JUMPDEST
00000bcc: JUMPDEST
00000bcd: PUSH1 0x00
00000bcf: PUSH2 0x0bda
00000bd2: DUP5
00000bd3: DUP3
00000bd4: DUP6
00000bd5: ADD
00000bd6: PUSH2 0x0a80
00000bd9: JUMP
00000bda: JUMPDEST
00000bdb: SWAP2
00000bdc: POP
00000bdd: POP
00000bde: SWAP3
00000bdf: SWAP2
00000be0: POP
00000be1: POP
00000be2: JUMP
00000be3: JUMPDEST
00000be4: PUSH1 0x00
00000be6: PUSH1 0x20
00000be8: DUP3
00000be9: DUP5
00000bea: SUB
00000beb: SLT
00000bec: ISZERO
00000bed: PUSH2 0x0bf9
00000bf0: JUMPI
00000bf1: PUSH2 0x0bf8
00000bf4: PUSH2 0x0fbc
00000bf7: JUMP
00000bf8: JUMPDEST
00000bf9: JUMPDEST
00000bfa: PUSH1 0x00
00000bfc: PUSH2 0x0c07
00000bff: DUP5
00000c00: DUP3
00000c01: DUP6
00000c02: ADD
00000c03: PUSH2 0x0ac3
00000c06: JUMP
00000c07: JUMPDEST
00000c08: SWAP2
00000c09: POP
00000c0a: POP
00000c0b: SWAP3
00000c0c: SWAP2
00000c0d: POP
00000c0e: POP
00000c0f: JUMP
00000c10: JUMPDEST
00000c11: PUSH1 0x00
00000c13: PUSH1 0x20
00000c15: DUP3
00000c16: DUP5
00000c17: SUB
00000c18: SLT
00000c19: ISZERO
00000c1a: PUSH2 0x0c26
00000c1d: JUMPI
00000c1e: PUSH2 0x0c25
00000c21: PUSH2 0x0fbc
00000c24: JUMP
00000c25: JUMPDEST
00000c26: JUMPDEST
00000c27: PUSH1 0x00
00000c29: PUSH2 0x0c34
00000c2c: DUP5
00000c2d: DUP3
00000c2e: DUP6
00000c2f: ADD
00000c30: PUSH2 0x0ad8
00000c33: JUMP
00000c34: JUMPDEST
00000c35: SWAP2
00000c36: POP
00000c37: POP
00000c38: SWAP3
00000c39: SWAP2
00000c3a: POP
00000c3b: POP
00000c3c: JUMP
00000c3d: JUMPDEST
00000c3e: PUSH2 0x0c46
00000c41: DUP2
00000c42: PUSH2 0x0eb1
00000c45: JUMP
00000c46: JUMPDEST
00000c47: DUP3
00000c48: MSTORE
00000c49: POP
00000c4a: POP
00000c4b: JUMP
00000c4c: JUMPDEST
00000c4d: PUSH1 0x00
00000c4f: PUSH2 0x0c57
00000c52: DUP3
00000c53: PUSH2 0x0e95
00000c56: JUMP
00000c57: JUMPDEST
00000c58: PUSH2 0x0c61
00000c5b: DUP2
00000c5c: DUP6
00000c5d: PUSH2 0x0ea0
00000c60: JUMP
00000c61: JUMPDEST
00000c62: SWAP4
00000c63: POP
00000c64: PUSH2 0x0c71
00000c67: DUP2
00000c68: DUP6
00000c69: PUSH1 0x20
00000c6b: DUP7
00000c6c: ADD
00000c6d: PUSH2 0x0f1a
00000c70: JUMP
00000c71: JUMPDEST
00000c72: PUSH2 0x0c7a
00000c75: DUP2
00000c76: PUSH2 0x0fc1
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: DUP5
00000c7c: ADD
00000c7d: SWAP2
00000c7e: POP
00000c7f: POP
00000c80: SWAP3
00000c81: SWAP2
00000c82: POP
00000c83: POP
00000c84: JUMP
00000c85: JUMPDEST
00000c86: PUSH1 0x00
00000c88: PUSH2 0x0c92
00000c8b: PUSH1 0x13
00000c8d: DUP4
00000c8e: PUSH2 0x0ea0
00000c91: JUMP
00000c92: JUMPDEST
00000c93: SWAP2
00000c94: POP
00000c95: PUSH2 0x0c9d
00000c98: DUP3
00000c99: PUSH2 0x0fd2
00000c9c: JUMP
00000c9d: JUMPDEST
00000c9e: PUSH1 0x20
00000ca0: DUP3
00000ca1: ADD
00000ca2: SWAP1
00000ca3: POP
00000ca4: SWAP2
00000ca5: SWAP1
00000ca6: POP
00000ca7: JUMP
00000ca8: JUMPDEST
00000ca9: PUSH1 0x00
00000cab: PUSH2 0x0cb5
00000cae: PUSH1 0x10
00000cb0: DUP4
00000cb1: PUSH2 0x0ea0
00000cb4: JUMP
00000cb5: JUMPDEST
00000cb6: SWAP2
00000cb7: POP
00000cb8: PUSH2 0x0cc0
00000cbb: DUP3
00000cbc: PUSH2 0x0ffb
00000cbf: JUMP
00000cc0: JUMPDEST
00000cc1: PUSH1 0x20
00000cc3: DUP3
00000cc4: ADD
00000cc5: SWAP1
00000cc6: POP
00000cc7: SWAP2
00000cc8: SWAP1
00000cc9: POP
00000cca: JUMP
00000ccb: JUMPDEST
00000ccc: PUSH1 0x00
00000cce: PUSH2 0x0cd8
00000cd1: PUSH1 0x10
00000cd3: DUP4
00000cd4: PUSH2 0x0ea0
00000cd7: JUMP
00000cd8: JUMPDEST
00000cd9: SWAP2
00000cda: POP
00000cdb: PUSH2 0x0ce3
00000cde: DUP3
00000cdf: PUSH2 0x1024
00000ce2: JUMP
00000ce3: JUMPDEST
00000ce4: PUSH1 0x20
00000ce6: DUP3
00000ce7: ADD
00000ce8: SWAP1
00000ce9: POP
00000cea: SWAP2
00000ceb: SWAP1
00000cec: POP
00000ced: JUMP
00000cee: JUMPDEST
00000cef: PUSH2 0x0cf7
00000cf2: DUP2
00000cf3: PUSH2 0x0f01
00000cf6: JUMP
00000cf7: JUMPDEST
00000cf8: DUP3
00000cf9: MSTORE
00000cfa: POP
00000cfb: POP
00000cfc: JUMP
00000cfd: JUMPDEST
00000cfe: PUSH1 0x00
00000d00: PUSH1 0x20
00000d02: DUP3
00000d03: ADD
00000d04: SWAP1
00000d05: POP
00000d06: PUSH2 0x0d12
00000d09: PUSH1 0x00
00000d0b: DUP4
00000d0c: ADD
00000d0d: DUP5
00000d0e: PUSH2 0x0c3d
00000d11: JUMP
00000d12: JUMPDEST
00000d13: SWAP3
00000d14: SWAP2
00000d15: POP
00000d16: POP
00000d17: JUMP
00000d18: JUMPDEST
00000d19: PUSH1 0x00
00000d1b: PUSH1 0x80
00000d1d: DUP3
00000d1e: ADD
00000d1f: SWAP1
00000d20: POP
00000d21: PUSH2 0x0d2d
00000d24: PUSH1 0x00
00000d26: DUP4
00000d27: ADD
00000d28: DUP8
00000d29: PUSH2 0x0c3d
00000d2c: JUMP
00000d2d: JUMPDEST
00000d2e: PUSH2 0x0d3a
00000d31: PUSH1 0x20
00000d33: DUP4
00000d34: ADD
00000d35: DUP7
00000d36: PUSH2 0x0c3d
00000d39: JUMP
00000d3a: JUMPDEST
00000d3b: DUP2
00000d3c: DUP2
00000d3d: SUB
00000d3e: PUSH1 0x40
00000d40: DUP4
00000d41: ADD
00000d42: MSTORE
00000d43: PUSH2 0x0d4c
00000d46: DUP2
00000d47: DUP6
00000d48: PUSH2 0x0c4c
00000d4b: JUMP
00000d4c: JUMPDEST
00000d4d: SWAP1
00000d4e: POP
00000d4f: PUSH2 0x0d5b
00000d52: PUSH1 0x60
00000d54: DUP4
00000d55: ADD
00000d56: DUP5
00000d57: PUSH2 0x0cee
00000d5a: JUMP
00000d5b: JUMPDEST
00000d5c: SWAP6
00000d5d: SWAP5
00000d5e: POP
00000d5f: POP
00000d60: POP
00000d61: POP
00000d62: POP
00000d63: JUMP
00000d64: JUMPDEST
00000d65: PUSH1 0x00
00000d67: PUSH1 0x60
00000d69: DUP3
00000d6a: ADD
00000d6b: SWAP1
00000d6c: POP
00000d6d: PUSH2 0x0d79
00000d70: PUSH1 0x00
00000d72: DUP4
00000d73: ADD
00000d74: DUP7
00000d75: PUSH2 0x0c3d
00000d78: JUMP
00000d79: JUMPDEST
00000d7a: PUSH2 0x0d86
00000d7d: PUSH1 0x20
00000d7f: DUP4
00000d80: ADD
00000d81: DUP6
00000d82: PUSH2 0x0c3d
00000d85: JUMP
00000d86: JUMPDEST
00000d87: PUSH2 0x0d93
00000d8a: PUSH1 0x40
00000d8c: DUP4
00000d8d: ADD
00000d8e: DUP5
00000d8f: PUSH2 0x0cee
00000d92: JUMP
00000d93: JUMPDEST
00000d94: SWAP5
00000d95: SWAP4
00000d96: POP
00000d97: POP
00000d98: POP
00000d99: POP
00000d9a: JUMP
00000d9b: JUMPDEST
00000d9c: PUSH1 0x00
00000d9e: PUSH1 0x40
00000da0: DUP3
00000da1: ADD
00000da2: SWAP1
00000da3: POP
00000da4: PUSH2 0x0db0
00000da7: PUSH1 0x00
00000da9: DUP4
00000daa: ADD
00000dab: DUP6
00000dac: PUSH2 0x0c3d
00000daf: JUMP
00000db0: JUMPDEST
00000db1: PUSH2 0x0dbd
00000db4: PUSH1 0x20
00000db6: DUP4
00000db7: ADD
00000db8: DUP5
00000db9: PUSH2 0x0cee
00000dbc: JUMP
00000dbd: JUMPDEST
00000dbe: SWAP4
00000dbf: SWAP3
00000dc0: POP
00000dc1: POP
00000dc2: POP
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: PUSH1 0x00
00000dc7: PUSH1 0x20
00000dc9: DUP3
00000dca: ADD
00000dcb: SWAP1
00000dcc: POP
00000dcd: DUP2
00000dce: DUP2
00000dcf: SUB
00000dd0: PUSH1 0x00
00000dd2: DUP4
00000dd3: ADD
00000dd4: MSTORE
00000dd5: PUSH2 0x0ddd
00000dd8: DUP2
00000dd9: PUSH2 0x0c85
00000ddc: JUMP
00000ddd: JUMPDEST
00000dde: SWAP1
00000ddf: POP
00000de0: SWAP2
00000de1: SWAP1
00000de2: POP
00000de3: JUMP
00000de4: JUMPDEST
00000de5: PUSH1 0x00
00000de7: PUSH1 0x20
00000de9: DUP3
00000dea: ADD
00000deb: SWAP1
00000dec: POP
00000ded: DUP2
00000dee: DUP2
00000def: SUB
00000df0: PUSH1 0x00
00000df2: DUP4
00000df3: ADD
00000df4: MSTORE
00000df5: PUSH2 0x0dfd
00000df8: DUP2
00000df9: PUSH2 0x0ca8
00000dfc: JUMP
00000dfd: JUMPDEST
00000dfe: SWAP1
00000dff: POP
00000e00: SWAP2
00000e01: SWAP1
00000e02: POP
00000e03: JUMP
00000e04: JUMPDEST
00000e05: PUSH1 0x00
00000e07: PUSH1 0x20
00000e09: DUP3
00000e0a: ADD
00000e0b: SWAP1
00000e0c: POP
00000e0d: DUP2
00000e0e: DUP2
00000e0f: SUB
00000e10: PUSH1 0x00
00000e12: DUP4
00000e13: ADD
00000e14: MSTORE
00000e15: PUSH2 0x0e1d
00000e18: DUP2
00000e19: PUSH2 0x0ccb
00000e1c: JUMP
00000e1d: JUMPDEST
00000e1e: SWAP1
00000e1f: POP
00000e20: SWAP2
00000e21: SWAP1
00000e22: POP
00000e23: JUMP
00000e24: JUMPDEST
00000e25: PUSH1 0x00
00000e27: PUSH1 0x20
00000e29: DUP3
00000e2a: ADD
00000e2b: SWAP1
00000e2c: POP
00000e2d: PUSH2 0x0e39
00000e30: PUSH1 0x00
00000e32: DUP4
00000e33: ADD
00000e34: DUP5
00000e35: PUSH2 0x0cee
00000e38: JUMP
00000e39: JUMPDEST
00000e3a: SWAP3
00000e3b: SWAP2
00000e3c: POP
00000e3d: POP
00000e3e: JUMP
00000e3f: JUMPDEST
00000e40: PUSH1 0x00
00000e42: PUSH2 0x0e49
00000e45: PUSH2 0x0e5a
00000e48: JUMP
00000e49: JUMPDEST
00000e4a: SWAP1
00000e4b: POP
00000e4c: PUSH2 0x0e55
00000e4f: DUP3
00000e50: DUP3
00000e51: PUSH2 0x0f4d
00000e54: JUMP
00000e55: JUMPDEST
00000e56: SWAP2
00000e57: SWAP1
00000e58: POP
00000e59: JUMP
00000e5a: JUMPDEST
00000e5b: PUSH1 0x00
00000e5d: PUSH1 0x40
00000e5f: MLOAD
00000e60: SWAP1
00000e61: POP
00000e62: SWAP1
00000e63: JUMP
00000e64: JUMPDEST
00000e65: PUSH1 0x00
00000e67: PUSH8 0xffffffffffffffff
00000e70: DUP3
00000e71: GT
00000e72: ISZERO
00000e73: PUSH2 0x0e7f
00000e76: JUMPI
00000e77: PUSH2 0x0e7e
00000e7a: PUSH2 0x0f7e
00000e7d: JUMP
00000e7e: JUMPDEST
00000e7f: JUMPDEST
00000e80: PUSH2 0x0e88
00000e83: DUP3
00000e84: PUSH2 0x0fc1
00000e87: JUMP
00000e88: JUMPDEST
00000e89: SWAP1
00000e8a: POP
00000e8b: PUSH1 0x20
00000e8d: DUP2
00000e8e: ADD
00000e8f: SWAP1
00000e90: POP
00000e91: SWAP2
00000e92: SWAP1
00000e93: POP
00000e94: JUMP
00000e95: JUMPDEST
00000e96: PUSH1 0x00
00000e98: DUP2
00000e99: MLOAD
00000e9a: SWAP1
00000e9b: POP
00000e9c: SWAP2
00000e9d: SWAP1
00000e9e: POP
00000e9f: JUMP
00000ea0: JUMPDEST
00000ea1: PUSH1 0x00
00000ea3: DUP3
00000ea4: DUP3
00000ea5: MSTORE
00000ea6: PUSH1 0x20
00000ea8: DUP3
00000ea9: ADD
00000eaa: SWAP1
00000eab: POP
00000eac: SWAP3
00000ead: SWAP2
00000eae: POP
00000eaf: POP
00000eb0: JUMP
00000eb1: JUMPDEST
00000eb2: PUSH1 0x00
00000eb4: PUSH2 0x0ebc
00000eb7: DUP3
00000eb8: PUSH2 0x0ee1
00000ebb: JUMP
00000ebc: JUMPDEST
00000ebd: SWAP1
00000ebe: POP
00000ebf: SWAP2
00000ec0: SWAP1
00000ec1: POP
00000ec2: JUMP
00000ec3: JUMPDEST
00000ec4: PUSH1 0x00
00000ec6: DUP2
00000ec7: ISZERO
00000ec8: ISZERO
00000ec9: SWAP1
00000eca: POP
00000ecb: SWAP2
00000ecc: SWAP1
00000ecd: POP
00000ece: JUMP
00000ecf: JUMPDEST
00000ed0: PUSH1 0x00
00000ed2: PUSH2 0x0eda
00000ed5: DUP3
00000ed6: PUSH2 0x0eb1
00000ed9: JUMP
00000eda: JUMPDEST
00000edb: SWAP1
00000edc: POP
00000edd: SWAP2
00000ede: SWAP1
00000edf: POP
00000ee0: JUMP
00000ee1: JUMPDEST
00000ee2: PUSH1 0x00
00000ee4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ef9: DUP3
00000efa: AND
00000efb: SWAP1
00000efc: POP
00000efd: SWAP2
00000efe: SWAP1
00000eff: POP
00000f00: JUMP
00000f01: JUMPDEST
00000f02: PUSH1 0x00
00000f04: DUP2
00000f05: SWAP1
00000f06: POP
00000f07: SWAP2
00000f08: SWAP1
00000f09: POP
00000f0a: JUMP
00000f0b: JUMPDEST
00000f0c: DUP3
00000f0d: DUP2
00000f0e: DUP4
00000f0f: CALLDATACOPY
00000f10: PUSH1 0x00
00000f12: DUP4
00000f13: DUP4
00000f14: ADD
00000f15: MSTORE
00000f16: POP
00000f17: POP
00000f18: POP
00000f19: JUMP
00000f1a: JUMPDEST
00000f1b: PUSH1 0x00
00000f1d: JUMPDEST
00000f1e: DUP4
00000f1f: DUP2
00000f20: LT
00000f21: ISZERO
00000f22: PUSH2 0x0f38
00000f25: JUMPI
00000f26: DUP1
00000f27: DUP3
00000f28: ADD
00000f29: MLOAD
00000f2a: DUP2
00000f2b: DUP5
00000f2c: ADD
00000f2d: MSTORE
00000f2e: PUSH1 0x20
00000f30: DUP2
00000f31: ADD
00000f32: SWAP1
00000f33: POP
00000f34: PUSH2 0x0f1d
00000f37: JUMP
00000f38: JUMPDEST
00000f39: DUP4
00000f3a: DUP2
00000f3b: GT
00000f3c: ISZERO
00000f3d: PUSH2 0x0f47
00000f40: JUMPI
00000f41: PUSH1 0x00
00000f43: DUP5
00000f44: DUP5
00000f45: ADD
00000f46: MSTORE
00000f47: JUMPDEST
00000f48: POP
00000f49: POP
00000f4a: POP
00000f4b: POP
00000f4c: JUMP
00000f4d: JUMPDEST
00000f4e: PUSH2 0x0f56
00000f51: DUP3
00000f52: PUSH2 0x0fc1
00000f55: JUMP
00000f56: JUMPDEST
00000f57: DUP2
00000f58: ADD
00000f59: DUP2
00000f5a: DUP2
00000f5b: LT
00000f5c: PUSH8 0xffffffffffffffff
00000f65: DUP3
00000f66: GT
00000f67: OR
00000f68: ISZERO
00000f69: PUSH2 0x0f75
00000f6c: JUMPI
00000f6d: PUSH2 0x0f74
00000f70: PUSH2 0x0f7e
00000f73: JUMP
00000f74: JUMPDEST
00000f75: JUMPDEST
00000f76: DUP1
00000f77: PUSH1 0x40
00000f79: MSTORE
00000f7a: POP
00000f7b: POP
00000f7c: POP
00000f7d: JUMP
00000f7e: JUMPDEST
00000f7f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00000fa0: PUSH1 0x00
00000fa2: MSTORE
00000fa3: PUSH1 0x41
00000fa5: PUSH1 0x04
00000fa7: MSTORE
00000fa8: PUSH1 0x24
00000faa: PUSH1 0x00
00000fac: REVERT
00000fad: JUMPDEST
00000fae: PUSH1 0x00
00000fb0: DUP1
00000fb1: REVERT
00000fb2: JUMPDEST
00000fb3: PUSH1 0x00
00000fb5: DUP1
00000fb6: REVERT
00000fb7: JUMPDEST
00000fb8: PUSH1 0x00
00000fba: DUP1
00000fbb: REVERT
00000fbc: JUMPDEST
00000fbd: PUSH1 0x00
00000fbf: DUP1
00000fc0: REVERT
00000fc1: JUMPDEST
00000fc2: PUSH1 0x00
00000fc4: PUSH1 0x1f
00000fc6: NOT
00000fc7: PUSH1 0x1f
00000fc9: DUP4
00000fca: ADD
00000fcb: AND
00000fcc: SWAP1
00000fcd: POP
00000fce: SWAP2
00000fcf: SWAP1
00000fd0: POP
00000fd1: JUMP
00000fd2: JUMPDEST
00000fd3: PUSH32 0x43414c4c45525f4e4f545f4f50455241544f5200000000000000000000000000
00000ff4: PUSH1 0x00
00000ff6: DUP3
00000ff7: ADD
00000ff8: MSTORE
00000ff9: POP
00000ffa: JUMP
00000ffb: JUMPDEST
00000ffc: PUSH32 0x43414c4c45525f4e4f545f504159455200000000000000000000000000000000
0000101d: PUSH1 0x00
0000101f: DUP3
00001020: ADD
00001021: MSTORE
00001022: POP
00001023: JUMP
00001024: JUMPDEST
00001025: PUSH32 0x43414c4c45525f4e4f545f4f574e455200000000000000000000000000000000
00001046: PUSH1 0x00
00001048: DUP3
00001049: ADD
0000104a: MSTORE
0000104b: POP
0000104c: JUMP
0000104d: JUMPDEST
0000104e: PUSH2 0x1056
00001051: DUP2
00001052: PUSH2 0x0eb1
00001055: JUMP
00001056: JUMPDEST
00001057: DUP2
00001058: EQ
00001059: PUSH2 0x1061
0000105c: JUMPI
0000105d: PUSH1 0x00
0000105f: DUP1
00001060: REVERT
00001061: JUMPDEST
00001062: POP
00001063: JUMP
00001064: JUMPDEST
00001065: PUSH2 0x106d
00001068: DUP2
00001069: PUSH2 0x0ec3
0000106c: JUMP
0000106d: JUMPDEST
0000106e: DUP2
0000106f: EQ
00001070: PUSH2 0x1078
00001073: JUMPI
00001074: PUSH1 0x00
00001076: DUP1
00001077: REVERT
00001078: JUMPDEST
00001079: POP
0000107a: JUMP
0000107b: JUMPDEST
0000107c: PUSH2 0x1084
0000107f: DUP2
00001080: PUSH2 0x0ecf
00001083: JUMP
00001084: JUMPDEST
00001085: DUP2
00001086: EQ
00001087: PUSH2 0x108f
0000108a: JUMPI
0000108b: PUSH1 0x00
0000108d: DUP1
0000108e: REVERT
0000108f: JUMPDEST
00001090: POP
00001091: JUMP
00001092: JUMPDEST
00001093: PUSH2 0x109b
00001096: DUP2
00001097: PUSH2 0x0f01
0000109a: JUMP
0000109b: JUMPDEST
0000109c: DUP2
0000109d: EQ
0000109e: PUSH2 0x10a6
000010a1: JUMPI
000010a2: PUSH1 0x00
000010a4: DUP1
000010a5: REVERT
000010a6: JUMPDEST
000010a7: POP
000010a8: JUMP
000010a9: INVALID
000010aa: LOG2
000010ab: PUSH5 0x6970667358
000010b1: UNKNOWN(0x22)
000010b2: SLT
000010b3: KECCAK256
000010b4: SWAP7
000010b5: UNKNOWN(0xBC)
000010b6: PC
000010b7: PUSH6 0xe8d29297f6a7
000010be: GT
000010bf: INVALID
000010c0: UNKNOWN(0xD5)
000010c1: LOG1
000010c2: UNKNOWN(0xC7)
000010c3: PUSH17 0x6a4e97433ff51551cf1aa6c20a25b0b564
000010d5: PUSH20

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988
call_targets: 0x123e33e6f65fe44314f863a24c58fdc2f5264f33
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x123e33e6f65fe44314f863a24c58fdc2f5264f33"
    ],
    "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": "0x7d81c4c1",
            "selector": "0x7d81c4c1",
            "calldata_variants": [
                "0x7d81c4c1",
                "0x7d81c4c10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6f9dae1",
            "selector": "0xa6f9dae1",
            "calldata_variants": [
                "0xa6f9dae1",
                "0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6ea53b1",
            "selector": "0xd6ea53b1",
            "calldata_variants": [
                "0xd6ea53b1",
                "0xd6ea53b10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa49b5ed",
            "selector": "0xfa49b5ed",
            "calldata_variants": [
                "0xfa49b5ed",
                "0xfa49b5ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06394c9b",
            "selector": "0x06394c9b",
            "calldata_variants": [
                "0x06394c9b",
                "0x06394c9b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x08e7b1ad",
            "selector": "0x08e7b1ad",
            "calldata_variants": [
                "0x08e7b1ad",
                "0x08e7b1ad0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x28c18144",
            "selector": "0x28c18144",
            "calldata_variants": [
                "0x28c18144",
                "0x28c181440000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x78db00ec",
            "selector": "0x78db00ec",
            "calldata_variants": [
                "0x78db00ec",
                "0x78db00ec0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 945,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1669,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 527,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 739,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1123,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1277,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1849,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2060,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2272,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2486,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988
call_targets: 0x123e33e6f65fe44314f863a24c58fdc2f5264f33
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x123e33e6f65fe44314f863a24c58fdc2f5264f33"
    ],
    "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": "0x7d81c4c1",
            "selector": "0x7d81c4c1",
            "calldata_variants": [
                "0x7d81c4c1",
                "0x7d81c4c10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6f9dae1",
            "selector": "0xa6f9dae1",
            "calldata_variants": [
                "0xa6f9dae1",
                "0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6ea53b1",
            "selector": "0xd6ea53b1",
            "calldata_variants": [
                "0xd6ea53b1",
                "0xd6ea53b10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa49b5ed",
            "selector": "0xfa49b5ed",
            "calldata_variants": [
                "0xfa49b5ed",
                "0xfa49b5ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06394c9b",
            "selector": "0x06394c9b",
            "calldata_variants": [
                "0x06394c9b",
                "0x06394c9b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x08e7b1ad",
            "selector": "0x08e7b1ad",
            "calldata_variants": [
                "0x08e7b1ad",
                "0x08e7b1ad0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x28c18144",
            "selector": "0x28c18144",
            "calldata_variants": [
                "0x28c18144",
                "0x28c181440000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x78db00ec",
            "selector": "0x78db00ec",
            "calldata_variants": [
                "0x78db00ec",
                "0x78db00ec0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 945,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1669,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 527,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 739,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1123,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1277,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1849,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2060,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2272,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2486,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
low reentrancy codex External CALL to storage-derived target (possible untrusted call / reentrancy surface) 65 no
view
evidence_json
{
    "evidence": "Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.",
    "locations": [
        "pc:825",
        "pc:945",
        "pc:1640",
        "pc:1669"
    ],
    "recommendation": "Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.",
    "exploit_scenario": "Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it."
}
low other codex ERC20 transfer/transferFrom return values appear unchecked 65 no
view
evidence_json
{
    "evidence": "After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.",
    "locations": [
        "pc:945",
        "pc:962",
        "pc:998",
        "pc:1669",
        "pc:1677",
        "pc:1721"
    ],
    "recommendation": "Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.",
    "exploit_scenario": "The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies."
}