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

Analysis Run

019bb004-7ac1-71ec-a3df-76571e731ff7

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 12, 2026 2:24 AM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
39297 artifact.fetch complete 1 / 3 3 months ago
39298 proxy.resolve complete 1 / 3 3 months ago
39299 tool.cast_disasm complete 1 / 3 3 months ago
39300 analysis.bundle complete 1 / 3 3 months ago
39301 capability.graph complete 1 / 3 3 months ago
39302 detector.run complete 1 / 3 3 months ago
39303 validation.fork complete 1 / 3 3 months ago
39452 report.consolidate complete 1 / 6 3 months ago
39453 tool.slither complete 1 / 2 3 months ago

Artifact

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

Slither

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

DRSCoin.getUnpaidPerfit(uint32,uint32,uint256) (contracts/Contract.sol#533-552) uses a dangerous strict equality:
	- _startMonth == _endMonth (contracts/Contract.sol#540)
DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses a dangerous strict equality:
	- _startMonth == 0 (contracts/Contract.sol#455)
DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses a dangerous strict equality:
	- _nowMonth == _startMonth (contracts/Contract.sol#456)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities

TimeUtils.parseTimestampToYM(uint256).month (contracts/Contract.sol#219) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables

DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool)(_nowMonth >= _startMonth) (contracts/Contract.sol#454)
	- _startMonth == 0 (contracts/Contract.sol#455)
	- _nowMonth == _startMonth (contracts/Contract.sol#456)
DRSCoin.getUnpaidPerfit(uint32,uint32,uint256) (contracts/Contract.sol#533-552) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool)(_startMonth > 0) (contracts/Contract.sol#537)
	- require(bool)(_endMonth >= _startMonth) (contracts/Contract.sol#537-539)
	- _startMonth == _endMonth (contracts/Contract.sol#540)
	- j < _endMonth (contracts/Contract.sol#542-543)
DRSCoin.addGame(address) (contracts/Contract.sol#666-677) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(proposedGames[gameAddress] > 0,game must be in proposed list first) (contracts/Contract.sol#669-672)
	- require(bool,string)(now > proposedGames[gameAddress].add(proposingPeriod),game must be debated for 2 days) (contracts/Contract.sol#672-674)
DRSCoin.proposeGame(address) (contracts/Contract.sol#677-686) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(proposedGames[gameAddress] == 0,game already in proposed list) (contracts/Contract.sol#684-685)
DRSCoin.deleteGame(address) (contracts/Contract.sol#686-696) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(allowedGameAddress[gameAddress] || proposedGames[gameAddress] > 0,game must in allow list or proposed list) (contracts/Contract.sol#687-689)
DRSCoin.gameCountdown(address) (contracts/Contract.sol#696-705) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(proposedGames[gameAddress] > 0,game not in proposed list) (contracts/Contract.sol#697-698)
	- now < proposedTime.add(proposingPeriod) (contracts/Contract.sol#700-701)
DRSCoin.getEthPerfit(address) (contracts/Contract.sol#732-751) uses timestamp for comparisons
	Dangerous comparisons:
	- _startMonth < _nowMonth && _tokenAmount > 0 (contracts/Contract.sol#744-746)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp

Version constraint ^0.4.24 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor_0.4.x
	- IncorrectEventSignatureInLibraries_0.4.x
	- ABIEncoderV2PackedStorage_0.4.x
	- ExpExponentCleanup
	- EventStructWrongData.
It is used by:
	- ^0.4.24 (contracts/Contract.sol#1)
solc-0.4.24 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

DRSCoin (contracts/Contract.sol#354-751) should inherit from DRSCoinInterface (contracts/Contract.sol#345-352)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance

Struct TimeUtils._DateTime (contracts/Contract.sol#118-127) is not in CapWords
Parameter DRSCoin.settleEth(address,uint32,uint32)._addr (contracts/Contract.sol#452) is not in mixedCase
Parameter DRSCoin.settleEth(address,uint32,uint32)._startMonth (contracts/Contract.sol#452) is not in mixedCase
Parameter DRSCoin.settleEth(address,uint32,uint32)._nowMonth (contracts/Contract.sol#452) is not in mixedCase
Parameter DRSCoin.transfer(address,uint256)._to (contracts/Contract.sol#479) is not in mixedCase
Parameter DRSCoin.transfer(address,uint256)._value (contracts/Contract.sol#479) is not in mixedCase
Parameter DRSCoin.approve(address,uint256)._spender (contracts/Contract.sol#505) is not in mixedCase
Parameter DRSCoin.approve(address,uint256)._value (contracts/Contract.sol#506-507) is not in mixedCase
Parameter DRSCoin.transferFrom(address,address,uint256)._from (contracts/Contract.sol#512) is not in mixedCase
Parameter DRSCoin.transferFrom(address,address,uint256)._to (contracts/Contract.sol#512) is not in mixedCase
Parameter DRSCoin.transferFrom(address,address,uint256)._value (contracts/Contract.sol#512) is not in mixedCase
Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._startMonth (contracts/Contract.sol#534) is not in mixedCase
Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._endMonth (contracts/Contract.sol#534) is not in mixedCase
Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._tokenAmount (contracts/Contract.sol#534) is not in mixedCase
Parameter DRSCoin.balanceOf(address)._owner (contracts/Contract.sol#566) is not in mixedCase
Parameter DRSCoin.allowance(address,address)._owner (contracts/Contract.sol#568) is not in mixedCase
Parameter DRSCoin.allowance(address,address)._spender (contracts/Contract.sol#568) is not in mixedCase
Parameter DRSCoin.editRestrictedAddress(address)._newRestrictedAddress (contracts/Contract.sol#579-580) is not in mixedCase
Parameter DRSCoin.isRestrictedAddress(address)._querryAddress (contracts/Contract.sol#587) is not in mixedCase
Parameter DRSCoin.getMintAmount(uint256)._eth (contracts/Contract.sol#591) is not in mixedCase
Parameter DRSCoin.mint(address,uint256)._to (contracts/Contract.sol#616) is not in mixedCase
Parameter DRSCoin.mint(address,uint256)._eth (contracts/Contract.sol#616) is not in mixedCase
Parameter DRSCoin.burn(uint256)._value (contracts/Contract.sol#648-649) is not in mixedCase
Parameter DRSCoin.getEthPerfit(address)._addr (contracts/Contract.sol#734) is not in mixedCase
Constant DRSCoin.tokenName (contracts/Contract.sol#364-366) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DRSCoin.tokenSymbol (contracts/Contract.sol#366-367) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DRSCoin.decimalUnits (contracts/Contract.sol#367-368) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DRSCoin.proposingPeriod (contracts/Contract.sol#382-383) is not in UPPER_CASE_WITH_UNDERSCORES
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions

Reentrancy in DRSCoin.withdraw() (contracts/Contract.sol#717-732):
	External calls:
	- msg.sender.transfer(_profit) (contracts/Contract.sol#730)
	Event emitted after the call(s):
	- Withdraw(msg.sender,_profit) (contracts/Contract.sol#732)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4

DRSCoin.slitherConstructorConstantVariables() (contracts/Contract.sol#354-751) uses literals with too many digits:
	- tokenReduceValue = 5000000 (contracts/Contract.sol#377-379)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits
. analyzed (4 contracts with 100 detectors), 44 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.4.24",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.4.24",
        "install_stderr": null,
        "install_stdout": "Version '0.4.24' is already installed, skipping..."
    },
    "solc_args": "--base-path /tmp/slither-0mud7ax9 --allow-paths /tmp/slither-0mud7ax9,/tmp/slither-0mud7ax9/lib,/tmp/slither-0mud7ax9/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 44,
    "workspace_hash": "b9ab2dcb2a41f7820c151c6bbcdf1b8f0d1f8a58f9cc81a1009d2d5f5cb1d8f9",
    "duration_seconds": 0.8541238307952881,
    "solc_version_requested": "0.4.24"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
3
No findings?
no
Summary
Found three issues: profit accounting can be retroactively diluted by mid‑month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.
View stdout
{"no_findings":false,"summary":"Found three issues: profit accounting can be retroactively diluted by mid‑month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.","findings":[{"severity":"medium","category":"math","title":"Mid‑month mint/burn retroactively changes the profit denominator for the entire month","exploit_scenario":"A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month’s `totalTokenSupply` to the new supply, so the entire month’s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder’s share.","recommendation":"Snapshot supply at the time each profit deposit is recorded (e.g., store a per‑deposit `totalSupply` or use an accumulated “profit per token” index). Avoid overwriting a single month-wide supply after income has already been recorded.","evidence":"`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month’s `ethIncome` by this single value.","locations":["contracts/Contract.sol:553","contracts/Contract.sol:657","contracts/Contract.sol:684","contracts/Contract.sol:732"]},{"severity":"medium","category":"other","title":"Unbounded month iteration can make transfers/withdrawals run out of gas","exploit_scenario":"`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long‑term holders may become unable to move tokens or withdraw profits, effectively locking funds.","recommendation":"Replace the per‑month loop with an accumulated per‑token profit index, or allow claims in bounded batches (e.g., user‑supplied ranges with stateful checkpoints) to keep gas usage predictable.","evidence":"`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.","locations":["contracts/Contract.sol:469","contracts/Contract.sol:553"]},{"severity":"low","category":"oracle","title":"Month boundaries rely on `now`, allowing miner influence around cutoff times","exploit_scenario":"A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions.","recommendation":"If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.","evidence":"Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.","locations":["contracts/Contract.sol:496","contracts/Contract.sol:732"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dd4t8mvx
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb013-6984-7ee2-9aea-59589ca05552
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

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

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Reading AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-dd4t8mvx succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 9ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.24;

// File: contracts/library/SafeMath.sol

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 * change notes:  original SafeMath library from OpenZeppelin modified by Inventor
 * - added sqrt
 * - added sq
 * - added pwr 
 * - changed asserts to requires with error log outputs
 * - removed div, its useless
 */
exec
/bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 13ms:
                dt.month = i;
                break;
            }
            secondsAccountedFor += secondsInMonth;
        }

        // Day
        for (i = 1; i <= getDaysInMonth(dt.month, dt.year); i++) {
            if (DAY_IN_SECONDS + secondsAccountedFor > timestamp) {
                dt.day = i;
                break;
            }
            secondsAccountedFor += DAY_IN_SECONDS;
        }

        // Hour
        dt.hour = getHour(timestamp);

        // Minute
        dt.minute = getMinute(timestamp);
exec
/bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 5ms:
    string public name;
    string public symbol;
    uint8 public decimals;

    uint256 public totalSupply = 0;
    uint256 public tokenReduceAmount;
    uint256 public tokenExchangeRate; // DRSCoin / eth
    uint256 public nextReduceSupply;  // next DRSCoin reduction supply

    address public owner;

    mapping(address => bool) restrictedAddresses;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    mapping(address => uint32) public lastRefundMonth;

    mapping(address => uint256) public refundEth;  //record the user profit

thinking
**Analyzing Solidity contract vulnerabilities**

I’m auditing DRSCoin written in Solidity 0.4.24, checking for common issues like reentrancy, access control, and accounting errors. There are some naming conflicts between state variables and functions causing compile errors, but I’m focusing on exploitable flaws. Key findings include economic manipulation where month-end minting dilutes earlier holders' profits, unbounded loops causing potential gas DoS on withdrawals/transfers, and trusted minting without ETH backing—likely by design but noteworthy. I’m capturing these observations for the user with approximate source line references.
exec
/bin/bash -lc "rg -n \"function withdraw|function getUnpaidPerfit|monthInfos\\[_nowMonth\\]\\.totalTokenSupply\" AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 15ms:
553:    function getUnpaidPerfit(uint32 _startMonth, uint32 _endMonth, uint256 _tokenAmount) internal view returns(uint256)
658:        monthInfos[_nowMonth].totalTokenSupply = totalSupply;
684:        monthInfos[_nowMonth].totalTokenSupply = totalSupply;
740:        if(monthInfos[_nowMonth].totalTokenSupply == 0) {
741:            monthInfos[_nowMonth].totalTokenSupply = totalSupply;
747:    function withdraw() public {

thinking
**Verifying line numbers referencing Contract.sol**
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '520,780p'" in /tmp/codex-dd4t8mvx succeeded in 6ms:
   520	        return true;
   521	    }
   522	
   523	    function approve(address _spender, uint256 _value) public returns(bool success) {
   524	        allowance[msg.sender][_spender] = _value;                 // Set allowance
   525	        emit Approval(msg.sender, _spender, _value);              // Raise Approval event
   526	        return true;
   527	    }
   528	
   529	    function transferFrom(address _from, address _to, uint256 _value) public returns(bool success) {
   530	        require(balanceOf[_from] >= _value);                  // Check if the sender has enough
   531	        require(balanceOf[_to] + _value >= balanceOf[_to]);   // Check for overflows
   532	        require(_value <= allowance[_from][msg.sender]);      // Check allowance
   533	        require(!restrictedAddresses[_from]);
   534	        require(!restrictedAddresses[msg.sender]);
   535	        require(!restrictedAddresses[_to]);
   536	
   537	        uint32 _nowMonth = getCurrentMonth();
   538	
   539	        // settle _from's eth

thinking
**Summarizing profit calculation and settlement issues**

I'll summarize key findings about profit dilution via mid-month minting, the unbounded loop creating potential DoS in token transfers or withdrawals, and the timestamp reliance enabling minor oracle manipulation—tying them to relevant code lines and suggesting improvements focused on accounting accuracy, gas efficiency, and manipulation risks.
exec
/bin/bash -lc 'rg -n "function settleEth" -n AUDIT_BUNDLE.txt' in /tmp/codex-dd4t8mvx succeeded in 32ms:
469:    function settleEth(address _addr, uint32 _startMonth, uint32 _nowMonth) internal {

thinking
**Noticing month boundary miner influence**
exec
/bin/bash -lc 'rg -n "function getCurrentMonth|parseTimestampToYM|profitEth" AUDIT_BUNDLE.txt' in /tmp/codex-dd4t8mvx succeeded in 32ms:
228:    function parseTimestampToYM(uint timestamp) internal pure returns (uint16, uint8) {
374:    function profitEth() external payable;
496:    function getCurrentMonth() internal view returns(uint32) {
497:        (uint16 _year, uint8 _month) = now.parseTimestampToYM();
732:    function profitEth() external payable onlyAllowedGameAddress {
733:        (uint16 _year, uint8 _month) = now.parseTimestampToYM();

thinking
**Preparing categorized findings summary**
codex
{"no_findings":false,"summary":"Found three issues: profit accounting can be retroactively diluted by mid‑month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.","findings":[{"severity":"medium","category":"math","title":"Mid‑month mint/burn retroactively changes the profit denominator for the entire month","exploit_scenario":"A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month’s `totalTokenSupply` to the new supply, so the entire month’s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder’s share.","recommendation":"Snapshot supply at the time each profit deposit is recorded (e.g., store a per‑deposit `totalSupply` or use an accumulated “profit per token” index). Avoid overwriting a single month-wide supply after income has already been recorded.","evidence":"`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month’s `ethIncome` by this single value.","locations":["contracts/Contract.sol:553","contracts/Contract.sol:657","contracts/Contract.sol:684","contracts/Contract.sol:732"]},{"severity":"medium","category":"other","title":"Unbounded month iteration can make transfers/withdrawals run out of gas","exploit_scenario":"`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long‑term holders may become unable to move tokens or withdraw profits, effectively locking funds.","recommendation":"Replace the per‑month loop with an accumulated per‑token profit index, or allow claims in bounded batches (e.g., user‑supplied ranges with stateful checkpoints) to keep gas usage predictable.","evidence":"`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.","locations":["contracts/Contract.sol:469","contracts/Contract.sol:553"]},{"severity":"low","category":"oracle","title":"Month boundaries rely on `now`, allowing miner influence around cutoff times","exploit_scenario":"A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions.","recommendation":"If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.","evidence":"Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.","locations":["contracts/Contract.sol:496","contracts/Contract.sol:732"]}]}
tokens used
35,120
Metadata
{
    "codex": {
        "ran_at": "2026-01-12T02:42:41.019453+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Found three issues: profit accounting can be retroactively diluted by mid\u2011month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.",
    "raw_final": {
        "summary": "Found three issues: profit accounting can be retroactively diluted by mid\u2011month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.",
        "findings": [
            {
                "title": "Mid\u2011month mint/burn retroactively changes the profit denominator for the entire month",
                "category": "math",
                "evidence": "`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month\u2019s `ethIncome` by this single value.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:553",
                    "contracts/Contract.sol:657",
                    "contracts/Contract.sol:684",
                    "contracts/Contract.sol:732"
                ],
                "recommendation": "Snapshot supply at the time each profit deposit is recorded (e.g., store a per\u2011deposit `totalSupply` or use an accumulated \u201cprofit per token\u201d index). Avoid overwriting a single month-wide supply after income has already been recorded.",
                "exploit_scenario": "A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month\u2019s `totalTokenSupply` to the new supply, so the entire month\u2019s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder\u2019s share."
            },
            {
                "title": "Unbounded month iteration can make transfers/withdrawals run out of gas",
                "category": "other",
                "evidence": "`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:469",
                    "contracts/Contract.sol:553"
                ],
                "recommendation": "Replace the per\u2011month loop with an accumulated per\u2011token profit index, or allow claims in bounded batches (e.g., user\u2011supplied ranges with stateful checkpoints) to keep gas usage predictable.",
                "exploit_scenario": "`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long\u2011term holders may become unable to move tokens or withdraw profits, effectively locking funds."
            },
            {
                "title": "Month boundaries rely on `now`, allowing miner influence around cutoff times",
                "category": "oracle",
                "evidence": "Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:496",
                    "contracts/Contract.sol:732"
                ],
                "recommendation": "If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.",
                "exploit_scenario": "A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
4859
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x017f
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000030: PUSH1 0x00
00000032: CALLDATALOAD
00000033: DIV
00000034: AND
00000035: PUSH4 0x03c175ff
0000003a: DUP2
0000003b: EQ
0000003c: PUSH2 0x0184
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x06fdde03
00000046: EQ
00000047: PUSH2 0x01b9
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x095ea7b3
00000051: EQ
00000052: PUSH2 0x0243
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x18160ddd
0000005c: EQ
0000005d: PUSH2 0x0267
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x23b872dd
00000067: EQ
00000068: PUSH2 0x028e
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x2bf4760b
00000072: EQ
00000073: PUSH2 0x02b8
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x313ce567
0000007d: EQ
0000007e: PUSH2 0x02d9
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x3ccfd60b
00000088: EQ
00000089: PUSH2 0x0304
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0x40c10f19
00000093: EQ
00000094: PUSH2 0x031b
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0x4172d080
0000009e: EQ
0000009f: PUSH2 0x033f
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0x42966c68
000000a9: EQ
000000aa: PUSH2 0x0354
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0x4ec883d1
000000b4: EQ
000000b5: PUSH2 0x036c
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0x70a08231
000000bf: EQ
000000c0: PUSH2 0x038d
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x762c159a
000000ca: EQ
000000cb: PUSH2 0x03ae
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0x8284f2a7
000000d5: EQ
000000d6: PUSH2 0x03c3
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0x8406ab82
000000e0: EQ
000000e1: PUSH2 0x03e4
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0x8b77071c
000000eb: EQ
000000ec: PUSH2 0x0405
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0x8da5cb5b
000000f6: EQ
000000f7: PUSH2 0x040d
000000fa: JUMPI
000000fb: DUP1
000000fc: PUSH4 0x903e285a
00000101: EQ
00000102: PUSH2 0x043e
00000105: JUMPI
00000106: DUP1
00000107: PUSH4 0x94807acc
0000010c: EQ
0000010d: PUSH2 0x0453
00000110: JUMPI
00000111: DUP1
00000112: PUSH4 0x95d89b41
00000117: EQ
00000118: PUSH2 0x0468
0000011b: JUMPI
0000011c: DUP1
0000011d: PUSH4 0x97da2f8c
00000122: EQ
00000123: PUSH2 0x047d
00000126: JUMPI
00000127: DUP1
00000128: PUSH4 0x9b741d9d
0000012d: EQ
0000012e: PUSH2 0x0492
00000131: JUMPI
00000132: DUP1
00000133: PUSH4 0xa9059cbb
00000138: EQ
00000139: PUSH2 0x04a7
0000013c: JUMPI
0000013d: DUP1
0000013e: PUSH4 0xd72d04db
00000143: EQ
00000144: PUSH2 0x04cb
00000147: JUMPI
00000148: DUP1
00000149: PUSH4 0xd83edd70
0000014e: EQ
0000014f: PUSH2 0x04ec
00000152: JUMPI
00000153: DUP1
00000154: PUSH4 0xdd62ed3e
00000159: EQ
0000015a: PUSH2 0x050d
0000015d: JUMPI
0000015e: DUP1
0000015f: PUSH4 0xe39f722a
00000164: EQ
00000165: PUSH2 0x0534
00000168: JUMPI
00000169: DUP1
0000016a: PUSH4 0xf16b6482
0000016f: EQ
00000170: PUSH2 0x056e
00000173: JUMPI
00000174: DUP1
00000175: PUSH4 0xf45ef033
0000017a: EQ
0000017b: PUSH2 0x058f
0000017e: JUMPI
0000017f: JUMPDEST
00000180: PUSH1 0x00
00000182: DUP1
00000183: REVERT
00000184: JUMPDEST
00000185: CALLVALUE
00000186: DUP1
00000187: ISZERO
00000188: PUSH2 0x0190
0000018b: JUMPI
0000018c: PUSH1 0x00
0000018e: DUP1
0000018f: REVERT
00000190: JUMPDEST
00000191: POP
00000192: PUSH2 0x01a5
00000195: PUSH1 0x01
00000197: PUSH1 0xa0
00000199: PUSH1 0x02
0000019b: EXP
0000019c: SUB
0000019d: PUSH1 0x04
0000019f: CALLDATALOAD
000001a0: AND
000001a1: PUSH2 0x05a4
000001a4: JUMP
000001a5: JUMPDEST
000001a6: PUSH1 0x40
000001a8: DUP1
000001a9: MLOAD
000001aa: SWAP2
000001ab: ISZERO
000001ac: ISZERO
000001ad: DUP3
000001ae: MSTORE
000001af: MLOAD
000001b0: SWAP1
000001b1: DUP2
000001b2: SWAP1
000001b3: SUB
000001b4: PUSH1 0x20
000001b6: ADD
000001b7: SWAP1
000001b8: RETURN
000001b9: JUMPDEST
000001ba: CALLVALUE
000001bb: DUP1
000001bc: ISZERO
000001bd: PUSH2 0x01c5
000001c0: JUMPI
000001c1: PUSH1 0x00
000001c3: DUP1
000001c4: REVERT
000001c5: JUMPDEST
000001c6: POP
000001c7: PUSH2 0x01ce
000001ca: PUSH2 0x05c6
000001cd: JUMP
000001ce: JUMPDEST
000001cf: PUSH1 0x40
000001d1: DUP1
000001d2: MLOAD
000001d3: PUSH1 0x20
000001d5: DUP1
000001d6: DUP3
000001d7: MSTORE
000001d8: DUP4
000001d9: MLOAD
000001da: DUP2
000001db: DUP4
000001dc: ADD
000001dd: MSTORE
000001de: DUP4
000001df: MLOAD
000001e0: SWAP2
000001e1: SWAP3
000001e2: DUP4
000001e3: SWAP3
000001e4: SWAP1
000001e5: DUP4
000001e6: ADD
000001e7: SWAP2
000001e8: DUP6
000001e9: ADD
000001ea: SWAP1
000001eb: DUP1
000001ec: DUP4
000001ed: DUP4
000001ee: PUSH1 0x00
000001f0: JUMPDEST
000001f1: DUP4
000001f2: DUP2
000001f3: LT
000001f4: ISZERO
000001f5: PUSH2 0x0208
000001f8: JUMPI
000001f9: DUP2
000001fa: DUP2
000001fb: ADD
000001fc: MLOAD
000001fd: DUP4
000001fe: DUP3
000001ff: ADD
00000200: MSTORE
00000201: PUSH1 0x20
00000203: ADD
00000204: PUSH2 0x01f0
00000207: JUMP
00000208: JUMPDEST
00000209: POP
0000020a: POP
0000020b: POP
0000020c: POP
0000020d: SWAP1
0000020e: POP
0000020f: SWAP1
00000210: DUP2
00000211: ADD
00000212: SWAP1
00000213: PUSH1 0x1f
00000215: AND
00000216: DUP1
00000217: ISZERO
00000218: PUSH2 0x0235
0000021b: JUMPI
0000021c: DUP1
0000021d: DUP3
0000021e: SUB
0000021f: DUP1
00000220: MLOAD
00000221: PUSH1 0x01
00000223: DUP4
00000224: PUSH1 0x20
00000226: SUB
00000227: PUSH2 0x0100
0000022a: EXP
0000022b: SUB
0000022c: NOT
0000022d: AND
0000022e: DUP2
0000022f: MSTORE
00000230: PUSH1 0x20
00000232: ADD
00000233: SWAP2
00000234: POP
00000235: JUMPDEST
00000236: POP
00000237: SWAP3
00000238: POP
00000239: POP
0000023a: POP
0000023b: PUSH1 0x40
0000023d: MLOAD
0000023e: DUP1
0000023f: SWAP2
00000240: SUB
00000241: SWAP1
00000242: RETURN
00000243: JUMPDEST
00000244: CALLVALUE
00000245: DUP1
00000246: ISZERO
00000247: PUSH2 0x024f
0000024a: JUMPI
0000024b: PUSH1 0x00
0000024d: DUP1
0000024e: REVERT
0000024f: JUMPDEST
00000250: POP
00000251: PUSH2 0x01a5
00000254: PUSH1 0x01
00000256: PUSH1 0xa0
00000258: PUSH1 0x02
0000025a: EXP
0000025b: SUB
0000025c: PUSH1 0x04
0000025e: CALLDATALOAD
0000025f: AND
00000260: PUSH1 0x24
00000262: CALLDATALOAD
00000263: PUSH2 0x0654
00000266: JUMP
00000267: JUMPDEST
00000268: CALLVALUE
00000269: DUP1
0000026a: ISZERO
0000026b: PUSH2 0x0273
0000026e: JUMPI
0000026f: PUSH1 0x00
00000271: DUP1
00000272: REVERT
00000273: JUMPDEST
00000274: POP
00000275: PUSH2 0x027c
00000278: PUSH2 0x06bb
0000027b: JUMP
0000027c: JUMPDEST
0000027d: PUSH1 0x40
0000027f: DUP1
00000280: MLOAD
00000281: SWAP2
00000282: DUP3
00000283: MSTORE
00000284: MLOAD
00000285: SWAP1
00000286: DUP2
00000287: SWAP1
00000288: SUB
00000289: PUSH1 0x20
0000028b: ADD
0000028c: SWAP1
0000028d: RETURN
0000028e: JUMPDEST
0000028f: CALLVALUE
00000290: DUP1
00000291: ISZERO
00000292: PUSH2 0x029a
00000295: JUMPI
00000296: PUSH1 0x00
00000298: DUP1
00000299: REVERT
0000029a: JUMPDEST
0000029b: POP
0000029c: PUSH2 0x01a5
0000029f: PUSH1 0x01
000002a1: PUSH1 0xa0
000002a3: PUSH1 0x02
000002a5: EXP
000002a6: SUB
000002a7: PUSH1 0x04
000002a9: CALLDATALOAD
000002aa: DUP2
000002ab: AND
000002ac: SWAP1
000002ad: PUSH1 0x24
000002af: CALLDATALOAD
000002b0: AND
000002b1: PUSH1 0x44
000002b3: CALLDATALOAD
000002b4: PUSH2 0x06c1
000002b7: JUMP
000002b8: JUMPDEST
000002b9: CALLVALUE
000002ba: DUP1
000002bb: ISZERO
000002bc: PUSH2 0x02c4
000002bf: JUMPI
000002c0: PUSH1 0x00
000002c2: DUP1
000002c3: REVERT
000002c4: JUMPDEST
000002c5: POP
000002c6: PUSH2 0x027c
000002c9: PUSH1 0x01
000002cb: PUSH1 0xa0
000002cd: PUSH1 0x02
000002cf: EXP
000002d0: SUB
000002d1: PUSH1 0x04
000002d3: CALLDATALOAD
000002d4: AND
000002d5: PUSH2 0x0917
000002d8: JUMP
000002d9: JUMPDEST
000002da: CALLVALUE
000002db: DUP1
000002dc: ISZERO
000002dd: PUSH2 0x02e5
000002e0: JUMPI
000002e1: PUSH1 0x00
000002e3: DUP1
000002e4: REVERT
000002e5: JUMPDEST
000002e6: POP
000002e7: PUSH2 0x02ee
000002ea: PUSH2 0x09d1
000002ed: JUMP
000002ee: JUMPDEST
000002ef: PUSH1 0x40
000002f1: DUP1
000002f2: MLOAD
000002f3: PUSH1 0xff
000002f5: SWAP1
000002f6: SWAP3
000002f7: AND
000002f8: DUP3
000002f9: MSTORE
000002fa: MLOAD
000002fb: SWAP1
000002fc: DUP2
000002fd: SWAP1
000002fe: SUB
000002ff: PUSH1 0x20
00000301: ADD
00000302: SWAP1
00000303: RETURN
00000304: JUMPDEST
00000305: CALLVALUE
00000306: DUP1
00000307: ISZERO
00000308: PUSH2 0x0310
0000030b: JUMPI
0000030c: PUSH1 0x00
0000030e: DUP1
0000030f: REVERT
00000310: JUMPDEST
00000311: POP
00000312: PUSH2 0x0319
00000315: PUSH2 0x09da
00000318: JUMP
00000319: JUMPDEST
0000031a: STOP
0000031b: JUMPDEST
0000031c: CALLVALUE
0000031d: DUP1
0000031e: ISZERO
0000031f: PUSH2 0x0327
00000322: JUMPI
00000323: PUSH1 0x00
00000325: DUP1
00000326: REVERT
00000327: JUMPDEST
00000328: POP
00000329: PUSH2 0x0319
0000032c: PUSH1 0x01
0000032e: PUSH1 0xa0
00000330: PUSH1 0x02
00000332: EXP
00000333: SUB
00000334: PUSH1 0x04
00000336: CALLDATALOAD
00000337: AND
00000338: PUSH1 0x24
0000033a: CALLDATALOAD
0000033b: PUSH2 0x0aca
0000033e: JUMP
0000033f: JUMPDEST
00000340: CALLVALUE
00000341: DUP1
00000342: ISZERO
00000343: PUSH2 0x034b
00000346: JUMPI
00000347: PUSH1 0x00
00000349: DUP1
0000034a: REVERT
0000034b: JUMPDEST
0000034c: POP
0000034d: PUSH2 0x027c
00000350: PUSH2 0x0d13
00000353: JUMP
00000354: JUMPDEST
00000355: CALLVALUE
00000356: DUP1
00000357: ISZERO
00000358: PUSH2 0x0360
0000035b: JUMPI
0000035c: PUSH1 0x00
0000035e: DUP1
0000035f: REVERT
00000360: JUMPDEST
00000361: POP
00000362: PUSH2 0x01a5
00000365: PUSH1 0x04
00000367: CALLDATALOAD
00000368: PUSH2 0x0d19
0000036b: JUMP
0000036c: JUMPDEST
0000036d: CALLVALUE
0000036e: DUP1
0000036f: ISZERO
00000370: PUSH2 0x0378
00000373: JUMPI
00000374: PUSH1 0x00
00000376: DUP1
00000377: REVERT
00000378: JUMPDEST
00000379: POP
0000037a: PUSH2 0x0319
0000037d: PUSH1 0x01
0000037f: PUSH1 0xa0
00000381: PUSH1 0x02
00000383: EXP
00000384: SUB
00000385: PUSH1 0x04
00000387: CALLDATALOAD
00000388: AND
00000389: PUSH2 0x0e13
0000038c: JUMP
0000038d: JUMPDEST
0000038e: CALLVALUE
0000038f: DUP1
00000390: ISZERO
00000391: PUSH2 0x0399
00000394: JUMPI
00000395: PUSH1 0x00
00000397: DUP1
00000398: REVERT
00000399: JUMPDEST
0000039a: POP
0000039b: PUSH2 0x027c
0000039e: PUSH1 0x01
000003a0: PUSH1 0xa0
000003a2: PUSH1 0x02
000003a4: EXP
000003a5: SUB
000003a6: PUSH1 0x04
000003a8: CALLDATALOAD
000003a9: AND
000003aa: PUSH2 0x0e50
000003ad: JUMP
000003ae: JUMPDEST
000003af: CALLVALUE
000003b0: DUP1
000003b1: ISZERO
000003b2: PUSH2 0x03ba
000003b5: JUMPI
000003b6: PUSH1 0x00
000003b8: DUP1
000003b9: REVERT
000003ba: JUMPDEST
000003bb: POP
000003bc: PUSH2 0x027c
000003bf: PUSH2 0x0e6b
000003c2: JUMP
000003c3: JUMPDEST
000003c4: CALLVALUE
000003c5: DUP1
000003c6: ISZERO
000003c7: PUSH2 0x03cf
000003ca: JUMPI
000003cb: PUSH1 0x00
000003cd: DUP1
000003ce: REVERT
000003cf: JUMPDEST
000003d0: POP
000003d1: PUSH2 0x0319
000003d4: PUSH1 0x01
000003d6: PUSH1 0xa0
000003d8: PUSH1 0x02
000003da: EXP
000003db: SUB
000003dc: PUSH1 0x04
000003de: CALLDATALOAD
000003df: AND
000003e0: PUSH2 0x0e71
000003e3: JUMP
000003e4: JUMPDEST
000003e5: CALLVALUE
000003e6: DUP1
000003e7: ISZERO
000003e8: PUSH2 0x03f0
000003eb: JUMPI
000003ec: PUSH1 0x00
000003ee: DUP1
000003ef: REVERT
000003f0: JUMPDEST
000003f1: POP
000003f2: PUSH2 0x0319
000003f5: PUSH1 0x01
000003f7: PUSH1 0xa0
000003f9: PUSH1 0x02
000003fb: EXP
000003fc: SUB
000003fd: PUSH1 0x04
000003ff: CALLDATALOAD
00000400: AND
00000401: PUSH2 0x0f80
00000404: JUMP
00000405: JUMPDEST
00000406: PUSH2 0x0319
00000409: PUSH2 0x1079
0000040c: JUMP
0000040d: JUMPDEST
0000040e: CALLVALUE
0000040f: DUP1
00000410: ISZERO
00000411: PUSH2 0x0419
00000414: JUMPI
00000415: PUSH1 0x00
00000417: DUP1
00000418: REVERT
00000419: JUMPDEST
0000041a: POP
0000041b: PUSH2 0x0422
0000041e: PUSH2 0x11da
00000421: JUMP
00000422: JUMPDEST
00000423: PUSH1 0x40
00000425: DUP1
00000426: MLOAD
00000427: PUSH1 0x01
00000429: PUSH1 0xa0
0000042b: PUSH1 0x02
0000042d: EXP
0000042e: SUB
0000042f: SWAP1
00000430: SWAP3
00000431: AND
00000432: DUP3
00000433: MSTORE
00000434: MLOAD
00000435: SWAP1
00000436: DUP2
00000437: SWAP1
00000438: SUB
00000439: PUSH1 0x20
0000043b: ADD
0000043c: SWAP1
0000043d: RETURN
0000043e: JUMPDEST
0000043f: CALLVALUE
00000440: DUP1
00000441: ISZERO
00000442: PUSH2 0x044a
00000445: JUMPI
00000446: PUSH1 0x00
00000448: DUP1
00000449: REVERT
0000044a: JUMPDEST
0000044b: POP
0000044c: PUSH2 0x027c
0000044f: PUSH2 0x11e9
00000452: JUMP
00000453: JUMPDEST
00000454: CALLVALUE
00000455: DUP1
00000456: ISZERO
00000457: PUSH2 0x045f
0000045a: JUMPI
0000045b: PUSH1 0x00
0000045d: DUP1
0000045e: REVERT
0000045f: JUMPDEST
00000460: POP
00000461: PUSH2 0x027c
00000464: PUSH2 0x11ee
00000467: JUMP
00000468: JUMPDEST
00000469: CALLVALUE
0000046a: DUP1
0000046b: ISZERO
0000046c: PUSH2 0x0474
0000046f: JUMPI
00000470: PUSH1 0x00
00000472: DUP1
00000473: REVERT
00000474: JUMPDEST
00000475: POP
00000476: PUSH2 0x01ce
00000479: PUSH2 0x11f5
0000047c: JUMP
0000047d: JUMPDEST
0000047e: CALLVALUE
0000047f: DUP1
00000480: ISZERO
00000481: PUSH2 0x0489
00000484: JUMPI
00000485: PUSH1 0x00
00000487: DUP1
00000488: REVERT
00000489: JUMPDEST
0000048a: POP
0000048b: PUSH2 0x027c
0000048e: PUSH2 0x124f
00000491: JUMP
00000492: JUMPDEST
00000493: CALLVALUE
00000494: DUP1
00000495: ISZERO
00000496: PUSH2 0x049e
00000499: JUMPI
0000049a: PUSH1 0x00
0000049c: DUP1
0000049d: REVERT
0000049e: JUMPDEST
0000049f: POP
000004a0: PUSH2 0x027c
000004a3: PUSH2 0x1254
000004a6: JUMP
000004a7: JUMPDEST
000004a8: CALLVALUE
000004a9: DUP1
000004aa: ISZERO
000004ab: PUSH2 0x04b3
000004ae: JUMPI
000004af: PUSH1 0x00
000004b1: DUP1
000004b2: REVERT
000004b3: JUMPDEST
000004b4: POP
000004b5: PUSH2 0x01a5
000004b8: PUSH1 0x01
000004ba: PUSH1 0xa0
000004bc: PUSH1 0x02
000004be: EXP
000004bf: SUB
000004c0: PUSH1 0x04
000004c2: CALLDATALOAD
000004c3: AND
000004c4: PUSH1 0x24
000004c6: CALLDATALOAD
000004c7: PUSH2 0x125a
000004ca: JUMP
000004cb: JUMPDEST
000004cc: CALLVALUE
000004cd: DUP1
000004ce: ISZERO
000004cf: PUSH2 0x04d7
000004d2: JUMPI
000004d3: PUSH1 0x00
000004d5: DUP1
000004d6: REVERT
000004d7: JUMPDEST
000004d8: POP
000004d9: PUSH2 0x0319
000004dc: PUSH1 0x01
000004de: PUSH1 0xa0
000004e0: PUSH1 0x02
000004e2: EXP
000004e3: SUB
000004e4: PUSH1 0x04
000004e6: CALLDATALOAD
000004e7: AND
000004e8: PUSH2 0x13f6
000004eb: JUMP
000004ec: JUMPDEST
000004ed: CALLVALUE
000004ee: DUP1
000004ef: ISZERO
000004f0: PUSH2 0x04f8
000004f3: JUMPI
000004f4: PUSH1 0x00
000004f6: DUP1
000004f7: REVERT
000004f8: JUMPDEST
000004f9: POP
000004fa: PUSH2 0x027c
000004fd: PUSH1 0x01
000004ff: PUSH1 0xa0
00000501: PUSH1 0x02
00000503: EXP
00000504: SUB
00000505: PUSH1 0x04
00000507: CALLDATALOAD
00000508: AND
00000509: PUSH2 0x15c0
0000050c: JUMP
0000050d: JUMPDEST
0000050e: CALLVALUE
0000050f: DUP1
00000510: ISZERO
00000511: PUSH2 0x0519
00000514: JUMPI
00000515: PUSH1 0x00
00000517: DUP1
00000518: REVERT
00000519: JUMPDEST
0000051a: POP
0000051b: PUSH2 0x027c
0000051e: PUSH1 0x01
00000520: PUSH1 0xa0
00000522: PUSH1 0x02
00000524: EXP
00000525: SUB
00000526: PUSH1 0x04
00000528: CALLDATALOAD
00000529: DUP2
0000052a: AND
0000052b: SWAP1
0000052c: PUSH1 0x24
0000052e: CALLDATALOAD
0000052f: AND
00000530: PUSH2 0x15d2
00000533: JUMP
00000534: JUMPDEST
00000535: CALLVALUE
00000536: DUP1
00000537: ISZERO
00000538: PUSH2 0x0540
0000053b: JUMPI
0000053c: PUSH1 0x00
0000053e: DUP1
0000053f: REVERT
00000540: JUMPDEST
00000541: POP
00000542: PUSH2 0x0555
00000545: PUSH1 0x01
00000547: PUSH1 0xa0
00000549: PUSH1 0x02
0000054b: EXP
0000054c: SUB
0000054d: PUSH1 0x04
0000054f: CALLDATALOAD
00000550: AND
00000551: PUSH2 0x15fd
00000554: JUMP
00000555: JUMPDEST
00000556: PUSH1 0x40
00000558: DUP1
00000559: MLOAD
0000055a: PUSH4 0xffffffff
0000055f: SWAP1
00000560: SWAP3
00000561: AND
00000562: DUP3
00000563: MSTORE
00000564: MLOAD
00000565: SWAP1
00000566: DUP2
00000567: SWAP1
00000568: SUB
00000569: PUSH1 0x20
0000056b: ADD
0000056c: SWAP1
0000056d: RETURN
0000056e: JUMPDEST
0000056f: CALLVALUE
00000570: DUP1
00000571: ISZERO
00000572: PUSH2 0x057a
00000575: JUMPI
00000576: PUSH1 0x00
00000578: DUP1
00000579: REVERT
0000057a: JUMPDEST
0000057b: POP
0000057c: PUSH2 0x027c
0000057f: PUSH1 0x01
00000581: PUSH1 0xa0
00000583: PUSH1 0x02
00000585: EXP
00000586: SUB
00000587: PUSH1 0x04
00000589: CALLDATALOAD
0000058a: AND
0000058b: PUSH2 0x1615
0000058e: JUMP
0000058f: JUMPDEST
00000590: CALLVALUE
00000591: DUP1
00000592: ISZERO
00000593: PUSH2 0x059b
00000596: JUMPI
00000597: PUSH1 0x00
00000599: DUP1
0000059a: REVERT
0000059b: JUMPDEST
0000059c: POP
0000059d: PUSH2 0x027c
000005a0: PUSH2 0x16ed
000005a3: JUMP
000005a4: JUMPDEST
000005a5: PUSH1 0x01
000005a7: PUSH1 0xa0
000005a9: PUSH1 0x02
000005ab: EXP
000005ac: SUB
000005ad: DUP2
000005ae: AND
000005af: PUSH1 0x00
000005b1: SWAP1
000005b2: DUP2
000005b3: MSTORE
000005b4: PUSH1 0x08
000005b6: PUSH1 0x20
000005b8: MSTORE
000005b9: PUSH1 0x40
000005bb: SWAP1
000005bc: KECCAK256
000005bd: SLOAD
000005be: PUSH1 0xff
000005c0: AND
000005c1: JUMPDEST
000005c2: SWAP2
000005c3: SWAP1
000005c4: POP
000005c5: JUMP
000005c6: JUMPDEST
000005c7: PUSH1 0x00
000005c9: DUP1
000005ca: SLOAD
000005cb: PUSH1 0x40
000005cd: DUP1
000005ce: MLOAD
000005cf: PUSH1 0x20
000005d1: PUSH1 0x02
000005d3: PUSH1 0x01
000005d5: DUP6
000005d6: AND
000005d7: ISZERO
000005d8: PUSH2 0x0100
000005db: MUL
000005dc: PUSH1 0x00
000005de: NOT
000005df: ADD
000005e0: SWAP1
000005e1: SWAP5
000005e2: AND
000005e3: SWAP4
000005e4: SWAP1
000005e5: SWAP4
000005e6: DIV
000005e7: PUSH1 0x1f
000005e9: DUP2
000005ea: ADD
000005eb: DUP5
000005ec: SWAP1
000005ed: DIV
000005ee: DUP5
000005ef: MUL
000005f0: DUP3
000005f1: ADD
000005f2: DUP5
000005f3: ADD
000005f4: SWAP1
000005f5: SWAP3
000005f6: MSTORE
000005f7: DUP2
000005f8: DUP2
000005f9: MSTORE
000005fa: SWAP3
000005fb: SWAP2
000005fc: DUP4
000005fd: ADD
000005fe: DUP3
000005ff: DUP3
00000600: DUP1
00000601: ISZERO
00000602: PUSH2 0x064c
00000605: JUMPI
00000606: DUP1
00000607: PUSH1 0x1f
00000609: LT
0000060a: PUSH2 0x0621
0000060d: JUMPI
0000060e: PUSH2 0x0100
00000611: DUP1
00000612: DUP4
00000613: SLOAD
00000614: DIV
00000615: MUL
00000616: DUP4
00000617: MSTORE
00000618: SWAP2
00000619: PUSH1 0x20
0000061b: ADD
0000061c: SWAP2
0000061d: PUSH2 0x064c
00000620: JUMP
00000621: JUMPDEST
00000622: DUP3
00000623: ADD
00000624: SWAP2
00000625: SWAP1
00000626: PUSH1 0x00
00000628: MSTORE
00000629: PUSH1 0x20
0000062b: PUSH1 0x00
0000062d: KECCAK256
0000062e: SWAP1
0000062f: JUMPDEST
00000630: DUP2
00000631: SLOAD
00000632: DUP2
00000633: MSTORE
00000634: SWAP1
00000635: PUSH1 0x01
00000637: ADD
00000638: SWAP1
00000639: PUSH1 0x20
0000063b: ADD
0000063c: DUP1
0000063d: DUP4
0000063e: GT
0000063f: PUSH2 0x062f
00000642: JUMPI
00000643: DUP3
00000644: SWAP1
00000645: SUB
00000646: PUSH1 0x1f
00000648: AND
00000649: DUP3
0000064a: ADD
0000064b: SWAP2
0000064c: JUMPDEST
0000064d: POP
0000064e: POP
0000064f: POP
00000650: POP
00000651: POP
00000652: DUP2
00000653: JUMP
00000654: JUMPDEST
00000655: CALLER
00000656: PUSH1 0x00
00000658: DUP2
00000659: DUP2
0000065a: MSTORE
0000065b: PUSH1 0x0a
0000065d: PUSH1 0x20
0000065f: SWAP1
00000660: DUP2
00000661: MSTORE
00000662: PUSH1 0x40
00000664: DUP1
00000665: DUP4
00000666: KECCAK256
00000667: PUSH1 0x01
00000669: PUSH1 0xa0
0000066b: PUSH1 0x02
0000066d: EXP
0000066e: SUB
0000066f: DUP8
00000670: AND
00000671: DUP1
00000672: DUP6
00000673: MSTORE
00000674: SWAP1
00000675: DUP4
00000676: MSTORE
00000677: DUP2
00000678: DUP5
00000679: KECCAK256
0000067a: DUP7
0000067b: SWAP1
0000067c: SSTORE
0000067d: DUP2
0000067e: MLOAD
0000067f: DUP7
00000680: DUP2
00000681: MSTORE
00000682: SWAP2
00000683: MLOAD
00000684: SWAP4
00000685: SWAP5
00000686: SWAP1
00000687: SWAP4
00000688: SWAP1
00000689: SWAP3
0000068a: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
000006ab: SWAP3
000006ac: DUP3
000006ad: SWAP1
000006ae: SUB
000006af: ADD
000006b0: SWAP1
000006b1: LOG3
000006b2: POP
000006b3: PUSH1 0x01
000006b5: JUMPDEST
000006b6: SWAP3
000006b7: SWAP2
000006b8: POP
000006b9: POP
000006ba: JUMP
000006bb: JUMPDEST
000006bc: PUSH1 0x03
000006be: SLOAD
000006bf: SWAP1
000006c0: JUMP
000006c1: JUMPDEST
000006c2: PUSH1 0x01
000006c4: PUSH1 0xa0
000006c6: PUSH1 0x02
000006c8: EXP
000006c9: SUB
000006ca: DUP4
000006cb: AND
000006cc: PUSH1 0x00
000006ce: SWAP1
000006cf: DUP2
000006d0: MSTORE
000006d1: PUSH1 0x09
000006d3: PUSH1 0x20
000006d5: MSTORE
000006d6: PUSH1 0x40
000006d8: DUP2
000006d9: KECCAK256
000006da: SLOAD
000006db: DUP2
000006dc: SWAP1
000006dd: DUP4
000006de: GT
000006df: ISZERO
000006e0: PUSH2 0x06e8
000006e3: JUMPI
000006e4: PUSH1 0x00
000006e6: DUP1
000006e7: REVERT
000006e8: JUMPDEST
000006e9: PUSH1 0x01
000006eb: PUSH1 0xa0
000006ed: PUSH1 0x02
000006ef: EXP
000006f0: SUB
000006f1: DUP5
000006f2: AND
000006f3: PUSH1 0x00
000006f5: SWAP1
000006f6: DUP2
000006f7: MSTORE
000006f8: PUSH1 0x09
000006fa: PUSH1 0x20
000006fc: MSTORE
000006fd: PUSH1 0x40
000006ff: SWAP1
00000700: KECCAK256
00000701: SLOAD
00000702: DUP4
00000703: DUP2
00000704: ADD
00000705: LT
00000706: ISZERO
00000707: PUSH2 0x070f
0000070a: JUMPI
0000070b: PUSH1 0x00
0000070d: DUP1
0000070e: REVERT
0000070f: JUMPDEST
00000710: PUSH1 0x01
00000712: PUSH1 0xa0
00000714: PUSH1 0x02
00000716: EXP
00000717: SUB
00000718: DUP6
00000719: AND
0000071a: PUSH1 0x00
0000071c: SWAP1
0000071d: DUP2
0000071e: MSTORE
0000071f: PUSH1 0x0a
00000721: PUSH1 0x20
00000723: SWAP1
00000724: DUP2
00000725: MSTORE
00000726: PUSH1 0x40
00000728: DUP1
00000729: DUP4
0000072a: KECCAK256
0000072b: CALLER
0000072c: DUP5
0000072d: MSTORE
0000072e: SWAP1
0000072f: SWAP2
00000730: MSTORE
00000731: SWAP1
00000732: KECCAK256
00000733: SLOAD
00000734: DUP4
00000735: GT
00000736: ISZERO
00000737: PUSH2 0x073f
0000073a: JUMPI
0000073b: PUSH1 0x00
0000073d: DUP1
0000073e: REVERT
0000073f: JUMPDEST
00000740: PUSH1 0x01
00000742: PUSH1 0xa0
00000744: PUSH1 0x02
00000746: EXP
00000747: SUB
00000748: DUP6
00000749: AND
0000074a: PUSH1 0x00
0000074c: SWAP1
0000074d: DUP2
0000074e: MSTORE
0000074f: PUSH1 0x08
00000751: PUSH1 0x20
00000753: MSTORE
00000754: PUSH1 0x40
00000756: SWAP1
00000757: KECCAK256
00000758: SLOAD
00000759: PUSH1 0xff
0000075b: AND
0000075c: ISZERO
0000075d: PUSH2 0x0765
00000760: JUMPI
00000761: PUSH1 0x00
00000763: DUP1
00000764: REVERT
00000765: JUMPDEST
00000766: CALLER
00000767: PUSH1 0x00
00000769: SWAP1
0000076a: DUP2
0000076b: MSTORE
0000076c: PUSH1 0x08
0000076e: PUSH1 0x20
00000770: MSTORE
00000771: PUSH1 0x40
00000773: SWAP1
00000774: KECCAK256
00000775: SLOAD
00000776: PUSH1 0xff
00000778: AND
00000779: ISZERO
0000077a: PUSH2 0x0782
0000077d: JUMPI
0000077e: PUSH1 0x00
00000780: DUP1
00000781: REVERT
00000782: JUMPDEST
00000783: PUSH1 0x01
00000785: PUSH1 0xa0
00000787: PUSH1 0x02
00000789: EXP
0000078a: SUB
0000078b: DUP5
0000078c: AND
0000078d: PUSH1 0x00
0000078f: SWAP1
00000790: DUP2
00000791: MSTORE
00000792: PUSH1 0x08
00000794: PUSH1 0x20
00000796: MSTORE
00000797: PUSH1 0x40
00000799: SWAP1
0000079a: KECCAK256
0000079b: SLOAD
0000079c: PUSH1 0xff
0000079e: AND
0000079f: ISZERO
000007a0: PUSH2 0x07a8
000007a3: JUMPI
000007a4: PUSH1 0x00
000007a6: DUP1
000007a7: REVERT
000007a8: JUMPDEST
000007a9: PUSH2 0x07b0
000007ac: PUSH2 0x16f3
000007af: JUMP
000007b0: JUMPDEST
000007b1: PUSH1 0x01
000007b3: PUSH1 0xa0
000007b5: PUSH1 0x02
000007b7: EXP
000007b8: SUB
000007b9: DUP7
000007ba: AND
000007bb: PUSH1 0x00
000007bd: SWAP1
000007be: DUP2
000007bf: MSTORE
000007c0: PUSH1 0x0b
000007c2: PUSH1 0x20
000007c4: MSTORE
000007c5: PUSH1 0x40
000007c7: SWAP1
000007c8: KECCAK256
000007c9: SLOAD
000007ca: SWAP1
000007cb: SWAP2
000007cc: POP
000007cd: PUSH2 0x07de
000007d0: SWAP1
000007d1: DUP7
000007d2: SWAP1
000007d3: PUSH4 0xffffffff
000007d8: AND
000007d9: DUP4
000007da: PUSH2 0x171c
000007dd: JUMP
000007de: JUMPDEST
000007df: PUSH1 0x01
000007e1: PUSH1 0xa0
000007e3: PUSH1 0x02
000007e5: EXP
000007e6: SUB
000007e7: DUP5
000007e8: AND
000007e9: PUSH1 0x00
000007eb: SWAP1
000007ec: DUP2
000007ed: MSTORE
000007ee: PUSH1 0x0b
000007f0: PUSH1 0x20
000007f2: MSTORE
000007f3: PUSH1 0x40
000007f5: SWAP1
000007f6: KECCAK256
000007f7: SLOAD
000007f8: PUSH2 0x0809
000007fb: SWAP1
000007fc: DUP6
000007fd: SWAP1
000007fe: PUSH4 0xffffffff
00000803: AND
00000804: DUP4
00000805: PUSH2 0x171c
00000808: JUMP
00000809: JUMPDEST
0000080a: PUSH1 0x01
0000080c: PUSH1 0xa0
0000080e: PUSH1 0x02
00000810: EXP
00000811: SUB
00000812: DUP6
00000813: AND
00000814: PUSH1 0x00
00000816: SWAP1
00000817: DUP2
00000818: MSTORE
00000819: PUSH1 0x09
0000081b: PUSH1 0x20
0000081d: MSTORE
0000081e: PUSH1 0x40
00000820: SWAP1
00000821: KECCAK256
00000822: SLOAD
00000823: PUSH2 0x0832
00000826: SWAP1
00000827: DUP5
00000828: PUSH4 0xffffffff
0000082d: PUSH2 0x187e
00000830: AND
00000831: JUMP
00000832: JUMPDEST
00000833: PUSH1 0x01
00000835: PUSH1 0xa0
00000837: PUSH1 0x02
00000839: EXP
0000083a: SUB
0000083b: DUP1
0000083c: DUP8
0000083d: AND
0000083e: PUSH1 0x00
00000840: SWAP1
00000841: DUP2
00000842: MSTORE
00000843: PUSH1 0x09
00000845: PUSH1 0x20
00000847: MSTORE
00000848: PUSH1 0x40
0000084a: DUP1
0000084b: DUP3
0000084c: KECCAK256
0000084d: SWAP4
0000084e: SWAP1
0000084f: SWAP4
00000850: SSTORE
00000851: SWAP1
00000852: DUP7
00000853: AND
00000854: DUP2
00000855: MSTORE
00000856: KECCAK256
00000857: SLOAD
00000858: PUSH2 0x0867
0000085b: SWAP1
0000085c: DUP5
0000085d: PUSH4 0xffffffff
00000862: PUSH2 0x18de
00000865: AND
00000866: JUMP
00000867: JUMPDEST
00000868: PUSH1 0x01
0000086a: PUSH1 0xa0
0000086c: PUSH1 0x02
0000086e: EXP
0000086f: SUB
00000870: DUP1
00000871: DUP7
00000872: AND
00000873: PUSH1 0x00
00000875: SWAP1
00000876: DUP2
00000877: MSTORE
00000878: PUSH1 0x09
0000087a: PUSH1 0x20
0000087c: SWAP1
0000087d: DUP2
0000087e: MSTORE
0000087f: PUSH1 0x40
00000881: DUP1
00000882: DUP4
00000883: KECCAK256
00000884: SWAP5
00000885: SWAP1
00000886: SWAP5
00000887: SSTORE
00000888: SWAP2
00000889: DUP9
0000088a: AND
0000088b: DUP2
0000088c: MSTORE
0000088d: PUSH1 0x0a
0000088f: DUP3
00000890: MSTORE
00000891: DUP3
00000892: DUP2
00000893: KECCAK256
00000894: CALLER
00000895: DUP3
00000896: MSTORE
00000897: SWAP1
00000898: SWAP2
00000899: MSTORE
0000089a: KECCAK256
0000089b: SLOAD
0000089c: PUSH2 0x08ab
0000089f: SWAP1
000008a0: DUP5
000008a1: PUSH4 0xffffffff
000008a6: PUSH2 0x187e
000008a9: AND
000008aa: JUMP
000008ab: JUMPDEST
000008ac: PUSH1 0x01
000008ae: PUSH1 0xa0
000008b0: PUSH1 0x02
000008b2: EXP
000008b3: SUB
000008b4: DUP1
000008b5: DUP8
000008b6: AND
000008b7: PUSH1 0x00
000008b9: DUP2
000008ba: DUP2
000008bb: MSTORE
000008bc: PUSH1 0x0a
000008be: PUSH1 0x20
000008c0: SWAP1
000008c1: DUP2
000008c2: MSTORE
000008c3: PUSH1 0x40
000008c5: DUP1
000008c6: DUP4
000008c7: KECCAK256
000008c8: CALLER
000008c9: DUP5
000008ca: MSTORE
000008cb: DUP3
000008cc: MSTORE
000008cd: SWAP2
000008ce: DUP3
000008cf: SWAP1
000008d0: KECCAK256
000008d1: SWAP5
000008d2: SWAP1
000008d3: SWAP5
000008d4: SSTORE
000008d5: DUP1
000008d6: MLOAD
000008d7: DUP8
000008d8: DUP2
000008d9: MSTORE
000008da: SWAP1
000008db: MLOAD
000008dc: SWAP3
000008dd: DUP9
000008de: AND
000008df: SWAP4
000008e0: SWAP2
000008e1: SWAP3
000008e2: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000903: SWAP3
00000904: SWAP2
00000905: DUP2
00000906: SWAP1
00000907: SUB
00000908: SWAP1
00000909: SWAP2
0000090a: ADD
0000090b: SWAP1
0000090c: LOG3
0000090d: POP
0000090e: PUSH1 0x01
00000910: SWAP5
00000911: SWAP4
00000912: POP
00000913: POP
00000914: POP
00000915: POP
00000916: JUMP
00000917: JUMPDEST
00000918: PUSH1 0x00
0000091a: DUP1
0000091b: PUSH1 0x00
0000091d: DUP1
0000091e: PUSH1 0x00
00000920: DUP1
00000921: PUSH2 0x0928
00000924: PUSH2 0x16f3
00000927: JUMP
00000928: JUMPDEST
00000929: PUSH1 0x01
0000092b: PUSH1 0xa0
0000092d: PUSH1 0x02
0000092f: EXP
00000930: SUB
00000931: DUP9
00000932: AND
00000933: PUSH1 0x00
00000935: SWAP1
00000936: DUP2
00000937: MSTORE
00000938: PUSH1 0x0b
0000093a: PUSH1 0x20
0000093c: MSTORE
0000093d: PUSH1 0x40
0000093f: SWAP1
00000940: KECCAK256
00000941: SLOAD
00000942: SWAP1
00000943: SWAP6
00000944: POP
00000945: PUSH4 0xffffffff
0000094a: AND
0000094b: SWAP4
0000094c: POP
0000094d: DUP4
0000094e: ISZERO
0000094f: ISZERO
00000950: PUSH2 0x095c
00000953: JUMPI
00000954: PUSH1 0x00
00000956: SWAP6
00000957: POP
00000958: PUSH2 0x09c7
0000095b: JUMP
0000095c: JUMPDEST
0000095d: PUSH1 0x01
0000095f: PUSH1 0xa0
00000961: PUSH1 0x02
00000963: EXP
00000964: SUB
00000965: DUP8
00000966: AND
00000967: PUSH1 0x00
00000969: SWAP1
0000096a: DUP2
0000096b: MSTORE
0000096c: PUSH1 0x09
0000096e: PUSH1 0x20
00000970: SWAP1
00000971: DUP2
00000972: MSTORE
00000973: PUSH1 0x40
00000975: DUP1
00000976: DUP4
00000977: KECCAK256
00000978: SLOAD
00000979: PUSH1 0x0c
0000097b: SWAP1
0000097c: SWAP3
0000097d: MSTORE
0000097e: SWAP1
0000097f: SWAP2
00000980: KECCAK256
00000981: SLOAD
00000982: SWAP1
00000983: SWAP4
00000984: POP
00000985: SWAP2
00000986: POP
00000987: PUSH4 0xffffffff
0000098c: DUP1
0000098d: DUP7
0000098e: AND
0000098f: SWAP1
00000990: DUP6
00000991: AND
00000992: LT
00000993: DUP1
00000994: ISZERO
00000995: PUSH2 0x099e
00000998: JUMPI
00000999: POP
0000099a: PUSH1 0x00
0000099c: DUP4
0000099d: GT
0000099e: JUMPDEST
0000099f: ISZERO
000009a0: PUSH2 0x09c3
000009a3: JUMPI
000009a4: PUSH2 0x09ae
000009a7: DUP5
000009a8: DUP7
000009a9: DUP6
000009aa: PUSH2 0x1939
000009ad: JUMP
000009ae: JUMPDEST
000009af: SWAP1
000009b0: POP
000009b1: PUSH2 0x09c0
000009b4: DUP3
000009b5: DUP3
000009b6: PUSH4 0xffffffff
000009bb: PUSH2 0x18de
000009be: AND
000009bf: JUMP
000009c0: JUMPDEST
000009c1: SWAP2
000009c2: POP
000009c3: JUMPDEST
000009c4: DUP2
000009c5: SWAP6
000009c6: POP
000009c7: JUMPDEST
000009c8: POP
000009c9: POP
000009ca: POP
000009cb: POP
000009cc: POP
000009cd: SWAP2
000009ce: SWAP1
000009cf: POP
000009d0: JUMP
000009d1: JUMPDEST
000009d2: PUSH1 0x02
000009d4: SLOAD
000009d5: PUSH1 0xff
000009d7: AND
000009d8: DUP2
000009d9: JUMP
000009da: JUMPDEST
000009db: CALLER
000009dc: PUSH1 0x00
000009de: SWAP1
000009df: DUP2
000009e0: MSTORE
000009e1: PUSH1 0x08
000009e3: PUSH1 0x20
000009e5: MSTORE
000009e6: PUSH1 0x40
000009e8: DUP2
000009e9: KECCAK256
000009ea: SLOAD
000009eb: DUP2
000009ec: SWAP1
000009ed: DUP2
000009ee: SWAP1
000009ef: PUSH1 0xff
000009f1: AND
000009f2: ISZERO
000009f3: PUSH2 0x09fb
000009f6: JUMPI
000009f7: PUSH1 0x00
000009f9: DUP1
000009fa: REVERT
000009fb: JUMPDEST
000009fc: PUSH2 0x0a03
000009ff: PUSH2 0x16f3
00000a02: JUMP
00000a03: JUMPDEST
00000a04: CALLER
00000a05: PUSH1 0x00
00000a07: SWAP1
00000a08: DUP2
00000a09: MSTORE
00000a0a: PUSH1 0x0b
00000a0c: PUSH1 0x20
00000a0e: MSTORE
00000a0f: PUSH1 0x40
00000a11: DUP2
00000a12: KECCAK256
00000a13: SLOAD
00000a14: SWAP2
00000a15: SWAP5
00000a16: POP
00000a17: PUSH4 0xffffffff
00000a1c: SWAP1
00000a1d: SWAP2
00000a1e: AND
00000a1f: SWAP3
00000a20: POP
00000a21: DUP3
00000a22: GT
00000a23: PUSH2 0x0a2b
00000a26: JUMPI
00000a27: PUSH1 0x00
00000a29: DUP1
00000a2a: REVERT
00000a2b: JUMPDEST
00000a2c: PUSH2 0x0a36
00000a2f: CALLER
00000a30: DUP4
00000a31: DUP6
00000a32: PUSH2 0x171c
00000a35: JUMP
00000a36: JUMPDEST
00000a37: POP
00000a38: CALLER
00000a39: PUSH1 0x00
00000a3b: SWAP1
00000a3c: DUP2
00000a3d: MSTORE
00000a3e: PUSH1 0x0c
00000a40: PUSH1 0x20
00000a42: MSTORE
00000a43: PUSH1 0x40
00000a45: DUP2
00000a46: KECCAK256
00000a47: SLOAD
00000a48: SWAP1
00000a49: DUP2
00000a4a: GT
00000a4b: PUSH2 0x0a53
00000a4e: JUMPI
00000a4f: PUSH1 0x00
00000a51: DUP1
00000a52: REVERT
00000a53: JUMPDEST
00000a54: CALLER
00000a55: PUSH1 0x00
00000a57: DUP2
00000a58: DUP2
00000a59: MSTORE
00000a5a: PUSH1 0x0c
00000a5c: PUSH1 0x20
00000a5e: MSTORE
00000a5f: PUSH1 0x40
00000a61: DUP1
00000a62: DUP3
00000a63: KECCAK256
00000a64: DUP3
00000a65: SWAP1
00000a66: SSTORE
00000a67: MLOAD
00000a68: DUP4
00000a69: ISZERO
00000a6a: PUSH2 0x08fc
00000a6d: MUL
00000a6e: SWAP2
00000a6f: DUP5
00000a70: SWAP2
00000a71: SWAP1
00000a72: DUP2
00000a73: DUP2
00000a74: DUP2
00000a75: DUP6
00000a76: DUP9
00000a77: DUP9
00000a78: CALL
00000a79: SWAP4
00000a7a: POP
00000a7b: POP
00000a7c: POP
00000a7d: POP
00000a7e: ISZERO
00000a7f: DUP1
00000a80: ISZERO
00000a81: PUSH2 0x0a8e
00000a84: JUMPI
00000a85: RETURNDATASIZE
00000a86: PUSH1 0x00
00000a88: DUP1
00000a89: RETURNDATACOPY
00000a8a: RETURNDATASIZE
00000a8b: PUSH1 0x00
00000a8d: REVERT
00000a8e: JUMPDEST
00000a8f: POP
00000a90: PUSH1 0x40
00000a92: DUP1
00000a93: MLOAD
00000a94: DUP3
00000a95: DUP2
00000a96: MSTORE
00000a97: SWAP1
00000a98: MLOAD
00000a99: CALLER
00000a9a: SWAP2
00000a9b: PUSH32 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364
00000abc: SWAP2
00000abd: SWAP1
00000abe: DUP2
00000abf: SWAP1
00000ac0: SUB
00000ac1: PUSH1 0x20
00000ac3: ADD
00000ac4: SWAP1
00000ac5: LOG2
00000ac6: POP
00000ac7: POP
00000ac8: POP
00000ac9: JUMP
00000aca: JUMPDEST
00000acb: CALLER
00000acc: PUSH1 0x00
00000ace: SWAP1
00000acf: DUP2
00000ad0: MSTORE
00000ad1: PUSH1 0x0e
00000ad3: PUSH1 0x20
00000ad5: MSTORE
00000ad6: PUSH1 0x40
00000ad8: DUP2
00000ad9: KECCAK256
00000ada: SLOAD
00000adb: DUP2
00000adc: SWAP1
00000add: DUP2
00000ade: SWAP1
00000adf: DUP2
00000ae0: SWAP1
00000ae1: PUSH1 0xff
00000ae3: AND
00000ae4: ISZERO
00000ae5: ISZERO
00000ae6: PUSH2 0x0b5f
00000ae9: JUMPI
00000aea: PUSH1 0x40
00000aec: DUP1
00000aed: MLOAD
00000aee: PUSH1 0xe5
00000af0: PUSH1 0x02
00000af2: EXP
00000af3: PUSH3 0x461bcd
00000af7: MUL
00000af8: DUP2
00000af9: MSTORE
00000afa: PUSH1 0x20
00000afc: PUSH1 0x04
00000afe: DUP3
00000aff: ADD
00000b00: MSTORE
00000b01: PUSH1 0x21
00000b03: PUSH1 0x24
00000b05: DUP3
00000b06: ADD
00000b07: MSTORE
00000b08: PUSH32 0x6f6e6c7920616c6c6f7765642067616d6573207065726d697420746f2063616c
00000b29: PUSH1 0x44
00000b2b: DUP3
00000b2c: ADD
00000b2d: MSTORE
00000b2e: PUSH32 0x6c00000000000000000000000000000000000000000000000000000000000000
00000b4f: PUSH1 0x64
00000b51: DUP3
00000b52: ADD
00000b53: MSTORE
00000b54: SWAP1
00000b55: MLOAD
00000b56: SWAP1
00000b57: DUP2
00000b58: SWAP1
00000b59: SUB
00000b5a: PUSH1 0x84
00000b5c: ADD
00000b5d: SWAP1
00000b5e: REVERT
00000b5f: JUMPDEST
00000b60: PUSH1 0x00
00000b62: DUP6
00000b63: GT
00000b64: PUSH2 0x0b6c
00000b67: JUMPI
00000b68: PUSH1 0x00
00000b6a: DUP1
00000b6b: REVERT
00000b6c: JUMPDEST
00000b6d: PUSH2 0x0b75
00000b70: DUP6
00000b71: PUSH2 0x1a2e
00000b74: JUMP
00000b75: JUMPDEST
00000b76: SWAP2
00000b77: SWAP6
00000b78: POP
00000b79: SWAP4
00000b7a: POP
00000b7b: SWAP2
00000b7c: POP
00000b7d: PUSH1 0x00
00000b7f: DUP5
00000b80: GT
00000b81: PUSH2 0x0b89
00000b84: JUMPI
00000b85: PUSH1 0x00
00000b87: DUP1
00000b88: REVERT
00000b89: JUMPDEST
00000b8a: PUSH1 0x03
00000b8c: SLOAD
00000b8d: DUP5
00000b8e: DUP2
00000b8f: ADD
00000b90: GT
00000b91: PUSH2 0x0b99
00000b94: JUMPI
00000b95: PUSH1 0x00
00000b97: DUP1
00000b98: REVERT
00000b99: JUMPDEST
00000b9a: PUSH1 0x01
00000b9c: PUSH1 0xa0
00000b9e: PUSH1 0x02
00000ba0: EXP
00000ba1: SUB
00000ba2: DUP7
00000ba3: AND
00000ba4: PUSH1 0x00
00000ba6: SWAP1
00000ba7: DUP2
00000ba8: MSTORE
00000ba9: PUSH1 0x09
00000bab: PUSH1 0x20
00000bad: MSTORE
00000bae: PUSH1 0x40
00000bb0: SWAP1
00000bb1: KECCAK256
00000bb2: SLOAD
00000bb3: DUP5
00000bb4: DUP2
00000bb5: ADD
00000bb6: GT
00000bb7: PUSH2 0x0bbf
00000bba: JUMPI
00000bbb: PUSH1 0x00
00000bbd: DUP1
00000bbe: REVERT
00000bbf: JUMPDEST
00000bc0: PUSH2 0x0bc7
00000bc3: PUSH2 0x16f3
00000bc6: JUMP
00000bc7: JUMPDEST
00000bc8: PUSH1 0x01
00000bca: PUSH1 0xa0
00000bcc: PUSH1 0x02
00000bce: EXP
00000bcf: SUB
00000bd0: DUP8
00000bd1: AND
00000bd2: PUSH1 0x00
00000bd4: SWAP1
00000bd5: DUP2
00000bd6: MSTORE
00000bd7: PUSH1 0x0b
00000bd9: PUSH1 0x20
00000bdb: MSTORE
00000bdc: PUSH1 0x40
00000bde: SWAP1
00000bdf: KECCAK256
00000be0: SLOAD
00000be1: SWAP1
00000be2: SWAP2
00000be3: POP
00000be4: PUSH2 0x0bf5
00000be7: SWAP1
00000be8: DUP8
00000be9: SWAP1
00000bea: PUSH4 0xffffffff
00000bef: AND
00000bf0: DUP4
00000bf1: PUSH2 0x171c
00000bf4: JUMP
00000bf5: JUMPDEST
00000bf6: PUSH1 0x03
00000bf8: SLOAD
00000bf9: PUSH2 0x0c09
00000bfc: SWAP1
00000bfd: DUP6
00000bfe: SWAP1
00000bff: PUSH4 0xffffffff
00000c04: PUSH2 0x18de
00000c07: AND
00000c08: JUMP
00000c09: JUMPDEST
00000c0a: PUSH1 0x03
00000c0c: SSTORE
00000c0d: PUSH1 0x01
00000c0f: PUSH1 0xa0
00000c11: PUSH1 0x02
00000c13: EXP
00000c14: SUB
00000c15: DUP7
00000c16: AND
00000c17: PUSH1 0x00
00000c19: SWAP1
00000c1a: DUP2
00000c1b: MSTORE
00000c1c: PUSH1 0x09
00000c1e: PUSH1 0x20
00000c20: MSTORE
00000c21: PUSH1 0x40
00000c23: SWAP1
00000c24: KECCAK256
00000c25: SLOAD
00000c26: PUSH2 0x0c36
00000c29: SWAP1
00000c2a: DUP6
00000c2b: SWAP1
00000c2c: PUSH4 0xffffffff
00000c31: PUSH2 0x18de
00000c34: AND
00000c35: JUMP
00000c36: JUMPDEST
00000c37: PUSH1 0x01
00000c39: PUSH1 0xa0
00000c3b: PUSH1 0x02
00000c3d: EXP
00000c3e: SUB
00000c3f: DUP8
00000c40: AND
00000c41: PUSH1 0x00
00000c43: SWAP1
00000c44: DUP2
00000c45: MSTORE
00000c46: PUSH1 0x09
00000c48: PUSH1 0x20
00000c4a: SWAP1
00000c4b: DUP2
00000c4c: MSTORE
00000c4d: PUSH1 0x40
00000c4f: DUP1
00000c50: DUP4
00000c51: KECCAK256
00000c52: SWAP4
00000c53: SWAP1
00000c54: SWAP4
00000c55: SSTORE
00000c56: PUSH1 0x03
00000c58: SLOAD
00000c59: PUSH4 0xffffffff
00000c5e: DUP6
00000c5f: AND
00000c60: DUP4
00000c61: MSTORE
00000c62: PUSH1 0x0d
00000c64: SWAP1
00000c65: SWAP2
00000c66: MSTORE
00000c67: SWAP2
00000c68: SWAP1
00000c69: KECCAK256
00000c6a: PUSH1 0x01
00000c6c: ADD
00000c6d: SSTORE
00000c6e: PUSH1 0x06
00000c70: SLOAD
00000c71: DUP4
00000c72: EQ
00000c73: PUSH2 0x0c7c
00000c76: JUMPI
00000c77: PUSH1 0x06
00000c79: DUP4
00000c7a: SWAP1
00000c7b: SSTORE
00000c7c: JUMPDEST
00000c7d: PUSH1 0x05
00000c7f: SLOAD
00000c80: DUP3
00000c81: EQ
00000c82: PUSH2 0x0c8b
00000c85: JUMPI
00000c86: PUSH1 0x05
00000c88: DUP3
00000c89: SWAP1
00000c8a: SSTORE
00000c8b: JUMPDEST
00000c8c: PUSH1 0x40
00000c8e: DUP1
00000c8f: MLOAD
00000c90: DUP6
00000c91: DUP2
00000c92: MSTORE
00000c93: SWAP1
00000c94: MLOAD
00000c95: PUSH1 0x01
00000c97: PUSH1 0xa0
00000c99: PUSH1 0x02
00000c9b: EXP
00000c9c: SUB
00000c9d: DUP9
00000c9e: AND
00000c9f: SWAP2
00000ca0: PUSH32 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885
00000cc1: SWAP2
00000cc2: SWAP1
00000cc3: DUP2
00000cc4: SWAP1
00000cc5: SUB
00000cc6: PUSH1 0x20
00000cc8: ADD
00000cc9: SWAP1
00000cca: LOG2
00000ccb: PUSH1 0x40
00000ccd: DUP1
00000cce: MLOAD
00000ccf: DUP6
00000cd0: DUP2
00000cd1: MSTORE
00000cd2: SWAP1
00000cd3: MLOAD
00000cd4: PUSH1 0x01
00000cd6: PUSH1 0xa0
00000cd8: PUSH1 0x02
00000cda: EXP
00000cdb: SUB
00000cdc: DUP9
00000cdd: AND
00000cde: SWAP2
00000cdf: PUSH1 0x00
00000ce1: SWAP2
00000ce2: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000d03: SWAP2
00000d04: DUP2
00000d05: SWAP1
00000d06: SUB
00000d07: PUSH1 0x20
00000d09: ADD
00000d0a: SWAP1
00000d0b: LOG3
00000d0c: POP
00000d0d: POP
00000d0e: POP
00000d0f: POP
00000d10: POP
00000d11: POP
00000d12: JUMP
00000d13: JUMPDEST
00000d14: PUSH1 0x05
00000d16: SLOAD
00000d17: SWAP1
00000d18: JUMP
00000d19: JUMPDEST
00000d1a: CALLER
00000d1b: PUSH1 0x00
00000d1d: SWAP1
00000d1e: DUP2
00000d1f: MSTORE
00000d20: PUSH1 0x09
00000d22: PUSH1 0x20
00000d24: MSTORE
00000d25: PUSH1 0x40
00000d27: DUP2
00000d28: KECCAK256
00000d29: SLOAD
00000d2a: DUP2
00000d2b: SWAP1
00000d2c: DUP4
00000d2d: GT
00000d2e: ISZERO
00000d2f: PUSH2 0x0d37
00000d32: JUMPI
00000d33: PUSH1 0x00
00000d35: DUP1
00000d36: REVERT
00000d37: JUMPDEST
00000d38: PUSH1 0x00
00000d3a: DUP4
00000d3b: GT
00000d3c: PUSH2 0x0d44
00000d3f: JUMPI
00000d40: PUSH1 0x00
00000d42: DUP1
00000d43: REVERT
00000d44: JUMPDEST
00000d45: PUSH2 0x0d4c
00000d48: PUSH2 0x16f3
00000d4b: JUMP
00000d4c: JUMPDEST
00000d4d: CALLER
00000d4e: PUSH1 0x00
00000d50: DUP2
00000d51: DUP2
00000d52: MSTORE
00000d53: PUSH1 0x0b
00000d55: PUSH1 0x20
00000d57: MSTORE
00000d58: PUSH1 0x40
00000d5a: SWAP1
00000d5b: KECCAK256
00000d5c: SLOAD
00000d5d: SWAP2
00000d5e: SWAP3
00000d5f: POP
00000d60: PUSH2 0x0d6f
00000d63: SWAP2
00000d64: PUSH4 0xffffffff
00000d69: AND
00000d6a: DUP4
00000d6b: PUSH2 0x171c
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: CALLER
00000d71: PUSH1 0x00
00000d73: SWAP1
00000d74: DUP2
00000d75: MSTORE
00000d76: PUSH1 0x09
00000d78: PUSH1 0x20
00000d7a: MSTORE
00000d7b: PUSH1 0x40
00000d7d: SWAP1
00000d7e: KECCAK256
00000d7f: SLOAD
00000d80: PUSH2 0x0d8f
00000d83: SWAP1
00000d84: DUP5
00000d85: PUSH4 0xffffffff
00000d8a: PUSH2 0x187e
00000d8d: AND
00000d8e: JUMP
00000d8f: JUMPDEST
00000d90: CALLER
00000d91: PUSH1 0x00
00000d93: SWAP1
00000d94: DUP2
00000d95: MSTORE
00000d96: PUSH1 0x09
00000d98: PUSH1 0x20
00000d9a: MSTORE
00000d9b: PUSH1 0x40
00000d9d: SWAP1
00000d9e: KECCAK256
00000d9f: SSTORE
00000da0: PUSH1 0x03
00000da2: SLOAD
00000da3: PUSH2 0x0db2
00000da6: SWAP1
00000da7: DUP5
00000da8: PUSH4 0xffffffff
00000dad: PUSH2 0x187e
00000db0: AND
00000db1: JUMP
00000db2: JUMPDEST
00000db3: PUSH1 0x03
00000db5: DUP2
00000db6: SWAP1
00000db7: SSTORE
00000db8: PUSH4 0xffffffff
00000dbd: DUP3
00000dbe: AND
00000dbf: PUSH1 0x00
00000dc1: SWAP1
00000dc2: DUP2
00000dc3: MSTORE
00000dc4: PUSH1 0x0d
00000dc6: PUSH1 0x20
00000dc8: SWAP1
00000dc9: DUP2
00000dca: MSTORE
00000dcb: PUSH1 0x40
00000dcd: SWAP2
00000dce: DUP3
00000dcf: SWAP1
00000dd0: KECCAK256
00000dd1: PUSH1 0x01
00000dd3: ADD
00000dd4: SWAP3
00000dd5: SWAP1
00000dd6: SWAP3
00000dd7: SSTORE
00000dd8: DUP1
00000dd9: MLOAD
00000dda: DUP6
00000ddb: DUP2
00000ddc: MSTORE
00000ddd: SWAP1
00000dde: MLOAD
00000ddf: CALLER
00000de0: SWAP3
00000de1: PUSH32 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5
00000e02: SWAP3
00000e03: DUP3
00000e04: SWAP1
00000e05: SUB
00000e06: ADD
00000e07: SWAP1
00000e08: LOG2
00000e09: PUSH1 0x01
00000e0b: SWAP2
00000e0c: POP
00000e0d: JUMPDEST
00000e0e: POP
00000e0f: SWAP2
00000e10: SWAP1
00000e11: POP
00000e12: JUMP
00000e13: JUMPDEST
00000e14: PUSH1 0x07
00000e16: SLOAD
00000e17: PUSH1 0x01
00000e19: PUSH1 0xa0
00000e1b: PUSH1 0x02
00000e1d: EXP
00000e1e: SUB
00000e1f: AND
00000e20: CALLER
00000e21: EQ
00000e22: PUSH2 0x0e27
00000e25: JUMPI
00000e26: INVALID
00000e27: JUMPDEST
00000e28: PUSH1 0x01
00000e2a: PUSH1 0xa0
00000e2c: PUSH1 0x02
00000e2e: EXP
00000e2f: SUB
00000e30: AND
00000e31: PUSH1 0x00
00000e33: SWAP1
00000e34: DUP2
00000e35: MSTORE
00000e36: PUSH1 0x08
00000e38: PUSH1 0x20
00000e3a: MSTORE
00000e3b: PUSH1 0x40
00000e3d: SWAP1
00000e3e: KECCAK256
00000e3f: DUP1
00000e40: SLOAD
00000e41: PUSH1 0xff
00000e43: NOT
00000e44: DUP2
00000e45: AND
00000e46: PUSH1 0xff
00000e48: SWAP1
00000e49: SWAP2
00000e4a: AND
00000e4b: ISZERO
00000e4c: OR
00000e4d: SWAP1
00000e4e: SSTORE
00000e4f: JUMP
00000e50: JUMPDEST
00000e51: PUSH1 0x01
00000e53: PUSH1 0xa0
00000e55: PUSH1 0x02
00000e57: EXP
00000e58: SUB
00000e59: AND
00000e5a: PUSH1 0x00
00000e5c: SWAP1
00000e5d: DUP2
00000e5e: MSTORE
00000e5f: PUSH1 0x09
00000e61: PUSH1 0x20
00000e63: MSTORE
00000e64: PUSH1 0x40
00000e66: SWAP1
00000e67: KECCAK256
00000e68: SLOAD
00000e69: SWAP1
00000e6a: JUMP
00000e6b: JUMPDEST
00000e6c: PUSH1 0x04
00000e6e: SLOAD
00000e6f: DUP2
00000e70: JUMP
00000e71: JUMPDEST
00000e72: PUSH1 0x07
00000e74: SLOAD
00000e75: PUSH1 0x01
00000e77: PUSH1 0xa0
00000e79: PUSH1 0x02
00000e7b: EXP
00000e7c: SUB
00000e7d: AND
00000e7e: CALLER
00000e7f: EQ
00000e80: PUSH2 0x0e85
00000e83: JUMPI
00000e84: INVALID
00000e85: JUMPDEST
00000e86: PUSH1 0x01
00000e88: PUSH1 0xa0
00000e8a: PUSH1 0x02
00000e8c: EXP
00000e8d: SUB
00000e8e: DUP2
00000e8f: AND
00000e90: PUSH1 0x00
00000e92: SWAP1
00000e93: DUP2
00000e94: MSTORE
00000e95: PUSH1 0x0e
00000e97: PUSH1 0x20
00000e99: MSTORE
00000e9a: PUSH1 0x40
00000e9c: SWAP1
00000e9d: KECCAK256
00000e9e: SLOAD
00000e9f: PUSH1 0xff
00000ea1: AND
00000ea2: ISZERO
00000ea3: PUSH2 0x0ef6
00000ea6: JUMPI
00000ea7: PUSH1 0x40
00000ea9: DUP1
00000eaa: MLOAD
00000eab: PUSH1 0xe5
00000ead: PUSH1 0x02
00000eaf: EXP
00000eb0: PUSH3 0x461bcd
00000eb4: MUL
00000eb5: DUP2
00000eb6: MSTORE
00000eb7: PUSH1 0x20
00000eb9: PUSH1 0x04
00000ebb: DUP3
00000ebc: ADD
00000ebd: MSTORE
00000ebe: PUSH1 0x1a
00000ec0: PUSH1 0x24
00000ec2: DUP3
00000ec3: ADD
00000ec4: MSTORE
00000ec5: PUSH32 0x67616d6520616c726561647920696e20616c6c6f77206c697374000000000000
00000ee6: PUSH1 0x44
00000ee8: DUP3
00000ee9: ADD
00000eea: MSTORE
00000eeb: SWAP1
00000eec: MLOAD
00000eed: SWAP1
00000eee: DUP2
00000eef: SWAP1
00000ef0: SUB
00000ef1: PUSH1 0x64
00000ef3: ADD
00000ef4: SWAP1
00000ef5: REVERT
00000ef6: JUMPDEST
00000ef7: PUSH1 0x01
00000ef9: PUSH1 0xa0
00000efb: PUSH1 0x02
00000efd: EXP
00000efe: SUB
00000eff: DUP2
00000f00: AND
00000f01: PUSH1 0x00
00000f03: SWAP1
00000f04: DUP2
00000f05: MSTORE
00000f06: PUSH1 0x0f
00000f08: PUSH1 0x20
00000f0a: MSTORE
00000f0b: PUSH1 0x40
00000f0d: SWAP1
00000f0e: KECCAK256
00000f0f: SLOAD
00000f10: ISZERO
00000f11: PUSH2 0x0f64
00000f14: JUMPI
00000f15: PUSH1 0x40
00000f17: DUP1
00000f18: MLOAD
00000f19: PUSH1 0xe5
00000f1b: PUSH1 0x02
00000f1d: EXP
00000f1e: PUSH3 0x461bcd
00000f22: MUL
00000f23: DUP2
00000f24: MSTORE
00000f25: PUSH1 0x20
00000f27: PUSH1 0x04
00000f29: DUP3
00000f2a: ADD
00000f2b: MSTORE
00000f2c: PUSH1 0x1d
00000f2e: PUSH1 0x24
00000f30: DUP3
00000f31: ADD
00000f32: MSTORE
00000f33: PUSH32 0x67616d6520616c726561647920696e2070726f706f736564206c697374000000
00000f54: PUSH1 0x44
00000f56: DUP3
00000f57: ADD
00000f58: MSTORE
00000f59: SWAP1
00000f5a: MLOAD
00000f5b: SWAP1
00000f5c: DUP2
00000f5d: SWAP1
00000f5e: SUB
00000f5f: PUSH1 0x64
00000f61: ADD
00000f62: SWAP1
00000f63: REVERT
00000f64: JUMPDEST
00000f65: PUSH1 0x01
00000f67: PUSH1 0xa0
00000f69: PUSH1 0x02
00000f6b: EXP
00000f6c: SUB
00000f6d: AND
00000f6e: PUSH1 0x00
00000f70: SWAP1
00000f71: DUP2
00000f72: MSTORE
00000f73: PUSH1 0x0f
00000f75: PUSH1 0x20
00000f77: MSTORE
00000f78: PUSH1 0x40
00000f7a: SWAP1
00000f7b: KECCAK256
00000f7c: TIMESTAMP
00000f7d: SWAP1
00000f7e: SSTORE
00000f7f: JUMP
00000f80: JUMPDEST
00000f81: PUSH1 0x07
00000f83: SLOAD
00000f84: PUSH1 0x01
00000f86: PUSH1 0xa0
00000f88: PUSH1 0x02
00000f8a: EXP
00000f8b: SUB
00000f8c: AND
00000f8d: CALLER
00000f8e: EQ
00000f8f: PUSH2 0x0f94
00000f92: JUMPI
00000f93: INVALID
00000f94: JUMPDEST
00000f95: PUSH1 0x01
00000f97: PUSH1 0xa0
00000f99: PUSH1 0x02
00000f9b: EXP
00000f9c: SUB
00000f9d: DUP2
00000f9e: AND
00000f9f: PUSH1 0x00
00000fa1: SWAP1
00000fa2: DUP2
00000fa3: MSTORE
00000fa4: PUSH1 0x0e
00000fa6: PUSH1 0x20
00000fa8: MSTORE
00000fa9: PUSH1 0x40
00000fab: SWAP1
00000fac: KECCAK256
00000fad: SLOAD
00000fae: PUSH1 0xff
00000fb0: AND
00000fb1: DUP1
00000fb2: PUSH2 0x0fd1
00000fb5: JUMPI
00000fb6: POP
00000fb7: PUSH1 0x01
00000fb9: PUSH1 0xa0
00000fbb: PUSH1 0x02
00000fbd: EXP
00000fbe: SUB
00000fbf: DUP2
00000fc0: AND
00000fc1: PUSH1 0x00
00000fc3: SWAP1
00000fc4: DUP2
00000fc5: MSTORE
00000fc6: PUSH1 0x0f
00000fc8: PUSH1 0x20
00000fca: MSTORE
00000fcb: PUSH1 0x40
00000fcd: DUP2
00000fce: KECCAK256
00000fcf: SLOAD
00000fd0: GT
00000fd1: JUMPDEST
00000fd2: ISZERO
00000fd3: ISZERO
00000fd4: PUSH2 0x104d
00000fd7: JUMPI
00000fd8: PUSH1 0x40
00000fda: DUP1
00000fdb: MLOAD
00000fdc: PUSH1 0xe5
00000fde: PUSH1 0x02
00000fe0: EXP
00000fe1: PUSH3 0x461bcd
00000fe5: MUL
00000fe6: DUP2
00000fe7: MSTORE
00000fe8: PUSH1 0x20
00000fea: PUSH1 0x04
00000fec: DUP3
00000fed: ADD
00000fee: MSTORE
00000fef: PUSH1 0x28
00000ff1: PUSH1 0x24
00000ff3: DUP3
00000ff4: ADD
00000ff5: MSTORE
00000ff6: PUSH32 0x67616d65206d75737420696e20616c6c6f77206c697374206f722070726f706f
00001017: PUSH1 0x44
00001019: DUP3
0000101a: ADD
0000101b: MSTORE
0000101c: PUSH32 0x736564206c697374000000000000000000000000000000000000000000000000
0000103d: PUSH1 0x64
0000103f: DUP3
00001040: ADD
00001041: MSTORE
00001042: SWAP1
00001043: MLOAD
00001044: SWAP1
00001045: DUP2
00001046: SWAP1
00001047: SUB
00001048: PUSH1 0x84
0000104a: ADD
0000104b: SWAP1
0000104c: REVERT
0000104d: JUMPDEST
0000104e: PUSH1 0x01
00001050: PUSH1 0xa0
00001052: PUSH1 0x02
00001054: EXP
00001055: SUB
00001056: AND
00001057: PUSH1 0x00
00001059: SWAP1
0000105a: DUP2
0000105b: MSTORE
0000105c: PUSH1 0x0e
0000105e: PUSH1 0x20
00001060: SWAP1
00001061: DUP2
00001062: MSTORE
00001063: PUSH1 0x40
00001065: DUP1
00001066: DUP4
00001067: KECCAK256
00001068: DUP1
00001069: SLOAD
0000106a: PUSH1 0xff
0000106c: NOT
0000106d: AND
0000106e: SWAP1
0000106f: SSTORE
00001070: PUSH1 0x0f
00001072: SWAP1
00001073: SWAP2
00001074: MSTORE
00001075: DUP2
00001076: KECCAK256
00001077: SSTORE
00001078: JUMP
00001079: JUMPDEST
0000107a: CALLER
0000107b: PUSH1 0x00
0000107d: SWAP1
0000107e: DUP2
0000107f: MSTORE
00001080: PUSH1 0x0e
00001082: PUSH1 0x20
00001084: MSTORE
00001085: PUSH1 0x40
00001087: DUP2
00001088: KECCAK256
00001089: SLOAD
0000108a: DUP2
0000108b: SWAP1
0000108c: DUP2
0000108d: SWAP1
0000108e: DUP2
0000108f: SWAP1
00001090: PUSH1 0xff
00001092: AND
00001093: ISZERO
00001094: ISZERO
00001095: PUSH2 0x110e
00001098: JUMPI
00001099: PUSH1 0x40
0000109b: DUP1
0000109c: MLOAD
0000109d: PUSH1 0xe5
0000109f: PUSH1 0x02
000010a1: EXP
000010a2: PUSH3 0x461bcd
000010a6: MUL
000010a7: DUP2
000010a8: MSTORE
000010a9: PUSH1 0x20
000010ab: PUSH1 0x04
000010ad: DUP3
000010ae: ADD
000010af: MSTORE
000010b0: PUSH1 0x21
000010b2: PUSH1 0x24
000010b4: DUP3
000010b5: ADD
000010b6: MSTORE
000010b7: PUSH32 0x6f6e6c7920616c6c6f7765642067616d6573207065726d697420746f2063616c
000010d8: PUSH1 0x44
000010da: DUP3
000010db: ADD
000010dc: MSTORE
000010dd: PUSH32 0x6c00000000000000000000000000000000000000000000000000000000000000
000010fe: PUSH1 0x64
00001100: DUP3
00001101: ADD
00001102: MSTORE
00001103: SWAP1
00001104: MLOAD
00001105: SWAP1
00001106: DUP2
00001107: SWAP1
00001108: SUB
00001109: PUSH1 0x84
0000110b: ADD
0000110c: SWAP1
0000110d: REVERT
0000110e: JUMPDEST
0000110f: PUSH2 0x1117
00001112: TIMESTAMP
00001113: PUSH2 0x1b05
00001116: JUMP
00001117: JUMPDEST
00001118: PUSH2 0xffff
0000111b: PUSH1 0x00
0000111d: NOT
0000111e: PUSH1 0x0c
00001120: DUP5
00001121: MUL
00001122: PUSH1 0xff
00001124: DUP5
00001125: AND
00001126: ADD
00001127: ADD
00001128: AND
00001129: PUSH1 0x00
0000112b: DUP2
0000112c: DUP2
0000112d: MSTORE
0000112e: PUSH1 0x0d
00001130: PUSH1 0x20
00001132: MSTORE
00001133: PUSH1 0x40
00001135: SWAP1
00001136: KECCAK256
00001137: SLOAD
00001138: SWAP3
00001139: SWAP7
0000113a: POP
0000113b: SWAP1
0000113c: SWAP5
0000113d: POP
0000113e: SWAP3
0000113f: POP
00001140: PUSH2 0x1149
00001143: SWAP1
00001144: CALLVALUE
00001145: PUSH2 0x18de
00001148: JUMP
00001149: JUMPDEST
0000114a: PUSH4 0xffffffff
0000114f: DUP4
00001150: AND
00001151: PUSH1 0x00
00001153: SWAP1
00001154: DUP2
00001155: MSTORE
00001156: PUSH1 0x0d
00001158: PUSH1 0x20
0000115a: MSTORE
0000115b: PUSH1 0x40
0000115d: SWAP1
0000115e: KECCAK256
0000115f: DUP2
00001160: DUP2
00001161: SSTORE
00001162: PUSH1 0x01
00001164: ADD
00001165: SLOAD
00001166: SWAP1
00001167: SWAP2
00001168: POP
00001169: ISZERO
0000116a: ISZERO
0000116b: PUSH2 0x118b
0000116e: JUMPI
0000116f: PUSH1 0x03
00001171: SLOAD
00001172: PUSH4 0xffffffff
00001177: DUP4
00001178: AND
00001179: PUSH1 0x00
0000117b: SWAP1
0000117c: DUP2
0000117d: MSTORE
0000117e: PUSH1 0x0d
00001180: PUSH1 0x20
00001182: MSTORE
00001183: PUSH1 0x40
00001185: SWAP1
00001186: KECCAK256
00001187: PUSH1 0x01
00001189: ADD
0000118a: SSTORE
0000118b: JUMPDEST
0000118c: PUSH1 0x40
0000118e: DUP1
0000118f: MLOAD
00001190: PUSH2 0xffff
00001193: DUP7
00001194: AND
00001195: DUP2
00001196: MSTORE
00001197: PUSH1 0xff
00001199: DUP6
0000119a: AND
0000119b: PUSH1 0x20
0000119d: DUP3
0000119e: ADD
0000119f: MSTORE
000011a0: DUP1
000011a1: DUP3
000011a2: ADD
000011a3: DUP4
000011a4: SWAP1
000011a5: MSTORE
000011a6: SWAP1
000011a7: MLOAD
000011a8: CALLER
000011a9: SWAP2
000011aa: PUSH32 0x8b0cb8ed9764b54369b23141ee20ee74d5fec21db7c14535d1fe5ce94b4d4913
000011cb: SWAP2
000011cc: SWAP1
000011cd: DUP2
000011ce: SWAP1
000011cf: SUB
000011d0: PUSH1 0x60
000011d2: ADD
000011d3: SWAP1
000011d4: LOG2
000011d5: POP
000011d6: POP
000011d7: POP
000011d8: POP
000011d9: JUMP
000011da: JUMPDEST
000011db: PUSH1 0x07
000011dd: SLOAD
000011de: PUSH1 0x01
000011e0: PUSH1 0xa0
000011e2: PUSH1 0x02
000011e4: EXP
000011e5: SUB
000011e6: AND
000011e7: DUP2
000011e8: JUMP
000011e9: JUMPDEST
000011ea: PUSH1 0x0a
000011ec: DUP2
000011ed: JUMP
000011ee: JUMPDEST
000011ef: PUSH3 0x4c4b40
000011f3: DUP2
000011f4: JUMP
000011f5: JUMPDEST
000011f6: PUSH1 0x01
000011f8: DUP1
000011f9: SLOAD
000011fa: PUSH1 0x40
000011fc: DUP1
000011fd: MLOAD
000011fe: PUSH1 0x20
00001200: PUSH1 0x02
00001202: DUP5
00001203: DUP7
00001204: AND
00001205: ISZERO
00001206: PUSH2 0x0100
00001209: MUL
0000120a: PUSH1 0x00
0000120c: NOT
0000120d: ADD
0000120e: SWAP1
0000120f: SWAP5
00001210: AND
00001211: SWAP4
00001212: SWAP1
00001213: SWAP4
00001214: DIV
00001215: PUSH1 0x1f
00001217: DUP2
00001218: ADD
00001219: DUP5
0000121a: SWAP1
0000121b: DIV
0000121c: DUP5
0000121d: MUL
0000121e: DUP3
0000121f: ADD
00001220: DUP5
00001221: ADD
00001222: SWAP1
00001223: SWAP3
00001224: MSTORE
00001225: DUP2
00001226: DUP2
00001227: MSTORE
00001228: SWAP3
00001229: SWAP2
0000122a: DUP4
0000122b: ADD
0000122c: DUP3
0000122d: DUP3
0000122e: DUP1
0000122f: ISZERO
00001230: PUSH2 0x064c
00001233: JUMPI
00001234: DUP1
00001235: PUSH1 0x1f
00001237: LT
00001238: PUSH2 0x0621
0000123b: JUMPI
0000123c: PUSH2 0x0100
0000123f: DUP1
00001240: DUP4
00001241: SLOAD
00001242: DIV
00001243: MUL
00001244: DUP4
00001245: MSTORE
00001246: SWAP2
00001247: PUSH1 0x20
00001249: ADD
0000124a: SWAP2
0000124b: PUSH2 0x064c
0000124e: JUMP
0000124f: JUMPDEST
00001250: PUSH1 0x5a
00001252: DUP2
00001253: JUMP
00001254: JUMPDEST
00001255: PUSH2 0x01f4
00001258: DUP2
00001259: JUMP
0000125a: JUMPDEST
0000125b: PUSH1 0x00
0000125d: DUP1
0000125e: DUP1
0000125f: DUP4
00001260: GT
00001261: PUSH2 0x1269
00001264: JUMPI
00001265: PUSH1 0x00
00001267: DUP1
00001268: REVERT
00001269: JUMPDEST
0000126a: CALLER
0000126b: PUSH1 0x00
0000126d: SWAP1
0000126e: DUP2
0000126f: MSTORE
00001270: PUSH1 0x09
00001272: PUSH1 0x20
00001274: MSTORE
00001275: PUSH1 0x40
00001277: SWAP1
00001278: KECCAK256
00001279: SLOAD
0000127a: DUP4
0000127b: GT
0000127c: ISZERO
0000127d: PUSH2 0x1285
00001280: JUMPI
00001281: PUSH1 0x00
00001283: DUP1
00001284: REVERT
00001285: JUMPDEST
00001286: PUSH1 0x01
00001288: PUSH1 0xa0
0000128a: PUSH1 0x02
0000128c: EXP
0000128d: SUB
0000128e: DUP5
0000128f: AND
00001290: PUSH1 0x00
00001292: SWAP1
00001293: DUP2
00001294: MSTORE
00001295: PUSH1 0x09
00001297: PUSH1 0x20
00001299: MSTORE
0000129a: PUSH1 0x40
0000129c: SWAP1
0000129d: KECCAK256
0000129e: SLOAD
0000129f: DUP4
000012a0: DUP2
000012a1: ADD
000012a2: LT
000012a3: ISZERO
000012a4: PUSH2 0x12ac
000012a7: JUMPI
000012a8: PUSH1 0x00
000012aa: DUP1
000012ab: REVERT
000012ac: JUMPDEST
000012ad: CALLER
000012ae: PUSH1 0x00
000012b0: SWAP1
000012b1: DUP2
000012b2: MSTORE
000012b3: PUSH1 0x08
000012b5: PUSH1 0x20
000012b7: MSTORE
000012b8: PUSH1 0x40
000012ba: SWAP1
000012bb: KECCAK256
000012bc: SLOAD
000012bd: PUSH1 0xff
000012bf: AND
000012c0: ISZERO
000012c1: PUSH2 0x12c9
000012c4: JUMPI
000012c5: PUSH1 0x00
000012c7: DUP1
000012c8: REVERT
000012c9: JUMPDEST
000012ca: PUSH1 0x01
000012cc: PUSH1 0xa0
000012ce: PUSH1 0x02
000012d0: EXP
000012d1: SUB
000012d2: DUP5
000012d3: AND
000012d4: PUSH1 0x00
000012d6: SWAP1
000012d7: DUP2
000012d8: MSTORE
000012d9: PUSH1 0x08
000012db: PUSH1 0x20
000012dd: MSTORE
000012de: PUSH1 0x40
000012e0: SWAP1
000012e1: KECCAK256
000012e2: SLOAD
000012e3: PUSH1 0xff
000012e5: AND
000012e6: ISZERO
000012e7: PUSH2 0x12ef
000012ea: JUMPI
000012eb: PUSH1 0x00
000012ed: DUP1
000012ee: REVERT
000012ef: JUMPDEST
000012f0: PUSH2 0x12f7
000012f3: PUSH2 0x16f3
000012f6: JUMP
000012f7: JUMPDEST
000012f8: CALLER
000012f9: PUSH1 0x00
000012fb: DUP2
000012fc: DUP2
000012fd: MSTORE
000012fe: PUSH1 0x0b
00001300: PUSH1 0x20
00001302: MSTORE
00001303: PUSH1 0x40
00001305: SWAP1
00001306: KECCAK256
00001307: SLOAD
00001308: SWAP2
00001309: SWAP3
0000130a: POP
0000130b: PUSH2 0x131a
0000130e: SWAP2
0000130f: PUSH4 0xffffffff
00001314: AND
00001315: DUP4
00001316: PUSH2 0x171c
00001319: JUMP
0000131a: JUMPDEST
0000131b: PUSH1 0x01
0000131d: PUSH1 0xa0
0000131f: PUSH1 0x02
00001321: EXP
00001322: SUB
00001323: DUP5
00001324: AND
00001325: PUSH1 0x00
00001327: SWAP1
00001328: DUP2
00001329: MSTORE
0000132a: PUSH1 0x0b
0000132c: PUSH1 0x20
0000132e: MSTORE
0000132f: PUSH1 0x40
00001331: SWAP1
00001332: KECCAK256
00001333: SLOAD
00001334: PUSH2 0x1345
00001337: SWAP1
00001338: DUP6
00001339: SWAP1
0000133a: PUSH4 0xffffffff
0000133f: AND
00001340: DUP4
00001341: PUSH2 0x171c
00001344: JUMP
00001345: JUMPDEST
00001346: CALLER
00001347: PUSH1 0x00
00001349: SWAP1
0000134a: DUP2
0000134b: MSTORE
0000134c: PUSH1 0x09
0000134e: PUSH1 0x20
00001350: MSTORE
00001351: PUSH1 0x40
00001353: SWAP1
00001354: KECCAK256
00001355: SLOAD
00001356: PUSH2 0x1365
00001359: SWAP1
0000135a: DUP5
0000135b: PUSH4 0xffffffff
00001360: PUSH2 0x187e
00001363: AND
00001364: JUMP
00001365: JUMPDEST
00001366: CALLER
00001367: PUSH1 0x00
00001369: SWAP1
0000136a: DUP2
0000136b: MSTORE
0000136c: PUSH1 0x09
0000136e: PUSH1 0x20
00001370: MSTORE
00001371: PUSH1 0x40
00001373: DUP1
00001374: DUP3
00001375: KECCAK256
00001376: SWAP3
00001377: SWAP1
00001378: SWAP3
00001379: SSTORE
0000137a: PUSH1 0x01
0000137c: PUSH1 0xa0
0000137e: PUSH1 0x02
00001380: EXP
00001381: SUB
00001382: DUP7
00001383: AND
00001384: DUP2
00001385: MSTORE
00001386: KECCAK256
00001387: SLOAD
00001388: PUSH2 0x1397
0000138b: SWAP1
0000138c: DUP5
0000138d: PUSH4 0xffffffff
00001392: PUSH2 0x18de
00001395: AND
00001396: JUMP
00001397: JUMPDEST
00001398: PUSH1 0x01
0000139a: PUSH1 0xa0
0000139c: PUSH1 0x02
0000139e: EXP
0000139f: SUB
000013a0: DUP6
000013a1: AND
000013a2: PUSH1 0x00
000013a4: DUP2
000013a5: DUP2
000013a6: MSTORE
000013a7: PUSH1 0x09
000013a9: PUSH1 0x20
000013ab: SWAP1
000013ac: DUP2
000013ad: MSTORE
000013ae: PUSH1 0x40
000013b0: SWAP2
000013b1: DUP3
000013b2: SWAP1
000013b3: KECCAK256
000013b4: SWAP4
000013b5: SWAP1
000013b6: SWAP4
000013b7: SSTORE
000013b8: DUP1
000013b9: MLOAD
000013ba: DUP7
000013bb: DUP2
000013bc: MSTORE
000013bd: SWAP1
000013be: MLOAD
000013bf: SWAP2
000013c0: SWAP3
000013c1: CALLER
000013c2: SWAP3
000013c3: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000013e4: SWAP3
000013e5: DUP2
000013e6: SWAP1
000013e7: SUB
000013e8: SWAP1
000013e9: SWAP2
000013ea: ADD
000013eb: SWAP1
000013ec: LOG3
000013ed: POP
000013ee: PUSH1 0x01
000013f0: SWAP4
000013f1: SWAP3
000013f2: POP
000013f3: POP
000013f4: POP
000013f5: JUMP
000013f6: JUMPDEST
000013f7: PUSH1 0x07
000013f9: SLOAD
000013fa: PUSH1 0x01
000013fc: PUSH1 0xa0
000013fe: PUSH1 0x02
00001400: EXP
00001401: SUB
00001402: AND
00001403: CALLER
00001404: EQ
00001405: PUSH2 0x140a
00001408: JUMPI
00001409: INVALID
0000140a: JUMPDEST
0000140b: PUSH1 0x01
0000140d: PUSH1 0xa0
0000140f: PUSH1 0x02
00001411: EXP
00001412: SUB
00001413: DUP2
00001414: AND
00001415: PUSH1 0x00
00001417: SWAP1
00001418: DUP2
00001419: MSTORE
0000141a: PUSH1 0x0e
0000141c: PUSH1 0x20
0000141e: MSTORE
0000141f: PUSH1 0x40
00001421: SWAP1
00001422: KECCAK256
00001423: SLOAD
00001424: PUSH1 0xff
00001426: AND
00001427: ISZERO
00001428: PUSH2 0x147b
0000142b: JUMPI
0000142c: PUSH1 0x40
0000142e: DUP1
0000142f: MLOAD
00001430: PUSH1 0xe5
00001432: PUSH1 0x02
00001434: EXP
00001435: PUSH3 0x461bcd
00001439: MUL
0000143a: DUP2
0000143b: MSTORE
0000143c: PUSH1 0x20
0000143e: PUSH1 0x04
00001440: DUP3
00001441: ADD
00001442: MSTORE
00001443: PUSH1 0x1a
00001445: PUSH1 0x24
00001447: DUP3
00001448: ADD
00001449: MSTORE
0000144a: PUSH32 0x67616d6520616c726561647920696e20616c6c6f77206c697374000000000000
0000146b: PUSH1 0x44
0000146d: DUP3
0000146e: ADD
0000146f: MSTORE
00001470: SWAP1
00001471: MLOAD
00001472: SWAP1
00001473: DUP2
00001474: SWAP1
00001475: SUB
00001476: PUSH1 0x64
00001478: ADD
00001479: SWAP1
0000147a: REVERT
0000147b: JUMPDEST
0000147c: PUSH1 0x01
0000147e: PUSH1 0xa0
00001480: PUSH1 0x02
00001482: EXP
00001483: SUB
00001484: DUP2
00001485: AND
00001486: PUSH1 0x00
00001488: SWAP1
00001489: DUP2
0000148a: MSTORE
0000148b: PUSH1 0x0f
0000148d: PUSH1 0x20
0000148f: MSTORE
00001490: PUSH1 0x40
00001492: DUP2
00001493: KECCAK256
00001494: SLOAD
00001495: GT
00001496: PUSH2 0x150f
00001499: JUMPI
0000149a: PUSH1 0x40
0000149c: DUP1
0000149d: MLOAD
0000149e: PUSH1 0xe5
000014a0: PUSH1 0x02
000014a2: EXP
000014a3: PUSH3 0x461bcd
000014a7: MUL
000014a8: DUP2
000014a9: MSTORE
000014aa: PUSH1 0x20
000014ac: PUSH1 0x04
000014ae: DUP3
000014af: ADD
000014b0: MSTORE
000014b1: PUSH1 0x23
000014b3: PUSH1 0x24
000014b5: DUP3
000014b6: ADD
000014b7: MSTORE
000014b8: PUSH32 0x67616d65206d75737420626520696e2070726f706f736564206c697374206669
000014d9: PUSH1 0x44
000014db: DUP3
000014dc: ADD
000014dd: MSTORE
000014de: PUSH32 0x7273740000000000000000000000000000000000000000000000000000000000
000014ff: PUSH1 0x64
00001501: DUP3
00001502: ADD
00001503: MSTORE
00001504: SWAP1
00001505: MLOAD
00001506: SWAP1
00001507: DUP2
00001508: SWAP1
00001509: SUB
0000150a: PUSH1 0x84
0000150c: ADD
0000150d: SWAP1
0000150e: REVERT
0000150f: JUMPDEST
00001510: PUSH1 0x01
00001512: PUSH1 0xa0
00001514: PUSH1 0x02
00001516: EXP
00001517: SUB
00001518: DUP2
00001519: AND
0000151a: PUSH1 0x00
0000151c: SWAP1
0000151d: DUP2
0000151e: MSTORE
0000151f: PUSH1 0x0f
00001521: PUSH1 0x20
00001523: MSTORE
00001524: PUSH1 0x40
00001526: SWAP1
00001527: KECCAK256
00001528: SLOAD
00001529: PUSH2 0x153b
0000152c: SWAP1
0000152d: PUSH3 0x02a300
00001531: PUSH4 0xffffffff
00001536: PUSH2 0x18de
00001539: AND
0000153a: JUMP
0000153b: JUMPDEST
0000153c: TIMESTAMP
0000153d: GT
0000153e: PUSH2 0x1591
00001541: JUMPI
00001542: PUSH1 0x40
00001544: DUP1
00001545: MLOAD
00001546: PUSH1 0xe5
00001548: PUSH1 0x02
0000154a: EXP
0000154b: PUSH3 0x461bcd
0000154f: MUL
00001550: DUP2
00001551: MSTORE
00001552: PUSH1 0x20
00001554: PUSH1 0x04
00001556: DUP3
00001557: ADD
00001558: MSTORE
00001559: PUSH1 0x1f
0000155b: PUSH1 0x24
0000155d: DUP3
0000155e: ADD
0000155f: MSTORE
00001560: PUSH32 0x67616d65206d757374206265206465626174656420666f722032206461797300
00001581: PUSH1 0x44
00001583: DUP3
00001584: ADD
00001585: MSTORE
00001586: SWAP1
00001587: MLOAD
00001588: SWAP1
00001589: DUP2
0000158a: SWAP1
0000158b: SUB
0000158c: PUSH1 0x64
0000158e: ADD
0000158f: SWAP1
00001590: REVERT
00001591: JUMPDEST
00001592: PUSH1 0x01
00001594: PUSH1 0xa0
00001596: PUSH1 0x02
00001598: EXP
00001599: SUB
0000159a: AND
0000159b: PUSH1 0x00
0000159d: SWAP1
0000159e: DUP2
0000159f: MSTORE
000015a0: PUSH1 0x0e
000015a2: PUSH1 0x20
000015a4: SWAP1
000015a5: DUP2
000015a6: MSTORE
000015a7: PUSH1 0x40
000015a9: DUP1
000015aa: DUP4
000015ab: KECCAK256
000015ac: DUP1
000015ad: SLOAD
000015ae: PUSH1 0xff
000015b0: NOT
000015b1: AND
000015b2: PUSH1 0x01
000015b4: OR
000015b5: SWAP1
000015b6: SSTORE
000015b7: PUSH1 0x0f
000015b9: SWAP1
000015ba: SWAP2
000015bb: MSTORE
000015bc: DUP2
000015bd: KECCAK256
000015be: SSTORE
000015bf: JUMP
000015c0: JUMPDEST
000015c1: PUSH1 0x0c
000015c3: PUSH1 0x20
000015c5: MSTORE
000015c6: PUSH1 0x00
000015c8: SWAP1
000015c9: DUP2
000015ca: MSTORE
000015cb: PUSH1 0x40
000015cd: SWAP1
000015ce: KECCAK256
000015cf: SLOAD
000015d0: DUP2
000015d1: JUMP
000015d2: JUMPDEST
000015d3: PUSH1 0x01
000015d5: PUSH1 0xa0
000015d7: PUSH1 0x02
000015d9: EXP
000015da: SUB
000015db: SWAP2
000015dc: DUP3
000015dd: AND
000015de: PUSH1 0x00
000015e0: SWAP1
000015e1: DUP2
000015e2: MSTORE
000015e3: PUSH1 0x0a
000015e5: PUSH1 0x20
000015e7: SWAP1
000015e8: DUP2
000015e9: MSTORE
000015ea: PUSH1 0x40
000015ec: DUP1
000015ed: DUP4
000015ee: KECCAK256
000015ef: SWAP4
000015f0: SWAP1
000015f1: SWAP5
000015f2: AND
000015f3: DUP3
000015f4: MSTORE
000015f5: SWAP2
000015f6: SWAP1
000015f7: SWAP2
000015f8: MSTORE
000015f9: KECCAK256
000015fa: SLOAD
000015fb: SWAP1
000015fc: JUMP
000015fd: JUMPDEST
000015fe: PUSH1 0x0b
00001600: PUSH1 0x20
00001602: MSTORE
00001603: PUSH1 0x00
00001605: SWAP1
00001606: DUP2
00001607: MSTORE
00001608: PUSH1 0x40
0000160a: SWAP1
0000160b: KECCAK256
0000160c: SLOAD
0000160d: PUSH4 0xffffffff
00001612: AND
00001613: DUP2
00001614: JUMP
00001615: JUMPDEST
00001616: PUSH1 0x01
00001618: PUSH1 0xa0
0000161a: PUSH1 0x02
0000161c: EXP
0000161d: SUB
0000161e: DUP2
0000161f: AND
00001620: PUSH1 0x00
00001622: SWAP1
00001623: DUP2
00001624: MSTORE
00001625: PUSH1 0x0f
00001627: PUSH1 0x20
00001629: MSTORE
0000162a: PUSH1 0x40
0000162c: DUP2
0000162d: KECCAK256
0000162e: SLOAD
0000162f: DUP2
00001630: SWAP1
00001631: DUP2
00001632: LT
00001633: PUSH2 0x1686
00001636: JUMPI
00001637: PUSH1 0x40
00001639: DUP1
0000163a: MLOAD
0000163b: PUSH1 0xe5
0000163d: PUSH1 0x02
0000163f: EXP
00001640: PUSH3 0x461bcd
00001644: MUL
00001645: DUP2
00001646: MSTORE
00001647: PUSH1 0x20
00001649: PUSH1 0x04
0000164b: DUP3
0000164c: ADD
0000164d: MSTORE
0000164e: PUSH1 0x19
00001650: PUSH1 0x24
00001652: DUP3
00001653: ADD
00001654: MSTORE
00001655: PUSH32 0x67616d65206e6f7420696e2070726f706f736564206c69737400000000000000
00001676: PUSH1 0x44
00001678: DUP3
00001679: ADD
0000167a: MSTORE
0000167b: SWAP1
0000167c: MLOAD
0000167d: SWAP1
0000167e: DUP2
0000167f: SWAP1
00001680: SUB
00001681: PUSH1 0x64
00001683: ADD
00001684: SWAP1
00001685: REVERT
00001686: JUMPDEST
00001687: POP
00001688: PUSH1 0x01
0000168a: PUSH1 0xa0
0000168c: PUSH1 0x02
0000168e: EXP
0000168f: SUB
00001690: DUP3
00001691: AND
00001692: PUSH1 0x00
00001694: SWAP1
00001695: DUP2
00001696: MSTORE
00001697: PUSH1 0x0f
00001699: PUSH1 0x20
0000169b: MSTORE
0000169c: PUSH1 0x40
0000169e: SWAP1
0000169f: KECCAK256
000016a0: SLOAD
000016a1: PUSH2 0x16b3
000016a4: DUP2
000016a5: PUSH3 0x02a300
000016a9: PUSH4 0xffffffff
000016ae: PUSH2 0x18de
000016b1: AND
000016b2: JUMP
000016b3: JUMPDEST
000016b4: TIMESTAMP
000016b5: LT
000016b6: ISZERO
000016b7: PUSH2 0x16e4
000016ba: JUMPI
000016bb: PUSH2 0x16dd
000016be: TIMESTAMP
000016bf: PUSH2 0x16d1
000016c2: DUP4
000016c3: PUSH3 0x02a300
000016c7: PUSH4 0xffffffff
000016cc: PUSH2 0x18de
000016cf: AND
000016d0: JUMP
000016d1: JUMPDEST
000016d2: SWAP1
000016d3: PUSH4 0xffffffff
000016d8: PUSH2 0x187e
000016db: AND
000016dc: JUMP
000016dd: JUMPDEST
000016de: SWAP2
000016df: POP
000016e0: PUSH2 0x0e0d
000016e3: JUMP
000016e4: JUMPDEST
000016e5: PUSH1 0x00
000016e7: SWAP2
000016e8: POP
000016e9: PUSH2 0x0e0d
000016ec: JUMP
000016ed: JUMPDEST
000016ee: PUSH1 0x06
000016f0: SLOAD
000016f1: SWAP1
000016f2: JUMP
000016f3: JUMPDEST
000016f4: PUSH1 0x00
000016f6: DUP1
000016f7: PUSH1 0x00
000016f9: PUSH2 0x1701
000016fc: TIMESTAMP
000016fd: PUSH2 0x1b05
00001700: JUMP
00001701: JUMPDEST
00001702: SWAP2
00001703: POP
00001704: SWAP2
00001705: POP
00001706: PUSH1 0x01
00001708: DUP2
00001709: PUSH1 0xff
0000170b: AND
0000170c: DUP4
0000170d: PUSH1 0x0c
0000170f: MUL
00001710: ADD
00001711: SUB
00001712: PUSH2 0xffff
00001715: AND
00001716: SWAP3
00001717: POP
00001718: POP
00001719: POP
0000171a: SWAP1
0000171b: JUMP
0000171c: JUMPDEST
0000171d: PUSH1 0x00
0000171f: DUP1
00001720: PUSH4 0xffffffff
00001725: DUP1
00001726: DUP6
00001727: AND
00001728: SWAP1
00001729: DUP5
0000172a: AND
0000172b: LT
0000172c: ISZERO
0000172d: PUSH2 0x1735
00001730: JUMPI
00001731: PUSH1 0x00
00001733: DUP1
00001734: REVERT
00001735: JUMPDEST
00001736: PUSH4 0xffffffff
0000173b: DUP5
0000173c: AND
0000173d: ISZERO
0000173e: ISZERO
0000173f: PUSH2 0x1772
00001742: JUMPI
00001743: PUSH1 0x01
00001745: PUSH1 0xa0
00001747: PUSH1 0x02
00001749: EXP
0000174a: SUB
0000174b: DUP6
0000174c: AND
0000174d: PUSH1 0x00
0000174f: SWAP1
00001750: DUP2
00001751: MSTORE
00001752: PUSH1 0x0b
00001754: PUSH1 0x20
00001756: MSTORE
00001757: PUSH1 0x40
00001759: SWAP1
0000175a: KECCAK256
0000175b: DUP1
0000175c: SLOAD
0000175d: PUSH4 0xffffffff
00001762: NOT
00001763: AND
00001764: PUSH4 0xffffffff
00001769: DUP6
0000176a: AND
0000176b: OR
0000176c: SWAP1
0000176d: SSTORE
0000176e: PUSH2 0x1877
00001771: JUMP
00001772: JUMPDEST
00001773: DUP4
00001774: PUSH4 0xffffffff
00001779: AND
0000177a: DUP4
0000177b: PUSH4 0xffffffff
00001780: AND
00001781: EQ
00001782: ISZERO
00001783: PUSH2 0x17b6
00001786: JUMPI
00001787: PUSH1 0x01
00001789: PUSH1 0xa0
0000178b: PUSH1 0x02
0000178d: EXP
0000178e: SUB
0000178f: DUP6
00001790: AND
00001791: PUSH1 0x00
00001793: SWAP1
00001794: DUP2
00001795: MSTORE
00001796: PUSH1 0x0b
00001798: PUSH1 0x20
0000179a: MSTORE
0000179b: PUSH1 0x40
0000179d: SWAP1
0000179e: KECCAK256
0000179f: DUP1
000017a0: SLOAD
000017a1: PUSH4 0xffffffff
000017a6: NOT
000017a7: AND
000017a8: PUSH4 0xffffffff
000017ad: DUP6
000017ae: AND
000017af: OR
000017b0: SWAP1
000017b1: SSTORE
000017b2: PUSH2 0x1877
000017b5: JUMP
000017b6: JUMPDEST
000017b7: PUSH1 0x01
000017b9: PUSH1 0xa0
000017bb: PUSH1 0x02
000017bd: EXP
000017be: SUB
000017bf: DUP6
000017c0: AND
000017c1: PUSH1 0x00
000017c3: SWAP1
000017c4: DUP2
000017c5: MSTORE
000017c6: PUSH1 0x09
000017c8: PUSH1 0x20
000017ca: MSTORE
000017cb: PUSH1 0x40
000017cd: SWAP1
000017ce: KECCAK256
000017cf: SLOAD
000017d0: SWAP2
000017d1: POP
000017d2: DUP2
000017d3: ISZERO
000017d4: ISZERO
000017d5: PUSH2 0x1808
000017d8: JUMPI
000017d9: PUSH1 0x01
000017db: PUSH1 0xa0
000017dd: PUSH1 0x02
000017df: EXP
000017e0: SUB
000017e1: DUP6
000017e2: AND
000017e3: PUSH1 0x00
000017e5: SWAP1
000017e6: DUP2
000017e7: MSTORE
000017e8: PUSH1 0x0b
000017ea: PUSH1 0x20
000017ec: MSTORE
000017ed: PUSH1 0x40
000017ef: SWAP1
000017f0: KECCAK256
000017f1: DUP1
000017f2: SLOAD
000017f3: PUSH4 0xffffffff
000017f8: NOT
000017f9: AND
000017fa: PUSH4 0xffffffff
000017ff: DUP6
00001800: AND
00001801: OR
00001802: SWAP1
00001803: SSTORE
00001804: PUSH2 0x1877
00001807: JUMP
00001808: JUMPDEST
00001809: PUSH2 0x1813
0000180c: DUP5
0000180d: DUP5
0000180e: DUP5
0000180f: PUSH2 0x1939
00001812: JUMP
00001813: JUMPDEST
00001814: PUSH1 0x01
00001816: PUSH1 0xa0
00001818: PUSH1 0x02
0000181a: EXP
0000181b: SUB
0000181c: DUP7
0000181d: AND
0000181e: PUSH1 0x00
00001820: SWAP1
00001821: DUP2
00001822: MSTORE
00001823: PUSH1 0x0c
00001825: PUSH1 0x20
00001827: MSTORE
00001828: PUSH1 0x40
0000182a: SWAP1
0000182b: KECCAK256
0000182c: SLOAD
0000182d: SWAP1
0000182e: SWAP2
0000182f: POP
00001830: PUSH2 0x183f
00001833: SWAP1
00001834: DUP3
00001835: PUSH4 0xffffffff
0000183a: PUSH2 0x18de
0000183d: AND
0000183e: JUMP
0000183f: JUMPDEST
00001840: PUSH1 0x01
00001842: PUSH1 0xa0
00001844: PUSH1 0x02
00001846: EXP
00001847: SUB
00001848: DUP7
00001849: AND
0000184a: PUSH1 0x00
0000184c: SWAP1
0000184d: DUP2
0000184e: MSTORE
0000184f: PUSH1 0x0c
00001851: PUSH1 0x20
00001853: SWAP1
00001854: DUP2
00001855: MSTORE
00001856: PUSH1 0x40
00001858: DUP1
00001859: DUP4
0000185a: KECCAK256
0000185b: SWAP4
0000185c: SWAP1
0000185d: SWAP4
0000185e: SSTORE
0000185f: PUSH1 0x0b
00001861: SWAP1
00001862: MSTORE
00001863: KECCAK256
00001864: DUP1
00001865: SLOAD
00001866: PUSH4 0xffffffff
0000186b: NOT
0000186c: AND
0000186d: PUSH4 0xffffffff
00001872: DUP6
00001873: AND
00001874: OR
00001875: SWAP1
00001876: SSTORE
00001877: JUMPDEST
00001878: POP
00001879: POP
0000187a: POP
0000187b: POP
0000187c: POP
0000187d: JUMP
0000187e: JUMPDEST
0000187f: PUSH1 0x00
00001881: DUP3
00001882: DUP3
00001883: GT
00001884: ISZERO
00001885: PUSH2 0x18d8
00001888: JUMPI
00001889: PUSH1 0x40
0000188b: DUP1
0000188c: MLOAD
0000188d: PUSH1 0xe5
0000188f: PUSH1 0x02
00001891: EXP
00001892: PUSH3 0x461bcd
00001896: MUL
00001897: DUP2
00001898: MSTORE
00001899: PUSH1 0x20
0000189b: PUSH1 0x04
0000189d: DUP3
0000189e: ADD
0000189f: MSTORE
000018a0: PUSH1 0x13
000018a2: PUSH1 0x24
000018a4: DUP3
000018a5: ADD
000018a6: MSTORE
000018a7: PUSH32 0x536166654d61746820737562206661696c656400000000000000000000000000
000018c8: PUSH1 0x44
000018ca: DUP3
000018cb: ADD
000018cc: MSTORE
000018cd: SWAP1
000018ce: MLOAD
000018cf: SWAP1
000018d0: DUP2
000018d1: SWAP1
000018d2: SUB
000018d3: PUSH1 0x64
000018d5: ADD
000018d6: SWAP1
000018d7: REVERT
000018d8: JUMPDEST
000018d9: POP
000018da: SWAP1
000018db: SUB
000018dc: SWAP1
000018dd: JUMP
000018de: JUMPDEST
000018df: DUP2
000018e0: DUP2
000018e1: ADD
000018e2: DUP3
000018e3: DUP2
000018e4: LT
000018e5: ISZERO
000018e6: PUSH2 0x06b5
000018e9: JUMPI
000018ea: PUSH1 0x40
000018ec: DUP1
000018ed: MLOAD
000018ee: PUSH1 0xe5
000018f0: PUSH1 0x02
000018f2: EXP
000018f3: PUSH3 0x461bcd
000018f7: MUL
000018f8: DUP2
000018f9: MSTORE
000018fa: PUSH1 0x20
000018fc: PUSH1 0x04
000018fe: DUP3
000018ff: ADD
00001900: MSTORE
00001901: PUSH1 0x13
00001903: PUSH1 0x24
00001905: DUP3
00001906: ADD
00001907: MSTORE
00001908: PUSH32 0x536166654d61746820616464206661696c656400000000000000000000000000
00001929: PUSH1 0x44
0000192b: DUP3
0000192c: ADD
0000192d: MSTORE
0000192e: SWAP1
0000192f: MLOAD
00001930: SWAP1
00001931: DUP2
00001932: SWAP1
00001933: SUB
00001934: PUSH1 0x64
00001936: ADD
00001937: SWAP1
00001938: REVERT
00001939: JUMPDEST
0000193a: PUSH1 0x00
0000193c: DUP1
0000193d: DUP1
0000193e: DUP1
0000193f: DUP1
00001940: PUSH4 0xffffffff
00001945: DUP9
00001946: AND
00001947: DUP2
00001948: LT
00001949: PUSH2 0x1951
0000194c: JUMPI
0000194d: PUSH1 0x00
0000194f: DUP1
00001950: REVERT
00001951: JUMPDEST
00001952: PUSH4 0xffffffff
00001957: DUP1
00001958: DUP10
00001959: AND
0000195a: SWAP1
0000195b: DUP9
0000195c: AND
0000195d: LT
0000195e: ISZERO
0000195f: PUSH2 0x1967
00001962: JUMPI
00001963: PUSH1 0x00
00001965: DUP1
00001966: REVERT
00001967: JUMPDEST
00001968: DUP7
00001969: PUSH4 0xffffffff
0000196e: AND
0000196f: DUP9
00001970: PUSH4 0xffffffff
00001975: AND
00001976: EQ
00001977: ISZERO
00001978: PUSH2 0x1984
0000197b: JUMPI
0000197c: PUSH1 0x00
0000197e: SWAP5
0000197f: POP
00001980: PUSH2 0x1a23
00001983: JUMP
00001984: JUMPDEST
00001985: DUP6
00001986: ISZERO
00001987: ISZERO
00001988: PUSH2 0x1994
0000198b: JUMPI
0000198c: PUSH1 0x00
0000198e: SWAP5
0000198f: POP
00001990: PUSH2 0x1a23
00001993: JUMP
00001994: JUMPDEST
00001995: POP
00001996: PUSH1 0x00
00001998: SWAP3
00001999: POP
0000199a: DUP7
0000199b: JUMPDEST
0000199c: DUP7
0000199d: PUSH4 0xffffffff
000019a2: AND
000019a3: DUP2
000019a4: PUSH4 0xffffffff
000019a9: AND
000019aa: LT
000019ab: ISZERO
000019ac: PUSH2 0x1a1f
000019af: JUMPI
000019b0: PUSH4 0xffffffff
000019b5: DUP2
000019b6: AND
000019b7: PUSH1 0x00
000019b9: SWAP1
000019ba: DUP2
000019bb: MSTORE
000019bc: PUSH1 0x0d
000019be: PUSH1 0x20
000019c0: MSTORE
000019c1: PUSH1 0x40
000019c3: DUP2
000019c4: KECCAK256
000019c5: DUP1
000019c6: SLOAD
000019c7: PUSH1 0x01
000019c9: SWAP1
000019ca: SWAP2
000019cb: ADD
000019cc: SLOAD
000019cd: SWAP1
000019ce: SWAP5
000019cf: POP
000019d0: SWAP3
000019d1: POP
000019d2: DUP4
000019d3: GT
000019d4: DUP1
000019d5: ISZERO
000019d6: PUSH2 0x19df
000019d9: JUMPI
000019da: POP
000019db: PUSH1 0x00
000019dd: DUP3
000019de: GT
000019df: JUMPDEST
000019e0: ISZERO
000019e1: PUSH2 0x1a17
000019e4: JUMPI
000019e5: PUSH2 0x1a14
000019e8: PUSH2 0x1a07
000019eb: DUP4
000019ec: PUSH2 0x19fb
000019ef: DUP7
000019f0: DUP11
000019f1: PUSH4 0xffffffff
000019f6: PUSH2 0x1ba7
000019f9: AND
000019fa: JUMP
000019fb: JUMPDEST
000019fc: SWAP1
000019fd: PUSH4 0xffffffff
00001a02: PUSH2 0x1c1e
00001a05: AND
00001a06: JUMP
00001a07: JUMPDEST
00001a08: DUP6
00001a09: SWAP1
00001a0a: PUSH4 0xffffffff
00001a0f: PUSH2 0x18de
00001a12: AND
00001a13: JUMP
00001a14: JUMPDEST
00001a15: SWAP4
00001a16: POP
00001a17: JUMPDEST
00001a18: PUSH1 0x01
00001a1a: ADD
00001a1b: PUSH2 0x199b
00001a1e: JUMP
00001a1f: JUMPDEST
00001a20: DUP4
00001a21: SWAP5
00001a22: POP
00001a23: JUMPDEST
00001a24: POP
00001a25: POP
00001a26: POP
00001a27: POP
00001a28: SWAP4
00001a29: SWAP3
00001a2a: POP
00001a2b: POP
00001a2c: POP
00001a2d: JUMP
00001a2e: JUMPDEST
00001a2f: PUSH1 0x06
00001a31: SLOAD
00001a32: PUSH1 0x05
00001a34: SLOAD
00001a35: PUSH1 0x03
00001a37: SLOAD
00001a38: PUSH1 0x00
00001a3a: SWAP3
00001a3b: SWAP2
00001a3c: SWAP1
00001a3d: DUP4
00001a3e: SWAP1
00001a3f: PUSH2 0x1a4f
00001a42: SWAP1
00001a43: DUP5
00001a44: SWAP1
00001a45: PUSH4 0xffffffff
00001a4a: PUSH2 0x187e
00001a4d: AND
00001a4e: JUMP
00001a4f: JUMPDEST
00001a50: SWAP1
00001a51: POP
00001a52: JUMPDEST
00001a53: PUSH2 0x1a62
00001a56: DUP6
00001a57: DUP4
00001a58: PUSH4 0xffffffff
00001a5d: PUSH2 0x1ba7
00001a60: AND
00001a61: JUMP
00001a62: JUMPDEST
00001a63: DUP2
00001a64: GT
00001a65: PUSH2 0x1ae8
00001a68: JUMPI
00001a69: PUSH2 0x1a88
00001a6c: PUSH2 0x1a7b
00001a6f: DUP3
00001a70: DUP5
00001a71: PUSH4 0xffffffff
00001a76: PUSH2 0x1c1e
00001a79: AND
00001a7a: JUMP
00001a7b: JUMPDEST
00001a7c: DUP7
00001a7d: SWAP1
00001a7e: PUSH4 0xffffffff
00001a83: PUSH2 0x187e
00001a86: AND
00001a87: JUMP
00001a88: JUMPDEST
00001a89: SWAP5
00001a8a: POP
00001a8b: PUSH2 0x1a9a
00001a8e: DUP5
00001a8f: DUP3
00001a90: PUSH4 0xffffffff
00001a95: PUSH2 0x18de
00001a98: AND
00001a99: JUMP
00001a9a: JUMPDEST
00001a9b: PUSH1 0x04
00001a9d: SLOAD
00001a9e: SWAP1
00001a9f: SWAP5
00001aa0: POP
00001aa1: SWAP1
00001aa2: POP
00001aa3: PUSH2 0x1ab2
00001aa6: DUP4
00001aa7: DUP3
00001aa8: PUSH4 0xffffffff
00001aad: PUSH2 0x18de
00001ab0: AND
00001ab1: JUMP
00001ab2: JUMPDEST
00001ab3: SWAP3
00001ab4: POP
00001ab5: PUSH1 0x0a
00001ab7: DUP3
00001ab8: GT
00001ab9: ISZERO
00001aba: PUSH2 0x1ae3
00001abd: JUMPI
00001abe: PUSH2 0x1ad3
00001ac1: PUSH1 0x64
00001ac3: PUSH2 0x19fb
00001ac6: DUP5
00001ac7: PUSH1 0x5a
00001ac9: PUSH4 0xffffffff
00001ace: PUSH2 0x1ba7
00001ad1: AND
00001ad2: JUMP
00001ad3: JUMPDEST
00001ad4: SWAP2
00001ad5: POP
00001ad6: PUSH1 0x0a
00001ad8: DUP3
00001ad9: LT
00001ada: ISZERO
00001adb: PUSH2 0x1ae3
00001ade: JUMPI
00001adf: PUSH1 0x0a
00001ae1: SWAP2
00001ae2: POP
00001ae3: JUMPDEST
00001ae4: PUSH2 0x1a52
00001ae7: JUMP
00001ae8: JUMPDEST
00001ae9: PUSH2 0x1afb
00001aec: PUSH2 0x1a07
00001aef: DUP7
00001af0: DUP5
00001af1: PUSH4 0xffffffff
00001af6: PUSH2 0x1ba7
00001af9: AND
00001afa: JUMP
00001afb: JUMPDEST
00001afc: SWAP4
00001afd: POP
00001afe: POP
00001aff: SWAP2
00001b00: SWAP4
00001b01: SWAP1
00001b02: SWAP3
00001b03: POP
00001b04: JUMP
00001b05: JUMPDEST
00001b06: PUSH1 0x00
00001b08: DUP1
00001b09: DUP1
00001b0a: DUP1
00001b0b: DUP1
00001b0c: DUP1
00001b0d: DUP1
00001b0e: DUP1
00001b0f: PUSH2 0x1b17
00001b12: DUP10
00001b13: PUSH2 0x1c3e
00001b16: JUMP
00001b17: JUMPDEST
00001b18: SWAP3
00001b19: POP
00001b1a: PUSH2 0x1b24
00001b1d: PUSH2 0x07b2
00001b20: PUSH2 0x1cce
00001b23: JUMP
00001b24: JUMPDEST
00001b25: PUSH2 0x1b31
00001b28: DUP5
00001b29: PUSH2 0xffff
00001b2c: AND
00001b2d: PUSH2 0x1cce
00001b30: JUMP
00001b31: JUMPDEST
00001b32: SUB
00001b33: SWAP5
00001b34: POP
00001b35: DUP5
00001b36: PUSH4 0x01e28500
00001b3b: MUL
00001b3c: DUP7
00001b3d: ADD
00001b3e: SWAP6
00001b3f: POP
00001b40: DUP5
00001b41: PUSH2 0x07b2
00001b44: DUP5
00001b45: SUB
00001b46: PUSH2 0xffff
00001b49: AND
00001b4a: SUB
00001b4b: PUSH4 0x01e13380
00001b50: MUL
00001b51: DUP7
00001b52: ADD
00001b53: SWAP6
00001b54: POP
00001b55: PUSH1 0x01
00001b57: SWAP4
00001b58: POP
00001b59: JUMPDEST
00001b5a: PUSH1 0x0c
00001b5c: PUSH1 0xff
00001b5e: DUP6
00001b5f: AND
00001b60: GT
00001b61: PUSH2 0x1b99
00001b64: JUMPI
00001b65: PUSH2 0x1b6e
00001b68: DUP5
00001b69: DUP5
00001b6a: PUSH2 0x1ce9
00001b6d: JUMP
00001b6e: JUMPDEST
00001b6f: PUSH1 0xff
00001b71: AND
00001b72: PUSH3 0x015180
00001b76: MUL
00001b77: SWAP1
00001b78: POP
00001b79: DUP9
00001b7a: DUP7
00001b7b: DUP3
00001b7c: ADD
00001b7d: GT
00001b7e: ISZERO
00001b7f: PUSH2 0x1b8a
00001b82: JUMPI
00001b83: DUP4
00001b84: SWAP2
00001b85: POP
00001b86: PUSH2 0x1b99
00001b89: JUMP
00001b8a: JUMPDEST
00001b8b: SWAP5
00001b8c: DUP6
00001b8d: ADD
00001b8e: SWAP5
00001b8f: PUSH1 0x01
00001b91: SWAP1
00001b92: SWAP4
00001b93: ADD
00001b94: SWAP3
00001b95: PUSH2 0x1b59
00001b98: JUMP
00001b99: JUMPDEST
00001b9a: POP
00001b9b: SWAP1
00001b9c: SWAP8
00001b9d: SWAP1
00001b9e: SWAP7
00001b9f: POP
00001ba0: SWAP5
00001ba1: POP
00001ba2: POP
00001ba3: POP
00001ba4: POP
00001ba5: POP
00001ba6: JUMP
00001ba7: JUMPDEST
00001ba8: PUSH1 0x00
00001baa: DUP3
00001bab: ISZERO
00001bac: ISZERO
00001bad: PUSH2 0x1bb8
00001bb0: JUMPI
00001bb1: POP
00001bb2: PUSH1 0x00
00001bb4: PUSH2 0x06b5
00001bb7: JUMP
00001bb8: JUMPDEST
00001bb9: POP
00001bba: DUP2
00001bbb: DUP2
00001bbc: MUL
00001bbd: DUP2
00001bbe: DUP4
00001bbf: DUP3
00001bc0: DUP2
00001bc1: ISZERO
00001bc2: ISZERO
00001bc3: PUSH2 0x1bc8
00001bc6: JUMPI
00001bc7: INVALID
00001bc8: JUMPDEST
00001bc9: DIV
00001bca: EQ
00001bcb: PUSH2 0x06b5
00001bce: JUMPI
00001bcf: PUSH1 0x40
00001bd1: DUP1
00001bd2: MLOAD
00001bd3: PUSH1 0xe5
00001bd5: PUSH1 0x02
00001bd7: EXP
00001bd8: PUSH3 0x461bcd
00001bdc: MUL
00001bdd: DUP2
00001bde: MSTORE
00001bdf: PUSH1 0x20
00001be1: PUSH1 0x04
00001be3: DUP3
00001be4: ADD
00001be5: MSTORE
00001be6: PUSH1 0x13
00001be8: PUSH1 0x24
00001bea: DUP3
00001beb: ADD
00001bec: MSTORE
00001bed: PUSH32 0x536166654d617468206d756c206661696c656400000000000000000000000000
00001c0e: PUSH1 0x44
00001c10: DUP3
00001c11: ADD
00001c12: MSTORE
00001c13: SWAP1
00001c14: MLOAD
00001c15: SWAP1
00001c16: DUP2
00001c17: SWAP1
00001c18: SUB
00001c19: PUSH1 0x64
00001c1b: ADD
00001c1c: SWAP1
00001c1d: REVERT
00001c1e: JUMPDEST
00001c1f: PUSH1 0x00
00001c21: DUP1
00001c22: DUP1
00001c23: DUP4
00001c24: GT
00001c25: PUSH2 0x1c2a
00001c28: JUMPI
00001c29: INVALID
00001c2a: JUMPDEST
00001c2b: DUP3
00001c2c: DUP5
00001c2d: DUP2
00001c2e: ISZERO
00001c2f: ISZERO
00001c30: PUSH2 0x1c35
00001c33: JUMPI
00001c34: INVALID
00001c35: JUMPDEST
00001c36: DIV
00001c37: SWAP5
00001c38: SWAP4
00001c39: POP
00001c3a: POP
00001c3b: POP
00001c3c: POP
00001c3d: JUMP
00001c3e: JUMPDEST
00001c3f: PUSH1 0x00
00001c41: DUP1
00001c42: PUSH2 0x07b2
00001c45: PUSH4 0x01e13380
00001c4a: DUP5
00001c4b: DIV
00001c4c: DUP2
00001c4d: ADD
00001c4e: SWAP1
00001c4f: DUP3
00001c50: SWAP1
00001c51: PUSH2 0x1c59
00001c54: SWAP1
00001c55: PUSH2 0x1cce
00001c58: JUMP
00001c59: JUMPDEST
00001c5a: PUSH2 0x1c66
00001c5d: DUP4
00001c5e: PUSH2 0xffff
00001c61: AND
00001c62: PUSH2 0x1cce
00001c65: JUMP
00001c66: JUMPDEST
00001c67: SUB
00001c68: SWAP1
00001c69: POP
00001c6a: DUP1
00001c6b: PUSH4 0x01e28500
00001c70: MUL
00001c71: DUP4
00001c72: ADD
00001c73: SWAP3
00001c74: POP
00001c75: DUP1
00001c76: PUSH2 0x07b2
00001c79: DUP4
00001c7a: SUB
00001c7b: PUSH2 0xffff
00001c7e: AND
00001c7f: SUB
00001c80: PUSH4 0x01e13380
00001c85: MUL
00001c86: DUP4
00001c87: ADD
00001c88: SWAP3
00001c89: POP
00001c8a: JUMPDEST
00001c8b: DUP5
00001c8c: DUP4
00001c8d: GT
00001c8e: ISZERO
00001c8f: PUSH2 0x1cc6
00001c92: JUMPI
00001c93: PUSH2 0x1c9e
00001c96: PUSH1 0x01
00001c98: DUP4
00001c99: SUB
00001c9a: PUSH2 0x1daf
00001c9d: JUMP
00001c9e: JUMPDEST
00001c9f: ISZERO
00001ca0: PUSH2 0x1cb1
00001ca3: JUMPI
00001ca4: PUSH4 0x01e28500
00001ca9: DUP4
00001caa: SUB
00001cab: SWAP3
00001cac: POP
00001cad: PUSH2 0x1cbb
00001cb0: JUMP
00001cb1: JUMPDEST
00001cb2: PUSH4 0x01e13380
00001cb7: DUP4
00001cb8: SUB
00001cb9: SWAP3
00001cba: POP
00001cbb: JUMPDEST
00001cbc: PUSH1 0x01
00001cbe: DUP3
00001cbf: SUB
00001cc0: SWAP2
00001cc1: POP
00001cc2: PUSH2 0x1c8a
00001cc5: JUMP
00001cc6: JUMPDEST
00001cc7: POP
00001cc8: SWAP4
00001cc9: SWAP3
00001cca: POP
00001ccb: POP
00001ccc: POP
00001ccd: JUMP
00001cce: JUMPDEST
00001ccf: PUSH1 0x00
00001cd1: NOT
00001cd2: ADD
00001cd3: PUSH1 0x00
00001cd5: PUSH2 0x0190
00001cd8: DUP3
00001cd9: DIV
00001cda: PUSH1 0x64
00001cdc: DUP4
00001cdd: DIV
00001cde: PUSH1 0x04
00001ce0: DUP5
00001ce1: DIV
00001ce2: SUB
00001ce3: ADD
00001ce4: SWAP3
00001ce5: SWAP2
00001ce6: POP
00001ce7: POP
00001ce8: JUMP
00001ce9: JUMPDEST
00001cea: PUSH1 0x00
00001cec: DUP3
00001ced: PUSH1 0xff
00001cef: AND
00001cf0: PUSH1 0x01
00001cf2: EQ
00001cf3: DUP1
00001cf4: PUSH2 0x1d00
00001cf7: JUMPI
00001cf8: POP
00001cf9: DUP3
00001cfa: PUSH1 0xff
00001cfc: AND
00001cfd: PUSH1 0x03
00001cff: EQ
00001d00: JUMPDEST
00001d01: DUP1
00001d02: PUSH2 0x1d0e
00001d05: JUMPI
00001d06: POP
00001d07: DUP3
00001d08: PUSH1 0xff
00001d0a: AND
00001d0b: PUSH1 0x05
00001d0d: EQ
00001d0e: JUMPDEST
00001d0f: DUP1
00001d10: PUSH2 0x1d1c
00001d13: JUMPI
00001d14: POP
00001d15: DUP3
00001d16: PUSH1 0xff
00001d18: AND
00001d19: PUSH1 0x07
00001d1b: EQ
00001d1c: JUMPDEST
00001d1d: DUP1
00001d1e: PUSH2 0x1d2a
00001d21: JUMPI
00001d22: POP
00001d23: DUP3
00001d24: PUSH1 0xff
00001d26: AND
00001d27: PUSH1 0x08
00001d29: EQ
00001d2a: JUMPDEST
00001d2b: DUP1
00001d2c: PUSH2 0x1d38
00001d2f: JUMPI
00001d30: POP
00001d31: DUP3
00001d32: PUSH1 0xff
00001d34: AND
00001d35: PUSH1 0x0a
00001d37: EQ
00001d38: JUMPDEST
00001d39: DUP1
00001d3a: PUSH2 0x1d46
00001d3d: JUMPI
00001d3e: POP
00001d3f: DUP3
00001d40: PUSH1 0xff
00001d42: AND
00001d43: PUSH1 0x0c
00001d45: EQ
00001d46: JUMPDEST
00001d47: ISZERO
00001d48: PUSH2 0x1d53
00001d4b: JUMPI
00001d4c: POP
00001d4d: PUSH1 0x1f
00001d4f: PUSH2 0x06b5
00001d52: JUMP
00001d53: JUMPDEST
00001d54: DUP3
00001d55: PUSH1 0xff
00001d57: AND
00001d58: PUSH1 0x04
00001d5a: EQ
00001d5b: DUP1
00001d5c: PUSH2 0x1d68
00001d5f: JUMPI
00001d60: POP
00001d61: DUP3
00001d62: PUSH1 0xff
00001d64: AND
00001d65: PUSH1 0x06
00001d67: EQ
00001d68: JUMPDEST
00001d69: DUP1
00001d6a: PUSH2 0x1d76
00001d6d: JUMPI
00001d6e: POP
00001d6f: DUP3
00001d70: PUSH1 0xff
00001d72: AND
00001d73: PUSH1 0x09
00001d75: EQ
00001d76: JUMPDEST
00001d77: DUP1
00001d78: PUSH2 0x1d84
00001d7b: JUMPI
00001d7c: POP
00001d7d: DUP3
00001d7e: PUSH1 0xff
00001d80: AND
00001d81: PUSH1 0x0b
00001d83: EQ
00001d84: JUMPDEST
00001d85: ISZERO
00001d86: PUSH2 0x1d91
00001d89: JUMPI
00001d8a: POP
00001d8b: PUSH1 0x1e
00001d8d: PUSH2 0x06b5
00001d90: JUMP
00001d91: JUMPDEST
00001d92: PUSH2 0x1d9a
00001d95: DUP3
00001d96: PUSH2 0x1daf
00001d99: JUMP
00001d9a: JUMPDEST
00001d9b: ISZERO
00001d9c: PUSH2 0x1da7
00001d9f: JUMPI
00001da0: POP
00001da1: PUSH1 0x1d
00001da3: PUSH2 0x06b5
00001da6: JUMP
00001da7: JUMPDEST
00001da8: POP
00001da9: PUSH1 0x1c
00001dab: PUSH2 0x06b5
00001dae: JUMP
00001daf: JUMPDEST
00001db0: PUSH1 0x00
00001db2: PUSH1 0x03
00001db4: DUP3
00001db5: AND
00001db6: ISZERO
00001db7: PUSH2 0x1dc2
00001dba: JUMPI
00001dbb: POP
00001dbc: PUSH1 0x00
00001dbe: PUSH2 0x05c1
00001dc1: JUMP
00001dc2: JUMPDEST
00001dc3: PUSH1 0x64
00001dc5: PUSH2 0xffff
00001dc8: DUP4
00001dc9: AND
00001dca: MOD
00001dcb: PUSH2 0xffff
00001dce: AND
00001dcf: ISZERO
00001dd0: PUSH2 0x1ddb
00001dd3: JUMPI
00001dd4: POP
00001dd5: PUSH1 0x01
00001dd7: PUSH2 0x05c1
00001dda: JUMP
00001ddb: JUMPDEST
00001ddc: PUSH2 0x0190
00001ddf: PUSH2 0xffff
00001de2: DUP4
00001de3: AND
00001de4: MOD
00001de5: PUSH2 0xffff
00001de8: AND
00001de9: ISZERO
00001dea: PUSH2 0x1df5
00001ded: JUMPI
00001dee: POP
00001def: PUSH1 0x00
00001df1: PUSH2 0x05c1
00001df4: JUMP
00001df5: JUMPDEST
00001df6: POP
00001df7: PUSH1 0x01
00001df9: SWAP2
00001dfa: SWAP1
00001dfb: POP
00001dfc: JUMP
00001dfd: STOP
00001dfe: LOG1
00001dff: PUSH6 0x627a7a723058
00001e06: KECCAK256
00001e07: SWAP2
00001e08: SIGNEXTEND
00001e09: POP
00001e0a: UNKNOWN(0xD5)
00001e0b: UNKNOWN(0xC2)
00001e0c: EXP
00001e0d: UNKNOWN(0xE3)
00001e0e: REVERT
00001e0f: SLOAD
00001e10: UNKNOWN(0xF7)
00001e11: PUSH32

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8
call_targets: 0x6b249a94182219cb1af58a197573dccd9ab94144
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x6b249a94182219cb1af58a197573dccd9ab94144"
    ],
    "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": "0x03c175ff",
            "selector": "0x03c175ff",
            "calldata_variants": [
                "0x03c175ff",
                "0x03c175ff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2bf4760b",
            "selector": "0x2bf4760b",
            "calldata_variants": [
                "0x2bf4760b",
                "0x2bf4760b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2680,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8
call_targets: 0x6b249a94182219cb1af58a197573dccd9ab94144
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x6b249a94182219cb1af58a197573dccd9ab94144"
    ],
    "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": "0x03c175ff",
            "selector": "0x03c175ff",
            "calldata_variants": [
                "0x03c175ff",
                "0x03c175ff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2bf4760b",
            "selector": "0x2bf4760b",
            "calldata_variants": [
                "0x2bf4760b",
                "0x2bf4760b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2680,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}
medium math codex Mid‑month mint/burn retroactively changes the profit denominator for the entire month 75 no
view
evidence_json
{
    "evidence": "`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month\u2019s `ethIncome` by this single value.",
    "locations": [
        "contracts/Contract.sol:553",
        "contracts/Contract.sol:657",
        "contracts/Contract.sol:684",
        "contracts/Contract.sol:732"
    ],
    "recommendation": "Snapshot supply at the time each profit deposit is recorded (e.g., store a per\u2011deposit `totalSupply` or use an accumulated \u201cprofit per token\u201d index). Avoid overwriting a single month-wide supply after income has already been recorded.",
    "exploit_scenario": "A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month\u2019s `totalTokenSupply` to the new supply, so the entire month\u2019s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder\u2019s share."
}
medium other codex Unbounded month iteration can make transfers/withdrawals run out of gas 75 no
view
evidence_json
{
    "evidence": "`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.",
    "locations": [
        "contracts/Contract.sol:469",
        "contracts/Contract.sol:553"
    ],
    "recommendation": "Replace the per\u2011month loop with an accumulated per\u2011token profit index, or allow claims in bounded batches (e.g., user\u2011supplied ranges with stateful checkpoints) to keep gas usage predictable.",
    "exploit_scenario": "`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long\u2011term holders may become unable to move tokens or withdraw profits, effectively locking funds."
}
low oracle codex Month boundaries rely on `now`, allowing miner influence around cutoff times 65 no
view
evidence_json
{
    "evidence": "Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.",
    "locations": [
        "contracts/Contract.sol:496",
        "contracts/Contract.sol:732"
    ],
    "recommendation": "If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.",
    "exploit_scenario": "A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions."
}