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

Analysis Run

845cb09f-5c1f-4394-8c8b-28bd2c6cb69a

failed
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 1:05 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
Public initializers enable proxy takeover if not called atomically
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30640 report.consolidate complete 1 / 1 3 months ago
74836 artifact.fetch failed 1 / 3 1 week ago
74837 tool.cast_disasm complete 1 / 3 1 week ago
74838 analysis.bundle complete 1 / 3 1 week ago
74839 capability.graph complete 1 / 3 1 week ago
74840 detector.run complete 1 / 3 1 week ago
74841 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
4
No findings?
no
Summary
Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.
View stderr
[codex:1458835] OpenAI Codex v0.77.0 (research preview)
[codex:1458835] --------
[codex:1458835] workdir: /tmp/codex-multi-_f45fyky
[codex:1458835] model: gpt-5.2-codex
[codex:1458835] provider: openai
[codex:1458835] approval: never
[codex:1458835] sandbox: read-only
[codex:1458835] reasoning effort: xhigh
[codex:1458835] reasoning summaries: auto
[codex:1458835] session id: 019b6cc3-e5d2-7f62-8bc5-20aabf5a246a
[codex:1458835] --------
[codex:1458835] user
[codex:1458835] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1458835] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1458835] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1458835] 
[codex:1458835] Scope rules:
[codex:1458835] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1458835] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1458835] 
[codex:1458835] Output MUST be valid JSON matching the provided schema.
[codex:1458835] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1458835] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1458835] 
[codex:1458835] Output constraints (IMPORTANT):
[codex:1458835] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1458835] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1458835] mcp startup: no servers
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Preparing to audit skills**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc ls in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835] AUDIT_BUNDLE.txt
[codex:1458835] codex-output-schema.json
[codex:1458835] contracts
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "" AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 1:This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1458835] 2:
[codex:1458835] 3:================================================================================
[codex:1458835] 4:FILE: contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol
[codex:1458835] 5:================================================================================
[codex:1458835] 6:// SPDX-License-Identifier: MIT
[codex:1458835] 7:// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1458835] 8:
[codex:1458835] 9:pragma solidity ^0.8.20;
[codex:1458835] 10:
[codex:1458835] 11:import {Context} from "../utils/Context.sol";
[codex:1458835] 12:
[codex:1458835] 13:/**
[codex:1458835] 14: * @dev Contract module which provides a basic access control mechanism, where
[codex:1458835] 15: * there is an account (an owner) that can be granted exclusive access to
[codex:1458835] 16: * specific functions.
[codex:1458835] 17: *
[codex:1458835] 18: * The initial owner is set to the address provided by the deployer. This can
[codex:1458835] 19: * later be changed with {transferOwnership}.
[codex:1458835] 20: *
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Identifying first-party contract files**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "FILE: contracts/src" AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 2742:FILE: contracts/src/KRWT.sol
[codex:1458835] 2905:FILE: contracts/src/KRWTCustodian.sol
[codex:1458835] 3492:FILE: contracts/src/KRWTCustodianWithOracle.sol
[codex:1458835] 3757:FILE: contracts/src/interfaces/AggregatorV3Interface.sol
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Preparing to read key Solidity files**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '2742,3491p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] FILE: contracts/src/KRWT.sol
[codex:1458835] ================================================================================
[codex:1458835] // SPDX-License-Identifier: MIT
[codex:1458835] // @version 0.2.8
[codex:1458835] pragma solidity ^0.8.24;
[codex:1458835] 
[codex:1458835] /*
[codex:1458835] +--------------------------------------------------------------+
[codex:1458835] |             $*                         *8*                   |
[codex:1458835] |            88   $*                      "*8"  .              |
[codex:1458835] |           88   88   $*               *8*     8 *,            |
[codex:1458835] |          88   88   88                 "*8 *   "*8*           |
[codex:1458835] |         88   88   88              *8 *   "*8 * ,             |
[codex:1458835] |        *$   88   88                " *8" .  "*8*             |
[codex:1458835] |            *$   88        .-888-.        8 * ,               |
[codex:1458835] |                *$       .888red888.       "*8*               |
[codex:1458835] |                        ,888888.*;;*.                         |
[codex:1458835] |                        888888*;;;;;`                         |
[codex:1458835] |                        888888*;;;;;j                         |
[codex:1458835] |                        `*00*";;;;;.'                         |
[codex:1458835] 
[codex:1458835] 
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Reviewing contract security and logic**
[codex:1458835] 
[codex:1458835] I'm carefully auditing the KRWT token and custodian contracts for common vulnerabilities like improper initialization, access control flaws, oracle manipulation, reentrancy, and accounting inconsistencies. I notice some upgradeable proxy patterns lack initializer guards, allowing potential takeover if uninitialized. There's a bug allowing mint/redeem fees to be set incorrectly, risking denial-of-service by owner misconfiguration. The signature validation with ERC20Permit may malfunction due to immutable EIP712 domains not updated in proxies. Oracle usage seems mostly safe but calls external oracles before reentrancy guards, which could raise theoretical issues. Overall, I'm weighing functional risks versus exploitable vulnerabilities while keeping focus on deployment patterns and trust assumptions.
[codex:1458835] thinking
[codex:1458835] **Examining token burn effects and ownership reinitialization risks**
[codex:1458835] 
[codex:1458835] I’m analyzing how ERC20Burnable’s direct burns impact krwtMinted tracking, which can cause mint cap to be inaccurately high but not pose theft risk. A notable flaw is that if ownership is renounced in KRWT, anyone can call initialize again to reclaim ownership and add minters, leading to a serious access control problem. I also explore how constructor-based immutables conflict with proxy upgradeability expectations, causing potential domain separation and initialization mismatches. The oracle integration and fee-setting logic show minor issues or misconfigurations but mostly under owner control. Overall, the interplay of ownership renouncing and initializer design stands out as a critical concern.
[codex:1458835] thinking
[codex:1458835] **Analyzing oracle timing, minting logic, and initializer vulnerabilities**
[codex:1458835] 
[codex:1458835] I'm reviewing oracle price caching and find that using block number to track updates avoids intra-block manipulation risks. However, the KRWT token’s initialize function allows reinitialization if ownership is renounced, which lets anyone retake ownership and add minters—a critical access control flaw. The presence of multiple minters poses a design risk where unauthorized minting can lead to asset draining from the custodian. Also, the EIP-712 domain mismatch due to immutable constructor-set names may cause signature validation issues, mostly causing functional problems rather than security breaches. There’s a subtle owner-controlled fee-setting bug that can cause deposit operations to fail. Overall, proxy use combined with constructor immutables and public initializers introduces several important upgradeability and access control concerns.
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWT.sol' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835]      1	// SPDX-License-Identifier: MIT
[codex:1458835]      2	// @version 0.2.8
[codex:1458835]      3	pragma solidity ^0.8.24;
[codex:1458835]      4	
[codex:1458835]      5	/*
[codex:1458835]      6	+--------------------------------------------------------------+
[codex:1458835]      7	|             $*                         *8*                   |
[codex:1458835]      8	|            88   $*                      "*8"  .              |
[codex:1458835]      9	|           88   88   $*               *8*     8 *,            |
[codex:1458835]     10	|          88   88   88                 "*8 *   "*8*           |
[codex:1458835]     11	|         88   88   88              *8 *   "*8 * ,             |
[codex:1458835]     12	|        *$   88   88                " *8" .  "*8*             |
[codex:1458835]     13	|            *$   88        .-888-.        8 * ,               |
[codex:1458835]     14	|                *$       .888red888.       "*8*               |
[codex:1458835]     15	|                        ,888888.*;;*.                         |
[codex:1458835]     16	|                        888888*;;;;;`                         |
[codex:1458835]     17	|                        888888*;;;;;j                         |
[codex:1458835]     18	|                        `*00*";;;;;.'                         |
[codex:1458835]     19	|               *8*       `;;;blue;;'        $*                |
[codex:1458835]     20	|                "*8 *      `-;;;-'         88   $*            |
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Adding line numbers to KRWTCustodian**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWTCustodian.sol' in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835]      1	// SPDX-License-Identifier: MIT
[codex:1458835]      2	// @version 0.2.8
[codex:1458835]      3	pragma solidity ^0.8.24;
[codex:1458835]      4	
[codex:1458835]      5	/*
[codex:1458835]      6	+--------------------------------------------------------------+
[codex:1458835]      7	|             $*                         *8*                   |
[codex:1458835]      8	|            88   $*                      "*8"  .              |
[codex:1458835]      9	|           88   88   $*               *8*     8 *,            |
[codex:1458835]     10	|          88   88   88                 "*8 *   "*8*           |
[codex:1458835]     11	|         88   88   88              *8 *   "*8 * ,             |
[codex:1458835]     12	|        *$   88   88                " *8" .  "*8*             |
[codex:1458835]     13	|            *$   88        .-888-.        8 * ,               |
[codex:1458835]     14	|                *$       .888red888.       "*8*               |
[codex:1458835]     15	|                        ,888888.*;;*.                         |
[codex:1458835]     16	|                        888888*;;;;;`                         |
[codex:1458835]     17	|                        888888*;;;;;j                         |
[codex:1458835]     18	|                        `*00*";;;;;.'                         |
[codex:1458835]     19	|               *8*       `;;;blue;;'        $*                |
[codex:1458835]     20	|                "*8 *      `-;;;-'         88   $*            |
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Locating KRWTCustodianWithOracle lines**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWTCustodianWithOracle.sol' in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835]      1	// SPDX-License-Identifier: MIT
[codex:1458835]      2	// @version 0.2.8
[codex:1458835]      3	pragma solidity ^0.8.24;
[codex:1458835]      4	
[codex:1458835]      5	/*
[codex:1458835]      6	+--------------------------------------------------------------+
[codex:1458835]      7	|             $*                         *8*                   |
[codex:1458835]      8	|            88   $*                      "*8"  .              |
[codex:1458835]      9	|           88   88   $*               *8*     8 *,            |
[codex:1458835]     10	|          88   88   88                 "*8 *   "*8*           |
[codex:1458835]     11	|         88   88   88              *8 *   "*8 * ,             |
[codex:1458835]     12	|        *$   88   88                " *8" .  "*8*             |
[codex:1458835]     13	|            *$   88        .-888-.        8 * ,               |
[codex:1458835]     14	|                *$       .888red888.       "*8*               |
[codex:1458835]     15	|                        ,888888.*;;*.                         |
[codex:1458835]     16	|                        888888*;;;;;`                         |
[codex:1458835]     17	|                        888888*;;;;;j                         |
[codex:1458835]     18	|                        `*00*";;;;;.'                         |
[codex:1458835]     19	|               *8*       `;;;blue;;'        $*                |
[codex:1458835]     20	|                "*8 *      `-;;;-'         88   $*            |
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Summarizing detailed vulnerability analysis**
[codex:1458835] 
[codex:1458835] I'm carefully reviewing potential issues like unprotected initializers leading to proxy takeovers, the risk after ownership renounce allowing reinitialization and takeover, a bug in fee validation that can cause transaction reverts, signature domain mismatches affecting permits, and oracle manipulation risks. I'll weigh each finding's impact and categorize severity to produce clear, evidence-backed audit points.
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "contract ERC20Permit" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 835:abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '760,900p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835]      * allowance mechanism. `value` is then deducted from the caller's
[codex:1458835]      * allowance.
[codex:1458835]      *
[codex:1458835]      * Returns a boolean value indicating whether the operation succeeded.
[codex:1458835]      *
[codex:1458835]      * Emits a {Transfer} event.
[codex:1458835]      */
[codex:1458835]     function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:1458835] }
[codex:1458835] 
[codex:1458835] ================================================================================
[codex:1458835] FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol
[codex:1458835] ================================================================================
[codex:1458835] // SPDX-License-Identifier: MIT
[codex:1458835] // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)
[codex:1458835] 
[codex:1458835] pragma solidity ^0.8.20;
[codex:1458835] 
[codex:1458835] import {ERC20} from "../ERC20.sol";
[codex:1458835] import {Context} from "../../../utils/Context.sol";
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Checking EIP712 implementation in OZ v5**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "contract EIP712" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] 2057:abstract contract EIP712 is IERC5267 {
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '2050,2140p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835]  *
[codex:1458835]  * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain
[codex:1458835]  * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the
[codex:1458835]  * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.
[codex:1458835]  *
[codex:1458835]  * @custom:oz-upgrades-unsafe-allow state-variable-immutable
[codex:1458835]  */
[codex:1458835] abstract contract EIP712 is IERC5267 {
[codex:1458835]     using ShortStrings for *;
[codex:1458835] 
[codex:1458835]     bytes32 private constant TYPE_HASH =
[codex:1458835]         keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");
[codex:1458835] 
[codex:1458835]     // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
[codex:1458835]     // invalidate the cached domain separator if the chain id changes.
[codex:1458835]     bytes32 private immutable _cachedDomainSeparator;
[codex:1458835]     uint256 private immutable _cachedChainId;
[codex:1458835]     address private immutable _cachedThis;
[codex:1458835] 
[codex:1458835]     bytes32 private immutable _hashedName;
[codex:1458835] 
[codex:1458835] 
[codex:1458835] thinking
[codex:1458835] **Summarizing Solidity audit findings**
[codex:1458835] thinking
[codex:1458835] **Compiling audit findings into JSON**
[codex:1458835] 
[codex:1458835] I’m assembling a detailed JSON summary with four findings covering initialization risks, fee validation bugs, and EIP712 domain mismatch issues, including descriptions, exploit scenarios, recommendations, evidence, and precise code locations.
[codex:1458835] codex
[codex:1458835] {"no_findings":false,"summary":"Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.","findings":[{"severity":"high","category":"upgradeability","title":"Public initializers enable proxy takeover if not called atomically","exploit_scenario":"A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees.","recommendation":"Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).","evidence":"`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWTCustodian.sol:96","contracts/src/KRWTCustodianWithOracle.sol:90"]},{"severity":"medium","category":"access_control","title":"KRWT ownership can be reclaimed after renounce via initialize","exploit_scenario":"If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT.","recommendation":"Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.","evidence":"`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:64"]},{"severity":"low","category":"math","title":"Fee validation uses OR, allowing invalid fees that break mint/withdraw math","exploit_scenario":"Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice‑versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS).","recommendation":"Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.","evidence":"`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.","locations":["contracts/src/KRWTCustodian.sol:494"]},{"severity":"info","category":"auth","title":"Proxy initializer updates name/symbol without updating EIP-712 domain","exploit_scenario":"When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`’s EIP‑712 domain is fixed in the implementation constructor. Off‑chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals.","recommendation":"Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.","evidence":"`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:65"]}]}
[codex:1458835] tokens used
[codex:1458835] 62,368
[codex:1458835] {"no_findings":false,"summary":"Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.","findings":[{"severity":"high","category":"upgradeability","title":"Public initializers enable proxy takeover if not called atomically","exploit_scenario":"A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees.","recommendation":"Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).","evidence":"`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWTCustodian.sol:96","contracts/src/KRWTCustodianWithOracle.sol:90"]},{"severity":"medium","category":"access_control","title":"KRWT ownership can be reclaimed after renounce via initialize","exploit_scenario":"If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT.","recommendation":"Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.","evidence":"`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:64"]},{"severity":"low","category":"math","title":"Fee validation uses OR, allowing invalid fees that break mint/withdraw math","exploit_scenario":"Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice‑versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS).","recommendation":"Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.","evidence":"`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.","locations":["contracts/src/KRWTCustodian.sol:494"]},{"severity":"info","category":"auth","title":"Proxy initializer updates name/symbol without updating EIP-712 domain","exploit_scenario":"When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`’s EIP‑712 domain is fixed in the implementation constructor. Off‑chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals.","recommendation":"Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.","evidence":"`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:65"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T01:04:59.854450+00:00",
        "returncode": 0
    },
    "summary": "Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.",
    "raw_final": {
        "summary": "Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.",
        "findings": [
            {
                "title": "Public initializers enable proxy takeover if not called atomically",
                "category": "upgradeability",
                "evidence": "`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.",
                "severity": "high",
                "locations": [
                    "contracts/src/KRWT.sol:62",
                    "contracts/src/KRWTCustodian.sol:96",
                    "contracts/src/KRWTCustodianWithOracle.sol:90"
                ],
                "recommendation": "Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).",
                "exploit_scenario": "A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees."
            },
            {
                "title": "KRWT ownership can be reclaimed after renounce via initialize",
                "category": "access_control",
                "evidence": "`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.",
                "severity": "medium",
                "locations": [
                    "contracts/src/KRWT.sol:62",
                    "contracts/src/KRWT.sol:64"
                ],
                "recommendation": "Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.",
                "exploit_scenario": "If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT."
            },
            {
                "title": "Fee validation uses OR, allowing invalid fees that break mint/withdraw math",
                "category": "math",
                "evidence": "`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.",
                "severity": "low",
                "locations": [
                    "contracts/src/KRWTCustodian.sol:494"
                ],
                "recommendation": "Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.",
                "exploit_scenario": "Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice\u2011versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS)."
            },
            {
                "title": "Proxy initializer updates name/symbol without updating EIP-712 domain",
                "category": "auth",
                "evidence": "`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.",
                "severity": "info",
                "locations": [
                    "contracts/src/KRWT.sol:62",
                    "contracts/src/KRWT.sol:65"
                ],
                "recommendation": "Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.",
                "exploit_scenario": "When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`\u2019s EIP\u2011712 domain is fixed in the implementation constructor. Off\u2011chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
17
EXT*/BALANCE
6
Total opcodes
5420
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: SWAP1
00000005: DUP1
00000006: DUP3
00000007: MSTORE
00000008: PUSH1 0x04
0000000a: DUP1
0000000b: CALLDATASIZE
0000000c: LT
0000000d: ISZERO
0000000e: PUSH2 0x0015
00000011: JUMPI
00000012: PUSH0
00000013: DUP1
00000014: REVERT
00000015: JUMPDEST
00000016: PUSH0
00000017: SWAP3
00000018: PUSH0
00000019: CALLDATALOAD
0000001a: PUSH1 0xe0
0000001c: SHR
0000001d: SWAP3
0000001e: DUP4
0000001f: PUSH4 0x01e1d114
00000024: EQ
00000025: PUSH2 0x17ca
00000028: JUMPI
00000029: POP
0000002a: DUP3
0000002b: PUSH4 0x07a2d13a
00000030: EQ
00000031: PUSH2 0x175e
00000034: JUMPI
00000035: DUP3
00000036: PUSH4 0x0a28a477
0000003b: EQ
0000003c: PUSH2 0x1741
0000003f: JUMPI
00000040: DUP3
00000041: PUSH4 0x0c424284
00000046: EQ
00000047: PUSH2 0x16c5
0000004a: JUMPI
0000004b: DUP3
0000004c: PUSH4 0x13966db5
00000051: EQ
00000052: PUSH2 0x16aa
00000055: JUMPI
00000056: DUP3
00000057: PUSH4 0x18160ddd
0000005c: EQ
0000005d: PUSH2 0x1605
00000060: JUMPI
00000061: DUP3
00000062: PUSH4 0x1ee5e23a
00000067: EQ
00000068: PUSH2 0x15c3
0000006b: JUMPI
0000006c: DUP3
0000006d: PUSH4 0x38d52e0f
00000072: EQ
00000073: PUSH2 0x0a91
00000076: JUMPI
00000077: DUP3
00000078: PUSH4 0x402d267d
0000007d: EQ
0000007e: PUSH2 0x159e
00000081: JUMPI
00000082: DUP3
00000083: PUSH4 0x4070a0c9
00000088: EQ
00000089: PUSH2 0x1552
0000008c: JUMPI
0000008d: DUP3
0000008e: PUSH4 0x4cdad506
00000093: EQ
00000094: PUSH2 0x1535
00000097: JUMPI
00000098: DUP3
00000099: PUSH4 0x4ec81af1
0000009e: EQ
0000009f: PUSH2 0x1508
000000a2: JUMPI
000000a3: DUP3
000000a4: PUSH4 0x5bedcc65
000000a9: EQ
000000aa: PUSH2 0x14e6
000000ad: JUMPI
000000ae: DUP3
000000af: PUSH4 0x5cbcec4e
000000b4: EQ
000000b5: PUSH2 0x1485
000000b8: JUMPI
000000b9: DUP3
000000ba: PUSH4 0x681f3380
000000bf: EQ
000000c0: PUSH2 0x145e
000000c3: JUMPI
000000c4: DUP3
000000c5: PUSH4 0x6e553f65
000000ca: EQ
000000cb: PUSH2 0x1271
000000ce: JUMPI
000000cf: DUP3
000000d0: PUSH4 0x70a08231
000000d5: EQ
000000d6: PUSH2 0x11bd
000000d9: JUMPI
000000da: DUP3
000000db: PUSH4 0x715018a6
000000e0: EQ
000000e1: PUSH2 0x115a
000000e4: JUMPI
000000e5: DUP3
000000e6: PUSH4 0x72649cca
000000eb: EQ
000000ec: PUSH2 0x1106
000000ef: JUMPI
000000f0: DUP3
000000f1: PUSH4 0x74027fca
000000f6: EQ
000000f7: PUSH2 0x10e9
000000fa: JUMPI
000000fb: DUP3
000000fc: PUSH4 0x74304911
00000101: EQ
00000102: PUSH2 0x10ad
00000105: JUMPI
00000106: DUP3
00000107: PUSH4 0x76c71ca1
0000010c: EQ
0000010d: PUSH2 0x1090
00000110: JUMPI
00000111: DUP3
00000112: PUSH4 0x79ba5097
00000117: EQ
00000118: PUSH2 0x104a
0000011b: JUMPI
0000011c: DUP3
0000011d: PUSH4 0x86489ba9
00000122: EQ
00000123: PUSH2 0x0fa1
00000126: JUMPI
00000127: DUP3
00000128: PUSH4 0x8980f11f
0000012d: EQ
0000012e: PUSH2 0x0f18
00000131: JUMPI
00000132: DUP3
00000133: PUSH4 0x8b2ebdaa
00000138: EQ
00000139: PUSH2 0x0efd
0000013c: JUMPI
0000013d: DUP3
0000013e: PUSH4 0x8b8b6c16
00000143: EQ
00000144: PUSH2 0x0e63
00000147: JUMPI
00000148: DUP3
00000149: PUSH4 0x8da5cb5b
0000014e: EQ
0000014f: PUSH2 0x0e3d
00000152: JUMPI
00000153: DUP3
00000154: PUSH4 0x94bf804d
00000159: EQ
0000015a: PUSH2 0x0c08
0000015d: JUMPI
0000015e: DUP3
0000015f: PUSH4 0x965fa21e
00000164: EQ
00000165: PUSH2 0x0beb
00000168: JUMPI
00000169: DUP3
0000016a: PUSH4 0x968de9a2
0000016f: EQ
00000170: PUSH2 0x0baf
00000173: JUMPI
00000174: DUP3
00000175: PUSH4 0x99530b06
0000017a: EQ
0000017b: PUSH2 0x0b2b
0000017e: JUMPI
0000017f: DUP3
00000180: PUSH4 0x9ae8528e
00000185: EQ
00000186: PUSH2 0x0b0e
00000189: JUMPI
0000018a: DUP3
0000018b: PUSH4 0x9b19251a
00000190: EQ
00000191: PUSH2 0x0ad3
00000194: JUMPI
00000195: DUP3
00000196: PUSH4 0x9de54cd3
0000019b: EQ
0000019c: PUSH2 0x0a91
0000019f: JUMPI
000001a0: DUP3
000001a1: PUSH4 0xb335fda3
000001a6: EQ
000001a7: PUSH2 0x09e4
000001aa: JUMPI
000001ab: DUP3
000001ac: PUSH4 0xb3d7f6b9
000001b1: EQ
000001b2: PUSH2 0x09c7
000001b5: JUMPI
000001b6: DUP3
000001b7: PUSH4 0xb460af94
000001bc: EQ
000001bd: PUSH2 0x07d7
000001c0: JUMPI
000001c1: DUP3
000001c2: PUSH4 0xb609d0e6
000001c7: EQ
000001c8: PUSH2 0x07b8
000001cb: JUMPI
000001cc: DUP3
000001cd: PUSH4 0xba087652
000001d2: EQ
000001d3: PUSH2 0x05c5
000001d6: JUMPI
000001d7: DUP3
000001d8: PUSH4 0xc63d75b6
000001dd: EQ
000001de: PUSH2 0x059e
000001e1: JUMPI
000001e2: DUP3
000001e3: PUSH4 0xc6e6f592
000001e8: EQ
000001e9: PUSH2 0x0510
000001ec: JUMPI
000001ed: DUP3
000001ee: PUSH4 0xce96cb77
000001f3: EQ
000001f4: PUSH2 0x04ea
000001f7: JUMPI
000001f8: DUP3
000001f9: PUSH4 0xcede91a4
000001fe: EQ
000001ff: PUSH2 0x04cb
00000202: JUMPI
00000203: DUP3
00000204: PUSH4 0xd905777e
00000209: EQ
0000020a: PUSH2 0x04a5
0000020d: JUMPI
0000020e: DUP3
0000020f: PUSH4 0xd9afa60c
00000214: EQ
00000215: PUSH2 0x0359
00000218: JUMPI
00000219: DUP3
0000021a: PUSH4 0xdc9a1535
0000021f: EQ
00000220: PUSH2 0x0335
00000223: JUMPI
00000224: DUP3
00000225: PUSH4 0xe30c3978
0000022a: EQ
0000022b: PUSH2 0x030c
0000022e: JUMPI
0000022f: DUP3
00000230: PUSH4 0xe68b52e7
00000235: EQ
00000236: PUSH2 0x02e9
00000239: JUMPI
0000023a: DUP3
0000023b: PUSH4 0xef8b30f7
00000240: EQ
00000241: PUSH2 0x02c3
00000244: JUMPI
00000245: POP
00000246: POP
00000247: PUSH4 0xf2fde38b
0000024c: EQ
0000024d: PUSH2 0x0254
00000250: JUMPI
00000251: PUSH0
00000252: DUP1
00000253: REVERT
00000254: JUMPDEST
00000255: CALLVALUE
00000256: PUSH2 0x02c0
00000259: JUMPI
0000025a: PUSH1 0x20
0000025c: CALLDATASIZE
0000025d: PUSH1 0x03
0000025f: NOT
00000260: ADD
00000261: SLT
00000262: PUSH2 0x02c0
00000265: JUMPI
00000266: PUSH2 0x026d
00000269: PUSH2 0x1833
0000026c: JUMP
0000026d: JUMPDEST
0000026e: PUSH2 0x0275
00000271: PUSH2 0x1fab
00000274: JUMP
00000275: JUMPDEST
00000276: PUSH1 0x01
00000278: DUP1
00000279: SLOAD
0000027a: PUSH1 0x01
0000027c: PUSH1 0x01
0000027e: PUSH1 0xa0
00000280: SHL
00000281: SUB
00000282: NOT
00000283: AND
00000284: PUSH1 0x01
00000286: PUSH1 0x01
00000288: PUSH1 0xa0
0000028a: SHL
0000028b: SUB
0000028c: SWAP3
0000028d: DUP4
0000028e: AND
0000028f: SWAP1
00000290: DUP2
00000291: OR
00000292: SWAP1
00000293: SWAP2
00000294: SSTORE
00000295: DUP3
00000296: SLOAD
00000297: SWAP1
00000298: SWAP2
00000299: AND
0000029a: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
000002bb: DUP4
000002bc: DUP1
000002bd: LOG3
000002be: DUP1
000002bf: RETURN
000002c0: JUMPDEST
000002c1: DUP1
000002c2: REVERT
000002c3: JUMPDEST
000002c4: DUP4
000002c5: CALLVALUE
000002c6: PUSH2 0x02c0
000002c9: JUMPI
000002ca: PUSH1 0x20
000002cc: CALLDATASIZE
000002cd: PUSH1 0x03
000002cf: NOT
000002d0: ADD
000002d1: SLT
000002d2: PUSH2 0x02c0
000002d5: JUMPI
000002d6: POP
000002d7: PUSH2 0x02e2
000002da: PUSH1 0x20
000002dc: SWAP3
000002dd: CALLDATALOAD
000002de: PUSH2 0x1ea1
000002e1: JUMP
000002e2: JUMPDEST
000002e3: SWAP1
000002e4: MLOAD
000002e5: SWAP1
000002e6: DUP2
000002e7: MSTORE
000002e8: RETURN
000002e9: JUMPDEST
000002ea: DUP4
000002eb: SWAP1
000002ec: CALLVALUE
000002ed: PUSH2 0x0308
000002f0: JUMPI
000002f1: DUP2
000002f2: PUSH1 0x03
000002f4: NOT
000002f5: CALLDATASIZE
000002f6: ADD
000002f7: SLT
000002f8: PUSH2 0x0308
000002fb: JUMPI
000002fc: PUSH1 0x20
000002fe: SWAP1
000002ff: PUSH1 0x09
00000301: SLOAD
00000302: SWAP1
00000303: MLOAD
00000304: SWAP1
00000305: DUP2
00000306: MSTORE
00000307: RETURN
00000308: JUMPDEST
00000309: POP
0000030a: DUP1
0000030b: REVERT
0000030c: JUMPDEST
0000030d: DUP4
0000030e: SWAP1
0000030f: CALLVALUE
00000310: PUSH2 0x0308
00000313: JUMPI
00000314: DUP2
00000315: PUSH1 0x03
00000317: NOT
00000318: CALLDATASIZE
00000319: ADD
0000031a: SLT
0000031b: PUSH2 0x0308
0000031e: JUMPI
0000031f: PUSH1 0x01
00000321: SLOAD
00000322: SWAP1
00000323: MLOAD
00000324: PUSH1 0x01
00000326: PUSH1 0x01
00000328: PUSH1 0xa0
0000032a: SHL
0000032b: SUB
0000032c: SWAP1
0000032d: SWAP2
0000032e: AND
0000032f: DUP2
00000330: MSTORE
00000331: PUSH1 0x20
00000333: SWAP1
00000334: RETURN
00000335: JUMPDEST
00000336: DUP4
00000337: SWAP1
00000338: CALLVALUE
00000339: PUSH2 0x0308
0000033c: JUMPI
0000033d: DUP2
0000033e: PUSH1 0x03
00000340: NOT
00000341: CALLDATASIZE
00000342: ADD
00000343: SLT
00000344: PUSH2 0x0308
00000347: JUMPI
00000348: PUSH1 0x20
0000034a: SWAP1
0000034b: PUSH1 0xff
0000034d: PUSH1 0x0e
0000034f: SLOAD
00000350: AND
00000351: SWAP1
00000352: MLOAD
00000353: SWAP1
00000354: ISZERO
00000355: ISZERO
00000356: DUP2
00000357: MSTORE
00000358: RETURN
00000359: JUMPDEST
0000035a: SWAP2
0000035b: POP
0000035c: CALLVALUE
0000035d: PUSH2 0x04a1
00000360: JUMPI
00000361: DUP3
00000362: PUSH1 0x03
00000364: NOT
00000365: CALLDATASIZE
00000366: ADD
00000367: SLT
00000368: PUSH2 0x04a1
0000036b: JUMPI
0000036c: PUSH2 0x0373
0000036f: PUSH2 0x1c4e
00000372: JUMP
00000373: JUMPDEST
00000374: PUSH2 0x037c
00000377: DUP2
00000378: PUSH2 0x1bb9
0000037b: JUMP
0000037c: JUMPDEST
0000037d: DUP4
0000037e: MLOAD
0000037f: PUSH4 0x70a08231
00000384: PUSH1 0xe0
00000386: SHL
00000387: DUP1
00000388: DUP3
00000389: MSTORE
0000038a: ADDRESS
0000038b: DUP6
0000038c: DUP4
0000038d: ADD
0000038e: MSTORE
0000038f: SWAP2
00000390: SWAP5
00000391: PUSH1 0x20
00000393: SWAP5
00000394: SWAP2
00000395: SWAP4
00000396: SWAP1
00000397: SWAP3
00000398: SWAP1
00000399: SWAP2
0000039a: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000003bb: PUSH1 0x01
000003bd: PUSH1 0x01
000003bf: PUSH1 0xa0
000003c1: SHL
000003c2: SUB
000003c3: AND
000003c4: SWAP2
000003c5: DUP7
000003c6: DUP7
000003c7: PUSH1 0x24
000003c9: DUP2
000003ca: DUP7
000003cb: GAS
000003cc: STATICCALL
000003cd: SWAP6
000003ce: DUP7
000003cf: ISZERO
000003d0: PUSH2 0x0497
000003d3: JUMPI
000003d4: SWAP1
000003d5: DUP8
000003d6: SWAP3
000003d7: SWAP2
000003d8: DUP11
000003d9: SWAP8
000003da: PUSH2 0x0460
000003dd: JUMPI
000003de: JUMPDEST
000003df: POP
000003e0: PUSH1 0x24
000003e2: SWAP1
000003e3: DUP7
000003e4: MLOAD
000003e5: SWAP5
000003e6: DUP6
000003e7: SWAP4
000003e8: DUP5
000003e9: SWAP3
000003ea: DUP4
000003eb: MSTORE
000003ec: ADDRESS
000003ed: SWAP1
000003ee: DUP4
000003ef: ADD
000003f0: MSTORE
000003f1: GAS
000003f2: STATICCALL
000003f3: SWAP7
000003f4: DUP8
000003f5: ISZERO
000003f6: PUSH2 0x0455
000003f9: JUMPI
000003fa: DUP1
000003fb: SWAP8
000003fc: PUSH2 0x0420
000003ff: JUMPI
00000400: JUMPDEST
00000401: POP
00000402: POP
00000403: PUSH2 0x040d
00000406: PUSH1 0x80
00000408: SWAP7
00000409: PUSH2 0x191b
0000040c: JUMP
0000040d: JUMPDEST
0000040e: SWAP4
0000040f: DUP3
00000410: MLOAD
00000411: SWAP6
00000412: DUP7
00000413: MSTORE
00000414: DUP6
00000415: ADD
00000416: MSTORE
00000417: DUP4
00000418: ADD
00000419: MSTORE
0000041a: PUSH1 0x60
0000041c: DUP3
0000041d: ADD
0000041e: MSTORE
0000041f: RETURN
00000420: JUMPDEST
00000421: SWAP1
00000422: SWAP7
00000423: POP
00000424: DUP5
00000425: DUP8
00000426: DUP2
00000427: RETURNDATASIZE
00000428: DUP4
00000429: GT
0000042a: PUSH2 0x044e
0000042d: JUMPI
0000042e: JUMPDEST
0000042f: PUSH2 0x0438
00000432: DUP2
00000433: DUP4
00000434: PUSH2 0x18d8
00000437: JUMP
00000438: JUMPDEST
00000439: DUP2
0000043a: ADD
0000043b: SUB
0000043c: SLT
0000043d: PUSH2 0x02c0
00000440: JUMPI
00000441: POP
00000442: PUSH2 0x040d
00000445: PUSH1 0x80
00000447: SWAP7
00000448: MLOAD
00000449: SWAP7
0000044a: PUSH2 0x0400
0000044d: JUMP
0000044e: JUMPDEST
0000044f: POP
00000450: RETURNDATASIZE
00000451: PUSH2 0x042e
00000454: JUMP
00000455: JUMPDEST
00000456: DUP4
00000457: MLOAD
00000458: SWAP1
00000459: RETURNDATASIZE
0000045a: SWAP1
0000045b: DUP3
0000045c: RETURNDATACOPY
0000045d: RETURNDATASIZE
0000045e: SWAP1
0000045f: REVERT
00000460: JUMPDEST
00000461: DUP4
00000462: DUP2
00000463: SWAP5
00000464: SWAP3
00000465: SWAP9
00000466: POP
00000467: RETURNDATASIZE
00000468: DUP4
00000469: GT
0000046a: PUSH2 0x0490
0000046d: JUMPI
0000046e: JUMPDEST
0000046f: PUSH2 0x0478
00000472: DUP2
00000473: DUP4
00000474: PUSH2 0x18d8
00000477: JUMP
00000478: JUMPDEST
00000479: DUP2
0000047a: ADD
0000047b: SUB
0000047c: SLT
0000047d: PUSH2 0x048c
00000480: JUMPI
00000481: PUSH1 0x24
00000483: DUP8
00000484: SWAP3
00000485: MLOAD
00000486: SWAP7
00000487: SWAP1
00000488: PUSH2 0x03de
0000048b: JUMP
0000048c: JUMPDEST
0000048d: DUP9
0000048e: DUP1
0000048f: REVERT
00000490: JUMPDEST
00000491: POP
00000492: RETURNDATASIZE
00000493: PUSH2 0x046e
00000496: JUMP
00000497: JUMPDEST
00000498: DUP6
00000499: MLOAD
0000049a: RETURNDATASIZE
0000049b: DUP12
0000049c: DUP3
0000049d: RETURNDATACOPY
0000049e: RETURNDATASIZE
0000049f: SWAP1
000004a0: REVERT
000004a1: JUMPDEST
000004a2: DUP3
000004a3: DUP1
000004a4: REVERT
000004a5: JUMPDEST
000004a6: DUP4
000004a7: SWAP1
000004a8: CALLVALUE
000004a9: PUSH2 0x0308
000004ac: JUMPI
000004ad: PUSH1 0x20
000004af: CALLDATASIZE
000004b0: PUSH1 0x03
000004b2: NOT
000004b3: ADD
000004b4: SLT
000004b5: PUSH2 0x0308
000004b8: JUMPI
000004b9: PUSH1 0x20
000004bb: SWAP1
000004bc: PUSH2 0x02e2
000004bf: PUSH2 0x04c6
000004c2: PUSH2 0x1833
000004c5: JUMP
000004c6: JUMPDEST
000004c7: PUSH2 0x1d86
000004ca: JUMP
000004cb: JUMPDEST
000004cc: DUP4
000004cd: SWAP1
000004ce: CALLVALUE
000004cf: PUSH2 0x0308
000004d2: JUMPI
000004d3: DUP2
000004d4: PUSH1 0x03
000004d6: NOT
000004d7: CALLDATASIZE
000004d8: ADD
000004d9: SLT
000004da: PUSH2 0x0308
000004dd: JUMPI
000004de: PUSH1 0x20
000004e0: SWAP1
000004e1: PUSH1 0x0a
000004e3: SLOAD
000004e4: SWAP1
000004e5: MLOAD
000004e6: SWAP1
000004e7: DUP2
000004e8: MSTORE
000004e9: RETURN
000004ea: JUMPDEST
000004eb: DUP4
000004ec: SWAP1
000004ed: CALLVALUE
000004ee: PUSH2 0x0308
000004f1: JUMPI
000004f2: PUSH1 0x20
000004f4: CALLDATASIZE
000004f5: PUSH1 0x03
000004f7: NOT
000004f8: ADD
000004f9: SLT
000004fa: PUSH2 0x0308
000004fd: JUMPI
000004fe: PUSH1 0x20
00000500: SWAP1
00000501: PUSH2 0x02e2
00000504: PUSH2 0x050b
00000507: PUSH2 0x1833
0000050a: JUMP
0000050b: JUMPDEST
0000050c: PUSH2 0x1c6b
0000050f: JUMP
00000510: JUMPDEST
00000511: DUP4
00000512: CALLVALUE
00000513: PUSH2 0x02c0
00000516: JUMPI
00000517: PUSH1 0x20
00000519: CALLDATASIZE
0000051a: PUSH1 0x03
0000051c: NOT
0000051d: ADD
0000051e: SLT
0000051f: PUSH2 0x02c0
00000522: JUMPI
00000523: POP
00000524: PUSH2 0x02e2
00000527: PUSH2 0x0585
0000052a: PUSH1 0x20
0000052c: SWAP4
0000052d: PUSH2 0x0555
00000530: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00000551: PUSH2 0x206c
00000554: JUMP
00000555: JUMPDEST
00000556: PUSH2 0x057e
00000559: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
0000057a: PUSH2 0x206c
0000057d: JUMP
0000057e: JUMPDEST
0000057f: SWAP2
00000580: CALLDATALOAD
00000581: PUSH2 0x2208
00000584: JUMP
00000585: JUMPDEST
00000586: PUSH2 0x0590
00000589: PUSH1 0x09
0000058b: SLOAD
0000058c: PUSH2 0x1f2e
0000058f: JUMP
00000590: JUMPDEST
00000591: PUSH2 0x0598
00000594: PUSH2 0x1ada
00000597: JUMP
00000598: JUMPDEST
00000599: SWAP2
0000059a: PUSH2 0x2208
0000059d: JUMP
0000059e: JUMPDEST
0000059f: DUP4
000005a0: SWAP1
000005a1: CALLVALUE
000005a2: PUSH2 0x0308
000005a5: JUMPI
000005a6: PUSH1 0x20
000005a8: CALLDATASIZE
000005a9: PUSH1 0x03
000005ab: NOT
000005ac: ADD
000005ad: SLT
000005ae: PUSH2 0x0308
000005b1: JUMPI
000005b2: PUSH1 0x20
000005b4: SWAP1
000005b5: PUSH2 0x05bc
000005b8: PUSH2 0x1833
000005bb: JUMP
000005bc: JUMPDEST
000005bd: POP
000005be: PUSH2 0x02e2
000005c1: PUSH2 0x1c4e
000005c4: JUMP
000005c5: JUMPDEST
000005c6: SWAP1
000005c7: SWAP2
000005c8: POP
000005c9: CALLVALUE
000005ca: PUSH2 0x04a1
000005cd: JUMPI
000005ce: PUSH2 0x05d6
000005d1: CALLDATASIZE
000005d2: PUSH2 0x185f
000005d5: JUMP
000005d6: JUMPDEST
000005d7: SWAP2
000005d8: SWAP1
000005d9: PUSH2 0x05e0
000005dc: PUSH2 0x1ada
000005df: JUMP
000005e0: JUMPDEST
000005e1: PUSH1 0x0c
000005e3: SSTORE
000005e4: NUMBER
000005e5: PUSH1 0x0b
000005e7: SSTORE
000005e8: PUSH1 0xff
000005ea: PUSH1 0x0e
000005ec: SLOAD
000005ed: AND
000005ee: ISZERO
000005ef: DUP1
000005f0: PUSH2 0x07a2
000005f3: JUMPI
000005f4: JUMPDEST
000005f5: PUSH2 0x078c
000005f8: JUMPI
000005f9: PUSH1 0x01
000005fb: PUSH1 0x01
000005fd: PUSH1 0xa0
000005ff: SHL
00000600: SUB
00000601: DUP4
00000602: DUP2
00000603: AND
00000604: SWAP4
00000605: SWAP1
00000606: SWAP2
00000607: SWAP1
00000608: CALLER
00000609: DUP6
0000060a: SUB
0000060b: PUSH2 0x077c
0000060e: JUMPI
0000060f: PUSH2 0x0617
00000612: DUP2
00000613: PUSH2 0x1d86
00000616: JUMP
00000617: JUMPDEST
00000618: DUP1
00000619: DUP6
0000061a: GT
0000061b: PUSH2 0x0747
0000061e: JUMPI
0000061f: POP
00000620: POP
00000621: PUSH2 0x0629
00000624: DUP4
00000625: PUSH2 0x19e9
00000628: JUMP
00000629: JUMPDEST
0000062a: SWAP6
0000062b: PUSH2 0x0632
0000062e: PUSH2 0x2334
00000631: JUMP
00000632: JUMPDEST
00000633: DUP8
00000634: DUP4
00000635: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00000656: AND
00000657: SWAP2
00000658: DUP3
00000659: EXTCODESIZE
0000065a: ISZERO
0000065b: PUSH2 0x0308
0000065e: JUMPI
0000065f: DUP8
00000660: MLOAD
00000661: PUSH4 0xf2bb1119
00000666: PUSH1 0xe0
00000668: SHL
00000669: DUP2
0000066a: MSTORE
0000066b: CALLER
0000066c: SWAP2
0000066d: DUP2
0000066e: ADD
0000066f: SWAP2
00000670: DUP3
00000671: MSTORE
00000672: PUSH1 0x20
00000674: DUP3
00000675: ADD
00000676: DUP8
00000677: SWAP1
00000678: MSTORE
00000679: SWAP3
0000067a: DUP4
0000067b: SWAP2
0000067c: DUP3
0000067d: SWAP1
0000067e: DUP5
0000067f: SWAP1
00000680: DUP3
00000681: SWAP1
00000682: PUSH1 0x40
00000684: ADD
00000685: SUB
00000686: SWAP3
00000687: GAS
00000688: CALL
00000689: DUP1
0000068a: ISZERO
0000068b: PUSH2 0x073d
0000068e: JUMPI
0000068f: PUSH2 0x0725
00000692: JUMPI
00000693: JUMPDEST
00000694: POP
00000695: PUSH1 0x20
00000697: SWAP7
00000698: DUP4
00000699: PUSH1 0x07
0000069b: SLOAD
0000069c: DUP2
0000069d: DUP2
0000069e: LT
0000069f: PUSH0
000006a0: EQ
000006a1: PUSH2 0x0713
000006a4: JUMPI
000006a5: POP
000006a6: POP
000006a7: PUSH1 0x07
000006a9: SSTORE
000006aa: JUMPDEST
000006ab: PUSH2 0x06d7
000006ae: DUP7
000006af: DUP3
000006b0: DUP5
000006b1: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000006d2: AND
000006d3: PUSH2 0x2029
000006d6: JUMP
000006d7: JUMPDEST
000006d8: DUP5
000006d9: MLOAD
000006da: SWAP3
000006db: DUP7
000006dc: DUP5
000006dd: MSTORE
000006de: DUP8
000006df: DUP5
000006e0: ADD
000006e1: MSTORE
000006e2: AND
000006e3: SWAP1
000006e4: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db
00000705: DUP5
00000706: CALLER
00000707: SWAP3
00000708: LOG4
00000709: PUSH1 0x01
0000070b: PUSH1 0x02
0000070d: SSTORE
0000070e: MLOAD
0000070f: SWAP1
00000710: DUP2
00000711: MSTORE
00000712: RETURN
00000713: JUMPDEST
00000714: PUSH2 0x071d
00000717: SWAP3
00000718: POP
00000719: PUSH2 0x18fa
0000071c: JUMP
0000071d: JUMPDEST
0000071e: PUSH1 0x07
00000720: SSTORE
00000721: PUSH2 0x06aa
00000724: JUMP
00000725: JUMPDEST
00000726: PUSH2 0x072f
00000729: DUP9
0000072a: SWAP2
0000072b: PUSH2 0x1894
0000072e: JUMP
0000072f: JUMPDEST
00000730: PUSH2 0x0739
00000733: JUMPI
00000734: PUSH0
00000735: PUSH2 0x0693
00000738: JUMP
00000739: JUMPDEST
0000073a: DUP7
0000073b: DUP1
0000073c: REVERT
0000073d: JUMPDEST
0000073e: DUP7
0000073f: MLOAD
00000740: RETURNDATASIZE
00000741: DUP11
00000742: DUP3
00000743: RETURNDATACOPY
00000744: RETURNDATASIZE
00000745: SWAP1
00000746: REVERT
00000747: JUMPDEST
00000748: DUP7
00000749: MLOAD
0000074a: PUSH4 0x2e52afbb
0000074f: PUSH1 0xe2
00000751: SHL
00000752: DUP2
00000753: MSTORE
00000754: PUSH1 0x01
00000756: PUSH1 0x01
00000758: PUSH1 0xa0
0000075a: SHL
0000075b: SUB
0000075c: SWAP1
0000075d: SWAP3
0000075e: AND
0000075f: DUP3
00000760: DUP10
00000761: ADD
00000762: SWAP1
00000763: DUP2
00000764: MSTORE
00000765: PUSH1 0x20
00000767: DUP2
00000768: ADD
00000769: DUP7
0000076a: SWAP1
0000076b: MSTORE
0000076c: PUSH1 0x40
0000076e: DUP2
0000076f: ADD
00000770: SWAP2
00000771: SWAP1
00000772: SWAP2
00000773: MSTORE
00000774: DUP2
00000775: SWAP1
00000776: PUSH1 0x60
00000778: ADD
00000779: SUB
0000077a: SWAP1
0000077b: REVERT
0000077c: JUMPDEST
0000077d: DUP6
0000077e: MLOAD
0000077f: PUSH4 0x17efb799
00000784: PUSH1 0xe0
00000786: SHL
00000787: DUP2
00000788: MSTORE
00000789: DUP8
0000078a: SWAP1
0000078b: REVERT
0000078c: JUMPDEST
0000078d: DUP4
0000078e: MLOAD
0000078f: PUSH4 0x6f8bf18b
00000794: PUSH1 0xe1
00000796: SHL
00000797: DUP2
00000798: MSTORE
00000799: CALLER
0000079a: DUP2
0000079b: DUP8
0000079c: ADD
0000079d: MSTORE
0000079e: PUSH1 0x24
000007a0: SWAP1
000007a1: REVERT
000007a2: JUMPDEST
000007a3: POP
000007a4: CALLER
000007a5: DUP7
000007a6: MSTORE
000007a7: PUSH1 0x0d
000007a9: PUSH1 0x20
000007ab: MSTORE
000007ac: PUSH1 0xff
000007ae: DUP5
000007af: DUP8
000007b0: KECCAK256
000007b1: SLOAD
000007b2: AND
000007b3: ISZERO
000007b4: PUSH2 0x05f4
000007b7: JUMP
000007b8: JUMPDEST
000007b9: DUP4
000007ba: SWAP1
000007bb: CALLVALUE
000007bc: PUSH2 0x0308
000007bf: JUMPI
000007c0: DUP2
000007c1: PUSH1 0x03
000007c3: NOT
000007c4: CALLDATASIZE
000007c5: ADD
000007c6: SLT
000007c7: PUSH2 0x0308
000007ca: JUMPI
000007cb: PUSH1 0x20
000007cd: SWAP1
000007ce: PUSH1 0x0b
000007d0: SLOAD
000007d1: SWAP1
000007d2: MLOAD
000007d3: SWAP1
000007d4: DUP2
000007d5: MSTORE
000007d6: RETURN
000007d7: JUMPDEST
000007d8: DUP4
000007d9: SWAP1
000007da: CALLVALUE
000007db: PUSH2 0x0952
000007de: JUMPI
000007df: PUSH2 0x07e7
000007e2: CALLDATASIZE
000007e3: PUSH2 0x185f
000007e6: JUMP
000007e7: JUMPDEST
000007e8: SWAP2
000007e9: SWAP1
000007ea: PUSH2 0x07f1
000007ed: PUSH2 0x1ada
000007f0: JUMP
000007f1: JUMPDEST
000007f2: PUSH1 0x0c
000007f4: SSTORE
000007f5: NUMBER
000007f6: PUSH1 0x0b
000007f8: SSTORE
000007f9: PUSH1 0xff
000007fb: PUSH1 0x0e
000007fd: SLOAD
000007fe: AND
000007ff: ISZERO
00000800: DUP1
00000801: PUSH2 0x09b1
00000804: JUMPI
00000805: JUMPDEST
00000806: PUSH2 0x099b
00000809: JUMPI
0000080a: PUSH1 0x01
0000080c: PUSH1 0x01
0000080e: PUSH1 0xa0
00000810: SHL
00000811: SUB
00000812: DUP4
00000813: DUP2
00000814: AND
00000815: SWAP4
00000816: SWAP1
00000817: SWAP2
00000818: SWAP1
00000819: CALLER
0000081a: DUP6
0000081b: SUB
0000081c: PUSH2 0x098b
0000081f: JUMPI
00000820: PUSH2 0x0828
00000823: DUP2
00000824: PUSH2 0x1c6b
00000827: JUMP
00000828: JUMPDEST
00000829: DUP1
0000082a: DUP6
0000082b: GT
0000082c: PUSH2 0x0956
0000082f: JUMPI
00000830: POP
00000831: POP
00000832: PUSH2 0x083a
00000835: DUP4
00000836: PUSH2 0x191b
00000839: JUMP
0000083a: JUMPDEST
0000083b: SWAP6
0000083c: PUSH2 0x0843
0000083f: PUSH2 0x2334
00000842: JUMP
00000843: JUMPDEST
00000844: DUP3
00000845: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00000866: AND
00000867: DUP1
00000868: EXTCODESIZE
00000869: ISZERO
0000086a: PUSH2 0x0952
0000086d: JUMPI
0000086e: DUP7
0000086f: MLOAD
00000870: PUSH4 0xf2bb1119
00000875: PUSH1 0xe0
00000877: SHL
00000878: DUP2
00000879: MSTORE
0000087a: CALLER
0000087b: SWAP10
0000087c: DUP2
0000087d: ADD
0000087e: SWAP10
0000087f: DUP11
00000880: MSTORE
00000881: PUSH1 0x20
00000883: DUP11
00000884: ADD
00000885: DUP10
00000886: SWAP1
00000887: MSTORE
00000888: SWAP9
00000889: PUSH0
0000088a: SWAP2
0000088b: DUP11
0000088c: SWAP2
0000088d: DUP3
0000088e: SWAP1
0000088f: DUP5
00000890: SWAP1
00000891: DUP3
00000892: SWAP1
00000893: PUSH1 0x40
00000895: ADD
00000896: SUB
00000897: SWAP3
00000898: GAS
00000899: CALL
0000089a: SWAP8
0000089b: DUP9
0000089c: ISZERO
0000089d: PUSH2 0x0948
000008a0: JUMPI
000008a1: PUSH1 0x20
000008a3: SWAP9
000008a4: PUSH2 0x0937
000008a7: JUMPI
000008a8: JUMPDEST
000008a9: POP
000008aa: DUP7
000008ab: PUSH1 0x07
000008ad: SLOAD
000008ae: DUP2
000008af: DUP2
000008b0: LT
000008b1: PUSH0
000008b2: EQ
000008b3: PUSH2 0x0925
000008b6: JUMPI
000008b7: POP
000008b8: POP
000008b9: PUSH1 0x07
000008bb: SSTORE
000008bc: JUMPDEST
000008bd: PUSH2 0x08e9
000008c0: DUP4
000008c1: DUP3
000008c2: DUP5
000008c3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000008e4: AND
000008e5: PUSH2 0x2029
000008e8: JUMP
000008e9: JUMPDEST
000008ea: DUP5
000008eb: MLOAD
000008ec: SWAP3
000008ed: DUP4
000008ee: MSTORE
000008ef: DUP6
000008f0: DUP8
000008f1: DUP5
000008f2: ADD
000008f3: MSTORE
000008f4: AND
000008f5: SWAP1
000008f6: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db
00000917: DUP5
00000918: CALLER
00000919: SWAP3
0000091a: LOG4
0000091b: PUSH1 0x01
0000091d: PUSH1 0x02
0000091f: SSTORE
00000920: MLOAD
00000921: SWAP1
00000922: DUP2
00000923: MSTORE
00000924: RETURN
00000925: JUMPDEST
00000926: PUSH2 0x092f
00000929: SWAP3
0000092a: POP
0000092b: PUSH2 0x18fa
0000092e: JUMP
0000092f: JUMPDEST
00000930: PUSH1 0x07
00000932: SSTORE
00000933: PUSH2 0x08bc
00000936: JUMP
00000937: JUMPDEST
00000938: PUSH2 0x0941
0000093b: SWAP2
0000093c: POP
0000093d: PUSH2 0x1894
00000940: JUMP
00000941: JUMPDEST
00000942: PUSH0
00000943: DUP9
00000944: PUSH2 0x08a8
00000947: JUMP
00000948: JUMPDEST
00000949: DUP7
0000094a: MLOAD
0000094b: RETURNDATASIZE
0000094c: PUSH0
0000094d: DUP3
0000094e: RETURNDATACOPY
0000094f: RETURNDATASIZE
00000950: SWAP1
00000951: REVERT
00000952: JUMPDEST
00000953: PUSH0
00000954: DUP1
00000955: REVERT
00000956: JUMPDEST
00000957: DUP7
00000958: MLOAD
00000959: PUSH4 0x3fa733bb
0000095e: PUSH1 0xe2
00000960: SHL
00000961: DUP2
00000962: MSTORE
00000963: PUSH1 0x01
00000965: PUSH1 0x01
00000967: PUSH1 0xa0
00000969: SHL
0000096a: SUB
0000096b: SWAP1
0000096c: SWAP3
0000096d: AND
0000096e: DUP3
0000096f: DUP11
00000970: ADD
00000971: SWAP1
00000972: DUP2
00000973: MSTORE
00000974: PUSH1 0x20
00000976: DUP2
00000977: ADD
00000978: DUP7
00000979: SWAP1
0000097a: MSTORE
0000097b: PUSH1 0x40
0000097d: DUP2
0000097e: ADD
0000097f: SWAP2
00000980: SWAP1
00000981: SWAP2
00000982: MSTORE
00000983: DUP2
00000984: SWAP1
00000985: PUSH1 0x60
00000987: ADD
00000988: SUB
00000989: SWAP1
0000098a: REVERT
0000098b: JUMPDEST
0000098c: DUP6
0000098d: MLOAD
0000098e: PUSH4 0x17efb799
00000993: PUSH1 0xe0
00000995: SHL
00000996: DUP2
00000997: MSTORE
00000998: DUP9
00000999: SWAP1
0000099a: REVERT
0000099b: JUMPDEST
0000099c: DUP4
0000099d: MLOAD
0000099e: PUSH4 0x6f8bf18b
000009a3: PUSH1 0xe1
000009a5: SHL
000009a6: DUP2
000009a7: MSTORE
000009a8: CALLER
000009a9: DUP2
000009aa: DUP9
000009ab: ADD
000009ac: MSTORE
000009ad: PUSH1 0x24
000009af: SWAP1
000009b0: REVERT
000009b1: JUMPDEST
000009b2: POP
000009b3: CALLER
000009b4: PUSH0
000009b5: MSTORE
000009b6: PUSH1 0x0d
000009b8: PUSH1 0x20
000009ba: MSTORE
000009bb: PUSH1 0xff
000009bd: DUP5
000009be: PUSH0
000009bf: KECCAK256
000009c0: SLOAD
000009c1: AND
000009c2: ISZERO
000009c3: PUSH2 0x0805
000009c6: JUMP
000009c7: JUMPDEST
000009c8: CALLVALUE
000009c9: PUSH2 0x0952
000009cc: JUMPI
000009cd: PUSH1 0x20
000009cf: CALLDATASIZE
000009d0: PUSH1 0x03
000009d2: NOT
000009d3: ADD
000009d4: SLT
000009d5: PUSH2 0x0952
000009d8: JUMPI
000009d9: PUSH2 0x02e2
000009dc: PUSH1 0x20
000009de: SWAP3
000009df: CALLDATALOAD
000009e0: PUSH2 0x1bb9
000009e3: JUMP
000009e4: JUMPDEST
000009e5: SWAP1
000009e6: CALLVALUE
000009e7: PUSH2 0x0952
000009ea: JUMPI
000009eb: DUP2
000009ec: PUSH1 0x03
000009ee: NOT
000009ef: CALLDATASIZE
000009f0: ADD
000009f1: SLT
000009f2: PUSH2 0x0952
000009f5: JUMPI
000009f6: PUSH1 0x20
000009f8: PUSH2 0x09ff
000009fb: PUSH2 0x1833
000009fe: JUMP
000009ff: JUMPDEST
00000a00: PUSH2 0x0a07
00000a03: PUSH2 0x1fab
00000a06: JUMP
00000a07: JUMPDEST
00000a08: PUSH1 0x08
00000a0a: DUP1
00000a0b: SLOAD
00000a0c: PUSH1 0x01
00000a0e: PUSH1 0x01
00000a10: PUSH1 0xa0
00000a12: SHL
00000a13: SUB
00000a14: NOT
00000a15: AND
00000a16: PUSH1 0x01
00000a18: PUSH1 0x01
00000a1a: PUSH1 0xa0
00000a1c: SHL
00000a1d: SUB
00000a1e: SWAP3
00000a1f: SWAP1
00000a20: SWAP3
00000a21: AND
00000a22: SWAP2
00000a23: DUP3
00000a24: OR
00000a25: SWAP1
00000a26: SSTORE
00000a27: DUP4
00000a28: MLOAD
00000a29: PUSH4 0x313ce567
00000a2e: PUSH1 0xe0
00000a30: SHL
00000a31: DUP2
00000a32: MSTORE
00000a33: SWAP3
00000a34: DUP4
00000a35: SWAP2
00000a36: DUP3
00000a37: SWAP1
00000a38: GAS
00000a39: STATICCALL
00000a3a: SWAP1
00000a3b: DUP2
00000a3c: ISZERO
00000a3d: PUSH2 0x0a87
00000a40: JUMPI
00000a41: PUSH1 0xff
00000a43: SWAP3
00000a44: POP
00000a45: PUSH0
00000a46: SWAP2
00000a47: PUSH2 0x0a58
00000a4a: JUMPI
00000a4b: JUMPDEST
00000a4c: POP
00000a4d: AND
00000a4e: PUSH1 0x09
00000a50: SSTORE
00000a51: PUSH1 0x24
00000a53: CALLDATALOAD
00000a54: PUSH1 0x0a
00000a56: SSTORE
00000a57: STOP
00000a58: JUMPDEST
00000a59: PUSH2 0x0a7a
00000a5c: SWAP2
00000a5d: POP
00000a5e: PUSH1 0x20
00000a60: RETURNDATASIZE
00000a61: PUSH1 0x20
00000a63: GT
00000a64: PUSH2 0x0a80
00000a67: JUMPI
00000a68: JUMPDEST
00000a69: PUSH2 0x0a72
00000a6c: DUP2
00000a6d: DUP4
00000a6e: PUSH2 0x18d8
00000a71: JUMP
00000a72: JUMPDEST
00000a73: DUP2
00000a74: ADD
00000a75: SWAP1
00000a76: PUSH2 0x1aaa
00000a79: JUMP
00000a7a: JUMPDEST
00000a7b: DUP3
00000a7c: PUSH2 0x0a4b
00000a7f: JUMP
00000a80: JUMPDEST
00000a81: POP
00000a82: RETURNDATASIZE
00000a83: PUSH2 0x0a68
00000a86: JUMP
00000a87: JUMPDEST
00000a88: DUP3
00000a89: MLOAD
00000a8a: RETURNDATASIZE
00000a8b: PUSH0
00000a8c: DUP3
00000a8d: RETURNDATACOPY
00000a8e: RETURNDATASIZE
00000a8f: SWAP1
00000a90: REVERT
00000a91: JUMPDEST
00000a92: CALLVALUE
00000a93: PUSH2 0x0952
00000a96: JUMPI
00000a97: PUSH0
00000a98: CALLDATASIZE
00000a99: PUSH1 0x03
00000a9b: NOT
00000a9c: ADD
00000a9d: SLT
00000a9e: PUSH2 0x0952
00000aa1: JUMPI
00000aa2: MLOAD
00000aa3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000ac4: PUSH1 0x01
00000ac6: PUSH1 0x01
00000ac8: PUSH1 0xa0
00000aca: SHL
00000acb: SUB
00000acc: AND
00000acd: DUP2
00000ace: MSTORE
00000acf: PUSH1 0x20
00000ad1: SWAP1
00000ad2: RETURN
00000ad3: JUMPDEST
00000ad4: CALLVALUE
00000ad5: PUSH2 0x0952
00000ad8: JUMPI
00000ad9: PUSH1 0x20
00000adb: CALLDATASIZE
00000adc: PUSH1 0x03
00000ade: NOT
00000adf: ADD
00000ae0: SLT
00000ae1: PUSH2 0x0952
00000ae4: JUMPI
00000ae5: PUSH1 0x20
00000ae7: SWAP1
00000ae8: PUSH1 0x01
00000aea: PUSH1 0x01
00000aec: PUSH1 0xa0
00000aee: SHL
00000aef: SUB
00000af0: PUSH2 0x0af7
00000af3: PUSH2 0x1833
00000af6: JUMP
00000af7: JUMPDEST
00000af8: AND
00000af9: PUSH0
00000afa: MSTORE
00000afb: PUSH1 0x0d
00000afd: DUP3
00000afe: MSTORE
00000aff: PUSH1 0xff
00000b01: DUP2
00000b02: PUSH0
00000b03: KECCAK256
00000b04: SLOAD
00000b05: AND
00000b06: SWAP1
00000b07: MLOAD
00000b08: SWAP1
00000b09: ISZERO
00000b0a: ISZERO
00000b0b: DUP2
00000b0c: MSTORE
00000b0d: RETURN
00000b0e: JUMPDEST
00000b0f: CALLVALUE
00000b10: PUSH2 0x0952
00000b13: JUMPI
00000b14: PUSH0
00000b15: CALLDATASIZE
00000b16: PUSH1 0x03
00000b18: NOT
00000b19: ADD
00000b1a: SLT
00000b1b: PUSH2 0x0952
00000b1e: JUMPI
00000b1f: PUSH1 0x20
00000b21: SWAP1
00000b22: PUSH1 0x07
00000b24: SLOAD
00000b25: SWAP1
00000b26: MLOAD
00000b27: SWAP1
00000b28: DUP2
00000b29: MSTORE
00000b2a: RETURN
00000b2b: JUMPDEST
00000b2c: CALLVALUE
00000b2d: PUSH2 0x0952
00000b30: JUMPI
00000b31: PUSH0
00000b32: CALLDATASIZE
00000b33: PUSH1 0x03
00000b35: NOT
00000b36: ADD
00000b37: SLT
00000b38: PUSH2 0x0952
00000b3b: JUMPI
00000b3c: PUSH1 0x20
00000b3e: SWAP1
00000b3f: PUSH2 0x02e2
00000b42: PUSH2 0x0b9c
00000b45: PUSH2 0x0b6d
00000b48: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
00000b69: PUSH2 0x206c
00000b6c: JUMP
00000b6d: JUMPDEST
00000b6e: PUSH2 0x0b96
00000b71: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00000b92: PUSH2 0x206c
00000b95: JUMP
00000b96: JUMPDEST
00000b97: SWAP1
00000b98: PUSH2 0x207d
00000b9b: JUMP
00000b9c: JUMPDEST
00000b9d: PUSH2 0x0ba4
00000ba0: PUSH2 0x1ada
00000ba3: JUMP
00000ba4: JUMPDEST
00000ba5: PUSH2 0x0598
00000ba8: PUSH1 0x09
00000baa: SLOAD
00000bab: PUSH2 0x1f2e
00000bae: JUMP
00000baf: JUMPDEST
00000bb0: CALLVALUE
00000bb1: PUSH2 0x0952
00000bb4: JUMPI
00000bb5: PUSH0
00000bb6: CALLDATASIZE
00000bb7: PUSH1 0x03
00000bb9: NOT
00000bba: ADD
00000bbb: SLT
00000bbc: PUSH2 0x0952
00000bbf: JUMPI
00000bc0: PUSH1 0x20
00000bc2: SWAP1
00000bc3: MLOAD
00000bc4: PUSH1 0xff
00000bc6: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
00000be7: AND
00000be8: DUP2
00000be9: MSTORE
00000bea: RETURN
00000beb: JUMPDEST
00000bec: CALLVALUE
00000bed: PUSH2 0x0952
00000bf0: JUMPI
00000bf1: PUSH0
00000bf2: CALLDATASIZE
00000bf3: PUSH1 0x03
00000bf5: NOT
00000bf6: ADD
00000bf7: SLT
00000bf8: PUSH2 0x0952
00000bfb: JUMPI
00000bfc: PUSH1 0x20
00000bfe: SWAP1
00000bff: PUSH1 0x05
00000c01: SLOAD
00000c02: SWAP1
00000c03: MLOAD
00000c04: SWAP1
00000c05: DUP2
00000c06: MSTORE
00000c07: RETURN
00000c08: JUMPDEST
00000c09: SWAP1
00000c0a: CALLVALUE
00000c0b: PUSH2 0x0952
00000c0e: JUMPI
00000c0f: DUP2
00000c10: PUSH1 0x03
00000c12: NOT
00000c13: CALLDATASIZE
00000c14: ADD
00000c15: SLT
00000c16: PUSH2 0x0952
00000c19: JUMPI
00000c1a: DUP1
00000c1b: CALLDATALOAD
00000c1c: SWAP2
00000c1d: PUSH2 0x0c24
00000c20: PUSH2 0x1849
00000c23: JUMP
00000c24: JUMPDEST
00000c25: SWAP3
00000c26: PUSH2 0x0c2d
00000c29: PUSH2 0x1ada
00000c2c: JUMP
00000c2d: JUMPDEST
00000c2e: PUSH1 0x0c
00000c30: SSTORE
00000c31: NUMBER
00000c32: PUSH1 0x0b
00000c34: SSTORE
00000c35: PUSH1 0xff
00000c37: PUSH1 0x0e
00000c39: SLOAD
00000c3a: AND
00000c3b: ISZERO
00000c3c: DUP1
00000c3d: PUSH2 0x0e27
00000c40: JUMPI
00000c41: JUMPDEST
00000c42: PUSH2 0x0e11
00000c45: JUMPI
00000c46: PUSH2 0x0c4d
00000c49: PUSH2 0x1c4e
00000c4c: JUMP
00000c4d: JUMPDEST
00000c4e: DUP1
00000c4f: DUP3
00000c50: GT
00000c51: PUSH2 0x0de1
00000c54: JUMPI
00000c55: POP
00000c56: PUSH2 0x0c5e
00000c59: DUP2
00000c5a: PUSH2 0x1bb9
00000c5d: JUMP
00000c5e: JUMPDEST
00000c5f: SWAP3
00000c60: PUSH2 0x0c67
00000c63: PUSH2 0x2334
00000c66: JUMP
00000c67: JUMPDEST
00000c68: DUP3
00000c69: MLOAD
00000c6a: PUSH4 0x23b872dd
00000c6f: PUSH1 0xe0
00000c71: SHL
00000c72: PUSH1 0x20
00000c74: DUP3
00000c75: ADD
00000c76: MSTORE
00000c77: CALLER
00000c78: PUSH1 0x24
00000c7a: DUP3
00000c7b: ADD
00000c7c: MSTORE
00000c7d: ADDRESS
00000c7e: PUSH1 0x44
00000c80: DUP3
00000c81: ADD
00000c82: MSTORE
00000c83: PUSH1 0x64
00000c85: DUP1
00000c86: DUP3
00000c87: ADD
00000c88: DUP7
00000c89: SWAP1
00000c8a: MSTORE
00000c8b: DUP2
00000c8c: MSTORE
00000c8d: PUSH1 0x01
00000c8f: PUSH1 0x01
00000c91: PUSH1 0xa0
00000c93: SHL
00000c94: SUB
00000c95: SWAP2
00000c96: SWAP1
00000c97: PUSH2 0x0ccb
00000c9a: SWAP1
00000c9b: PUSH2 0x0ca3
00000c9e: DUP2
00000c9f: PUSH2 0x18bc
00000ca2: JUMP
00000ca3: JUMPDEST
00000ca4: DUP4
00000ca5: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000cc6: AND
00000cc7: PUSH2 0x227b
00000cca: JUMP
00000ccb: JUMPDEST
00000ccc: DUP2
00000ccd: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00000cee: AND
00000cef: DUP1
00000cf0: EXTCODESIZE
00000cf1: ISZERO
00000cf2: PUSH2 0x0952
00000cf5: JUMPI
00000cf6: DUP5
00000cf7: MLOAD
00000cf8: PUSH4 0x10f98a65
00000cfd: PUSH1 0xe1
00000cff: SHL
00000d00: DUP2
00000d01: MSTORE
00000d02: PUSH1 0x01
00000d04: PUSH1 0x01
00000d06: PUSH1 0xa0
00000d08: SHL
00000d09: SUB
00000d0a: DUP9
00000d0b: AND
00000d0c: DUP4
00000d0d: DUP3
00000d0e: ADD
00000d0f: SWAP1
00000d10: DUP2
00000d11: MSTORE
00000d12: PUSH1 0x20
00000d14: DUP2
00000d15: ADD
00000d16: DUP7
00000d17: SWAP1
00000d18: MSTORE
00000d19: SWAP1
00000d1a: SWAP2
00000d1b: PUSH0
00000d1c: SWAP2
00000d1d: DUP4
00000d1e: SWAP2
00000d1f: SWAP1
00000d20: DUP3
00000d21: SWAP1
00000d22: DUP5
00000d23: SWAP1
00000d24: DUP3
00000d25: SWAP1
00000d26: PUSH1 0x40
00000d28: ADD
00000d29: SUB
00000d2a: SWAP3
00000d2b: GAS
00000d2c: CALL
00000d2d: DUP1
00000d2e: ISZERO
00000d2f: PUSH2 0x0dd7
00000d32: JUMPI
00000d33: PUSH2 0x0dc8
00000d36: JUMPI
00000d37: JUMPDEST
00000d38: POP
00000d39: PUSH2 0x0d44
00000d3c: DUP4
00000d3d: PUSH1 0x07
00000d3f: SLOAD
00000d40: PUSH2 0x1f3c
00000d43: JUMP
00000d44: JUMPDEST
00000d45: DUP1
00000d46: PUSH1 0x07
00000d48: SSTORE
00000d49: PUSH1 0x06
00000d4b: SLOAD
00000d4c: DUP1
00000d4d: SWAP2
00000d4e: GT
00000d4f: PUSH2 0x0d93
00000d52: JUMPI
00000d53: POP
00000d54: POP
00000d55: PUSH1 0x20
00000d57: SWAP5
00000d58: DUP4
00000d59: MLOAD
00000d5a: SWAP3
00000d5b: DUP6
00000d5c: DUP5
00000d5d: MSTORE
00000d5e: DUP7
00000d5f: DUP5
00000d60: ADD
00000d61: MSTORE
00000d62: AND
00000d63: SWAP1
00000d64: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
00000d85: DUP4
00000d86: CALLER
00000d87: SWAP3
00000d88: LOG3
00000d89: PUSH1 0x01
00000d8b: PUSH1 0x02
00000d8d: SSTORE
00000d8e: MLOAD
00000d8f: SWAP1
00000d90: DUP2
00000d91: MSTORE
00000d92: RETURN
00000d93: JUMPDEST
00000d94: DUP5
00000d95: MLOAD
00000d96: PUSH4 0x6df60743
00000d9b: PUSH1 0xe1
00000d9d: SHL
00000d9e: DUP2
00000d9f: MSTORE
00000da0: PUSH1 0x01
00000da2: PUSH1 0x01
00000da4: PUSH1 0xa0
00000da6: SHL
00000da7: SUB
00000da8: DUP9
00000da9: AND
00000daa: SWAP3
00000dab: DUP2
00000dac: ADD
00000dad: SWAP3
00000dae: DUP4
00000daf: MSTORE
00000db0: PUSH1 0x20
00000db2: DUP4
00000db3: ADD
00000db4: DUP6
00000db5: SWAP1
00000db6: MSTORE
00000db7: PUSH1 0x40
00000db9: DUP4
00000dba: ADD
00000dbb: SWAP2
00000dbc: SWAP1
00000dbd: SWAP2
00000dbe: MSTORE
00000dbf: SWAP1
00000dc0: DUP2
00000dc1: SWAP1
00000dc2: PUSH1 0x60
00000dc4: ADD
00000dc5: SUB
00000dc6: SWAP1
00000dc7: REVERT
00000dc8: JUMPDEST
00000dc9: PUSH2 0x0dd1
00000dcc: SWAP1
00000dcd: PUSH2 0x1894
00000dd0: JUMP
00000dd1: JUMPDEST
00000dd2: DUP7
00000dd3: PUSH2 0x0d37
00000dd6: JUMP
00000dd7: JUMPDEST
00000dd8: DUP6
00000dd9: MLOAD
00000dda: RETURNDATASIZE
00000ddb: PUSH0
00000ddc: DUP3
00000ddd: RETURNDATACOPY
00000dde: RETURNDATASIZE
00000ddf: SWAP1
00000de0: REVERT
00000de1: JUMPDEST
00000de2: SWAP2
00000de3: MLOAD
00000de4: PUSH4 0x284ff667
00000de9: PUSH1 0xe0
00000deb: SHL
00000dec: DUP2
00000ded: MSTORE
00000dee: PUSH1 0x01
00000df0: PUSH1 0x01
00000df2: PUSH1 0xa0
00000df4: SHL
00000df5: SUB
00000df6: SWAP1
00000df7: SWAP5
00000df8: AND
00000df9: SWAP3
00000dfa: DUP5
00000dfb: ADD
00000dfc: SWAP3
00000dfd: DUP4
00000dfe: MSTORE
00000dff: PUSH1 0x20
00000e01: DUP4
00000e02: ADD
00000e03: MSTORE
00000e04: PUSH1 0x40
00000e06: DUP3
00000e07: ADD
00000e08: MSTORE
00000e09: DUP2
00000e0a: SWAP1
00000e0b: PUSH1 0x60
00000e0d: ADD
00000e0e: SUB
00000e0f: SWAP1
00000e10: REVERT
00000e11: JUMPDEST
00000e12: DUP2
00000e13: MLOAD
00000e14: PUSH4 0x6f8bf18b
00000e19: PUSH1 0xe1
00000e1b: SHL
00000e1c: DUP2
00000e1d: MSTORE
00000e1e: CALLER
00000e1f: DUP2
00000e20: DUP6
00000e21: ADD
00000e22: MSTORE
00000e23: PUSH1 0x24
00000e25: SWAP1
00000e26: REVERT
00000e27: JUMPDEST
00000e28: POP
00000e29: CALLER
00000e2a: PUSH0
00000e2b: MSTORE
00000e2c: PUSH1 0x0d
00000e2e: PUSH1 0x20
00000e30: MSTORE
00000e31: PUSH1 0xff
00000e33: DUP3
00000e34: PUSH0
00000e35: KECCAK256
00000e36: SLOAD
00000e37: AND
00000e38: ISZERO
00000e39: PUSH2 0x0c41
00000e3c: JUMP
00000e3d: JUMPDEST
00000e3e: CALLVALUE
00000e3f: PUSH2 0x0952
00000e42: JUMPI
00000e43: PUSH0
00000e44: CALLDATASIZE
00000e45: PUSH1 0x03
00000e47: NOT
00000e48: ADD
00000e49: SLT
00000e4a: PUSH2 0x0952
00000e4d: JUMPI
00000e4e: PUSH0
00000e4f: SLOAD
00000e50: SWAP1
00000e51: MLOAD
00000e52: PUSH1 0x01
00000e54: PUSH1 0x01
00000e56: PUSH1 0xa0
00000e58: SHL
00000e59: SUB
00000e5a: SWAP1
00000e5b: SWAP2
00000e5c: AND
00000e5d: DUP2
00000e5e: MSTORE
00000e5f: PUSH1 0x20
00000e61: SWAP1
00000e62: RETURN
00000e63: JUMPDEST
00000e64: SWAP1
00000e65: CALLVALUE
00000e66: PUSH2 0x0952
00000e69: JUMPI
00000e6a: DUP2
00000e6b: PUSH1 0x03
00000e6d: NOT
00000e6e: CALLDATASIZE
00000e6f: ADD
00000e70: SLT
00000e71: PUSH2 0x0952
00000e74: JUMPI
00000e75: DUP1
00000e76: CALLDATALOAD
00000e77: SWAP1
00000e78: PUSH1 0x24
00000e7a: CALLDATALOAD
00000e7b: SWAP3
00000e7c: PUSH2 0x0e83
00000e7f: PUSH2 0x1fab
00000e82: JUMP
00000e83: JUMPDEST
00000e84: PUSH8 0x0de0b6b3a7640000
00000e8d: DUP1
00000e8e: DUP5
00000e8f: LT
00000e90: SWAP1
00000e91: DUP2
00000e92: ISZERO
00000e93: PUSH2 0x0ef3
00000e96: JUMPI
00000e97: JUMPDEST
00000e98: POP
00000e99: ISZERO
00000e9a: PUSH2 0x0ea4
00000e9d: JUMPI
00000e9e: POP
00000e9f: SSTORE
00000ea0: PUSH1 0x05
00000ea2: SSTORE
00000ea3: STOP
00000ea4: JUMPDEST
00000ea5: SWAP1
00000ea6: PUSH1 0x20
00000ea8: PUSH1 0x84
00000eaa: SWAP3
00000eab: MLOAD
00000eac: SWAP2
00000ead: PUSH3 0x461bcd
00000eb1: PUSH1 0xe5
00000eb3: SHL
00000eb4: DUP4
00000eb5: MSTORE
00000eb6: DUP3
00000eb7: ADD
00000eb8: MSTORE
00000eb9: PUSH1 0x24
00000ebb: DUP1
00000ebc: DUP3
00000ebd: ADD
00000ebe: MSTORE
00000ebf: PUSH32 0x466565206d7573742062652061206672616374696f6e206f6620756e6465726c
00000ee0: PUSH1 0x44
00000ee2: DUP3
00000ee3: ADD
00000ee4: MSTORE
00000ee5: PUSH4 0x79696e67
00000eea: PUSH1 0xe0
00000eec: SHL
00000eed: PUSH1 0x64
00000eef: DUP3
00000ef0: ADD
00000ef1: MSTORE
00000ef2: REVERT
00000ef3: JUMPDEST
00000ef4: SWAP1
00000ef5: POP
00000ef6: DUP5
00000ef7: LT
00000ef8: DUP6
00000ef9: PUSH2 0x0e97
00000efc: JUMP
00000efd: JUMPDEST
00000efe: CALLVALUE
00000eff: PUSH2 0x0952
00000f02: JUMPI
00000f03: PUSH0
00000f04: CALLDATASIZE
00000f05: PUSH1 0x03
00000f07: NOT
00000f08: ADD
00000f09: SLT
00000f0a: PUSH2 0x0952
00000f0d: JUMPI
00000f0e: PUSH1 0x20
00000f10: SWAP1
00000f11: PUSH2 0x02e2
00000f14: PUSH2 0x1ada
00000f17: JUMP
00000f18: JUMPDEST
00000f19: CALLVALUE
00000f1a: PUSH2 0x0952
00000f1d: JUMPI
00000f1e: DUP1
00000f1f: PUSH1 0x03
00000f21: NOT
00000f22: CALLDATASIZE
00000f23: ADD
00000f24: SLT
00000f25: PUSH2 0x0952
00000f28: JUMPI
00000f29: PUSH32 0x55350610fe57096d8c0ffa30beede987326bccfcb0b4415804164d0dd50ce8b1
00000f4a: SWAP1
00000f4b: PUSH2 0x0f52
00000f4e: PUSH2 0x1833
00000f51: JUMP
00000f52: JUMPDEST
00000f53: PUSH2 0x0f9c
00000f56: PUSH1 0x24
00000f58: CALLDATALOAD
00000f59: SWAP3
00000f5a: PUSH2 0x0f61
00000f5d: PUSH2 0x1fab
00000f60: JUMP
00000f61: JUMPDEST
00000f62: PUSH0
00000f63: SLOAD
00000f64: PUSH2 0x0f7c
00000f67: SWAP1
00000f68: DUP6
00000f69: SWAP1
00000f6a: PUSH1 0x01
00000f6c: PUSH1 0x01
00000f6e: PUSH1 0xa0
00000f70: SHL
00000f71: SUB
00000f72: SWAP1
00000f73: DUP2
00000f74: AND
00000f75: SWAP1
00000f76: DUP7
00000f77: AND
00000f78: PUSH2 0x2029
00000f7b: JUMP
00000f7c: JUMPDEST
00000f7d: MLOAD
00000f7e: PUSH1 0x01
00000f80: PUSH1 0x01
00000f82: PUSH1 0xa0
00000f84: SHL
00000f85: SUB
00000f86: SWAP1
00000f87: SWAP3
00000f88: AND
00000f89: DUP3
00000f8a: MSTORE
00000f8b: PUSH1 0x20
00000f8d: DUP3
00000f8e: ADD
00000f8f: SWAP3
00000f90: SWAP1
00000f91: SWAP3
00000f92: MSTORE
00000f93: SWAP1
00000f94: DUP2
00000f95: SWAP1
00000f96: PUSH1 0x40
00000f98: DUP3
00000f99: ADD
00000f9a: SWAP1
00000f9b: JUMP
00000f9c: JUMPDEST
00000f9d: SUB
00000f9e: SWAP1
00000f9f: LOG1
00000fa0: STOP
00000fa1: JUMPDEST
00000fa2: SWAP1
00000fa3: CALLVALUE
00000fa4: PUSH2 0x0952
00000fa7: JUMPI
00000fa8: PUSH1 0xc0
00000faa: CALLDATASIZE
00000fab: PUSH1 0x03
00000fad: NOT
00000fae: ADD
00000faf: SLT
00000fb0: PUSH2 0x0952
00000fb3: JUMPI
00000fb4: PUSH1 0x20
00000fb6: PUSH2 0x0fbd
00000fb9: PUSH2 0x1833
00000fbc: JUMP
00000fbd: JUMPDEST
00000fbe: PUSH2 0x0fda
00000fc1: PUSH2 0x0fc8
00000fc4: PUSH2 0x1849
00000fc7: JUMP
00000fc8: JUMPDEST
00000fc9: SWAP2
00000fca: PUSH1 0xa4
00000fcc: CALLDATALOAD
00000fcd: SWAP1
00000fce: PUSH1 0x84
00000fd0: CALLDATALOAD
00000fd1: SWAP1
00000fd2: PUSH1 0x64
00000fd4: CALLDATALOAD
00000fd5: SWAP1
00000fd6: PUSH2 0x1a6d
00000fd9: JUMP
00000fda: JUMPDEST
00000fdb: PUSH1 0x08
00000fdd: DUP1
00000fde: SLOAD
00000fdf: PUSH1 0x01
00000fe1: PUSH1 0x01
00000fe3: PUSH1 0xa0
00000fe5: SHL
00000fe6: SUB
00000fe7: NOT
00000fe8: AND
00000fe9: PUSH1 0x01
00000feb: PUSH1 0x01
00000fed: PUSH1 0xa0
00000fef: SHL
00000ff0: SUB
00000ff1: SWAP3
00000ff2: SWAP1
00000ff3: SWAP3
00000ff4: AND
00000ff5: SWAP2
00000ff6: DUP3
00000ff7: OR
00000ff8: SWAP1
00000ff9: SSTORE
00000ffa: DUP4
00000ffb: MLOAD
00000ffc: PUSH4 0x313ce567
00001001: PUSH1 0xe0
00001003: SHL
00001004: DUP2
00001005: MSTORE
00001006: SWAP3
00001007: DUP4
00001008: SWAP2
00001009: DUP3
0000100a: SWAP1
0000100b: GAS
0000100c: STATICCALL
0000100d: SWAP1
0000100e: DUP2
0000100f: ISZERO
00001010: PUSH2 0x0a87
00001013: JUMPI
00001014: PUSH1 0xff
00001016: SWAP3
00001017: POP
00001018: PUSH0
00001019: SWAP2
0000101a: PUSH2 0x102b
0000101d: JUMPI
0000101e: JUMPDEST
0000101f: POP
00001020: AND
00001021: PUSH1 0x09
00001023: SSTORE
00001024: PUSH1 0x44
00001026: CALLDATALOAD
00001027: PUSH1 0x0a
00001029: SSTORE
0000102a: STOP
0000102b: JUMPDEST
0000102c: PUSH2 0x1044
0000102f: SWAP2
00001030: POP
00001031: PUSH1 0x20
00001033: RETURNDATASIZE
00001034: PUSH1 0x20
00001036: GT
00001037: PUSH2 0x0a80
0000103a: JUMPI
0000103b: PUSH2 0x0a72
0000103e: DUP2
0000103f: DUP4
00001040: PUSH2 0x18d8
00001043: JUMP
00001044: JUMPDEST
00001045: DUP3
00001046: PUSH2 0x101e
00001049: JUMP
0000104a: JUMPDEST
0000104b: SWAP1
0000104c: CALLVALUE
0000104d: PUSH2 0x0952
00001050: JUMPI
00001051: PUSH0
00001052: CALLDATASIZE
00001053: PUSH1 0x03
00001055: NOT
00001056: ADD
00001057: SLT
00001058: PUSH2 0x0952
0000105b: JUMPI
0000105c: PUSH1 0x01
0000105e: SLOAD
0000105f: CALLER
00001060: PUSH1 0x01
00001062: PUSH1 0x01
00001064: PUSH1 0xa0
00001066: SHL
00001067: SUB
00001068: SWAP1
00001069: SWAP2
0000106a: AND
0000106b: SUB
0000106c: PUSH2 0x107a
0000106f: JUMPI
00001070: PUSH2 0x1078
00001073: CALLER
00001074: PUSH2 0x1fd6
00001077: JUMP
00001078: JUMPDEST
00001079: STOP
0000107a: JUMPDEST
0000107b: PUSH1 0x24
0000107d: SWAP2
0000107e: MLOAD
0000107f: SWAP1
00001080: PUSH4 0x118cdaa7
00001085: PUSH1 0xe0
00001087: SHL
00001088: DUP3
00001089: MSTORE
0000108a: CALLER
0000108b: SWAP1
0000108c: DUP3
0000108d: ADD
0000108e: MSTORE
0000108f: REVERT
00001090: JUMPDEST
00001091: CALLVALUE
00001092: PUSH2 0x0952
00001095: JUMPI
00001096: PUSH0
00001097: CALLDATASIZE
00001098: PUSH1 0x03
0000109a: NOT
0000109b: ADD
0000109c: SLT
0000109d: PUSH2 0x0952
000010a0: JUMPI
000010a1: PUSH1 0x20
000010a3: SWAP1
000010a4: PUSH1 0x06
000010a6: SLOAD
000010a7: SWAP1
000010a8: MLOAD
000010a9: SWAP1
000010aa: DUP2
000010ab: MSTORE
000010ac: RETURN
000010ad: JUMPDEST
000010ae: CALLVALUE
000010af: PUSH2 0x0952
000010b2: JUMPI
000010b3: PUSH0
000010b4: CALLDATASIZE
000010b5: PUSH1 0x03
000010b7: NOT
000010b8: ADD
000010b9: SLT
000010ba: PUSH2 0x0952
000010bd: JUMPI
000010be: PUSH1 0x20
000010c0: SWAP1
000010c1: MLOAD
000010c2: PUSH1 0xff
000010c4: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
000010e5: AND
000010e6: DUP2
000010e7: MSTORE
000010e8: RETURN
000010e9: JUMPDEST
000010ea: CALLVALUE
000010eb: PUSH2 0x0952
000010ee: JUMPI
000010ef: PUSH0
000010f0: CALLDATASIZE
000010f1: PUSH1 0x03
000010f3: NOT
000010f4: ADD
000010f5: SLT
000010f6: PUSH2 0x0952
000010f9: JUMPI
000010fa: PUSH1 0x20
000010fc: SWAP1
000010fd: PUSH1 0x0c
000010ff: SLOAD
00001100: SWAP1
00001101: MLOAD
00001102: SWAP1
00001103: DUP2
00001104: MSTORE
00001105: RETURN
00001106: JUMPDEST
00001107: CALLVALUE
00001108: PUSH2 0x0952
0000110b: JUMPI
0000110c: PUSH1 0x20
0000110e: CALLDATASIZE
0000110f: PUSH1 0x03
00001111: NOT
00001112: ADD
00001113: SLT
00001114: PUSH2 0x0952
00001117: JUMPI
00001118: PUSH1 0x20
0000111a: SWAP1
0000111b: PUSH2 0x1122
0000111e: PUSH2 0x1833
00001121: JUMP
00001122: JUMPDEST
00001123: SWAP1
00001124: PUSH1 0xff
00001126: PUSH1 0x0e
00001128: SLOAD
00001129: AND
0000112a: SWAP2
0000112b: DUP3
0000112c: ISZERO
0000112d: PUSH2 0x113a
00001130: JUMPI
00001131: JUMPDEST
00001132: POP
00001133: MLOAD
00001134: SWAP1
00001135: ISZERO
00001136: ISZERO
00001137: DUP2
00001138: MSTORE
00001139: RETURN
0000113a: JUMPDEST
0000113b: PUSH1 0x01
0000113d: PUSH1 0x01
0000113f: PUSH1 0xa0
00001141: SHL
00001142: SUB
00001143: AND
00001144: PUSH0
00001145: SWAP1
00001146: DUP2
00001147: MSTORE
00001148: PUSH1 0x0d
0000114a: DUP5
0000114b: MSTORE
0000114c: DUP2
0000114d: SWAP1
0000114e: KECCAK256
0000114f: SLOAD
00001150: PUSH1 0xff
00001152: AND
00001153: SWAP2
00001154: POP
00001155: DUP4
00001156: PUSH2 0x1131
00001159: JUMP
0000115a: JUMPDEST
0000115b: CALLVALUE
0000115c: PUSH2 0x0952
0000115f: JUMPI
00001160: PUSH0
00001161: CALLDATASIZE
00001162: PUSH1 0x03
00001164: NOT
00001165: ADD
00001166: SLT
00001167: PUSH2 0x0952
0000116a: JUMPI
0000116b: PUSH2 0x1172
0000116e: PUSH2 0x1fab
00001171: JUMP
00001172: JUMPDEST
00001173: PUSH1 0x01
00001175: DUP1
00001176: SLOAD
00001177: PUSH1 0x01
00001179: PUSH1 0x01
0000117b: PUSH1 0xa0
0000117d: SHL
0000117e: SUB
0000117f: NOT
00001180: SWAP1
00001181: DUP2
00001182: AND
00001183: SWAP1
00001184: SWAP2
00001185: SSTORE
00001186: PUSH0
00001187: DUP1
00001188: SLOAD
00001189: SWAP2
0000118a: DUP3
0000118b: AND
0000118c: DUP2
0000118d: SSTORE
0000118e: SWAP1
0000118f: PUSH1 0x01
00001191: PUSH1 0x01
00001193: PUSH1 0xa0
00001195: SHL
00001196: SUB
00001197: AND
00001198: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000011b9: DUP3
000011ba: DUP1
000011bb: LOG3
000011bc: STOP
000011bd: JUMPDEST
000011be: SWAP1
000011bf: CALLVALUE
000011c0: PUSH2 0x0952
000011c3: JUMPI
000011c4: PUSH1 0x20
000011c6: SWAP2
000011c7: DUP3
000011c8: PUSH1 0x03
000011ca: NOT
000011cb: CALLDATASIZE
000011cc: ADD
000011cd: SLT
000011ce: PUSH2 0x0952
000011d1: JUMPI
000011d2: DUP3
000011d3: PUSH2 0x11da
000011d6: PUSH2 0x1833
000011d9: JUMP
000011da: JUMPDEST
000011db: DUP3
000011dc: MLOAD
000011dd: PUSH4 0x70a08231
000011e2: PUSH1 0xe0
000011e4: SHL
000011e5: DUP2
000011e6: MSTORE
000011e7: PUSH1 0x01
000011e9: PUSH1 0x01
000011eb: PUSH1 0xa0
000011ed: SHL
000011ee: SUB
000011ef: SWAP2
000011f0: DUP3
000011f1: AND
000011f2: SWAP5
000011f3: DUP2
000011f4: ADD
000011f5: SWAP5
000011f6: SWAP1
000011f7: SWAP5
000011f8: MSTORE
000011f9: DUP4
000011fa: SWAP1
000011fb: PUSH1 0x24
000011fd: SWAP1
000011fe: DUP3
000011ff: SWAP1
00001200: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00001221: AND
00001222: GAS
00001223: STATICCALL
00001224: SWAP2
00001225: DUP3
00001226: ISZERO
00001227: PUSH2 0x1267
0000122a: JUMPI
0000122b: PUSH0
0000122c: SWAP3
0000122d: PUSH2 0x1238
00001230: JUMPI
00001231: JUMPDEST
00001232: POP
00001233: MLOAD
00001234: SWAP1
00001235: DUP2
00001236: MSTORE
00001237: RETURN
00001238: JUMPDEST
00001239: SWAP1
0000123a: SWAP2
0000123b: POP
0000123c: DUP3
0000123d: DUP2
0000123e: DUP2
0000123f: RETURNDATASIZE
00001240: DUP4
00001241: GT
00001242: PUSH2 0x1260
00001245: JUMPI
00001246: JUMPDEST
00001247: PUSH2 0x1250
0000124a: DUP2
0000124b: DUP4
0000124c: PUSH2 0x18d8
0000124f: JUMP
00001250: JUMPDEST
00001251: DUP2
00001252: ADD
00001253: SUB
00001254: SLT
00001255: PUSH2 0x0952
00001258: JUMPI
00001259: MLOAD
0000125a: SWAP1
0000125b: DUP4
0000125c: PUSH2 0x1231
0000125f: JUMP
00001260: JUMPDEST
00001261: POP
00001262: RETURNDATASIZE
00001263: PUSH2 0x1246
00001266: JUMP
00001267: JUMPDEST
00001268: POP
00001269: MLOAD
0000126a: RETURNDATASIZE
0000126b: PUSH0
0000126c: DUP3
0000126d: RETURNDATACOPY
0000126e: RETURNDATASIZE
0000126f: SWAP1
00001270: REVERT
00001271: JUMPDEST
00001272: SWAP1
00001273: CALLVALUE
00001274: PUSH2 0x0952
00001277: JUMPI
00001278: DUP2
00001279: PUSH1 0x03
0000127b: NOT
0000127c: CALLDATASIZE
0000127d: ADD
0000127e: SLT
0000127f: PUSH2 0x0952
00001282: JUMPI
00001283: DUP1
00001284: CALLDATALOAD
00001285: SWAP2
00001286: PUSH2 0x128d
00001289: PUSH2 0x1849
0000128c: JUMP
0000128d: JUMPDEST
0000128e: SWAP3
0000128f: PUSH2 0x1296
00001292: PUSH2 0x1ada
00001295: JUMP
00001296: JUMPDEST
00001297: PUSH1 0x0c
00001299: SSTORE
0000129a: NUMBER
0000129b: PUSH1 0x0b
0000129d: SSTORE
0000129e: PUSH1 0xff
000012a0: PUSH1 0x0e
000012a2: SLOAD
000012a3: AND
000012a4: ISZERO
000012a5: DUP1
000012a6: PUSH2 0x1448
000012a9: JUMPI
000012aa: JUMPDEST
000012ab: PUSH2 0x0e11
000012ae: JUMPI
000012af: PUSH2 0x12b6
000012b2: PUSH2 0x19c4
000012b5: JUMP
000012b6: JUMPDEST
000012b7: DUP1
000012b8: DUP3
000012b9: GT
000012ba: PUSH2 0x1418
000012bd: JUMPI
000012be: POP
000012bf: PUSH2 0x12c7
000012c2: DUP2
000012c3: PUSH2 0x1ea1
000012c6: JUMP
000012c7: JUMPDEST
000012c8: SWAP3
000012c9: PUSH2 0x12d0
000012cc: PUSH2 0x2334
000012cf: JUMP
000012d0: JUMPDEST
000012d1: DUP3
000012d2: MLOAD
000012d3: PUSH4 0x23b872dd
000012d8: PUSH1 0xe0
000012da: SHL
000012db: PUSH1 0x20
000012dd: DUP3
000012de: ADD
000012df: MSTORE
000012e0: CALLER
000012e1: PUSH1 0x24
000012e3: DUP3
000012e4: ADD
000012e5: MSTORE
000012e6: ADDRESS
000012e7: PUSH1 0x44
000012e9: DUP3
000012ea: ADD
000012eb: MSTORE
000012ec: PUSH1 0x64
000012ee: DUP1
000012ef: DUP3
000012f0: ADD
000012f1: DUP5
000012f2: SWAP1
000012f3: MSTORE
000012f4: DUP2
000012f5: MSTORE
000012f6: PUSH1 0x01
000012f8: PUSH1 0x01
000012fa: PUSH1 0xa0
000012fc: SHL
000012fd: SUB
000012fe: SWAP2
000012ff: SWAP1
00001300: PUSH2 0x130c
00001303: SWAP1
00001304: PUSH2 0x0ca3
00001307: DUP2
00001308: PUSH2 0x18bc
0000130b: JUMP
0000130c: JUMPDEST
0000130d: DUP2
0000130e: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
0000132f: AND
00001330: DUP1
00001331: EXTCODESIZE
00001332: ISZERO
00001333: PUSH2 0x0952
00001336: JUMPI
00001337: DUP5
00001338: MLOAD
00001339: PUSH4 0x10f98a65
0000133e: PUSH1 0xe1
00001340: SHL
00001341: DUP2
00001342: MSTORE
00001343: PUSH1 0x01
00001345: PUSH1 0x01
00001347: PUSH1 0xa0
00001349: SHL
0000134a: SUB
0000134b: DUP9
0000134c: AND
0000134d: DUP4
0000134e: DUP3
0000134f: ADD
00001350: SWAP1
00001351: DUP2
00001352: MSTORE
00001353: PUSH1 0x20
00001355: DUP2
00001356: ADD
00001357: DUP9
00001358: SWAP1
00001359: MSTORE
0000135a: SWAP1
0000135b: SWAP2
0000135c: PUSH0
0000135d: SWAP2
0000135e: DUP4
0000135f: SWAP2
00001360: SWAP1
00001361: DUP3
00001362: SWAP1
00001363: DUP5
00001364: SWAP1
00001365: DUP3
00001366: SWAP1
00001367: PUSH1 0x40
00001369: ADD
0000136a: SUB
0000136b: SWAP3
0000136c: GAS
0000136d: CALL
0000136e: DUP1
0000136f: ISZERO
00001370: PUSH2 0x0dd7
00001373: JUMPI
00001374: PUSH2 0x1409
00001377: JUMPI
00001378: JUMPDEST
00001379: POP
0000137a: PUSH2 0x1385
0000137d: DUP6
0000137e: PUSH1 0x07
00001380: SLOAD
00001381: PUSH2 0x1f3c
00001384: JUMP
00001385: JUMPDEST
00001386: DUP1
00001387: PUSH1 0x07
00001389: SSTORE
0000138a: PUSH1 0x06
0000138c: SLOAD
0000138d: DUP1
0000138e: SWAP2
0000138f: GT
00001390: PUSH2 0x13d4
00001393: JUMPI
00001394: POP
00001395: POP
00001396: PUSH1 0x20
00001398: SWAP5
00001399: DUP4
0000139a: MLOAD
0000139b: SWAP3
0000139c: DUP4
0000139d: MSTORE
0000139e: DUP5
0000139f: DUP7
000013a0: DUP5
000013a1: ADD
000013a2: MSTORE
000013a3: AND
000013a4: SWAP1
000013a5: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
000013c6: DUP4
000013c7: CALLER
000013c8: SWAP3
000013c9: LOG3
000013ca: PUSH1 0x01
000013cc: PUSH1 0x02
000013ce: SSTORE
000013cf: MLOAD
000013d0: SWAP1
000013d1: DUP2
000013d2: MSTORE
000013d3: RETURN
000013d4: JUMPDEST
000013d5: DUP5
000013d6: MLOAD
000013d7: PUSH4 0x6df60743
000013dc: PUSH1 0xe1
000013de: SHL
000013df: DUP2
000013e0: MSTORE
000013e1: PUSH1 0x01
000013e3: PUSH1 0x01
000013e5: PUSH1 0xa0
000013e7: SHL
000013e8: SUB
000013e9: DUP9
000013ea: AND
000013eb: SWAP3
000013ec: DUP2
000013ed: ADD
000013ee: SWAP3
000013ef: DUP4
000013f0: MSTORE
000013f1: PUSH1 0x20
000013f3: DUP4
000013f4: ADD
000013f5: DUP8
000013f6: SWAP1
000013f7: MSTORE
000013f8: PUSH1 0x40
000013fa: DUP4
000013fb: ADD
000013fc: SWAP2
000013fd: SWAP1
000013fe: SWAP2
000013ff: MSTORE
00001400: SWAP1
00001401: DUP2
00001402: SWAP1
00001403: PUSH1 0x60
00001405: ADD
00001406: SUB
00001407: SWAP1
00001408: REVERT
00001409: JUMPDEST
0000140a: PUSH2 0x1412
0000140d: SWAP1
0000140e: PUSH2 0x1894
00001411: JUMP
00001412: JUMPDEST
00001413: DUP7
00001414: PUSH2 0x1378
00001417: JUMP
00001418: JUMPDEST
00001419: SWAP2
0000141a: MLOAD
0000141b: PUSH4 0x3c8097d9
00001420: PUSH1 0xe1
00001422: SHL
00001423: DUP2
00001424: MSTORE
00001425: PUSH1 0x01
00001427: PUSH1 0x01
00001429: PUSH1 0xa0
0000142b: SHL
0000142c: SUB
0000142d: SWAP1
0000142e: SWAP5
0000142f: AND
00001430: SWAP3
00001431: DUP5
00001432: ADD
00001433: SWAP3
00001434: DUP4
00001435: MSTORE
00001436: PUSH1 0x20
00001438: DUP4
00001439: ADD
0000143a: MSTORE
0000143b: PUSH1 0x40
0000143d: DUP3
0000143e: ADD
0000143f: MSTORE
00001440: DUP2
00001441: SWAP1
00001442: PUSH1 0x60
00001444: ADD
00001445: SUB
00001446: SWAP1
00001447: REVERT
00001448: JUMPDEST
00001449: POP
0000144a: CALLER
0000144b: PUSH0
0000144c: MSTORE
0000144d: PUSH1 0x0d
0000144f: PUSH1 0x20
00001451: MSTORE
00001452: PUSH1 0xff
00001454: DUP3
00001455: PUSH0
00001456: KECCAK256
00001457: SLOAD
00001458: AND
00001459: ISZERO
0000145a: PUSH2 0x12aa
0000145d: JUMP
0000145e: JUMPDEST
0000145f: CALLVALUE
00001460: PUSH2 0x0952
00001463: JUMPI
00001464: PUSH0
00001465: CALLDATASIZE
00001466: PUSH1 0x03
00001468: NOT
00001469: ADD
0000146a: SLT
0000146b: PUSH2 0x0952
0000146e: JUMPI
0000146f: PUSH1 0x08
00001471: SLOAD
00001472: SWAP1
00001473: MLOAD
00001474: PUSH1 0x01
00001476: PUSH1 0x01
00001478: PUSH1 0xa0
0000147a: SHL
0000147b: SUB
0000147c: SWAP1
0000147d: SWAP2
0000147e: AND
0000147f: DUP2
00001480: MSTORE
00001481: PUSH1 0x20
00001483: SWAP1
00001484: RETURN
00001485: JUMPDEST
00001486: SWAP1
00001487: CALLVALUE
00001488: PUSH2 0x0952
0000148b: JUMPI
0000148c: PUSH1 0x20
0000148e: CALLDATASIZE
0000148f: PUSH1 0x03
00001491: NOT
00001492: ADD
00001493: SLT
00001494: PUSH2 0x0952
00001497: JUMPI
00001498: CALLDATALOAD
00001499: SWAP1
0000149a: DUP2
0000149b: ISZERO
0000149c: ISZERO
0000149d: DUP1
0000149e: SWAP3
0000149f: SUB
000014a0: PUSH2 0x0952
000014a3: JUMPI
000014a4: PUSH32 0x4b27f094e2c92966ec24dc9c9acf6c8dacdf2758b6a4b67ae3e38ae3f22f2125
000014c5: SWAP2
000014c6: PUSH1 0x20
000014c8: SWAP2
000014c9: PUSH2 0x14d0
000014cc: PUSH2 0x1fab
000014cf: JUMP
000014d0: JUMPDEST
000014d1: PUSH1 0xff
000014d3: NOT
000014d4: PUSH1 0x0e
000014d6: SLOAD
000014d7: AND
000014d8: PUSH1 0xff
000014da: DUP4
000014db: AND
000014dc: OR
000014dd: PUSH1 0x0e
000014df: SSTORE
000014e0: MLOAD
000014e1: SWAP1
000014e2: DUP2
000014e3: MSTORE
000014e4: LOG1
000014e5: STOP
000014e6: JUMPDEST
000014e7: CALLVALUE
000014e8: PUSH2 0x0952
000014eb: JUMPI
000014ec: PUSH0
000014ed: CALLDATASIZE
000014ee: PUSH1 0x03
000014f0: NOT
000014f1: ADD
000014f2: SLT
000014f3: PUSH2 0x0952
000014f6: JUMPI
000014f7: PUSH1 0x20
000014f9: SWAP1
000014fa: PUSH1 0xff
000014fc: PUSH1 0x03
000014fe: SLOAD
000014ff: AND
00001500: SWAP1
00001501: MLOAD
00001502: SWAP1
00001503: ISZERO
00001504: ISZERO
00001505: DUP2
00001506: MSTORE
00001507: RETURN
00001508: JUMPDEST
00001509: CALLVALUE
0000150a: PUSH2 0x0952
0000150d: JUMPI
0000150e: PUSH1 0x80
00001510: CALLDATASIZE
00001511: PUSH1 0x03
00001513: NOT
00001514: ADD
00001515: SLT
00001516: PUSH2 0x0952
00001519: JUMPI
0000151a: PUSH2 0x1078
0000151d: PUSH2 0x1524
00001520: PUSH2 0x1833
00001523: JUMP
00001524: JUMPDEST
00001525: PUSH1 0x64
00001527: CALLDATALOAD
00001528: SWAP1
00001529: PUSH1 0x44
0000152b: CALLDATALOAD
0000152c: SWAP1
0000152d: PUSH1 0x24
0000152f: CALLDATALOAD
00001530: SWAP1
00001531: PUSH2 0x1a6d
00001534: JUMP
00001535: JUMPDEST
00001536: CALLVALUE
00001537: PUSH2 0x0952
0000153a: JUMPI
0000153b: PUSH1 0x20
0000153d: CALLDATASIZE
0000153e: PUSH1 0x03
00001540: NOT
00001541: ADD
00001542: SLT
00001543: PUSH2 0x0952
00001546: JUMPI
00001547: PUSH2 0x02e2
0000154a: PUSH1 0x20
0000154c: SWAP3
0000154d: CALLDATALOAD
0000154e: PUSH2 0x19e9
00001551: JUMP
00001552: JUMPDEST
00001553: SWAP1
00001554: CALLVALUE
00001555: PUSH2 0x0952
00001558: JUMPI
00001559: PUSH1 0x20
0000155b: CALLDATASIZE
0000155c: PUSH1 0x03
0000155e: NOT
0000155f: ADD
00001560: SLT
00001561: PUSH2 0x0952
00001564: JUMPI
00001565: PUSH32 0xcda03296b648d791f2cee5a5af4b32860d8a3d01fae4126b12b4081224003767
00001586: SWAP2
00001587: PUSH1 0x20
00001589: SWAP2
0000158a: CALLDATALOAD
0000158b: SWAP1
0000158c: PUSH2 0x1593
0000158f: PUSH2 0x1fab
00001592: JUMP
00001593: JUMPDEST
00001594: DUP2
00001595: PUSH1 0x06
00001597: SSTORE
00001598: MLOAD
00001599: SWAP1
0000159a: DUP2
0000159b: MSTORE
0000159c: LOG1
0000159d: STOP
0000159e: JUMPDEST
0000159f: CALLVALUE
000015a0: PUSH2 0x0952
000015a3: JUMPI
000015a4: PUSH1 0x20
000015a6: CALLDATASIZE
000015a7: PUSH1 0x03
000015a9: NOT
000015aa: ADD
000015ab: SLT
000015ac: PUSH2 0x0952
000015af: JUMPI
000015b0: PUSH1 0x20
000015b2: SWAP1
000015b3: PUSH2 0x15ba
000015b6: PUSH2 0x1833
000015b9: JUMP
000015ba: JUMPDEST
000015bb: POP
000015bc: PUSH2 0x02e2
000015bf: PUSH2 0x19c4
000015c2: JUMP
000015c3: JUMPDEST
000015c4: CALLVALUE
000015c5: PUSH2 0x0952
000015c8: JUMPI
000015c9: PUSH0
000015ca: CALLDATASIZE
000015cb: PUSH1 0x03
000015cd: NOT
000015ce: ADD
000015cf: SLT
000015d0: PUSH2 0x0952
000015d3: JUMPI
000015d4: MLOAD
000015d5: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
000015f6: PUSH1 0x01
000015f8: PUSH1 0x01
000015fa: PUSH1 0xa0
000015fc: SHL
000015fd: SUB
000015fe: AND
000015ff: DUP2
00001600: MSTORE
00001601: PUSH1 0x20
00001603: SWAP1
00001604: RETURN
00001605: JUMPDEST
00001606: CALLVALUE
00001607: PUSH2 0x0952
0000160a: JUMPI
0000160b: PUSH0
0000160c: CALLDATASIZE
0000160d: PUSH1 0x03
0000160f: NOT
00001610: ADD
00001611: SLT
00001612: PUSH2 0x0952
00001615: JUMPI
00001616: DUP1
00001617: MLOAD
00001618: PUSH4 0x18160ddd
0000161d: PUSH1 0xe0
0000161f: SHL
00001620: DUP2
00001621: MSTORE
00001622: SWAP2
00001623: PUSH1 0x20
00001625: SWAP1
00001626: DUP4
00001627: SWAP1
00001628: DUP2
00001629: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
0000164a: PUSH1 0x01
0000164c: PUSH1 0x01
0000164e: PUSH1 0xa0
00001650: SHL
00001651: SUB
00001652: AND
00001653: GAS
00001654: STATICCALL
00001655: SWAP1
00001656: DUP2
00001657: ISZERO
00001658: PUSH2 0x16a1
0000165b: JUMPI
0000165c: PUSH0
0000165d: SWAP2
0000165e: PUSH2 0x166c
00001661: JUMPI
00001662: JUMPDEST
00001663: PUSH1 0x20
00001665: SWAP3
00001666: POP
00001667: MLOAD
00001668: SWAP1
00001669: DUP2
0000166a: MSTORE
0000166b: RETURN
0000166c: JUMPDEST
0000166d: SWAP1
0000166e: POP
0000166f: PUSH1 0x20
00001671: DUP3
00001672: RETURNDATASIZE
00001673: PUSH1 0x20
00001675: GT
00001676: PUSH2 0x1699
00001679: JUMPI
0000167a: JUMPDEST
0000167b: DUP2
0000167c: PUSH2 0x1687
0000167f: PUSH1 0x20
00001681: SWAP4
00001682: DUP4
00001683: PUSH2 0x18d8
00001686: JUMP
00001687: JUMPDEST
00001688: DUP2
00001689: ADD
0000168a: SUB
0000168b: SLT
0000168c: PUSH2 0x0952
0000168f: JUMPI
00001690: PUSH1 0x20
00001692: SWAP2
00001693: MLOAD
00001694: SWAP1
00001695: PUSH2 0x1662
00001698: JUMP
00001699: JUMPDEST
0000169a: RETURNDATASIZE
0000169b: SWAP2
0000169c: POP
0000169d: PUSH2 0x167a
000016a0: JUMP
000016a1: JUMPDEST
000016a2: MLOAD
000016a3: RETURNDATASIZE
000016a4: PUSH0
000016a5: DUP3
000016a6: RETURNDATACOPY
000016a7: RETURNDATASIZE
000016a8: SWAP1
000016a9: REVERT
000016aa: JUMPDEST
000016ab: CALLVALUE
000016ac: PUSH2 0x0952
000016af: JUMPI
000016b0: PUSH0
000016b1: CALLDATASIZE
000016b2: PUSH1 0x03
000016b4: NOT
000016b5: ADD
000016b6: SLT
000016b7: PUSH2 0x0952
000016ba: JUMPI
000016bb: PUSH1 0x20
000016bd: SWAP2
000016be: SLOAD
000016bf: SWAP1
000016c0: MLOAD
000016c1: SWAP1
000016c2: DUP2
000016c3: MSTORE
000016c4: RETURN
000016c5: JUMPDEST
000016c6: CALLVALUE
000016c7: PUSH2 0x0952
000016ca: JUMPI
000016cb: DUP1
000016cc: PUSH1 0x03
000016ce: NOT
000016cf: CALLDATASIZE
000016d0: ADD
000016d1: SLT
000016d2: PUSH2 0x0952
000016d5: JUMPI
000016d6: PUSH2 0x16dd
000016d9: PUSH2 0x1833
000016dc: JUMP
000016dd: JUMPDEST
000016de: PUSH1 0x24
000016e0: CALLDATALOAD
000016e1: SWAP1
000016e2: DUP2
000016e3: ISZERO
000016e4: ISZERO
000016e5: DUP1
000016e6: SWAP3
000016e7: SUB
000016e8: PUSH2 0x0952
000016eb: JUMPI
000016ec: PUSH32 0xf93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d
0000170d: SWAP2
0000170e: PUSH1 0x20
00001710: SWAP2
00001711: PUSH2 0x1718
00001714: PUSH2 0x1fab
00001717: JUMP
00001718: JUMPDEST
00001719: PUSH1 0x01
0000171b: PUSH1 0x01
0000171d: PUSH1 0xa0
0000171f: SHL
00001720: SUB
00001721: AND
00001722: PUSH0
00001723: DUP2
00001724: DUP2
00001725: MSTORE
00001726: PUSH1 0x0d
00001728: DUP5
00001729: MSTORE
0000172a: DUP6
0000172b: SWAP1
0000172c: KECCAK256
0000172d: DUP1
0000172e: SLOAD
0000172f: PUSH1 0xff
00001731: NOT
00001732: AND
00001733: PUSH1 0xff
00001735: DUP5
00001736: AND
00001737: OR
00001738: SWAP1
00001739: SSTORE
0000173a: SWAP4
0000173b: MLOAD
0000173c: SWAP1
0000173d: DUP2
0000173e: MSTORE
0000173f: LOG2
00001740: STOP
00001741: JUMPDEST
00001742: CALLVALUE
00001743: PUSH2 0x0952
00001746: JUMPI
00001747: PUSH1 0x20
00001749: CALLDATASIZE
0000174a: PUSH1 0x03
0000174c: NOT
0000174d: ADD
0000174e: SLT
0000174f: PUSH2 0x0952
00001752: JUMPI
00001753: PUSH2 0x02e2
00001756: PUSH1 0x20
00001758: SWAP3
00001759: CALLDATALOAD
0000175a: PUSH2 0x191b
0000175d: JUMP
0000175e: JUMPDEST
0000175f: CALLVALUE
00001760: PUSH2 0x0952
00001763: JUMPI
00001764: PUSH1 0x20
00001766: CALLDATASIZE
00001767: PUSH1 0x03
00001769: NOT
0000176a: ADD
0000176b: SLT
0000176c: PUSH2 0x0952
0000176f: JUMPI
00001770: PUSH2 0x02e2
00001773: PUSH2 0x0b9c
00001776: PUSH1 0x20
00001778: SWAP4
00001779: PUSH2 0x17a1
0000177c: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
0000179d: PUSH2 0x206c
000017a0: JUMP
000017a1: JUMPDEST
000017a2: PUSH2 0x057e
000017a5: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
000017c6: PUSH2 0x206c
000017c9: JUMP
000017ca: JUMPDEST
000017cb: SWAP2
000017cc: CALLVALUE
000017cd: PUSH2 0x0952
000017d0: JUMPI
000017d1: PUSH0
000017d2: CALLDATASIZE
000017d3: PUSH1 0x03
000017d5: NOT
000017d6: ADD
000017d7: SLT
000017d8: PUSH2 0x0952
000017db: JUMPI
000017dc: PUSH4 0x70a08231
000017e1: PUSH1 0xe0
000017e3: SHL
000017e4: DUP4
000017e5: MSTORE
000017e6: ADDRESS
000017e7: SWAP1
000017e8: DUP4
000017e9: ADD
000017ea: MSTORE
000017eb: PUSH1 0x20
000017ed: DUP3
000017ee: PUSH1 0x24
000017f0: DUP2
000017f1: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00001812: PUSH1 0x01
00001814: PUSH1 0x01
00001816: PUSH1 0xa0
00001818: SHL
00001819: SUB
0000181a: AND
0000181b: GAS
0000181c: STATICCALL
0000181d: SWAP1
0000181e: DUP2
0000181f: ISZERO
00001820: PUSH2 0x16a1
00001823: JUMPI
00001824: PUSH0
00001825: SWAP2
00001826: PUSH2 0x166c
00001829: JUMPI
0000182a: PUSH1 0x20
0000182c: SWAP3
0000182d: POP
0000182e: MLOAD
0000182f: SWAP1
00001830: DUP2
00001831: MSTORE
00001832: RETURN
00001833: JUMPDEST
00001834: PUSH1 0x04
00001836: CALLDATALOAD
00001837: SWAP1
00001838: PUSH1 0x01
0000183a: PUSH1 0x01
0000183c: PUSH1 0xa0
0000183e: SHL
0000183f: SUB
00001840: DUP3
00001841: AND
00001842: DUP3
00001843: SUB
00001844: PUSH2 0x0952
00001847: JUMPI
00001848: JUMP
00001849: JUMPDEST
0000184a: PUSH1 0x24
0000184c: CALLDATALOAD
0000184d: SWAP1
0000184e: PUSH1 0x01
00001850: PUSH1 0x01
00001852: PUSH1 0xa0
00001854: SHL
00001855: SUB
00001856: DUP3
00001857: AND
00001858: DUP3
00001859: SUB
0000185a: PUSH2 0x0952
0000185d: JUMPI
0000185e: JUMP
0000185f: JUMPDEST
00001860: PUSH1 0x60
00001862: SWAP1
00001863: PUSH1 0x03
00001865: NOT
00001866: ADD
00001867: SLT
00001868: PUSH2 0x0952
0000186b: JUMPI
0000186c: PUSH1 0x04
0000186e: CALLDATALOAD
0000186f: SWAP1
00001870: PUSH1 0x01
00001872: PUSH1 0x01
00001874: PUSH1 0xa0
00001876: SHL
00001877: SUB
00001878: SWAP1
00001879: PUSH1 0x24
0000187b: CALLDATALOAD
0000187c: DUP3
0000187d: DUP2
0000187e: AND
0000187f: DUP2
00001880: SUB
00001881: PUSH2 0x0952
00001884: JUMPI
00001885: SWAP2
00001886: PUSH1 0x44
00001888: CALLDATALOAD
00001889: SWAP1
0000188a: DUP2
0000188b: AND
0000188c: DUP2
0000188d: SUB
0000188e: PUSH2 0x0952
00001891: JUMPI
00001892: SWAP1
00001893: JUMP
00001894: JUMPDEST
00001895: PUSH8 0xffffffffffffffff
0000189e: DUP2
0000189f: GT
000018a0: PUSH2 0x18a8
000018a3: JUMPI
000018a4: PUSH1 0x40
000018a6: MSTORE
000018a7: JUMP
000018a8: JUMPDEST
000018a9: PUSH4 0x4e487b71
000018ae: PUSH1 0xe0
000018b0: SHL
000018b1: PUSH0
000018b2: MSTORE
000018b3: PUSH1 0x41
000018b5: PUSH1 0x04
000018b7: MSTORE
000018b8: PUSH1 0x24
000018ba: PUSH0
000018bb: REVERT
000018bc: JUMPDEST
000018bd: PUSH1 0xa0
000018bf: DUP2
000018c0: ADD
000018c1: SWAP1
000018c2: DUP2
000018c3: LT
000018c4: PUSH8 0xffffffffffffffff
000018cd: DUP3
000018ce: GT
000018cf: OR
000018d0: PUSH2 0x18a8
000018d3: JUMPI
000018d4: PUSH1 0x40
000018d6: MSTORE
000018d7: JUMP
000018d8: JUMPDEST
000018d9: SWAP1
000018da: PUSH1 0x1f
000018dc: DUP1
000018dd: NOT
000018de: SWAP2
000018df: ADD
000018e0: AND
000018e1: DUP2
000018e2: ADD
000018e3: SWAP1
000018e4: DUP2
000018e5: LT
000018e6: PUSH8 0xffffffffffffffff
000018ef: DUP3
000018f0: GT
000018f1: OR
000018f2: PUSH2 0x18a8
000018f5: JUMPI
000018f6: PUSH1 0x40
000018f8: MSTORE
000018f9: JUMP
000018fa: JUMPDEST
000018fb: SWAP2
000018fc: SWAP1
000018fd: DUP3
000018fe: SUB
000018ff: SWAP2
00001900: DUP3
00001901: GT
00001902: PUSH2 0x1907
00001905: JUMPI
00001906: JUMP
00001907: JUMPDEST
00001908: PUSH4 0x4e487b71
0000190d: PUSH1 0xe0
0000190f: SHL
00001910: PUSH0
00001911: MSTORE
00001912: PUSH1 0x11
00001914: PUSH1 0x04
00001916: MSTORE
00001917: PUSH1 0x24
00001919: PUSH0
0000191a: REVERT
0000191b: JUMPDEST
0000191c: PUSH1 0x05
0000191e: SLOAD
0000191f: DUP1
00001920: PUSH2 0x199a
00001923: JUMPI
00001924: JUMPDEST
00001925: POP
00001926: PUSH2 0x1984
00001929: PUSH2 0x1997
0000192c: SWAP2
0000192d: PUSH2 0x1955
00001930: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00001951: PUSH2 0x206c
00001954: JUMP
00001955: JUMPDEST
00001956: PUSH2 0x197e
00001959: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
0000197a: PUSH2 0x206c
0000197d: JUMP
0000197e: JUMPDEST
0000197f: SWAP2
00001980: PUSH2 0x1f8f
00001983: JUMP
00001984: JUMPDEST
00001985: PUSH2 0x198f
00001988: PUSH1 0x09
0000198a: SLOAD
0000198b: PUSH2 0x1f2e
0000198e: JUMP
0000198f: JUMPDEST
00001990: PUSH2 0x197e
00001993: PUSH2 0x1ada
00001996: JUMP
00001997: JUMPDEST
00001998: SWAP1
00001999: JUMP
0000199a: JUMPDEST
0000199b: PUSH8 0x0de0b6b3a7640000
000019a4: SWAP1
000019a5: DUP2
000019a6: SUB
000019a7: SWAP1
000019a8: DUP2
000019a9: GT
000019aa: PUSH2 0x1907
000019ad: JUMPI
000019ae: PUSH2 0x19bd
000019b1: PUSH2 0x1984
000019b4: SWAP2
000019b5: PUSH2 0x1997
000019b8: SWAP4
000019b9: PUSH2 0x1f49
000019bc: JUMP
000019bd: JUMPDEST
000019be: SWAP2
000019bf: POP
000019c0: PUSH2 0x1924
000019c3: JUMP
000019c4: JUMPDEST
000019c5: PUSH1 0x07
000019c7: SLOAD
000019c8: PUSH1 0x06
000019ca: SLOAD
000019cb: DUP1
000019cc: DUP3
000019cd: LT
000019ce: PUSH2 0x19d7
000019d1: JUMPI
000019d2: POP
000019d3: POP
000019d4: PUSH0
000019d5: SWAP1
000019d6: JUMP
000019d7: JUMPDEST
000019d8: PUSH2 0x1997
000019db: SWAP2
000019dc: PUSH2 0x19e4
000019df: SWAP2
000019e0: PUSH2 0x18fa
000019e3: JUMP
000019e4: JUMPDEST
000019e5: PUSH2 0x1bb9
000019e8: JUMP
000019e9: JUMPDEST
000019ea: SWAP1
000019eb: PUSH2 0x1a46
000019ee: PUSH2 0x0b9c
000019f1: PUSH1 0x05
000019f3: SLOAD
000019f4: SWAP4
000019f5: PUSH2 0x1a1d
000019f8: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
00001a19: PUSH2 0x206c
00001a1c: JUMP
00001a1d: JUMPDEST
00001a1e: PUSH2 0x0598
00001a21: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00001a42: PUSH2 0x206c
00001a45: JUMP
00001a46: JUMPDEST
00001a47: SWAP2
00001a48: DUP1
00001a49: PUSH2 0x1a4f
00001a4c: JUMPI
00001a4d: POP
00001a4e: JUMP
00001a4f: JUMPDEST
00001a50: SWAP1
00001a51: SWAP2
00001a52: PUSH8 0x0de0b6b3a7640000
00001a5b: SWAP2
00001a5c: DUP3
00001a5d: SUB
00001a5e: SWAP2
00001a5f: DUP3
00001a60: GT
00001a61: PUSH2 0x1907
00001a64: JUMPI
00001a65: PUSH2 0x1997
00001a68: SWAP2
00001a69: PUSH2 0x2119
00001a6c: JUMP
00001a6d: JUMPDEST
00001a6e: PUSH1 0xff
00001a70: PUSH1 0x03
00001a72: SLOAD
00001a73: AND
00001a74: PUSH2 0x1a98
00001a77: JUMPI
00001a78: PUSH2 0x1a80
00001a7b: SWAP1
00001a7c: PUSH2 0x1fd6
00001a7f: JUMP
00001a80: JUMPDEST
00001a81: PUSH1 0x06
00001a83: SSTORE
00001a84: PUSH1 0x04
00001a86: SSTORE
00001a87: PUSH1 0x05
00001a89: SSTORE
00001a8a: PUSH1 0x01
00001a8c: PUSH1 0xff
00001a8e: NOT
00001a8f: PUSH1 0x03
00001a91: SLOAD
00001a92: AND
00001a93: OR
00001a94: PUSH1 0x03
00001a96: SSTORE
00001a97: JUMP
00001a98: JUMPDEST
00001a99: PUSH1 0x40
00001a9b: MLOAD
00001a9c: PUSH4 0x68473d61
00001aa1: PUSH1 0xe1
00001aa3: SHL
00001aa4: DUP2
00001aa5: MSTORE
00001aa6: PUSH1 0x04
00001aa8: SWAP1
00001aa9: REVERT
00001aaa: JUMPDEST
00001aab: SWAP1
00001aac: DUP2
00001aad: PUSH1 0x20
00001aaf: SWAP2
00001ab0: SUB
00001ab1: SLT
00001ab2: PUSH2 0x0952
00001ab5: JUMPI
00001ab6: MLOAD
00001ab7: PUSH1 0xff
00001ab9: DUP2
00001aba: AND
00001abb: DUP2
00001abc: SUB
00001abd: PUSH2 0x0952
00001ac0: JUMPI
00001ac1: SWAP1
00001ac2: JUMP
00001ac3: JUMPDEST
00001ac4: MLOAD
00001ac5: SWAP1
00001ac6: PUSH10 0xffffffffffffffffffff
00001ad1: DUP3
00001ad2: AND
00001ad3: DUP3
00001ad4: SUB
00001ad5: PUSH2 0x0952
00001ad8: JUMPI
00001ad9: JUMP
00001ada: JUMPDEST
00001adb: PUSH1 0x0b
00001add: SLOAD
00001ade: NUMBER
00001adf: SUB
00001ae0: PUSH2 0x1ae9
00001ae3: JUMPI
00001ae4: PUSH1 0x0c
00001ae6: SLOAD
00001ae7: SWAP1
00001ae8: JUMP
00001ae9: JUMPDEST
00001aea: PUSH1 0x08
00001aec: SLOAD
00001aed: PUSH1 0x40
00001aef: MLOAD
00001af0: PUSH4 0x3fabe5a3
00001af5: PUSH1 0xe2
00001af7: SHL
00001af8: DUP2
00001af9: MSTORE
00001afa: SWAP1
00001afb: PUSH1 0xa0
00001afd: SWAP1
00001afe: DUP3
00001aff: SWAP1
00001b00: PUSH1 0x04
00001b02: SWAP1
00001b03: DUP3
00001b04: SWAP1
00001b05: PUSH1 0x01
00001b07: PUSH1 0x01
00001b09: PUSH1 0xa0
00001b0b: SHL
00001b0c: SUB
00001b0d: AND
00001b0e: GAS
00001b0f: STATICCALL
00001b10: DUP1
00001b11: ISZERO
00001b12: PUSH2 0x1bae
00001b15: JUMPI
00001b16: PUSH0
00001b17: SWAP2
00001b18: PUSH0
00001b19: SWAP2
00001b1a: PUSH2 0x1b5a
00001b1d: JUMPI
00001b1e: JUMPDEST
00001b1f: POP
00001b20: PUSH0
00001b21: DUP3
00001b22: SGT
00001b23: SWAP1
00001b24: DUP2
00001b25: ISZERO
00001b26: SWAP2
00001b27: PUSH2 0x1b45
00001b2a: JUMPI
00001b2b: JUMPDEST
00001b2c: POP
00001b2d: PUSH2 0x1b33
00001b30: JUMPI
00001b31: SWAP1
00001b32: JUMP
00001b33: JUMPDEST
00001b34: PUSH1 0x40
00001b36: MLOAD
00001b37: PUSH4 0xb41b6cb1
00001b3c: PUSH1 0xe0
00001b3e: SHL
00001b3f: DUP2
00001b40: MSTORE
00001b41: PUSH1 0x04
00001b43: SWAP1
00001b44: REVERT
00001b45: JUMPDEST
00001b46: PUSH2 0x1b50
00001b49: SWAP2
00001b4a: POP
00001b4b: TIMESTAMP
00001b4c: PUSH2 0x18fa
00001b4f: JUMP
00001b50: JUMPDEST
00001b51: PUSH1 0x0a
00001b53: SLOAD
00001b54: LT
00001b55: PUSH0
00001b56: PUSH2 0x1b2b
00001b59: JUMP
00001b5a: JUMPDEST
00001b5b: SWAP2
00001b5c: POP
00001b5d: POP
00001b5e: PUSH1 0xa0
00001b60: DUP2
00001b61: RETURNDATASIZE
00001b62: PUSH1 0xa0
00001b64: GT
00001b65: PUSH2 0x1ba6
00001b68: JUMPI
00001b69: JUMPDEST
00001b6a: DUP2
00001b6b: PUSH2 0x1b76
00001b6e: PUSH1 0xa0
00001b70: SWAP4
00001b71: DUP4
00001b72: PUSH2 0x18d8
00001b75: JUMP
00001b76: JUMPDEST
00001b77: DUP2
00001b78: ADD
00001b79: SUB
00001b7a: SLT
00001b7b: PUSH2 0x0952
00001b7e: JUMPI
00001b7f: PUSH2 0x1b87
00001b82: DUP2
00001b83: PUSH2 0x1ac3
00001b86: JUMP
00001b87: JUMPDEST
00001b88: POP
00001b89: PUSH1 0x20
00001b8b: DUP2
00001b8c: ADD
00001b8d: MLOAD
00001b8e: PUSH2 0x1b9e
00001b91: PUSH1 0x80
00001b93: PUSH1 0x60
00001b95: DUP5
00001b96: ADD
00001b97: MLOAD
00001b98: SWAP4
00001b99: ADD
00001b9a: PUSH2 0x1ac3
00001b9d: JUMP
00001b9e: JUMPDEST
00001b9f: POP
00001ba0: SWAP1
00001ba1: PUSH0
00001ba2: PUSH2 0x1b1e
00001ba5: JUMP
00001ba6: JUMPDEST
00001ba7: RETURNDATASIZE
00001ba8: SWAP2
00001ba9: POP
00001baa: PUSH2 0x1b69
00001bad: JUMP
00001bae: JUMPDEST
00001baf: PUSH1 0x40
00001bb1: MLOAD
00001bb2: RETURNDATASIZE
00001bb3: PUSH0
00001bb4: DUP3
00001bb5: RETURNDATACOPY
00001bb6: RETURNDATASIZE
00001bb7: SWAP1
00001bb8: REVERT
00001bb9: JUMPDEST
00001bba: PUSH2 0x1c28
00001bbd: PUSH2 0x1c15
00001bc0: PUSH1 0x04
00001bc2: SLOAD
00001bc3: SWAP3
00001bc4: PUSH2 0x1bec
00001bc7: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
00001be8: PUSH2 0x206c
00001beb: JUMP
00001bec: JUMPDEST
00001bed: PUSH2 0x197e
00001bf0: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00001c11: PUSH2 0x206c
00001c14: JUMP
00001c15: JUMPDEST
00001c16: PUSH2 0x1c1d
00001c19: PUSH2 0x1ada
00001c1c: JUMP
00001c1d: JUMPDEST
00001c1e: PUSH2 0x197e
00001c21: PUSH1 0x09
00001c23: SLOAD
00001c24: PUSH2 0x1f2e
00001c27: JUMP
00001c28: JUMPDEST
00001c29: SWAP1
00001c2a: DUP1
00001c2b: PUSH2 0x1c32
00001c2e: JUMPI
00001c2f: POP
00001c30: SWAP1
00001c31: JUMP
00001c32: JUMPDEST
00001c33: PUSH8 0x0de0b6b3a7640000
00001c3c: SWAP1
00001c3d: DUP2
00001c3e: SUB
00001c3f: SWAP1
00001c40: DUP2
00001c41: GT
00001c42: PUSH2 0x1907
00001c45: JUMPI
00001c46: PUSH2 0x1997
00001c49: SWAP2
00001c4a: PUSH2 0x1f49
00001c4d: JUMP
00001c4e: JUMPDEST
00001c4f: PUSH1 0x07
00001c51: SLOAD
00001c52: PUSH1 0x06
00001c54: SLOAD
00001c55: SWAP1
00001c56: DUP2
00001c57: DUP2
00001c58: LT
00001c59: PUSH2 0x1c62
00001c5c: JUMPI
00001c5d: POP
00001c5e: POP
00001c5f: PUSH0
00001c60: SWAP1
00001c61: JUMP
00001c62: JUMPDEST
00001c63: PUSH2 0x1997
00001c66: SWAP2
00001c67: PUSH2 0x18fa
00001c6a: JUMP
00001c6b: JUMPDEST
00001c6c: PUSH1 0x40
00001c6e: MLOAD
00001c6f: PUSH4 0x70a08231
00001c74: PUSH1 0xe0
00001c76: SHL
00001c77: DUP1
00001c78: DUP3
00001c79: MSTORE
00001c7a: PUSH1 0x01
00001c7c: PUSH1 0x01
00001c7e: PUSH1 0xa0
00001c80: SHL
00001c81: SUB
00001c82: SWAP3
00001c83: DUP4
00001c84: AND
00001c85: PUSH1 0x04
00001c87: DUP4
00001c88: ADD
00001c89: MSTORE
00001c8a: SWAP2
00001c8b: PUSH1 0x20
00001c8d: SWAP2
00001c8e: DUP3
00001c8f: DUP2
00001c90: PUSH1 0x24
00001c92: DUP2
00001c93: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00001cb4: DUP7
00001cb5: AND
00001cb6: GAS
00001cb7: STATICCALL
00001cb8: DUP1
00001cb9: ISZERO
00001cba: PUSH2 0x1bae
00001cbd: JUMPI
00001cbe: DUP4
00001cbf: SWAP2
00001cc0: PUSH0
00001cc1: SWAP2
00001cc2: PUSH2 0x1d55
00001cc5: JUMPI
00001cc6: JUMPDEST
00001cc7: POP
00001cc8: PUSH2 0x1cd0
00001ccb: SWAP1
00001ccc: PUSH2 0x19e9
00001ccf: JUMP
00001cd0: JUMPDEST
00001cd1: SWAP4
00001cd2: PUSH1 0x24
00001cd4: PUSH1 0x40
00001cd6: MLOAD
00001cd7: DUP1
00001cd8: SWAP5
00001cd9: DUP2
00001cda: SWAP4
00001cdb: DUP3
00001cdc: MSTORE
00001cdd: ADDRESS
00001cde: PUSH1 0x04
00001ce0: DUP4
00001ce1: ADD
00001ce2: MSTORE
00001ce3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00001d04: AND
00001d05: GAS
00001d06: STATICCALL
00001d07: SWAP2
00001d08: DUP3
00001d09: ISZERO
00001d0a: PUSH2 0x1bae
00001d0d: JUMPI
00001d0e: PUSH0
00001d0f: SWAP3
00001d10: PUSH2 0x1d27
00001d13: JUMPI
00001d14: JUMPDEST
00001d15: POP
00001d16: POP
00001d17: DUP2
00001d18: DUP2
00001d19: GT
00001d1a: ISZERO
00001d1b: PUSH2 0x1d22
00001d1e: JUMPI
00001d1f: POP
00001d20: SWAP1
00001d21: JUMP
00001d22: JUMPDEST
00001d23: SWAP1
00001d24: POP
00001d25: SWAP1
00001d26: JUMP
00001d27: JUMPDEST
00001d28: SWAP1
00001d29: DUP1
00001d2a: SWAP3
00001d2b: POP
00001d2c: DUP2
00001d2d: RETURNDATASIZE
00001d2e: DUP4
00001d2f: GT
00001d30: PUSH2 0x1d4e
00001d33: JUMPI
00001d34: JUMPDEST
00001d35: PUSH2 0x1d3e
00001d38: DUP2
00001d39: DUP4
00001d3a: PUSH2 0x18d8
00001d3d: JUMP
00001d3e: JUMPDEST
00001d3f: DUP2
00001d40: ADD
00001d41: SUB
00001d42: SLT
00001d43: PUSH2 0x0952
00001d46: JUMPI
00001d47: MLOAD
00001d48: PUSH0
00001d49: DUP1
00001d4a: PUSH2 0x1d14
00001d4d: JUMP
00001d4e: JUMPDEST
00001d4f: POP
00001d50: RETURNDATASIZE
00001d51: PUSH2 0x1d34
00001d54: JUMP
00001d55: JUMPDEST
00001d56: DUP3
00001d57: DUP2
00001d58: SWAP4
00001d59: SWAP3
00001d5a: POP
00001d5b: RETURNDATASIZE
00001d5c: DUP4
00001d5d: GT
00001d5e: PUSH2 0x1d7f
00001d61: JUMPI
00001d62: JUMPDEST
00001d63: PUSH2 0x1d6c
00001d66: DUP2
00001d67: DUP4
00001d68: PUSH2 0x18d8
00001d6b: JUMP
00001d6c: JUMPDEST
00001d6d: DUP2
00001d6e: ADD
00001d6f: SUB
00001d70: SLT
00001d71: PUSH2 0x0952
00001d74: JUMPI
00001d75: MLOAD
00001d76: DUP3
00001d77: SWAP1
00001d78: PUSH2 0x1cd0
00001d7b: PUSH2 0x1cc6
00001d7e: JUMP
00001d7f: JUMPDEST
00001d80: POP
00001d81: RETURNDATASIZE
00001d82: PUSH2 0x1d62
00001d85: JUMP
00001d86: JUMPDEST
00001d87: PUSH1 0x40
00001d89: MLOAD
00001d8a: PUSH4 0x70a08231
00001d8f: PUSH1 0xe0
00001d91: SHL
00001d92: DUP1
00001d93: DUP3
00001d94: MSTORE
00001d95: ADDRESS
00001d96: PUSH1 0x04
00001d98: DUP4
00001d99: ADD
00001d9a: MSTORE
00001d9b: PUSH1 0x20
00001d9d: SWAP3
00001d9e: SWAP1
00001d9f: SWAP2
00001da0: PUSH1 0x01
00001da2: PUSH1 0x01
00001da4: PUSH1 0xa0
00001da6: SHL
00001da7: SUB
00001da8: SWAP2
00001da9: DUP5
00001daa: DUP3
00001dab: PUSH1 0x24
00001dad: DUP2
00001dae: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00001dcf: DUP8
00001dd0: AND
00001dd1: GAS
00001dd2: STATICCALL
00001dd3: DUP1
00001dd4: ISZERO
00001dd5: PUSH2 0x1bae
00001dd8: JUMPI
00001dd9: DUP6
00001dda: SWAP3
00001ddb: PUSH0
00001ddc: SWAP2
00001ddd: PUSH2 0x1e6e
00001de0: JUMPI
00001de1: JUMPDEST
00001de2: POP
00001de3: PUSH2 0x1ded
00001de6: PUSH1 0x24
00001de8: SWAP2
00001de9: PUSH2 0x191b
00001dec: JUMP
00001ded: JUMPDEST
00001dee: SWAP5
00001def: DUP5
00001df0: PUSH1 0x40
00001df2: MLOAD
00001df3: SWAP6
00001df4: DUP7
00001df5: SWAP5
00001df6: DUP6
00001df7: SWAP4
00001df8: DUP5
00001df9: MSTORE
00001dfa: AND
00001dfb: PUSH1 0x04
00001dfd: DUP4
00001dfe: ADD
00001dff: MSTORE
00001e00: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e
00001e21: AND
00001e22: GAS
00001e23: STATICCALL
00001e24: SWAP3
00001e25: DUP4
00001e26: ISZERO
00001e27: PUSH2 0x1bae
00001e2a: JUMPI
00001e2b: PUSH0
00001e2c: SWAP4
00001e2d: PUSH2 0x1e3e
00001e30: JUMPI
00001e31: POP
00001e32: POP
00001e33: DUP2
00001e34: DUP2
00001e35: GT
00001e36: ISZERO
00001e37: PUSH2 0x1d22
00001e3a: JUMPI
00001e3b: POP
00001e3c: SWAP1
00001e3d: JUMP
00001e3e: JUMPDEST
00001e3f: SWAP1
00001e40: DUP1
00001e41: SWAP3
00001e42: SWAP4
00001e43: POP
00001e44: DUP2
00001e45: RETURNDATASIZE
00001e46: DUP4
00001e47: GT
00001e48: PUSH2 0x1e67
00001e4b: JUMPI
00001e4c: JUMPDEST
00001e4d: PUSH2 0x1e56
00001e50: DUP2
00001e51: DUP4
00001e52: PUSH2 0x18d8
00001e55: JUMP
00001e56: JUMPDEST
00001e57: DUP2
00001e58: ADD
00001e59: SUB
00001e5a: SLT
00001e5b: PUSH2 0x0952
00001e5e: JUMPI
00001e5f: MLOAD
00001e60: SWAP1
00001e61: PUSH0
00001e62: DUP1
00001e63: PUSH2 0x1d14
00001e66: JUMP
00001e67: JUMPDEST
00001e68: POP
00001e69: RETURNDATASIZE
00001e6a: PUSH2 0x1e4c
00001e6d: JUMP
00001e6e: JUMPDEST
00001e6f: DUP4
00001e70: DUP2
00001e71: SWAP5
00001e72: SWAP3
00001e73: POP
00001e74: RETURNDATASIZE
00001e75: DUP4
00001e76: GT
00001e77: PUSH2 0x1e9a
00001e7a: JUMPI
00001e7b: JUMPDEST
00001e7c: PUSH2 0x1e85
00001e7f: DUP2
00001e80: DUP4
00001e81: PUSH2 0x18d8
00001e84: JUMP
00001e85: JUMPDEST
00001e86: DUP2
00001e87: ADD
00001e88: SUB
00001e89: SLT
00001e8a: PUSH2 0x0952
00001e8d: JUMPI
00001e8e: SWAP1
00001e8f: MLOAD
00001e90: DUP5
00001e91: SWAP2
00001e92: SWAP1
00001e93: PUSH2 0x1ded
00001e96: PUSH2 0x1de1
00001e99: JUMP
00001e9a: JUMPDEST
00001e9b: POP
00001e9c: RETURNDATASIZE
00001e9d: PUSH2 0x1e7b
00001ea0: JUMP
00001ea1: JUMPDEST
00001ea2: PUSH1 0x04
00001ea4: SLOAD
00001ea5: DUP1
00001ea6: PUSH2 0x1f04
00001ea9: JUMPI
00001eaa: JUMPDEST
00001eab: POP
00001eac: PUSH2 0x0585
00001eaf: PUSH2 0x1997
00001eb2: SWAP2
00001eb3: PUSH2 0x1edb
00001eb6: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012
00001ed7: PUSH2 0x206c
00001eda: JUMP
00001edb: JUMPDEST
00001edc: PUSH2 0x0598
00001edf: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006
00001f00: PUSH2 0x206c
00001f03: JUMP
00001f04: JUMPDEST
00001f05: PUSH8 0x0de0b6b3a7640000
00001f0e: SWAP1
00001f0f: DUP2
00001f10: SUB
00001f11: SWAP1
00001f12: DUP2
00001f13: GT
00001f14: PUSH2 0x1907
00001f17: JUMPI
00001f18: PUSH2 0x1f27
00001f1b: PUSH2 0x0585
00001f1e: SWAP2
00001f1f: PUSH2 0x1997
00001f22: SWAP4
00001f23: PUSH2 0x2119
00001f26: JUMP
00001f27: JUMPDEST
00001f28: SWAP2
00001f29: POP
00001f2a: PUSH2 0x1eaa
00001f2d: JUMP
00001f2e: JUMPDEST
00001f2f: PUSH1 0x4d
00001f31: DUP2
00001f32: GT
00001f33: PUSH2 0x1907
00001f36: JUMPI
00001f37: PUSH1 0x0a
00001f39: EXP
00001f3a: SWAP1
00001f3b: JUMP
00001f3c: JUMPDEST
00001f3d: SWAP2
00001f3e: SWAP1
00001f3f: DUP3
00001f40: ADD
00001f41: DUP1
00001f42: SWAP3
00001f43: GT
00001f44: PUSH2 0x1907
00001f47: JUMPI
00001f48: JUMP
00001f49: JUMPDEST
00001f4a: SWAP1
00001f4b: PUSH2 0x1f54
00001f4e: DUP2
00001f4f: DUP4
00001f50: PUSH2 0x218d
00001f53: JUMP
00001f54: JUMPDEST
00001f55: SWAP2
00001f56: DUP2
00001f57: ISZERO
00001f58: PUSH2 0x1f7b
00001f5b: JUMPI
00001f5c: PUSH8 0x0de0b6b3a7640000
00001f65: SWAP1
00001f66: MULMOD
00001f67: PUSH2 0x1f6d
00001f6a: JUMPI
00001f6b: SWAP1
00001f6c: JUMP
00001f6d: JUMPDEST
00001f6e: PUSH1 0x01
00001f70: DUP2
00001f71: ADD
00001f72: DUP1
00001f73: SWAP2
00001f74: GT
00001f75: PUSH2 0x1907
00001f78: JUMPI
00001f79: SWAP1
00001f7a: JUMP
00001f7b: JUMPDEST
00001f7c: PUSH4 0x4e487b71
00001f81: PUSH1 0xe0
00001f83: SHL
00001f84: PUSH0
00001f85: MSTORE
00001f86: PUSH1 0x12
00001f88: PUSH1 0x04
00001f8a: MSTORE
00001f8b: PUSH1 0x24
00001f8d: PUSH0
00001f8e: REVERT
00001f8f: JUMPDEST
00001f90: SWAP2
00001f91: SWAP1
00001f92: PUSH2 0x1f9c
00001f95: DUP3
00001f96: DUP3
00001f97: DUP6
00001f98: PUSH2 0x2208
00001f9b: JUMP
00001f9c: JUMPDEST
00001f9d: SWAP3
00001f9e: DUP3
00001f9f: ISZERO
00001fa0: PUSH2 0x1f7b
00001fa3: JUMPI
00001fa4: MULMOD
00001fa5: PUSH2 0x1f6d
00001fa8: JUMPI
00001fa9: SWAP1
00001faa: JUMP
00001fab: JUMPDEST
00001fac: PUSH0
00001fad: SLOAD
00001fae: PUSH1 0x01
00001fb0: PUSH1 0x01
00001fb2: PUSH1 0xa0
00001fb4: SHL
00001fb5: SUB
00001fb6: AND
00001fb7: CALLER
00001fb8: SUB
00001fb9: PUSH2 0x1fbe
00001fbc: JUMPI
00001fbd: JUMP
00001fbe: JUMPDEST
00001fbf: PUSH1 0x40
00001fc1: MLOAD
00001fc2: PUSH4 0x118cdaa7
00001fc7: PUSH1 0xe0
00001fc9: SHL
00001fca: DUP2
00001fcb: MSTORE
00001fcc: CALLER
00001fcd: PUSH1 0x04
00001fcf: DUP3
00001fd0: ADD
00001fd1: MSTORE
00001fd2: PUSH1 0x24
00001fd4: SWAP1
00001fd5: REVERT
00001fd6: JUMPDEST
00001fd7: PUSH12 0xffffffffffffffffffffffff
00001fe4: PUSH1 0xa0
00001fe6: SHL
00001fe7: SWAP1
00001fe8: DUP2
00001fe9: PUSH1 0x01
00001feb: SLOAD
00001fec: AND
00001fed: PUSH1 0x01
00001fef: SSTORE
00001ff0: PUSH0
00001ff1: SLOAD
00001ff2: PUSH1 0x01
00001ff4: DUP1
00001ff5: PUSH1 0xa0
00001ff7: SHL
00001ff8: SUB
00001ff9: DUP1
00001ffa: SWAP3
00001ffb: AND
00001ffc: DUP1
00001ffd: SWAP4
00001ffe: DUP3
00001fff: AND
00002000: OR
00002001: PUSH0
00002002: SSTORE
00002003: AND
00002004: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00002025: PUSH0
00002026: DUP1
00002027: LOG3
00002028: JUMP
00002029: JUMPDEST
0000202a: PUSH1 0x40
0000202c: MLOAD
0000202d: PUSH4 0xa9059cbb
00002032: PUSH1 0xe0
00002034: SHL
00002035: PUSH1 0x20
00002037: DUP3
00002038: ADD
00002039: MSTORE
0000203a: PUSH1 0x01
0000203c: PUSH1 0x01
0000203e: PUSH1 0xa0
00002040: SHL
00002041: SUB
00002042: SWAP3
00002043: SWAP1
00002044: SWAP3
00002045: AND
00002046: PUSH1 0x24
00002048: DUP4
00002049: ADD
0000204a: MSTORE
0000204b: PUSH1 0x44
0000204d: DUP1
0000204e: DUP4
0000204f: ADD
00002050: SWAP4
00002051: SWAP1
00002052: SWAP4
00002053: MSTORE
00002054: SWAP2
00002055: DUP2
00002056: MSTORE
00002057: PUSH2 0x206a
0000205a: SWAP2
0000205b: PUSH2 0x2065
0000205e: PUSH1 0x64
00002060: DUP4
00002061: PUSH2 0x18d8
00002064: JUMP
00002065: JUMPDEST
00002066: PUSH2 0x227b
00002069: JUMP
0000206a: JUMPDEST
0000206b: JUMP
0000206c: JUMPDEST
0000206d: PUSH1 0xff
0000206f: AND
00002070: PUSH1 0x4d
00002072: DUP2
00002073: GT
00002074: PUSH2 0x1907
00002077: JUMPI
00002078: PUSH1 0x0a
0000207a: EXP
0000207b: SWAP1
0000207c: JUMP
0000207d: JUMPDEST
0000207e: SWAP1
0000207f: PUSH8 0x0de0b6b3a7640000
00002088: DUP1
00002089: DUP4
0000208a: MUL
0000208b: SWAP2
0000208c: SWAP1
0000208d: PUSH0
0000208e: NOT
0000208f: DUP5
00002090: DUP3
00002091: MULMOD
00002092: SWAP4
00002093: DUP4
00002094: DUP1
00002095: DUP7
00002096: LT
00002097: SWAP6
00002098: SUB
00002099: SWAP5
0000209a: DUP1
0000209b: DUP7
0000209c: SUB
0000209d: SWAP6
0000209e: EQ
0000209f: PUSH2 0x210b
000020a2: JUMPI
000020a3: DUP5
000020a4: DUP4
000020a5: GT
000020a6: ISZERO
000020a7: PUSH2 0x20f9
000020aa: JUMPI
000020ab: DUP3
000020ac: SWAP2
000020ad: MULMOD
000020ae: DUP2
000020af: PUSH0
000020b0: SUB
000020b1: DUP3
000020b2: AND
000020b3: DUP1
000020b4: SWAP3
000020b5: DIV
000020b6: PUSH1 0x02
000020b8: DUP1
000020b9: DUP3
000020ba: PUSH1 0x03
000020bc: MUL
000020bd: XOR
000020be: DUP1
000020bf: DUP4
000020c0: MUL
000020c1: DUP3
000020c2: SUB
000020c3: MUL
000020c4: DUP1
000020c5: DUP4
000020c6: MUL
000020c7: DUP3
000020c8: SUB
000020c9: MUL
000020ca: DUP1
000020cb: DUP4
000020cc: MUL
000020cd: DUP3
000020ce: SUB
000020cf: MUL
000020d0: DUP1
000020d1: DUP4
000020d2: MUL
000020d3: DUP3
000020d4: SUB
000020d5: MUL
000020d6: DUP1
000020d7: DUP4
000020d8: MUL
000020d9: DUP3
000020da: SUB
000020db: MUL
000020dc: DUP1
000020dd: SWAP3
000020de: MUL
000020df: SWAP1
000020e0: SUB
000020e1: MUL
000020e2: SWAP4
000020e3: PUSH1 0x01
000020e5: DUP4
000020e6: DUP1
000020e7: PUSH0
000020e8: SUB
000020e9: DIV
000020ea: ADD
000020eb: SWAP1
000020ec: DUP5
000020ed: DUP4
000020ee: GT
000020ef: SWAP1
000020f0: SUB
000020f1: MUL
000020f2: SWAP3
000020f3: SUB
000020f4: DIV
000020f5: OR
000020f6: MUL
000020f7: SWAP1
000020f8: JUMP
000020f9: JUMPDEST
000020fa: PUSH1 0x40
000020fc: MLOAD
000020fd: PUSH4 0x227bc153
00002102: PUSH1 0xe0
00002104: SHL
00002105: DUP2
00002106: MSTORE
00002107: PUSH1 0x04
00002109: SWAP1
0000210a: REVERT
0000210b: JUMPDEST
0000210c: POP
0000210d: POP
0000210e: DUP1
0000210f: SWAP3
00002110: POP
00002111: ISZERO
00002112: PUSH2 0x1f7b
00002115: JUMPI
00002116: DIV
00002117: SWAP1
00002118: JUMP
00002119: JUMPDEST
0000211a: SWAP1
0000211b: DUP1
0000211c: DUP3
0000211d: MUL
0000211e: SWAP1
0000211f: PUSH0
00002120: NOT
00002121: DUP2
00002122: DUP5
00002123: MULMOD
00002124: SWAP1
00002125: DUP3
00002126: DUP1
00002127: DUP4
00002128: LT
00002129: SWAP3
0000212a: SUB
0000212b: SWAP2
0000212c: DUP1
0000212d: DUP4
0000212e: SUB
0000212f: SWAP3
00002130: EQ
00002131: PUSH2 0x217c
00002134: JUMPI
00002135: PUSH8 0x0de0b6b3a7640000
0000213e: SWAP1
0000213f: DUP3
00002140: DUP3
00002141: GT
00002142: ISZERO
00002143: PUSH2 0x20f9
00002146: JUMPI
00002147: PUSH32 0xaccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669
00002168: SWAP5
00002169: MULMOD
0000216a: SWAP1
0000216b: DUP3
0000216c: DUP3
0000216d: GT
0000216e: SWAP1
0000216f: SUB
00002170: PUSH1 0xee
00002172: SHL
00002173: SWAP2
00002174: SUB
00002175: PUSH1 0x12
00002177: SHR
00002178: OR
00002179: MUL
0000217a: SWAP1
0000217b: JUMP
0000217c: JUMPDEST
0000217d: POP
0000217e: POP
0000217f: PUSH8 0x0de0b6b3a7640000
00002188: SWAP2
00002189: POP
0000218a: DIV
0000218b: SWAP1
0000218c: JUMP
0000218d: JUMPDEST
0000218e: PUSH8 0x0de0b6b3a7640000
00002197: SWAP2
00002198: DUP2
00002199: DUP4
0000219a: MUL
0000219b: SWAP2
0000219c: PUSH0
0000219d: NOT
0000219e: DUP5
0000219f: DUP3
000021a0: MULMOD
000021a1: SWAP4
000021a2: DUP4
000021a3: DUP1
000021a4: DUP7
000021a5: LT
000021a6: SWAP6
000021a7: SUB
000021a8: SWAP5
000021a9: DUP1
000021aa: DUP7
000021ab: SUB
000021ac: SWAP6
000021ad: EQ
000021ae: PUSH2 0x210b
000021b1: JUMPI
000021b2: DUP5
000021b3: DUP4
000021b4: GT
000021b5: ISZERO
000021b6: PUSH2 0x20f9
000021b9: JUMPI
000021ba: DUP3
000021bb: SWAP2
000021bc: MULMOD
000021bd: DUP2
000021be: PUSH0
000021bf: SUB
000021c0: DUP3
000021c1: AND
000021c2: DUP1
000021c3: SWAP3
000021c4: DIV
000021c5: PUSH1 0x02
000021c7: DUP1
000021c8: DUP3
000021c9: PUSH1 0x03
000021cb: MUL
000021cc: XOR
000021cd: DUP1
000021ce: DUP4
000021cf: MUL
000021d0: DUP3
000021d1: SUB
000021d2: MUL
000021d3: DUP1
000021d4: DUP4
000021d5: MUL
000021d6: DUP3
000021d7: SUB
000021d8: MUL
000021d9: DUP1
000021da: DUP4
000021db: MUL
000021dc: DUP3
000021dd: SUB
000021de: MUL
000021df: DUP1
000021e0: DUP4
000021e1: MUL
000021e2: DUP3
000021e3: SUB
000021e4: MUL
000021e5: DUP1
000021e6: DUP4
000021e7: MUL
000021e8: DUP3
000021e9: SUB
000021ea: MUL
000021eb: DUP1
000021ec: SWAP3
000021ed: MUL
000021ee: SWAP1
000021ef: SUB
000021f0: MUL
000021f1: SWAP4
000021f2: PUSH1 0x01
000021f4: DUP4
000021f5: DUP1
000021f6: PUSH0
000021f7: SUB
000021f8: DIV
000021f9: ADD
000021fa: SWAP1
000021fb: DUP5
000021fc: DUP4
000021fd: GT
000021fe: SWAP1
000021ff: SUB
00002200: MUL
00002201: SWAP3
00002202: SUB
00002203: DIV
00002204: OR
00002205: MUL
00002206: SWAP1
00002207: JUMP
00002208: JUMPDEST
00002209: SWAP1
0000220a: SWAP2
0000220b: DUP3
0000220c: DUP3
0000220d: MUL
0000220e: SWAP2
0000220f: PUSH0
00002210: NOT
00002211: DUP5
00002212: DUP3
00002213: MULMOD
00002214: SWAP4
00002215: DUP4
00002216: DUP1
00002217: DUP7
00002218: LT
00002219: SWAP6
0000221a: SUB
0000221b: SWAP5
0000221c: DUP1
0000221d: DUP7
0000221e: SUB
0000221f: SWAP6
00002220: EQ
00002221: PUSH2 0x210b
00002224: JUMPI
00002225: DUP5
00002226: DUP4
00002227: GT
00002228: ISZERO
00002229: PUSH2 0x20f9
0000222c: JUMPI
0000222d: DUP3
0000222e: SWAP2
0000222f: MULMOD
00002230: DUP2
00002231: PUSH0
00002232: SUB
00002233: DUP3
00002234: AND
00002235: DUP1
00002236: SWAP3
00002237: DIV
00002238: PUSH1 0x02
0000223a: DUP1
0000223b: DUP3
0000223c: PUSH1 0x03
0000223e: MUL
0000223f: XOR
00002240: DUP1
00002241: DUP4
00002242: MUL
00002243: DUP3
00002244: SUB
00002245: MUL
00002246: DUP1
00002247: DUP4
00002248: MUL
00002249: DUP3
0000224a: SUB
0000224b: MUL
0000224c: DUP1
0000224d: DUP4
0000224e: MUL
0000224f: DUP3
00002250: SUB
00002251: MUL
00002252: DUP1
00002253: DUP4
00002254: MUL
00002255: DUP3
00002256: SUB
00002257: MUL
00002258: DUP1
00002259: DUP4
0000225a: MUL
0000225b: DUP3
0000225c: SUB
0000225d: MUL
0000225e: DUP1
0000225f: SWAP3
00002260: MUL
00002261: SWAP1
00002262: SUB
00002263: MUL
00002264: SWAP4
00002265: PUSH1 0x01
00002267: DUP4
00002268: DUP1
00002269: PUSH0
0000226a: SUB
0000226b: DIV
0000226c: ADD
0000226d: SWAP1
0000226e: DUP5
0000226f: DUP4
00002270: GT
00002271: SWAP1
00002272: SUB
00002273: MUL
00002274: SWAP3
00002275: SUB
00002276: DIV
00002277: OR
00002278: MUL
00002279: SWAP1
0000227a: JUMP
0000227b: JUMPDEST
0000227c: DUP2
0000227d: MLOAD
0000227e: PUSH1 0x01
00002280: PUSH1 0x01
00002282: PUSH1 0xa0
00002284: SHL
00002285: SUB
00002286: SWAP1
00002287: SWAP2
00002288: AND
00002289: SWAP2
0000228a: PUSH0
0000228b: SWAP2
0000228c: DUP3
0000228d: SWAP2
0000228e: PUSH1 0x20
00002290: ADD
00002291: DUP3
00002292: DUP6
00002293: GAS
00002294: CALL
00002295: RETURNDATASIZE
00002296: ISZERO
00002297: PUSH2 0x2328
0000229a: JUMPI
0000229b: RETURNDATASIZE
0000229c: PUSH8 0xffffffffffffffff
000022a5: DUP2
000022a6: GT
000022a7: PUSH2 0x18a8
000022aa: JUMPI
000022ab: PUSH2 0x22d6
000022ae: SWAP2
000022af: PUSH1 0x40
000022b1: MLOAD
000022b2: SWAP2
000022b3: PUSH2 0x22c6
000022b6: PUSH1 0x20
000022b8: PUSH1 0x1f
000022ba: NOT
000022bb: PUSH1 0x1f
000022bd: DUP5
000022be: ADD
000022bf: AND
000022c0: ADD
000022c1: DUP5
000022c2: PUSH2 0x18d8
000022c5: JUMP
000022c6: JUMPDEST
000022c7: DUP3
000022c8: MSTORE
000022c9: RETURNDATASIZE
000022ca: PUSH0
000022cb: PUSH1 0x20
000022cd: DUP5
000022ce: ADD
000022cf: RETURNDATACOPY
000022d0: JUMPDEST
000022d1: DUP4
000022d2: PUSH2 0x2355
000022d5: JUMP
000022d6: JUMPDEST
000022d7: DUP1
000022d8: MLOAD
000022d9: SWAP1
000022da: DUP2
000022db: ISZERO
000022dc: ISZERO
000022dd: SWAP2
000022de: DUP3
000022df: PUSH2 0x2304
000022e2: JUMPI
000022e3: JUMPDEST
000022e4: POP
000022e5: POP
000022e6: PUSH2 0x22ec
000022e9: JUMPI
000022ea: POP
000022eb: JUMP
000022ec: JUMPDEST
000022ed: PUSH1 0x24
000022ef: SWAP1
000022f0: PUSH1 0x40
000022f2: MLOAD
000022f3: SWAP1
000022f4: PUSH4 0x5274afe7
000022f9: PUSH1 0xe0
000022fb: SHL
000022fc: DUP3
000022fd: MSTORE
000022fe: PUSH1 0x04
00002300: DUP3
00002301: ADD
00002302: MSTORE
00002303: REVERT
00002304: JUMPDEST
00002305: DUP2
00002306: SWAP3
00002307: POP
00002308: SWAP1
00002309: PUSH1 0x20
0000230b: SWAP2
0000230c: DUP2
0000230d: ADD
0000230e: SUB
0000230f: SLT
00002310: PUSH2 0x0952
00002313: JUMPI
00002314: PUSH1 0x20
00002316: ADD
00002317: MLOAD
00002318: DUP1
00002319: ISZERO
0000231a: SWAP1
0000231b: DUP2
0000231c: ISZERO
0000231d: SUB
0000231e: PUSH2 0x0952
00002321: JUMPI
00002322: PUSH0
00002323: DUP1
00002324: PUSH2 0x22e3
00002327: JUMP
00002328: JUMPDEST
00002329: PUSH2 0x22d6
0000232c: SWAP1
0000232d: PUSH1 0x60
0000232f: SWAP1
00002330: PUSH2 0x22d0
00002333: JUMP
00002334: JUMPDEST
00002335: PUSH1 0x02
00002337: DUP1
00002338: SLOAD
00002339: EQ
0000233a: PUSH2 0x2343
0000233d: JUMPI
0000233e: PUSH1 0x02
00002340: DUP1
00002341: SSTORE
00002342: JUMP
00002343: JUMPDEST
00002344: PUSH1 0x40
00002346: MLOAD
00002347: PUSH4 0x3ee5aeb5
0000234c: PUSH1 0xe0
0000234e: SHL
0000234f: DUP2
00002350: MSTORE
00002351: PUSH1 0x04
00002353: SWAP1
00002354: REVERT
00002355: JUMPDEST
00002356: SWAP1
00002357: PUSH2 0x237c
0000235a: JUMPI
0000235b: POP
0000235c: DUP1
0000235d: MLOAD
0000235e: ISZERO
0000235f: PUSH2 0x236a
00002362: JUMPI
00002363: DUP1
00002364: MLOAD
00002365: SWAP1
00002366: PUSH1 0x20
00002368: ADD
00002369: REVERT
0000236a: JUMPDEST
0000236b: PUSH1 0x40
0000236d: MLOAD
0000236e: PUSH4 0x0a12f521
00002373: PUSH1 0xe1
00002375: SHL
00002376: DUP2
00002377: MSTORE
00002378: PUSH1 0x04
0000237a: SWAP1
0000237b: REVERT
0000237c: JUMPDEST
0000237d: DUP2
0000237e: MLOAD
0000237f: ISZERO
00002380: DUP1
00002381: PUSH2 0x23af
00002384: JUMPI
00002385: JUMPDEST
00002386: PUSH2 0x238d
00002389: JUMPI
0000238a: POP
0000238b: SWAP1
0000238c: JUMP
0000238d: JUMPDEST
0000238e: PUSH1 0x40
00002390: MLOAD
00002391: PUSH4 0x9996b315
00002396: PUSH1 0xe0
00002398: SHL
00002399: DUP2
0000239a: MSTORE
0000239b: PUSH1 0x01
0000239d: PUSH1 0x01
0000239f: PUSH1 0xa0
000023a1: SHL
000023a2: SUB
000023a3: SWAP1
000023a4: SWAP2
000023a5: AND
000023a6: PUSH1 0x04
000023a8: DUP3
000023a9: ADD
000023aa: MSTORE
000023ab: PUSH1 0x24
000023ad: SWAP1
000023ae: REVERT
000023af: JUMPDEST
000023b0: POP
000023b1: DUP1
000023b2: EXTCODESIZE
000023b3: ISZERO
000023b4: PUSH2 0x2385
000023b7: JUMP
000023b8: INVALID
000023b9: LOG2
000023ba: PUSH5 0x6970667358
000023c0: UNKNOWN(0x22)
000023c1: SLT
000023c2: KECCAK256
000023c3: CALLER
000023c4: SWAP5
000023c5: LOG1
000023c6: UNKNOWN(0x24)
000023c7: ORIGIN
000023c8: UNKNOWN(0xC6)
000023c9: PUSH4 0x0a82903f
000023ce: UNKNOWN(0xA6)
000023cf: UNKNOWN(0x0C)
000023d0: JUMPI
000023d1: SWAP11
000023d2: UNKNOWN(0xE7)
000023d3: PUSH1 0x75
000023d5: ADDMOD
000023d6: DUP3
000023d7: BASEFEE
000023d8: UNKNOWN(0x2B)
000023d9: UNKNOWN(0xE3)
000023da: SWAP4
000023db: EXTCODECOPY
000023dc: AND
000023dd: UNKNOWN(0xEC)
000023de: UNKNOWN(0xDB)
000023df: CLZ
000023e0: UNKNOWN(0xC5)
000023e1: MSTORE8
000023e2: UNKNOWN(0xC0)
000023e3: PUSH5 0x736f6c6343
000023e9: STOP
000023ea: ADDMOD
000023eb: XOR
000023ec: STOP
000023ed: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability codex Public initializers enable proxy takeover if not called atomically 85 no
view
evidence_json
{
    "evidence": "`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.",
    "locations": [
        "contracts/src/KRWT.sol:62",
        "contracts/src/KRWTCustodian.sol:96",
        "contracts/src/KRWTCustodianWithOracle.sol:90"
    ],
    "recommendation": "Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).",
    "exploit_scenario": "A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees."
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x01e1d114",
            "selector": "0x01e1d114",
            "calldata_variants": [
                "0x01e1d114",
                "0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x07a2d13a",
            "selector": "0x07a2d13a",
            "calldata_variants": [
                "0x07a2d13a",
                "0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a28a477",
            "selector": "0x0a28a477",
            "calldata_variants": [
                "0x0a28a477",
                "0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0c424284",
            "selector": "0x0c424284",
            "calldata_variants": [
                "0x0c424284",
                "0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13966db5",
            "selector": "0x13966db5",
            "calldata_variants": [
                "0x13966db5",
                "0x13966db50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1ee5e23a",
            "selector": "0x1ee5e23a",
            "calldata_variants": [
                "0x1ee5e23a",
                "0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38d52e0f",
            "selector": "0x38d52e0f",
            "calldata_variants": [
                "0x38d52e0f",
                "0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 9159,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6
call_targets: 0x281aa2e0684439ed9fee12eff0d8ff346b755a39
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x281aa2e0684439ed9fee12eff0d8ff346b755a39"
    ],
    "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": "0x01e1d114",
            "selector": "0x01e1d114",
            "calldata_variants": [
                "0x01e1d114",
                "0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x07a2d13a",
            "selector": "0x07a2d13a",
            "calldata_variants": [
                "0x07a2d13a",
                "0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a28a477",
            "selector": "0x0a28a477",
            "calldata_variants": [
                "0x0a28a477",
                "0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0c424284",
            "selector": "0x0c424284",
            "calldata_variants": [
                "0x0c424284",
                "0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13966db5",
            "selector": "0x13966db5",
            "calldata_variants": [
                "0x13966db5",
                "0x13966db50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1ee5e23a",
            "selector": "0x1ee5e23a",
            "calldata_variants": [
                "0x1ee5e23a",
                "0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38d52e0f",
            "selector": "0x38d52e0f",
            "calldata_variants": [
                "0x38d52e0f",
                "0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1672,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2201,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3372,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [
        {
            "pc": 9159,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 5
}
medium access_control codex KRWT ownership can be reclaimed after renounce via initialize 75 no
view
evidence_json
{
    "evidence": "`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.",
    "locations": [
        "contracts/src/KRWT.sol:62",
        "contracts/src/KRWT.sol:64"
    ],
    "recommendation": "Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.",
    "exploit_scenario": "If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT."
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6
call_targets: 0x281aa2e0684439ed9fee12eff0d8ff346b755a39
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x281aa2e0684439ed9fee12eff0d8ff346b755a39"
    ],
    "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": "0x01e1d114",
            "selector": "0x01e1d114",
            "calldata_variants": [
                "0x01e1d114",
                "0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x07a2d13a",
            "selector": "0x07a2d13a",
            "calldata_variants": [
                "0x07a2d13a",
                "0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a28a477",
            "selector": "0x0a28a477",
            "calldata_variants": [
                "0x0a28a477",
                "0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0c424284",
            "selector": "0x0c424284",
            "calldata_variants": [
                "0x0c424284",
                "0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13966db5",
            "selector": "0x13966db5",
            "calldata_variants": [
                "0x13966db5",
                "0x13966db50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1ee5e23a",
            "selector": "0x1ee5e23a",
            "calldata_variants": [
                "0x1ee5e23a",
                "0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38d52e0f",
            "selector": "0x38d52e0f",
            "calldata_variants": [
                "0x38d52e0f",
                "0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1672,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2201,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3372,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": [
        {
            "pc": 9159,
            "type": "tx_origin_used"
        }
    ]
}
low math codex Fee validation uses OR, allowing invalid fees that break mint/withdraw math 65 no
view
evidence_json
{
    "evidence": "`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.",
    "locations": [
        "contracts/src/KRWTCustodian.sol:494"
    ],
    "recommendation": "Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.",
    "exploit_scenario": "Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice\u2011versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS)."
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 17
}
info auth codex Proxy initializer updates name/symbol without updating EIP-712 domain 60 no
view
evidence_json
{
    "evidence": "`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.",
    "locations": [
        "contracts/src/KRWT.sol:62",
        "contracts/src/KRWT.sol:65"
    ],
    "recommendation": "Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.",
    "exploit_scenario": "When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`\u2019s EIP\u2011712 domain is fixed in the implementation constructor. Off\u2011chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 6
}