bb9485bb-c626-4e0d-948e-2eb1a347a1d3
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 14
}
|