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

Analysis Run

019c0ea9-074d-73f6-b29a-57ba21057a10

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:28 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
Verified
Review Backing
Present
Best current signal
Untrusted DELEGATECALL target reachable
crit 0 high 0 proxy context implementation known
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
41564 artifact.fetch complete 1 / 3 2 months ago
41565 proxy.resolve complete 1 / 3 2 months ago
41566 tool.cast_disasm complete 1 / 3 2 months ago
41567 analysis.bundle complete 1 / 3 2 months ago
41568 capability.graph complete 1 / 3 2 months ago
41569 detector.run complete 1 / 3 2 months ago
41570 validation.fork complete 1 / 3 2 months ago
42208 report.consolidate complete 1 / 6 2 months ago
42209 tool.slither complete 1 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes confirmed
Verified Source: yes
Proxy evidence
{
    "method": "etherscan+onchain",
    "status": "confirmed",
    "etherscan_hint": {
        "source": "etherscan",
        "etherscan": {
            "proxy_flag": true,
            "implementation": "0x28def88a5225fd50cdd081306be18fa7368e59f9"
        }
    },
    "implementation": "0x28def88a5225fd50cdd081306be18fa7368e59f9",
    "onchain_method": "eip1967"
}

Slither

tool.slither
Status
complete
Attempts
1 / 2
Findings
1
Solc
0.8.12 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-8tupb70d)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-8tupb70d)

Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id
	- (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall

EIP173Proxy.supportsInterface(bytes4) (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#36-60) uses assembly
	- INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#46-50)
EIP173Proxy._proxyAdmin() (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#87-94) uses assembly
	- INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#89-93)
EIP173Proxy._setProxyAdmin(address) (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#96-106) uses assembly
	- INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#99-104)
Proxy._fallback() (contracts/vendor/proxy/EIP173/Proxy.sol#26-51) uses assembly
	- INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#28-50)
Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses assembly
	- INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#58-62)
	- INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#65-70)
	- INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#80-85)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

Version constraint ^0.8.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- VerbatimInvalidDeduplication
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- DataLocationChangeInInternalOverride
	- NestedCalldataArrayAbiReencodingSizeValidation
	- AbiEncodeCallLiteralAsFixedBytesBug.
It is used by:
	- ^0.8.12 (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#2)
	- ^0.8.12 (contracts/vendor/proxy/EIP173/EIP173ProxyWithCustomReceive.sol#2)
	- ^0.8.12 (contracts/vendor/proxy/EIP173/Proxy.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Low level call in Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88):
	- (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
. analyzed (4 contracts with 100 detectors), 8 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.8.12",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.8.12",
        "install_stderr": null,
        "install_stdout": "Installing solc '0.8.12'...\nVersion '0.8.12' installed."
    },
    "solc_args": "--base-path /tmp/slither-8tupb70d --allow-paths /tmp/slither-8tupb70d,/tmp/slither-8tupb70d/lib,/tmp/slither-8tupb70d/src",
    "remappings": [],
    "source_files": [
        "contracts/vendor/proxy/EIP173/EIP173Proxy.sol",
        "contracts/vendor/proxy/EIP173/EIP173ProxyWithCustomReceive.sol",
        "contracts/vendor/proxy/EIP173/Proxy.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 8,
    "workspace_hash": "b97b0ef951cec0ed6aee0927e69eb5765056a43433030bc43ed4402ed2a9debd",
    "duration_seconds": 0.7741234302520752,
    "solc_version_requested": "0.8.14"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
0
No findings?
yes
Summary
Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.
View stdout
{"no_findings":true,"summary":"Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.","findings":[]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dflx3df_
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0ec5-6149-7603-a577-09e52e784d71
--------
user
Context: The user requested the proxy at 0x9d4c2e232fefaca4ed414aef4ba03b60b9f40aae.
Audit the implementation at 0x28def88a5225fd50cdd081306be18fa7368e59f9.
Findings should refer to the implementation unless explicitly about proxy mechanics.

You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

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 and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-dflx3df_ succeeded in 7ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
@openzeppelin
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-dflx3df_ succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/functions/FUtils.sol
================================================================================
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.12;

import {
    SafeERC20,
    IERC20
} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";

address constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

// solhint-disable private-vars-leading-underscore
// solhint-disable func-visibility
function _transfer(
    address payable _to,
codex
{"no_findings":true,"summary":"Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.","findings":[]}
tokens used
24,667
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T12:03:45.567503+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 14,
        "import_count": 9,
        "first_party_contracts_count": 7
    },
    "summary": "Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.",
    "raw_final": {
        "summary": "Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "proxy_context": {
        "proxy_run_id": "019c0ea9-074d-73f6-b29a-57ba21057a10",
        "proxy_address": "0x9d4c2e232fefaca4ed414aef4ba03b60b9f40aae",
        "implementation_run_id": "019c0ea9-71ec-7140-b362-268cfeffbc7f",
        "implementation_address": "0x28def88a5225fd50cdd081306be18fa7368e59f9"
    },
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
1403
Flags
delegatecall_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x004e
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x01ffc9a7
00000019: EQ
0000001a: PUSH2 0x0067
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x3659cfe6
00000024: EQ
00000025: PUSH2 0x00a4
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x3e47158c
0000002f: EQ
00000030: PUSH2 0x00cd
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x4f1ef286
0000003a: EQ
0000003b: PUSH2 0x00f8
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x8356ca4f
00000045: EQ
00000046: PUSH2 0x0114
00000049: JUMPI
0000004a: PUSH2 0x005d
0000004d: JUMP
0000004e: JUMPDEST
0000004f: CALLDATASIZE
00000050: PUSH2 0x005d
00000053: JUMPI
00000054: PUSH2 0x005b
00000057: PUSH2 0x013d
0000005a: JUMP
0000005b: JUMPDEST
0000005c: STOP
0000005d: JUMPDEST
0000005e: PUSH2 0x0065
00000061: PUSH2 0x013d
00000064: JUMP
00000065: JUMPDEST
00000066: STOP
00000067: JUMPDEST
00000068: CALLVALUE
00000069: DUP1
0000006a: ISZERO
0000006b: PUSH2 0x0073
0000006e: JUMPI
0000006f: PUSH1 0x00
00000071: DUP1
00000072: REVERT
00000073: JUMPDEST
00000074: POP
00000075: PUSH2 0x008e
00000078: PUSH1 0x04
0000007a: DUP1
0000007b: CALLDATASIZE
0000007c: SUB
0000007d: DUP2
0000007e: ADD
0000007f: SWAP1
00000080: PUSH2 0x0089
00000083: SWAP2
00000084: SWAP1
00000085: PUSH2 0x0707
00000088: JUMP
00000089: JUMPDEST
0000008a: PUSH2 0x0186
0000008d: JUMP
0000008e: JUMPDEST
0000008f: PUSH1 0x40
00000091: MLOAD
00000092: PUSH2 0x009b
00000095: SWAP2
00000096: SWAP1
00000097: PUSH2 0x074f
0000009a: JUMP
0000009b: JUMPDEST
0000009c: PUSH1 0x40
0000009e: MLOAD
0000009f: DUP1
000000a0: SWAP2
000000a1: SUB
000000a2: SWAP1
000000a3: RETURN
000000a4: JUMPDEST
000000a5: CALLVALUE
000000a6: DUP1
000000a7: ISZERO
000000a8: PUSH2 0x00b0
000000ab: JUMPI
000000ac: PUSH1 0x00
000000ae: DUP1
000000af: REVERT
000000b0: JUMPDEST
000000b1: POP
000000b2: PUSH2 0x00cb
000000b5: PUSH1 0x04
000000b7: DUP1
000000b8: CALLDATASIZE
000000b9: SUB
000000ba: DUP2
000000bb: ADD
000000bc: SWAP1
000000bd: PUSH2 0x00c6
000000c0: SWAP2
000000c1: SWAP1
000000c2: PUSH2 0x07c8
000000c5: JUMP
000000c6: JUMPDEST
000000c7: PUSH2 0x02d7
000000ca: JUMP
000000cb: JUMPDEST
000000cc: STOP
000000cd: JUMPDEST
000000ce: CALLVALUE
000000cf: DUP1
000000d0: ISZERO
000000d1: PUSH2 0x00d9
000000d4: JUMPI
000000d5: PUSH1 0x00
000000d7: DUP1
000000d8: REVERT
000000d9: JUMPDEST
000000da: POP
000000db: PUSH2 0x00e2
000000de: PUSH2 0x0368
000000e1: JUMP
000000e2: JUMPDEST
000000e3: PUSH1 0x40
000000e5: MLOAD
000000e6: PUSH2 0x00ef
000000e9: SWAP2
000000ea: SWAP1
000000eb: PUSH2 0x0804
000000ee: JUMP
000000ef: JUMPDEST
000000f0: PUSH1 0x40
000000f2: MLOAD
000000f3: DUP1
000000f4: SWAP2
000000f5: SUB
000000f6: SWAP1
000000f7: RETURN
000000f8: JUMPDEST
000000f9: PUSH2 0x0112
000000fc: PUSH1 0x04
000000fe: DUP1
000000ff: CALLDATASIZE
00000100: SUB
00000101: DUP2
00000102: ADD
00000103: SWAP1
00000104: PUSH2 0x010d
00000107: SWAP2
00000108: SWAP1
00000109: PUSH2 0x0884
0000010c: JUMP
0000010d: JUMPDEST
0000010e: PUSH2 0x0377
00000111: JUMP
00000112: JUMPDEST
00000113: STOP
00000114: JUMPDEST
00000115: CALLVALUE
00000116: DUP1
00000117: ISZERO
00000118: PUSH2 0x0120
0000011b: JUMPI
0000011c: PUSH1 0x00
0000011e: DUP1
0000011f: REVERT
00000120: JUMPDEST
00000121: POP
00000122: PUSH2 0x013b
00000125: PUSH1 0x04
00000127: DUP1
00000128: CALLDATASIZE
00000129: SUB
0000012a: DUP2
0000012b: ADD
0000012c: SWAP1
0000012d: PUSH2 0x0136
00000130: SWAP2
00000131: SWAP1
00000132: PUSH2 0x07c8
00000135: JUMP
00000136: JUMPDEST
00000137: PUSH2 0x043f
0000013a: JUMP
0000013b: JUMPDEST
0000013c: STOP
0000013d: JUMPDEST
0000013e: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
0000015f: SLOAD
00000160: CALLDATASIZE
00000161: PUSH1 0x00
00000163: DUP1
00000164: CALLDATACOPY
00000165: PUSH1 0x00
00000167: DUP1
00000168: CALLDATASIZE
00000169: PUSH1 0x00
0000016b: DUP5
0000016c: GAS
0000016d: DELEGATECALL
0000016e: RETURNDATASIZE
0000016f: DUP1
00000170: PUSH1 0x00
00000172: DUP1
00000173: RETURNDATACOPY
00000174: DUP2
00000175: PUSH1 0x00
00000177: DUP2
00000178: EQ
00000179: PUSH2 0x0181
0000017c: JUMPI
0000017d: DUP2
0000017e: PUSH1 0x00
00000180: RETURN
00000181: JUMPDEST
00000182: DUP2
00000183: PUSH1 0x00
00000185: REVERT
00000186: JUMPDEST
00000187: PUSH1 0x00
00000189: PUSH4 0x01ffc9a7
0000018e: PUSH1 0xe0
00000190: SHL
00000191: DUP3
00000192: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000001af: NOT
000001b0: AND
000001b1: EQ
000001b2: DUP1
000001b3: PUSH2 0x01e1
000001b6: JUMPI
000001b7: POP
000001b8: PUSH4 0x7f5828d0
000001bd: PUSH1 0xe0
000001bf: SHL
000001c0: DUP3
000001c1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000001de: NOT
000001df: AND
000001e0: EQ
000001e1: JUMPDEST
000001e2: ISZERO
000001e3: PUSH2 0x01ef
000001e6: JUMPI
000001e7: PUSH1 0x01
000001e9: SWAP1
000001ea: POP
000001eb: PUSH2 0x02d2
000001ee: JUMP
000001ef: JUMPDEST
000001f0: PUSH4 0xffffffff
000001f5: PUSH1 0xe0
000001f7: SHL
000001f8: DUP3
000001f9: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000216: NOT
00000217: AND
00000218: SUB
00000219: PUSH2 0x0225
0000021c: JUMPI
0000021d: PUSH1 0x00
0000021f: SWAP1
00000220: POP
00000221: PUSH2 0x02d2
00000224: JUMP
00000225: JUMPDEST
00000226: PUSH1 0x00
00000228: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000249: SLOAD
0000024a: SWAP1
0000024b: POP
0000024c: DUP1
0000024d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000262: AND
00000263: PUSH4 0x01ffc9a7
00000268: DUP5
00000269: PUSH1 0x40
0000026b: MLOAD
0000026c: DUP3
0000026d: PUSH4 0xffffffff
00000272: AND
00000273: PUSH1 0xe0
00000275: SHL
00000276: DUP2
00000277: MSTORE
00000278: PUSH1 0x04
0000027a: ADD
0000027b: PUSH2 0x0284
0000027e: SWAP2
0000027f: SWAP1
00000280: PUSH2 0x08f3
00000283: JUMP
00000284: JUMPDEST
00000285: PUSH1 0x20
00000287: PUSH1 0x40
00000289: MLOAD
0000028a: DUP1
0000028b: DUP4
0000028c: SUB
0000028d: DUP2
0000028e: DUP7
0000028f: GAS
00000290: STATICCALL
00000291: SWAP3
00000292: POP
00000293: POP
00000294: POP
00000295: DUP1
00000296: ISZERO
00000297: PUSH2 0x02be
0000029a: JUMPI
0000029b: POP
0000029c: PUSH1 0x40
0000029e: MLOAD
0000029f: RETURNDATASIZE
000002a0: PUSH1 0x1f
000002a2: NOT
000002a3: PUSH1 0x1f
000002a5: DUP3
000002a6: ADD
000002a7: AND
000002a8: DUP3
000002a9: ADD
000002aa: DUP1
000002ab: PUSH1 0x40
000002ad: MSTORE
000002ae: POP
000002af: DUP2
000002b0: ADD
000002b1: SWAP1
000002b2: PUSH2 0x02bb
000002b5: SWAP2
000002b6: SWAP1
000002b7: PUSH2 0x093a
000002ba: JUMP
000002bb: JUMPDEST
000002bc: PUSH1 0x01
000002be: JUMPDEST
000002bf: PUSH2 0x02cc
000002c2: JUMPI
000002c3: PUSH1 0x00
000002c5: SWAP2
000002c6: POP
000002c7: POP
000002c8: PUSH2 0x02d2
000002cb: JUMP
000002cc: JUMPDEST
000002cd: DUP1
000002ce: SWAP3
000002cf: POP
000002d0: POP
000002d1: POP
000002d2: JUMPDEST
000002d3: SWAP2
000002d4: SWAP1
000002d5: POP
000002d6: JUMP
000002d7: JUMPDEST
000002d8: PUSH2 0x02df
000002db: PUSH2 0x04c0
000002de: JUMP
000002df: JUMPDEST
000002e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002f5: AND
000002f6: CALLER
000002f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000030c: AND
0000030d: EQ
0000030e: PUSH2 0x034c
00000311: JUMPI
00000312: PUSH1 0x40
00000314: MLOAD
00000315: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000336: DUP2
00000337: MSTORE
00000338: PUSH1 0x04
0000033a: ADD
0000033b: PUSH2 0x0343
0000033e: SWAP1
0000033f: PUSH2 0x09c4
00000342: JUMP
00000343: JUMPDEST
00000344: PUSH1 0x40
00000346: MLOAD
00000347: DUP1
00000348: SWAP2
00000349: SUB
0000034a: SWAP1
0000034b: REVERT
0000034c: JUMPDEST
0000034d: PUSH2 0x0365
00000350: DUP2
00000351: PUSH1 0x40
00000353: MLOAD
00000354: DUP1
00000355: PUSH1 0x20
00000357: ADD
00000358: PUSH1 0x40
0000035a: MSTORE
0000035b: DUP1
0000035c: PUSH1 0x00
0000035e: DUP2
0000035f: MSTORE
00000360: POP
00000361: PUSH2 0x04e9
00000364: JUMP
00000365: JUMPDEST
00000366: POP
00000367: JUMP
00000368: JUMPDEST
00000369: PUSH1 0x00
0000036b: PUSH2 0x0372
0000036e: PUSH2 0x04c0
00000371: JUMP
00000372: JUMPDEST
00000373: SWAP1
00000374: POP
00000375: SWAP1
00000376: JUMP
00000377: JUMPDEST
00000378: PUSH2 0x037f
0000037b: PUSH2 0x04c0
0000037e: JUMP
0000037f: JUMPDEST
00000380: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000395: AND
00000396: CALLER
00000397: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003ac: AND
000003ad: EQ
000003ae: PUSH2 0x03ec
000003b1: JUMPI
000003b2: PUSH1 0x40
000003b4: MLOAD
000003b5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000003d6: DUP2
000003d7: MSTORE
000003d8: PUSH1 0x04
000003da: ADD
000003db: PUSH2 0x03e3
000003de: SWAP1
000003df: PUSH2 0x09c4
000003e2: JUMP
000003e3: JUMPDEST
000003e4: PUSH1 0x40
000003e6: MLOAD
000003e7: DUP1
000003e8: SWAP2
000003e9: SUB
000003ea: SWAP1
000003eb: REVERT
000003ec: JUMPDEST
000003ed: PUSH2 0x043a
000003f0: DUP4
000003f1: DUP4
000003f2: DUP4
000003f3: DUP1
000003f4: DUP1
000003f5: PUSH1 0x1f
000003f7: ADD
000003f8: PUSH1 0x20
000003fa: DUP1
000003fb: SWAP2
000003fc: DIV
000003fd: MUL
000003fe: PUSH1 0x20
00000400: ADD
00000401: PUSH1 0x40
00000403: MLOAD
00000404: SWAP1
00000405: DUP2
00000406: ADD
00000407: PUSH1 0x40
00000409: MSTORE
0000040a: DUP1
0000040b: SWAP4
0000040c: SWAP3
0000040d: SWAP2
0000040e: SWAP1
0000040f: DUP2
00000410: DUP2
00000411: MSTORE
00000412: PUSH1 0x20
00000414: ADD
00000415: DUP4
00000416: DUP4
00000417: DUP1
00000418: DUP3
00000419: DUP5
0000041a: CALLDATACOPY
0000041b: PUSH1 0x00
0000041d: DUP2
0000041e: DUP5
0000041f: ADD
00000420: MSTORE
00000421: PUSH1 0x1f
00000423: NOT
00000424: PUSH1 0x1f
00000426: DUP3
00000427: ADD
00000428: AND
00000429: SWAP1
0000042a: POP
0000042b: DUP1
0000042c: DUP4
0000042d: ADD
0000042e: SWAP3
0000042f: POP
00000430: POP
00000431: POP
00000432: POP
00000433: POP
00000434: POP
00000435: POP
00000436: PUSH2 0x04e9
00000439: JUMP
0000043a: JUMPDEST
0000043b: POP
0000043c: POP
0000043d: POP
0000043e: JUMP
0000043f: JUMPDEST
00000440: PUSH2 0x0447
00000443: PUSH2 0x04c0
00000446: JUMP
00000447: JUMPDEST
00000448: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000045d: AND
0000045e: CALLER
0000045f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000474: AND
00000475: EQ
00000476: PUSH2 0x04b4
00000479: JUMPI
0000047a: PUSH1 0x40
0000047c: MLOAD
0000047d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000049e: DUP2
0000049f: MSTORE
000004a0: PUSH1 0x04
000004a2: ADD
000004a3: PUSH2 0x04ab
000004a6: SWAP1
000004a7: PUSH2 0x09c4
000004aa: JUMP
000004ab: JUMPDEST
000004ac: PUSH1 0x40
000004ae: MLOAD
000004af: DUP1
000004b0: SWAP2
000004b1: SUB
000004b2: SWAP1
000004b3: REVERT
000004b4: JUMPDEST
000004b5: PUSH2 0x04bd
000004b8: DUP2
000004b9: PUSH2 0x0618
000004bc: JUMP
000004bd: JUMPDEST
000004be: POP
000004bf: JUMP
000004c0: JUMPDEST
000004c1: PUSH1 0x00
000004c3: PUSH32 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
000004e4: SLOAD
000004e5: SWAP1
000004e6: POP
000004e7: SWAP1
000004e8: JUMP
000004e9: JUMPDEST
000004ea: PUSH1 0x00
000004ec: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
0000050d: SLOAD
0000050e: SWAP1
0000050f: POP
00000510: DUP3
00000511: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000532: SSTORE
00000533: DUP3
00000534: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000549: AND
0000054a: DUP2
0000054b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000560: AND
00000561: PUSH32 0x5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b7379068296
00000582: PUSH1 0x40
00000584: MLOAD
00000585: PUSH1 0x40
00000587: MLOAD
00000588: DUP1
00000589: SWAP2
0000058a: SUB
0000058b: SWAP1
0000058c: LOG3
0000058d: PUSH1 0x00
0000058f: DUP3
00000590: MLOAD
00000591: GT
00000592: ISZERO
00000593: PUSH2 0x0613
00000596: JUMPI
00000597: PUSH1 0x00
00000599: DUP4
0000059a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005af: AND
000005b0: DUP4
000005b1: PUSH1 0x40
000005b3: MLOAD
000005b4: PUSH2 0x05bd
000005b7: SWAP2
000005b8: SWAP1
000005b9: PUSH2 0x0a5e
000005bc: JUMP
000005bd: JUMPDEST
000005be: PUSH1 0x00
000005c0: PUSH1 0x40
000005c2: MLOAD
000005c3: DUP1
000005c4: DUP4
000005c5: SUB
000005c6: DUP2
000005c7: DUP6
000005c8: GAS
000005c9: DELEGATECALL
000005ca: SWAP2
000005cb: POP
000005cc: POP
000005cd: RETURNDATASIZE
000005ce: DUP1
000005cf: PUSH1 0x00
000005d1: DUP2
000005d2: EQ
000005d3: PUSH2 0x05f8
000005d6: JUMPI
000005d7: PUSH1 0x40
000005d9: MLOAD
000005da: SWAP2
000005db: POP
000005dc: PUSH1 0x1f
000005de: NOT
000005df: PUSH1 0x3f
000005e1: RETURNDATASIZE
000005e2: ADD
000005e3: AND
000005e4: DUP3
000005e5: ADD
000005e6: PUSH1 0x40
000005e8: MSTORE
000005e9: RETURNDATASIZE
000005ea: DUP3
000005eb: MSTORE
000005ec: RETURNDATASIZE
000005ed: PUSH1 0x00
000005ef: PUSH1 0x20
000005f1: DUP5
000005f2: ADD
000005f3: RETURNDATACOPY
000005f4: PUSH2 0x05fd
000005f7: JUMP
000005f8: JUMPDEST
000005f9: PUSH1 0x60
000005fb: SWAP2
000005fc: POP
000005fd: JUMPDEST
000005fe: POP
000005ff: POP
00000600: SWAP1
00000601: POP
00000602: DUP1
00000603: PUSH2 0x0611
00000606: JUMPI
00000607: RETURNDATASIZE
00000608: DUP1
00000609: PUSH1 0x00
0000060b: DUP1
0000060c: RETURNDATACOPY
0000060d: DUP1
0000060e: PUSH1 0x00
00000610: REVERT
00000611: JUMPDEST
00000612: POP
00000613: JUMPDEST
00000614: POP
00000615: POP
00000616: POP
00000617: JUMP
00000618: JUMPDEST
00000619: PUSH1 0x00
0000061b: PUSH2 0x0622
0000061e: PUSH2 0x04c0
00000621: JUMP
00000622: JUMPDEST
00000623: SWAP1
00000624: POP
00000625: DUP2
00000626: PUSH32 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
00000647: SSTORE
00000648: DUP2
00000649: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000065e: AND
0000065f: DUP2
00000660: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000675: AND
00000676: PUSH32 0xdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec29
00000697: PUSH1 0x40
00000699: MLOAD
0000069a: PUSH1 0x40
0000069c: MLOAD
0000069d: DUP1
0000069e: SWAP2
0000069f: SUB
000006a0: SWAP1
000006a1: LOG3
000006a2: POP
000006a3: POP
000006a4: JUMP
000006a5: JUMPDEST
000006a6: PUSH1 0x00
000006a8: DUP1
000006a9: REVERT
000006aa: JUMPDEST
000006ab: PUSH1 0x00
000006ad: DUP1
000006ae: REVERT
000006af: JUMPDEST
000006b0: PUSH1 0x00
000006b2: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000006d3: DUP3
000006d4: AND
000006d5: SWAP1
000006d6: POP
000006d7: SWAP2
000006d8: SWAP1
000006d9: POP
000006da: JUMP
000006db: JUMPDEST
000006dc: PUSH2 0x06e4
000006df: DUP2
000006e0: PUSH2 0x06af
000006e3: JUMP
000006e4: JUMPDEST
000006e5: DUP2
000006e6: EQ
000006e7: PUSH2 0x06ef
000006ea: JUMPI
000006eb: PUSH1 0x00
000006ed: DUP1
000006ee: REVERT
000006ef: JUMPDEST
000006f0: POP
000006f1: JUMP
000006f2: JUMPDEST
000006f3: PUSH1 0x00
000006f5: DUP2
000006f6: CALLDATALOAD
000006f7: SWAP1
000006f8: POP
000006f9: PUSH2 0x0701
000006fc: DUP2
000006fd: PUSH2 0x06db
00000700: JUMP
00000701: JUMPDEST
00000702: SWAP3
00000703: SWAP2
00000704: POP
00000705: POP
00000706: JUMP
00000707: JUMPDEST
00000708: PUSH1 0x00
0000070a: PUSH1 0x20
0000070c: DUP3
0000070d: DUP5
0000070e: SUB
0000070f: SLT
00000710: ISZERO
00000711: PUSH2 0x071d
00000714: JUMPI
00000715: PUSH2 0x071c
00000718: PUSH2 0x06a5
0000071b: JUMP
0000071c: JUMPDEST
0000071d: JUMPDEST
0000071e: PUSH1 0x00
00000720: PUSH2 0x072b
00000723: DUP5
00000724: DUP3
00000725: DUP6
00000726: ADD
00000727: PUSH2 0x06f2
0000072a: JUMP
0000072b: JUMPDEST
0000072c: SWAP2
0000072d: POP
0000072e: POP
0000072f: SWAP3
00000730: SWAP2
00000731: POP
00000732: POP
00000733: JUMP
00000734: JUMPDEST
00000735: PUSH1 0x00
00000737: DUP2
00000738: ISZERO
00000739: ISZERO
0000073a: SWAP1
0000073b: POP
0000073c: SWAP2
0000073d: SWAP1
0000073e: POP
0000073f: JUMP
00000740: JUMPDEST
00000741: PUSH2 0x0749
00000744: DUP2
00000745: PUSH2 0x0734
00000748: JUMP
00000749: JUMPDEST
0000074a: DUP3
0000074b: MSTORE
0000074c: POP
0000074d: POP
0000074e: JUMP
0000074f: JUMPDEST
00000750: PUSH1 0x00
00000752: PUSH1 0x20
00000754: DUP3
00000755: ADD
00000756: SWAP1
00000757: POP
00000758: PUSH2 0x0764
0000075b: PUSH1 0x00
0000075d: DUP4
0000075e: ADD
0000075f: DUP5
00000760: PUSH2 0x0740
00000763: JUMP
00000764: JUMPDEST
00000765: SWAP3
00000766: SWAP2
00000767: POP
00000768: POP
00000769: JUMP
0000076a: JUMPDEST
0000076b: PUSH1 0x00
0000076d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000782: DUP3
00000783: AND
00000784: SWAP1
00000785: POP
00000786: SWAP2
00000787: SWAP1
00000788: POP
00000789: JUMP
0000078a: JUMPDEST
0000078b: PUSH1 0x00
0000078d: PUSH2 0x0795
00000790: DUP3
00000791: PUSH2 0x076a
00000794: JUMP
00000795: JUMPDEST
00000796: SWAP1
00000797: POP
00000798: SWAP2
00000799: SWAP1
0000079a: POP
0000079b: JUMP
0000079c: JUMPDEST
0000079d: PUSH2 0x07a5
000007a0: DUP2
000007a1: PUSH2 0x078a
000007a4: JUMP
000007a5: JUMPDEST
000007a6: DUP2
000007a7: EQ
000007a8: PUSH2 0x07b0
000007ab: JUMPI
000007ac: PUSH1 0x00
000007ae: DUP1
000007af: REVERT
000007b0: JUMPDEST
000007b1: POP
000007b2: JUMP
000007b3: JUMPDEST
000007b4: PUSH1 0x00
000007b6: DUP2
000007b7: CALLDATALOAD
000007b8: SWAP1
000007b9: POP
000007ba: PUSH2 0x07c2
000007bd: DUP2
000007be: PUSH2 0x079c
000007c1: JUMP
000007c2: JUMPDEST
000007c3: SWAP3
000007c4: SWAP2
000007c5: POP
000007c6: POP
000007c7: JUMP
000007c8: JUMPDEST
000007c9: PUSH1 0x00
000007cb: PUSH1 0x20
000007cd: DUP3
000007ce: DUP5
000007cf: SUB
000007d0: SLT
000007d1: ISZERO
000007d2: PUSH2 0x07de
000007d5: JUMPI
000007d6: PUSH2 0x07dd
000007d9: PUSH2 0x06a5
000007dc: JUMP
000007dd: JUMPDEST
000007de: JUMPDEST
000007df: PUSH1 0x00
000007e1: PUSH2 0x07ec
000007e4: DUP5
000007e5: DUP3
000007e6: DUP6
000007e7: ADD
000007e8: PUSH2 0x07b3
000007eb: JUMP
000007ec: JUMPDEST
000007ed: SWAP2
000007ee: POP
000007ef: POP
000007f0: SWAP3
000007f1: SWAP2
000007f2: POP
000007f3: POP
000007f4: JUMP
000007f5: JUMPDEST
000007f6: PUSH2 0x07fe
000007f9: DUP2
000007fa: PUSH2 0x078a
000007fd: JUMP
000007fe: JUMPDEST
000007ff: DUP3
00000800: MSTORE
00000801: POP
00000802: POP
00000803: JUMP
00000804: JUMPDEST
00000805: PUSH1 0x00
00000807: PUSH1 0x20
00000809: DUP3
0000080a: ADD
0000080b: SWAP1
0000080c: POP
0000080d: PUSH2 0x0819
00000810: PUSH1 0x00
00000812: DUP4
00000813: ADD
00000814: DUP5
00000815: PUSH2 0x07f5
00000818: JUMP
00000819: JUMPDEST
0000081a: SWAP3
0000081b: SWAP2
0000081c: POP
0000081d: POP
0000081e: JUMP
0000081f: JUMPDEST
00000820: PUSH1 0x00
00000822: DUP1
00000823: REVERT
00000824: JUMPDEST
00000825: PUSH1 0x00
00000827: DUP1
00000828: REVERT
00000829: JUMPDEST
0000082a: PUSH1 0x00
0000082c: DUP1
0000082d: REVERT
0000082e: JUMPDEST
0000082f: PUSH1 0x00
00000831: DUP1
00000832: DUP4
00000833: PUSH1 0x1f
00000835: DUP5
00000836: ADD
00000837: SLT
00000838: PUSH2 0x0844
0000083b: JUMPI
0000083c: PUSH2 0x0843
0000083f: PUSH2 0x081f
00000842: JUMP
00000843: JUMPDEST
00000844: JUMPDEST
00000845: DUP3
00000846: CALLDATALOAD
00000847: SWAP1
00000848: POP
00000849: PUSH8 0xffffffffffffffff
00000852: DUP2
00000853: GT
00000854: ISZERO
00000855: PUSH2 0x0861
00000858: JUMPI
00000859: PUSH2 0x0860
0000085c: PUSH2 0x0824
0000085f: JUMP
00000860: JUMPDEST
00000861: JUMPDEST
00000862: PUSH1 0x20
00000864: DUP4
00000865: ADD
00000866: SWAP2
00000867: POP
00000868: DUP4
00000869: PUSH1 0x01
0000086b: DUP3
0000086c: MUL
0000086d: DUP4
0000086e: ADD
0000086f: GT
00000870: ISZERO
00000871: PUSH2 0x087d
00000874: JUMPI
00000875: PUSH2 0x087c
00000878: PUSH2 0x0829
0000087b: JUMP
0000087c: JUMPDEST
0000087d: JUMPDEST
0000087e: SWAP3
0000087f: POP
00000880: SWAP3
00000881: SWAP1
00000882: POP
00000883: JUMP
00000884: JUMPDEST
00000885: PUSH1 0x00
00000887: DUP1
00000888: PUSH1 0x00
0000088a: PUSH1 0x40
0000088c: DUP5
0000088d: DUP7
0000088e: SUB
0000088f: SLT
00000890: ISZERO
00000891: PUSH2 0x089d
00000894: JUMPI
00000895: PUSH2 0x089c
00000898: PUSH2 0x06a5
0000089b: JUMP
0000089c: JUMPDEST
0000089d: JUMPDEST
0000089e: PUSH1 0x00
000008a0: PUSH2 0x08ab
000008a3: DUP7
000008a4: DUP3
000008a5: DUP8
000008a6: ADD
000008a7: PUSH2 0x07b3
000008aa: JUMP
000008ab: JUMPDEST
000008ac: SWAP4
000008ad: POP
000008ae: POP
000008af: PUSH1 0x20
000008b1: DUP5
000008b2: ADD
000008b3: CALLDATALOAD
000008b4: PUSH8 0xffffffffffffffff
000008bd: DUP2
000008be: GT
000008bf: ISZERO
000008c0: PUSH2 0x08cc
000008c3: JUMPI
000008c4: PUSH2 0x08cb
000008c7: PUSH2 0x06aa
000008ca: JUMP
000008cb: JUMPDEST
000008cc: JUMPDEST
000008cd: PUSH2 0x08d8
000008d0: DUP7
000008d1: DUP3
000008d2: DUP8
000008d3: ADD
000008d4: PUSH2 0x082e
000008d7: JUMP
000008d8: JUMPDEST
000008d9: SWAP3
000008da: POP
000008db: SWAP3
000008dc: POP
000008dd: POP
000008de: SWAP3
000008df: POP
000008e0: SWAP3
000008e1: POP
000008e2: SWAP3
000008e3: JUMP
000008e4: JUMPDEST
000008e5: PUSH2 0x08ed
000008e8: DUP2
000008e9: PUSH2 0x06af
000008ec: JUMP
000008ed: JUMPDEST
000008ee: DUP3
000008ef: MSTORE
000008f0: POP
000008f1: POP
000008f2: JUMP
000008f3: JUMPDEST
000008f4: PUSH1 0x00
000008f6: PUSH1 0x20
000008f8: DUP3
000008f9: ADD
000008fa: SWAP1
000008fb: POP
000008fc: PUSH2 0x0908
000008ff: PUSH1 0x00
00000901: DUP4
00000902: ADD
00000903: DUP5
00000904: PUSH2 0x08e4
00000907: JUMP
00000908: JUMPDEST
00000909: SWAP3
0000090a: SWAP2
0000090b: POP
0000090c: POP
0000090d: JUMP
0000090e: JUMPDEST
0000090f: PUSH2 0x0917
00000912: DUP2
00000913: PUSH2 0x0734
00000916: JUMP
00000917: JUMPDEST
00000918: DUP2
00000919: EQ
0000091a: PUSH2 0x0922
0000091d: JUMPI
0000091e: PUSH1 0x00
00000920: DUP1
00000921: REVERT
00000922: JUMPDEST
00000923: POP
00000924: JUMP
00000925: JUMPDEST
00000926: PUSH1 0x00
00000928: DUP2
00000929: MLOAD
0000092a: SWAP1
0000092b: POP
0000092c: PUSH2 0x0934
0000092f: DUP2
00000930: PUSH2 0x090e
00000933: JUMP
00000934: JUMPDEST
00000935: SWAP3
00000936: SWAP2
00000937: POP
00000938: POP
00000939: JUMP
0000093a: JUMPDEST
0000093b: PUSH1 0x00
0000093d: PUSH1 0x20
0000093f: DUP3
00000940: DUP5
00000941: SUB
00000942: SLT
00000943: ISZERO
00000944: PUSH2 0x0950
00000947: JUMPI
00000948: PUSH2 0x094f
0000094b: PUSH2 0x06a5
0000094e: JUMP
0000094f: JUMPDEST
00000950: JUMPDEST
00000951: PUSH1 0x00
00000953: PUSH2 0x095e
00000956: DUP5
00000957: DUP3
00000958: DUP6
00000959: ADD
0000095a: PUSH2 0x0925
0000095d: JUMP
0000095e: JUMPDEST
0000095f: SWAP2
00000960: POP
00000961: POP
00000962: SWAP3
00000963: SWAP2
00000964: POP
00000965: POP
00000966: JUMP
00000967: JUMPDEST
00000968: PUSH1 0x00
0000096a: DUP3
0000096b: DUP3
0000096c: MSTORE
0000096d: PUSH1 0x20
0000096f: DUP3
00000970: ADD
00000971: SWAP1
00000972: POP
00000973: SWAP3
00000974: SWAP2
00000975: POP
00000976: POP
00000977: JUMP
00000978: JUMPDEST
00000979: PUSH32 0x4e4f545f415554484f52495a4544000000000000000000000000000000000000
0000099a: PUSH1 0x00
0000099c: DUP3
0000099d: ADD
0000099e: MSTORE
0000099f: POP
000009a0: JUMP
000009a1: JUMPDEST
000009a2: PUSH1 0x00
000009a4: PUSH2 0x09ae
000009a7: PUSH1 0x0e
000009a9: DUP4
000009aa: PUSH2 0x0967
000009ad: JUMP
000009ae: JUMPDEST
000009af: SWAP2
000009b0: POP
000009b1: PUSH2 0x09b9
000009b4: DUP3
000009b5: PUSH2 0x0978
000009b8: JUMP
000009b9: JUMPDEST
000009ba: PUSH1 0x20
000009bc: DUP3
000009bd: ADD
000009be: SWAP1
000009bf: POP
000009c0: SWAP2
000009c1: SWAP1
000009c2: POP
000009c3: JUMP
000009c4: JUMPDEST
000009c5: PUSH1 0x00
000009c7: PUSH1 0x20
000009c9: DUP3
000009ca: ADD
000009cb: SWAP1
000009cc: POP
000009cd: DUP2
000009ce: DUP2
000009cf: SUB
000009d0: PUSH1 0x00
000009d2: DUP4
000009d3: ADD
000009d4: MSTORE
000009d5: PUSH2 0x09dd
000009d8: DUP2
000009d9: PUSH2 0x09a1
000009dc: JUMP
000009dd: JUMPDEST
000009de: SWAP1
000009df: POP
000009e0: SWAP2
000009e1: SWAP1
000009e2: POP
000009e3: JUMP
000009e4: JUMPDEST
000009e5: PUSH1 0x00
000009e7: DUP2
000009e8: MLOAD
000009e9: SWAP1
000009ea: POP
000009eb: SWAP2
000009ec: SWAP1
000009ed: POP
000009ee: JUMP
000009ef: JUMPDEST
000009f0: PUSH1 0x00
000009f2: DUP2
000009f3: SWAP1
000009f4: POP
000009f5: SWAP3
000009f6: SWAP2
000009f7: POP
000009f8: POP
000009f9: JUMP
000009fa: JUMPDEST
000009fb: PUSH1 0x00
000009fd: JUMPDEST
000009fe: DUP4
000009ff: DUP2
00000a00: LT
00000a01: ISZERO
00000a02: PUSH2 0x0a18
00000a05: JUMPI
00000a06: DUP1
00000a07: DUP3
00000a08: ADD
00000a09: MLOAD
00000a0a: DUP2
00000a0b: DUP5
00000a0c: ADD
00000a0d: MSTORE
00000a0e: PUSH1 0x20
00000a10: DUP2
00000a11: ADD
00000a12: SWAP1
00000a13: POP
00000a14: PUSH2 0x09fd
00000a17: JUMP
00000a18: JUMPDEST
00000a19: DUP4
00000a1a: DUP2
00000a1b: GT
00000a1c: ISZERO
00000a1d: PUSH2 0x0a27
00000a20: JUMPI
00000a21: PUSH1 0x00
00000a23: DUP5
00000a24: DUP5
00000a25: ADD
00000a26: MSTORE
00000a27: JUMPDEST
00000a28: POP
00000a29: POP
00000a2a: POP
00000a2b: POP
00000a2c: JUMP
00000a2d: JUMPDEST
00000a2e: PUSH1 0x00
00000a30: PUSH2 0x0a38
00000a33: DUP3
00000a34: PUSH2 0x09e4
00000a37: JUMP
00000a38: JUMPDEST
00000a39: PUSH2 0x0a42
00000a3c: DUP2
00000a3d: DUP6
00000a3e: PUSH2 0x09ef
00000a41: JUMP
00000a42: JUMPDEST
00000a43: SWAP4
00000a44: POP
00000a45: PUSH2 0x0a52
00000a48: DUP2
00000a49: DUP6
00000a4a: PUSH1 0x20
00000a4c: DUP7
00000a4d: ADD
00000a4e: PUSH2 0x09fa
00000a51: JUMP
00000a52: JUMPDEST
00000a53: DUP1
00000a54: DUP5
00000a55: ADD
00000a56: SWAP2
00000a57: POP
00000a58: POP
00000a59: SWAP3
00000a5a: SWAP2
00000a5b: POP
00000a5c: POP
00000a5d: JUMP
00000a5e: JUMPDEST
00000a5f: PUSH1 0x00
00000a61: PUSH2 0x0a6a
00000a64: DUP3
00000a65: DUP5
00000a66: PUSH2 0x0a2d
00000a69: JUMP
00000a6a: JUMPDEST
00000a6b: SWAP2
00000a6c: POP
00000a6d: DUP2
00000a6e: SWAP1
00000a6f: POP
00000a70: SWAP3
00000a71: SWAP2
00000a72: POP
00000a73: POP
00000a74: JUMP
00000a75: INVALID
00000a76: LOG2
00000a77: PUSH5 0x6970667358
00000a7d: UNKNOWN(0x22)
00000a7e: SLT
00000a7f: KECCAK256
00000a80: UNKNOWN(0xD9)
00000a81: UNKNOWN(0xE7)
00000a82: RETURNDATASIZE
00000a83: DIV
00000a84: PUSH30 0x068f7b0a69ce10e0c4ea0c67f2068657f56595289afaab015e61fc64736f
00000aa3: PUSH13

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0x2e338637ee4912056b4e09a63dcab8a46adca01e6a2f058fa2a304c89971fd0d
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 60,
    "trace_id": "0x2e338637ee4912056b4e09a63dcab8a46adca01e6a2f058fa2a304c89971fd0d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x01ffc9a7",
            "selector": "0x01ffc9a7",
            "calldata_variants": [
                "0x01ffc9a7",
                "0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3659cfe6",
            "selector": "0x3659cfe6",
            "calldata_variants": [
                "0x3659cfe6",
                "0x3659cfe60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3e47158c",
            "selector": "0x3e47158c",
            "calldata_variants": [
                "0x3e47158c",
                "0x3e47158c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4f1ef286",
            "selector": "0x4f1ef286",
            "calldata_variants": [
                "0x4f1ef286",
                "0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8356ca4f",
            "selector": "0x8356ca4f",
            "calldata_variants": [
                "0x8356ca4f",
                "0x8356ca4f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 365,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 1481,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 758,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 918,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1118,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "delegatecall_count": 2,
    "untrusted_delegatecall_count": 2
}
high upgradeability slither Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id 85 no
view
evidence_json
{
    "impact": "High",
    "detector": "controlled-delegatecall",
    "elements": [
        {
            "name": "_setImplementation",
            "type": "function",
            "source_mapping": {
                "lines": [
                    53,
                    54,
                    55,
                    56,
                    57,
                    58,
                    59,
                    60,
                    61,
                    62,
                    63,
                    64,
                    65,
                    66,
                    67,
                    68,
                    69,
                    70,
                    71,
                    72,
                    73,
                    74,
                    75,
                    76,
                    77,
                    78,
                    79,
                    80,
                    81,
                    82,
                    83,
                    84,
                    85,
                    86,
                    87,
                    88
                ],
                "start": 1567,
                "length": 1190,
                "ending_column": 6,
                "is_dependency": false,
                "filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
                "starting_column": 5,
                "filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
                "filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "Proxy",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            5,
                            6,
                            7,
                            8,
                            9,
                            10,
                            11,
                            12,
                            13,
                            14,
                            15,
                            16,
                            17,
                            18,
                            19,
                            20,
                            21,
                            22,
                            23,
                            24,
                            25,
                            26,
                            27,
                            28,
                            29,
                            30,
                            31,
                            32,
                            33,
                            34,
                            35,
                            36,
                            37,
                            38,
                            39,
                            40,
                            41,
                            42,
                            43,
                            44,
                            45,
                            46,
                            47,
                            48,
                            49,
                            50,
                            51,
                            52,
                            53,
                            54,
                            55,
                            56,
                            57,
                            58,
                            59,
                            60,
                            61,
                            62,
                            63,
                            64,
                            65,
                            66,
                            67,
                            68,
                            69,
                            70,
                            71,
                            72,
                            73,
                            74,
                            75,
                            76,
                            77,
                            78,
                            79,
                            80,
                            81,
                            82,
                            83,
                            84,
                            85,
                            86,
                            87,
                            88,
                            89
                        ],
                        "start": 74,
                        "length": 2685,
                        "ending_column": 2,
                        "is_dependency": false,
                        "filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
                        "starting_column": 1,
                        "filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
                        "filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
                    }
                },
                "signature": "_setImplementation(address,bytes)"
            }
        },
        {
            "name": "(success,None) = newImplementation.delegatecall(data)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    78
                ],
                "start": 2350,
                "length": 55,
                "ending_column": 68,
                "is_dependency": false,
                "filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
                "starting_column": 13,
                "filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
                "filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "_setImplementation",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            53,
                            54,
                            55,
                            56,
                            57,
                            58,
                            59,
                            60,
                            61,
                            62,
                            63,
                            64,
                            65,
                            66,
                            67,
                            68,
                            69,
                            70,
                            71,
                            72,
                            73,
                            74,
                            75,
                            76,
                            77,
                            78,
                            79,
                            80,
                            81,
                            82,
                            83,
                            84,
                            85,
                            86,
                            87,
                            88
                        ],
                        "start": 1567,
                        "length": 1190,
                        "ending_column": 6,
                        "is_dependency": false,
                        "filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
                        "filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Proxy",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    5,
                                    6,
                                    7,
                                    8,
                                    9,
                                    10,
                                    11,
                                    12,
                                    13,
                                    14,
                                    15,
                                    16,
                                    17,
                                    18,
                                    19,
                                    20,
                                    21,
                                    22,
                                    23,
                                    24,
                                    25,
                                    26,
                                    27,
                                    28,
                                    29,
                                    30,
                                    31,
                                    32,
                                    33,
                                    34,
                                    35,
                                    36,
                                    37,
                                    38,
                                    39,
                                    40,
                                    41,
                                    42,
                                    43,
                                    44,
                                    45,
                                    46,
                                    47,
                                    48,
                                    49,
                                    50,
                                    51,
                                    52,
                                    53,
                                    54,
                                    55,
                                    56,
                                    57,
                                    58,
                                    59,
                                    60,
                                    61,
                                    62,
                                    63,
                                    64,
                                    65,
                                    66,
                                    67,
                                    68,
                                    69,
                                    70,
                                    71,
                                    72,
                                    73,
                                    74,
                                    75,
                                    76,
                                    77,
                                    78,
                                    79,
                                    80,
                                    81,
                                    82,
                                    83,
                                    84,
                                    85,
                                    86,
                                    87,
                                    88,
                                    89
                                ],
                                "start": 74,
                                "length": 2685,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
                                "starting_column": 1,
                                "filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
                                "filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
                            }
                        },
                        "signature": "_setImplementation(address,bytes)"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/vendor/proxy/EIP173/Proxy.sol",
            "name": "_setImplementation",
            "type": "function",
            "lines": [
                53,
                54,
                55,
                56,
                57,
                58,
                59,
                60,
                61,
                62,
                63,
                64,
                65,
                66,
                67,
                68,
                69,
                70,
                71,
                72,
                73,
                74,
                75,
                76,
                77,
                78,
                79,
                80,
                81,
                82,
                83,
                84,
                85,
                86,
                87,
                88
            ]
        },
        {
            "file": "contracts/vendor/proxy/EIP173/Proxy.sol",
            "name": "(success,None) = newImplementation.delegatecall(data)",
            "type": "node",
            "lines": [
                78
            ]
        }
    ],
    "description": "Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id\n\t- (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78)"
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 2
}