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

Analysis Run

bbe6df07-a5d0-437c-95c1-fe533e32b67d

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 12:58 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 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
30639 report.consolidate complete 1 / 1 3 months ago
74830 artifact.fetch complete 1 / 3 1 week ago
74831 tool.cast_disasm complete 1 / 3 1 week ago
74832 analysis.bundle complete 1 / 3 1 week ago
74833 capability.graph complete 1 / 3 1 week ago
74834 detector.run complete 1 / 3 1 week ago
74835 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Identified a low-severity accounting risk when fee-on-transfer/rebasing ERC20s are used; otherwise no major issues in scope.
View stderr
[codex:1372309] OpenAI Codex v0.77.0 (research preview)
[codex:1372309] --------
[codex:1372309] workdir: /tmp/codex-multi-tazl1dlt
[codex:1372309] model: gpt-5.2-codex
[codex:1372309] provider: openai
[codex:1372309] approval: never
[codex:1372309] sandbox: read-only
[codex:1372309] reasoning effort: xhigh
[codex:1372309] reasoning summaries: auto
[codex:1372309] session id: 019b6cbf-0043-74c3-ab71-86704f1659e6
[codex:1372309] --------
[codex:1372309] user
[codex:1372309] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1372309] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1372309] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1372309] 
[codex:1372309] Scope rules:
[codex:1372309] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1372309] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1372309] 
[codex:1372309] Output MUST be valid JSON matching the provided schema.
[codex:1372309] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1372309] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1372309] 
[codex:1372309] Output constraints (IMPORTANT):
[codex:1372309] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1372309] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1372309] mcp startup: no servers
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Preparing to read audit bundle**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc ls in /tmp/codex-multi-tazl1dlt succeeded in 6ms:
[codex:1372309] AUDIT_BUNDLE.txt
[codex:1372309] codex-output-schema.json
[codex:1372309] contracts
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Reading AUDIT_BUNDLE.txt**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-tazl1dlt succeeded in 6ms:
[codex:1372309] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1372309] 
[codex:1372309] ================================================================================
[codex:1372309] FILE: contracts/node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: MIT
[codex:1372309] // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
[codex:1372309] 
[codex:1372309] pragma solidity ^0.8.20;
[codex:1372309] 
[codex:1372309] import {IERC20} from "./IERC20.sol";
[codex:1372309] import {IERC165} from "./IERC165.sol";
[codex:1372309] 
[codex:1372309] /**
[codex:1372309]  * @title IERC1363
[codex:1372309]  * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
[codex:1372309]  *
[codex:1372309]  * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
[codex:1372309]  * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
[codex:1372309]  */
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Scanning audit bundle for first-party contracts**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc 'rg -n "''^FILE: " AUDIT_BUNDLE.txt' in /tmp/codex-multi-tazl1dlt succeeded in 7ms:
[codex:1372309] 4:FILE: contracts/node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol
[codex:1372309] 94:FILE: contracts/node_modules/@openzeppelin/contracts/interfaces/IERC165.sol
[codex:1372309] 104:FILE: contracts/node_modules/@openzeppelin/contracts/interfaces/IERC20.sol
[codex:1372309] 114:FILE: contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1372309] 197:FILE: contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1372309] 400:FILE: contracts/node_modules/@openzeppelin/contracts/utils/Address.sol
[codex:1372309] 554:FILE: contracts/node_modules/@openzeppelin/contracts/utils/Errors.sol
[codex:1372309] 592:FILE: contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol
[codex:1372309] 621:FILE: contracts/src/contracts/PrivacyPool.sol
[codex:1372309] 811:FILE: contracts/src/contracts/State.sol
[codex:1372309] 998:FILE: contracts/src/contracts/implementations/PrivacyPoolComplex.sol
[codex:1372309] 1070:FILE: contracts/src/contracts/lib/Constants.sol
[codex:1372309] 1083:FILE: contracts/src/contracts/lib/ProofLib.sol
[codex:1372309] 1254:FILE: contracts/src/interfaces/IEntrypoint.sol
[codex:1372309] 1649:FILE: contracts/src/interfaces/IPrivacyPool.sol
[codex:1372309] 1851:FILE: contracts/src/interfaces/IState.sol
[codex:1372309] 2022:FILE: contracts/src/interfaces/IVerifier.sol
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Preparing to review key Solidity files**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "sed -n '621,997p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-tazl1dlt succeeded in 5ms:
[codex:1372309] FILE: contracts/src/contracts/PrivacyPool.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: Apache-2.0
[codex:1372309] pragma solidity 0.8.28;
[codex:1372309] 
[codex:1372309] /*
[codex:1372309] 
[codex:1372309] Made with ♥ for 0xBow by
[codex:1372309] 
[codex:1372309] ░██╗░░░░░░░██╗░█████╗░███╗░░██╗██████╗░███████╗██████╗░██╗░░░░░░█████╗░███╗░░██╗██████╗░
[codex:1372309] ░██║░░██╗░░██║██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗
[codex:1372309] ░╚██╗████╗██╔╝██║░░██║██╔██╗██║██║░░██║█████╗░░██████╔╝██║░░░░░███████║██╔██╗██║██║░░██║
[codex:1372309] ░░████╔═████║░██║░░██║██║╚████║██║░░██║██╔══╝░░██╔══██╗██║░░░░░██╔══██║██║╚████║██║░░██║
[codex:1372309] ░░╚██╔╝░╚██╔╝░╚█████╔╝██║░╚███║██████╔╝███████╗██║░░██║███████╗██║░░██║██║░╚███║██████╔╝
[codex:1372309] ░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚══╝╚═════╝░╚══════╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░
[codex:1372309] 
[codex:1372309] https://defi.sucks/
[codex:1372309] 
[codex:1372309] */
[codex:1372309] 
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Continuing to review files**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "sed -n '998,1253p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-tazl1dlt succeeded in 5ms:
[codex:1372309] FILE: contracts/src/contracts/implementations/PrivacyPoolComplex.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: Apache-2.0
[codex:1372309] pragma solidity 0.8.28;
[codex:1372309] 
[codex:1372309] /*
[codex:1372309] 
[codex:1372309] Made with ♥ for 0xBow by
[codex:1372309] 
[codex:1372309] ░██╗░░░░░░░██╗░█████╗░███╗░░██╗██████╗░███████╗██████╗░██╗░░░░░░█████╗░███╗░░██╗██████╗░
[codex:1372309] ░██║░░██╗░░██║██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗
[codex:1372309] ░╚██╗████╗██╔╝██║░░██║██╔██╗██║██║░░██║█████╗░░██████╔╝██║░░░░░███████║██╔██╗██║██║░░██║
[codex:1372309] ░░████╔═████║░██║░░██║██║╚████║██║░░██║██╔══╝░░██╔══██╗██║░░░░░██╔══██║██║╚████║██║░░██║
[codex:1372309] ░░╚██╔╝░╚██╔╝░╚█████╔╝██║░╚███║██████╔╝███████╗██║░░██║███████╗██║░░██║██║░╚███║██████╔╝
[codex:1372309] ░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚══╝╚═════╝░╚══════╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░
[codex:1372309] 
[codex:1372309] https://defi.sucks/
[codex:1372309] 
[codex:1372309] */
[codex:1372309] 
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Checking for IEntrypoint interface**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "sed -n '1254,1648p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-tazl1dlt succeeded in 5ms:
[codex:1372309] FILE: contracts/src/interfaces/IEntrypoint.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: Apache-2.0
[codex:1372309] pragma solidity 0.8.28;
[codex:1372309] 
[codex:1372309] import {IERC20} from '@oz/interfaces/IERC20.sol';
[codex:1372309] 
[codex:1372309] import {ProofLib} from '../contracts/lib/ProofLib.sol';
[codex:1372309] import {IPrivacyPool} from 'interfaces/IPrivacyPool.sol';
[codex:1372309] 
[codex:1372309] /**
[codex:1372309]  * @title IEntrypoint
[codex:1372309]  * @notice Interface for the Entrypoint contract
[codex:1372309]  */
[codex:1372309] interface IEntrypoint {
[codex:1372309]   /*///////////////////////////////////////////////////////////////
[codex:1372309]                               STRUCTS
[codex:1372309]   //////////////////////////////////////////////////////////////*/
[codex:1372309] 
[codex:1372309]   /**
[codex:1372309] 
[codex:1372309] 
[codex:1372309] 
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Analyzing contract reentrancy and state updates**
[codex:1372309] thinking
[codex:1372309] **Examining state roots, access controls, and token transfer nuances**
[codex:1372309] 
[codex:1372309] I'll explore how root history and index management handle inserts and potential overflows, consider access implications of unrestricted withdraw calls bypassing relayers, and weigh token transfer assumptions—especially around fee-on-transfer tokens—that could impact pool accounting and withdrawals. There’s also a look at potential reentrancy through external calls like proof verification and entrypoint queries. Overall, I’m checking subtle logic gaps that might allow bypasses or inconsistencies, while recognizing many safeguards depend on upstream design or trusted components.
[codex:1372309] thinking
[codex:1372309] **Analyzing token transfer reentrancy and ragequit logic**
[codex:1372309] 
[codex:1372309] I'm exploring how deposit’s state update before the token transfer enables a potential reentrancy attack via a malicious token’s transferFrom that calls withdraw, allowing withdrawal against untransferred funds. Additionally, I’m checking the ragequit logic’s handling of commitment reuse and nullifier checks to confirm protections against double-spending or label collisions. The token transfer assumptions around safeTransfer and fee-on-transfer behavior also remain a key concern.
[codex:1372309] thinking
[codex:1372309] **Evaluating fee-on-transfer token risks and audit completeness**
[codex:1372309] 
[codex:1372309] I'm assessing how fee-on-transfer or rebasing tokens can cause accounting mismatches in deposit and withdrawal, potentially leading to insolvency by over-crediting commitments compared to actual token balances. I’m also considering whether the audit bundle is fully reviewed, planning to verify coverage of all relevant contract files beyond earlier truncated outputs to ensure thoroughness.
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "sed -n '1,620p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-tazl1dlt succeeded in 7ms:
[codex:1372309] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1372309] 
[codex:1372309] ================================================================================
[codex:1372309] FILE: contracts/node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: MIT
[codex:1372309] // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
[codex:1372309] 
[codex:1372309] pragma solidity ^0.8.20;
[codex:1372309] 
[codex:1372309] import {IERC20} from "./IERC20.sol";
[codex:1372309] import {IERC165} from "./IERC165.sol";
[codex:1372309] 
[codex:1372309] /**
[codex:1372309]  * @title IERC1363
[codex:1372309]  * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
[codex:1372309]  *
[codex:1372309]  * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
[codex:1372309]  * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
[codex:1372309]  */
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Fetching final chunk of interfaces**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "sed -n '1649,2062p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-tazl1dlt succeeded in 6ms:
[codex:1372309] FILE: contracts/src/interfaces/IPrivacyPool.sol
[codex:1372309] ================================================================================
[codex:1372309] // SPDX-License-Identifier: Apache-2.0
[codex:1372309] pragma solidity 0.8.28;
[codex:1372309] 
[codex:1372309] import {ProofLib} from '../contracts/lib/ProofLib.sol';
[codex:1372309] import {IState} from 'interfaces/IState.sol';
[codex:1372309] 
[codex:1372309] /**
[codex:1372309]  * @title IPrivacyPool
[codex:1372309]  * @notice Interface for the PrivacyPool contract
[codex:1372309]  */
[codex:1372309] interface IPrivacyPool is IState {
[codex:1372309]   /*///////////////////////////////////////////////////////////////
[codex:1372309]                               STRUCTS
[codex:1372309]   //////////////////////////////////////////////////////////////*/
[codex:1372309] 
[codex:1372309]   /**
[codex:1372309]    * @notice Struct for the withdrawal request
[codex:1372309]    * @dev The integrity of this data is ensured by the `context` signal in the proof
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Drawing conclusion on vulnerabilities**
[codex:1372309] 
[codex:1372309] I'm reviewing potential issues in the contract related to fee-on-transfer tokens, reentrancy, and withdrawal mechanics. The main concern seems to be how fee-on-transfer tokens can disrupt accounting, causing fund imbalances. I'm sizing up severity and appropriate categories, planning to back this with precise code locations found using line-numbered file views. This should help produce a focused, evidence-backed finding.
[codex:1372309] exec
[codex:1372309] /bin/bash -lc "nl -ba contracts/src/contracts/PrivacyPool.sol | sed -n '1,200p'" in /tmp/codex-multi-tazl1dlt succeeded in 6ms:
[codex:1372309]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1372309]      2	pragma solidity 0.8.28;
[codex:1372309]      3	
[codex:1372309]      4	/*
[codex:1372309]      5	
[codex:1372309]      6	Made with ♥ for 0xBow by
[codex:1372309]      7	
[codex:1372309]      8	░██╗░░░░░░░██╗░█████╗░███╗░░██╗██████╗░███████╗██████╗░██╗░░░░░░█████╗░███╗░░██╗██████╗░
[codex:1372309]      9	░██║░░██╗░░██║██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗
[codex:1372309]     10	░╚██╗████╗██╔╝██║░░██║██╔██╗██║██║░░██║█████╗░░██████╔╝██║░░░░░███████║██╔██╗██║██║░░██║
[codex:1372309]     11	░░████╔═████║░██║░░██║██║╚████║██║░░██║██╔══╝░░██╔══██╗██║░░░░░██╔══██║██║╚████║██║░░██║
[codex:1372309]     12	░░╚██╔╝░╚██╔╝░╚█████╔╝██║░╚███║██████╔╝███████╗██║░░██║███████╗██║░░██║██║░╚███║██████╔╝
[codex:1372309]     13	░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚══╝╚═════╝░╚══════╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░
[codex:1372309]     14	
[codex:1372309]     15	https://defi.sucks/
[codex:1372309]     16	
[codex:1372309]     17	*/
[codex:1372309]     18	
[codex:1372309]     19	import {PoseidonT4} from 'poseidon/PoseidonT4.sol';
[codex:1372309]     20	
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Reviewing specific code lines**
[codex:1372309] exec
[codex:1372309] /bin/bash -lc 'nl -ba contracts/src/contracts/implementations/PrivacyPoolComplex.sol' in /tmp/codex-multi-tazl1dlt succeeded in 5ms:
[codex:1372309]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1372309]      2	pragma solidity 0.8.28;
[codex:1372309]      3	
[codex:1372309]      4	/*
[codex:1372309]      5	
[codex:1372309]      6	Made with ♥ for 0xBow by
[codex:1372309]      7	
[codex:1372309]      8	░██╗░░░░░░░██╗░█████╗░███╗░░██╗██████╗░███████╗██████╗░██╗░░░░░░█████╗░███╗░░██╗██████╗░
[codex:1372309]      9	░██║░░██╗░░██║██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗
[codex:1372309]     10	░╚██╗████╗██╔╝██║░░██║██╔██╗██║██║░░██║█████╗░░██████╔╝██║░░░░░███████║██╔██╗██║██║░░██║
[codex:1372309]     11	░░████╔═████║░██║░░██║██║╚████║██║░░██║██╔══╝░░██╔══██╗██║░░░░░██╔══██║██║╚████║██║░░██║
[codex:1372309]     12	░░╚██╔╝░╚██╔╝░╚█████╔╝██║░╚███║██████╔╝███████╗██║░░██║███████╗██║░░██║██║░╚███║██████╔╝
[codex:1372309]     13	░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚══╝╚═════╝░╚══════╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░
[codex:1372309]     14	
[codex:1372309]     15	https://defi.sucks/
[codex:1372309]     16	
[codex:1372309]     17	*/
[codex:1372309]     18	
[codex:1372309]     19	import {IERC20, SafeERC20} from '@oz/token/ERC20/utils/SafeERC20.sol';
[codex:1372309]     20	
[codex:1372309] 
[codex:1372309] thinking
[codex:1372309] **Preparing JSON for fee-on-transfer finding**
[codex:1372309] codex
[codex:1372309] {"no_findings":false,"summary":"Identified a low-severity accounting risk when fee-on-transfer/rebasing ERC20s are used; otherwise no major issues in scope.","findings":[{"severity":"low","category":"other","title":"Fee-on-transfer/rebasing ERC20s can break pool accounting","exploit_scenario":"If a pool is registered for a deflationary or fee-on-transfer token, deposits record the requested `_value` while the pool receives less. An attacker can deposit such a token and later withdraw the full recorded amount, shifting the transfer fee deficit onto other depositors or causing withdrawals to fail once the pool balance is insufficient.","recommendation":"Explicitly forbid fee-on-transfer/rebasing tokens at the registry layer, or measure actual received amounts (balance-before/after) in `_pull` and use that value for commitment generation and withdrawal accounting.","evidence":"Deposit commitments are based on `_value`, and `_pull` transfers that nominal amount without verifying the actual tokens received.","locations":["contracts/src/contracts/PrivacyPool.sol:82","contracts/src/contracts/PrivacyPool.sol:97","contracts/src/contracts/PrivacyPool.sol:103","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:50","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:55","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:64"]}]}
[codex:1372309] tokens used
[codex:1372309] 97,082
[codex:1372309] {"no_findings":false,"summary":"Identified a low-severity accounting risk when fee-on-transfer/rebasing ERC20s are used; otherwise no major issues in scope.","findings":[{"severity":"low","category":"other","title":"Fee-on-transfer/rebasing ERC20s can break pool accounting","exploit_scenario":"If a pool is registered for a deflationary or fee-on-transfer token, deposits record the requested `_value` while the pool receives less. An attacker can deposit such a token and later withdraw the full recorded amount, shifting the transfer fee deficit onto other depositors or causing withdrawals to fail once the pool balance is insufficient.","recommendation":"Explicitly forbid fee-on-transfer/rebasing tokens at the registry layer, or measure actual received amounts (balance-before/after) in `_pull` and use that value for commitment generation and withdrawal accounting.","evidence":"Deposit commitments are based on `_value`, and `_pull` transfers that nominal amount without verifying the actual tokens received.","locations":["contracts/src/contracts/PrivacyPool.sol:82","contracts/src/contracts/PrivacyPool.sol:97","contracts/src/contracts/PrivacyPool.sol:103","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:50","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:55","contracts/src/contracts/implementations/PrivacyPoolComplex.sol:64"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T00:58:53.898856+00:00",
        "returncode": 0
    },
    "summary": "Identified a low-severity accounting risk when fee-on-transfer/rebasing ERC20s are used; otherwise no major issues in scope.",
    "raw_final": {
        "summary": "Identified a low-severity accounting risk when fee-on-transfer/rebasing ERC20s are used; otherwise no major issues in scope.",
        "findings": [
            {
                "title": "Fee-on-transfer/rebasing ERC20s can break pool accounting",
                "category": "other",
                "evidence": "Deposit commitments are based on `_value`, and `_pull` transfers that nominal amount without verifying the actual tokens received.",
                "severity": "low",
                "locations": [
                    "contracts/src/contracts/PrivacyPool.sol:82",
                    "contracts/src/contracts/PrivacyPool.sol:97",
                    "contracts/src/contracts/PrivacyPool.sol:103",
                    "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:50",
                    "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:55",
                    "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:64"
                ],
                "recommendation": "Explicitly forbid fee-on-transfer/rebasing tokens at the registry layer, or measure actual received amounts (balance-before/after) in `_pull` and use that value for commitment generation and withdrawal accounting.",
                "exploit_scenario": "If a pool is registered for a deflationary or fee-on-transfer token, deposits record the requested `_value` while the pool receives less. An attacker can deposit such a token and later withdraw the full recorded amount, shifting the transfer fee deficit onto other depositors or causing withdrawals to fail once the pool balance is insufficient."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
1
Total opcodes
3935
Flags
delegatecall_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0157
0000000c: JUMPI
0000000d: PUSH0
0000000e: CALLDATALOAD
0000000f: PUSH1 0xe0
00000011: SHR
00000012: DUP1
00000013: PUSH4 0xa8f0f95a
00000018: GT
00000019: PUSH2 0x00bb
0000001c: JUMPI
0000001d: DUP1
0000001e: PUSH4 0xda662925
00000023: GT
00000024: PUSH2 0x0071
00000027: JUMPI
00000028: DUP1
00000029: PUSH4 0xe4b2fb79
0000002e: GT
0000002f: PUSH2 0x0057
00000032: JUMPI
00000033: DUP1
00000034: PUSH4 0xe4b2fb79
00000039: EQ
0000003a: PUSH2 0x03dd
0000003d: JUMPI
0000003e: DUP1
0000003f: PUSH4 0xe8eb3cc6
00000044: EQ
00000045: PUSH2 0x041e
00000048: JUMPI
00000049: DUP1
0000004a: PUSH4 0xfdab463d
0000004f: EQ
00000050: PUSH2 0x0451
00000053: JUMPI
00000054: PUSH0
00000055: PUSH0
00000056: REVERT
00000057: JUMPDEST
00000058: DUP1
00000059: PUSH4 0xda662925
0000005e: EQ
0000005f: PUSH2 0x0396
00000062: JUMPI
00000063: DUP1
00000064: PUSH4 0xe38df5f0
00000069: EQ
0000006a: PUSH2 0x03c9
0000006d: JUMPI
0000006e: PUSH0
0000006f: PUSH0
00000070: REVERT
00000071: JUMPDEST
00000072: DUP1
00000073: PUSH4 0xb85c5145
00000078: GT
00000079: PUSH2 0x00a1
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0xb85c5145
00000083: EQ
00000084: PUSH2 0x0343
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0xc2b40ae4
0000008e: EQ
0000008f: PUSH2 0x0357
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0xcd87a3b4
00000099: EQ
0000009a: PUSH2 0x0382
0000009d: JUMPI
0000009e: PUSH0
0000009f: PUSH0
000000a0: REVERT
000000a1: JUMPDEST
000000a2: DUP1
000000a3: PUSH4 0xa8f0f95a
000000a8: EQ
000000a9: PUSH2 0x031b
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0xaffed0e0
000000b3: EQ
000000b4: PUSH2 0x032f
000000b7: JUMPI
000000b8: PUSH0
000000b9: PUSH0
000000ba: REVERT
000000bb: JUMPDEST
000000bc: DUP1
000000bd: PUSH4 0x4800d97f
000000c2: GT
000000c3: PUSH2 0x0110
000000c6: JUMPI
000000c7: DUP1
000000c8: PUSH4 0x71235b34
000000cd: GT
000000ce: PUSH2 0x00f6
000000d1: JUMPI
000000d2: DUP1
000000d3: PUSH4 0x71235b34
000000d8: EQ
000000d9: PUSH2 0x0298
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x8735eb2b
000000e3: EQ
000000e4: PUSH2 0x02b7
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x90eeb02b
000000ee: EQ
000000ef: PUSH2 0x02ea
000000f2: JUMPI
000000f3: PUSH0
000000f4: PUSH0
000000f5: REVERT
000000f6: JUMPDEST
000000f7: DUP1
000000f8: PUSH4 0x4800d97f
000000fd: EQ
000000fe: PUSH2 0x022c
00000101: JUMPI
00000102: DUP1
00000103: PUSH4 0x4a2b75c8
00000108: EQ
00000109: PUSH2 0x0284
0000010c: JUMPI
0000010d: PUSH0
0000010e: PUSH0
0000010f: REVERT
00000110: JUMPDEST
00000111: DUP1
00000112: PUSH4 0x30c0766d
00000117: GT
00000118: PUSH2 0x0140
0000011b: JUMPI
0000011c: DUP1
0000011d: PUSH4 0x30c0766d
00000122: EQ
00000123: PUSH2 0x01bf
00000126: JUMPI
00000127: DUP1
00000128: PUSH4 0x33d09200
0000012d: EQ
0000012e: PUSH2 0x01e0
00000131: JUMPI
00000132: DUP1
00000133: PUSH4 0x36cf7c87
00000138: EQ
00000139: PUSH2 0x0213
0000013c: JUMPI
0000013d: PUSH0
0000013e: PUSH0
0000013f: REVERT
00000140: JUMPDEST
00000141: DUP1
00000142: PUSH4 0x0efe6a8b
00000147: EQ
00000148: PUSH2 0x015b
0000014b: JUMPI
0000014c: DUP1
0000014d: PUSH4 0x1f79a1e9
00000152: EQ
00000153: PUSH2 0x0181
00000156: JUMPI
00000157: JUMPDEST
00000158: PUSH0
00000159: PUSH0
0000015a: REVERT
0000015b: JUMPDEST
0000015c: PUSH2 0x016e
0000015f: PUSH2 0x0169
00000162: CALLDATASIZE
00000163: PUSH1 0x04
00000165: PUSH2 0x15af
00000168: JUMP
00000169: JUMPDEST
0000016a: PUSH2 0x0473
0000016d: JUMP
0000016e: JUMPDEST
0000016f: PUSH1 0x40
00000171: MLOAD
00000172: SWAP1
00000173: DUP2
00000174: MSTORE
00000175: PUSH1 0x20
00000177: ADD
00000178: JUMPDEST
00000179: PUSH1 0x40
0000017b: MLOAD
0000017c: DUP1
0000017d: SWAP2
0000017e: SUB
0000017f: SWAP1
00000180: RETURN
00000181: JUMPDEST
00000182: CALLVALUE
00000183: DUP1
00000184: ISZERO
00000185: PUSH2 0x018c
00000188: JUMPI
00000189: PUSH0
0000018a: PUSH0
0000018b: REVERT
0000018c: JUMPDEST
0000018d: POP
0000018e: PUSH2 0x01af
00000191: PUSH2 0x019b
00000194: CALLDATASIZE
00000195: PUSH1 0x04
00000197: PUSH2 0x15df
0000019a: JUMP
0000019b: JUMPDEST
0000019c: PUSH1 0x08
0000019e: PUSH1 0x20
000001a0: MSTORE
000001a1: PUSH0
000001a2: SWAP1
000001a3: DUP2
000001a4: MSTORE
000001a5: PUSH1 0x40
000001a7: SWAP1
000001a8: KECCAK256
000001a9: SLOAD
000001aa: PUSH1 0xff
000001ac: AND
000001ad: DUP2
000001ae: JUMP
000001af: JUMPDEST
000001b0: PUSH1 0x40
000001b2: MLOAD
000001b3: SWAP1
000001b4: ISZERO
000001b5: ISZERO
000001b6: DUP2
000001b7: MSTORE
000001b8: PUSH1 0x20
000001ba: ADD
000001bb: PUSH2 0x0178
000001be: JUMP
000001bf: JUMPDEST
000001c0: CALLVALUE
000001c1: DUP1
000001c2: ISZERO
000001c3: PUSH2 0x01ca
000001c6: JUMPI
000001c7: PUSH0
000001c8: PUSH0
000001c9: REVERT
000001ca: JUMPDEST
000001cb: POP
000001cc: PUSH2 0x01de
000001cf: PUSH2 0x01d9
000001d2: CALLDATASIZE
000001d3: PUSH1 0x04
000001d5: PUSH2 0x1818
000001d8: JUMP
000001d9: JUMPDEST
000001da: PUSH2 0x0765
000001dd: JUMP
000001de: JUMPDEST
000001df: STOP
000001e0: JUMPDEST
000001e1: CALLVALUE
000001e2: DUP1
000001e3: ISZERO
000001e4: PUSH2 0x01eb
000001e7: JUMPI
000001e8: PUSH0
000001e9: PUSH0
000001ea: REVERT
000001eb: JUMPDEST
000001ec: POP
000001ed: PUSH2 0x016e
000001f0: PUSH32 0x245f9030186ececa3173fa789283c6e5efe1dffc707d05dfa1bc54ec86664b78
00000211: DUP2
00000212: JUMP
00000213: JUMPDEST
00000214: CALLVALUE
00000215: DUP1
00000216: ISZERO
00000217: PUSH2 0x021e
0000021a: JUMPI
0000021b: PUSH0
0000021c: PUSH0
0000021d: REVERT
0000021e: JUMPDEST
0000021f: POP
00000220: PUSH1 0x01
00000222: SLOAD
00000223: PUSH2 0x01af
00000226: SWAP1
00000227: PUSH1 0xff
00000229: AND
0000022a: DUP2
0000022b: JUMP
0000022c: JUMPDEST
0000022d: CALLVALUE
0000022e: DUP1
0000022f: ISZERO
00000230: PUSH2 0x0237
00000233: JUMPI
00000234: PUSH0
00000235: PUSH0
00000236: REVERT
00000237: JUMPDEST
00000238: POP
00000239: PUSH2 0x025f
0000023c: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
0000025d: DUP2
0000025e: JUMP
0000025f: JUMPDEST
00000260: PUSH1 0x40
00000262: MLOAD
00000263: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000278: SWAP1
00000279: SWAP2
0000027a: AND
0000027b: DUP2
0000027c: MSTORE
0000027d: PUSH1 0x20
0000027f: ADD
00000280: PUSH2 0x0178
00000283: JUMP
00000284: JUMPDEST
00000285: CALLVALUE
00000286: DUP1
00000287: ISZERO
00000288: PUSH2 0x028f
0000028b: JUMPI
0000028c: PUSH0
0000028d: PUSH0
0000028e: REVERT
0000028f: JUMPDEST
00000290: POP
00000291: PUSH1 0x05
00000293: SLOAD
00000294: PUSH2 0x016e
00000297: JUMP
00000298: JUMPDEST
00000299: CALLVALUE
0000029a: DUP1
0000029b: ISZERO
0000029c: PUSH2 0x02a3
0000029f: JUMPI
000002a0: PUSH0
000002a1: PUSH0
000002a2: REVERT
000002a3: JUMPDEST
000002a4: POP
000002a5: PUSH2 0x01de
000002a8: PUSH2 0x02b2
000002ab: CALLDATASIZE
000002ac: PUSH1 0x04
000002ae: PUSH2 0x1925
000002b1: JUMP
000002b2: JUMPDEST
000002b3: PUSH2 0x0b82
000002b6: JUMP
000002b7: JUMPDEST
000002b8: CALLVALUE
000002b9: DUP1
000002ba: ISZERO
000002bb: PUSH2 0x02c2
000002be: JUMPI
000002bf: PUSH0
000002c0: PUSH0
000002c1: REVERT
000002c2: JUMPDEST
000002c3: POP
000002c4: PUSH2 0x025f
000002c7: PUSH32 0x000000000000000000000000022891f938ae7fdc8ab9ead0fbf50aba8c897d6d
000002e8: DUP2
000002e9: JUMP
000002ea: JUMPDEST
000002eb: CALLVALUE
000002ec: DUP1
000002ed: ISZERO
000002ee: PUSH2 0x02f5
000002f1: JUMPI
000002f2: PUSH0
000002f3: PUSH0
000002f4: REVERT
000002f5: JUMPDEST
000002f6: POP
000002f7: PUSH1 0x03
000002f9: SLOAD
000002fa: PUSH2 0x0306
000002fd: SWAP1
000002fe: PUSH4 0xffffffff
00000303: AND
00000304: DUP2
00000305: JUMP
00000306: JUMPDEST
00000307: PUSH1 0x40
00000309: MLOAD
0000030a: PUSH4 0xffffffff
0000030f: SWAP1
00000310: SWAP2
00000311: AND
00000312: DUP2
00000313: MSTORE
00000314: PUSH1 0x20
00000316: ADD
00000317: PUSH2 0x0178
0000031a: JUMP
0000031b: JUMPDEST
0000031c: CALLVALUE
0000031d: DUP1
0000031e: ISZERO
0000031f: PUSH2 0x0326
00000322: JUMPI
00000323: PUSH0
00000324: PUSH0
00000325: REVERT
00000326: JUMPDEST
00000327: POP
00000328: PUSH1 0x04
0000032a: SLOAD
0000032b: PUSH2 0x016e
0000032e: JUMP
0000032f: JUMPDEST
00000330: CALLVALUE
00000331: DUP1
00000332: ISZERO
00000333: PUSH2 0x033a
00000336: JUMPI
00000337: PUSH0
00000338: PUSH0
00000339: REVERT
0000033a: JUMPDEST
0000033b: POP
0000033c: PUSH2 0x016e
0000033f: PUSH0
00000340: SLOAD
00000341: DUP2
00000342: JUMP
00000343: JUMPDEST
00000344: CALLVALUE
00000345: DUP1
00000346: ISZERO
00000347: PUSH2 0x034e
0000034a: JUMPI
0000034b: PUSH0
0000034c: PUSH0
0000034d: REVERT
0000034e: JUMPDEST
0000034f: POP
00000350: PUSH2 0x01de
00000353: PUSH2 0x0d8e
00000356: JUMP
00000357: JUMPDEST
00000358: CALLVALUE
00000359: DUP1
0000035a: ISZERO
0000035b: PUSH2 0x0362
0000035e: JUMPI
0000035f: PUSH0
00000360: PUSH0
00000361: REVERT
00000362: JUMPDEST
00000363: POP
00000364: PUSH2 0x016e
00000367: PUSH2 0x0371
0000036a: CALLDATASIZE
0000036b: PUSH1 0x04
0000036d: PUSH2 0x15df
00000370: JUMP
00000371: JUMPDEST
00000372: PUSH1 0x02
00000374: PUSH1 0x20
00000376: MSTORE
00000377: PUSH0
00000378: SWAP1
00000379: DUP2
0000037a: MSTORE
0000037b: PUSH1 0x40
0000037d: SWAP1
0000037e: KECCAK256
0000037f: SLOAD
00000380: DUP2
00000381: JUMP
00000382: JUMPDEST
00000383: CALLVALUE
00000384: DUP1
00000385: ISZERO
00000386: PUSH2 0x038d
00000389: JUMPI
0000038a: PUSH0
0000038b: PUSH0
0000038c: REVERT
0000038d: JUMPDEST
0000038e: POP
0000038f: PUSH2 0x0306
00000392: PUSH1 0x40
00000394: DUP2
00000395: JUMP
00000396: JUMPDEST
00000397: CALLVALUE
00000398: DUP1
00000399: ISZERO
0000039a: PUSH2 0x03a1
0000039d: JUMPI
0000039e: PUSH0
0000039f: PUSH0
000003a0: REVERT
000003a1: JUMPDEST
000003a2: POP
000003a3: PUSH2 0x025f
000003a6: PUSH32 0x000000000000000000000000a45aca8604a73d80c551faad6355a5c3a5565ec6
000003c7: DUP2
000003c8: JUMP
000003c9: JUMPDEST
000003ca: CALLVALUE
000003cb: DUP1
000003cc: ISZERO
000003cd: PUSH2 0x03d4
000003d0: JUMPI
000003d1: PUSH0
000003d2: PUSH0
000003d3: REVERT
000003d4: JUMPDEST
000003d5: POP
000003d6: PUSH2 0x0306
000003d9: PUSH1 0x20
000003db: DUP2
000003dc: JUMP
000003dd: JUMPDEST
000003de: CALLVALUE
000003df: DUP1
000003e0: ISZERO
000003e1: PUSH2 0x03e8
000003e4: JUMPI
000003e5: PUSH0
000003e6: PUSH0
000003e7: REVERT
000003e8: JUMPDEST
000003e9: POP
000003ea: PUSH2 0x025f
000003ed: PUSH2 0x03f7
000003f0: CALLDATASIZE
000003f1: PUSH1 0x04
000003f3: PUSH2 0x15df
000003f6: JUMP
000003f7: JUMPDEST
000003f8: PUSH1 0x09
000003fa: PUSH1 0x20
000003fc: MSTORE
000003fd: PUSH0
000003fe: SWAP1
000003ff: DUP2
00000400: MSTORE
00000401: PUSH1 0x40
00000403: SWAP1
00000404: KECCAK256
00000405: SLOAD
00000406: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000041b: AND
0000041c: DUP2
0000041d: JUMP
0000041e: JUMPDEST
0000041f: CALLVALUE
00000420: DUP1
00000421: ISZERO
00000422: PUSH2 0x0429
00000425: JUMPI
00000426: PUSH0
00000427: PUSH0
00000428: REVERT
00000429: JUMPDEST
0000042a: POP
0000042b: PUSH2 0x025f
0000042e: PUSH32 0x0000000000000000000000006818809eefce719e480a7526d76bd3e561526b46
0000044f: DUP2
00000450: JUMP
00000451: JUMPDEST
00000452: CALLVALUE
00000453: DUP1
00000454: ISZERO
00000455: PUSH2 0x045c
00000458: JUMPI
00000459: PUSH0
0000045a: PUSH0
0000045b: REVERT
0000045c: JUMPDEST
0000045d: POP
0000045e: PUSH1 0x05
00000460: SLOAD
00000461: PUSH0
00000462: SWAP1
00000463: DUP2
00000464: MSTORE
00000465: PUSH1 0x06
00000467: PUSH1 0x20
00000469: MSTORE
0000046a: PUSH1 0x40
0000046c: SWAP1
0000046d: KECCAK256
0000046e: SLOAD
0000046f: PUSH2 0x016e
00000472: JUMP
00000473: JUMPDEST
00000474: PUSH0
00000475: CALLER
00000476: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000048b: PUSH32 0x0000000000000000000000006818809eefce719e480a7526d76bd3e561526b46
000004ac: AND
000004ad: EQ
000004ae: PUSH2 0x04e3
000004b1: JUMPI
000004b2: PUSH1 0x40
000004b4: MLOAD
000004b5: PUSH32 0x8247bd8000000000000000000000000000000000000000000000000000000000
000004d6: DUP2
000004d7: MSTORE
000004d8: PUSH1 0x04
000004da: ADD
000004db: PUSH1 0x40
000004dd: MLOAD
000004de: DUP1
000004df: SWAP2
000004e0: SUB
000004e1: SWAP1
000004e2: REVERT
000004e3: JUMPDEST
000004e4: PUSH1 0x01
000004e6: SLOAD
000004e7: PUSH1 0xff
000004e9: AND
000004ea: ISZERO
000004eb: PUSH2 0x0520
000004ee: JUMPI
000004ef: PUSH1 0x40
000004f1: MLOAD
000004f2: PUSH32 0x924b372700000000000000000000000000000000000000000000000000000000
00000513: DUP2
00000514: MSTORE
00000515: PUSH1 0x04
00000517: ADD
00000518: PUSH1 0x40
0000051a: MLOAD
0000051b: DUP1
0000051c: SWAP2
0000051d: SUB
0000051e: SWAP1
0000051f: REVERT
00000520: JUMPDEST
00000521: PUSH16 0xffffffffffffffffffffffffffffffff
00000532: DUP4
00000533: LT
00000534: PUSH2 0x0569
00000537: JUMPI
00000538: PUSH1 0x40
0000053a: MLOAD
0000053b: PUSH32 0x428243e200000000000000000000000000000000000000000000000000000000
0000055c: DUP2
0000055d: MSTORE
0000055e: PUSH1 0x04
00000560: ADD
00000561: PUSH1 0x40
00000563: MLOAD
00000564: DUP1
00000565: SWAP2
00000566: SUB
00000567: SWAP1
00000568: REVERT
00000569: JUMPDEST
0000056a: PUSH0
0000056b: PUSH32 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
0000058c: PUSH32 0x245f9030186ececa3173fa789283c6e5efe1dffc707d05dfa1bc54ec86664b78
000005ad: PUSH0
000005ae: PUSH0
000005af: DUP2
000005b0: SLOAD
000005b1: PUSH2 0x05b9
000005b4: SWAP1
000005b5: PUSH2 0x1a00
000005b8: JUMP
000005b9: JUMPDEST
000005ba: SWAP2
000005bb: DUP3
000005bc: SWAP1
000005bd: SSTORE
000005be: POP
000005bf: PUSH1 0x40
000005c1: DUP1
000005c2: MLOAD
000005c3: PUSH1 0x20
000005c5: DUP2
000005c6: ADD
000005c7: SWAP4
000005c8: SWAP1
000005c9: SWAP4
000005ca: MSTORE
000005cb: DUP3
000005cc: ADD
000005cd: MSTORE
000005ce: PUSH1 0x60
000005d0: ADD
000005d1: PUSH1 0x40
000005d3: MLOAD
000005d4: PUSH1 0x20
000005d6: DUP2
000005d7: DUP4
000005d8: SUB
000005d9: SUB
000005da: DUP2
000005db: MSTORE
000005dc: SWAP1
000005dd: PUSH1 0x40
000005df: MSTORE
000005e0: DUP1
000005e1: MLOAD
000005e2: SWAP1
000005e3: PUSH1 0x20
000005e5: ADD
000005e6: KECCAK256
000005e7: PUSH0
000005e8: SHR
000005e9: PUSH2 0x05f2
000005ec: SWAP2
000005ed: SWAP1
000005ee: PUSH2 0x1a64
000005f1: JUMP
000005f2: JUMPDEST
000005f3: PUSH0
000005f4: DUP2
000005f5: DUP2
000005f6: MSTORE
000005f7: PUSH1 0x09
000005f9: PUSH1 0x20
000005fb: SWAP1
000005fc: DUP2
000005fd: MSTORE
000005fe: PUSH1 0x40
00000600: SWAP2
00000601: DUP3
00000602: SWAP1
00000603: KECCAK256
00000604: DUP1
00000605: SLOAD
00000606: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000627: AND
00000628: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000063d: DUP11
0000063e: AND
0000063f: OR
00000640: SWAP1
00000641: SSTORE
00000642: DUP2
00000643: MLOAD
00000644: PUSH1 0x60
00000646: DUP2
00000647: ADD
00000648: DUP4
00000649: MSTORE
0000064a: DUP8
0000064b: DUP2
0000064c: MSTORE
0000064d: SWAP1
0000064e: DUP2
0000064f: ADD
00000650: DUP4
00000651: SWAP1
00000652: MSTORE
00000653: DUP1
00000654: DUP3
00000655: ADD
00000656: DUP7
00000657: SWAP1
00000658: MSTORE
00000659: SWAP1
0000065a: MLOAD
0000065b: PUSH32 0x20cf0a3700000000000000000000000000000000000000000000000000000000
0000067c: DUP2
0000067d: MSTORE
0000067e: SWAP2
0000067f: SWAP3
00000680: POP
00000681: PUSH20 0xe393dd7287db9982e6f845824854baf8b8e823af
00000696: SWAP2
00000697: PUSH4 0x20cf0a37
0000069c: SWAP2
0000069d: PUSH2 0x06a8
000006a0: SWAP2
000006a1: PUSH1 0x04
000006a3: ADD
000006a4: PUSH2 0x1a77
000006a7: JUMP
000006a8: JUMPDEST
000006a9: PUSH1 0x20
000006ab: PUSH1 0x40
000006ad: MLOAD
000006ae: DUP1
000006af: DUP4
000006b0: SUB
000006b1: DUP2
000006b2: DUP7
000006b3: GAS
000006b4: DELEGATECALL
000006b5: ISZERO
000006b6: DUP1
000006b7: ISZERO
000006b8: PUSH2 0x06c3
000006bb: JUMPI
000006bc: RETURNDATASIZE
000006bd: PUSH0
000006be: PUSH0
000006bf: RETURNDATACOPY
000006c0: RETURNDATASIZE
000006c1: PUSH0
000006c2: REVERT
000006c3: JUMPDEST
000006c4: POP
000006c5: POP
000006c6: POP
000006c7: POP
000006c8: PUSH1 0x40
000006ca: MLOAD
000006cb: RETURNDATASIZE
000006cc: PUSH1 0x1f
000006ce: NOT
000006cf: PUSH1 0x1f
000006d1: DUP3
000006d2: ADD
000006d3: AND
000006d4: DUP3
000006d5: ADD
000006d6: DUP1
000006d7: PUSH1 0x40
000006d9: MSTORE
000006da: POP
000006db: DUP2
000006dc: ADD
000006dd: SWAP1
000006de: PUSH2 0x06e7
000006e1: SWAP2
000006e2: SWAP1
000006e3: PUSH2 0x1aa7
000006e6: JUMP
000006e7: JUMPDEST
000006e8: SWAP2
000006e9: POP
000006ea: PUSH2 0x06f2
000006ed: DUP3
000006ee: PUSH2 0x0e8e
000006f1: JUMP
000006f2: JUMPDEST
000006f3: POP
000006f4: PUSH2 0x06fd
000006f7: CALLER
000006f8: DUP6
000006f9: PUSH2 0x0f8d
000006fc: JUMP
000006fd: JUMPDEST
000006fe: PUSH1 0x40
00000700: DUP1
00000701: MLOAD
00000702: DUP4
00000703: DUP2
00000704: MSTORE
00000705: PUSH1 0x20
00000707: DUP2
00000708: ADD
00000709: DUP4
0000070a: SWAP1
0000070b: MSTORE
0000070c: SWAP1
0000070d: DUP2
0000070e: ADD
0000070f: DUP6
00000710: SWAP1
00000711: MSTORE
00000712: PUSH1 0x60
00000714: DUP2
00000715: ADD
00000716: DUP5
00000717: SWAP1
00000718: MSTORE
00000719: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000072e: DUP7
0000072f: AND
00000730: SWAP1
00000731: PUSH32 0xe3b53cd1a44fbf11535e145d80b8ef1ed6d57a73bf5daa7e939b6b01657d6549
00000752: SWAP1
00000753: PUSH1 0x80
00000755: ADD
00000756: PUSH1 0x40
00000758: MLOAD
00000759: DUP1
0000075a: SWAP2
0000075b: SUB
0000075c: SWAP1
0000075d: LOG2
0000075e: POP
0000075f: SWAP4
00000760: SWAP3
00000761: POP
00000762: POP
00000763: POP
00000764: JUMP
00000765: JUMPDEST
00000766: DUP2
00000767: DUP2
00000768: DUP2
00000769: PUSH0
0000076a: ADD
0000076b: MLOAD
0000076c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000781: AND
00000782: CALLER
00000783: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000798: AND
00000799: EQ
0000079a: PUSH2 0x07cf
0000079d: JUMPI
0000079e: PUSH1 0x40
000007a0: MLOAD
000007a1: PUSH32 0x1a7c48e500000000000000000000000000000000000000000000000000000000
000007c2: DUP2
000007c3: MSTORE
000007c4: PUSH1 0x04
000007c6: ADD
000007c7: PUSH1 0x40
000007c9: MLOAD
000007ca: DUP1
000007cb: SWAP2
000007cc: SUB
000007cd: SWAP1
000007ce: REVERT
000007cf: JUMPDEST
000007d0: PUSH32 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
000007f1: DUP3
000007f2: PUSH32 0x245f9030186ececa3173fa789283c6e5efe1dffc707d05dfa1bc54ec86664b78
00000813: PUSH1 0x40
00000815: MLOAD
00000816: PUSH1 0x20
00000818: ADD
00000819: PUSH2 0x0823
0000081c: SWAP3
0000081d: SWAP2
0000081e: SWAP1
0000081f: PUSH2 0x1abe
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x40
00000826: MLOAD
00000827: PUSH1 0x20
00000829: DUP2
0000082a: DUP4
0000082b: SUB
0000082c: SUB
0000082d: DUP2
0000082e: MSTORE
0000082f: SWAP1
00000830: PUSH1 0x40
00000832: MSTORE
00000833: DUP1
00000834: MLOAD
00000835: SWAP1
00000836: PUSH1 0x20
00000838: ADD
00000839: KECCAK256
0000083a: PUSH0
0000083b: SHR
0000083c: PUSH2 0x0845
0000083f: SWAP2
00000840: SWAP1
00000841: PUSH2 0x1a64
00000844: JUMP
00000845: JUMPDEST
00000846: PUSH2 0x084e
00000849: DUP3
0000084a: PUSH2 0x100b
0000084d: JUMP
0000084e: JUMPDEST
0000084f: EQ
00000850: PUSH2 0x0885
00000853: JUMPI
00000854: PUSH1 0x40
00000856: MLOAD
00000857: PUSH32 0xef6daeb000000000000000000000000000000000000000000000000000000000
00000878: DUP2
00000879: MSTORE
0000087a: PUSH1 0x04
0000087c: ADD
0000087d: PUSH1 0x40
0000087f: MLOAD
00000880: DUP1
00000881: SWAP2
00000882: SUB
00000883: SWAP1
00000884: REVERT
00000885: JUMPDEST
00000886: PUSH1 0x20
00000888: PUSH2 0x0890
0000088b: DUP3
0000088c: PUSH2 0x1020
0000088f: JUMP
00000890: JUMPDEST
00000891: GT
00000892: DUP1
00000893: PUSH2 0x08a4
00000896: JUMPI
00000897: POP
00000898: PUSH1 0x20
0000089a: PUSH2 0x08a2
0000089d: DUP3
0000089e: PUSH2 0x102e
000008a1: JUMP
000008a2: JUMPDEST
000008a3: GT
000008a4: JUMPDEST
000008a5: ISZERO
000008a6: PUSH2 0x08db
000008a9: JUMPI
000008aa: PUSH1 0x40
000008ac: MLOAD
000008ad: PUSH32 0xc21cc8e200000000000000000000000000000000000000000000000000000000
000008ce: DUP2
000008cf: MSTORE
000008d0: PUSH1 0x04
000008d2: ADD
000008d3: PUSH1 0x40
000008d5: MLOAD
000008d6: DUP1
000008d7: SWAP2
000008d8: SUB
000008d9: SWAP1
000008da: REVERT
000008db: JUMPDEST
000008dc: PUSH2 0x08ec
000008df: PUSH2 0x08e7
000008e2: DUP3
000008e3: PUSH2 0x103c
000008e6: JUMP
000008e7: JUMPDEST
000008e8: PUSH2 0x104a
000008eb: JUMP
000008ec: JUMPDEST
000008ed: PUSH2 0x0922
000008f0: JUMPI
000008f1: PUSH1 0x40
000008f3: MLOAD
000008f4: PUSH32 0xfd3d3c4c00000000000000000000000000000000000000000000000000000000
00000915: DUP2
00000916: MSTORE
00000917: PUSH1 0x04
00000919: ADD
0000091a: PUSH1 0x40
0000091c: MLOAD
0000091d: DUP1
0000091e: SWAP2
0000091f: SUB
00000920: SWAP1
00000921: REVERT
00000922: JUMPDEST
00000923: PUSH32 0x0000000000000000000000006818809eefce719e480a7526d76bd3e561526b46
00000944: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000959: AND
0000095a: PUSH4 0xd7b0fef1
0000095f: PUSH1 0x40
00000961: MLOAD
00000962: DUP2
00000963: PUSH4 0xffffffff
00000968: AND
00000969: PUSH1 0xe0
0000096b: SHL
0000096c: DUP2
0000096d: MSTORE
0000096e: PUSH1 0x04
00000970: ADD
00000971: PUSH1 0x20
00000973: PUSH1 0x40
00000975: MLOAD
00000976: DUP1
00000977: DUP4
00000978: SUB
00000979: DUP2
0000097a: DUP7
0000097b: GAS
0000097c: STATICCALL
0000097d: ISZERO
0000097e: DUP1
0000097f: ISZERO
00000980: PUSH2 0x098b
00000983: JUMPI
00000984: RETURNDATASIZE
00000985: PUSH0
00000986: PUSH0
00000987: RETURNDATACOPY
00000988: RETURNDATASIZE
00000989: PUSH0
0000098a: REVERT
0000098b: JUMPDEST
0000098c: POP
0000098d: POP
0000098e: POP
0000098f: POP
00000990: PUSH1 0x40
00000992: MLOAD
00000993: RETURNDATASIZE
00000994: PUSH1 0x1f
00000996: NOT
00000997: PUSH1 0x1f
00000999: DUP3
0000099a: ADD
0000099b: AND
0000099c: DUP3
0000099d: ADD
0000099e: DUP1
0000099f: PUSH1 0x40
000009a1: MSTORE
000009a2: POP
000009a3: DUP2
000009a4: ADD
000009a5: SWAP1
000009a6: PUSH2 0x09af
000009a9: SWAP2
000009aa: SWAP1
000009ab: PUSH2 0x1aa7
000009ae: JUMP
000009af: JUMPDEST
000009b0: PUSH2 0x09b8
000009b3: DUP3
000009b4: PUSH2 0x10cd
000009b7: JUMP
000009b8: JUMPDEST
000009b9: EQ
000009ba: PUSH2 0x09ef
000009bd: JUMPI
000009be: PUSH1 0x40
000009c0: MLOAD
000009c1: PUSH32 0xa6a7824400000000000000000000000000000000000000000000000000000000
000009e2: DUP2
000009e3: MSTORE
000009e4: PUSH1 0x04
000009e6: ADD
000009e7: PUSH1 0x40
000009e9: MLOAD
000009ea: DUP1
000009eb: SWAP2
000009ec: SUB
000009ed: SWAP1
000009ee: REVERT
000009ef: JUMPDEST
000009f0: PUSH32 0x000000000000000000000000022891f938ae7fdc8ab9ead0fbf50aba8c897d6d
00000a11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a26: AND
00000a27: PUSH4 0xc9219a7a
00000a2c: DUP5
00000a2d: PUSH0
00000a2e: ADD
00000a2f: MLOAD
00000a30: DUP6
00000a31: PUSH1 0x20
00000a33: ADD
00000a34: MLOAD
00000a35: DUP7
00000a36: PUSH1 0x40
00000a38: ADD
00000a39: MLOAD
00000a3a: DUP8
00000a3b: PUSH1 0x60
00000a3d: ADD
00000a3e: MLOAD
00000a3f: PUSH1 0x40
00000a41: MLOAD
00000a42: DUP6
00000a43: PUSH4 0xffffffff
00000a48: AND
00000a49: PUSH1 0xe0
00000a4b: SHL
00000a4c: DUP2
00000a4d: MSTORE
00000a4e: PUSH1 0x04
00000a50: ADD
00000a51: PUSH2 0x0a5d
00000a54: SWAP5
00000a55: SWAP4
00000a56: SWAP3
00000a57: SWAP2
00000a58: SWAP1
00000a59: PUSH2 0x1b91
00000a5c: JUMP
00000a5d: JUMPDEST
00000a5e: PUSH1 0x20
00000a60: PUSH1 0x40
00000a62: MLOAD
00000a63: DUP1
00000a64: DUP4
00000a65: SUB
00000a66: DUP2
00000a67: PUSH0
00000a68: DUP8
00000a69: GAS
00000a6a: CALL
00000a6b: ISZERO
00000a6c: DUP1
00000a6d: ISZERO
00000a6e: PUSH2 0x0a79
00000a71: JUMPI
00000a72: RETURNDATASIZE
00000a73: PUSH0
00000a74: PUSH0
00000a75: RETURNDATACOPY
00000a76: RETURNDATASIZE
00000a77: PUSH0
00000a78: REVERT
00000a79: JUMPDEST
00000a7a: POP
00000a7b: POP
00000a7c: POP
00000a7d: POP
00000a7e: PUSH1 0x40
00000a80: MLOAD
00000a81: RETURNDATASIZE
00000a82: PUSH1 0x1f
00000a84: NOT
00000a85: PUSH1 0x1f
00000a87: DUP3
00000a88: ADD
00000a89: AND
00000a8a: DUP3
00000a8b: ADD
00000a8c: DUP1
00000a8d: PUSH1 0x40
00000a8f: MSTORE
00000a90: POP
00000a91: DUP2
00000a92: ADD
00000a93: SWAP1
00000a94: PUSH2 0x0a9d
00000a97: SWAP2
00000a98: SWAP1
00000a99: PUSH2 0x1bed
00000a9c: JUMP
00000a9d: JUMPDEST
00000a9e: PUSH2 0x0ad3
00000aa1: JUMPI
00000aa2: PUSH1 0x40
00000aa4: MLOAD
00000aa5: PUSH32 0x09bde33900000000000000000000000000000000000000000000000000000000
00000ac6: DUP2
00000ac7: MSTORE
00000ac8: PUSH1 0x04
00000aca: ADD
00000acb: PUSH1 0x40
00000acd: MLOAD
00000ace: DUP1
00000acf: SWAP2
00000ad0: SUB
00000ad1: SWAP1
00000ad2: REVERT
00000ad3: JUMPDEST
00000ad4: PUSH2 0x0ae4
00000ad7: PUSH2 0x0adf
00000ada: DUP5
00000adb: PUSH2 0x10db
00000ade: JUMP
00000adf: JUMPDEST
00000ae0: PUSH2 0x10e9
00000ae3: JUMP
00000ae4: JUMPDEST
00000ae5: PUSH2 0x0af5
00000ae8: PUSH2 0x0af0
00000aeb: DUP5
00000aec: PUSH2 0x1169
00000aef: JUMP
00000af0: JUMPDEST
00000af1: PUSH2 0x0e8e
00000af4: JUMP
00000af5: JUMPDEST
00000af6: POP
00000af7: DUP4
00000af8: MLOAD
00000af9: PUSH2 0x0b0a
00000afc: SWAP1
00000afd: PUSH2 0x0b05
00000b00: DUP6
00000b01: PUSH2 0x1176
00000b04: JUMP
00000b05: JUMPDEST
00000b06: PUSH2 0x1184
00000b09: JUMP
00000b0a: JUMPDEST
00000b0b: DUP4
00000b0c: MLOAD
00000b0d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b22: AND
00000b23: PUSH32 0x75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a21
00000b44: PUSH2 0x0b4c
00000b47: DUP6
00000b48: PUSH2 0x1176
00000b4b: JUMP
00000b4c: JUMPDEST
00000b4d: PUSH2 0x0b55
00000b50: DUP7
00000b51: PUSH2 0x10db
00000b54: JUMP
00000b55: JUMPDEST
00000b56: PUSH2 0x0b5e
00000b59: DUP8
00000b5a: PUSH2 0x1169
00000b5d: JUMP
00000b5e: JUMPDEST
00000b5f: PUSH1 0x40
00000b61: DUP1
00000b62: MLOAD
00000b63: SWAP4
00000b64: DUP5
00000b65: MSTORE
00000b66: PUSH1 0x20
00000b68: DUP5
00000b69: ADD
00000b6a: SWAP3
00000b6b: SWAP1
00000b6c: SWAP3
00000b6d: MSTORE
00000b6e: SWAP1
00000b6f: DUP3
00000b70: ADD
00000b71: MSTORE
00000b72: PUSH1 0x60
00000b74: ADD
00000b75: PUSH1 0x40
00000b77: MLOAD
00000b78: DUP1
00000b79: SWAP2
00000b7a: SUB
00000b7b: SWAP1
00000b7c: LOG2
00000b7d: POP
00000b7e: POP
00000b7f: POP
00000b80: POP
00000b81: JUMP
00000b82: JUMPDEST
00000b83: PUSH0
00000b84: PUSH2 0x0b8c
00000b87: DUP3
00000b88: PUSH2 0x103c
00000b8b: JUMP
00000b8c: JUMPDEST
00000b8d: PUSH0
00000b8e: DUP2
00000b8f: DUP2
00000b90: MSTORE
00000b91: PUSH1 0x09
00000b93: PUSH1 0x20
00000b95: MSTORE
00000b96: PUSH1 0x40
00000b98: SWAP1
00000b99: KECCAK256
00000b9a: SLOAD
00000b9b: SWAP1
00000b9c: SWAP2
00000b9d: POP
00000b9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bb3: AND
00000bb4: CALLER
00000bb5: EQ
00000bb6: PUSH2 0x0beb
00000bb9: JUMPI
00000bba: PUSH1 0x40
00000bbc: MLOAD
00000bbd: PUSH32 0x0fb8e27800000000000000000000000000000000000000000000000000000000
00000bde: DUP2
00000bdf: MSTORE
00000be0: PUSH1 0x04
00000be2: ADD
00000be3: PUSH1 0x40
00000be5: MLOAD
00000be6: DUP1
00000be7: SWAP2
00000be8: SUB
00000be9: SWAP1
00000bea: REVERT
00000beb: JUMPDEST
00000bec: PUSH32 0x000000000000000000000000a45aca8604a73d80c551faad6355a5c3a5565ec6
00000c0d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c22: AND
00000c23: PUSH4 0x5fe8c13b
00000c28: DUP4
00000c29: PUSH0
00000c2a: ADD
00000c2b: MLOAD
00000c2c: DUP5
00000c2d: PUSH1 0x20
00000c2f: ADD
00000c30: MLOAD
00000c31: DUP6
00000c32: PUSH1 0x40
00000c34: ADD
00000c35: MLOAD
00000c36: DUP7
00000c37: PUSH1 0x60
00000c39: ADD
00000c3a: MLOAD
00000c3b: PUSH1 0x40
00000c3d: MLOAD
00000c3e: DUP6
00000c3f: PUSH4 0xffffffff
00000c44: AND
00000c45: PUSH1 0xe0
00000c47: SHL
00000c48: DUP2
00000c49: MSTORE
00000c4a: PUSH1 0x04
00000c4c: ADD
00000c4d: PUSH2 0x0c59
00000c50: SWAP5
00000c51: SWAP4
00000c52: SWAP3
00000c53: SWAP2
00000c54: SWAP1
00000c55: PUSH2 0x1c13
00000c58: JUMP
00000c59: JUMPDEST
00000c5a: PUSH1 0x20
00000c5c: PUSH1 0x40
00000c5e: MLOAD
00000c5f: DUP1
00000c60: DUP4
00000c61: SUB
00000c62: DUP2
00000c63: PUSH0
00000c64: DUP8
00000c65: GAS
00000c66: CALL
00000c67: ISZERO
00000c68: DUP1
00000c69: ISZERO
00000c6a: PUSH2 0x0c75
00000c6d: JUMPI
00000c6e: RETURNDATASIZE
00000c6f: PUSH0
00000c70: PUSH0
00000c71: RETURNDATACOPY
00000c72: RETURNDATASIZE
00000c73: PUSH0
00000c74: REVERT
00000c75: JUMPDEST
00000c76: POP
00000c77: POP
00000c78: POP
00000c79: POP
00000c7a: PUSH1 0x40
00000c7c: MLOAD
00000c7d: RETURNDATASIZE
00000c7e: PUSH1 0x1f
00000c80: NOT
00000c81: PUSH1 0x1f
00000c83: DUP3
00000c84: ADD
00000c85: AND
00000c86: DUP3
00000c87: ADD
00000c88: DUP1
00000c89: PUSH1 0x40
00000c8b: MSTORE
00000c8c: POP
00000c8d: DUP2
00000c8e: ADD
00000c8f: SWAP1
00000c90: PUSH2 0x0c99
00000c93: SWAP2
00000c94: SWAP1
00000c95: PUSH2 0x1bed
00000c98: JUMP
00000c99: JUMPDEST
00000c9a: PUSH2 0x0ccf
00000c9d: JUMPI
00000c9e: PUSH1 0x40
00000ca0: MLOAD
00000ca1: PUSH32 0x09bde33900000000000000000000000000000000000000000000000000000000
00000cc2: DUP2
00000cc3: MSTORE
00000cc4: PUSH1 0x04
00000cc6: ADD
00000cc7: PUSH1 0x40
00000cc9: MLOAD
00000cca: DUP1
00000ccb: SWAP2
00000ccc: SUB
00000ccd: SWAP1
00000cce: REVERT
00000ccf: JUMPDEST
00000cd0: PUSH2 0x0ce0
00000cd3: PUSH2 0x0cdb
00000cd6: DUP4
00000cd7: PUSH2 0x1169
00000cda: JUMP
00000cdb: JUMPDEST
00000cdc: PUSH2 0x11c5
00000cdf: JUMP
00000ce0: JUMPDEST
00000ce1: PUSH2 0x0d16
00000ce4: JUMPI
00000ce5: PUSH1 0x40
00000ce7: MLOAD
00000ce8: PUSH32 0xc06789fa00000000000000000000000000000000000000000000000000000000
00000d09: DUP2
00000d0a: MSTORE
00000d0b: PUSH1 0x04
00000d0d: ADD
00000d0e: PUSH1 0x40
00000d10: MLOAD
00000d11: DUP1
00000d12: SWAP2
00000d13: SUB
00000d14: SWAP1
00000d15: REVERT
00000d16: JUMPDEST
00000d17: PUSH2 0x0d22
00000d1a: PUSH2 0x0adf
00000d1d: DUP4
00000d1e: PUSH2 0x10db
00000d21: JUMP
00000d22: JUMPDEST
00000d23: PUSH2 0x0d2f
00000d26: CALLER
00000d27: PUSH2 0x0b05
00000d2a: DUP5
00000d2b: PUSH2 0x1176
00000d2e: JUMP
00000d2f: JUMPDEST
00000d30: CALLER
00000d31: PUSH32 0xd2b3e868ae101106371f2bd93abc8d5a4de488b9fe47ed122c23625aa7172f13
00000d52: PUSH2 0x0d5a
00000d55: DUP5
00000d56: PUSH2 0x1169
00000d59: JUMP
00000d5a: JUMPDEST
00000d5b: PUSH2 0x0d63
00000d5e: DUP6
00000d5f: PUSH2 0x103c
00000d62: JUMP
00000d63: JUMPDEST
00000d64: PUSH2 0x0d6c
00000d67: DUP7
00000d68: PUSH2 0x1176
00000d6b: JUMP
00000d6c: JUMPDEST
00000d6d: PUSH1 0x40
00000d6f: DUP1
00000d70: MLOAD
00000d71: SWAP4
00000d72: DUP5
00000d73: MSTORE
00000d74: PUSH1 0x20
00000d76: DUP5
00000d77: ADD
00000d78: SWAP3
00000d79: SWAP1
00000d7a: SWAP3
00000d7b: MSTORE
00000d7c: SWAP1
00000d7d: DUP3
00000d7e: ADD
00000d7f: MSTORE
00000d80: PUSH1 0x60
00000d82: ADD
00000d83: PUSH1 0x40
00000d85: MLOAD
00000d86: DUP1
00000d87: SWAP2
00000d88: SUB
00000d89: SWAP1
00000d8a: LOG2
00000d8b: POP
00000d8c: POP
00000d8d: JUMP
00000d8e: JUMPDEST
00000d8f: CALLER
00000d90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000da5: PUSH32 0x0000000000000000000000006818809eefce719e480a7526d76bd3e561526b46
00000dc6: AND
00000dc7: EQ
00000dc8: PUSH2 0x0dfd
00000dcb: JUMPI
00000dcc: PUSH1 0x40
00000dce: MLOAD
00000dcf: PUSH32 0x8247bd8000000000000000000000000000000000000000000000000000000000
00000df0: DUP2
00000df1: MSTORE
00000df2: PUSH1 0x04
00000df4: ADD
00000df5: PUSH1 0x40
00000df7: MLOAD
00000df8: DUP1
00000df9: SWAP2
00000dfa: SUB
00000dfb: SWAP1
00000dfc: REVERT
00000dfd: JUMPDEST
00000dfe: PUSH1 0x01
00000e00: SLOAD
00000e01: PUSH1 0xff
00000e03: AND
00000e04: ISZERO
00000e05: PUSH2 0x0e3a
00000e08: JUMPI
00000e09: PUSH1 0x40
00000e0b: MLOAD
00000e0c: PUSH32 0x924b372700000000000000000000000000000000000000000000000000000000
00000e2d: DUP2
00000e2e: MSTORE
00000e2f: PUSH1 0x04
00000e31: ADD
00000e32: PUSH1 0x40
00000e34: MLOAD
00000e35: DUP1
00000e36: SWAP2
00000e37: SUB
00000e38: SWAP1
00000e39: REVERT
00000e3a: JUMPDEST
00000e3b: PUSH1 0x01
00000e3d: DUP1
00000e3e: SLOAD
00000e3f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000e60: AND
00000e61: DUP2
00000e62: OR
00000e63: SWAP1
00000e64: SSTORE
00000e65: PUSH1 0x40
00000e67: MLOAD
00000e68: PUSH32 0xf9dc79d7254099fdf1f86b15c91deac3bf8883e4f340ebef6e3c6b870cc315b3
00000e89: SWAP1
00000e8a: PUSH0
00000e8b: SWAP1
00000e8c: LOG1
00000e8d: JUMP
00000e8e: JUMPDEST
00000e8f: PUSH0
00000e90: PUSH2 0x0e9a
00000e93: PUSH1 0x04
00000e95: DUP4
00000e96: PUSH2 0x11dc
00000e99: JUMP
00000e9a: JUMPDEST
00000e9b: PUSH1 0x05
00000e9d: SLOAD
00000e9e: SWAP1
00000e9f: SWAP2
00000ea0: POP
00000ea1: PUSH1 0x20
00000ea3: LT
00000ea4: ISZERO
00000ea5: PUSH2 0x0eda
00000ea8: JUMPI
00000ea9: PUSH1 0x40
00000eab: MLOAD
00000eac: PUSH32 0x221f404100000000000000000000000000000000000000000000000000000000
00000ecd: DUP2
00000ece: MSTORE
00000ecf: PUSH1 0x04
00000ed1: ADD
00000ed2: PUSH1 0x40
00000ed4: MLOAD
00000ed5: DUP1
00000ed6: SWAP2
00000ed7: SUB
00000ed8: SWAP1
00000ed9: REVERT
00000eda: JUMPDEST
00000edb: PUSH1 0x03
00000edd: SLOAD
00000ede: PUSH0
00000edf: SWAP1
00000ee0: PUSH1 0x40
00000ee2: SWAP1
00000ee3: PUSH2 0x0ef3
00000ee6: SWAP1
00000ee7: PUSH4 0xffffffff
00000eec: AND
00000eed: PUSH1 0x01
00000eef: PUSH2 0x1c63
00000ef2: JUMP
00000ef3: JUMPDEST
00000ef4: PUSH2 0x0efd
00000ef7: SWAP2
00000ef8: SWAP1
00000ef9: PUSH2 0x1c7f
00000efc: JUMP
00000efd: JUMPDEST
00000efe: PUSH4 0xffffffff
00000f03: DUP2
00000f04: AND
00000f05: PUSH0
00000f06: DUP2
00000f07: DUP2
00000f08: MSTORE
00000f09: PUSH1 0x02
00000f0b: PUSH1 0x20
00000f0d: SWAP1
00000f0e: DUP2
00000f0f: MSTORE
00000f10: PUSH1 0x40
00000f12: SWAP2
00000f13: DUP3
00000f14: SWAP1
00000f15: KECCAK256
00000f16: DUP7
00000f17: SWAP1
00000f18: SSTORE
00000f19: PUSH1 0x03
00000f1b: DUP1
00000f1c: SLOAD
00000f1d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
00000f3e: AND
00000f3f: SWAP1
00000f40: SWAP4
00000f41: OR
00000f42: SWAP1
00000f43: SWAP3
00000f44: SSTORE
00000f45: PUSH1 0x04
00000f47: SLOAD
00000f48: DUP2
00000f49: MLOAD
00000f4a: SWAP1
00000f4b: DUP2
00000f4c: MSTORE
00000f4d: SWAP2
00000f4e: DUP3
00000f4f: ADD
00000f50: DUP7
00000f51: SWAP1
00000f52: MSTORE
00000f53: DUP2
00000f54: ADD
00000f55: DUP5
00000f56: SWAP1
00000f57: MSTORE
00000f58: SWAP1
00000f59: SWAP2
00000f5a: POP
00000f5b: PUSH32 0xcb249c8292372bd11f567786635483fca9e635030baafca55ff1a8940141d221
00000f7c: SWAP1
00000f7d: PUSH1 0x60
00000f7f: ADD
00000f80: PUSH1 0x40
00000f82: MLOAD
00000f83: DUP1
00000f84: SWAP2
00000f85: SUB
00000f86: SWAP1
00000f87: LOG1
00000f88: POP
00000f89: SWAP2
00000f8a: SWAP1
00000f8b: POP
00000f8c: JUMP
00000f8d: JUMPDEST
00000f8e: CALLVALUE
00000f8f: ISZERO
00000f90: PUSH2 0x0fc5
00000f93: JUMPI
00000f94: PUSH1 0x40
00000f96: MLOAD
00000f97: PUSH32 0x7ae9011800000000000000000000000000000000000000000000000000000000
00000fb8: DUP2
00000fb9: MSTORE
00000fba: PUSH1 0x04
00000fbc: ADD
00000fbd: PUSH1 0x40
00000fbf: MLOAD
00000fc0: DUP1
00000fc1: SWAP2
00000fc2: SUB
00000fc3: SWAP1
00000fc4: REVERT
00000fc5: JUMPDEST
00000fc6: PUSH2 0x1007
00000fc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fde: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000fff: AND
00001000: DUP4
00001001: ADDRESS
00001002: DUP5
00001003: PUSH2 0x1412
00001006: JUMP
00001007: JUMPDEST
00001008: POP
00001009: POP
0000100a: JUMP
0000100b: JUMPDEST
0000100c: PUSH1 0x60
0000100e: DUP2
0000100f: ADD
00001010: MLOAD
00001011: PUSH0
00001012: SWAP1
00001013: PUSH1 0x07
00001015: JUMPDEST
00001016: PUSH1 0x20
00001018: MUL
00001019: ADD
0000101a: MLOAD
0000101b: SWAP3
0000101c: SWAP2
0000101d: POP
0000101e: POP
0000101f: JUMP
00001020: JUMPDEST
00001021: PUSH1 0x60
00001023: DUP2
00001024: ADD
00001025: MLOAD
00001026: PUSH0
00001027: SWAP1
00001028: PUSH1 0x04
0000102a: PUSH2 0x1015
0000102d: JUMP
0000102e: JUMPDEST
0000102f: PUSH1 0x60
00001031: DUP2
00001032: ADD
00001033: MLOAD
00001034: PUSH0
00001035: SWAP1
00001036: PUSH1 0x06
00001038: PUSH2 0x1015
0000103b: JUMP
0000103c: JUMPDEST
0000103d: PUSH1 0x60
0000103f: DUP2
00001040: ADD
00001041: MLOAD
00001042: PUSH0
00001043: SWAP1
00001044: PUSH1 0x03
00001046: PUSH2 0x1015
00001049: JUMP
0000104a: JUMPDEST
0000104b: PUSH0
0000104c: DUP2
0000104d: PUSH0
0000104e: SUB
0000104f: PUSH2 0x1059
00001052: JUMPI
00001053: POP
00001054: PUSH0
00001055: SWAP2
00001056: SWAP1
00001057: POP
00001058: JUMP
00001059: JUMPDEST
0000105a: PUSH1 0x03
0000105c: SLOAD
0000105d: PUSH4 0xffffffff
00001062: AND
00001063: PUSH0
00001064: JUMPDEST
00001065: PUSH1 0x40
00001067: PUSH4 0xffffffff
0000106c: DUP3
0000106d: AND
0000106e: LT
0000106f: ISZERO
00001070: PUSH2 0x10c4
00001073: JUMPI
00001074: PUSH4 0xffffffff
00001079: DUP3
0000107a: AND
0000107b: PUSH0
0000107c: SWAP1
0000107d: DUP2
0000107e: MSTORE
0000107f: PUSH1 0x02
00001081: PUSH1 0x20
00001083: MSTORE
00001084: PUSH1 0x40
00001086: SWAP1
00001087: KECCAK256
00001088: SLOAD
00001089: DUP5
0000108a: SUB
0000108b: PUSH2 0x1098
0000108e: JUMPI
0000108f: POP
00001090: PUSH1 0x01
00001092: SWAP4
00001093: SWAP3
00001094: POP
00001095: POP
00001096: POP
00001097: JUMP
00001098: JUMPDEST
00001099: PUSH1 0x40
0000109b: PUSH1 0x01
0000109d: PUSH2 0x10a6
000010a0: DUP3
000010a1: DUP6
000010a2: PUSH2 0x1c63
000010a5: JUMP
000010a6: JUMPDEST
000010a7: PUSH2 0x10b0
000010aa: SWAP2
000010ab: SWAP1
000010ac: PUSH2 0x1ca6
000010af: JUMP
000010b0: JUMPDEST
000010b1: PUSH2 0x10ba
000010b4: SWAP2
000010b5: SWAP1
000010b6: PUSH2 0x1c7f
000010b9: JUMP
000010ba: JUMPDEST
000010bb: SWAP2
000010bc: POP
000010bd: PUSH1 0x01
000010bf: ADD
000010c0: PUSH2 0x1064
000010c3: JUMP
000010c4: JUMPDEST
000010c5: POP
000010c6: PUSH0
000010c7: SWAP4
000010c8: SWAP3
000010c9: POP
000010ca: POP
000010cb: POP
000010cc: JUMP
000010cd: JUMPDEST
000010ce: PUSH1 0x60
000010d0: DUP2
000010d1: ADD
000010d2: MLOAD
000010d3: PUSH0
000010d4: SWAP1
000010d5: PUSH1 0x05
000010d7: PUSH2 0x1015
000010da: JUMP
000010db: JUMPDEST
000010dc: PUSH1 0x60
000010de: DUP2
000010df: ADD
000010e0: MLOAD
000010e1: PUSH0
000010e2: SWAP1
000010e3: PUSH1 0x01
000010e5: PUSH2 0x1015
000010e8: JUMP
000010e9: JUMPDEST
000010ea: PUSH0
000010eb: DUP2
000010ec: DUP2
000010ed: MSTORE
000010ee: PUSH1 0x08
000010f0: PUSH1 0x20
000010f2: MSTORE
000010f3: PUSH1 0x40
000010f5: SWAP1
000010f6: KECCAK256
000010f7: SLOAD
000010f8: PUSH1 0xff
000010fa: AND
000010fb: ISZERO
000010fc: PUSH2 0x1131
000010ff: JUMPI
00001100: PUSH1 0x40
00001102: MLOAD
00001103: PUSH32 0xb115d85700000000000000000000000000000000000000000000000000000000
00001124: DUP2
00001125: MSTORE
00001126: PUSH1 0x04
00001128: ADD
00001129: PUSH1 0x40
0000112b: MLOAD
0000112c: DUP1
0000112d: SWAP2
0000112e: SUB
0000112f: SWAP1
00001130: REVERT
00001131: JUMPDEST
00001132: PUSH0
00001133: SWAP1
00001134: DUP2
00001135: MSTORE
00001136: PUSH1 0x08
00001138: PUSH1 0x20
0000113a: MSTORE
0000113b: PUSH1 0x40
0000113d: SWAP1
0000113e: KECCAK256
0000113f: DUP1
00001140: SLOAD
00001141: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00001162: AND
00001163: PUSH1 0x01
00001165: OR
00001166: SWAP1
00001167: SSTORE
00001168: JUMP
00001169: JUMPDEST
0000116a: PUSH1 0x60
0000116c: DUP2
0000116d: ADD
0000116e: MLOAD
0000116f: PUSH0
00001170: SWAP1
00001171: DUP2
00001172: PUSH2 0x1015
00001175: JUMP
00001176: JUMPDEST
00001177: PUSH1 0x60
00001179: DUP2
0000117a: ADD
0000117b: MLOAD
0000117c: PUSH0
0000117d: SWAP1
0000117e: PUSH1 0x02
00001180: PUSH2 0x1015
00001183: JUMP
00001184: JUMPDEST
00001185: PUSH2 0x1007
00001188: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000119d: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000011be: AND
000011bf: DUP4
000011c0: DUP4
000011c1: PUSH2 0x14a1
000011c4: JUMP
000011c5: JUMPDEST
000011c6: PUSH0
000011c7: DUP2
000011c8: DUP2
000011c9: MSTORE
000011ca: PUSH1 0x07
000011cc: PUSH1 0x20
000011ce: MSTORE
000011cf: PUSH1 0x40
000011d1: DUP2
000011d2: KECCAK256
000011d3: SLOAD
000011d4: ISZERO
000011d5: ISZERO
000011d6: JUMPDEST
000011d7: SWAP3
000011d8: SWAP2
000011d9: POP
000011da: POP
000011db: JUMP
000011dc: JUMPDEST
000011dd: PUSH0
000011de: PUSH32 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
000011ff: DUP3
00001200: LT
00001201: PUSH2 0x1236
00001204: JUMPI
00001205: PUSH1 0x40
00001207: MLOAD
00001208: PUSH32 0xc380a82e00000000000000000000000000000000000000000000000000000000
00001229: DUP2
0000122a: MSTORE
0000122b: PUSH1 0x04
0000122d: ADD
0000122e: PUSH1 0x40
00001230: MLOAD
00001231: DUP1
00001232: SWAP2
00001233: SUB
00001234: SWAP1
00001235: REVERT
00001236: JUMPDEST
00001237: DUP2
00001238: PUSH0
00001239: SUB
0000123a: PUSH2 0x126f
0000123d: JUMPI
0000123e: PUSH1 0x40
00001240: MLOAD
00001241: PUSH32 0x29691be200000000000000000000000000000000000000000000000000000000
00001262: DUP2
00001263: MSTORE
00001264: PUSH1 0x04
00001266: ADD
00001267: PUSH1 0x40
00001269: MLOAD
0000126a: DUP1
0000126b: SWAP2
0000126c: SUB
0000126d: SWAP1
0000126e: REVERT
0000126f: JUMPDEST
00001270: PUSH0
00001271: DUP3
00001272: DUP2
00001273: MSTORE
00001274: PUSH1 0x03
00001276: DUP5
00001277: ADD
00001278: PUSH1 0x20
0000127a: MSTORE
0000127b: PUSH1 0x40
0000127d: SWAP1
0000127e: KECCAK256
0000127f: SLOAD
00001280: ISZERO
00001281: PUSH2 0x12b6
00001284: JUMPI
00001285: PUSH1 0x40
00001287: MLOAD
00001288: PUSH32 0x258a195a00000000000000000000000000000000000000000000000000000000
000012a9: DUP2
000012aa: MSTORE
000012ab: PUSH1 0x04
000012ad: ADD
000012ae: PUSH1 0x40
000012b0: MLOAD
000012b1: DUP1
000012b2: SWAP2
000012b3: SUB
000012b4: SWAP1
000012b5: REVERT
000012b6: JUMPDEST
000012b7: DUP3
000012b8: SLOAD
000012b9: PUSH1 0x01
000012bb: DUP1
000012bc: DUP6
000012bd: ADD
000012be: SLOAD
000012bf: SWAP1
000012c0: PUSH2 0x12ca
000012c3: SWAP1
000012c4: DUP4
000012c5: SWAP1
000012c6: PUSH2 0x1cc2
000012c9: JUMP
000012ca: JUMPDEST
000012cb: PUSH2 0x12d5
000012ce: DUP3
000012cf: PUSH1 0x02
000012d1: PUSH2 0x1df6
000012d4: JUMP
000012d5: JUMPDEST
000012d6: LT
000012d7: ISZERO
000012d8: PUSH2 0x12e7
000012db: JUMPI
000012dc: PUSH2 0x12e4
000012df: DUP2
000012e0: PUSH2 0x1a00
000012e3: JUMP
000012e4: JUMPDEST
000012e5: SWAP1
000012e6: POP
000012e7: JUMPDEST
000012e8: PUSH1 0x01
000012ea: DUP6
000012eb: ADD
000012ec: DUP2
000012ed: SWAP1
000012ee: SSTORE
000012ef: DUP4
000012f0: PUSH0
000012f1: JUMPDEST
000012f2: DUP3
000012f3: DUP2
000012f4: LT
000012f5: ISZERO
000012f6: PUSH2 0x13d8
000012f9: JUMPI
000012fa: DUP1
000012fb: DUP5
000012fc: SWAP1
000012fd: SHR
000012fe: PUSH1 0x01
00001300: AND
00001301: PUSH1 0x01
00001303: SUB
00001304: PUSH2 0x13bd
00001307: JUMPI
00001308: PUSH1 0x40
0000130a: DUP1
0000130b: MLOAD
0000130c: DUP1
0000130d: DUP3
0000130e: ADD
0000130f: DUP3
00001310: MSTORE
00001311: PUSH0
00001312: DUP4
00001313: DUP2
00001314: MSTORE
00001315: PUSH1 0x02
00001317: DUP11
00001318: ADD
00001319: PUSH1 0x20
0000131b: SWAP1
0000131c: DUP2
0000131d: MSTORE
0000131e: SWAP1
0000131f: DUP4
00001320: SWAP1
00001321: KECCAK256
00001322: SLOAD
00001323: DUP3
00001324: MSTORE
00001325: DUP2
00001326: ADD
00001327: DUP5
00001328: SWAP1
00001329: MSTORE
0000132a: SWAP1
0000132b: MLOAD
0000132c: PUSH32 0x561558fe00000000000000000000000000000000000000000000000000000000
0000134d: DUP2
0000134e: MSTORE
0000134f: PUSH20 0x8ffda7ed8b4ad98c2c34f54b76821711f4a6f2c5
00001364: SWAP2
00001365: PUSH4 0x561558fe
0000136a: SWAP2
0000136b: PUSH2 0x1377
0000136e: SWAP2
0000136f: SWAP1
00001370: PUSH1 0x04
00001372: ADD
00001373: PUSH2 0x1e01
00001376: JUMP
00001377: JUMPDEST
00001378: PUSH1 0x20
0000137a: PUSH1 0x40
0000137c: MLOAD
0000137d: DUP1
0000137e: DUP4
0000137f: SUB
00001380: DUP2
00001381: DUP7
00001382: GAS
00001383: DELEGATECALL
00001384: ISZERO
00001385: DUP1
00001386: ISZERO
00001387: PUSH2 0x1392
0000138a: JUMPI
0000138b: RETURNDATASIZE
0000138c: PUSH0
0000138d: PUSH0
0000138e: RETURNDATACOPY
0000138f: RETURNDATASIZE
00001390: PUSH0
00001391: REVERT
00001392: JUMPDEST
00001393: POP
00001394: POP
00001395: POP
00001396: POP
00001397: PUSH1 0x40
00001399: MLOAD
0000139a: RETURNDATASIZE
0000139b: PUSH1 0x1f
0000139d: NOT
0000139e: PUSH1 0x1f
000013a0: DUP3
000013a1: ADD
000013a2: AND
000013a3: DUP3
000013a4: ADD
000013a5: DUP1
000013a6: PUSH1 0x40
000013a8: MSTORE
000013a9: POP
000013aa: DUP2
000013ab: ADD
000013ac: SWAP1
000013ad: PUSH2 0x13b6
000013b0: SWAP2
000013b1: SWAP1
000013b2: PUSH2 0x1aa7
000013b5: JUMP
000013b6: JUMPDEST
000013b7: SWAP2
000013b8: POP
000013b9: PUSH2 0x13d0
000013bc: JUMP
000013bd: JUMPDEST
000013be: PUSH0
000013bf: DUP2
000013c0: DUP2
000013c1: MSTORE
000013c2: PUSH1 0x02
000013c4: DUP9
000013c5: ADD
000013c6: PUSH1 0x20
000013c8: MSTORE
000013c9: PUSH1 0x40
000013cb: SWAP1
000013cc: KECCAK256
000013cd: DUP3
000013ce: SWAP1
000013cf: SSTORE
000013d0: JUMPDEST
000013d1: PUSH1 0x01
000013d3: ADD
000013d4: PUSH2 0x12f1
000013d7: JUMP
000013d8: JUMPDEST
000013d9: POP
000013da: PUSH2 0x13e2
000013dd: DUP4
000013de: PUSH2 0x1a00
000013e1: JUMP
000013e2: JUMPDEST
000013e3: DUP1
000013e4: DUP8
000013e5: SSTORE
000013e6: PUSH0
000013e7: SWAP3
000013e8: DUP4
000013e9: MSTORE
000013ea: PUSH1 0x02
000013ec: DUP8
000013ed: ADD
000013ee: PUSH1 0x20
000013f0: SWAP1
000013f1: DUP2
000013f2: MSTORE
000013f3: PUSH1 0x40
000013f5: DUP1
000013f6: DUP6
000013f7: KECCAK256
000013f8: DUP5
000013f9: SWAP1
000013fa: SSTORE
000013fb: SWAP7
000013fc: DUP5
000013fd: MSTORE
000013fe: PUSH1 0x03
00001400: SWAP1
00001401: SWAP8
00001402: ADD
00001403: SWAP1
00001404: SWAP7
00001405: MSTORE
00001406: SWAP4
00001407: SWAP1
00001408: KECCAK256
00001409: SWAP4
0000140a: SWAP1
0000140b: SWAP4
0000140c: SSTORE
0000140d: POP
0000140e: SWAP2
0000140f: SWAP1
00001410: POP
00001411: JUMP
00001412: JUMPDEST
00001413: PUSH1 0x40
00001415: MLOAD
00001416: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000142b: DUP5
0000142c: DUP2
0000142d: AND
0000142e: PUSH1 0x24
00001430: DUP4
00001431: ADD
00001432: MSTORE
00001433: DUP4
00001434: DUP2
00001435: AND
00001436: PUSH1 0x44
00001438: DUP4
00001439: ADD
0000143a: MSTORE
0000143b: PUSH1 0x64
0000143d: DUP3
0000143e: ADD
0000143f: DUP4
00001440: SWAP1
00001441: MSTORE
00001442: PUSH2 0x149b
00001445: SWAP2
00001446: DUP7
00001447: SWAP2
00001448: DUP3
00001449: AND
0000144a: SWAP1
0000144b: PUSH4 0x23b872dd
00001450: SWAP1
00001451: PUSH1 0x84
00001453: ADD
00001454: JUMPDEST
00001455: PUSH1 0x40
00001457: MLOAD
00001458: PUSH1 0x20
0000145a: DUP2
0000145b: DUP4
0000145c: SUB
0000145d: SUB
0000145e: DUP2
0000145f: MSTORE
00001460: SWAP1
00001461: PUSH1 0x40
00001463: MSTORE
00001464: SWAP2
00001465: POP
00001466: PUSH1 0xe0
00001468: SHL
00001469: PUSH1 0x20
0000146b: DUP3
0000146c: ADD
0000146d: DUP1
0000146e: MLOAD
0000146f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000148c: DUP4
0000148d: DUP2
0000148e: DUP4
0000148f: AND
00001490: OR
00001491: DUP4
00001492: MSTORE
00001493: POP
00001494: POP
00001495: POP
00001496: POP
00001497: PUSH2 0x14e4
0000149a: JUMP
0000149b: JUMPDEST
0000149c: POP
0000149d: POP
0000149e: POP
0000149f: POP
000014a0: JUMP
000014a1: JUMPDEST
000014a2: PUSH1 0x40
000014a4: MLOAD
000014a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014ba: DUP4
000014bb: DUP2
000014bc: AND
000014bd: PUSH1 0x24
000014bf: DUP4
000014c0: ADD
000014c1: MSTORE
000014c2: PUSH1 0x44
000014c4: DUP3
000014c5: ADD
000014c6: DUP4
000014c7: SWAP1
000014c8: MSTORE
000014c9: PUSH2 0x14df
000014cc: SWAP2
000014cd: DUP6
000014ce: SWAP2
000014cf: DUP3
000014d0: AND
000014d1: SWAP1
000014d2: PUSH4 0xa9059cbb
000014d7: SWAP1
000014d8: PUSH1 0x64
000014da: ADD
000014db: PUSH2 0x1454
000014de: JUMP
000014df: JUMPDEST
000014e0: POP
000014e1: POP
000014e2: POP
000014e3: JUMP
000014e4: JUMPDEST
000014e5: PUSH0
000014e6: PUSH0
000014e7: PUSH1 0x20
000014e9: PUSH0
000014ea: DUP5
000014eb: MLOAD
000014ec: PUSH1 0x20
000014ee: DUP7
000014ef: ADD
000014f0: PUSH0
000014f1: DUP9
000014f2: GAS
000014f3: CALL
000014f4: DUP1
000014f5: PUSH2 0x1503
000014f8: JUMPI
000014f9: PUSH1 0x40
000014fb: MLOAD
000014fc: RETURNDATASIZE
000014fd: PUSH0
000014fe: DUP3
000014ff: RETURNDATACOPY
00001500: RETURNDATASIZE
00001501: DUP2
00001502: REVERT
00001503: JUMPDEST
00001504: POP
00001505: POP
00001506: PUSH0
00001507: MLOAD
00001508: RETURNDATASIZE
00001509: SWAP2
0000150a: POP
0000150b: DUP2
0000150c: ISZERO
0000150d: PUSH2 0x151a
00001510: JUMPI
00001511: DUP1
00001512: PUSH1 0x01
00001514: EQ
00001515: ISZERO
00001516: PUSH2 0x1534
00001519: JUMP
0000151a: JUMPDEST
0000151b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001530: DUP5
00001531: AND
00001532: EXTCODESIZE
00001533: ISZERO
00001534: JUMPDEST
00001535: ISZERO
00001536: PUSH2 0x149b
00001539: JUMPI
0000153a: PUSH1 0x40
0000153c: MLOAD
0000153d: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000
0000155e: DUP2
0000155f: MSTORE
00001560: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001575: DUP6
00001576: AND
00001577: PUSH1 0x04
00001579: DUP3
0000157a: ADD
0000157b: MSTORE
0000157c: PUSH1 0x24
0000157e: ADD
0000157f: PUSH1 0x40
00001581: MLOAD
00001582: DUP1
00001583: SWAP2
00001584: SUB
00001585: SWAP1
00001586: REVERT
00001587: JUMPDEST
00001588: DUP1
00001589: CALLDATALOAD
0000158a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000159f: DUP2
000015a0: AND
000015a1: DUP2
000015a2: EQ
000015a3: PUSH2 0x15aa
000015a6: JUMPI
000015a7: PUSH0
000015a8: PUSH0
000015a9: REVERT
000015aa: JUMPDEST
000015ab: SWAP2
000015ac: SWAP1
000015ad: POP
000015ae: JUMP
000015af: JUMPDEST
000015b0: PUSH0
000015b1: PUSH0
000015b2: PUSH0
000015b3: PUSH1 0x60
000015b5: DUP5
000015b6: DUP7
000015b7: SUB
000015b8: SLT
000015b9: ISZERO
000015ba: PUSH2 0x15c1
000015bd: JUMPI
000015be: PUSH0
000015bf: PUSH0
000015c0: REVERT
000015c1: JUMPDEST
000015c2: PUSH2 0x15ca
000015c5: DUP5
000015c6: PUSH2 0x1587
000015c9: JUMP
000015ca: JUMPDEST
000015cb: SWAP6
000015cc: PUSH1 0x20
000015ce: DUP6
000015cf: ADD
000015d0: CALLDATALOAD
000015d1: SWAP6
000015d2: POP
000015d3: PUSH1 0x40
000015d5: SWAP1
000015d6: SWAP5
000015d7: ADD
000015d8: CALLDATALOAD
000015d9: SWAP4
000015da: SWAP3
000015db: POP
000015dc: POP
000015dd: POP
000015de: JUMP
000015df: JUMPDEST
000015e0: PUSH0
000015e1: PUSH1 0x20
000015e3: DUP3
000015e4: DUP5
000015e5: SUB
000015e6: SLT
000015e7: ISZERO
000015e8: PUSH2 0x15ef
000015eb: JUMPI
000015ec: PUSH0
000015ed: PUSH0
000015ee: REVERT
000015ef: JUMPDEST
000015f0: POP
000015f1: CALLDATALOAD
000015f2: SWAP2
000015f3: SWAP1
000015f4: POP
000015f5: JUMP
000015f6: JUMPDEST
000015f7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001618: PUSH0
00001619: MSTORE
0000161a: PUSH1 0x41
0000161c: PUSH1 0x04
0000161e: MSTORE
0000161f: PUSH1 0x24
00001621: PUSH0
00001622: REVERT
00001623: JUMPDEST
00001624: PUSH1 0x40
00001626: MLOAD
00001627: PUSH1 0x80
00001629: DUP2
0000162a: ADD
0000162b: PUSH8 0xffffffffffffffff
00001634: DUP2
00001635: GT
00001636: DUP3
00001637: DUP3
00001638: LT
00001639: OR
0000163a: ISZERO
0000163b: PUSH2 0x1646
0000163e: JUMPI
0000163f: PUSH2 0x1646
00001642: PUSH2 0x15f6
00001645: JUMP
00001646: JUMPDEST
00001647: PUSH1 0x40
00001649: MSTORE
0000164a: SWAP1
0000164b: JUMP
0000164c: JUMPDEST
0000164d: PUSH1 0x40
0000164f: DUP1
00001650: MLOAD
00001651: SWAP1
00001652: DUP2
00001653: ADD
00001654: PUSH8 0xffffffffffffffff
0000165d: DUP2
0000165e: GT
0000165f: DUP3
00001660: DUP3
00001661: LT
00001662: OR
00001663: ISZERO
00001664: PUSH2 0x1646
00001667: JUMPI
00001668: PUSH2 0x1646
0000166b: PUSH2 0x15f6
0000166e: JUMP
0000166f: JUMPDEST
00001670: PUSH1 0x40
00001672: MLOAD
00001673: PUSH1 0x1f
00001675: DUP3
00001676: ADD
00001677: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001698: AND
00001699: DUP2
0000169a: ADD
0000169b: PUSH8 0xffffffffffffffff
000016a4: DUP2
000016a5: GT
000016a6: DUP3
000016a7: DUP3
000016a8: LT
000016a9: OR
000016aa: ISZERO
000016ab: PUSH2 0x16b6
000016ae: JUMPI
000016af: PUSH2 0x16b6
000016b2: PUSH2 0x15f6
000016b5: JUMP
000016b6: JUMPDEST
000016b7: PUSH1 0x40
000016b9: MSTORE
000016ba: SWAP2
000016bb: SWAP1
000016bc: POP
000016bd: JUMP
000016be: JUMPDEST
000016bf: PUSH0
000016c0: DUP3
000016c1: PUSH1 0x1f
000016c3: DUP4
000016c4: ADD
000016c5: SLT
000016c6: PUSH2 0x16cd
000016c9: JUMPI
000016ca: PUSH0
000016cb: PUSH0
000016cc: REVERT
000016cd: JUMPDEST
000016ce: PUSH0
000016cf: PUSH2 0x16d8
000016d2: PUSH1 0x40
000016d4: PUSH2 0x166f
000016d7: JUMP
000016d8: JUMPDEST
000016d9: SWAP1
000016da: POP
000016db: DUP1
000016dc: PUSH1 0x40
000016de: DUP5
000016df: ADD
000016e0: DUP6
000016e1: DUP2
000016e2: GT
000016e3: ISZERO
000016e4: PUSH2 0x16eb
000016e7: JUMPI
000016e8: PUSH0
000016e9: PUSH0
000016ea: REVERT
000016eb: JUMPDEST
000016ec: DUP5
000016ed: JUMPDEST
000016ee: DUP2
000016ef: DUP2
000016f0: LT
000016f1: ISZERO
000016f2: PUSH2 0x1705
000016f5: JUMPI
000016f6: DUP1
000016f7: CALLDATALOAD
000016f8: DUP4
000016f9: MSTORE
000016fa: PUSH1 0x20
000016fc: SWAP3
000016fd: DUP4
000016fe: ADD
000016ff: SWAP3
00001700: ADD
00001701: PUSH2 0x16ed
00001704: JUMP
00001705: JUMPDEST
00001706: POP
00001707: SWAP2
00001708: SWAP6
00001709: SWAP5
0000170a: POP
0000170b: POP
0000170c: POP
0000170d: POP
0000170e: POP
0000170f: JUMP
00001710: JUMPDEST
00001711: PUSH0
00001712: DUP3
00001713: PUSH1 0x1f
00001715: DUP4
00001716: ADD
00001717: SLT
00001718: PUSH2 0x171f
0000171b: JUMPI
0000171c: PUSH0
0000171d: PUSH0
0000171e: REVERT
0000171f: JUMPDEST
00001720: PUSH1 0x40
00001722: PUSH2 0x172a
00001725: DUP2
00001726: PUSH2 0x166f
00001729: JUMP
0000172a: JUMPDEST
0000172b: DUP1
0000172c: PUSH1 0x80
0000172e: DUP6
0000172f: ADD
00001730: DUP7
00001731: DUP2
00001732: GT
00001733: ISZERO
00001734: PUSH2 0x173b
00001737: JUMPI
00001738: PUSH0
00001739: PUSH0
0000173a: REVERT
0000173b: JUMPDEST
0000173c: DUP6
0000173d: JUMPDEST
0000173e: DUP2
0000173f: DUP2
00001740: LT
00001741: ISZERO
00001742: PUSH2 0x175e
00001745: JUMPI
00001746: PUSH2 0x174f
00001749: DUP9
0000174a: DUP3
0000174b: PUSH2 0x16be
0000174e: JUMP
0000174f: JUMPDEST
00001750: DUP5
00001751: MSTORE
00001752: PUSH1 0x20
00001754: SWAP1
00001755: SWAP4
00001756: ADD
00001757: SWAP3
00001758: DUP5
00001759: ADD
0000175a: PUSH2 0x173d
0000175d: JUMP
0000175e: JUMPDEST
0000175f: POP
00001760: SWAP1
00001761: SWAP7
00001762: SWAP6
00001763: POP
00001764: POP
00001765: POP
00001766: POP
00001767: POP
00001768: POP
00001769: JUMP
0000176a: JUMPDEST
0000176b: PUSH0
0000176c: PUSH2 0x0200
0000176f: DUP3
00001770: DUP5
00001771: SUB
00001772: SLT
00001773: ISZERO
00001774: PUSH2 0x177b
00001777: JUMPI
00001778: PUSH0
00001779: PUSH0
0000177a: REVERT
0000177b: JUMPDEST
0000177c: PUSH2 0x1783
0000177f: PUSH2 0x1623
00001782: JUMP
00001783: JUMPDEST
00001784: SWAP1
00001785: POP
00001786: PUSH2 0x178f
00001789: DUP4
0000178a: DUP4
0000178b: PUSH2 0x16be
0000178e: JUMP
0000178f: JUMPDEST
00001790: DUP2
00001791: MSTORE
00001792: PUSH2 0x179e
00001795: DUP4
00001796: PUSH1 0x40
00001798: DUP5
00001799: ADD
0000179a: PUSH2 0x1710
0000179d: JUMP
0000179e: JUMPDEST
0000179f: PUSH1 0x20
000017a1: DUP3
000017a2: ADD
000017a3: MSTORE
000017a4: PUSH2 0x17b0
000017a7: DUP4
000017a8: PUSH1 0xc0
000017aa: DUP5
000017ab: ADD
000017ac: PUSH2 0x16be
000017af: JUMP
000017b0: JUMPDEST
000017b1: PUSH1 0x40
000017b3: DUP3
000017b4: ADD
000017b5: MSTORE
000017b6: PUSH0
000017b7: DUP4
000017b8: PUSH2 0x011f
000017bb: DUP5
000017bc: ADD
000017bd: SLT
000017be: PUSH2 0x17c5
000017c1: JUMPI
000017c2: PUSH0
000017c3: PUSH0
000017c4: REVERT
000017c5: JUMPDEST
000017c6: POP
000017c7: PUSH0
000017c8: DUP1
000017c9: PUSH2 0x0100
000017cc: PUSH2 0x17d4
000017cf: DUP2
000017d0: PUSH2 0x166f
000017d3: JUMP
000017d4: JUMPDEST
000017d5: SWAP2
000017d6: POP
000017d7: DUP2
000017d8: SWAP3
000017d9: POP
000017da: PUSH2 0x0200
000017dd: DUP6
000017de: ADD
000017df: DUP7
000017e0: DUP2
000017e1: GT
000017e2: ISZERO
000017e3: PUSH2 0x17ea
000017e6: JUMPI
000017e7: PUSH0
000017e8: PUSH0
000017e9: REVERT
000017ea: JUMPDEST
000017eb: SWAP1
000017ec: DUP6
000017ed: ADD
000017ee: SWAP1
000017ef: JUMPDEST
000017f0: DUP1
000017f1: DUP3
000017f2: LT
000017f3: ISZERO
000017f4: PUSH2 0x180a
000017f7: JUMPI
000017f8: DUP2
000017f9: CALLDATALOAD
000017fa: DUP5
000017fb: MSTORE
000017fc: PUSH1 0x20
000017fe: SWAP4
000017ff: DUP5
00001800: ADD
00001801: SWAP4
00001802: SWAP1
00001803: SWAP2
00001804: ADD
00001805: SWAP1
00001806: PUSH2 0x17ef
00001809: JUMP
0000180a: JUMPDEST
0000180b: POP
0000180c: POP
0000180d: PUSH1 0x60
0000180f: DUP4
00001810: ADD
00001811: MSTORE
00001812: POP
00001813: SWAP3
00001814: SWAP2
00001815: POP
00001816: POP
00001817: JUMP
00001818: JUMPDEST
00001819: PUSH0
0000181a: PUSH0
0000181b: PUSH2 0x0220
0000181e: DUP4
0000181f: DUP6
00001820: SUB
00001821: SLT
00001822: ISZERO
00001823: PUSH2 0x182a
00001826: JUMPI
00001827: PUSH0
00001828: PUSH0
00001829: REVERT
0000182a: JUMPDEST
0000182b: DUP3
0000182c: CALLDATALOAD
0000182d: PUSH8 0xffffffffffffffff
00001836: DUP2
00001837: GT
00001838: ISZERO
00001839: PUSH2 0x1840
0000183c: JUMPI
0000183d: PUSH0
0000183e: PUSH0
0000183f: REVERT
00001840: JUMPDEST
00001841: DUP4
00001842: ADD
00001843: PUSH1 0x40
00001845: DUP2
00001846: DUP7
00001847: SUB
00001848: SLT
00001849: ISZERO
0000184a: PUSH2 0x1851
0000184d: JUMPI
0000184e: PUSH0
0000184f: PUSH0
00001850: REVERT
00001851: JUMPDEST
00001852: PUSH2 0x1859
00001855: PUSH2 0x164c
00001858: JUMP
00001859: JUMPDEST
0000185a: PUSH2 0x1862
0000185d: DUP3
0000185e: PUSH2 0x1587
00001861: JUMP
00001862: JUMPDEST
00001863: DUP2
00001864: MSTORE
00001865: PUSH1 0x20
00001867: DUP3
00001868: ADD
00001869: CALLDATALOAD
0000186a: PUSH8 0xffffffffffffffff
00001873: DUP2
00001874: GT
00001875: ISZERO
00001876: PUSH2 0x187d
00001879: JUMPI
0000187a: PUSH0
0000187b: PUSH0
0000187c: REVERT
0000187d: JUMPDEST
0000187e: DUP1
0000187f: DUP4
00001880: ADD
00001881: SWAP3
00001882: POP
00001883: POP
00001884: DUP6
00001885: PUSH1 0x1f
00001887: DUP4
00001888: ADD
00001889: SLT
0000188a: PUSH2 0x1891
0000188d: JUMPI
0000188e: PUSH0
0000188f: PUSH0
00001890: REVERT
00001891: JUMPDEST
00001892: DUP2
00001893: CALLDATALOAD
00001894: PUSH8 0xffffffffffffffff
0000189d: DUP2
0000189e: GT
0000189f: ISZERO
000018a0: PUSH2 0x18ab
000018a3: JUMPI
000018a4: PUSH2 0x18ab
000018a7: PUSH2 0x15f6
000018aa: JUMP
000018ab: JUMPDEST
000018ac: PUSH2 0x18dc
000018af: PUSH1 0x20
000018b1: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000018d2: PUSH1 0x1f
000018d4: DUP5
000018d5: ADD
000018d6: AND
000018d7: ADD
000018d8: PUSH2 0x166f
000018db: JUMP
000018dc: JUMPDEST
000018dd: DUP2
000018de: DUP2
000018df: MSTORE
000018e0: DUP8
000018e1: PUSH1 0x20
000018e3: DUP4
000018e4: DUP7
000018e5: ADD
000018e6: ADD
000018e7: GT
000018e8: ISZERO
000018e9: PUSH2 0x18f0
000018ec: JUMPI
000018ed: PUSH0
000018ee: PUSH0
000018ef: REVERT
000018f0: JUMPDEST
000018f1: DUP2
000018f2: PUSH1 0x20
000018f4: DUP6
000018f5: ADD
000018f6: PUSH1 0x20
000018f8: DUP4
000018f9: ADD
000018fa: CALLDATACOPY
000018fb: PUSH0
000018fc: PUSH1 0x20
000018fe: DUP4
000018ff: DUP4
00001900: ADD
00001901: ADD
00001902: MSTORE
00001903: DUP1
00001904: PUSH1 0x20
00001906: DUP5
00001907: ADD
00001908: MSTORE
00001909: POP
0000190a: POP
0000190b: DUP1
0000190c: SWAP4
0000190d: POP
0000190e: POP
0000190f: POP
00001910: PUSH2 0x191c
00001913: DUP5
00001914: PUSH1 0x20
00001916: DUP6
00001917: ADD
00001918: PUSH2 0x176a
0000191b: JUMP
0000191c: JUMPDEST
0000191d: SWAP1
0000191e: POP
0000191f: SWAP3
00001920: POP
00001921: SWAP3
00001922: SWAP1
00001923: POP
00001924: JUMP
00001925: JUMPDEST
00001926: PUSH0
00001927: PUSH2 0x0180
0000192a: DUP3
0000192b: DUP5
0000192c: SUB
0000192d: SLT
0000192e: DUP1
0000192f: ISZERO
00001930: PUSH2 0x1937
00001933: JUMPI
00001934: PUSH0
00001935: PUSH0
00001936: REVERT
00001937: JUMPDEST
00001938: POP
00001939: PUSH0
0000193a: DUP1
0000193b: PUSH2 0x1942
0000193e: PUSH2 0x1623
00001941: JUMP
00001942: JUMPDEST
00001943: SWAP2
00001944: POP
00001945: PUSH2 0x194e
00001948: DUP6
00001949: DUP6
0000194a: PUSH2 0x16be
0000194d: JUMP
0000194e: JUMPDEST
0000194f: DUP3
00001950: MSTORE
00001951: PUSH2 0x195d
00001954: DUP6
00001955: PUSH1 0x40
00001957: DUP7
00001958: ADD
00001959: PUSH2 0x1710
0000195c: JUMP
0000195d: JUMPDEST
0000195e: PUSH1 0x20
00001960: DUP4
00001961: ADD
00001962: MSTORE
00001963: PUSH2 0x196f
00001966: DUP6
00001967: PUSH1 0xc0
00001969: DUP7
0000196a: ADD
0000196b: PUSH2 0x16be
0000196e: JUMP
0000196f: JUMPDEST
00001970: PUSH1 0x40
00001972: DUP4
00001973: ADD
00001974: MSTORE
00001975: DUP5
00001976: PUSH2 0x011f
00001979: DUP6
0000197a: ADD
0000197b: SLT
0000197c: PUSH2 0x1983
0000197f: JUMPI
00001980: PUSH0
00001981: PUSH0
00001982: REVERT
00001983: JUMPDEST
00001984: POP
00001985: PUSH0
00001986: DUP1
00001987: PUSH2 0x1990
0000198a: PUSH1 0x80
0000198c: PUSH2 0x166f
0000198f: JUMP
00001990: JUMPDEST
00001991: SWAP1
00001992: POP
00001993: DUP1
00001994: SWAP2
00001995: POP
00001996: PUSH2 0x0180
00001999: DUP6
0000199a: ADD
0000199b: DUP7
0000199c: DUP2
0000199d: GT
0000199e: ISZERO
0000199f: PUSH2 0x19a6
000019a2: JUMPI
000019a3: PUSH0
000019a4: PUSH0
000019a5: REVERT
000019a6: JUMPDEST
000019a7: PUSH2 0x0100
000019aa: DUP7
000019ab: ADD
000019ac: JUMPDEST
000019ad: DUP2
000019ae: DUP2
000019af: LT
000019b0: ISZERO
000019b1: PUSH2 0x19c4
000019b4: JUMPI
000019b5: DUP1
000019b6: CALLDATALOAD
000019b7: DUP5
000019b8: MSTORE
000019b9: PUSH1 0x20
000019bb: SWAP4
000019bc: DUP5
000019bd: ADD
000019be: SWAP4
000019bf: ADD
000019c0: PUSH2 0x19ac
000019c3: JUMP
000019c4: JUMPDEST
000019c5: POP
000019c6: POP
000019c7: PUSH1 0x60
000019c9: DUP4
000019ca: ADD
000019cb: MSTORE
000019cc: POP
000019cd: SWAP4
000019ce: SWAP3
000019cf: POP
000019d0: POP
000019d1: POP
000019d2: JUMP
000019d3: JUMPDEST
000019d4: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000019f5: PUSH0
000019f6: MSTORE
000019f7: PUSH1 0x11
000019f9: PUSH1 0x04
000019fb: MSTORE
000019fc: PUSH1 0x24
000019fe: PUSH0
000019ff: REVERT
00001a00: JUMPDEST
00001a01: PUSH0
00001a02: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001a23: DUP3
00001a24: SUB
00001a25: PUSH2 0x1a30
00001a28: JUMPI
00001a29: PUSH2 0x1a30
00001a2c: PUSH2 0x19d3
00001a2f: JUMP
00001a30: JUMPDEST
00001a31: POP
00001a32: PUSH1 0x01
00001a34: ADD
00001a35: SWAP1
00001a36: JUMP
00001a37: JUMPDEST
00001a38: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001a59: PUSH0
00001a5a: MSTORE
00001a5b: PUSH1 0x12
00001a5d: PUSH1 0x04
00001a5f: MSTORE
00001a60: PUSH1 0x24
00001a62: PUSH0
00001a63: REVERT
00001a64: JUMPDEST
00001a65: PUSH0
00001a66: DUP3
00001a67: PUSH2 0x1a72
00001a6a: JUMPI
00001a6b: PUSH2 0x1a72
00001a6e: PUSH2 0x1a37
00001a71: JUMP
00001a72: JUMPDEST
00001a73: POP
00001a74: MOD
00001a75: SWAP1
00001a76: JUMP
00001a77: JUMPDEST
00001a78: PUSH1 0x60
00001a7a: DUP2
00001a7b: ADD
00001a7c: DUP2
00001a7d: DUP4
00001a7e: PUSH0
00001a7f: JUMPDEST
00001a80: PUSH1 0x03
00001a82: DUP2
00001a83: LT
00001a84: ISZERO
00001a85: PUSH2 0x1a9e
00001a88: JUMPI
00001a89: DUP2
00001a8a: MLOAD
00001a8b: DUP4
00001a8c: MSTORE
00001a8d: PUSH1 0x20
00001a8f: SWAP3
00001a90: DUP4
00001a91: ADD
00001a92: SWAP3
00001a93: SWAP1
00001a94: SWAP2
00001a95: ADD
00001a96: SWAP1
00001a97: PUSH1 0x01
00001a99: ADD
00001a9a: PUSH2 0x1a7f
00001a9d: JUMP
00001a9e: JUMPDEST
00001a9f: POP
00001aa0: POP
00001aa1: POP
00001aa2: SWAP3
00001aa3: SWAP2
00001aa4: POP
00001aa5: POP
00001aa6: JUMP
00001aa7: JUMPDEST
00001aa8: PUSH0
00001aa9: PUSH1 0x20
00001aab: DUP3
00001aac: DUP5
00001aad: SUB
00001aae: SLT
00001aaf: ISZERO
00001ab0: PUSH2 0x1ab7
00001ab3: JUMPI
00001ab4: PUSH0
00001ab5: PUSH0
00001ab6: REVERT
00001ab7: JUMPDEST
00001ab8: POP
00001ab9: MLOAD
00001aba: SWAP2
00001abb: SWAP1
00001abc: POP
00001abd: JUMP
00001abe: JUMPDEST
00001abf: PUSH1 0x40
00001ac1: DUP2
00001ac2: MSTORE
00001ac3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ad8: DUP4
00001ad9: MLOAD
00001ada: AND
00001adb: PUSH1 0x40
00001add: DUP3
00001ade: ADD
00001adf: MSTORE
00001ae0: PUSH0
00001ae1: PUSH1 0x20
00001ae3: DUP5
00001ae4: ADD
00001ae5: MLOAD
00001ae6: PUSH1 0x40
00001ae8: PUSH1 0x60
00001aea: DUP5
00001aeb: ADD
00001aec: MSTORE
00001aed: DUP1
00001aee: MLOAD
00001aef: DUP1
00001af0: PUSH1 0x80
00001af2: DUP6
00001af3: ADD
00001af4: MSTORE
00001af5: DUP1
00001af6: PUSH1 0x20
00001af8: DUP4
00001af9: ADD
00001afa: PUSH1 0xa0
00001afc: DUP7
00001afd: ADD
00001afe: MCOPY
00001aff: PUSH0
00001b00: PUSH1 0xa0
00001b02: DUP3
00001b03: DUP7
00001b04: ADD
00001b05: ADD
00001b06: MSTORE
00001b07: PUSH1 0xa0
00001b09: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001b2a: PUSH1 0x1f
00001b2c: DUP4
00001b2d: ADD
00001b2e: AND
00001b2f: DUP6
00001b30: ADD
00001b31: ADD
00001b32: SWAP3
00001b33: POP
00001b34: POP
00001b35: POP
00001b36: DUP3
00001b37: PUSH1 0x20
00001b39: DUP4
00001b3a: ADD
00001b3b: MSTORE
00001b3c: SWAP4
00001b3d: SWAP3
00001b3e: POP
00001b3f: POP
00001b40: POP
00001b41: JUMP
00001b42: JUMPDEST
00001b43: DUP1
00001b44: PUSH0
00001b45: JUMPDEST
00001b46: PUSH1 0x02
00001b48: DUP2
00001b49: LT
00001b4a: ISZERO
00001b4b: PUSH2 0x149b
00001b4e: JUMPI
00001b4f: DUP2
00001b50: MLOAD
00001b51: DUP5
00001b52: MSTORE
00001b53: PUSH1 0x20
00001b55: SWAP4
00001b56: DUP5
00001b57: ADD
00001b58: SWAP4
00001b59: SWAP1
00001b5a: SWAP2
00001b5b: ADD
00001b5c: SWAP1
00001b5d: PUSH1 0x01
00001b5f: ADD
00001b60: PUSH2 0x1b45
00001b63: JUMP
00001b64: JUMPDEST
00001b65: DUP1
00001b66: PUSH0
00001b67: JUMPDEST
00001b68: PUSH1 0x02
00001b6a: DUP2
00001b6b: LT
00001b6c: ISZERO
00001b6d: PUSH2 0x149b
00001b70: JUMPI
00001b71: PUSH2 0x1b7b
00001b74: DUP5
00001b75: DUP4
00001b76: MLOAD
00001b77: PUSH2 0x1b42
00001b7a: JUMP
00001b7b: JUMPDEST
00001b7c: PUSH1 0x40
00001b7e: SWAP4
00001b7f: SWAP1
00001b80: SWAP4
00001b81: ADD
00001b82: SWAP3
00001b83: PUSH1 0x20
00001b85: SWAP2
00001b86: SWAP1
00001b87: SWAP2
00001b88: ADD
00001b89: SWAP1
00001b8a: PUSH1 0x01
00001b8c: ADD
00001b8d: PUSH2 0x1b67
00001b90: JUMP
00001b91: JUMPDEST
00001b92: PUSH2 0x0200
00001b95: DUP2
00001b96: ADD
00001b97: PUSH2 0x1ba0
00001b9a: DUP3
00001b9b: DUP8
00001b9c: PUSH2 0x1b42
00001b9f: JUMP
00001ba0: JUMPDEST
00001ba1: PUSH2 0x1bad
00001ba4: PUSH1 0x40
00001ba6: DUP4
00001ba7: ADD
00001ba8: DUP7
00001ba9: PUSH2 0x1b64
00001bac: JUMP
00001bad: JUMPDEST
00001bae: PUSH2 0x1bba
00001bb1: PUSH1 0xc0
00001bb3: DUP4
00001bb4: ADD
00001bb5: DUP6
00001bb6: PUSH2 0x1b42
00001bb9: JUMP
00001bba: JUMPDEST
00001bbb: PUSH2 0x0100
00001bbe: DUP3
00001bbf: ADD
00001bc0: DUP4
00001bc1: PUSH0
00001bc2: JUMPDEST
00001bc3: PUSH1 0x08
00001bc5: DUP2
00001bc6: LT
00001bc7: ISZERO
00001bc8: PUSH2 0x1be1
00001bcb: JUMPI
00001bcc: DUP2
00001bcd: MLOAD
00001bce: DUP4
00001bcf: MSTORE
00001bd0: PUSH1 0x20
00001bd2: SWAP3
00001bd3: DUP4
00001bd4: ADD
00001bd5: SWAP3
00001bd6: SWAP1
00001bd7: SWAP2
00001bd8: ADD
00001bd9: SWAP1
00001bda: PUSH1 0x01
00001bdc: ADD
00001bdd: PUSH2 0x1bc2
00001be0: JUMP
00001be1: JUMPDEST
00001be2: POP
00001be3: POP
00001be4: POP
00001be5: SWAP6
00001be6: SWAP5
00001be7: POP
00001be8: POP
00001be9: POP
00001bea: POP
00001beb: POP
00001bec: JUMP
00001bed: JUMPDEST
00001bee: PUSH0
00001bef: PUSH1 0x20
00001bf1: DUP3
00001bf2: DUP5
00001bf3: SUB
00001bf4: SLT
00001bf5: ISZERO
00001bf6: PUSH2 0x1bfd
00001bf9: JUMPI
00001bfa: PUSH0
00001bfb: PUSH0
00001bfc: REVERT
00001bfd: JUMPDEST
00001bfe: DUP2
00001bff: MLOAD
00001c00: DUP1
00001c01: ISZERO
00001c02: ISZERO
00001c03: DUP2
00001c04: EQ
00001c05: PUSH2 0x1c0c
00001c08: JUMPI
00001c09: PUSH0
00001c0a: PUSH0
00001c0b: REVERT
00001c0c: JUMPDEST
00001c0d: SWAP4
00001c0e: SWAP3
00001c0f: POP
00001c10: POP
00001c11: POP
00001c12: JUMP
00001c13: JUMPDEST
00001c14: PUSH2 0x0180
00001c17: DUP2
00001c18: ADD
00001c19: PUSH2 0x1c22
00001c1c: DUP3
00001c1d: DUP8
00001c1e: PUSH2 0x1b42
00001c21: JUMP
00001c22: JUMPDEST
00001c23: PUSH2 0x1c2f
00001c26: PUSH1 0x40
00001c28: DUP4
00001c29: ADD
00001c2a: DUP7
00001c2b: PUSH2 0x1b64
00001c2e: JUMP
00001c2f: JUMPDEST
00001c30: PUSH2 0x1c3c
00001c33: PUSH1 0xc0
00001c35: DUP4
00001c36: ADD
00001c37: DUP6
00001c38: PUSH2 0x1b42
00001c3b: JUMP
00001c3c: JUMPDEST
00001c3d: PUSH2 0x0100
00001c40: DUP3
00001c41: ADD
00001c42: DUP4
00001c43: PUSH0
00001c44: JUMPDEST
00001c45: PUSH1 0x04
00001c47: DUP2
00001c48: LT
00001c49: ISZERO
00001c4a: PUSH2 0x1be1
00001c4d: JUMPI
00001c4e: DUP2
00001c4f: MLOAD
00001c50: DUP4
00001c51: MSTORE
00001c52: PUSH1 0x20
00001c54: SWAP3
00001c55: DUP4
00001c56: ADD
00001c57: SWAP3
00001c58: SWAP1
00001c59: SWAP2
00001c5a: ADD
00001c5b: SWAP1
00001c5c: PUSH1 0x01
00001c5e: ADD
00001c5f: PUSH2 0x1c44
00001c62: JUMP
00001c63: JUMPDEST
00001c64: PUSH4 0xffffffff
00001c69: DUP2
00001c6a: DUP2
00001c6b: AND
00001c6c: DUP4
00001c6d: DUP3
00001c6e: AND
00001c6f: ADD
00001c70: SWAP1
00001c71: DUP2
00001c72: GT
00001c73: ISZERO
00001c74: PUSH2 0x11d6
00001c77: JUMPI
00001c78: PUSH2 0x11d6
00001c7b: PUSH2 0x19d3
00001c7e: JUMP
00001c7f: JUMPDEST
00001c80: PUSH0
00001c81: PUSH4 0xffffffff
00001c86: DUP4
00001c87: AND
00001c88: DUP1
00001c89: PUSH2 0x1c94
00001c8c: JUMPI
00001c8d: PUSH2 0x1c94
00001c90: PUSH2 0x1a37
00001c93: JUMP
00001c94: JUMPDEST
00001c95: DUP1
00001c96: PUSH4 0xffffffff
00001c9b: DUP5
00001c9c: AND
00001c9d: MOD
00001c9e: SWAP2
00001c9f: POP
00001ca0: POP
00001ca1: SWAP3
00001ca2: SWAP2
00001ca3: POP
00001ca4: POP
00001ca5: JUMP
00001ca6: JUMPDEST
00001ca7: PUSH4 0xffffffff
00001cac: DUP3
00001cad: DUP2
00001cae: AND
00001caf: DUP3
00001cb0: DUP3
00001cb1: AND
00001cb2: SUB
00001cb3: SWAP1
00001cb4: DUP2
00001cb5: GT
00001cb6: ISZERO
00001cb7: PUSH2 0x11d6
00001cba: JUMPI
00001cbb: PUSH2 0x11d6
00001cbe: PUSH2 0x19d3
00001cc1: JUMP
00001cc2: JUMPDEST
00001cc3: DUP1
00001cc4: DUP3
00001cc5: ADD
00001cc6: DUP1
00001cc7: DUP3
00001cc8: GT
00001cc9: ISZERO
00001cca: PUSH2 0x11d6
00001ccd: JUMPI
00001cce: PUSH2 0x11d6
00001cd1: PUSH2 0x19d3
00001cd4: JUMP
00001cd5: JUMPDEST
00001cd6: PUSH1 0x01
00001cd8: DUP2
00001cd9: JUMPDEST
00001cda: PUSH1 0x01
00001cdc: DUP5
00001cdd: GT
00001cde: ISZERO
00001cdf: PUSH2 0x1d10
00001ce2: JUMPI
00001ce3: DUP1
00001ce4: DUP6
00001ce5: DIV
00001ce6: DUP2
00001ce7: GT
00001ce8: ISZERO
00001ce9: PUSH2 0x1cf4
00001cec: JUMPI
00001ced: PUSH2 0x1cf4
00001cf0: PUSH2 0x19d3
00001cf3: JUMP
00001cf4: JUMPDEST
00001cf5: PUSH1 0x01
00001cf7: DUP5
00001cf8: AND
00001cf9: ISZERO
00001cfa: PUSH2 0x1d02
00001cfd: JUMPI
00001cfe: SWAP1
00001cff: DUP2
00001d00: MUL
00001d01: SWAP1
00001d02: JUMPDEST
00001d03: PUSH1 0x01
00001d05: SWAP4
00001d06: SWAP1
00001d07: SWAP4
00001d08: SHR
00001d09: SWAP3
00001d0a: DUP1
00001d0b: MUL
00001d0c: PUSH2 0x1cd9
00001d0f: JUMP
00001d10: JUMPDEST
00001d11: SWAP4
00001d12: POP
00001d13: SWAP4
00001d14: SWAP2
00001d15: POP
00001d16: POP
00001d17: JUMP
00001d18: JUMPDEST
00001d19: PUSH0
00001d1a: DUP3
00001d1b: PUSH2 0x1d26
00001d1e: JUMPI
00001d1f: POP
00001d20: PUSH1 0x01
00001d22: PUSH2 0x11d6
00001d25: JUMP
00001d26: JUMPDEST
00001d27: DUP2
00001d28: PUSH2 0x1d32
00001d2b: JUMPI
00001d2c: POP
00001d2d: PUSH0
00001d2e: PUSH2 0x11d6
00001d31: JUMP
00001d32: JUMPDEST
00001d33: DUP2
00001d34: PUSH1 0x01
00001d36: DUP2
00001d37: EQ
00001d38: PUSH2 0x1d48
00001d3b: JUMPI
00001d3c: PUSH1 0x02
00001d3e: DUP2
00001d3f: EQ
00001d40: PUSH2 0x1d52
00001d43: JUMPI
00001d44: PUSH2 0x1d6e
00001d47: JUMP
00001d48: JUMPDEST
00001d49: PUSH1 0x01
00001d4b: SWAP2
00001d4c: POP
00001d4d: POP
00001d4e: PUSH2 0x11d6
00001d51: JUMP
00001d52: JUMPDEST
00001d53: PUSH1 0xff
00001d55: DUP5
00001d56: GT
00001d57: ISZERO
00001d58: PUSH2 0x1d63
00001d5b: JUMPI
00001d5c: PUSH2 0x1d63
00001d5f: PUSH2 0x19d3
00001d62: JUMP
00001d63: JUMPDEST
00001d64: POP
00001d65: POP
00001d66: PUSH1 0x01
00001d68: DUP3
00001d69: SHL
00001d6a: PUSH2 0x11d6
00001d6d: JUMP
00001d6e: JUMPDEST
00001d6f: POP
00001d70: PUSH1 0x20
00001d72: DUP4
00001d73: LT
00001d74: PUSH2 0x0133
00001d77: DUP4
00001d78: LT
00001d79: AND
00001d7a: PUSH1 0x4e
00001d7c: DUP5
00001d7d: LT
00001d7e: PUSH1 0x0b
00001d80: DUP5
00001d81: LT
00001d82: AND
00001d83: OR
00001d84: ISZERO
00001d85: PUSH2 0x1d91
00001d88: JUMPI
00001d89: POP
00001d8a: DUP2
00001d8b: DUP2
00001d8c: EXP
00001d8d: PUSH2 0x11d6
00001d90: JUMP
00001d91: JUMPDEST
00001d92: PUSH2 0x1dbc
00001d95: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001db6: DUP5
00001db7: DUP5
00001db8: PUSH2 0x1cd5
00001dbb: JUMP
00001dbc: JUMPDEST
00001dbd: DUP1
00001dbe: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001ddf: DIV
00001de0: DUP3
00001de1: GT
00001de2: ISZERO
00001de3: PUSH2 0x1dee
00001de6: JUMPI
00001de7: PUSH2 0x1dee
00001dea: PUSH2 0x19d3
00001ded: JUMP
00001dee: JUMPDEST
00001def: MUL
00001df0: SWAP4
00001df1: SWAP3
00001df2: POP
00001df3: POP
00001df4: POP
00001df5: JUMP
00001df6: JUMPDEST
00001df7: PUSH0
00001df8: PUSH2 0x1c0c
00001dfb: DUP4
00001dfc: DUP4
00001dfd: PUSH2 0x1d18
00001e00: JUMP
00001e01: JUMPDEST
00001e02: PUSH1 0x40
00001e04: DUP2
00001e05: ADD
00001e06: DUP2
00001e07: DUP4
00001e08: PUSH0
00001e09: JUMPDEST
00001e0a: PUSH1 0x02
00001e0c: DUP2
00001e0d: LT
00001e0e: ISZERO
00001e0f: PUSH2 0x1a9e
00001e12: JUMPI
00001e13: DUP2
00001e14: MLOAD
00001e15: DUP4
00001e16: MSTORE
00001e17: PUSH1 0x20
00001e19: SWAP3
00001e1a: DUP4
00001e1b: ADD
00001e1c: SWAP3
00001e1d: SWAP1
00001e1e: SWAP2
00001e1f: ADD
00001e20: SWAP1
00001e21: PUSH1 0x01
00001e23: ADD
00001e24: PUSH2 0x1e09
00001e27: JUMP

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: 0xa4f272ccd75d5b75e08fd18cae7566a296880142a463f077abed9acb0d72f640
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0xa4f272ccd75d5b75e08fd18cae7566a296880142a463f077abed9acb0d72f640",
    "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": "0xe4b2fb79",
            "selector": "0xe4b2fb79",
            "calldata_variants": [
                "0xe4b2fb79",
                "0xe4b2fb790000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8eb3cc6",
            "selector": "0xe8eb3cc6",
            "calldata_variants": [
                "0xe8eb3cc6",
                "0xe8eb3cc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdab463d",
            "selector": "0xfdab463d",
            "calldata_variants": [
                "0xfdab463d",
                "0xfdab463d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xda662925",
            "selector": "0xda662925",
            "calldata_variants": [
                "0xda662925",
                "0xda6629250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe38df5f0",
            "selector": "0xe38df5f0",
            "calldata_variants": [
                "0xe38df5f0",
                "0xe38df5f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb85c5145",
            "selector": "0xb85c5145",
            "calldata_variants": [
                "0xb85c5145",
                "0xb85c51450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc2b40ae4",
            "selector": "0xc2b40ae4",
            "calldata_variants": [
                "0xc2b40ae4",
                "0xc2b40ae40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd87a3b4",
            "selector": "0xcd87a3b4",
            "calldata_variants": [
                "0xcd87a3b4",
                "0xcd87a3b40000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1716,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4995,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 1141,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1922,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3471,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "delegatecall_count": 2,
    "untrusted_delegatecall_count": 2
}
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
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xa7e4530607e249782cf9c861c14e925aac1e75eab77483c65a95b5339d8e0d02
call_targets: 0xb419c2867ab3cbc78921660cb95150d95a94ce86
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa7e4530607e249782cf9c861c14e925aac1e75eab77483c65a95b5339d8e0d02",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb419c2867ab3cbc78921660cb95150d95a94ce86"
    ],
    "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": "0xe4b2fb79",
            "selector": "0xe4b2fb79",
            "calldata_variants": [
                "0xe4b2fb79",
                "0xe4b2fb790000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8eb3cc6",
            "selector": "0xe8eb3cc6",
            "calldata_variants": [
                "0xe8eb3cc6",
                "0xe8eb3cc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdab463d",
            "selector": "0xfdab463d",
            "calldata_variants": [
                "0xfdab463d",
                "0xfdab463d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xda662925",
            "selector": "0xda662925",
            "calldata_variants": [
                "0xda662925",
                "0xda6629250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe38df5f0",
            "selector": "0xe38df5f0",
            "calldata_variants": [
                "0xe38df5f0",
                "0xe38df5f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb85c5145",
            "selector": "0xb85c5145",
            "calldata_variants": [
                "0xb85c5145",
                "0xb85c51450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc2b40ae4",
            "selector": "0xc2b40ae4",
            "calldata_variants": [
                "0xc2b40ae4",
                "0xc2b40ae40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd87a3b4",
            "selector": "0xcd87a3b4",
            "calldata_variants": [
                "0xcd87a3b4",
                "0xcd87a3b40000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2666,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3174,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5363,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "constant_zero",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [
        {
            "pc": 1141,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1922,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3471,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 3
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xa7e4530607e249782cf9c861c14e925aac1e75eab77483c65a95b5339d8e0d02
call_targets: 0xb419c2867ab3cbc78921660cb95150d95a94ce86
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa7e4530607e249782cf9c861c14e925aac1e75eab77483c65a95b5339d8e0d02",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb419c2867ab3cbc78921660cb95150d95a94ce86"
    ],
    "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": "0xe4b2fb79",
            "selector": "0xe4b2fb79",
            "calldata_variants": [
                "0xe4b2fb79",
                "0xe4b2fb790000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8eb3cc6",
            "selector": "0xe8eb3cc6",
            "calldata_variants": [
                "0xe8eb3cc6",
                "0xe8eb3cc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdab463d",
            "selector": "0xfdab463d",
            "calldata_variants": [
                "0xfdab463d",
                "0xfdab463d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xda662925",
            "selector": "0xda662925",
            "calldata_variants": [
                "0xda662925",
                "0xda6629250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe38df5f0",
            "selector": "0xe38df5f0",
            "calldata_variants": [
                "0xe38df5f0",
                "0xe38df5f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb85c5145",
            "selector": "0xb85c5145",
            "calldata_variants": [
                "0xb85c5145",
                "0xb85c51450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc2b40ae4",
            "selector": "0xc2b40ae4",
            "calldata_variants": [
                "0xc2b40ae4",
                "0xc2b40ae40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd87a3b4",
            "selector": "0xcd87a3b4",
            "calldata_variants": [
                "0xcd87a3b4",
                "0xcd87a3b40000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2666,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3174,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 1141,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1922,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3471,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
low other codex Fee-on-transfer/rebasing ERC20s can break pool accounting 65 no
view
evidence_json
{
    "evidence": "Deposit commitments are based on `_value`, and `_pull` transfers that nominal amount without verifying the actual tokens received.",
    "locations": [
        "contracts/src/contracts/PrivacyPool.sol:82",
        "contracts/src/contracts/PrivacyPool.sol:97",
        "contracts/src/contracts/PrivacyPool.sol:103",
        "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:50",
        "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:55",
        "contracts/src/contracts/implementations/PrivacyPoolComplex.sol:64"
    ],
    "recommendation": "Explicitly forbid fee-on-transfer/rebasing tokens at the registry layer, or measure actual received amounts (balance-before/after) in `_pull` and use that value for commitment generation and withdrawal accounting.",
    "exploit_scenario": "If a pool is registered for a deflationary or fee-on-transfer token, deposits record the requested `_value` while the pool receives less. An attacker can deposit such a token and later withdraw the full recorded amount, shifting the transfer fee deficit onto other depositors or causing withdrawals to fail once the pool balance is insufficient."
}