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

Analysis Run

bb9485bb-c626-4e0d-948e-2eb1a347a1d3

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 7:35 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
30465 report.consolidate complete 1 / 1 3 months ago
103649 artifact.fetch complete 1 / 3 1 week ago
103650 tool.cast_disasm complete 1 / 3 1 week ago
103651 analysis.bundle complete 1 / 3 1 week ago
103652 capability.graph complete 1 / 3 1 week ago
103653 detector.run complete 1 / 3 1 week ago
103654 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
3
No findings?
no
Summary
Found 3 issues: share issuance can be mispriced when the pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow totals.
View stderr
[codex:400312] OpenAI Codex v0.77.0 (research preview)
[codex:400312] --------
[codex:400312] workdir: /tmp/codex-multi-hsupjl69
[codex:400312] model: gpt-5.2-codex
[codex:400312] provider: openai
[codex:400312] approval: never
[codex:400312] sandbox: read-only
[codex:400312] reasoning effort: xhigh
[codex:400312] reasoning summaries: auto
[codex:400312] session id: 019b68ff-cd46-7aa1-b4b1-098455f8493d
[codex:400312] --------
[codex:400312] user
[codex:400312] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:400312] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:400312] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:400312] 
[codex:400312] Scope rules:
[codex:400312] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:400312] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:400312] 
[codex:400312] Output MUST be valid JSON matching the provided schema.
[codex:400312] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:400312] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:400312] 
[codex:400312] Output constraints (IMPORTANT):
[codex:400312] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:400312] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:400312] mcp startup: no servers
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Reviewing AGENTS and audit instructions**
[codex:400312] exec
[codex:400312] /bin/bash -lc ls in /tmp/codex-multi-hsupjl69 succeeded in 5ms:
[codex:400312] AUDIT_BUNDLE.txt
[codex:400312] codex-output-schema.json
[codex:400312] contracts
[codex:400312] exec
[codex:400312] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsupjl69 succeeded in 5ms:
[codex:400312] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:400312] 
[codex:400312] ================================================================================
[codex:400312] FILE: contracts/Contract.sol
[codex:400312] ================================================================================
[codex:400312] // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol
[codex:400312] 
[codex:400312] pragma solidity ^0.5.2;
[codex:400312] 
[codex:400312] /**
[codex:400312]  * @title ERC20 interface
[codex:400312]  * @dev see https://eips.ethereum.org/EIPS/eip-20
[codex:400312]  */
[codex:400312] interface IERC20 {
[codex:400312]     function transfer(address to, uint256 value) external returns (bool);
[codex:400312] 
[codex:400312]     function approve(address spender, uint256 value) external returns (bool);
[codex:400312] 
[codex:400312]     function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:400312] 
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Ensuring full AUDIT_BUNDLE read**
[codex:400312] exec
[codex:400312] /bin/bash -lc 'rg --files contracts' in /tmp/codex-multi-hsupjl69 succeeded in 9ms:
[codex:400312] contracts/Contract.sol
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Analyzing contract files in audit bundle**
[codex:400312] exec
[codex:400312] /bin/bash -lc 'rg -n "FILE: contracts" AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312] 4:FILE: contracts/Contract.sol
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Analyzing flattened contract file structure**
[codex:400312] exec
[codex:400312] /bin/bash -lc 'rg -n "contract DxMgnPool" AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312] 1552:contract DxMgnPool is Ownable {
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Reviewing DxMgnPool and dependencies**
[codex:400312] exec
[codex:400312] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1200,1700p'" in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312]   1200	    /// @return Product
[codex:400312]   1201	    function mul(int a, int b) internal pure returns (int) {
[codex:400312]   1202	        require(safeToMul(a, b));
[codex:400312]   1203	        return a * b;
[codex:400312]   1204	    }
[codex:400312]   1205	}
[codex:400312]   1206	
[codex:400312]   1207	// File: @gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol
[codex:400312]   1208	
[codex:400312]   1209	pragma solidity ^0.5.2;
[codex:400312]   1210	
[codex:400312]   1211	
[codex:400312]   1212	
[codex:400312]   1213	
[codex:400312]   1214	/**
[codex:400312]   1215	 * Deprecated: Use Open Zeppeling one instead
[codex:400312]   1216	 */
[codex:400312]   1217	contract StandardTokenData {
[codex:400312]   1218	    /*
[codex:400312]   1219	     *  Storage
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Scrolling through file**
[codex:400312] exec
[codex:400312] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1700,1820p'" in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312]   1700	
[codex:400312]   1701	    function withdrawUnlockedMagnoliaFromDx() public {
[codex:400312]   1702	        require(currentState == State.DepositWithdrawnFromDx, "Unlocking not yet triggered");
[codex:400312]   1703	
[codex:400312]   1704	        // Implicitly we also have:
[codex:400312]   1705	        // require(unlockedTokens[msg.sender].withdrawalTime < now, "The tokens cannot be withdrawn yet");
[codex:400312]   1706	
[codex:400312]   1707	        mgnToken.withdrawUnlockedTokens();
[codex:400312]   1708	        totalMgn = mgnToken.balanceOf(address(this));
[codex:400312]   1709	
[codex:400312]   1710	        currentState = State.MgnUnlocked;
[codex:400312]   1711	    }
[codex:400312]   1712	
[codex:400312]   1713	    function checkForStateUpdate() public {
[codex:400312]   1714	        if (now >= poolingPeriodEndTime && isDepositTokenTurn() && currentState == State.Pooling) {
[codex:400312]   1715	            currentState = State.PoolingEnded;
[codex:400312]   1716	        }
[codex:400312]   1717	    }
[codex:400312]   1718	
[codex:400312]   1719	    /// @dev updates state and returns val
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Scanning early file sections for definitions**
[codex:400312] exec
[codex:400312] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1,400p'" in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312]      1	This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:400312]      2	
[codex:400312]      3	================================================================================
[codex:400312]      4	FILE: contracts/Contract.sol
[codex:400312]      5	================================================================================
[codex:400312]      6	// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol
[codex:400312]      7	
[codex:400312]      8	pragma solidity ^0.5.2;
[codex:400312]      9	
[codex:400312]     10	/**
[codex:400312]     11	 * @title ERC20 interface
[codex:400312]     12	 * @dev see https://eips.ethereum.org/EIPS/eip-20
[codex:400312]     13	 */
[codex:400312]     14	interface IERC20 {
[codex:400312]     15	    function transfer(address to, uint256 value) external returns (bool);
[codex:400312]     16	
[codex:400312]     17	    function approve(address spender, uint256 value) external returns (bool);
[codex:400312]     18	
[codex:400312]     19	    function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:400312]     20	
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Continuing through sections**
[codex:400312] exec
[codex:400312] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '400,800p'" in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312]    400	
[codex:400312]    401		function givenMethodRevert(bytes calldata method) external;
[codex:400312]    402		function givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;
[codex:400312]    403		function givenMethodRunOutOfGas(bytes calldata method) external;
[codex:400312]    404	
[codex:400312]    405		/**
[codex:400312]    406		 * @dev After calling this method, the mock will return `response` when the given
[codex:400312]    407		 * methodId is called with matching arguments. These exact calldataMocks will take
[codex:400312]    408		 * precedence over all other calldataMocks.
[codex:400312]    409		 * @param call ABI encoded calldata (methodId and arguments)
[codex:400312]    410		 * @param response ABI encoded response that will be returned if contract is invoked with calldata
[codex:400312]    411		 */
[codex:400312]    412		function givenCalldataReturn(bytes calldata call, bytes calldata response) external;
[codex:400312]    413		function givenCalldataReturnBool(bytes calldata call, bool response) external;
[codex:400312]    414		function givenCalldataReturnUint(bytes calldata call, uint response) external;
[codex:400312]    415		function givenCalldataReturnAddress(bytes calldata call, address response) external;
[codex:400312]    416	
[codex:400312]    417		function givenCalldataRevert(bytes calldata call) external;
[codex:400312]    418		function givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;
[codex:400312]    419		function givenCalldataRunOutOfGas(bytes calldata call) external;
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Continuing with other contracts**
[codex:400312] exec
[codex:400312] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '800,1200p'" in /tmp/codex-multi-hsupjl69 succeeded in 6ms:
[codex:400312]    800	        _addMinter(msg.sender);
[codex:400312]    801	    }
[codex:400312]    802	
[codex:400312]    803	    modifier onlyMinter() {
[codex:400312]    804	        require(isMinter(msg.sender));
[codex:400312]    805	        _;
[codex:400312]    806	    }
[codex:400312]    807	
[codex:400312]    808	    function isMinter(address account) public view returns (bool) {
[codex:400312]    809	        return _minters.has(account);
[codex:400312]    810	    }
[codex:400312]    811	
[codex:400312]    812	    function addMinter(address account) public onlyMinter {
[codex:400312]    813	        _addMinter(account);
[codex:400312]    814	    }
[codex:400312]    815	
[codex:400312]    816	    function renounceMinter() public {
[codex:400312]    817	        _removeMinter(msg.sender);
[codex:400312]    818	    }
[codex:400312]    819	
[codex:400312] 
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Analyzing DxMgnPool vulnerabilities**
[codex:400312] thinking
[codex:400312] **Evaluating reentrancy and access control risks**
[codex:400312] 
[codex:400312] I'm weighing the reentrancy order in deposit and withdraw functions, focusing on whether state updates happen before or after external token calls, and considering if the token’s hooks or calls could misuse that. Also checking which functions lack access control but may not be harmful, like public methods that anyone can invoke without risk. The mention of Proxy usage in the repo suggests I should look further into how Proxy factors into this system.
[codex:400312] exec
[codex:400312] /bin/bash -lc 'rg -n "Proxy" AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsupjl69 succeeded in 7ms:
[codex:400312] 879:// File: @gnosis.pm/util-contracts/contracts/Proxy.sol
[codex:400312] 883:/// @title Proxied - indicates that a contract will be proxied. Also defines storage requirements for Proxy.
[codex:400312] 889:/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
[codex:400312] 891:contract Proxy is Proxied {
[codex:400312] 
[codex:400312] 
[codex:400312] 
[codex:400312] 
[codex:400312] 
[codex:400312] 
[codex:400312] thinking
[codex:400312] **Analyzing token and pool logic vulnerabilities**
[codex:400312] 
[codex:400312] I'm reviewing the TokenFRT owner initialization quirks, potential griefing via repeated unlock calls, and subtleties in pool share calculations—especially how zero totalDeposit and asynchronous auction cycles might cause accounting inconsistencies or unfair share distributions. There are also considerations about reentrancy risks and how deposit timing could be exploited due to how totalDeposit tracks only deposit tokens, possibly ignoring secondary tokens in the pool. I’m piecing together how the system’s state updates and share calculations interact across deposits, auctions, and withdrawals to spot any vulnerabilities or design flaws.
[codex:400312] thinking
[codex:400312] **Examining auction finalization and fund claim logic**
[codex:400312] 
[codex:400312] I'm tracing how pooling ends precisely at deposit token turns, ensuring the claimSellerFunds calls correctly reference prior auctions by reversing token order. I’m also spotting math risks like unchecked additions potentially causing overflows, plus how auction counts and participation timing interplay to avoid underflows in rewards calculation. There are nuances with deposits during odd auctions and implications on pooling end timing, along with concerns about ignoring return values from external calls possibly masking failures in fund claims.
[codex:400312] thinking
[codex:400312] **Analyzing access controls and proxy design considerations**
[codex:400312] 
[codex:400312] I'm reviewing whether external callers can prematurely end auctions or update critical roles, confirming the Proxy’s immutable masterCopy setup and understanding the potential risks of low-level calls in fund claiming. I’m also reflecting on how included mock contracts could pose risks if deployed, and highlighting how share calculations might misprice contributions by ignoring secondary token holdings during pooling cycles.
[codex:400312] thinking
[codex:400312] **Evaluating arithmetic and state update edge cases**
[codex:400312] 
[codex:400312] I'm examining potential integer overflow risks in timing and share calculations, subtle reentrancy paths via token callbacks during withdrawals, unchecked return values on token approvals, and especially a critical accounting bug where new deposits during secondary token holdings get mispriced shares due to totalDeposit being zero, allowing late depositors to acquire shares at unfair rates and dilute earlier participants.
[codex:400312] thinking
[codex:400312] **Summarizing vulnerability and audit findings**
[codex:400312] 
[codex:400312] I'm organizing a detailed assessment highlighting the major vulnerabilities: a critical share mispricing bug enabling dilution when the pool holds only secondary tokens, unchecked low-level calls that may silently fail leaving funds locked, unchecked arithmetic that could overflow, and evaluating the interaction of external calls with state updates to confirm reentrancy safety, wrapping all into structured findings with severity, explanations, and evidence lines.
[codex:400312] thinking
[codex:400312] ```json
[codex:400312] {
[codex:400312]   "no_findings": false,
[codex:400312]   "summary": "Found 3 issues: share issuance can be mispriced when pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow.",
[codex:400312]   "findings": [
[codex:400312]     {
[codex:400312]       "severity": "medium",
[codex:400312]       "category": "other",
[codex:400312]       "title": "Share issuance ignores secondary-token holdings when totalDeposit is zero",
[codex:400312]       "exploit_scenario": "Attacker waits until pool has sold deposit tokens and totalDeposit becomes zero (pool value held in secondary tokens). They deposit a small amount, receiving shares at a 1:1 price. When the pool later converts secondary tokens back to deposit tokens, attacker withdraws a disproportionately large share of deposit tokens and MGN, diluting earlier participants.",
[codex:400312]       "recommendation": "Include secondary token and DX balances in pool valuation for share pricing, or disallow deposits when the pool is not fully in deposit tokens, or compute share price based on total pool value.",
[codex:400312]       "evidence": "deposit() calls calculatePoolShares(amount) (contracts/DxMgnPool.sol:1606), which returns amount when totalDeposit == 0 (contracts/DxMgnPool.sol:1775-1779). totalDeposit is updated only from deposit token balances (contracts/DxMgnPool.sol:1672-1675, 1693-1695), allowing totalDeposit to be zero while pool holds value in secondary tokens or DX auctions.",
[codex:400312]       "locations": [
[codex:400312]         "contracts/DxMgnPool.sol:1606",
[codex:400312]         "contracts/DxMgnPool.sol:1674",
[codex:400312]         "contracts/DxMgnPool.sol:1694",
[codex:400312]         "contracts/DxMgnPool.sol:1775"
[codex:400312]       ]
[codex:400312]     },
[codex:400312]     {
[codex:400312]       "severity": "low",
[codex:400312]       "category": "other",
[codex:400312]       "title": "Unchecked low-level call to claimSellerFunds can silently fail and lock funds",
[codex:400312]       "exploit_scenario": "If DX is upgraded or malfunctions and claimSellerFunds call reverts or fails, the low-level call returns false but the pool continues execution, updating totalDeposit and totalMgn as if funds were claimed. This can cause funds to remain locked in DX, underpaying participants and preventing recovery.",
[codex:400312]       "recommendation": "Use the DX interface to call claimSellerFunds and require success, or check the low-level call result and revert or record failure for retry instead of ignoring it.",
[codex:400312]       "evidence": "Low-level calls to address(dx).call for claimSellerFunds are executed without checking success in participateInAuction and triggerMGNunlockAndClaimTokens (contracts/DxMgnPool.sol:1669-1670, 1689-1690).",
[codex:400312]       "locations": [
[codex:400312]         "contracts/DxMgnPool.sol:1669",
[codex:400312]         "contracts/DxMgnPool.sol:1689"
[codex:400312]       ]
[codex:400312]     },
[codex:400312]     {
[codex:400312]       "severity": "low",
[codex:400312]       "category": "math",
[codex:400312]       "title": "Unchecked arithmetic on pool totals can overflow and corrupt accounting",
[codex:400312]       "exploit_scenario": "A user deposits extremely large amounts causing totalPoolShares, totalDeposit, or totalPoolSharesCummulative to overflow (due to no SafeMath), which corrupts share calculations and can enable incorrect withdrawals or denial of funds.",
[codex:400312]       "recommendation": "Use SafeMath library for all arithmetic operations on totals to prevent overflows.",
[codex:400312]       "evidence": "Unchecked increments at totalPoolShares += poolShares and totalDeposit += amount (contracts/DxMgnPool.sol:1612-1613) and totalPoolSharesCummulative += 2 * totalPoolShares (contracts/DxMgnPool.sol:1662) use Solidity 0.5 arithmetic without overflow checks.",
[codex:400312]       "locations": [
[codex:400312]         "contracts/DxMgnPool.sol:1612",
[codex:400312]         "contracts/DxMgnPool.sol:1613",
[codex:400312]         "contracts/DxMgnPool.sol:1662"
[codex:400312]       ]
[codex:400312]     }
[codex:400312]   ]
[codex:400312] }
[codex:400312] ```
[codex:400312] codex
[codex:400312] {"no_findings":false,"summary":"Found 3 issues: share issuance can be mispriced when the pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow totals.","findings":[{"severity":"medium","category":"other","title":"Share issuance ignores secondary-token holdings when totalDeposit is zero","exploit_scenario":"An attacker waits until the pool has sold deposit tokens and `totalDeposit` is zero while value sits in secondary tokens. They deposit a small amount and receive shares at a 1:1 price. When the pool later converts secondary tokens back to deposit tokens, the attacker withdraws a disproportionately large share of the final deposit and MGN, diluting earlier participants.","recommendation":"Price new shares against full pool NAV (deposit + secondary + DX balances), or disallow deposits while the pool is not fully in the deposit token, or snapshot pool value from DX before minting shares.","evidence":"`deposit()` mints shares via `calculatePoolShares(amount)`, which returns `amount` when `totalDeposit == 0`. `totalDeposit` is only updated from deposit-token balances, so it can be zero while value sits in secondary tokens or DX auctions.","locations":["contracts/DxMgnPool.sol:1602","contracts/DxMgnPool.sol:1672","contracts/DxMgnPool.sol:1693","contracts/DxMgnPool.sol:1775"]},{"severity":"low","category":"other","title":"Unchecked low-level DX claim can silently fail and strand funds","exploit_scenario":"If the DX contract reverts or changes behavior (e.g., proxy upgrade), the low-level `call` to `claimSellerFunds` can fail silently. The pool continues, updates state, and allows withdrawals based on incomplete balances, leaving unclaimed funds locked in DX and underpaying participants.","recommendation":"Use the typed interface and `require` success/return values, or record failures and block state transitions until claims succeed.","evidence":"`address(dx).call(...)` is used to invoke `claimSellerFunds` without checking the returned success flag.","locations":["contracts/DxMgnPool.sol:1669","contracts/DxMgnPool.sol:1689"]},{"severity":"low","category":"math","title":"Unchecked arithmetic on pool totals can overflow and corrupt accounting","exploit_scenario":"A user deposits an extremely large amount (or a token with a huge supply), causing `totalPoolShares`, `totalDeposit`, or `totalPoolSharesCummulative` to wrap in Solidity 0.5. This corrupts share math and can lead to incorrect payouts or stuck withdrawals.","recommendation":"Use SafeMath for all arithmetic on totals (replace `+=` and `2 * totalPoolShares` with SafeMath operations).","evidence":"Pool totals are updated with unchecked `+=` and multiplication in Solidity 0.5.","locations":["contracts/DxMgnPool.sol:1612","contracts/DxMgnPool.sol:1613","contracts/DxMgnPool.sol:1662"]}]}
[codex:400312] tokens used
[codex:400312] 82,297
[codex:400312] {"no_findings":false,"summary":"Found 3 issues: share issuance can be mispriced when the pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow totals.","findings":[{"severity":"medium","category":"other","title":"Share issuance ignores secondary-token holdings when totalDeposit is zero","exploit_scenario":"An attacker waits until the pool has sold deposit tokens and `totalDeposit` is zero while value sits in secondary tokens. They deposit a small amount and receive shares at a 1:1 price. When the pool later converts secondary tokens back to deposit tokens, the attacker withdraws a disproportionately large share of the final deposit and MGN, diluting earlier participants.","recommendation":"Price new shares against full pool NAV (deposit + secondary + DX balances), or disallow deposits while the pool is not fully in the deposit token, or snapshot pool value from DX before minting shares.","evidence":"`deposit()` mints shares via `calculatePoolShares(amount)`, which returns `amount` when `totalDeposit == 0`. `totalDeposit` is only updated from deposit-token balances, so it can be zero while value sits in secondary tokens or DX auctions.","locations":["contracts/DxMgnPool.sol:1602","contracts/DxMgnPool.sol:1672","contracts/DxMgnPool.sol:1693","contracts/DxMgnPool.sol:1775"]},{"severity":"low","category":"other","title":"Unchecked low-level DX claim can silently fail and strand funds","exploit_scenario":"If the DX contract reverts or changes behavior (e.g., proxy upgrade), the low-level `call` to `claimSellerFunds` can fail silently. The pool continues, updates state, and allows withdrawals based on incomplete balances, leaving unclaimed funds locked in DX and underpaying participants.","recommendation":"Use the typed interface and `require` success/return values, or record failures and block state transitions until claims succeed.","evidence":"`address(dx).call(...)` is used to invoke `claimSellerFunds` without checking the returned success flag.","locations":["contracts/DxMgnPool.sol:1669","contracts/DxMgnPool.sol:1689"]},{"severity":"low","category":"math","title":"Unchecked arithmetic on pool totals can overflow and corrupt accounting","exploit_scenario":"A user deposits an extremely large amount (or a token with a huge supply), causing `totalPoolShares`, `totalDeposit`, or `totalPoolSharesCummulative` to wrap in Solidity 0.5. This corrupts share math and can lead to incorrect payouts or stuck withdrawals.","recommendation":"Use SafeMath for all arithmetic on totals (replace `+=` and `2 * totalPoolShares` with SafeMath operations).","evidence":"Pool totals are updated with unchecked `+=` and multiplication in Solidity 0.5.","locations":["contracts/DxMgnPool.sol:1612","contracts/DxMgnPool.sol:1613","contracts/DxMgnPool.sol:1662"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T07:35:10.186105+00:00",
        "returncode": 0
    },
    "summary": "Found 3 issues: share issuance can be mispriced when the pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow totals.",
    "raw_final": {
        "summary": "Found 3 issues: share issuance can be mispriced when the pool holds secondary tokens, unchecked low-level DX claims can strand funds, and unchecked arithmetic can overflow totals.",
        "findings": [
            {
                "title": "Share issuance ignores secondary-token holdings when totalDeposit is zero",
                "category": "other",
                "evidence": "`deposit()` mints shares via `calculatePoolShares(amount)`, which returns `amount` when `totalDeposit == 0`. `totalDeposit` is only updated from deposit-token balances, so it can be zero while value sits in secondary tokens or DX auctions.",
                "severity": "medium",
                "locations": [
                    "contracts/DxMgnPool.sol:1602",
                    "contracts/DxMgnPool.sol:1672",
                    "contracts/DxMgnPool.sol:1693",
                    "contracts/DxMgnPool.sol:1775"
                ],
                "recommendation": "Price new shares against full pool NAV (deposit + secondary + DX balances), or disallow deposits while the pool is not fully in the deposit token, or snapshot pool value from DX before minting shares.",
                "exploit_scenario": "An attacker waits until the pool has sold deposit tokens and `totalDeposit` is zero while value sits in secondary tokens. They deposit a small amount and receive shares at a 1:1 price. When the pool later converts secondary tokens back to deposit tokens, the attacker withdraws a disproportionately large share of the final deposit and MGN, diluting earlier participants."
            },
            {
                "title": "Unchecked low-level DX claim can silently fail and strand funds",
                "category": "other",
                "evidence": "`address(dx).call(...)` is used to invoke `claimSellerFunds` without checking the returned success flag.",
                "severity": "low",
                "locations": [
                    "contracts/DxMgnPool.sol:1669",
                    "contracts/DxMgnPool.sol:1689"
                ],
                "recommendation": "Use the typed interface and `require` success/return values, or record failures and block state transitions until claims succeed.",
                "exploit_scenario": "If the DX contract reverts or changes behavior (e.g., proxy upgrade), the low-level `call` to `claimSellerFunds` can fail silently. The pool continues, updates state, and allows withdrawals based on incomplete balances, leaving unclaimed funds locked in DX and underpaying participants."
            },
            {
                "title": "Unchecked arithmetic on pool totals can overflow and corrupt accounting",
                "category": "math",
                "evidence": "Pool totals are updated with unchecked `+=` and multiplication in Solidity 0.5.",
                "severity": "low",
                "locations": [
                    "contracts/DxMgnPool.sol:1612",
                    "contracts/DxMgnPool.sol:1613",
                    "contracts/DxMgnPool.sol:1662"
                ],
                "recommendation": "Use SafeMath for all arithmetic on totals (replace `+=` and `2 * totalPoolShares` with SafeMath operations).",
                "exploit_scenario": "A user deposits an extremely large amount (or a token with a huge supply), causing `totalPoolShares`, `totalDeposit`, or `totalPoolSharesCummulative` to wrap in Solidity 0.5. This corrupts share math and can lead to incorrect payouts or stuck withdrawals."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
17
EXT*/BALANCE
14
Total opcodes
5527
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x020d
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000003b: SWAP1
0000003c: DIV
0000003d: DUP1
0000003e: PUSH4 0xa86c31ee
00000043: GT
00000044: PUSH2 0x012c
00000047: JUMPI
00000048: DUP1
00000049: PUSH4 0xe21b7f4b
0000004e: GT
0000004f: PUSH2 0x00bf
00000052: JUMPI
00000053: DUP1
00000054: PUSH4 0xefc7f429
00000059: GT
0000005a: PUSH2 0x008e
0000005d: JUMPI
0000005e: DUP1
0000005f: PUSH4 0xefc7f429
00000064: EQ
00000065: PUSH2 0x0557
00000068: JUMPI
00000069: DUP1
0000006a: PUSH4 0xf2fde38b
0000006f: EQ
00000070: PUSH2 0x055f
00000073: JUMPI
00000074: DUP1
00000075: PUSH4 0xf4eb08db
0000007a: EQ
0000007b: PUSH2 0x0585
0000007e: JUMPI
0000007f: DUP1
00000080: PUSH4 0xf6153ccd
00000085: EQ
00000086: PUSH2 0x058d
00000089: JUMPI
0000008a: PUSH2 0x020d
0000008d: JUMP
0000008e: JUMPDEST
0000008f: DUP1
00000090: PUSH4 0xe21b7f4b
00000095: EQ
00000096: PUSH2 0x0537
00000099: JUMPI
0000009a: DUP1
0000009b: PUSH4 0xe3a69f7d
000000a0: EQ
000000a1: PUSH2 0x053f
000000a4: JUMPI
000000a5: DUP1
000000a6: PUSH4 0xe4b43184
000000ab: EQ
000000ac: PUSH2 0x0547
000000af: JUMPI
000000b0: DUP1
000000b1: PUSH4 0xea568322
000000b6: EQ
000000b7: PUSH2 0x054f
000000ba: JUMPI
000000bb: PUSH2 0x020d
000000be: JUMP
000000bf: JUMPDEST
000000c0: DUP1
000000c1: PUSH4 0xc89039c5
000000c6: GT
000000c7: PUSH2 0x00fb
000000ca: JUMPI
000000cb: DUP1
000000cc: PUSH4 0xc89039c5
000000d1: EQ
000000d2: PUSH2 0x04f9
000000d5: JUMPI
000000d6: DUP1
000000d7: PUSH4 0xc9042b1e
000000dc: EQ
000000dd: PUSH2 0x0501
000000e0: JUMPI
000000e1: DUP1
000000e2: PUSH4 0xd1e16d9e
000000e7: EQ
000000e8: PUSH2 0x0509
000000eb: JUMPI
000000ec: DUP1
000000ed: PUSH4 0xd338fd2d
000000f2: EQ
000000f3: PUSH2 0x052f
000000f6: JUMPI
000000f7: PUSH2 0x020d
000000fa: JUMP
000000fb: JUMPDEST
000000fc: DUP1
000000fd: PUSH4 0xa86c31ee
00000102: EQ
00000103: PUSH2 0x04a0
00000106: JUMPI
00000107: DUP1
00000108: PUSH4 0xb05b65ca
0000010d: EQ
0000010e: PUSH2 0x04a8
00000111: JUMPI
00000112: DUP1
00000113: PUSH4 0xb6b55f25
00000118: EQ
00000119: PUSH2 0x04d4
0000011c: JUMPI
0000011d: DUP1
0000011e: PUSH4 0xc8353114
00000123: EQ
00000124: PUSH2 0x04f1
00000127: JUMPI
00000128: PUSH2 0x020d
0000012b: JUMP
0000012c: JUMPDEST
0000012d: DUP1
0000012e: PUSH4 0x57a07b53
00000133: GT
00000134: PUSH2 0x01a4
00000137: JUMPI
00000138: DUP1
00000139: PUSH4 0x765a25ac
0000013e: GT
0000013f: PUSH2 0x0173
00000142: JUMPI
00000143: DUP1
00000144: PUSH4 0x765a25ac
00000149: EQ
0000014a: PUSH2 0x0399
0000014d: JUMPI
0000014e: DUP1
0000014f: PUSH4 0x8da5cb5b
00000154: EQ
00000155: PUSH2 0x0458
00000158: JUMPI
00000159: DUP1
0000015a: PUSH4 0x8f32d59b
0000015f: EQ
00000160: PUSH2 0x047c
00000163: JUMPI
00000164: DUP1
00000165: PUSH4 0xa3bf1829
0000016a: EQ
0000016b: PUSH2 0x0498
0000016e: JUMPI
0000016f: PUSH2 0x020d
00000172: JUMP
00000173: JUMPDEST
00000174: DUP1
00000175: PUSH4 0x57a07b53
0000017a: EQ
0000017b: PUSH2 0x033c
0000017e: JUMPI
0000017f: DUP1
00000180: PUSH4 0x6d0a67de
00000185: EQ
00000186: PUSH2 0x035d
00000189: JUMPI
0000018a: DUP1
0000018b: PUSH4 0x715018a6
00000190: EQ
00000191: PUSH2 0x0365
00000194: JUMPI
00000195: DUP1
00000196: PUSH4 0x758fef0c
0000019b: EQ
0000019c: PUSH2 0x036d
0000019f: JUMPI
000001a0: PUSH2 0x020d
000001a3: JUMP
000001a4: JUMPDEST
000001a5: DUP1
000001a6: PUSH4 0x2ad71573
000001ab: GT
000001ac: PUSH2 0x01e0
000001af: JUMPI
000001b0: DUP1
000001b1: PUSH4 0x2ad71573
000001b6: EQ
000001b7: PUSH2 0x02ac
000001ba: JUMPI
000001bb: DUP1
000001bc: PUSH4 0x2efd4899
000001c1: EQ
000001c2: PUSH2 0x02b4
000001c5: JUMPI
000001c6: DUP1
000001c7: PUSH4 0x3a3a65c8
000001cc: EQ
000001cd: PUSH2 0x02bc
000001d0: JUMPI
000001d1: DUP1
000001d2: PUSH4 0x4e35578d
000001d7: EQ
000001d8: PUSH2 0x0332
000001db: JUMPI
000001dc: PUSH2 0x020d
000001df: JUMP
000001e0: JUMPDEST
000001e1: DUP1
000001e2: PUSH4 0x0c3f6acf
000001e7: EQ
000001e8: PUSH2 0x0212
000001eb: JUMPI
000001ec: DUP1
000001ed: PUSH4 0x117df088
000001f2: EQ
000001f3: PUSH2 0x023e
000001f6: JUMPI
000001f7: DUP1
000001f8: PUSH4 0x18c5ce93
000001fd: EQ
000001fe: PUSH2 0x0258
00000201: JUMPI
00000202: DUP1
00000203: PUSH4 0x290c41c5
00000208: EQ
00000209: PUSH2 0x0286
0000020c: JUMPI
0000020d: JUMPDEST
0000020e: PUSH1 0x00
00000210: DUP1
00000211: REVERT
00000212: JUMPDEST
00000213: PUSH2 0x021a
00000216: PUSH2 0x0595
00000219: JUMP
0000021a: JUMPDEST
0000021b: PUSH1 0x40
0000021d: MLOAD
0000021e: DUP1
0000021f: DUP3
00000220: PUSH1 0x03
00000222: DUP2
00000223: GT
00000224: ISZERO
00000225: PUSH2 0x022a
00000228: JUMPI
00000229: INVALID
0000022a: JUMPDEST
0000022b: PUSH1 0xff
0000022d: AND
0000022e: DUP2
0000022f: MSTORE
00000230: PUSH1 0x20
00000232: ADD
00000233: SWAP2
00000234: POP
00000235: POP
00000236: PUSH1 0x40
00000238: MLOAD
00000239: DUP1
0000023a: SWAP2
0000023b: SUB
0000023c: SWAP1
0000023d: RETURN
0000023e: JUMPDEST
0000023f: PUSH2 0x0246
00000242: PUSH2 0x059e
00000245: JUMP
00000246: JUMPDEST
00000247: PUSH1 0x40
00000249: DUP1
0000024a: MLOAD
0000024b: SWAP2
0000024c: DUP3
0000024d: MSTORE
0000024e: MLOAD
0000024f: SWAP1
00000250: DUP2
00000251: SWAP1
00000252: SUB
00000253: PUSH1 0x20
00000255: ADD
00000256: SWAP1
00000257: RETURN
00000258: JUMPDEST
00000259: PUSH2 0x0260
0000025c: PUSH2 0x0720
0000025f: JUMP
00000260: JUMPDEST
00000261: PUSH1 0x40
00000263: DUP1
00000264: MLOAD
00000265: PUSH1 0x01
00000267: PUSH1 0xa0
00000269: PUSH1 0x02
0000026b: EXP
0000026c: SUB
0000026d: SWAP4
0000026e: DUP5
0000026f: AND
00000270: DUP2
00000271: MSTORE
00000272: SWAP2
00000273: SWAP1
00000274: SWAP3
00000275: AND
00000276: PUSH1 0x20
00000278: DUP3
00000279: ADD
0000027a: MSTORE
0000027b: DUP2
0000027c: MLOAD
0000027d: SWAP1
0000027e: DUP2
0000027f: SWAP1
00000280: SUB
00000281: SWAP1
00000282: SWAP2
00000283: ADD
00000284: SWAP1
00000285: RETURN
00000286: JUMPDEST
00000287: PUSH2 0x0246
0000028a: PUSH1 0x04
0000028c: DUP1
0000028d: CALLDATASIZE
0000028e: SUB
0000028f: PUSH1 0x20
00000291: DUP2
00000292: LT
00000293: ISZERO
00000294: PUSH2 0x029c
00000297: JUMPI
00000298: PUSH1 0x00
0000029a: DUP1
0000029b: REVERT
0000029c: JUMPDEST
0000029d: POP
0000029e: CALLDATALOAD
0000029f: PUSH1 0x01
000002a1: PUSH1 0xa0
000002a3: PUSH1 0x02
000002a5: EXP
000002a6: SUB
000002a7: AND
000002a8: PUSH2 0x0764
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH2 0x0246
000002b0: PUSH2 0x0783
000002b3: JUMP
000002b4: JUMPDEST
000002b5: PUSH2 0x0246
000002b8: PUSH2 0x0789
000002bb: JUMP
000002bc: JUMPDEST
000002bd: PUSH2 0x02e2
000002c0: PUSH1 0x04
000002c2: DUP1
000002c3: CALLDATASIZE
000002c4: SUB
000002c5: PUSH1 0x20
000002c7: DUP2
000002c8: LT
000002c9: ISZERO
000002ca: PUSH2 0x02d2
000002cd: JUMPI
000002ce: PUSH1 0x00
000002d0: DUP1
000002d1: REVERT
000002d2: JUMPDEST
000002d3: POP
000002d4: CALLDATALOAD
000002d5: PUSH1 0x01
000002d7: PUSH1 0xa0
000002d9: PUSH1 0x02
000002db: EXP
000002dc: SUB
000002dd: AND
000002de: PUSH2 0x078f
000002e1: JUMP
000002e2: JUMPDEST
000002e3: PUSH1 0x40
000002e5: DUP1
000002e6: MLOAD
000002e7: PUSH1 0x20
000002e9: DUP1
000002ea: DUP3
000002eb: MSTORE
000002ec: DUP4
000002ed: MLOAD
000002ee: DUP2
000002ef: DUP4
000002f0: ADD
000002f1: MSTORE
000002f2: DUP4
000002f3: MLOAD
000002f4: SWAP2
000002f5: SWAP3
000002f6: DUP4
000002f7: SWAP3
000002f8: SWAP1
000002f9: DUP4
000002fa: ADD
000002fb: SWAP2
000002fc: DUP6
000002fd: DUP2
000002fe: ADD
000002ff: SWAP2
00000300: MUL
00000301: DUP1
00000302: DUP4
00000303: DUP4
00000304: PUSH1 0x00
00000306: JUMPDEST
00000307: DUP4
00000308: DUP2
00000309: LT
0000030a: ISZERO
0000030b: PUSH2 0x031e
0000030e: JUMPI
0000030f: DUP2
00000310: DUP2
00000311: ADD
00000312: MLOAD
00000313: DUP4
00000314: DUP3
00000315: ADD
00000316: MSTORE
00000317: PUSH1 0x20
00000319: ADD
0000031a: PUSH2 0x0306
0000031d: JUMP
0000031e: JUMPDEST
0000031f: POP
00000320: POP
00000321: POP
00000322: POP
00000323: SWAP1
00000324: POP
00000325: ADD
00000326: SWAP3
00000327: POP
00000328: POP
00000329: POP
0000032a: PUSH1 0x40
0000032c: MLOAD
0000032d: DUP1
0000032e: SWAP2
0000032f: SUB
00000330: SWAP1
00000331: RETURN
00000332: JUMPDEST
00000333: PUSH2 0x033a
00000336: PUSH2 0x0845
00000339: JUMP
0000033a: JUMPDEST
0000033b: STOP
0000033c: JUMPDEST
0000033d: PUSH2 0x0344
00000340: PUSH2 0x09da
00000343: JUMP
00000344: JUMPDEST
00000345: PUSH1 0x40
00000347: DUP1
00000348: MLOAD
00000349: SWAP3
0000034a: DUP4
0000034b: MSTORE
0000034c: PUSH1 0x20
0000034e: DUP4
0000034f: ADD
00000350: SWAP2
00000351: SWAP1
00000352: SWAP2
00000353: MSTORE
00000354: DUP1
00000355: MLOAD
00000356: SWAP2
00000357: DUP3
00000358: SWAP1
00000359: SUB
0000035a: ADD
0000035b: SWAP1
0000035c: RETURN
0000035d: JUMPDEST
0000035e: PUSH2 0x0246
00000361: PUSH2 0x09f5
00000364: JUMP
00000365: JUMPDEST
00000366: PUSH2 0x033a
00000369: PUSH2 0x09fb
0000036c: JUMP
0000036d: JUMPDEST
0000036e: PUSH2 0x0344
00000371: PUSH1 0x04
00000373: DUP1
00000374: CALLDATASIZE
00000375: SUB
00000376: PUSH1 0x40
00000378: DUP2
00000379: LT
0000037a: ISZERO
0000037b: PUSH2 0x0383
0000037e: JUMPI
0000037f: PUSH1 0x00
00000381: DUP1
00000382: REVERT
00000383: JUMPDEST
00000384: POP
00000385: PUSH1 0x01
00000387: PUSH1 0xa0
00000389: PUSH1 0x02
0000038b: EXP
0000038c: SUB
0000038d: DUP2
0000038e: CALLDATALOAD
0000038f: AND
00000390: SWAP1
00000391: PUSH1 0x20
00000393: ADD
00000394: CALLDATALOAD
00000395: PUSH2 0x0a65
00000398: JUMP
00000399: JUMPDEST
0000039a: PUSH2 0x03bf
0000039d: PUSH1 0x04
0000039f: DUP1
000003a0: CALLDATASIZE
000003a1: SUB
000003a2: PUSH1 0x20
000003a4: DUP2
000003a5: LT
000003a6: ISZERO
000003a7: PUSH2 0x03af
000003aa: JUMPI
000003ab: PUSH1 0x00
000003ad: DUP1
000003ae: REVERT
000003af: JUMPDEST
000003b0: POP
000003b1: CALLDATALOAD
000003b2: PUSH1 0x01
000003b4: PUSH1 0xa0
000003b6: PUSH1 0x02
000003b8: EXP
000003b9: SUB
000003ba: AND
000003bb: PUSH2 0x0ace
000003be: JUMP
000003bf: JUMPDEST
000003c0: PUSH1 0x40
000003c2: MLOAD
000003c3: DUP1
000003c4: DUP1
000003c5: PUSH1 0x20
000003c7: ADD
000003c8: DUP1
000003c9: PUSH1 0x20
000003cb: ADD
000003cc: DUP4
000003cd: DUP2
000003ce: SUB
000003cf: DUP4
000003d0: MSTORE
000003d1: DUP6
000003d2: DUP2
000003d3: DUP2
000003d4: MLOAD
000003d5: DUP2
000003d6: MSTORE
000003d7: PUSH1 0x20
000003d9: ADD
000003da: SWAP2
000003db: POP
000003dc: DUP1
000003dd: MLOAD
000003de: SWAP1
000003df: PUSH1 0x20
000003e1: ADD
000003e2: SWAP1
000003e3: PUSH1 0x20
000003e5: MUL
000003e6: DUP1
000003e7: DUP4
000003e8: DUP4
000003e9: PUSH1 0x00
000003eb: JUMPDEST
000003ec: DUP4
000003ed: DUP2
000003ee: LT
000003ef: ISZERO
000003f0: PUSH2 0x0403
000003f3: JUMPI
000003f4: DUP2
000003f5: DUP2
000003f6: ADD
000003f7: MLOAD
000003f8: DUP4
000003f9: DUP3
000003fa: ADD
000003fb: MSTORE
000003fc: PUSH1 0x20
000003fe: ADD
000003ff: PUSH2 0x03eb
00000402: JUMP
00000403: JUMPDEST
00000404: POP
00000405: POP
00000406: POP
00000407: POP
00000408: SWAP1
00000409: POP
0000040a: ADD
0000040b: DUP4
0000040c: DUP2
0000040d: SUB
0000040e: DUP3
0000040f: MSTORE
00000410: DUP5
00000411: DUP2
00000412: DUP2
00000413: MLOAD
00000414: DUP2
00000415: MSTORE
00000416: PUSH1 0x20
00000418: ADD
00000419: SWAP2
0000041a: POP
0000041b: DUP1
0000041c: MLOAD
0000041d: SWAP1
0000041e: PUSH1 0x20
00000420: ADD
00000421: SWAP1
00000422: PUSH1 0x20
00000424: MUL
00000425: DUP1
00000426: DUP4
00000427: DUP4
00000428: PUSH1 0x00
0000042a: JUMPDEST
0000042b: DUP4
0000042c: DUP2
0000042d: LT
0000042e: ISZERO
0000042f: PUSH2 0x0442
00000432: JUMPI
00000433: DUP2
00000434: DUP2
00000435: ADD
00000436: MLOAD
00000437: DUP4
00000438: DUP3
00000439: ADD
0000043a: MSTORE
0000043b: PUSH1 0x20
0000043d: ADD
0000043e: PUSH2 0x042a
00000441: JUMP
00000442: JUMPDEST
00000443: POP
00000444: POP
00000445: POP
00000446: POP
00000447: SWAP1
00000448: POP
00000449: ADD
0000044a: SWAP5
0000044b: POP
0000044c: POP
0000044d: POP
0000044e: POP
0000044f: POP
00000450: PUSH1 0x40
00000452: MLOAD
00000453: DUP1
00000454: SWAP2
00000455: SUB
00000456: SWAP1
00000457: RETURN
00000458: JUMPDEST
00000459: PUSH2 0x0460
0000045c: PUSH2 0x0c22
0000045f: JUMP
00000460: JUMPDEST
00000461: PUSH1 0x40
00000463: DUP1
00000464: MLOAD
00000465: PUSH1 0x01
00000467: PUSH1 0xa0
00000469: PUSH1 0x02
0000046b: EXP
0000046c: SUB
0000046d: SWAP1
0000046e: SWAP3
0000046f: AND
00000470: DUP3
00000471: MSTORE
00000472: MLOAD
00000473: SWAP1
00000474: DUP2
00000475: SWAP1
00000476: SUB
00000477: PUSH1 0x20
00000479: ADD
0000047a: SWAP1
0000047b: RETURN
0000047c: JUMPDEST
0000047d: PUSH2 0x0484
00000480: PUSH2 0x0c31
00000483: JUMP
00000484: JUMPDEST
00000485: PUSH1 0x40
00000487: DUP1
00000488: MLOAD
00000489: SWAP2
0000048a: ISZERO
0000048b: ISZERO
0000048c: DUP3
0000048d: MSTORE
0000048e: MLOAD
0000048f: SWAP1
00000490: DUP2
00000491: SWAP1
00000492: SUB
00000493: PUSH1 0x20
00000495: ADD
00000496: SWAP1
00000497: RETURN
00000498: JUMPDEST
00000499: PUSH2 0x033a
0000049c: PUSH2 0x0c42
0000049f: JUMP
000004a0: JUMPDEST
000004a1: PUSH2 0x021a
000004a4: PUSH2 0x1135
000004a7: JUMP
000004a8: JUMPDEST
000004a9: PUSH2 0x0344
000004ac: PUSH1 0x04
000004ae: DUP1
000004af: CALLDATASIZE
000004b0: SUB
000004b1: PUSH1 0x40
000004b3: DUP2
000004b4: LT
000004b5: ISZERO
000004b6: PUSH2 0x04be
000004b9: JUMPI
000004ba: PUSH1 0x00
000004bc: DUP1
000004bd: REVERT
000004be: JUMPDEST
000004bf: POP
000004c0: PUSH1 0x01
000004c2: PUSH1 0xa0
000004c4: PUSH1 0x02
000004c6: EXP
000004c7: SUB
000004c8: DUP2
000004c9: CALLDATALOAD
000004ca: AND
000004cb: SWAP1
000004cc: PUSH1 0x20
000004ce: ADD
000004cf: CALLDATALOAD
000004d0: PUSH2 0x1149
000004d3: JUMP
000004d4: JUMPDEST
000004d5: PUSH2 0x033a
000004d8: PUSH1 0x04
000004da: DUP1
000004db: CALLDATASIZE
000004dc: SUB
000004dd: PUSH1 0x20
000004df: DUP2
000004e0: LT
000004e1: ISZERO
000004e2: PUSH2 0x04ea
000004e5: JUMPI
000004e6: PUSH1 0x00
000004e8: DUP1
000004e9: REVERT
000004ea: JUMPDEST
000004eb: POP
000004ec: CALLDATALOAD
000004ed: PUSH2 0x1184
000004f0: JUMP
000004f1: JUMPDEST
000004f2: PUSH2 0x0460
000004f5: PUSH2 0x129c
000004f8: JUMP
000004f9: JUMPDEST
000004fa: PUSH2 0x0460
000004fd: PUSH2 0x12ab
00000500: JUMP
00000501: JUMPDEST
00000502: PUSH2 0x0460
00000505: PUSH2 0x12ba
00000508: JUMP
00000509: JUMPDEST
0000050a: PUSH2 0x0484
0000050d: PUSH1 0x04
0000050f: DUP1
00000510: CALLDATASIZE
00000511: SUB
00000512: PUSH1 0x20
00000514: DUP2
00000515: LT
00000516: ISZERO
00000517: PUSH2 0x051f
0000051a: JUMPI
0000051b: PUSH1 0x00
0000051d: DUP1
0000051e: REVERT
0000051f: JUMPDEST
00000520: POP
00000521: CALLDATALOAD
00000522: PUSH1 0x01
00000524: PUSH1 0xa0
00000526: PUSH1 0x02
00000528: EXP
00000529: SUB
0000052a: AND
0000052b: PUSH2 0x12c9
0000052e: JUMP
0000052f: JUMPDEST
00000530: PUSH2 0x0246
00000533: PUSH2 0x12de
00000536: JUMP
00000537: JUMPDEST
00000538: PUSH2 0x0246
0000053b: PUSH2 0x14aa
0000053e: JUMP
0000053f: JUMPDEST
00000540: PUSH2 0x033a
00000543: PUSH2 0x14b0
00000546: JUMP
00000547: JUMPDEST
00000548: PUSH2 0x0246
0000054b: PUSH2 0x14fb
0000054e: JUMP
0000054f: JUMPDEST
00000550: PUSH2 0x0246
00000553: PUSH2 0x1501
00000556: JUMP
00000557: JUMPDEST
00000558: PUSH2 0x033a
0000055b: PUSH2 0x1507
0000055e: JUMP
0000055f: JUMPDEST
00000560: PUSH2 0x033a
00000563: PUSH1 0x04
00000565: DUP1
00000566: CALLDATASIZE
00000567: SUB
00000568: PUSH1 0x20
0000056a: DUP2
0000056b: LT
0000056c: ISZERO
0000056d: PUSH2 0x0575
00000570: JUMPI
00000571: PUSH1 0x00
00000573: DUP1
00000574: REVERT
00000575: JUMPDEST
00000576: POP
00000577: CALLDATALOAD
00000578: PUSH1 0x01
0000057a: PUSH1 0xa0
0000057c: PUSH1 0x02
0000057e: EXP
0000057f: SUB
00000580: AND
00000581: PUSH2 0x1af8
00000584: JUMP
00000585: JUMPDEST
00000586: PUSH2 0x0460
00000589: PUSH2 0x1b17
0000058c: JUMP
0000058d: JUMPDEST
0000058e: PUSH2 0x0246
00000591: PUSH2 0x1b26
00000594: JUMP
00000595: JUMPDEST
00000596: PUSH1 0x02
00000598: SLOAD
00000599: PUSH1 0xff
0000059b: AND
0000059c: DUP2
0000059d: JUMP
0000059e: JUMPDEST
0000059f: PUSH1 0x00
000005a1: PUSH1 0x02
000005a3: DUP1
000005a4: SLOAD
000005a5: PUSH1 0xff
000005a7: AND
000005a8: PUSH1 0x03
000005aa: DUP2
000005ab: GT
000005ac: ISZERO
000005ad: PUSH2 0x05b2
000005b0: JUMPI
000005b1: INVALID
000005b2: JUMPDEST
000005b3: EQ
000005b4: DUP1
000005b5: PUSH2 0x05ce
000005b8: JUMPI
000005b9: POP
000005ba: PUSH1 0x03
000005bc: PUSH1 0x02
000005be: SLOAD
000005bf: PUSH1 0xff
000005c1: AND
000005c2: PUSH1 0x03
000005c4: DUP2
000005c5: GT
000005c6: ISZERO
000005c7: PUSH2 0x05cc
000005ca: JUMPI
000005cb: INVALID
000005cc: JUMPDEST
000005cd: EQ
000005ce: JUMPDEST
000005cf: ISZERO
000005d0: ISZERO
000005d1: PUSH2 0x0624
000005d4: JUMPI
000005d5: PUSH1 0x40
000005d7: DUP1
000005d8: MLOAD
000005d9: PUSH1 0xe5
000005db: PUSH1 0x02
000005dd: EXP
000005de: PUSH3 0x461bcd
000005e2: MUL
000005e3: DUP2
000005e4: MSTORE
000005e5: PUSH1 0x20
000005e7: PUSH1 0x04
000005e9: DUP3
000005ea: ADD
000005eb: MSTORE
000005ec: PUSH1 0x1f
000005ee: PUSH1 0x24
000005f0: DUP3
000005f1: ADD
000005f2: MSTORE
000005f3: PUSH32 0x46756e6473206e6f74207965742077697468647261776e2066726f6d20647800
00000614: PUSH1 0x44
00000616: DUP3
00000617: ADD
00000618: MSTORE
00000619: SWAP1
0000061a: MLOAD
0000061b: SWAP1
0000061c: DUP2
0000061d: SWAP1
0000061e: SUB
0000061f: PUSH1 0x64
00000621: ADD
00000622: SWAP1
00000623: REVERT
00000624: JUMPDEST
00000625: CALLER
00000626: PUSH1 0x00
00000628: SWAP1
00000629: DUP2
0000062a: MSTORE
0000062b: PUSH1 0x01
0000062d: PUSH1 0x20
0000062f: MSTORE
00000630: PUSH1 0x40
00000632: SWAP1
00000633: KECCAK256
00000634: SLOAD
00000635: PUSH1 0xff
00000637: AND
00000638: ISZERO
00000639: PUSH2 0x0676
0000063c: JUMPI
0000063d: PUSH1 0x40
0000063f: MLOAD
00000640: PUSH1 0xe5
00000642: PUSH1 0x02
00000644: EXP
00000645: PUSH3 0x461bcd
00000649: MUL
0000064a: DUP2
0000064b: MSTORE
0000064c: PUSH1 0x04
0000064e: ADD
0000064f: DUP1
00000650: DUP1
00000651: PUSH1 0x20
00000653: ADD
00000654: DUP3
00000655: DUP2
00000656: SUB
00000657: DUP3
00000658: MSTORE
00000659: PUSH1 0x22
0000065b: DUP2
0000065c: MSTORE
0000065d: PUSH1 0x20
0000065f: ADD
00000660: DUP1
00000661: PUSH2 0x212e
00000664: PUSH1 0x22
00000666: SWAP2
00000667: CODECOPY
00000668: PUSH1 0x40
0000066a: ADD
0000066b: SWAP2
0000066c: POP
0000066d: POP
0000066e: PUSH1 0x40
00000670: MLOAD
00000671: DUP1
00000672: SWAP2
00000673: SUB
00000674: SWAP1
00000675: REVERT
00000676: JUMPDEST
00000677: CALLER
00000678: PUSH1 0x00
0000067a: SWAP1
0000067b: DUP2
0000067c: MSTORE
0000067d: PUSH1 0x03
0000067f: PUSH1 0x20
00000681: MSTORE
00000682: PUSH1 0x40
00000684: DUP2
00000685: KECCAK256
00000686: DUP1
00000687: SLOAD
00000688: DUP3
00000689: JUMPDEST
0000068a: DUP2
0000068b: DUP2
0000068c: LT
0000068d: ISZERO
0000068e: PUSH2 0x06e0
00000691: JUMPI
00000692: PUSH2 0x06d4
00000695: DUP4
00000696: DUP3
00000697: DUP2
00000698: SLOAD
00000699: DUP2
0000069a: LT
0000069b: ISZERO
0000069c: ISZERO
0000069d: PUSH2 0x06a2
000006a0: JUMPI
000006a1: INVALID
000006a2: JUMPDEST
000006a3: SWAP1
000006a4: PUSH1 0x00
000006a6: MSTORE
000006a7: PUSH1 0x20
000006a9: PUSH1 0x00
000006ab: KECCAK256
000006ac: SWAP1
000006ad: PUSH1 0x02
000006af: MUL
000006b0: ADD
000006b1: PUSH1 0x40
000006b3: DUP1
000006b4: MLOAD
000006b5: SWAP1
000006b6: DUP2
000006b7: ADD
000006b8: PUSH1 0x40
000006ba: MSTORE
000006bb: SWAP1
000006bc: DUP2
000006bd: PUSH1 0x00
000006bf: DUP3
000006c0: ADD
000006c1: SLOAD
000006c2: DUP2
000006c3: MSTORE
000006c4: PUSH1 0x20
000006c6: ADD
000006c7: PUSH1 0x01
000006c9: DUP3
000006ca: ADD
000006cb: SLOAD
000006cc: DUP2
000006cd: MSTORE
000006ce: POP
000006cf: POP
000006d0: PUSH2 0x1b2c
000006d3: JUMP
000006d4: JUMPDEST
000006d5: SWAP1
000006d6: SWAP4
000006d7: ADD
000006d8: SWAP3
000006d9: PUSH1 0x01
000006db: ADD
000006dc: PUSH2 0x0689
000006df: JUMP
000006e0: JUMPDEST
000006e1: POP
000006e2: CALLER
000006e3: PUSH1 0x00
000006e5: DUP2
000006e6: DUP2
000006e7: MSTORE
000006e8: PUSH1 0x01
000006ea: PUSH1 0x20
000006ec: DUP2
000006ed: SWAP1
000006ee: MSTORE
000006ef: PUSH1 0x40
000006f1: SWAP1
000006f2: SWAP2
000006f3: KECCAK256
000006f4: DUP1
000006f5: SLOAD
000006f6: PUSH1 0xff
000006f8: NOT
000006f9: AND
000006fa: SWAP1
000006fb: SWAP2
000006fc: OR
000006fd: SWAP1
000006fe: SSTORE
000006ff: PUSH1 0x0a
00000701: SLOAD
00000702: PUSH2 0x0717
00000705: SWAP2
00000706: PUSH1 0x01
00000708: PUSH1 0xa0
0000070a: PUSH1 0x02
0000070c: EXP
0000070d: SUB
0000070e: SWAP1
0000070f: SWAP2
00000710: AND
00000711: SWAP1
00000712: DUP6
00000713: PUSH2 0x1b6b
00000716: JUMP
00000717: JUMPDEST
00000718: POP
00000719: SWAP1
0000071a: SWAP2
0000071b: POP
0000071c: POP
0000071d: JUMPDEST
0000071e: SWAP1
0000071f: JUMP
00000720: JUMPDEST
00000721: PUSH1 0x00
00000723: DUP1
00000724: PUSH2 0x072b
00000727: PUSH2 0x1d4d
0000072a: JUMP
0000072b: JUMPDEST
0000072c: ISZERO
0000072d: PUSH2 0x074a
00000730: JUMPI
00000731: POP
00000732: POP
00000733: PUSH1 0x0a
00000735: SLOAD
00000736: PUSH1 0x0b
00000738: SLOAD
00000739: PUSH1 0x01
0000073b: PUSH1 0xa0
0000073d: PUSH1 0x02
0000073f: EXP
00000740: SUB
00000741: SWAP2
00000742: DUP3
00000743: AND
00000744: SWAP2
00000745: AND
00000746: PUSH2 0x0760
00000749: JUMP
0000074a: JUMPDEST
0000074b: POP
0000074c: POP
0000074d: PUSH1 0x0b
0000074f: SLOAD
00000750: PUSH1 0x0a
00000752: SLOAD
00000753: PUSH1 0x01
00000755: PUSH1 0xa0
00000757: PUSH1 0x02
00000759: EXP
0000075a: SUB
0000075b: SWAP2
0000075c: DUP3
0000075d: AND
0000075e: SWAP2
0000075f: AND
00000760: JUMPDEST
00000761: SWAP1
00000762: SWAP2
00000763: JUMP
00000764: JUMPDEST
00000765: PUSH1 0x01
00000767: PUSH1 0xa0
00000769: PUSH1 0x02
0000076b: EXP
0000076c: SUB
0000076d: DUP2
0000076e: AND
0000076f: PUSH1 0x00
00000771: SWAP1
00000772: DUP2
00000773: MSTORE
00000774: PUSH1 0x03
00000776: PUSH1 0x20
00000778: MSTORE
00000779: PUSH1 0x40
0000077b: SWAP1
0000077c: KECCAK256
0000077d: SLOAD
0000077e: JUMPDEST
0000077f: SWAP2
00000780: SWAP1
00000781: POP
00000782: JUMP
00000783: JUMPDEST
00000784: PUSH1 0x09
00000786: SLOAD
00000787: DUP2
00000788: JUMP
00000789: JUMPDEST
0000078a: PUSH1 0x05
0000078c: SLOAD
0000078d: DUP2
0000078e: JUMP
0000078f: JUMPDEST
00000790: PUSH1 0x01
00000792: PUSH1 0xa0
00000794: PUSH1 0x02
00000796: EXP
00000797: SUB
00000798: DUP2
00000799: AND
0000079a: PUSH1 0x00
0000079c: SWAP1
0000079d: DUP2
0000079e: MSTORE
0000079f: PUSH1 0x03
000007a1: PUSH1 0x20
000007a3: SWAP1
000007a4: DUP2
000007a5: MSTORE
000007a6: PUSH1 0x40
000007a8: SWAP2
000007a9: DUP3
000007aa: SWAP1
000007ab: KECCAK256
000007ac: SLOAD
000007ad: DUP3
000007ae: MLOAD
000007af: DUP2
000007b0: DUP2
000007b1: MSTORE
000007b2: DUP2
000007b3: DUP4
000007b4: MUL
000007b5: DUP2
000007b6: ADD
000007b7: SWAP1
000007b8: SWAP3
000007b9: ADD
000007ba: SWAP1
000007bb: SWAP3
000007bc: MSTORE
000007bd: PUSH1 0x60
000007bf: SWAP2
000007c0: SWAP1
000007c1: DUP3
000007c2: SWAP1
000007c3: DUP3
000007c4: DUP1
000007c5: ISZERO
000007c6: PUSH2 0x07d9
000007c9: JUMPI
000007ca: DUP2
000007cb: PUSH1 0x20
000007cd: ADD
000007ce: PUSH1 0x20
000007d0: DUP3
000007d1: MUL
000007d2: DUP1
000007d3: CODESIZE
000007d4: DUP4
000007d5: CODECOPY
000007d6: ADD
000007d7: SWAP1
000007d8: POP
000007d9: JUMPDEST
000007da: POP
000007db: SWAP1
000007dc: POP
000007dd: PUSH1 0x00
000007df: JUMPDEST
000007e0: DUP3
000007e1: DUP2
000007e2: LT
000007e3: ISZERO
000007e4: PUSH2 0x083d
000007e7: JUMPI
000007e8: PUSH1 0x01
000007ea: PUSH1 0xa0
000007ec: PUSH1 0x02
000007ee: EXP
000007ef: SUB
000007f0: DUP6
000007f1: AND
000007f2: PUSH1 0x00
000007f4: SWAP1
000007f5: DUP2
000007f6: MSTORE
000007f7: PUSH1 0x03
000007f9: PUSH1 0x20
000007fb: MSTORE
000007fc: PUSH1 0x40
000007fe: SWAP1
000007ff: KECCAK256
00000800: DUP1
00000801: SLOAD
00000802: DUP3
00000803: SWAP1
00000804: DUP2
00000805: LT
00000806: PUSH2 0x080b
00000809: JUMPI
0000080a: INVALID
0000080b: JUMPDEST
0000080c: SWAP1
0000080d: PUSH1 0x00
0000080f: MSTORE
00000810: PUSH1 0x20
00000812: PUSH1 0x00
00000814: KECCAK256
00000815: SWAP1
00000816: PUSH1 0x02
00000818: MUL
00000819: ADD
0000081a: PUSH1 0x01
0000081c: ADD
0000081d: SLOAD
0000081e: DUP3
0000081f: DUP3
00000820: DUP2
00000821: MLOAD
00000822: DUP2
00000823: LT
00000824: ISZERO
00000825: ISZERO
00000826: PUSH2 0x082b
00000829: JUMPI
0000082a: INVALID
0000082b: JUMPDEST
0000082c: PUSH1 0x20
0000082e: SWAP1
0000082f: DUP2
00000830: MUL
00000831: SWAP1
00000832: SWAP2
00000833: ADD
00000834: ADD
00000835: MSTORE
00000836: PUSH1 0x01
00000838: ADD
00000839: PUSH2 0x07df
0000083c: JUMP
0000083d: JUMPDEST
0000083e: POP
0000083f: SWAP4
00000840: SWAP3
00000841: POP
00000842: POP
00000843: POP
00000844: JUMP
00000845: JUMPDEST
00000846: PUSH1 0x02
00000848: DUP1
00000849: SLOAD
0000084a: PUSH1 0xff
0000084c: AND
0000084d: PUSH1 0x03
0000084f: DUP2
00000850: GT
00000851: ISZERO
00000852: PUSH2 0x0857
00000855: JUMPI
00000856: INVALID
00000857: JUMPDEST
00000858: EQ
00000859: PUSH2 0x08ac
0000085c: JUMPI
0000085d: PUSH1 0x40
0000085f: DUP1
00000860: MLOAD
00000861: PUSH1 0xe5
00000863: PUSH1 0x02
00000865: EXP
00000866: PUSH3 0x461bcd
0000086a: MUL
0000086b: DUP2
0000086c: MSTORE
0000086d: PUSH1 0x20
0000086f: PUSH1 0x04
00000871: DUP3
00000872: ADD
00000873: MSTORE
00000874: PUSH1 0x1b
00000876: PUSH1 0x24
00000878: DUP3
00000879: ADD
0000087a: MSTORE
0000087b: PUSH32 0x556e6c6f636b696e67206e6f7420796574207472696767657265640000000000
0000089c: PUSH1 0x44
0000089e: DUP3
0000089f: ADD
000008a0: MSTORE
000008a1: SWAP1
000008a2: MLOAD
000008a3: SWAP1
000008a4: DUP2
000008a5: SWAP1
000008a6: SUB
000008a7: PUSH1 0x64
000008a9: ADD
000008aa: SWAP1
000008ab: REVERT
000008ac: JUMPDEST
000008ad: PUSH1 0x0c
000008af: PUSH1 0x00
000008b1: SWAP1
000008b2: SLOAD
000008b3: SWAP1
000008b4: PUSH2 0x0100
000008b7: EXP
000008b8: SWAP1
000008b9: DIV
000008ba: PUSH1 0x01
000008bc: PUSH1 0xa0
000008be: PUSH1 0x02
000008c0: EXP
000008c1: SUB
000008c2: AND
000008c3: PUSH1 0x01
000008c5: PUSH1 0xa0
000008c7: PUSH1 0x02
000008c9: EXP
000008ca: SUB
000008cb: AND
000008cc: PUSH4 0xc17ccc6c
000008d1: PUSH1 0x40
000008d3: MLOAD
000008d4: DUP2
000008d5: PUSH4 0xffffffff
000008da: AND
000008db: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000008f9: MUL
000008fa: DUP2
000008fb: MSTORE
000008fc: PUSH1 0x04
000008fe: ADD
000008ff: PUSH1 0x00
00000901: PUSH1 0x40
00000903: MLOAD
00000904: DUP1
00000905: DUP4
00000906: SUB
00000907: DUP2
00000908: PUSH1 0x00
0000090a: DUP8
0000090b: DUP1
0000090c: EXTCODESIZE
0000090d: ISZERO
0000090e: DUP1
0000090f: ISZERO
00000910: PUSH2 0x0918
00000913: JUMPI
00000914: PUSH1 0x00
00000916: DUP1
00000917: REVERT
00000918: JUMPDEST
00000919: POP
0000091a: GAS
0000091b: CALL
0000091c: ISZERO
0000091d: DUP1
0000091e: ISZERO
0000091f: PUSH2 0x092c
00000922: JUMPI
00000923: RETURNDATASIZE
00000924: PUSH1 0x00
00000926: DUP1
00000927: RETURNDATACOPY
00000928: RETURNDATASIZE
00000929: PUSH1 0x00
0000092b: REVERT
0000092c: JUMPDEST
0000092d: POP
0000092e: POP
0000092f: PUSH1 0x0c
00000931: SLOAD
00000932: PUSH1 0x40
00000934: DUP1
00000935: MLOAD
00000936: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000957: DUP2
00000958: MSTORE
00000959: ADDRESS
0000095a: PUSH1 0x04
0000095c: DUP3
0000095d: ADD
0000095e: MSTORE
0000095f: SWAP1
00000960: MLOAD
00000961: PUSH1 0x01
00000963: PUSH1 0xa0
00000965: PUSH1 0x02
00000967: EXP
00000968: SUB
00000969: SWAP1
0000096a: SWAP3
0000096b: AND
0000096c: SWAP4
0000096d: POP
0000096e: PUSH4 0x70a08231
00000973: SWAP3
00000974: POP
00000975: PUSH1 0x24
00000977: DUP1
00000978: DUP3
00000979: ADD
0000097a: SWAP3
0000097b: PUSH1 0x20
0000097d: SWAP3
0000097e: SWAP1
0000097f: SWAP2
00000980: SWAP1
00000981: DUP3
00000982: SWAP1
00000983: SUB
00000984: ADD
00000985: DUP2
00000986: DUP7
00000987: DUP1
00000988: EXTCODESIZE
00000989: ISZERO
0000098a: DUP1
0000098b: ISZERO
0000098c: PUSH2 0x0994
0000098f: JUMPI
00000990: PUSH1 0x00
00000992: DUP1
00000993: REVERT
00000994: JUMPDEST
00000995: POP
00000996: GAS
00000997: STATICCALL
00000998: ISZERO
00000999: DUP1
0000099a: ISZERO
0000099b: PUSH2 0x09a8
0000099e: JUMPI
0000099f: RETURNDATASIZE
000009a0: PUSH1 0x00
000009a2: DUP1
000009a3: RETURNDATACOPY
000009a4: RETURNDATASIZE
000009a5: PUSH1 0x00
000009a7: REVERT
000009a8: JUMPDEST
000009a9: POP
000009aa: POP
000009ab: POP
000009ac: POP
000009ad: PUSH1 0x40
000009af: MLOAD
000009b0: RETURNDATASIZE
000009b1: PUSH1 0x20
000009b3: DUP2
000009b4: LT
000009b5: ISZERO
000009b6: PUSH2 0x09be
000009b9: JUMPI
000009ba: PUSH1 0x00
000009bc: DUP1
000009bd: REVERT
000009be: JUMPDEST
000009bf: POP
000009c0: MLOAD
000009c1: PUSH1 0x07
000009c3: SSTORE
000009c4: PUSH1 0x02
000009c6: DUP1
000009c7: SLOAD
000009c8: PUSH1 0x03
000009ca: SWAP2
000009cb: SWAP1
000009cc: PUSH1 0xff
000009ce: NOT
000009cf: AND
000009d0: PUSH1 0x01
000009d2: DUP4
000009d3: JUMPDEST
000009d4: MUL
000009d5: OR
000009d6: SWAP1
000009d7: SSTORE
000009d8: POP
000009d9: JUMP
000009da: JUMPDEST
000009db: PUSH1 0x00
000009dd: DUP1
000009de: PUSH2 0x09e5
000009e1: PUSH2 0x059e
000009e4: JUMP
000009e5: JUMPDEST
000009e6: PUSH2 0x09ed
000009e9: PUSH2 0x12de
000009ec: JUMP
000009ed: JUMPDEST
000009ee: SWAP2
000009ef: POP
000009f0: SWAP2
000009f1: POP
000009f2: SWAP1
000009f3: SWAP2
000009f4: JUMP
000009f5: JUMPDEST
000009f6: PUSH1 0x04
000009f8: SLOAD
000009f9: DUP2
000009fa: JUMP
000009fb: JUMPDEST
000009fc: PUSH2 0x0a03
000009ff: PUSH2 0x0c31
00000a02: JUMP
00000a03: JUMPDEST
00000a04: ISZERO
00000a05: ISZERO
00000a06: PUSH2 0x0a0e
00000a09: JUMPI
00000a0a: PUSH1 0x00
00000a0c: DUP1
00000a0d: REVERT
00000a0e: JUMPDEST
00000a0f: PUSH1 0x00
00000a11: DUP1
00000a12: SLOAD
00000a13: PUSH1 0x40
00000a15: MLOAD
00000a16: PUSH1 0x01
00000a18: PUSH1 0xa0
00000a1a: PUSH1 0x02
00000a1c: EXP
00000a1d: SUB
00000a1e: SWAP1
00000a1f: SWAP2
00000a20: AND
00000a21: SWAP1
00000a22: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000a43: SWAP1
00000a44: DUP4
00000a45: SWAP1
00000a46: LOG3
00000a47: PUSH1 0x00
00000a49: DUP1
00000a4a: SLOAD
00000a4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a60: NOT
00000a61: AND
00000a62: SWAP1
00000a63: SSTORE
00000a64: JUMP
00000a65: JUMPDEST
00000a66: PUSH1 0x00
00000a68: DUP1
00000a69: PUSH2 0x0a70
00000a6c: PUSH2 0x208d
00000a6f: JUMP
00000a70: JUMPDEST
00000a71: PUSH1 0x01
00000a73: PUSH1 0xa0
00000a75: PUSH1 0x02
00000a77: EXP
00000a78: SUB
00000a79: DUP6
00000a7a: AND
00000a7b: PUSH1 0x00
00000a7d: SWAP1
00000a7e: DUP2
00000a7f: MSTORE
00000a80: PUSH1 0x03
00000a82: PUSH1 0x20
00000a84: MSTORE
00000a85: PUSH1 0x40
00000a87: SWAP1
00000a88: KECCAK256
00000a89: DUP1
00000a8a: SLOAD
00000a8b: DUP6
00000a8c: SWAP1
00000a8d: DUP2
00000a8e: LT
00000a8f: PUSH2 0x0a94
00000a92: JUMPI
00000a93: INVALID
00000a94: JUMPDEST
00000a95: PUSH1 0x00
00000a97: SWAP2
00000a98: DUP3
00000a99: MSTORE
00000a9a: PUSH1 0x20
00000a9c: SWAP2
00000a9d: DUP3
00000a9e: SWAP1
00000a9f: KECCAK256
00000aa0: PUSH1 0x40
00000aa2: DUP1
00000aa3: MLOAD
00000aa4: DUP1
00000aa5: DUP3
00000aa6: ADD
00000aa7: SWAP1
00000aa8: SWAP2
00000aa9: MSTORE
00000aaa: PUSH1 0x02
00000aac: SWAP1
00000aad: SWAP3
00000aae: MUL
00000aaf: ADD
00000ab0: DUP1
00000ab1: SLOAD
00000ab2: DUP1
00000ab3: DUP4
00000ab4: MSTORE
00000ab5: PUSH1 0x01
00000ab7: SWAP1
00000ab8: SWAP2
00000ab9: ADD
00000aba: SLOAD
00000abb: SWAP2
00000abc: SWAP1
00000abd: SWAP3
00000abe: ADD
00000abf: DUP2
00000ac0: SWAP1
00000ac1: MSTORE
00000ac2: SWAP1
00000ac3: SWAP4
00000ac4: POP
00000ac5: SWAP2
00000ac6: POP
00000ac7: POP
00000ac8: SWAP3
00000ac9: POP
00000aca: SWAP3
00000acb: SWAP1
00000acc: POP
00000acd: JUMP
00000ace: JUMPDEST
00000acf: PUSH1 0x01
00000ad1: PUSH1 0xa0
00000ad3: PUSH1 0x02
00000ad5: EXP
00000ad6: SUB
00000ad7: DUP2
00000ad8: AND
00000ad9: PUSH1 0x00
00000adb: SWAP1
00000adc: DUP2
00000add: MSTORE
00000ade: PUSH1 0x03
00000ae0: PUSH1 0x20
00000ae2: SWAP1
00000ae3: DUP2
00000ae4: MSTORE
00000ae5: PUSH1 0x40
00000ae7: SWAP2
00000ae8: DUP3
00000ae9: SWAP1
00000aea: KECCAK256
00000aeb: SLOAD
00000aec: DUP3
00000aed: MLOAD
00000aee: DUP2
00000aef: DUP2
00000af0: MSTORE
00000af1: DUP2
00000af2: DUP4
00000af3: MUL
00000af4: DUP2
00000af5: ADD
00000af6: SWAP1
00000af7: SWAP3
00000af8: ADD
00000af9: SWAP1
00000afa: SWAP3
00000afb: MSTORE
00000afc: PUSH1 0x60
00000afe: SWAP2
00000aff: DUP3
00000b00: SWAP2
00000b01: DUP3
00000b02: SWAP1
00000b03: DUP3
00000b04: DUP1
00000b05: ISZERO
00000b06: PUSH2 0x0b19
00000b09: JUMPI
00000b0a: DUP2
00000b0b: PUSH1 0x20
00000b0d: ADD
00000b0e: PUSH1 0x20
00000b10: DUP3
00000b11: MUL
00000b12: DUP1
00000b13: CODESIZE
00000b14: DUP4
00000b15: CODECOPY
00000b16: ADD
00000b17: SWAP1
00000b18: POP
00000b19: JUMPDEST
00000b1a: POP
00000b1b: SWAP1
00000b1c: POP
00000b1d: PUSH1 0x60
00000b1f: DUP3
00000b20: PUSH1 0x40
00000b22: MLOAD
00000b23: SWAP1
00000b24: DUP1
00000b25: DUP3
00000b26: MSTORE
00000b27: DUP1
00000b28: PUSH1 0x20
00000b2a: MUL
00000b2b: PUSH1 0x20
00000b2d: ADD
00000b2e: DUP3
00000b2f: ADD
00000b30: PUSH1 0x40
00000b32: MSTORE
00000b33: DUP1
00000b34: ISZERO
00000b35: PUSH2 0x0b48
00000b38: JUMPI
00000b39: DUP2
00000b3a: PUSH1 0x20
00000b3c: ADD
00000b3d: PUSH1 0x20
00000b3f: DUP3
00000b40: MUL
00000b41: DUP1
00000b42: CODESIZE
00000b43: DUP4
00000b44: CODECOPY
00000b45: ADD
00000b46: SWAP1
00000b47: POP
00000b48: JUMPDEST
00000b49: POP
00000b4a: SWAP1
00000b4b: POP
00000b4c: PUSH1 0x00
00000b4e: JUMPDEST
00000b4f: DUP4
00000b50: DUP2
00000b51: LT
00000b52: ISZERO
00000b53: PUSH2 0x0c16
00000b56: JUMPI
00000b57: PUSH1 0x01
00000b59: PUSH1 0xa0
00000b5b: PUSH1 0x02
00000b5d: EXP
00000b5e: SUB
00000b5f: DUP8
00000b60: AND
00000b61: PUSH1 0x00
00000b63: SWAP1
00000b64: DUP2
00000b65: MSTORE
00000b66: PUSH1 0x03
00000b68: PUSH1 0x20
00000b6a: MSTORE
00000b6b: PUSH1 0x40
00000b6d: SWAP1
00000b6e: KECCAK256
00000b6f: DUP1
00000b70: SLOAD
00000b71: PUSH2 0x0bb1
00000b74: SWAP2
00000b75: SWAP1
00000b76: DUP4
00000b77: SWAP1
00000b78: DUP2
00000b79: LT
00000b7a: PUSH2 0x0b7f
00000b7d: JUMPI
00000b7e: INVALID
00000b7f: JUMPDEST
00000b80: SWAP1
00000b81: PUSH1 0x00
00000b83: MSTORE
00000b84: PUSH1 0x20
00000b86: PUSH1 0x00
00000b88: KECCAK256
00000b89: SWAP1
00000b8a: PUSH1 0x02
00000b8c: MUL
00000b8d: ADD
00000b8e: PUSH1 0x40
00000b90: DUP1
00000b91: MLOAD
00000b92: SWAP1
00000b93: DUP2
00000b94: ADD
00000b95: PUSH1 0x40
00000b97: MSTORE
00000b98: SWAP1
00000b99: DUP2
00000b9a: PUSH1 0x00
00000b9c: DUP3
00000b9d: ADD
00000b9e: SLOAD
00000b9f: DUP2
00000ba0: MSTORE
00000ba1: PUSH1 0x20
00000ba3: ADD
00000ba4: PUSH1 0x01
00000ba6: DUP3
00000ba7: ADD
00000ba8: SLOAD
00000ba9: DUP2
00000baa: MSTORE
00000bab: POP
00000bac: POP
00000bad: PUSH2 0x1d57
00000bb0: JUMP
00000bb1: JUMPDEST
00000bb2: DUP4
00000bb3: DUP3
00000bb4: DUP2
00000bb5: MLOAD
00000bb6: DUP2
00000bb7: LT
00000bb8: ISZERO
00000bb9: ISZERO
00000bba: PUSH2 0x0bbf
00000bbd: JUMPI
00000bbe: INVALID
00000bbf: JUMPDEST
00000bc0: PUSH1 0x20
00000bc2: SWAP1
00000bc3: DUP2
00000bc4: MUL
00000bc5: SWAP1
00000bc6: SWAP2
00000bc7: ADD
00000bc8: DUP2
00000bc9: ADD
00000bca: SWAP2
00000bcb: SWAP1
00000bcc: SWAP2
00000bcd: MSTORE
00000bce: PUSH1 0x01
00000bd0: PUSH1 0xa0
00000bd2: PUSH1 0x02
00000bd4: EXP
00000bd5: SUB
00000bd6: DUP9
00000bd7: AND
00000bd8: PUSH1 0x00
00000bda: SWAP1
00000bdb: DUP2
00000bdc: MSTORE
00000bdd: PUSH1 0x03
00000bdf: SWAP1
00000be0: SWAP2
00000be1: MSTORE
00000be2: PUSH1 0x40
00000be4: SWAP1
00000be5: KECCAK256
00000be6: DUP1
00000be7: SLOAD
00000be8: PUSH2 0x0bf6
00000beb: SWAP2
00000bec: SWAP1
00000bed: DUP4
00000bee: SWAP1
00000bef: DUP2
00000bf0: LT
00000bf1: PUSH2 0x06a2
00000bf4: JUMPI
00000bf5: INVALID
00000bf6: JUMPDEST
00000bf7: DUP3
00000bf8: DUP3
00000bf9: DUP2
00000bfa: MLOAD
00000bfb: DUP2
00000bfc: LT
00000bfd: ISZERO
00000bfe: ISZERO
00000bff: PUSH2 0x0c04
00000c02: JUMPI
00000c03: INVALID
00000c04: JUMPDEST
00000c05: PUSH1 0x20
00000c07: SWAP1
00000c08: DUP2
00000c09: MUL
00000c0a: SWAP1
00000c0b: SWAP2
00000c0c: ADD
00000c0d: ADD
00000c0e: MSTORE
00000c0f: PUSH1 0x01
00000c11: ADD
00000c12: PUSH2 0x0b4e
00000c15: JUMP
00000c16: JUMPDEST
00000c17: POP
00000c18: SWAP1
00000c19: SWAP4
00000c1a: POP
00000c1b: SWAP2
00000c1c: POP
00000c1d: POP
00000c1e: SWAP2
00000c1f: POP
00000c20: SWAP2
00000c21: JUMP
00000c22: JUMPDEST
00000c23: PUSH1 0x00
00000c25: SLOAD
00000c26: PUSH1 0x01
00000c28: PUSH1 0xa0
00000c2a: PUSH1 0x02
00000c2c: EXP
00000c2d: SUB
00000c2e: AND
00000c2f: SWAP1
00000c30: JUMP
00000c31: JUMPDEST
00000c32: PUSH1 0x00
00000c34: SLOAD
00000c35: PUSH1 0x01
00000c37: PUSH1 0xa0
00000c39: PUSH1 0x02
00000c3b: EXP
00000c3c: SUB
00000c3d: AND
00000c3e: CALLER
00000c3f: EQ
00000c40: SWAP1
00000c41: JUMP
00000c42: JUMPDEST
00000c43: PUSH2 0x0c4a
00000c46: PUSH2 0x14b0
00000c49: JUMP
00000c4a: JUMPDEST
00000c4b: PUSH1 0x01
00000c4d: PUSH1 0x02
00000c4f: SLOAD
00000c50: PUSH1 0xff
00000c52: AND
00000c53: PUSH1 0x03
00000c55: DUP2
00000c56: GT
00000c57: ISZERO
00000c58: PUSH2 0x0c5d
00000c5b: JUMPI
00000c5c: INVALID
00000c5d: JUMPDEST
00000c5e: EQ
00000c5f: PUSH2 0x0cb2
00000c62: JUMPI
00000c63: PUSH1 0x40
00000c65: DUP1
00000c66: MLOAD
00000c67: PUSH1 0xe5
00000c69: PUSH1 0x02
00000c6b: EXP
00000c6c: PUSH3 0x461bcd
00000c70: MUL
00000c71: DUP2
00000c72: MSTORE
00000c73: PUSH1 0x20
00000c75: PUSH1 0x04
00000c77: DUP3
00000c78: ADD
00000c79: MSTORE
00000c7a: PUSH1 0x1f
00000c7c: PUSH1 0x24
00000c7e: DUP3
00000c7f: ADD
00000c80: MSTORE
00000c81: PUSH32 0x506f6f6c696e6720706572696f64206973206e6f7420796574206f7665722e00
00000ca2: PUSH1 0x44
00000ca4: DUP3
00000ca5: ADD
00000ca6: MSTORE
00000ca7: SWAP1
00000ca8: MLOAD
00000ca9: SWAP1
00000caa: DUP2
00000cab: SWAP1
00000cac: SUB
00000cad: PUSH1 0x64
00000caf: ADD
00000cb0: SWAP1
00000cb1: REVERT
00000cb2: JUMPDEST
00000cb3: PUSH1 0x08
00000cb5: SLOAD
00000cb6: PUSH1 0x0d
00000cb8: SLOAD
00000cb9: PUSH1 0x0a
00000cbb: SLOAD
00000cbc: PUSH1 0x0b
00000cbe: SLOAD
00000cbf: PUSH1 0x40
00000cc1: DUP1
00000cc2: MLOAD
00000cc3: PUSH32 0x14584a9d00000000000000000000000000000000000000000000000000000000
00000ce4: DUP2
00000ce5: MSTORE
00000ce6: PUSH1 0x01
00000ce8: PUSH1 0xa0
00000cea: PUSH1 0x02
00000cec: EXP
00000ced: SUB
00000cee: SWAP4
00000cef: DUP5
00000cf0: AND
00000cf1: PUSH1 0x04
00000cf3: DUP3
00000cf4: ADD
00000cf5: MSTORE
00000cf6: SWAP2
00000cf7: DUP4
00000cf8: AND
00000cf9: PUSH1 0x24
00000cfb: DUP4
00000cfc: ADD
00000cfd: MSTORE
00000cfe: MLOAD
00000cff: SWAP2
00000d00: SWAP1
00000d01: SWAP3
00000d02: AND
00000d03: SWAP2
00000d04: PUSH4 0x14584a9d
00000d09: SWAP2
00000d0a: PUSH1 0x44
00000d0c: DUP1
00000d0d: DUP4
00000d0e: ADD
00000d0f: SWAP3
00000d10: PUSH1 0x20
00000d12: SWAP3
00000d13: SWAP2
00000d14: SWAP1
00000d15: DUP3
00000d16: SWAP1
00000d17: SUB
00000d18: ADD
00000d19: DUP2
00000d1a: DUP7
00000d1b: DUP1
00000d1c: EXTCODESIZE
00000d1d: ISZERO
00000d1e: DUP1
00000d1f: ISZERO
00000d20: PUSH2 0x0d28
00000d23: JUMPI
00000d24: PUSH1 0x00
00000d26: DUP1
00000d27: REVERT
00000d28: JUMPDEST
00000d29: POP
00000d2a: GAS
00000d2b: STATICCALL
00000d2c: ISZERO
00000d2d: DUP1
00000d2e: ISZERO
00000d2f: PUSH2 0x0d3c
00000d32: JUMPI
00000d33: RETURNDATASIZE
00000d34: PUSH1 0x00
00000d36: DUP1
00000d37: RETURNDATACOPY
00000d38: RETURNDATASIZE
00000d39: PUSH1 0x00
00000d3b: REVERT
00000d3c: JUMPDEST
00000d3d: POP
00000d3e: POP
00000d3f: POP
00000d40: POP
00000d41: PUSH1 0x40
00000d43: MLOAD
00000d44: RETURNDATASIZE
00000d45: PUSH1 0x20
00000d47: DUP2
00000d48: LT
00000d49: ISZERO
00000d4a: PUSH2 0x0d52
00000d4d: JUMPI
00000d4e: PUSH1 0x00
00000d50: DUP1
00000d51: REVERT
00000d52: JUMPDEST
00000d53: POP
00000d54: MLOAD
00000d55: GT
00000d56: PUSH2 0x0da9
00000d59: JUMPI
00000d5a: PUSH1 0x40
00000d5c: DUP1
00000d5d: MLOAD
00000d5e: PUSH1 0xe5
00000d60: PUSH1 0x02
00000d62: EXP
00000d63: PUSH3 0x461bcd
00000d67: MUL
00000d68: DUP2
00000d69: MSTORE
00000d6a: PUSH1 0x20
00000d6c: PUSH1 0x04
00000d6e: DUP3
00000d6f: ADD
00000d70: MSTORE
00000d71: PUSH1 0x1d
00000d73: PUSH1 0x24
00000d75: DUP3
00000d76: ADD
00000d77: MSTORE
00000d78: PUSH32 0x4c6173742061756374696f6e206973207374696c6c2072756e6e696e67000000
00000d99: PUSH1 0x44
00000d9b: DUP3
00000d9c: ADD
00000d9d: MSTORE
00000d9e: SWAP1
00000d9f: MLOAD
00000da0: SWAP1
00000da1: DUP2
00000da2: SWAP1
00000da3: SUB
00000da4: PUSH1 0x64
00000da6: ADD
00000da7: SWAP1
00000da8: REVERT
00000da9: JUMPDEST
00000daa: PUSH1 0x0d
00000dac: SLOAD
00000dad: PUSH1 0x0b
00000daf: SLOAD
00000db0: PUSH1 0x0a
00000db2: SLOAD
00000db3: PUSH1 0x08
00000db5: SLOAD
00000db6: PUSH1 0x40
00000db8: DUP1
00000db9: MLOAD
00000dba: PUSH1 0x01
00000dbc: PUSH1 0xa0
00000dbe: PUSH1 0x02
00000dc0: EXP
00000dc1: SUB
00000dc2: SWAP5
00000dc3: DUP6
00000dc4: AND
00000dc5: PUSH1 0x24
00000dc7: DUP3
00000dc8: ADD
00000dc9: MSTORE
00000dca: SWAP3
00000dcb: DUP5
00000dcc: AND
00000dcd: PUSH1 0x44
00000dcf: DUP5
00000dd0: ADD
00000dd1: MSTORE
00000dd2: ADDRESS
00000dd3: PUSH1 0x64
00000dd5: DUP5
00000dd6: ADD
00000dd7: MSTORE
00000dd8: PUSH1 0x84
00000dda: DUP1
00000ddb: DUP5
00000ddc: ADD
00000ddd: SWAP3
00000dde: SWAP1
00000ddf: SWAP3
00000de0: MSTORE
00000de1: DUP1
00000de2: MLOAD
00000de3: DUP1
00000de4: DUP5
00000de5: SUB
00000de6: SWAP1
00000de7: SWAP3
00000de8: ADD
00000de9: DUP3
00000dea: MSTORE
00000deb: PUSH1 0xa4
00000ded: SWAP1
00000dee: SWAP3
00000def: ADD
00000df0: DUP3
00000df1: MSTORE
00000df2: PUSH1 0x20
00000df4: DUP2
00000df5: ADD
00000df6: DUP1
00000df7: MLOAD
00000df8: PUSH1 0x01
00000dfa: PUSH1 0xe0
00000dfc: PUSH1 0x02
00000dfe: EXP
00000dff: SUB
00000e00: AND
00000e01: PUSH32 0x65054e5500000000000000000000000000000000000000000000000000000000
00000e22: OR
00000e23: DUP2
00000e24: MSTORE
00000e25: SWAP2
00000e26: MLOAD
00000e27: DUP2
00000e28: MLOAD
00000e29: SWAP4
00000e2a: SWAP1
00000e2b: SWAP5
00000e2c: AND
00000e2d: SWAP4
00000e2e: SWAP1
00000e2f: SWAP3
00000e30: SWAP1
00000e31: SWAP2
00000e32: DUP3
00000e33: SWAP2
00000e34: DUP1
00000e35: DUP4
00000e36: DUP4
00000e37: JUMPDEST
00000e38: PUSH1 0x20
00000e3a: DUP4
00000e3b: LT
00000e3c: PUSH2 0x0e56
00000e3f: JUMPI
00000e40: DUP1
00000e41: MLOAD
00000e42: DUP3
00000e43: MSTORE
00000e44: PUSH1 0x1f
00000e46: NOT
00000e47: SWAP1
00000e48: SWAP3
00000e49: ADD
00000e4a: SWAP2
00000e4b: PUSH1 0x20
00000e4d: SWAP2
00000e4e: DUP3
00000e4f: ADD
00000e50: SWAP2
00000e51: ADD
00000e52: PUSH2 0x0e37
00000e55: JUMP
00000e56: JUMPDEST
00000e57: PUSH1 0x01
00000e59: DUP4
00000e5a: PUSH1 0x20
00000e5c: SUB
00000e5d: PUSH2 0x0100
00000e60: EXP
00000e61: SUB
00000e62: DUP1
00000e63: NOT
00000e64: DUP3
00000e65: MLOAD
00000e66: AND
00000e67: DUP2
00000e68: DUP5
00000e69: MLOAD
00000e6a: AND
00000e6b: DUP1
00000e6c: DUP3
00000e6d: OR
00000e6e: DUP6
00000e6f: MSTORE
00000e70: POP
00000e71: POP
00000e72: POP
00000e73: POP
00000e74: POP
00000e75: POP
00000e76: SWAP1
00000e77: POP
00000e78: ADD
00000e79: SWAP2
00000e7a: POP
00000e7b: POP
00000e7c: PUSH1 0x00
00000e7e: PUSH1 0x40
00000e80: MLOAD
00000e81: DUP1
00000e82: DUP4
00000e83: SUB
00000e84: DUP2
00000e85: PUSH1 0x00
00000e87: DUP7
00000e88: GAS
00000e89: CALL
00000e8a: SWAP2
00000e8b: POP
00000e8c: POP
00000e8d: RETURNDATASIZE
00000e8e: DUP1
00000e8f: PUSH1 0x00
00000e91: DUP2
00000e92: EQ
00000e93: PUSH2 0x0eb8
00000e96: JUMPI
00000e97: PUSH1 0x40
00000e99: MLOAD
00000e9a: SWAP2
00000e9b: POP
00000e9c: PUSH1 0x1f
00000e9e: NOT
00000e9f: PUSH1 0x3f
00000ea1: RETURNDATASIZE
00000ea2: ADD
00000ea3: AND
00000ea4: DUP3
00000ea5: ADD
00000ea6: PUSH1 0x40
00000ea8: MSTORE
00000ea9: RETURNDATASIZE
00000eaa: DUP3
00000eab: MSTORE
00000eac: RETURNDATASIZE
00000ead: PUSH1 0x00
00000eaf: PUSH1 0x20
00000eb1: DUP5
00000eb2: ADD
00000eb3: RETURNDATACOPY
00000eb4: PUSH2 0x0ebd
00000eb7: JUMP
00000eb8: JUMPDEST
00000eb9: PUSH1 0x60
00000ebb: SWAP2
00000ebc: POP
00000ebd: JUMPDEST
00000ebe: POP
00000ebf: POP
00000ec0: PUSH1 0x0c
00000ec2: SLOAD
00000ec3: PUSH1 0x40
00000ec5: DUP1
00000ec6: MLOAD
00000ec7: PUSH32 0xf968f49300000000000000000000000000000000000000000000000000000000
00000ee8: DUP2
00000ee9: MSTORE
00000eea: DUP2
00000eeb: MLOAD
00000eec: PUSH1 0x01
00000eee: PUSH1 0xa0
00000ef0: PUSH1 0x02
00000ef2: EXP
00000ef3: SUB
00000ef4: SWAP1
00000ef5: SWAP4
00000ef6: AND
00000ef7: SWAP4
00000ef8: POP
00000ef9: PUSH4 0xf968f493
00000efe: SWAP3
00000eff: PUSH1 0x04
00000f01: DUP1
00000f02: DUP4
00000f03: ADD
00000f04: SWAP4
00000f05: SWAP3
00000f06: DUP3
00000f07: SWAP1
00000f08: SUB
00000f09: ADD
00000f0a: DUP2
00000f0b: PUSH1 0x00
00000f0d: DUP8
00000f0e: DUP1
00000f0f: EXTCODESIZE
00000f10: ISZERO
00000f11: DUP1
00000f12: ISZERO
00000f13: PUSH2 0x0f1b
00000f16: JUMPI
00000f17: PUSH1 0x00
00000f19: DUP1
00000f1a: REVERT
00000f1b: JUMPDEST
00000f1c: POP
00000f1d: GAS
00000f1e: CALL
00000f1f: ISZERO
00000f20: DUP1
00000f21: ISZERO
00000f22: PUSH2 0x0f2f
00000f25: JUMPI
00000f26: RETURNDATASIZE
00000f27: PUSH1 0x00
00000f29: DUP1
00000f2a: RETURNDATACOPY
00000f2b: RETURNDATASIZE
00000f2c: PUSH1 0x00
00000f2e: REVERT
00000f2f: JUMPDEST
00000f30: POP
00000f31: POP
00000f32: POP
00000f33: POP
00000f34: PUSH1 0x40
00000f36: MLOAD
00000f37: RETURNDATASIZE
00000f38: PUSH1 0x40
00000f3a: DUP2
00000f3b: LT
00000f3c: ISZERO
00000f3d: PUSH2 0x0f45
00000f40: JUMPI
00000f41: PUSH1 0x00
00000f43: DUP1
00000f44: REVERT
00000f45: JUMPDEST
00000f46: POP
00000f47: POP
00000f48: PUSH1 0x0d
00000f4a: SLOAD
00000f4b: PUSH1 0x0a
00000f4d: SLOAD
00000f4e: PUSH1 0x40
00000f50: DUP1
00000f51: MLOAD
00000f52: PUSH32 0xc23f001f00000000000000000000000000000000000000000000000000000000
00000f73: DUP2
00000f74: MSTORE
00000f75: PUSH1 0x01
00000f77: PUSH1 0xa0
00000f79: PUSH1 0x02
00000f7b: EXP
00000f7c: SUB
00000f7d: SWAP3
00000f7e: DUP4
00000f7f: AND
00000f80: PUSH1 0x04
00000f82: DUP3
00000f83: ADD
00000f84: MSTORE
00000f85: ADDRESS
00000f86: PUSH1 0x24
00000f88: DUP3
00000f89: ADD
00000f8a: MSTORE
00000f8b: SWAP1
00000f8c: MLOAD
00000f8d: PUSH1 0x00
00000f8f: SWAP4
00000f90: SWAP3
00000f91: SWAP1
00000f92: SWAP3
00000f93: AND
00000f94: SWAP2
00000f95: PUSH4 0xc23f001f
00000f9a: SWAP2
00000f9b: PUSH1 0x44
00000f9d: DUP1
00000f9e: DUP3
00000f9f: ADD
00000fa0: SWAP3
00000fa1: PUSH1 0x20
00000fa3: SWAP3
00000fa4: SWAP1
00000fa5: SWAP2
00000fa6: SWAP1
00000fa7: DUP3
00000fa8: SWAP1
00000fa9: SUB
00000faa: ADD
00000fab: DUP2
00000fac: DUP7
00000fad: DUP1
00000fae: EXTCODESIZE
00000faf: ISZERO
00000fb0: DUP1
00000fb1: ISZERO
00000fb2: PUSH2 0x0fba
00000fb5: JUMPI
00000fb6: PUSH1 0x00
00000fb8: DUP1
00000fb9: REVERT
00000fba: JUMPDEST
00000fbb: POP
00000fbc: GAS
00000fbd: STATICCALL
00000fbe: ISZERO
00000fbf: DUP1
00000fc0: ISZERO
00000fc1: PUSH2 0x0fce
00000fc4: JUMPI
00000fc5: RETURNDATASIZE
00000fc6: PUSH1 0x00
00000fc8: DUP1
00000fc9: RETURNDATACOPY
00000fca: RETURNDATASIZE
00000fcb: PUSH1 0x00
00000fcd: REVERT
00000fce: JUMPDEST
00000fcf: POP
00000fd0: POP
00000fd1: POP
00000fd2: POP
00000fd3: PUSH1 0x40
00000fd5: MLOAD
00000fd6: RETURNDATASIZE
00000fd7: PUSH1 0x20
00000fd9: DUP2
00000fda: LT
00000fdb: ISZERO
00000fdc: PUSH2 0x0fe4
00000fdf: JUMPI
00000fe0: PUSH1 0x00
00000fe2: DUP1
00000fe3: REVERT
00000fe4: JUMPDEST
00000fe5: POP
00000fe6: MLOAD
00000fe7: PUSH1 0x0a
00000fe9: SLOAD
00000fea: PUSH1 0x40
00000fec: DUP1
00000fed: MLOAD
00000fee: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
0000100f: DUP2
00001010: MSTORE
00001011: ADDRESS
00001012: PUSH1 0x04
00001014: DUP3
00001015: ADD
00001016: MSTORE
00001017: SWAP1
00001018: MLOAD
00001019: SWAP3
0000101a: SWAP4
0000101b: POP
0000101c: PUSH1 0x01
0000101e: PUSH1 0xa0
00001020: PUSH1 0x02
00001022: EXP
00001023: SUB
00001024: SWAP1
00001025: SWAP2
00001026: AND
00001027: SWAP2
00001028: PUSH4 0x70a08231
0000102d: SWAP2
0000102e: PUSH1 0x24
00001030: DUP1
00001031: DUP3
00001032: ADD
00001033: SWAP3
00001034: PUSH1 0x20
00001036: SWAP3
00001037: SWAP1
00001038: SWAP2
00001039: SWAP1
0000103a: DUP3
0000103b: SWAP1
0000103c: SUB
0000103d: ADD
0000103e: DUP2
0000103f: DUP7
00001040: DUP1
00001041: EXTCODESIZE
00001042: ISZERO
00001043: DUP1
00001044: ISZERO
00001045: PUSH2 0x104d
00001048: JUMPI
00001049: PUSH1 0x00
0000104b: DUP1
0000104c: REVERT
0000104d: JUMPDEST
0000104e: POP
0000104f: GAS
00001050: STATICCALL
00001051: ISZERO
00001052: DUP1
00001053: ISZERO
00001054: PUSH2 0x1061
00001057: JUMPI
00001058: RETURNDATASIZE
00001059: PUSH1 0x00
0000105b: DUP1
0000105c: RETURNDATACOPY
0000105d: RETURNDATASIZE
0000105e: PUSH1 0x00
00001060: REVERT
00001061: JUMPDEST
00001062: POP
00001063: POP
00001064: POP
00001065: POP
00001066: PUSH1 0x40
00001068: MLOAD
00001069: RETURNDATASIZE
0000106a: PUSH1 0x20
0000106c: DUP2
0000106d: LT
0000106e: ISZERO
0000106f: PUSH2 0x1077
00001072: JUMPI
00001073: PUSH1 0x00
00001075: DUP1
00001076: REVERT
00001077: JUMPDEST
00001078: POP
00001079: MLOAD
0000107a: DUP2
0000107b: ADD
0000107c: PUSH1 0x06
0000107e: SSTORE
0000107f: PUSH1 0x00
00001081: DUP2
00001082: GT
00001083: ISZERO
00001084: PUSH2 0x1126
00001087: JUMPI
00001088: PUSH1 0x0d
0000108a: SLOAD
0000108b: PUSH1 0x0a
0000108d: SLOAD
0000108e: PUSH1 0x40
00001090: DUP1
00001091: MLOAD
00001092: PUSH32 0xf3fef3a300000000000000000000000000000000000000000000000000000000
000010b3: DUP2
000010b4: MSTORE
000010b5: PUSH1 0x01
000010b7: PUSH1 0xa0
000010b9: PUSH1 0x02
000010bb: EXP
000010bc: SUB
000010bd: SWAP3
000010be: DUP4
000010bf: AND
000010c0: PUSH1 0x04
000010c2: DUP3
000010c3: ADD
000010c4: MSTORE
000010c5: PUSH1 0x24
000010c7: DUP2
000010c8: ADD
000010c9: DUP6
000010ca: SWAP1
000010cb: MSTORE
000010cc: SWAP1
000010cd: MLOAD
000010ce: SWAP2
000010cf: SWAP1
000010d0: SWAP3
000010d1: AND
000010d2: SWAP2
000010d3: PUSH4 0xf3fef3a3
000010d8: SWAP2
000010d9: PUSH1 0x44
000010db: DUP1
000010dc: DUP4
000010dd: ADD
000010de: SWAP3
000010df: PUSH1 0x20
000010e1: SWAP3
000010e2: SWAP2
000010e3: SWAP1
000010e4: DUP3
000010e5: SWAP1
000010e6: SUB
000010e7: ADD
000010e8: DUP2
000010e9: PUSH1 0x00
000010eb: DUP8
000010ec: DUP1
000010ed: EXTCODESIZE
000010ee: ISZERO
000010ef: DUP1
000010f0: ISZERO
000010f1: PUSH2 0x10f9
000010f4: JUMPI
000010f5: PUSH1 0x00
000010f7: DUP1
000010f8: REVERT
000010f9: JUMPDEST
000010fa: POP
000010fb: GAS
000010fc: CALL
000010fd: ISZERO
000010fe: DUP1
000010ff: ISZERO
00001100: PUSH2 0x110d
00001103: JUMPI
00001104: RETURNDATASIZE
00001105: PUSH1 0x00
00001107: DUP1
00001108: RETURNDATACOPY
00001109: RETURNDATASIZE
0000110a: PUSH1 0x00
0000110c: REVERT
0000110d: JUMPDEST
0000110e: POP
0000110f: POP
00001110: POP
00001111: POP
00001112: PUSH1 0x40
00001114: MLOAD
00001115: RETURNDATASIZE
00001116: PUSH1 0x20
00001118: DUP2
00001119: LT
0000111a: ISZERO
0000111b: PUSH2 0x1123
0000111e: JUMPI
0000111f: PUSH1 0x00
00001121: DUP1
00001122: REVERT
00001123: JUMPDEST
00001124: POP
00001125: POP
00001126: JUMPDEST
00001127: POP
00001128: PUSH1 0x02
0000112a: DUP1
0000112b: SLOAD
0000112c: PUSH1 0xff
0000112e: NOT
0000112f: AND
00001130: DUP2
00001131: OR
00001132: SWAP1
00001133: SSTORE
00001134: JUMP
00001135: JUMPDEST
00001136: PUSH1 0x00
00001138: PUSH2 0x113f
0000113b: PUSH2 0x14b0
0000113e: JUMP
0000113f: JUMPDEST
00001140: POP
00001141: PUSH1 0x02
00001143: SLOAD
00001144: PUSH1 0xff
00001146: AND
00001147: SWAP1
00001148: JUMP
00001149: JUMPDEST
0000114a: PUSH1 0x03
0000114c: PUSH1 0x20
0000114e: MSTORE
0000114f: DUP2
00001150: PUSH1 0x00
00001152: MSTORE
00001153: PUSH1 0x40
00001155: PUSH1 0x00
00001157: KECCAK256
00001158: DUP2
00001159: DUP2
0000115a: SLOAD
0000115b: DUP2
0000115c: LT
0000115d: ISZERO
0000115e: ISZERO
0000115f: PUSH2 0x1164
00001162: JUMPI
00001163: INVALID
00001164: JUMPDEST
00001165: PUSH1 0x00
00001167: SWAP2
00001168: DUP3
00001169: MSTORE
0000116a: PUSH1 0x20
0000116c: SWAP1
0000116d: SWAP2
0000116e: KECCAK256
0000116f: PUSH1 0x02
00001171: SWAP1
00001172: SWAP2
00001173: MUL
00001174: ADD
00001175: DUP1
00001176: SLOAD
00001177: PUSH1 0x01
00001179: SWAP1
0000117a: SWAP2
0000117b: ADD
0000117c: SLOAD
0000117d: SWAP1
0000117e: SWAP3
0000117f: POP
00001180: SWAP1
00001181: POP
00001182: DUP3
00001183: JUMP
00001184: JUMPDEST
00001185: PUSH2 0x118c
00001188: PUSH2 0x14b0
0000118b: JUMP
0000118c: JUMPDEST
0000118d: PUSH1 0x00
0000118f: PUSH1 0x02
00001191: SLOAD
00001192: PUSH1 0xff
00001194: AND
00001195: PUSH1 0x03
00001197: DUP2
00001198: GT
00001199: ISZERO
0000119a: PUSH2 0x119f
0000119d: JUMPI
0000119e: INVALID
0000119f: JUMPDEST
000011a0: EQ
000011a1: PUSH2 0x11f4
000011a4: JUMPI
000011a5: PUSH1 0x40
000011a7: DUP1
000011a8: MLOAD
000011a9: PUSH1 0xe5
000011ab: PUSH1 0x02
000011ad: EXP
000011ae: PUSH3 0x461bcd
000011b2: MUL
000011b3: DUP2
000011b4: MSTORE
000011b5: PUSH1 0x20
000011b7: PUSH1 0x04
000011b9: DUP3
000011ba: ADD
000011bb: MSTORE
000011bc: PUSH1 0x17
000011be: PUSH1 0x24
000011c0: DUP3
000011c1: ADD
000011c2: MSTORE
000011c3: PUSH32 0x506f6f6c696e6720697320616c7265616479206f766572000000000000000000
000011e4: PUSH1 0x44
000011e6: DUP3
000011e7: ADD
000011e8: MSTORE
000011e9: SWAP1
000011ea: MLOAD
000011eb: SWAP1
000011ec: DUP2
000011ed: SWAP1
000011ee: SUB
000011ef: PUSH1 0x64
000011f1: ADD
000011f2: SWAP1
000011f3: REVERT
000011f4: JUMPDEST
000011f5: PUSH1 0x00
000011f7: PUSH2 0x11ff
000011fa: DUP3
000011fb: PUSH2 0x1db6
000011fe: JUMP
000011ff: JUMPDEST
00001200: SWAP1
00001201: POP
00001202: PUSH2 0x1209
00001205: PUSH2 0x208d
00001208: JUMP
00001209: JUMPDEST
0000120a: PUSH1 0x40
0000120c: DUP1
0000120d: MLOAD
0000120e: SWAP1
0000120f: DUP2
00001210: ADD
00001211: PUSH1 0x40
00001213: MSTORE
00001214: DUP1
00001215: PUSH2 0x121c
00001218: PUSH2 0x1d4d
0000121b: JUMP
0000121c: JUMPDEST
0000121d: PUSH2 0x122b
00001220: JUMPI
00001221: PUSH1 0x09
00001223: SLOAD
00001224: PUSH1 0x01
00001226: ADD
00001227: PUSH2 0x122f
0000122a: JUMP
0000122b: JUMPDEST
0000122c: PUSH1 0x09
0000122e: SLOAD
0000122f: JUMPDEST
00001230: DUP2
00001231: MSTORE
00001232: PUSH1 0x20
00001234: SWAP1
00001235: DUP2
00001236: ADD
00001237: DUP5
00001238: SWAP1
00001239: MSTORE
0000123a: CALLER
0000123b: PUSH1 0x00
0000123d: DUP2
0000123e: DUP2
0000123f: MSTORE
00001240: PUSH1 0x03
00001242: DUP4
00001243: MSTORE
00001244: PUSH1 0x40
00001246: DUP2
00001247: KECCAK256
00001248: DUP1
00001249: SLOAD
0000124a: PUSH1 0x01
0000124c: DUP2
0000124d: DUP2
0000124e: ADD
0000124f: DUP4
00001250: SSTORE
00001251: SWAP2
00001252: DUP4
00001253: MSTORE
00001254: SWAP2
00001255: DUP5
00001256: SWAP1
00001257: KECCAK256
00001258: DUP6
00001259: MLOAD
0000125a: PUSH1 0x02
0000125c: SWAP1
0000125d: SWAP4
0000125e: MUL
0000125f: ADD
00001260: SWAP2
00001261: DUP3
00001262: SSTORE
00001263: SWAP3
00001264: DUP5
00001265: ADD
00001266: MLOAD
00001267: SWAP3
00001268: ADD
00001269: SWAP2
0000126a: SWAP1
0000126b: SWAP2
0000126c: SSTORE
0000126d: PUSH1 0x04
0000126f: DUP1
00001270: SLOAD
00001271: DUP6
00001272: ADD
00001273: SWAP1
00001274: SSTORE
00001275: PUSH1 0x06
00001277: DUP1
00001278: SLOAD
00001279: DUP7
0000127a: ADD
0000127b: SWAP1
0000127c: SSTORE
0000127d: PUSH1 0x0a
0000127f: SLOAD
00001280: SWAP2
00001281: SWAP3
00001282: POP
00001283: PUSH2 0x1297
00001286: SWAP2
00001287: PUSH1 0x01
00001289: PUSH1 0xa0
0000128b: PUSH1 0x02
0000128d: EXP
0000128e: SUB
0000128f: AND
00001290: SWAP1
00001291: ADDRESS
00001292: DUP7
00001293: PUSH2 0x1df1
00001296: JUMP
00001297: JUMPDEST
00001298: POP
00001299: POP
0000129a: POP
0000129b: JUMP
0000129c: JUMPDEST
0000129d: PUSH1 0x0c
0000129f: SLOAD
000012a0: PUSH1 0x01
000012a2: PUSH1 0xa0
000012a4: PUSH1 0x02
000012a6: EXP
000012a7: SUB
000012a8: AND
000012a9: DUP2
000012aa: JUMP
000012ab: JUMPDEST
000012ac: PUSH1 0x0a
000012ae: SLOAD
000012af: PUSH1 0x01
000012b1: PUSH1 0xa0
000012b3: PUSH1 0x02
000012b5: EXP
000012b6: SUB
000012b7: AND
000012b8: DUP2
000012b9: JUMP
000012ba: JUMPDEST
000012bb: PUSH1 0x0d
000012bd: SLOAD
000012be: PUSH1 0x01
000012c0: PUSH1 0xa0
000012c2: PUSH1 0x02
000012c4: EXP
000012c5: SUB
000012c6: AND
000012c7: DUP2
000012c8: JUMP
000012c9: JUMPDEST
000012ca: PUSH1 0x01
000012cc: PUSH1 0x20
000012ce: MSTORE
000012cf: PUSH1 0x00
000012d1: SWAP1
000012d2: DUP2
000012d3: MSTORE
000012d4: PUSH1 0x40
000012d6: SWAP1
000012d7: KECCAK256
000012d8: SLOAD
000012d9: PUSH1 0xff
000012db: AND
000012dc: DUP2
000012dd: JUMP
000012de: JUMPDEST
000012df: PUSH1 0x00
000012e1: PUSH1 0x03
000012e3: PUSH1 0x02
000012e5: SLOAD
000012e6: PUSH1 0xff
000012e8: AND
000012e9: PUSH1 0x03
000012eb: DUP2
000012ec: GT
000012ed: ISZERO
000012ee: PUSH2 0x12f3
000012f1: JUMPI
000012f2: INVALID
000012f3: JUMPDEST
000012f4: EQ
000012f5: PUSH2 0x1348
000012f8: JUMPI
000012f9: PUSH1 0x40
000012fb: DUP1
000012fc: MLOAD
000012fd: PUSH1 0xe5
000012ff: PUSH1 0x02
00001301: EXP
00001302: PUSH3 0x461bcd
00001306: MUL
00001307: DUP2
00001308: MSTORE
00001309: PUSH1 0x20
0000130b: PUSH1 0x04
0000130d: DUP3
0000130e: ADD
0000130f: MSTORE
00001310: PUSH1 0x1e
00001312: PUSH1 0x24
00001314: DUP3
00001315: ADD
00001316: MSTORE
00001317: PUSH32 0x4d474e20686173206e6f74206265656e20756e6c6f636b65642c207965740000
00001338: PUSH1 0x44
0000133a: DUP3
0000133b: ADD
0000133c: MSTORE
0000133d: SWAP1
0000133e: MLOAD
0000133f: SWAP1
00001340: DUP2
00001341: SWAP1
00001342: SUB
00001343: PUSH1 0x64
00001345: ADD
00001346: SWAP1
00001347: REVERT
00001348: JUMPDEST
00001349: CALLER
0000134a: PUSH1 0x00
0000134c: SWAP1
0000134d: DUP2
0000134e: MSTORE
0000134f: PUSH1 0x01
00001351: PUSH1 0x20
00001353: MSTORE
00001354: PUSH1 0x40
00001356: SWAP1
00001357: KECCAK256
00001358: SLOAD
00001359: PUSH1 0xff
0000135b: AND
0000135c: ISZERO
0000135d: ISZERO
0000135e: PUSH2 0x13b1
00001361: JUMPI
00001362: PUSH1 0x40
00001364: DUP1
00001365: MLOAD
00001366: PUSH1 0xe5
00001368: PUSH1 0x02
0000136a: EXP
0000136b: PUSH3 0x461bcd
0000136f: MUL
00001370: DUP2
00001371: MSTORE
00001372: PUSH1 0x20
00001374: PUSH1 0x04
00001376: DUP3
00001377: ADD
00001378: MSTORE
00001379: PUSH1 0x17
0000137b: PUSH1 0x24
0000137d: DUP3
0000137e: ADD
0000137f: MSTORE
00001380: PUSH32 0x5769746864726177206465706f73697473206669727374000000000000000000
000013a1: PUSH1 0x44
000013a3: DUP3
000013a4: ADD
000013a5: MSTORE
000013a6: SWAP1
000013a7: MLOAD
000013a8: SWAP1
000013a9: DUP2
000013aa: SWAP1
000013ab: SUB
000013ac: PUSH1 0x64
000013ae: ADD
000013af: SWAP1
000013b0: REVERT
000013b1: JUMPDEST
000013b2: CALLER
000013b3: PUSH1 0x00
000013b5: SWAP1
000013b6: DUP2
000013b7: MSTORE
000013b8: PUSH1 0x03
000013ba: PUSH1 0x20
000013bc: SWAP1
000013bd: DUP2
000013be: MSTORE
000013bf: PUSH1 0x40
000013c1: DUP1
000013c2: DUP4
000013c3: KECCAK256
000013c4: DUP1
000013c5: SLOAD
000013c6: DUP3
000013c7: MLOAD
000013c8: DUP2
000013c9: DUP6
000013ca: MUL
000013cb: DUP2
000013cc: ADD
000013cd: DUP6
000013ce: ADD
000013cf: SWAP1
000013d0: SWAP4
000013d1: MSTORE
000013d2: DUP1
000013d3: DUP4
000013d4: MSTORE
000013d5: PUSH1 0x60
000013d7: SWAP4
000013d8: DUP6
000013d9: SWAP1
000013da: DUP5
000013db: ADD
000013dc: JUMPDEST
000013dd: DUP3
000013de: DUP3
000013df: LT
000013e0: ISZERO
000013e1: PUSH2 0x141b
000013e4: JUMPI
000013e5: PUSH1 0x00
000013e7: DUP5
000013e8: DUP2
000013e9: MSTORE
000013ea: PUSH1 0x20
000013ec: SWAP1
000013ed: DUP2
000013ee: SWAP1
000013ef: KECCAK256
000013f0: PUSH1 0x40
000013f2: DUP1
000013f3: MLOAD
000013f4: DUP1
000013f5: DUP3
000013f6: ADD
000013f7: SWAP1
000013f8: SWAP2
000013f9: MSTORE
000013fa: PUSH1 0x02
000013fc: DUP6
000013fd: MUL
000013fe: SWAP1
000013ff: SWAP2
00001400: ADD
00001401: DUP1
00001402: SLOAD
00001403: DUP3
00001404: MSTORE
00001405: PUSH1 0x01
00001407: SWAP1
00001408: DUP2
00001409: ADD
0000140a: SLOAD
0000140b: DUP3
0000140c: DUP5
0000140d: ADD
0000140e: MSTORE
0000140f: SWAP1
00001410: DUP4
00001411: MSTORE
00001412: SWAP1
00001413: SWAP3
00001414: ADD
00001415: SWAP2
00001416: ADD
00001417: PUSH2 0x13dc
0000141a: JUMP
0000141b: JUMPDEST
0000141c: POP
0000141d: SWAP3
0000141e: SWAP4
0000141f: POP
00001420: PUSH1 0x00
00001422: SWAP3
00001423: POP
00001424: POP
00001425: POP
00001426: JUMPDEST
00001427: DUP2
00001428: MLOAD
00001429: DUP2
0000142a: LT
0000142b: ISZERO
0000142c: PUSH2 0x145b
0000142f: JUMPI
00001430: PUSH2 0x144f
00001433: DUP3
00001434: DUP3
00001435: DUP2
00001436: MLOAD
00001437: DUP2
00001438: LT
00001439: ISZERO
0000143a: ISZERO
0000143b: PUSH2 0x1440
0000143e: JUMPI
0000143f: INVALID
00001440: JUMPDEST
00001441: SWAP1
00001442: PUSH1 0x20
00001444: ADD
00001445: SWAP1
00001446: PUSH1 0x20
00001448: MUL
00001449: ADD
0000144a: MLOAD
0000144b: PUSH2 0x1d57
0000144e: JUMP
0000144f: JUMPDEST
00001450: SWAP1
00001451: SWAP3
00001452: ADD
00001453: SWAP2
00001454: PUSH1 0x01
00001456: ADD
00001457: PUSH2 0x1426
0000145a: JUMP
0000145b: JUMPDEST
0000145c: POP
0000145d: CALLER
0000145e: PUSH1 0x00
00001460: SWAP1
00001461: DUP2
00001462: MSTORE
00001463: PUSH1 0x03
00001465: PUSH1 0x20
00001467: MSTORE
00001468: PUSH1 0x40
0000146a: DUP2
0000146b: KECCAK256
0000146c: PUSH2 0x1474
0000146f: SWAP2
00001470: PUSH2 0x20a4
00001473: JUMP
00001474: JUMPDEST
00001475: CALLER
00001476: PUSH1 0x00
00001478: DUP2
00001479: DUP2
0000147a: MSTORE
0000147b: PUSH1 0x01
0000147d: PUSH1 0x20
0000147f: MSTORE
00001480: PUSH1 0x40
00001482: SWAP1
00001483: KECCAK256
00001484: DUP1
00001485: SLOAD
00001486: PUSH1 0xff
00001488: NOT
00001489: AND
0000148a: SWAP1
0000148b: SSTORE
0000148c: PUSH1 0x0c
0000148e: SLOAD
0000148f: PUSH2 0x14a4
00001492: SWAP2
00001493: PUSH1 0x01
00001495: PUSH1 0xa0
00001497: PUSH1 0x02
00001499: EXP
0000149a: SUB
0000149b: SWAP1
0000149c: SWAP2
0000149d: AND
0000149e: SWAP1
0000149f: DUP5
000014a0: PUSH2 0x1b6b
000014a3: JUMP
000014a4: JUMPDEST
000014a5: POP
000014a6: SWAP1
000014a7: POP
000014a8: SWAP1
000014a9: JUMP
000014aa: JUMPDEST
000014ab: PUSH1 0x0e
000014ad: SLOAD
000014ae: DUP2
000014af: JUMP
000014b0: JUMPDEST
000014b1: PUSH1 0x0e
000014b3: SLOAD
000014b4: TIMESTAMP
000014b5: LT
000014b6: ISZERO
000014b7: DUP1
000014b8: ISZERO
000014b9: PUSH2 0x14c5
000014bc: JUMPI
000014bd: POP
000014be: PUSH2 0x14c5
000014c1: PUSH2 0x1d4d
000014c4: JUMP
000014c5: JUMPDEST
000014c6: DUP1
000014c7: ISZERO
000014c8: PUSH2 0x14e1
000014cb: JUMPI
000014cc: POP
000014cd: PUSH1 0x00
000014cf: PUSH1 0x02
000014d1: SLOAD
000014d2: PUSH1 0xff
000014d4: AND
000014d5: PUSH1 0x03
000014d7: DUP2
000014d8: GT
000014d9: ISZERO
000014da: PUSH2 0x14df
000014dd: JUMPI
000014de: INVALID
000014df: JUMPDEST
000014e0: EQ
000014e1: JUMPDEST
000014e2: ISZERO
000014e3: PUSH2 0x14f9
000014e6: JUMPI
000014e7: PUSH1 0x02
000014e9: DUP1
000014ea: SLOAD
000014eb: PUSH1 0x01
000014ed: SWAP2
000014ee: SWAP1
000014ef: PUSH1 0xff
000014f1: NOT
000014f2: AND
000014f3: DUP3
000014f4: DUP1
000014f5: PUSH2 0x09d3
000014f8: JUMP
000014f9: JUMPDEST
000014fa: JUMP
000014fb: JUMPDEST
000014fc: PUSH1 0x07
000014fe: SLOAD
000014ff: DUP2
00001500: JUMP
00001501: JUMPDEST
00001502: PUSH1 0x08
00001504: SLOAD
00001505: DUP2
00001506: JUMP
00001507: JUMPDEST
00001508: PUSH2 0x150f
0000150b: PUSH2 0x0c31
0000150e: JUMP
0000150f: JUMPDEST
00001510: ISZERO
00001511: ISZERO
00001512: PUSH2 0x151a
00001515: JUMPI
00001516: PUSH1 0x00
00001518: DUP1
00001519: REVERT
0000151a: JUMPDEST
0000151b: PUSH2 0x1522
0000151e: PUSH2 0x14b0
00001521: JUMP
00001522: JUMPDEST
00001523: PUSH1 0x00
00001525: PUSH1 0x02
00001527: SLOAD
00001528: PUSH1 0xff
0000152a: AND
0000152b: PUSH1 0x03
0000152d: DUP2
0000152e: GT
0000152f: ISZERO
00001530: PUSH2 0x1535
00001533: JUMPI
00001534: INVALID
00001535: JUMPDEST
00001536: EQ
00001537: PUSH2 0x158a
0000153a: JUMPI
0000153b: PUSH1 0x40
0000153d: DUP1
0000153e: MLOAD
0000153f: PUSH1 0xe5
00001541: PUSH1 0x02
00001543: EXP
00001544: PUSH3 0x461bcd
00001548: MUL
00001549: DUP2
0000154a: MSTORE
0000154b: PUSH1 0x20
0000154d: PUSH1 0x04
0000154f: DUP3
00001550: ADD
00001551: MSTORE
00001552: PUSH1 0x17
00001554: PUSH1 0x24
00001556: DUP3
00001557: ADD
00001558: MSTORE
00001559: PUSH32 0x506f6f6c696e6720706572696f64206973206f7665722e000000000000000000
0000157a: PUSH1 0x44
0000157c: DUP3
0000157d: ADD
0000157e: MSTORE
0000157f: SWAP1
00001580: MLOAD
00001581: SWAP1
00001582: DUP2
00001583: SWAP1
00001584: SUB
00001585: PUSH1 0x64
00001587: ADD
00001588: SWAP1
00001589: REVERT
0000158a: JUMPDEST
0000158b: PUSH1 0x0d
0000158d: SLOAD
0000158e: PUSH1 0x0a
00001590: SLOAD
00001591: PUSH1 0x0b
00001593: SLOAD
00001594: PUSH1 0x40
00001596: DUP1
00001597: MLOAD
00001598: PUSH32 0x14584a9d00000000000000000000000000000000000000000000000000000000
000015b9: DUP2
000015ba: MSTORE
000015bb: PUSH1 0x01
000015bd: PUSH1 0xa0
000015bf: PUSH1 0x02
000015c1: EXP
000015c2: SUB
000015c3: SWAP4
000015c4: DUP5
000015c5: AND
000015c6: PUSH1 0x04
000015c8: DUP3
000015c9: ADD
000015ca: MSTORE
000015cb: SWAP2
000015cc: DUP4
000015cd: AND
000015ce: PUSH1 0x24
000015d0: DUP4
000015d1: ADD
000015d2: MSTORE
000015d3: MLOAD
000015d4: PUSH1 0x00
000015d6: SWAP4
000015d7: SWAP3
000015d8: SWAP1
000015d9: SWAP3
000015da: AND
000015db: SWAP2
000015dc: PUSH4 0x14584a9d
000015e1: SWAP2
000015e2: PUSH1 0x44
000015e4: DUP1
000015e5: DUP3
000015e6: ADD
000015e7: SWAP3
000015e8: PUSH1 0x20
000015ea: SWAP3
000015eb: SWAP1
000015ec: SWAP2
000015ed: SWAP1
000015ee: DUP3
000015ef: SWAP1
000015f0: SUB
000015f1: ADD
000015f2: DUP2
000015f3: DUP7
000015f4: DUP1
000015f5: EXTCODESIZE
000015f6: ISZERO
000015f7: DUP1
000015f8: ISZERO
000015f9: PUSH2 0x1601
000015fc: JUMPI
000015fd: PUSH1 0x00
000015ff: DUP1
00001600: REVERT
00001601: JUMPDEST
00001602: POP
00001603: GAS
00001604: STATICCALL
00001605: ISZERO
00001606: DUP1
00001607: ISZERO
00001608: PUSH2 0x1615
0000160b: JUMPI
0000160c: RETURNDATASIZE
0000160d: PUSH1 0x00
0000160f: DUP1
00001610: RETURNDATACOPY
00001611: RETURNDATASIZE
00001612: PUSH1 0x00
00001614: REVERT
00001615: JUMPDEST
00001616: POP
00001617: POP
00001618: POP
00001619: POP
0000161a: PUSH1 0x40
0000161c: MLOAD
0000161d: RETURNDATASIZE
0000161e: PUSH1 0x20
00001620: DUP2
00001621: LT
00001622: ISZERO
00001623: PUSH2 0x162b
00001626: JUMPI
00001627: PUSH1 0x00
00001629: DUP1
0000162a: REVERT
0000162b: JUMPDEST
0000162c: POP
0000162d: MLOAD
0000162e: PUSH1 0x08
00001630: SLOAD
00001631: SWAP1
00001632: SWAP2
00001633: POP
00001634: DUP2
00001635: GT
00001636: PUSH2 0x1673
00001639: JUMPI
0000163a: PUSH1 0x40
0000163c: MLOAD
0000163d: PUSH1 0xe5
0000163f: PUSH1 0x02
00001641: EXP
00001642: PUSH3 0x461bcd
00001646: MUL
00001647: DUP2
00001648: MSTORE
00001649: PUSH1 0x04
0000164b: ADD
0000164c: DUP1
0000164d: DUP1
0000164e: PUSH1 0x20
00001650: ADD
00001651: DUP3
00001652: DUP2
00001653: SUB
00001654: DUP3
00001655: MSTORE
00001656: PUSH1 0x24
00001658: DUP2
00001659: MSTORE
0000165a: PUSH1 0x20
0000165c: ADD
0000165d: DUP1
0000165e: PUSH2 0x210a
00001661: PUSH1 0x24
00001663: SWAP2
00001664: CODECOPY
00001665: PUSH1 0x40
00001667: ADD
00001668: SWAP2
00001669: POP
0000166a: POP
0000166b: PUSH1 0x40
0000166d: MLOAD
0000166e: DUP1
0000166f: SWAP2
00001670: SUB
00001671: SWAP1
00001672: REVERT
00001673: JUMPDEST
00001674: PUSH1 0x00
00001676: DUP1
00001677: PUSH2 0x167e
0000167a: PUSH2 0x0720
0000167d: JUMP
0000167e: JUMPDEST
0000167f: PUSH1 0x0a
00001681: SLOAD
00001682: PUSH1 0x40
00001684: DUP1
00001685: MLOAD
00001686: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
000016a7: DUP2
000016a8: MSTORE
000016a9: ADDRESS
000016aa: PUSH1 0x04
000016ac: DUP3
000016ad: ADD
000016ae: MSTORE
000016af: SWAP1
000016b0: MLOAD
000016b1: SWAP4
000016b2: SWAP6
000016b3: POP
000016b4: SWAP2
000016b5: SWAP4
000016b6: POP
000016b7: PUSH1 0x00
000016b9: SWAP3
000016ba: PUSH1 0x01
000016bc: PUSH1 0xa0
000016be: PUSH1 0x02
000016c0: EXP
000016c1: SUB
000016c2: SWAP1
000016c3: SWAP2
000016c4: AND
000016c5: SWAP2
000016c6: PUSH4 0x70a08231
000016cb: SWAP2
000016cc: PUSH1 0x24
000016ce: DUP1
000016cf: DUP4
000016d0: ADD
000016d1: SWAP3
000016d2: PUSH1 0x20
000016d4: SWAP3
000016d5: SWAP2
000016d6: SWAP1
000016d7: DUP3
000016d8: SWAP1
000016d9: SUB
000016da: ADD
000016db: DUP2
000016dc: DUP7
000016dd: DUP1
000016de: EXTCODESIZE
000016df: ISZERO
000016e0: DUP1
000016e1: ISZERO
000016e2: PUSH2 0x16ea
000016e5: JUMPI
000016e6: PUSH1 0x00
000016e8: DUP1
000016e9: REVERT
000016ea: JUMPDEST
000016eb: POP
000016ec: GAS
000016ed: STATICCALL
000016ee: ISZERO
000016ef: DUP1
000016f0: ISZERO
000016f1: PUSH2 0x16fe
000016f4: JUMPI
000016f5: RETURNDATASIZE
000016f6: PUSH1 0x00
000016f8: DUP1
000016f9: RETURNDATACOPY
000016fa: RETURNDATASIZE
000016fb: PUSH1 0x00
000016fd: REVERT
000016fe: JUMPDEST
000016ff: POP
00001700: POP
00001701: POP
00001702: POP
00001703: PUSH1 0x40
00001705: MLOAD
00001706: RETURNDATASIZE
00001707: PUSH1 0x20
00001709: DUP2
0000170a: LT
0000170b: ISZERO
0000170c: PUSH2 0x1714
0000170f: JUMPI
00001710: PUSH1 0x00
00001712: DUP1
00001713: REVERT
00001714: JUMPDEST
00001715: POP
00001716: MLOAD
00001717: SWAP1
00001718: POP
00001719: PUSH2 0x1720
0000171c: PUSH2 0x1d4d
0000171f: JUMP
00001720: JUMPDEST
00001721: ISZERO
00001722: PUSH2 0x187c
00001725: JUMPI
00001726: PUSH1 0x04
00001728: SLOAD
00001729: PUSH1 0x05
0000172b: DUP1
0000172c: SLOAD
0000172d: PUSH1 0x02
0000172f: SWAP1
00001730: SWAP3
00001731: MUL
00001732: SWAP1
00001733: SWAP2
00001734: ADD
00001735: SWAP1
00001736: SSTORE
00001737: PUSH1 0x00
00001739: DUP2
0000173a: GT
0000173b: ISZERO
0000173c: PUSH2 0x187c
0000173f: JUMPI
00001740: PUSH1 0x0a
00001742: SLOAD
00001743: PUSH1 0x0d
00001745: SLOAD
00001746: PUSH1 0x40
00001748: DUP1
00001749: MLOAD
0000174a: PUSH32 0x095ea7b300000000000000000000000000000000000000000000000000000000
0000176b: DUP2
0000176c: MSTORE
0000176d: PUSH1 0x01
0000176f: PUSH1 0xa0
00001771: PUSH1 0x02
00001773: EXP
00001774: SUB
00001775: SWAP3
00001776: DUP4
00001777: AND
00001778: PUSH1 0x04
0000177a: DUP3
0000177b: ADD
0000177c: MSTORE
0000177d: PUSH1 0x24
0000177f: DUP2
00001780: ADD
00001781: DUP6
00001782: SWAP1
00001783: MSTORE
00001784: SWAP1
00001785: MLOAD
00001786: SWAP2
00001787: SWAP1
00001788: SWAP3
00001789: AND
0000178a: SWAP2
0000178b: PUSH4 0x095ea7b3
00001790: SWAP2
00001791: PUSH1 0x44
00001793: DUP1
00001794: DUP4
00001795: ADD
00001796: SWAP3
00001797: PUSH1 0x20
00001799: SWAP3
0000179a: SWAP2
0000179b: SWAP1
0000179c: DUP3
0000179d: SWAP1
0000179e: SUB
0000179f: ADD
000017a0: DUP2
000017a1: PUSH1 0x00
000017a3: DUP8
000017a4: DUP1
000017a5: EXTCODESIZE
000017a6: ISZERO
000017a7: DUP1
000017a8: ISZERO
000017a9: PUSH2 0x17b1
000017ac: JUMPI
000017ad: PUSH1 0x00
000017af: DUP1
000017b0: REVERT
000017b1: JUMPDEST
000017b2: POP
000017b3: GAS
000017b4: CALL
000017b5: ISZERO
000017b6: DUP1
000017b7: ISZERO
000017b8: PUSH2 0x17c5
000017bb: JUMPI
000017bc: RETURNDATASIZE
000017bd: PUSH1 0x00
000017bf: DUP1
000017c0: RETURNDATACOPY
000017c1: RETURNDATASIZE
000017c2: PUSH1 0x00
000017c4: REVERT
000017c5: JUMPDEST
000017c6: POP
000017c7: POP
000017c8: POP
000017c9: POP
000017ca: PUSH1 0x40
000017cc: MLOAD
000017cd: RETURNDATASIZE
000017ce: PUSH1 0x20
000017d0: DUP2
000017d1: LT
000017d2: ISZERO
000017d3: PUSH2 0x17db
000017d6: JUMPI
000017d7: PUSH1 0x00
000017d9: DUP1
000017da: REVERT
000017db: JUMPDEST
000017dc: POP
000017dd: POP
000017de: PUSH1 0x0d
000017e0: SLOAD
000017e1: PUSH1 0x0a
000017e3: SLOAD
000017e4: PUSH1 0x40
000017e6: DUP1
000017e7: MLOAD
000017e8: PUSH32 0x47e7ef2400000000000000000000000000000000000000000000000000000000
00001809: DUP2
0000180a: MSTORE
0000180b: PUSH1 0x01
0000180d: PUSH1 0xa0
0000180f: PUSH1 0x02
00001811: EXP
00001812: SUB
00001813: SWAP3
00001814: DUP4
00001815: AND
00001816: PUSH1 0x04
00001818: DUP3
00001819: ADD
0000181a: MSTORE
0000181b: PUSH1 0x24
0000181d: DUP2
0000181e: ADD
0000181f: DUP6
00001820: SWAP1
00001821: MSTORE
00001822: SWAP1
00001823: MLOAD
00001824: SWAP2
00001825: SWAP1
00001826: SWAP3
00001827: AND
00001828: SWAP2
00001829: PUSH4 0x47e7ef24
0000182e: SWAP2
0000182f: PUSH1 0x44
00001831: DUP1
00001832: DUP4
00001833: ADD
00001834: SWAP3
00001835: PUSH1 0x20
00001837: SWAP3
00001838: SWAP2
00001839: SWAP1
0000183a: DUP3
0000183b: SWAP1
0000183c: SUB
0000183d: ADD
0000183e: DUP2
0000183f: PUSH1 0x00
00001841: DUP8
00001842: DUP1
00001843: EXTCODESIZE
00001844: ISZERO
00001845: DUP1
00001846: ISZERO
00001847: PUSH2 0x184f
0000184a: JUMPI
0000184b: PUSH1 0x00
0000184d: DUP1
0000184e: REVERT
0000184f: JUMPDEST
00001850: POP
00001851: GAS
00001852: CALL
00001853: ISZERO
00001854: DUP1
00001855: ISZERO
00001856: PUSH2 0x1863
00001859: JUMPI
0000185a: RETURNDATASIZE
0000185b: PUSH1 0x00
0000185d: DUP1
0000185e: RETURNDATACOPY
0000185f: RETURNDATASIZE
00001860: PUSH1 0x00
00001862: REVERT
00001863: JUMPDEST
00001864: POP
00001865: POP
00001866: POP
00001867: POP
00001868: PUSH1 0x40
0000186a: MLOAD
0000186b: RETURNDATASIZE
0000186c: PUSH1 0x20
0000186e: DUP2
0000186f: LT
00001870: ISZERO
00001871: PUSH2 0x1879
00001874: JUMPI
00001875: PUSH1 0x00
00001877: DUP1
00001878: REVERT
00001879: JUMPDEST
0000187a: POP
0000187b: POP
0000187c: JUMPDEST
0000187d: PUSH1 0x0d
0000187f: SLOAD
00001880: PUSH1 0x08
00001882: SLOAD
00001883: PUSH1 0x40
00001885: DUP1
00001886: MLOAD
00001887: PUSH1 0x01
00001889: PUSH1 0xa0
0000188b: PUSH1 0x02
0000188d: EXP
0000188e: SUB
0000188f: DUP7
00001890: DUP2
00001891: AND
00001892: PUSH1 0x24
00001894: DUP4
00001895: ADD
00001896: MSTORE
00001897: DUP8
00001898: DUP2
00001899: AND
0000189a: PUSH1 0x44
0000189c: DUP4
0000189d: ADD
0000189e: MSTORE
0000189f: ADDRESS
000018a0: PUSH1 0x64
000018a2: DUP4
000018a3: ADD
000018a4: MSTORE
000018a5: PUSH1 0x84
000018a7: DUP1
000018a8: DUP4
000018a9: ADD
000018aa: SWAP5
000018ab: SWAP1
000018ac: SWAP5
000018ad: MSTORE
000018ae: DUP3
000018af: MLOAD
000018b0: DUP1
000018b1: DUP4
000018b2: SUB
000018b3: SWAP1
000018b4: SWAP5
000018b5: ADD
000018b6: DUP5
000018b7: MSTORE
000018b8: PUSH1 0xa4
000018ba: SWAP1
000018bb: SWAP2
000018bc: ADD
000018bd: DUP3
000018be: MSTORE
000018bf: PUSH1 0x20
000018c1: DUP4
000018c2: ADD
000018c3: DUP1
000018c4: MLOAD
000018c5: PUSH1 0x01
000018c7: PUSH1 0xe0
000018c9: PUSH1 0x02
000018cb: EXP
000018cc: SUB
000018cd: AND
000018ce: PUSH32 0x65054e5500000000000000000000000000000000000000000000000000000000
000018ef: OR
000018f0: DUP2
000018f1: MSTORE
000018f2: SWAP2
000018f3: MLOAD
000018f4: DUP4
000018f5: MLOAD
000018f6: SWAP2
000018f7: SWAP1
000018f8: SWAP5
000018f9: AND
000018fa: SWAP4
000018fb: SWAP2
000018fc: DUP3
000018fd: SWAP2
000018fe: DUP1
000018ff: DUP4
00001900: DUP4
00001901: JUMPDEST
00001902: PUSH1 0x20
00001904: DUP4
00001905: LT
00001906: PUSH2 0x1920
00001909: JUMPI
0000190a: DUP1
0000190b: MLOAD
0000190c: DUP3
0000190d: MSTORE
0000190e: PUSH1 0x1f
00001910: NOT
00001911: SWAP1
00001912: SWAP3
00001913: ADD
00001914: SWAP2
00001915: PUSH1 0x20
00001917: SWAP2
00001918: DUP3
00001919: ADD
0000191a: SWAP2
0000191b: ADD
0000191c: PUSH2 0x1901
0000191f: JUMP
00001920: JUMPDEST
00001921: PUSH1 0x01
00001923: DUP4
00001924: PUSH1 0x20
00001926: SUB
00001927: PUSH2 0x0100
0000192a: EXP
0000192b: SUB
0000192c: DUP1
0000192d: NOT
0000192e: DUP3
0000192f: MLOAD
00001930: AND
00001931: DUP2
00001932: DUP5
00001933: MLOAD
00001934: AND
00001935: DUP1
00001936: DUP3
00001937: OR
00001938: DUP6
00001939: MSTORE
0000193a: POP
0000193b: POP
0000193c: POP
0000193d: POP
0000193e: POP
0000193f: POP
00001940: SWAP1
00001941: POP
00001942: ADD
00001943: SWAP2
00001944: POP
00001945: POP
00001946: PUSH1 0x00
00001948: PUSH1 0x40
0000194a: MLOAD
0000194b: DUP1
0000194c: DUP4
0000194d: SUB
0000194e: DUP2
0000194f: PUSH1 0x00
00001951: DUP7
00001952: GAS
00001953: CALL
00001954: SWAP2
00001955: POP
00001956: POP
00001957: RETURNDATASIZE
00001958: DUP1
00001959: PUSH1 0x00
0000195b: DUP2
0000195c: EQ
0000195d: PUSH2 0x1982
00001960: JUMPI
00001961: PUSH1 0x40
00001963: MLOAD
00001964: SWAP2
00001965: POP
00001966: PUSH1 0x1f
00001968: NOT
00001969: PUSH1 0x3f
0000196b: RETURNDATASIZE
0000196c: ADD
0000196d: AND
0000196e: DUP3
0000196f: ADD
00001970: PUSH1 0x40
00001972: MSTORE
00001973: RETURNDATASIZE
00001974: DUP3
00001975: MSTORE
00001976: RETURNDATASIZE
00001977: PUSH1 0x00
00001979: PUSH1 0x20
0000197b: DUP5
0000197c: ADD
0000197d: RETURNDATACOPY
0000197e: PUSH2 0x1987
00001981: JUMP
00001982: JUMPDEST
00001983: PUSH1 0x60
00001985: SWAP2
00001986: POP
00001987: JUMPDEST
00001988: POP
00001989: POP
0000198a: PUSH1 0x0d
0000198c: SLOAD
0000198d: PUSH1 0x40
0000198f: DUP1
00001990: MLOAD
00001991: PUSH32 0xc23f001f00000000000000000000000000000000000000000000000000000000
000019b2: DUP2
000019b3: MSTORE
000019b4: PUSH1 0x01
000019b6: PUSH1 0xa0
000019b8: PUSH1 0x02
000019ba: EXP
000019bb: SUB
000019bc: DUP8
000019bd: DUP2
000019be: AND
000019bf: PUSH1 0x04
000019c1: DUP4
000019c2: ADD
000019c3: MSTORE
000019c4: ADDRESS
000019c5: PUSH1 0x24
000019c7: DUP4
000019c8: ADD
000019c9: MSTORE
000019ca: SWAP2
000019cb: MLOAD
000019cc: PUSH1 0x00
000019ce: SWAP5
000019cf: POP
000019d0: SWAP2
000019d1: SWAP1
000019d2: SWAP3
000019d3: AND
000019d4: SWAP2
000019d5: PUSH4 0xc23f001f
000019da: SWAP2
000019db: PUSH1 0x44
000019dd: DUP1
000019de: DUP4
000019df: ADD
000019e0: SWAP3
000019e1: PUSH1 0x20
000019e3: SWAP3
000019e4: SWAP2
000019e5: SWAP1
000019e6: DUP3
000019e7: SWAP1
000019e8: SUB
000019e9: ADD
000019ea: DUP2
000019eb: DUP7
000019ec: DUP1
000019ed: EXTCODESIZE
000019ee: ISZERO
000019ef: DUP1
000019f0: ISZERO
000019f1: PUSH2 0x19f9
000019f4: JUMPI
000019f5: PUSH1 0x00
000019f7: DUP1
000019f8: REVERT
000019f9: JUMPDEST
000019fa: POP
000019fb: GAS
000019fc: STATICCALL
000019fd: ISZERO
000019fe: DUP1
000019ff: ISZERO
00001a00: PUSH2 0x1a0d
00001a03: JUMPI
00001a04: RETURNDATASIZE
00001a05: PUSH1 0x00
00001a07: DUP1
00001a08: RETURNDATACOPY
00001a09: RETURNDATASIZE
00001a0a: PUSH1 0x00
00001a0c: REVERT
00001a0d: JUMPDEST
00001a0e: POP
00001a0f: POP
00001a10: POP
00001a11: POP
00001a12: PUSH1 0x40
00001a14: MLOAD
00001a15: RETURNDATASIZE
00001a16: PUSH1 0x20
00001a18: DUP2
00001a19: LT
00001a1a: ISZERO
00001a1b: PUSH2 0x1a23
00001a1e: JUMPI
00001a1f: PUSH1 0x00
00001a21: DUP1
00001a22: REVERT
00001a23: JUMPDEST
00001a24: POP
00001a25: MLOAD
00001a26: SWAP1
00001a27: POP
00001a28: PUSH2 0x1a2f
00001a2b: PUSH2 0x1d4d
00001a2e: JUMP
00001a2f: JUMPDEST
00001a30: ISZERO
00001a31: PUSH2 0x1a3a
00001a34: JUMPI
00001a35: PUSH1 0x06
00001a37: DUP2
00001a38: SWAP1
00001a39: SSTORE
00001a3a: JUMPDEST
00001a3b: PUSH1 0x0d
00001a3d: SLOAD
00001a3e: PUSH1 0x40
00001a40: DUP1
00001a41: MLOAD
00001a42: PUSH32 0x59f96ae500000000000000000000000000000000000000000000000000000000
00001a63: DUP2
00001a64: MSTORE
00001a65: PUSH1 0x01
00001a67: PUSH1 0xa0
00001a69: PUSH1 0x02
00001a6b: EXP
00001a6c: SUB
00001a6d: DUP8
00001a6e: DUP2
00001a6f: AND
00001a70: PUSH1 0x04
00001a72: DUP4
00001a73: ADD
00001a74: MSTORE
00001a75: DUP7
00001a76: DUP2
00001a77: AND
00001a78: PUSH1 0x24
00001a7a: DUP4
00001a7b: ADD
00001a7c: MSTORE
00001a7d: PUSH1 0x00
00001a7f: PUSH1 0x44
00001a81: DUP4
00001a82: ADD
00001a83: DUP2
00001a84: SWAP1
00001a85: MSTORE
00001a86: PUSH1 0x64
00001a88: DUP4
00001a89: ADD
00001a8a: DUP7
00001a8b: SWAP1
00001a8c: MSTORE
00001a8d: DUP4
00001a8e: MLOAD
00001a8f: SWAP2
00001a90: SWAP1
00001a91: SWAP5
00001a92: AND
00001a93: SWAP4
00001a94: PUSH4 0x59f96ae5
00001a99: SWAP4
00001a9a: PUSH1 0x84
00001a9c: DUP1
00001a9d: DUP6
00001a9e: ADD
00001a9f: SWAP5
00001aa0: SWAP2
00001aa1: SWAP4
00001aa2: SWAP3
00001aa3: SWAP2
00001aa4: DUP4
00001aa5: SWAP1
00001aa6: SUB
00001aa7: ADD
00001aa8: SWAP1
00001aa9: DUP3
00001aaa: SWAP1
00001aab: DUP8
00001aac: DUP1
00001aad: EXTCODESIZE
00001aae: ISZERO
00001aaf: DUP1
00001ab0: ISZERO
00001ab1: PUSH2 0x1ab9
00001ab4: JUMPI
00001ab5: PUSH1 0x00
00001ab7: DUP1
00001ab8: REVERT
00001ab9: JUMPDEST
00001aba: POP
00001abb: GAS
00001abc: CALL
00001abd: ISZERO
00001abe: DUP1
00001abf: ISZERO
00001ac0: PUSH2 0x1acd
00001ac3: JUMPI
00001ac4: RETURNDATASIZE
00001ac5: PUSH1 0x00
00001ac7: DUP1
00001ac8: RETURNDATACOPY
00001ac9: RETURNDATASIZE
00001aca: PUSH1 0x00
00001acc: REVERT
00001acd: JUMPDEST
00001ace: POP
00001acf: POP
00001ad0: POP
00001ad1: POP
00001ad2: PUSH1 0x40
00001ad4: MLOAD
00001ad5: RETURNDATASIZE
00001ad6: PUSH1 0x40
00001ad8: DUP2
00001ad9: LT
00001ada: ISZERO
00001adb: PUSH2 0x1ae3
00001ade: JUMPI
00001adf: PUSH1 0x00
00001ae1: DUP1
00001ae2: REVERT
00001ae3: JUMPDEST
00001ae4: POP
00001ae5: MLOAD
00001ae6: PUSH1 0x08
00001ae8: SSTORE
00001ae9: POP
00001aea: POP
00001aeb: PUSH1 0x09
00001aed: DUP1
00001aee: SLOAD
00001aef: PUSH1 0x01
00001af1: ADD
00001af2: SWAP1
00001af3: SSTORE
00001af4: POP
00001af5: POP
00001af6: POP
00001af7: JUMP
00001af8: JUMPDEST
00001af9: PUSH2 0x1b00
00001afc: PUSH2 0x0c31
00001aff: JUMP
00001b00: JUMPDEST
00001b01: ISZERO
00001b02: ISZERO
00001b03: PUSH2 0x1b0b
00001b06: JUMPI
00001b07: PUSH1 0x00
00001b09: DUP1
00001b0a: REVERT
00001b0b: JUMPDEST
00001b0c: PUSH2 0x1b14
00001b0f: DUP2
00001b10: PUSH2 0x1fd4
00001b13: JUMP
00001b14: JUMPDEST
00001b15: POP
00001b16: JUMP
00001b17: JUMPDEST
00001b18: PUSH1 0x0b
00001b1a: SLOAD
00001b1b: PUSH1 0x01
00001b1d: PUSH1 0xa0
00001b1f: PUSH1 0x02
00001b21: EXP
00001b22: SUB
00001b23: AND
00001b24: DUP2
00001b25: JUMP
00001b26: JUMPDEST
00001b27: PUSH1 0x06
00001b29: SLOAD
00001b2a: DUP2
00001b2b: JUMP
00001b2c: JUMPDEST
00001b2d: PUSH1 0x00
00001b2f: PUSH1 0x04
00001b31: SLOAD
00001b32: PUSH1 0x00
00001b34: EQ
00001b35: ISZERO
00001b36: PUSH2 0x1b41
00001b39: JUMPI
00001b3a: POP
00001b3b: PUSH1 0x00
00001b3d: PUSH2 0x077e
00001b40: JUMP
00001b41: JUMPDEST
00001b42: PUSH1 0x04
00001b44: SLOAD
00001b45: PUSH1 0x20
00001b47: DUP4
00001b48: ADD
00001b49: MLOAD
00001b4a: PUSH1 0x06
00001b4c: SLOAD
00001b4d: PUSH2 0x1b5b
00001b50: SWAP2
00001b51: PUSH4 0xffffffff
00001b56: PUSH2 0x2051
00001b59: AND
00001b5a: JUMP
00001b5b: JUMPDEST
00001b5c: DUP2
00001b5d: ISZERO
00001b5e: ISZERO
00001b5f: PUSH2 0x1b64
00001b62: JUMPI
00001b63: INVALID
00001b64: JUMPDEST
00001b65: DIV
00001b66: SWAP3
00001b67: SWAP2
00001b68: POP
00001b69: POP
00001b6a: JUMP
00001b6b: JUMPDEST
00001b6c: PUSH2 0x1b7d
00001b6f: DUP4
00001b70: PUSH1 0x01
00001b72: PUSH1 0xa0
00001b74: PUSH1 0x02
00001b76: EXP
00001b77: SUB
00001b78: AND
00001b79: PUSH2 0x2085
00001b7c: JUMP
00001b7d: JUMPDEST
00001b7e: ISZERO
00001b7f: ISZERO
00001b80: PUSH2 0x1b88
00001b83: JUMPI
00001b84: PUSH1 0x00
00001b86: DUP1
00001b87: REVERT
00001b88: JUMPDEST
00001b89: PUSH1 0x40
00001b8b: DUP1
00001b8c: MLOAD
00001b8d: DUP1
00001b8e: DUP3
00001b8f: ADD
00001b90: DUP3
00001b91: MSTORE
00001b92: PUSH1 0x19
00001b94: DUP2
00001b95: MSTORE
00001b96: PUSH32 0x7472616e7366657228616464726573732c75696e743235362900000000000000
00001bb7: PUSH1 0x20
00001bb9: SWAP2
00001bba: DUP3
00001bbb: ADD
00001bbc: MSTORE
00001bbd: DUP2
00001bbe: MLOAD
00001bbf: PUSH1 0x01
00001bc1: PUSH1 0xa0
00001bc3: PUSH1 0x02
00001bc5: EXP
00001bc6: SUB
00001bc7: DUP6
00001bc8: DUP2
00001bc9: AND
00001bca: PUSH1 0x24
00001bcc: DUP4
00001bcd: ADD
00001bce: MSTORE
00001bcf: PUSH1 0x44
00001bd1: DUP1
00001bd2: DUP4
00001bd3: ADD
00001bd4: DUP7
00001bd5: SWAP1
00001bd6: MSTORE
00001bd7: DUP5
00001bd8: MLOAD
00001bd9: DUP1
00001bda: DUP5
00001bdb: SUB
00001bdc: SWAP1
00001bdd: SWAP2
00001bde: ADD
00001bdf: DUP2
00001be0: MSTORE
00001be1: PUSH1 0x64
00001be3: SWAP1
00001be4: SWAP3
00001be5: ADD
00001be6: DUP5
00001be7: MSTORE
00001be8: SWAP2
00001be9: DUP2
00001bea: ADD
00001beb: DUP1
00001bec: MLOAD
00001bed: PUSH1 0x01
00001bef: PUSH1 0xe0
00001bf1: PUSH1 0x02
00001bf3: EXP
00001bf4: SUB
00001bf5: AND
00001bf6: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001c17: OR
00001c18: DUP2
00001c19: MSTORE
00001c1a: SWAP3
00001c1b: MLOAD
00001c1c: DUP2
00001c1d: MLOAD
00001c1e: PUSH1 0x00
00001c20: SWAP5
00001c21: PUSH1 0x60
00001c23: SWAP5
00001c24: DUP10
00001c25: AND
00001c26: SWAP4
00001c27: SWAP3
00001c28: SWAP2
00001c29: DUP3
00001c2a: SWAP2
00001c2b: SWAP1
00001c2c: DUP1
00001c2d: DUP4
00001c2e: DUP4
00001c2f: JUMPDEST
00001c30: PUSH1 0x20
00001c32: DUP4
00001c33: LT
00001c34: PUSH2 0x1c4e
00001c37: JUMPI
00001c38: DUP1
00001c39: MLOAD
00001c3a: DUP3
00001c3b: MSTORE
00001c3c: PUSH1 0x1f
00001c3e: NOT
00001c3f: SWAP1
00001c40: SWAP3
00001c41: ADD
00001c42: SWAP2
00001c43: PUSH1 0x20
00001c45: SWAP2
00001c46: DUP3
00001c47: ADD
00001c48: SWAP2
00001c49: ADD
00001c4a: PUSH2 0x1c2f
00001c4d: JUMP
00001c4e: JUMPDEST
00001c4f: PUSH1 0x01
00001c51: DUP4
00001c52: PUSH1 0x20
00001c54: SUB
00001c55: PUSH2 0x0100
00001c58: EXP
00001c59: SUB
00001c5a: DUP1
00001c5b: NOT
00001c5c: DUP3
00001c5d: MLOAD
00001c5e: AND
00001c5f: DUP2
00001c60: DUP5
00001c61: MLOAD
00001c62: AND
00001c63: DUP1
00001c64: DUP3
00001c65: OR
00001c66: DUP6
00001c67: MSTORE
00001c68: POP
00001c69: POP
00001c6a: POP
00001c6b: POP
00001c6c: POP
00001c6d: POP
00001c6e: SWAP1
00001c6f: POP
00001c70: ADD
00001c71: SWAP2
00001c72: POP
00001c73: POP
00001c74: PUSH1 0x00
00001c76: PUSH1 0x40
00001c78: MLOAD
00001c79: DUP1
00001c7a: DUP4
00001c7b: SUB
00001c7c: DUP2
00001c7d: PUSH1 0x00
00001c7f: DUP7
00001c80: GAS
00001c81: CALL
00001c82: SWAP2
00001c83: POP
00001c84: POP
00001c85: RETURNDATASIZE
00001c86: DUP1
00001c87: PUSH1 0x00
00001c89: DUP2
00001c8a: EQ
00001c8b: PUSH2 0x1cb0
00001c8e: JUMPI
00001c8f: PUSH1 0x40
00001c91: MLOAD
00001c92: SWAP2
00001c93: POP
00001c94: PUSH1 0x1f
00001c96: NOT
00001c97: PUSH1 0x3f
00001c99: RETURNDATASIZE
00001c9a: ADD
00001c9b: AND
00001c9c: DUP3
00001c9d: ADD
00001c9e: PUSH1 0x40
00001ca0: MSTORE
00001ca1: RETURNDATASIZE
00001ca2: DUP3
00001ca3: MSTORE
00001ca4: RETURNDATASIZE
00001ca5: PUSH1 0x00
00001ca7: PUSH1 0x20
00001ca9: DUP5
00001caa: ADD
00001cab: RETURNDATACOPY
00001cac: PUSH2 0x1cb5
00001caf: JUMP
00001cb0: JUMPDEST
00001cb1: PUSH1 0x60
00001cb3: SWAP2
00001cb4: POP
00001cb5: JUMPDEST
00001cb6: POP
00001cb7: SWAP2
00001cb8: POP
00001cb9: SWAP2
00001cba: POP
00001cbb: DUP2
00001cbc: ISZERO
00001cbd: ISZERO
00001cbe: PUSH2 0x1cc6
00001cc1: JUMPI
00001cc2: PUSH1 0x00
00001cc4: DUP1
00001cc5: REVERT
00001cc6: JUMPDEST
00001cc7: DUP1
00001cc8: MLOAD
00001cc9: ISZERO
00001cca: DUP1
00001ccb: PUSH2 0x1d3b
00001cce: JUMPI
00001ccf: POP
00001cd0: DUP1
00001cd1: MLOAD
00001cd2: PUSH1 0x20
00001cd4: EQ
00001cd5: DUP1
00001cd6: ISZERO
00001cd7: PUSH2 0x1d3b
00001cda: JUMPI
00001cdb: POP
00001cdc: DUP1
00001cdd: PUSH1 0x1f
00001cdf: DUP2
00001ce0: MLOAD
00001ce1: DUP2
00001ce2: LT
00001ce3: ISZERO
00001ce4: ISZERO
00001ce5: PUSH2 0x1cea
00001ce8: JUMPI
00001ce9: INVALID
00001cea: JUMPDEST
00001ceb: PUSH1 0x20
00001ced: SWAP2
00001cee: ADD
00001cef: ADD
00001cf0: MLOAD
00001cf1: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
00001d12: SWAP1
00001d13: DUP2
00001d14: SWAP1
00001d15: DIV
00001d16: MUL
00001d17: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
00001d38: AND
00001d39: ISZERO
00001d3a: ISZERO
00001d3b: JUMPDEST
00001d3c: ISZERO
00001d3d: ISZERO
00001d3e: PUSH2 0x1d46
00001d41: JUMPI
00001d42: PUSH1 0x00
00001d44: DUP1
00001d45: REVERT
00001d46: JUMPDEST
00001d47: POP
00001d48: POP
00001d49: POP
00001d4a: POP
00001d4b: POP
00001d4c: JUMP
00001d4d: JUMPDEST
00001d4e: PUSH1 0x09
00001d50: SLOAD
00001d51: PUSH1 0x01
00001d53: AND
00001d54: ISZERO
00001d55: SWAP1
00001d56: JUMP
00001d57: JUMPDEST
00001d58: PUSH1 0x00
00001d5a: PUSH1 0x05
00001d5c: SLOAD
00001d5d: PUSH1 0x00
00001d5f: EQ
00001d60: ISZERO
00001d61: PUSH2 0x1d6c
00001d64: JUMPI
00001d65: POP
00001d66: PUSH1 0x00
00001d68: PUSH2 0x077e
00001d6b: JUMP
00001d6c: JUMPDEST
00001d6d: PUSH1 0x00
00001d6f: DUP3
00001d70: PUSH1 0x00
00001d72: ADD
00001d73: MLOAD
00001d74: PUSH1 0x09
00001d76: SLOAD
00001d77: SUB
00001d78: SWAP1
00001d79: POP
00001d7a: PUSH1 0x05
00001d7c: SLOAD
00001d7d: PUSH2 0x1da5
00001d80: DUP3
00001d81: PUSH2 0x1d99
00001d84: DUP7
00001d85: PUSH1 0x20
00001d87: ADD
00001d88: MLOAD
00001d89: PUSH1 0x07
00001d8b: SLOAD
00001d8c: PUSH2 0x2051
00001d8f: SWAP1
00001d90: SWAP2
00001d91: SWAP1
00001d92: PUSH4 0xffffffff
00001d97: AND
00001d98: JUMP
00001d99: JUMPDEST
00001d9a: SWAP1
00001d9b: PUSH4 0xffffffff
00001da0: PUSH2 0x2051
00001da3: AND
00001da4: JUMP
00001da5: JUMPDEST
00001da6: DUP2
00001da7: ISZERO
00001da8: ISZERO
00001da9: PUSH2 0x1dae
00001dac: JUMPI
00001dad: INVALID
00001dae: JUMPDEST
00001daf: DIV
00001db0: SWAP4
00001db1: SWAP3
00001db2: POP
00001db3: POP
00001db4: POP
00001db5: JUMP
00001db6: JUMPDEST
00001db7: PUSH1 0x00
00001db9: PUSH1 0x06
00001dbb: SLOAD
00001dbc: PUSH1 0x00
00001dbe: EQ
00001dbf: ISZERO
00001dc0: PUSH2 0x1dca
00001dc3: JUMPI
00001dc4: POP
00001dc5: DUP1
00001dc6: PUSH2 0x077e
00001dc9: JUMP
00001dca: JUMPDEST
00001dcb: PUSH1 0x06
00001dcd: SLOAD
00001dce: PUSH1 0x04
00001dd0: SLOAD
00001dd1: PUSH2 0x1de0
00001dd4: SWAP1
00001dd5: DUP5
00001dd6: PUSH4 0xffffffff
00001ddb: PUSH2 0x2051
00001dde: AND
00001ddf: JUMP
00001de0: JUMPDEST
00001de1: DUP2
00001de2: ISZERO
00001de3: ISZERO
00001de4: PUSH2 0x1de9
00001de7: JUMPI
00001de8: INVALID
00001de9: JUMPDEST
00001dea: DIV
00001deb: SWAP1
00001dec: POP
00001ded: PUSH2 0x077e
00001df0: JUMP
00001df1: JUMPDEST
00001df2: PUSH2 0x1e03
00001df5: DUP5
00001df6: PUSH1 0x01
00001df8: PUSH1 0xa0
00001dfa: PUSH1 0x02
00001dfc: EXP
00001dfd: SUB
00001dfe: AND
00001dff: PUSH2 0x2085
00001e02: JUMP
00001e03: JUMPDEST
00001e04: ISZERO
00001e05: ISZERO
00001e06: PUSH2 0x1e0e
00001e09: JUMPI
00001e0a: PUSH1 0x00
00001e0c: DUP1
00001e0d: REVERT
00001e0e: JUMPDEST
00001e0f: PUSH1 0x00
00001e11: PUSH1 0x60
00001e13: DUP6
00001e14: PUSH1 0x01
00001e16: PUSH1 0xa0
00001e18: PUSH1 0x02
00001e1a: EXP
00001e1b: SUB
00001e1c: AND
00001e1d: PUSH1 0x60
00001e1f: PUSH1 0x40
00001e21: MLOAD
00001e22: SWAP1
00001e23: DUP2
00001e24: ADD
00001e25: PUSH1 0x40
00001e27: MSTORE
00001e28: DUP1
00001e29: PUSH1 0x25
00001e2b: DUP2
00001e2c: MSTORE
00001e2d: PUSH1 0x20
00001e2f: ADD
00001e30: PUSH2 0x20e5
00001e33: PUSH1 0x25
00001e35: SWAP2
00001e36: CODECOPY
00001e37: DUP1
00001e38: MLOAD
00001e39: PUSH1 0x20
00001e3b: SWAP2
00001e3c: DUP3
00001e3d: ADD
00001e3e: KECCAK256
00001e3f: PUSH1 0x40
00001e41: DUP1
00001e42: MLOAD
00001e43: PUSH1 0x01
00001e45: PUSH1 0xa0
00001e47: PUSH1 0x02
00001e49: EXP
00001e4a: SUB
00001e4b: DUP1
00001e4c: DUP12
00001e4d: AND
00001e4e: PUSH1 0x24
00001e50: DUP4
00001e51: ADD
00001e52: MSTORE
00001e53: DUP10
00001e54: AND
00001e55: PUSH1 0x44
00001e57: DUP3
00001e58: ADD
00001e59: MSTORE
00001e5a: PUSH1 0x64
00001e5c: DUP1
00001e5d: DUP3
00001e5e: ADD
00001e5f: DUP10
00001e60: SWAP1
00001e61: MSTORE
00001e62: DUP3
00001e63: MLOAD
00001e64: DUP1
00001e65: DUP4
00001e66: SUB
00001e67: SWAP1
00001e68: SWAP2
00001e69: ADD
00001e6a: DUP2
00001e6b: MSTORE
00001e6c: PUSH1 0x84
00001e6e: SWAP1
00001e6f: SWAP2
00001e70: ADD
00001e71: DUP3
00001e72: MSTORE
00001e73: SWAP3
00001e74: DUP4
00001e75: ADD
00001e76: DUP1
00001e77: MLOAD
00001e78: PUSH1 0x01
00001e7a: PUSH1 0xe0
00001e7c: PUSH1 0x02
00001e7e: EXP
00001e7f: SUB
00001e80: AND
00001e81: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001ea2: SWAP1
00001ea3: SWAP4
00001ea4: AND
00001ea5: SWAP3
00001ea6: SWAP1
00001ea7: SWAP3
00001ea8: OR
00001ea9: DUP3
00001eaa: MSTORE
00001eab: MLOAD
00001eac: DUP3
00001ead: MLOAD
00001eae: SWAP1
00001eaf: SWAP2
00001eb0: DUP3
00001eb1: SWAP2
00001eb2: DUP1
00001eb3: DUP4
00001eb4: DUP4
00001eb5: JUMPDEST
00001eb6: PUSH1 0x20
00001eb8: DUP4
00001eb9: LT
00001eba: PUSH2 0x1ed4
00001ebd: JUMPI
00001ebe: DUP1
00001ebf: MLOAD
00001ec0: DUP3
00001ec1: MSTORE
00001ec2: PUSH1 0x1f
00001ec4: NOT
00001ec5: SWAP1
00001ec6: SWAP3
00001ec7: ADD
00001ec8: SWAP2
00001ec9: PUSH1 0x20
00001ecb: SWAP2
00001ecc: DUP3
00001ecd: ADD
00001ece: SWAP2
00001ecf: ADD
00001ed0: PUSH2 0x1eb5
00001ed3: JUMP
00001ed4: JUMPDEST
00001ed5: PUSH1 0x01
00001ed7: DUP4
00001ed8: PUSH1 0x20
00001eda: SUB
00001edb: PUSH2 0x0100
00001ede: EXP
00001edf: SUB
00001ee0: DUP1
00001ee1: NOT
00001ee2: DUP3
00001ee3: MLOAD
00001ee4: AND
00001ee5: DUP2
00001ee6: DUP5
00001ee7: MLOAD
00001ee8: AND
00001ee9: DUP1
00001eea: DUP3
00001eeb: OR
00001eec: DUP6
00001eed: MSTORE
00001eee: POP
00001eef: POP
00001ef0: POP
00001ef1: POP
00001ef2: POP
00001ef3: POP
00001ef4: SWAP1
00001ef5: POP
00001ef6: ADD
00001ef7: SWAP2
00001ef8: POP
00001ef9: POP
00001efa: PUSH1 0x00
00001efc: PUSH1 0x40
00001efe: MLOAD
00001eff: DUP1
00001f00: DUP4
00001f01: SUB
00001f02: DUP2
00001f03: PUSH1 0x00
00001f05: DUP7
00001f06: GAS
00001f07: CALL
00001f08: SWAP2
00001f09: POP
00001f0a: POP
00001f0b: RETURNDATASIZE
00001f0c: DUP1
00001f0d: PUSH1 0x00
00001f0f: DUP2
00001f10: EQ
00001f11: PUSH2 0x1f36
00001f14: JUMPI
00001f15: PUSH1 0x40
00001f17: MLOAD
00001f18: SWAP2
00001f19: POP
00001f1a: PUSH1 0x1f
00001f1c: NOT
00001f1d: PUSH1 0x3f
00001f1f: RETURNDATASIZE
00001f20: ADD
00001f21: AND
00001f22: DUP3
00001f23: ADD
00001f24: PUSH1 0x40
00001f26: MSTORE
00001f27: RETURNDATASIZE
00001f28: DUP3
00001f29: MSTORE
00001f2a: RETURNDATASIZE
00001f2b: PUSH1 0x00
00001f2d: PUSH1 0x20
00001f2f: DUP5
00001f30: ADD
00001f31: RETURNDATACOPY
00001f32: PUSH2 0x1f3b
00001f35: JUMP
00001f36: JUMPDEST
00001f37: PUSH1 0x60
00001f39: SWAP2
00001f3a: POP
00001f3b: JUMPDEST
00001f3c: POP
00001f3d: SWAP2
00001f3e: POP
00001f3f: SWAP2
00001f40: POP
00001f41: DUP2
00001f42: ISZERO
00001f43: ISZERO
00001f44: PUSH2 0x1f4c
00001f47: JUMPI
00001f48: PUSH1 0x00
00001f4a: DUP1
00001f4b: REVERT
00001f4c: JUMPDEST
00001f4d: DUP1
00001f4e: MLOAD
00001f4f: ISZERO
00001f50: DUP1
00001f51: PUSH2 0x1fc1
00001f54: JUMPI
00001f55: POP
00001f56: DUP1
00001f57: MLOAD
00001f58: PUSH1 0x20
00001f5a: EQ
00001f5b: DUP1
00001f5c: ISZERO
00001f5d: PUSH2 0x1fc1
00001f60: JUMPI
00001f61: POP
00001f62: DUP1
00001f63: PUSH1 0x1f
00001f65: DUP2
00001f66: MLOAD
00001f67: DUP2
00001f68: LT
00001f69: ISZERO
00001f6a: ISZERO
00001f6b: PUSH2 0x1f70
00001f6e: JUMPI
00001f6f: INVALID
00001f70: JUMPDEST
00001f71: PUSH1 0x20
00001f73: SWAP2
00001f74: ADD
00001f75: ADD
00001f76: MLOAD
00001f77: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000
00001f98: SWAP1
00001f99: DUP2
00001f9a: SWAP1
00001f9b: DIV
00001f9c: MUL
00001f9d: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
00001fbe: AND
00001fbf: ISZERO
00001fc0: ISZERO
00001fc1: JUMPDEST
00001fc2: ISZERO
00001fc3: ISZERO
00001fc4: PUSH2 0x1fcc
00001fc7: JUMPI
00001fc8: PUSH1 0x00
00001fca: DUP1
00001fcb: REVERT
00001fcc: JUMPDEST
00001fcd: POP
00001fce: POP
00001fcf: POP
00001fd0: POP
00001fd1: POP
00001fd2: POP
00001fd3: JUMP
00001fd4: JUMPDEST
00001fd5: PUSH1 0x01
00001fd7: PUSH1 0xa0
00001fd9: PUSH1 0x02
00001fdb: EXP
00001fdc: SUB
00001fdd: DUP2
00001fde: AND
00001fdf: ISZERO
00001fe0: ISZERO
00001fe1: PUSH2 0x1fe9
00001fe4: JUMPI
00001fe5: PUSH1 0x00
00001fe7: DUP1
00001fe8: REVERT
00001fe9: JUMPDEST
00001fea: PUSH1 0x00
00001fec: DUP1
00001fed: SLOAD
00001fee: PUSH1 0x40
00001ff0: MLOAD
00001ff1: PUSH1 0x01
00001ff3: PUSH1 0xa0
00001ff5: PUSH1 0x02
00001ff7: EXP
00001ff8: SUB
00001ff9: DUP1
00001ffa: DUP6
00001ffb: AND
00001ffc: SWAP4
00001ffd: SWAP3
00001ffe: AND
00001fff: SWAP2
00002000: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00002021: SWAP2
00002022: LOG3
00002023: PUSH1 0x00
00002025: DUP1
00002026: SLOAD
00002027: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000203c: NOT
0000203d: AND
0000203e: PUSH1 0x01
00002040: PUSH1 0xa0
00002042: PUSH1 0x02
00002044: EXP
00002045: SUB
00002046: SWAP3
00002047: SWAP1
00002048: SWAP3
00002049: AND
0000204a: SWAP2
0000204b: SWAP1
0000204c: SWAP2
0000204d: OR
0000204e: SWAP1
0000204f: SSTORE
00002050: JUMP
00002051: JUMPDEST
00002052: PUSH1 0x00
00002054: DUP3
00002055: ISZERO
00002056: ISZERO
00002057: PUSH2 0x2062
0000205a: JUMPI
0000205b: POP
0000205c: PUSH1 0x00
0000205e: PUSH2 0x207f
00002061: JUMP
00002062: JUMPDEST
00002063: DUP3
00002064: DUP3
00002065: MUL
00002066: DUP3
00002067: DUP5
00002068: DUP3
00002069: DUP2
0000206a: ISZERO
0000206b: ISZERO
0000206c: PUSH2 0x2071
0000206f: JUMPI
00002070: INVALID
00002071: JUMPDEST
00002072: DIV
00002073: EQ
00002074: PUSH2 0x207c
00002077: JUMPI
00002078: PUSH1 0x00
0000207a: DUP1
0000207b: REVERT
0000207c: JUMPDEST
0000207d: SWAP1
0000207e: POP
0000207f: JUMPDEST
00002080: SWAP3
00002081: SWAP2
00002082: POP
00002083: POP
00002084: JUMP
00002085: JUMPDEST
00002086: PUSH1 0x00
00002088: SWAP1
00002089: EXTCODESIZE
0000208a: GT
0000208b: SWAP1
0000208c: JUMP
0000208d: JUMPDEST
0000208e: PUSH1 0x40
00002090: DUP1
00002091: MLOAD
00002092: DUP1
00002093: DUP3
00002094: ADD
00002095: SWAP1
00002096: SWAP2
00002097: MSTORE
00002098: PUSH1 0x00
0000209a: DUP1
0000209b: DUP3
0000209c: MSTORE
0000209d: PUSH1 0x20
0000209f: DUP3
000020a0: ADD
000020a1: MSTORE
000020a2: SWAP1
000020a3: JUMP
000020a4: JUMPDEST
000020a5: POP
000020a6: DUP1
000020a7: SLOAD
000020a8: PUSH1 0x00
000020aa: DUP3
000020ab: SSTORE
000020ac: PUSH1 0x02
000020ae: MUL
000020af: SWAP1
000020b0: PUSH1 0x00
000020b2: MSTORE
000020b3: PUSH1 0x20
000020b5: PUSH1 0x00
000020b7: KECCAK256
000020b8: SWAP1
000020b9: DUP2
000020ba: ADD
000020bb: SWAP1
000020bc: PUSH2 0x1b14
000020bf: SWAP2
000020c0: SWAP1
000020c1: PUSH2 0x071d
000020c4: SWAP2
000020c5: SWAP1
000020c6: JUMPDEST
000020c7: DUP1
000020c8: DUP3
000020c9: GT
000020ca: ISZERO
000020cb: PUSH2 0x20e0
000020ce: JUMPI
000020cf: PUSH1 0x00
000020d1: DUP1
000020d2: DUP3
000020d3: SSTORE
000020d4: PUSH1 0x01
000020d6: DUP3
000020d7: ADD
000020d8: SSTORE
000020d9: PUSH1 0x02
000020db: ADD
000020dc: PUSH2 0x20c6
000020df: JUMP
000020e0: JUMPDEST
000020e1: POP
000020e2: SWAP1
000020e3: JUMP
000020e4: INVALID
000020e5: PUSH21 0x72616e7366657246726f6d28616464726573732c61
000020fb: PUSH5 0x6472657373
00002101: UNKNOWN(0x2C)
00002102: PUSH22 0x696e743235362948617320746f207761697420666f72
00002119: KECCAK256
0000211a: PUSH15 0x65772061756374696f6e20746f2073
0000212a: PUSH21 0x61727473656e6465722068617320616c7265616479
00002140: KECCAK256
00002141: PUSH24 0x697468647261776e2066756e6473a165627a7a72305820e4
0000215a: DUP9
0000215b: SSTORE
0000215c: LOG4
0000215d: PC
0000215e: UNKNOWN(0xDE)
0000215f: UNKNOWN(0xE5)
00002160: SLT
00002161: UNKNOWN(0x1F)
00002162: SWAP3
00002163: UNKNOWN(0xD5)
00002164: PUSH15 0x848f7b830c460ee51d9e76f6b67ae7
00002174: UNKNOWN(0xE9)
00002175: UNKNOWN(0x0C)
00002176: CODESIZE
00002177: UNKNOWN(0xC3)
00002178: MSTORE
00002179: STOP
0000217a: UNKNOWN(0x29)

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: 0x4500a5e0a6a64c69d7fd4addf70a5238612a45b5fdc205f9b36ccc48b4184ba6
call_targets: 0xf1d29a124622c06f7026f35553543c833102183b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4500a5e0a6a64c69d7fd4addf70a5238612a45b5fdc205f9b36ccc48b4184ba6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf1d29a124622c06f7026f35553543c833102183b"
    ],
    "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": "0xefc7f429",
            "selector": "0xefc7f429",
            "calldata_variants": [
                "0xefc7f429",
                "0xefc7f4290000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf4eb08db",
            "selector": "0xf4eb08db",
            "calldata_variants": [
                "0xf4eb08db",
                "0xf4eb08db0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6153ccd",
            "selector": "0xf6153ccd",
            "calldata_variants": [
                "0xf6153ccd",
                "0xf6153ccd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe21b7f4b",
            "selector": "0xe21b7f4b",
            "calldata_variants": [
                "0xe21b7f4b",
                "0xe21b7f4b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe3a69f7d",
            "selector": "0xe3a69f7d",
            "calldata_variants": [
                "0xe3a69f7d",
                "0xe3a69f7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe4b43184",
            "selector": "0xe4b43184",
            "calldata_variants": [
                "0xe4b43184",
                "0xe4b431840000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea568322",
            "selector": "0xea568322",
            "calldata_variants": [
                "0xea568322",
                "0xea5683220000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2331,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3721,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3870,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 10,
    "guards_detected": [],
    "untrusted_call_count": 10
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x4500a5e0a6a64c69d7fd4addf70a5238612a45b5fdc205f9b36ccc48b4184ba6
call_targets: 0xf1d29a124622c06f7026f35553543c833102183b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4500a5e0a6a64c69d7fd4addf70a5238612a45b5fdc205f9b36ccc48b4184ba6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf1d29a124622c06f7026f35553543c833102183b"
    ],
    "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": "0xefc7f429",
            "selector": "0xefc7f429",
            "calldata_variants": [
                "0xefc7f429",
                "0xefc7f4290000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf4eb08db",
            "selector": "0xf4eb08db",
            "calldata_variants": [
                "0xf4eb08db",
                "0xf4eb08db0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6153ccd",
            "selector": "0xf6153ccd",
            "calldata_variants": [
                "0xf6153ccd",
                "0xf6153ccd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe21b7f4b",
            "selector": "0xe21b7f4b",
            "calldata_variants": [
                "0xe21b7f4b",
                "0xe21b7f4b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe3a69f7d",
            "selector": "0xe3a69f7d",
            "calldata_variants": [
                "0xe3a69f7d",
                "0xe3a69f7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe4b43184",
            "selector": "0xe4b43184",
            "calldata_variants": [
                "0xe4b43184",
                "0xe4b431840000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xea568322",
            "selector": "0xea568322",
            "calldata_variants": [
                "0xea568322",
                "0xea5683220000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2331,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3721,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3870,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 10,
    "guards_detected": []
}
medium other codex Share issuance ignores secondary-token holdings when totalDeposit is zero 75 no
view
evidence_json
{
    "evidence": "`deposit()` mints shares via `calculatePoolShares(amount)`, which returns `amount` when `totalDeposit == 0`. `totalDeposit` is only updated from deposit-token balances, so it can be zero while value sits in secondary tokens or DX auctions.",
    "locations": [
        "contracts/DxMgnPool.sol:1602",
        "contracts/DxMgnPool.sol:1672",
        "contracts/DxMgnPool.sol:1693",
        "contracts/DxMgnPool.sol:1775"
    ],
    "recommendation": "Price new shares against full pool NAV (deposit + secondary + DX balances), or disallow deposits while the pool is not fully in the deposit token, or snapshot pool value from DX before minting shares.",
    "exploit_scenario": "An attacker waits until the pool has sold deposit tokens and `totalDeposit` is zero while value sits in secondary tokens. They deposit a small amount and receive shares at a 1:1 price. When the pool later converts secondary tokens back to deposit tokens, the attacker withdraws a disproportionately large share of the final deposit and MGN, diluting earlier participants."
}
low math codex Unchecked arithmetic on pool totals can overflow and corrupt accounting 65 no
view
evidence_json
{
    "evidence": "Pool totals are updated with unchecked `+=` and multiplication in Solidity 0.5.",
    "locations": [
        "contracts/DxMgnPool.sol:1612",
        "contracts/DxMgnPool.sol:1613",
        "contracts/DxMgnPool.sol:1662"
    ],
    "recommendation": "Use SafeMath for all arithmetic on totals (replace `+=` and `2 * totalPoolShares` with SafeMath operations).",
    "exploit_scenario": "A user deposits an extremely large amount (or a token with a huge supply), causing `totalPoolShares`, `totalDeposit`, or `totalPoolSharesCummulative` to wrap in Solidity 0.5. This corrupts share math and can lead to incorrect payouts or stuck withdrawals."
}
low other codex Unchecked low-level DX claim can silently fail and strand funds 65 no
view
evidence_json
{
    "evidence": "`address(dx).call(...)` is used to invoke `claimSellerFunds` without checking the returned success flag.",
    "locations": [
        "contracts/DxMgnPool.sol:1669",
        "contracts/DxMgnPool.sol:1689"
    ],
    "recommendation": "Use the typed interface and `require` success/return values, or record failures and block state transitions until claims succeed.",
    "exploit_scenario": "If the DX contract reverts or changes behavior (e.g., proxy upgrade), the low-level `call` to `claimSellerFunds` can fail silently. The pool continues, updates state, and allows withdrawals based on incomplete balances, leaving unclaimed funds locked in DX and underpaying participants."
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 17
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 14
}