46a061cb-b215-4d54-b156-a9ace98d5799
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 |
|---|---|---|---|---|
| 30183 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 93697 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 93698 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 93699 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 93700 | capability.graph | complete | 1 / 3 | 1 week ago |
| 93701 | detector.run | complete | 1 / 3 | 1 week ago |
| 93702 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:633730] OpenAI Codex v0.77.0 (research preview)
[codex:633730] --------
[codex:633730] workdir: /tmp/codex-multi-79boh7kp
[codex:633730] model: gpt-5.2-codex
[codex:633730] provider: openai
[codex:633730] approval: never
[codex:633730] sandbox: read-only
[codex:633730] reasoning effort: xhigh
[codex:633730] reasoning summaries: auto
[codex:633730] session id: 019b5b44-011c-7291-84bb-60c89d16e3f1
[codex:633730] --------
[codex:633730] user
[codex:633730] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:633730] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:633730] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:633730]
[codex:633730] Scope rules:
[codex:633730] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:633730] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:633730]
[codex:633730] Output MUST be valid JSON matching the provided schema.
[codex:633730] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:633730] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:633730]
[codex:633730] Output constraints (IMPORTANT):
[codex:633730] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:633730] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:633730] mcp startup: no servers
[codex:633730]
[codex:633730] thinking
[codex:633730] **Preparing to review instructions and audit**
[codex:633730] exec
[codex:633730] /bin/bash -lc ls in /tmp/codex-multi-79boh7kp succeeded in 5ms:
[codex:633730] AUDIT_BUNDLE.txt
[codex:633730] codex-output-schema.json
[codex:633730] contracts
[codex:633730]
[codex:633730] thinking
[codex:633730] **Checking AUDIT_BUNDLE**
[codex:633730] exec
[codex:633730] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-79boh7kp succeeded in 5ms:
[codex:633730] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:633730]
[codex:633730] ================================================================================
[codex:633730] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:633730] ================================================================================
[codex:633730] // SPDX-License-Identifier: MIT
[codex:633730] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
[codex:633730]
[codex:633730] pragma solidity ^0.8.0;
[codex:633730]
[codex:633730] import "../utils/Context.sol";
[codex:633730]
[codex:633730] /**
[codex:633730] * @dev Contract module which provides a basic access control mechanism, where
[codex:633730] * there is an account (an owner) that can be granted exclusive access to
[codex:633730] * specific functions.
[codex:633730] *
[codex:633730] * By default, the owner account will be the one that deploys the contract. This
[codex:633730] * can later be changed with {transferOwnership}.
[codex:633730] *
[codex:633730]
[codex:633730] thinking
[codex:633730] **Parsing first-party contracts**
[codex:633730]
[codex:633730] I want to identify and parse all first-party contracts from the audit bundle since it includes third-party code like OpenZeppelin. I'll focus on files under contracts/contracts by searching for "FILE: contracts/contracts" with ripgrep to gather relevant contract names and isolate those I need to analyze.
[codex:633730] exec
[codex:633730] /bin/bash -lc 'rg -n "''^FILE: contracts/contracts" AUDIT_BUNDLE.txt' in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] 589:FILE: contracts/contracts/interfaces/ILooksRareToken.sol
[codex:633730] 603:FILE: contracts/contracts/tokenStaking/FeeSharingSystem.sol
[codex:633730] 943:FILE: contracts/contracts/tokenStaking/TokenDistributor.sol
[codex:633730]
[codex:633730] thinking
[codex:633730] **Identifying key components to extract**
[codex:633730] exec
[codex:633730] /bin/bash -lc "sed -n '589,942p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-79boh7kp succeeded in 5ms:
[codex:633730] FILE: contracts/contracts/interfaces/ILooksRareToken.sol
[codex:633730] ================================================================================
[codex:633730] // SPDX-License-Identifier: MIT
[codex:633730] pragma solidity ^0.8.0;
[codex:633730]
[codex:633730] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:633730]
[codex:633730] interface ILooksRareToken is IERC20 {
[codex:633730] function SUPPLY_CAP() external view returns (uint256);
[codex:633730]
[codex:633730] function mint(address account, uint256 amount) external returns (bool);
[codex:633730] }
[codex:633730]
[codex:633730] ================================================================================
[codex:633730] FILE: contracts/contracts/tokenStaking/FeeSharingSystem.sol
[codex:633730] ================================================================================
[codex:633730] // SPDX-License-Identifier: MIT
[codex:633730] pragma solidity ^0.8.0;
[codex:633730]
[codex:633730] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:633730]
[codex:633730]
[codex:633730]
[codex:633730] thinking
[codex:633730] **Analyzing contract security and reentrancy risks**
[codex:633730]
[codex:633730] I'm auditing FeeSharingSystem and TokenDistributor for vulnerabilities like reentrancy and unchecked calls. I’m carefully checking interactions, token approvals, state updates, owner controls, and reward minting logic to spot possible edge cases or misconfigurations that might cause issues or exploits. There’s a lot to consider around external calls, reward logic, and permission assumptions!
[codex:633730] thinking
[codex:633730] **Identifying logic and access control nuances**
[codex:633730]
[codex:633730] I'm examining TokenDistributor’s open-call design, constructor array length bugs, reward accounting quirks, and share price calculations. There are subtle issues with owner-controlled reward resets possibly skipping accrued rewards, and potential rounding or donation effects on shares. Despite some risks in admin actions and unchecked approve calls, core functions seem safeguarded by nonReentrant guards and expected patterns.
[codex:633730] thinking
[codex:633730] **Flagging unchecked return values and reentrancy concerns**
[codex:633730]
[codex:633730] I’m spotting unchecked returns from `approve` and `mint` calls that could cause silent failures or accounting mismatches. There’s also potential cross-contract reentrancy risks involving token transfers, though nonReentrant guards help. These reflect lower-severity issues but are worth noting for robustness.
[codex:633730] exec
[codex:633730] /bin/bash -lc "sed -n '943,1341p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] FILE: contracts/contracts/tokenStaking/TokenDistributor.sol
[codex:633730] ================================================================================
[codex:633730] // SPDX-License-Identifier: MIT
[codex:633730] pragma solidity ^0.8.0;
[codex:633730]
[codex:633730] import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
[codex:633730] import {IERC20, SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:633730]
[codex:633730] import {ILooksRareToken} from "../interfaces/ILooksRareToken.sol";
[codex:633730]
[codex:633730] /**
[codex:633730] * @title TokenDistributor
[codex:633730] * @notice It handles the distribution of LOOKS token.
[codex:633730] * It auto-adjusts block rewards over a set number of periods.
[codex:633730] */
[codex:633730] contract TokenDistributor is ReentrancyGuard {
[codex:633730] using SafeERC20 for IERC20;
[codex:633730] using SafeERC20 for ILooksRareToken;
[codex:633730]
[codex:633730] struct StakingPeriod {
[codex:633730]
[codex:633730]
[codex:633730] thinking
[codex:633730] **Analyzing reward accounting discrepancies**
[codex:633730] thinking
[codex:633730] **Evaluating reward update timing bug**
[codex:633730]
[codex:633730] I’m noticing that when the owner calls updateRewards, it resets lastUpdateBlock without updating rewardPerTokenStored, causing accrued rewards between the previous lastUpdateBlock and this call to be lost for all users who didn’t interact. This is a subtle but impactful accounting bug that can reduce user rewards unintentionally, affecting fairness though not exploitable by outsiders. It highlights a centralization risk in how reward periods are managed.
[codex:633730] exec
[codex:633730] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:633730]
[codex:633730] thinking
[codex:633730] **Evaluating potential vulnerabilities and planning findings**
[codex:633730] exec
[codex:633730] /bin/bash -lc "nl -ba contracts/contracts/tokenStaking/FeeSharingSystem.sol | sed -n '1,260p'" in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] 1 // SPDX-License-Identifier: MIT
[codex:633730] 2 pragma solidity ^0.8.0;
[codex:633730] 3
[codex:633730] 4 import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:633730] 5 import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
[codex:633730] 6 import {IERC20, SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:633730] 7
[codex:633730] 8 import {TokenDistributor} from "./TokenDistributor.sol";
[codex:633730] 9
[codex:633730] 10 /**
[codex:633730] 11 * @title FeeSharingSystem
[codex:633730] 12 * @notice It handles the distribution of fees using
[codex:633730] 13 * WETH along with the auto-compounding of LOOKS.
[codex:633730] 14 */
[codex:633730] 15 contract FeeSharingSystem is ReentrancyGuard, Ownable {
[codex:633730] 16 using SafeERC20 for IERC20;
[codex:633730] 17
[codex:633730] 18 struct UserInfo {
[codex:633730] 19 uint256 shares; // shares of token staked
[codex:633730] 20 uint256 userRewardPerTokenPaid; // user reward per token paid
[codex:633730]
[codex:633730] thinking
[codex:633730] **Noting lines for updateRewards and allowance checks**
[codex:633730] exec
[codex:633730] /bin/bash -lc "nl -ba contracts/contracts/tokenStaking/TokenDistributor.sol | sed -n '150,260p'" in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] 150
[codex:633730] 151 uint256 pendingRewards;
[codex:633730] 152
[codex:633730] 153 // If not new deposit, calculate pending rewards (for auto-compounding)
[codex:633730] 154 if (userInfo[msg.sender].amount > 0) {
[codex:633730] 155 pendingRewards =
[codex:633730] 156 ((userInfo[msg.sender].amount * accTokenPerShare) / PRECISION_FACTOR) -
[codex:633730] 157 userInfo[msg.sender].rewardDebt;
[codex:633730] 158 }
[codex:633730] 159
[codex:633730] 160 // Adjust user information
[codex:633730] 161 userInfo[msg.sender].amount += (amount + pendingRewards);
[codex:633730] 162 userInfo[msg.sender].rewardDebt = (userInfo[msg.sender].amount * accTokenPerShare) / PRECISION_FACTOR;
[codex:633730] 163
[codex:633730] 164 // Increase totalAmountStaked
[codex:633730] 165 totalAmountStaked += (amount + pendingRewards);
[codex:633730] 166
[codex:633730] 167 emit Deposit(msg.sender, amount, pendingRewards);
[codex:633730] 168 }
[codex:633730] 169
[codex:633730]
[codex:633730] thinking
[codex:633730] **Noting need for line numbers**
[codex:633730] exec
[codex:633730] /bin/bash -lc "nl -ba contracts/contracts/tokenStaking/TokenDistributor.sol | sed -n '300,420p'" in /tmp/codex-multi-79boh7kp succeeded in 6ms:
[codex:633730] 300
[codex:633730] 301 uint256 adjustedTokenPerShare = accTokenPerShare +
[codex:633730] 302 (tokenRewardForStaking * PRECISION_FACTOR) /
[codex:633730] 303 totalAmountStaked;
[codex:633730] 304
[codex:633730] 305 return (userInfo[user].amount * adjustedTokenPerShare) / PRECISION_FACTOR - userInfo[user].rewardDebt;
[codex:633730] 306 } else {
[codex:633730] 307 return (userInfo[user].amount * accTokenPerShare) / PRECISION_FACTOR - userInfo[user].rewardDebt;
[codex:633730] 308 }
[codex:633730] 309 }
[codex:633730] 310
[codex:633730] 311 /**
[codex:633730] 312 * @notice Update reward variables of the pool
[codex:633730] 313 */
[codex:633730] 314 function _updatePool() internal {
[codex:633730] 315 if (block.number <= lastRewardBlock) {
[codex:633730] 316 return;
[codex:633730] 317 }
[codex:633730] 318
[codex:633730] 319 if (totalAmountStaked == 0) {
[codex:633730]
[codex:633730] thinking
[codex:633730] **Summarizing audit findings and crafting detailed report**
[codex:633730]
[codex:633730] I'm organizing two main findings from the audit: a medium-severity math issue where reward accrual is skipped due to missing updates in `updateRewards`, and a low-severity issue with unchecked return values on token approve and mint operations. I'll include clear exploit scenarios, recommendations, evidence strings referencing exact file paths and line numbers, and prepare the final JSON output to capture these points precisely.
[codex:633730] codex
[codex:633730] {"no_findings":false,"summary":"Found one medium-severity accounting issue in FeeSharingSystem reward updates and one low-severity unchecked token return value issue.","findings":[{"severity":"medium","category":"math","title":"Reward accrual can be skipped when updateRewards resets lastUpdateBlock","exploit_scenario":"The owner (or a compromised reward distributor) calls updateRewards mid-period before any user interaction. Because rewardPerTokenStored is not updated and lastUpdateBlock is reset to the current block, rewards accrued since the previous lastUpdateBlock are discarded, reducing user payouts for that interval.","recommendation":"Update rewardPerTokenStored before changing lastUpdateBlock (e.g., call _updateReward(address(0)) or inline rewardPerTokenStored = _rewardPerToken(); lastUpdateBlock = _lastRewardBlock();) and consider restricting updateRewards to period boundaries.","evidence":"updateRewards adjusts currentRewardPerBlock and then sets lastUpdateBlock/periodEndBlock without updating rewardPerTokenStored, so accrued rewards between the prior lastUpdateBlock and this call are skipped.","locations":["contracts/contracts/tokenStaking/FeeSharingSystem.sol:182","contracts/contracts/tokenStaking/FeeSharingSystem.sol:192"]},{"severity":"low","category":"other","title":"Unchecked return values on token operations can mask failures","exploit_scenario":"If LOOKS token operations return false (paused/non-standard token), the contracts continue execution. FeeSharingSystem may proceed despite a failed approve, and TokenDistributor may advance reward state even if minting to tokenSplitter failed, silently skipping expected token flows.","recommendation":"Use SafeERC20 helpers (safeApprove/safeIncreaseAllowance) or explicitly require approve to succeed; require mint to tokenSplitter to succeed or revert to avoid silent reward-schedule divergence.","evidence":"FeeSharingSystem calls approve without checking the return value, and TokenDistributor calls mint(tokenSplitter, ...) without checking the returned bool.","locations":["contracts/contracts/tokenStaking/FeeSharingSystem.sol:256","contracts/contracts/tokenStaking/TokenDistributor.sol:357"]}]}
[codex:633730] tokens used
[codex:633730] 49,743
[codex:633730] {"no_findings":false,"summary":"Found one medium-severity accounting issue in FeeSharingSystem reward updates and one low-severity unchecked token return value issue.","findings":[{"severity":"medium","category":"math","title":"Reward accrual can be skipped when updateRewards resets lastUpdateBlock","exploit_scenario":"The owner (or a compromised reward distributor) calls updateRewards mid-period before any user interaction. Because rewardPerTokenStored is not updated and lastUpdateBlock is reset to the current block, rewards accrued since the previous lastUpdateBlock are discarded, reducing user payouts for that interval.","recommendation":"Update rewardPerTokenStored before changing lastUpdateBlock (e.g., call _updateReward(address(0)) or inline rewardPerTokenStored = _rewardPerToken(); lastUpdateBlock = _lastRewardBlock();) and consider restricting updateRewards to period boundaries.","evidence":"updateRewards adjusts currentRewardPerBlock and then sets lastUpdateBlock/periodEndBlock without updating rewardPerTokenStored, so accrued rewards between the prior lastUpdateBlock and this call are skipped.","locations":["contracts/contracts/tokenStaking/FeeSharingSystem.sol:182","contracts/contracts/tokenStaking/FeeSharingSystem.sol:192"]},{"severity":"low","category":"other","title":"Unchecked return values on token operations can mask failures","exploit_scenario":"If LOOKS token operations return false (paused/non-standard token), the contracts continue execution. FeeSharingSystem may proceed despite a failed approve, and TokenDistributor may advance reward state even if minting to tokenSplitter failed, silently skipping expected token flows.","recommendation":"Use SafeERC20 helpers (safeApprove/safeIncreaseAllowance) or explicitly require approve to succeed; require mint to tokenSplitter to succeed or revert to avoid silent reward-schedule divergence.","evidence":"FeeSharingSystem calls approve without checking the return value, and TokenDistributor calls mint(tokenSplitter, ...) without checking the returned bool.","locations":["contracts/contracts/tokenStaking/FeeSharingSystem.sol:256","contracts/contracts/tokenStaking/TokenDistributor.sol:357"]}]}
{
"codex": {
"ran_at": "2025-12-26T15:31:43.243813+00:00",
"returncode": 0
},
"summary": "Found one medium-severity accounting issue in FeeSharingSystem reward updates and one low-severity unchecked token return value issue.",
"raw_final": {
"summary": "Found one medium-severity accounting issue in FeeSharingSystem reward updates and one low-severity unchecked token return value issue.",
"findings": [
{
"title": "Reward accrual can be skipped when updateRewards resets lastUpdateBlock",
"category": "math",
"evidence": "updateRewards adjusts currentRewardPerBlock and then sets lastUpdateBlock/periodEndBlock without updating rewardPerTokenStored, so accrued rewards between the prior lastUpdateBlock and this call are skipped.",
"severity": "medium",
"locations": [
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:182",
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:192"
],
"recommendation": "Update rewardPerTokenStored before changing lastUpdateBlock (e.g., call _updateReward(address(0)) or inline rewardPerTokenStored = _rewardPerToken(); lastUpdateBlock = _lastRewardBlock();) and consider restricting updateRewards to period boundaries.",
"exploit_scenario": "The owner (or a compromised reward distributor) calls updateRewards mid-period before any user interaction. Because rewardPerTokenStored is not updated and lastUpdateBlock is reset to the current block, rewards accrued since the previous lastUpdateBlock are discarded, reducing user payouts for that interval."
},
{
"title": "Unchecked return values on token operations can mask failures",
"category": "other",
"evidence": "FeeSharingSystem calls approve without checking the return value, and TokenDistributor calls mint(tokenSplitter, ...) without checking the returned bool.",
"severity": "low",
"locations": [
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:256",
"contracts/contracts/tokenStaking/TokenDistributor.sol:357"
],
"recommendation": "Use SafeERC20 helpers (safeApprove/safeIncreaseAllowance) or explicitly require approve to succeed; require mint to tokenSplitter to succeed or revert to avoid silent reward-schedule divergence.",
"exploit_scenario": "If LOOKS token operations return false (paused/non-standard token), the contracts continue execution. FeeSharingSystem may proceed despite a failed approve, and TokenDistributor may advance reward state even if minting to tokenSplitter failed, silently skipping expected token flows."
}
],
"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 0x018d 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x715018a6 00000026: GT 00000027: PUSH2 0x00e3 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xab5e32af 00000031: GT 00000032: PUSH2 0x008c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xdf136d65 0000003c: GT 0000003d: PUSH2 0x0066 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xdf136d65 00000047: EQ 00000048: PUSH2 0x0350 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xf2fde38b 00000052: EQ 00000053: PUSH2 0x0359 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf7c618c1 0000005d: EQ 0000005e: PUSH2 0x036c 00000061: JUMPI 00000062: PUSH1 0x00 00000064: DUP1 00000065: REVERT 00000066: JUMPDEST 00000067: DUP1 00000068: PUSH4 0xab5e32af 0000006d: EQ 0000006e: PUSH2 0x0325 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0xcb4aec61 00000078: EQ 00000079: PUSH2 0x0338 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xccd34cd5 00000083: EQ 00000084: PUSH2 0x0341 00000087: JUMPI 00000088: PUSH1 0x00 0000008a: DUP1 0000008b: REVERT 0000008c: JUMPDEST 0000008d: DUP1 0000008e: PUSH4 0x9a408321 00000093: GT 00000094: PUSH2 0x00bd 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x9a408321 0000009e: EQ 0000009f: PUSH2 0x0301 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xa218141b 000000a9: EQ 000000aa: PUSH2 0x0314 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xa9f8d181 000000b4: EQ 000000b5: PUSH2 0x031d 000000b8: JUMPI 000000b9: PUSH1 0x00 000000bb: DUP1 000000bc: REVERT 000000bd: JUMPDEST 000000be: DUP1 000000bf: PUSH4 0x715018a6 000000c4: EQ 000000c5: PUSH2 0x02c8 000000c8: JUMPI 000000c9: DUP1 000000ca: PUSH4 0x8da5cb5b 000000cf: EQ 000000d0: PUSH2 0x02d0 000000d3: JUMPI 000000d4: DUP1 000000d5: PUSH4 0x97e50818 000000da: EQ 000000db: PUSH2 0x02ee 000000de: JUMPI 000000df: PUSH1 0x00 000000e1: DUP1 000000e2: REVERT 000000e3: JUMPDEST 000000e4: DUP1 000000e5: PUSH4 0x38d07436 000000ea: GT 000000eb: PUSH2 0x0145 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x442da82f 000000f5: GT 000000f6: PUSH2 0x011f 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x442da82f 00000100: EQ 00000101: PUSH2 0x02af 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x4641257d 0000010b: EQ 0000010c: PUSH2 0x02b8 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x6de26e38 00000116: EQ 00000117: PUSH2 0x02c0 0000011a: JUMPI 0000011b: PUSH1 0x00 0000011d: DUP1 0000011e: REVERT 0000011f: JUMPDEST 00000120: DUP1 00000121: PUSH4 0x38d07436 00000126: EQ 00000127: PUSH2 0x028a 0000012a: JUMPI 0000012b: DUP1 0000012c: PUSH4 0x3a98ef39 00000131: EQ 00000132: PUSH2 0x029d 00000135: JUMPI 00000136: DUP1 00000137: PUSH4 0x40d2abae 0000013c: EQ 0000013d: PUSH2 0x02a6 00000140: JUMPI 00000141: PUSH1 0x00 00000143: DUP1 00000144: REVERT 00000145: JUMPDEST 00000146: DUP1 00000147: PUSH4 0x1959a002 0000014c: GT 0000014d: PUSH2 0x0176 00000150: JUMPI 00000151: DUP1 00000152: PUSH4 0x1959a002 00000157: EQ 00000158: PUSH2 0x0204 0000015b: JUMPI 0000015c: DUP1 0000015d: PUSH4 0x1c1c6fe5 00000162: EQ 00000163: PUSH2 0x024e 00000166: JUMPI 00000167: DUP1 00000168: PUSH4 0x36db9fb2 0000016d: EQ 0000016e: PUSH2 0x0263 00000171: JUMPI 00000172: PUSH1 0x00 00000174: DUP1 00000175: REVERT 00000176: JUMPDEST 00000177: DUP1 00000178: PUSH4 0x097aad10 0000017d: EQ 0000017e: PUSH2 0x0192 00000181: JUMPI 00000182: DUP1 00000183: PUSH4 0x18a6bc32 00000188: EQ 00000189: PUSH2 0x01b8 0000018c: JUMPI 0000018d: JUMPDEST 0000018e: PUSH1 0x00 00000190: DUP1 00000191: REVERT 00000192: JUMPDEST 00000193: PUSH2 0x01a5 00000196: PUSH2 0x01a0 00000199: CALLDATASIZE 0000019a: PUSH1 0x04 0000019c: PUSH2 0x1e69 0000019f: JUMP 000001a0: JUMPDEST 000001a1: PUSH2 0x0393 000001a4: JUMP 000001a5: JUMPDEST 000001a6: PUSH1 0x40 000001a8: MLOAD 000001a9: SWAP1 000001aa: DUP2 000001ab: MSTORE 000001ac: PUSH1 0x20 000001ae: ADD 000001af: JUMPDEST 000001b0: PUSH1 0x40 000001b2: MLOAD 000001b3: DUP1 000001b4: SWAP2 000001b5: SUB 000001b6: SWAP1 000001b7: RETURN 000001b8: JUMPDEST 000001b9: PUSH2 0x01df 000001bc: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 000001dd: DUP2 000001de: JUMP 000001df: JUMPDEST 000001e0: PUSH1 0x40 000001e2: MLOAD 000001e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001f8: SWAP1 000001f9: SWAP2 000001fa: AND 000001fb: DUP2 000001fc: MSTORE 000001fd: PUSH1 0x20 000001ff: ADD 00000200: PUSH2 0x01af 00000203: JUMP 00000204: JUMPDEST 00000205: PUSH2 0x0233 00000208: PUSH2 0x0212 0000020b: CALLDATASIZE 0000020c: PUSH1 0x04 0000020e: PUSH2 0x1e69 00000211: JUMP 00000212: JUMPDEST 00000213: PUSH1 0x08 00000215: PUSH1 0x20 00000217: MSTORE 00000218: PUSH1 0x00 0000021a: SWAP1 0000021b: DUP2 0000021c: MSTORE 0000021d: PUSH1 0x40 0000021f: SWAP1 00000220: KECCAK256 00000221: DUP1 00000222: SLOAD 00000223: PUSH1 0x01 00000225: DUP3 00000226: ADD 00000227: SLOAD 00000228: PUSH1 0x02 0000022a: SWAP1 0000022b: SWAP3 0000022c: ADD 0000022d: SLOAD 0000022e: SWAP1 0000022f: SWAP2 00000230: SWAP1 00000231: DUP4 00000232: JUMP 00000233: JUMPDEST 00000234: PUSH1 0x40 00000236: DUP1 00000237: MLOAD 00000238: SWAP4 00000239: DUP5 0000023a: MSTORE 0000023b: PUSH1 0x20 0000023d: DUP5 0000023e: ADD 0000023f: SWAP3 00000240: SWAP1 00000241: SWAP3 00000242: MSTORE 00000243: SWAP1 00000244: DUP3 00000245: ADD 00000246: MSTORE 00000247: PUSH1 0x60 00000249: ADD 0000024a: PUSH2 0x01af 0000024d: JUMP 0000024e: JUMPDEST 0000024f: PUSH2 0x0261 00000252: PUSH2 0x025c 00000255: CALLDATASIZE 00000256: PUSH1 0x04 00000258: PUSH2 0x1e9f 0000025b: JUMP 0000025c: JUMPDEST 0000025d: PUSH2 0x03a4 00000260: JUMP 00000261: JUMPDEST 00000262: STOP 00000263: JUMPDEST 00000264: PUSH2 0x01df 00000267: PUSH32 0x000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e 00000288: DUP2 00000289: JUMP 0000028a: JUMPDEST 0000028b: PUSH2 0x0261 0000028e: PUSH2 0x0298 00000291: CALLDATASIZE 00000292: PUSH1 0x04 00000294: PUSH2 0x1ef2 00000297: JUMP 00000298: JUMPDEST 00000299: PUSH2 0x043c 0000029c: JUMP 0000029d: JUMPDEST 0000029e: PUSH2 0x01a5 000002a1: PUSH1 0x07 000002a3: SLOAD 000002a4: DUP2 000002a5: JUMP 000002a6: JUMPDEST 000002a7: PUSH2 0x01a5 000002aa: PUSH1 0x03 000002ac: SLOAD 000002ad: DUP2 000002ae: JUMP 000002af: JUMPDEST 000002b0: PUSH2 0x01a5 000002b3: PUSH1 0x05 000002b5: SLOAD 000002b6: DUP2 000002b7: JUMP 000002b8: JUMPDEST 000002b9: PUSH2 0x0261 000002bc: PUSH2 0x056b 000002bf: JUMP 000002c0: JUMPDEST 000002c1: PUSH2 0x01a5 000002c4: PUSH2 0x079a 000002c7: JUMP 000002c8: JUMPDEST 000002c9: PUSH2 0x0261 000002cc: PUSH2 0x0966 000002cf: JUMP 000002d0: JUMPDEST 000002d1: PUSH1 0x01 000002d3: SLOAD 000002d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002e9: AND 000002ea: PUSH2 0x01df 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH2 0x0261 000002f2: PUSH2 0x02fc 000002f5: CALLDATASIZE 000002f6: PUSH1 0x04 000002f8: PUSH2 0x1f22 000002fb: JUMP 000002fc: JUMPDEST 000002fd: PUSH2 0x09f3 00000300: JUMP 00000301: JUMPDEST 00000302: PUSH2 0x0261 00000305: PUSH2 0x030f 00000308: CALLDATASIZE 00000309: PUSH1 0x04 0000030b: PUSH2 0x1ef2 0000030e: JUMP 0000030f: JUMPDEST 00000310: PUSH2 0x0b1f 00000313: JUMP 00000314: JUMPDEST 00000315: PUSH2 0x01a5 00000318: PUSH1 0x04 0000031a: SLOAD 0000031b: DUP2 0000031c: JUMP 0000031d: JUMPDEST 0000031e: PUSH2 0x01a5 00000321: PUSH2 0x1012 00000324: JUMP 00000325: JUMPDEST 00000326: PUSH2 0x01a5 00000329: PUSH2 0x0333 0000032c: CALLDATASIZE 0000032d: PUSH1 0x04 0000032f: PUSH2 0x1e69 00000332: JUMP 00000333: JUMPDEST 00000334: PUSH2 0x1021 00000337: JUMP 00000338: JUMPDEST 00000339: PUSH2 0x01a5 0000033c: PUSH1 0x02 0000033e: SLOAD 0000033f: DUP2 00000340: JUMP 00000341: JUMPDEST 00000342: PUSH2 0x01a5 00000345: PUSH8 0x0de0b6b3a7640000 0000034e: DUP2 0000034f: JUMP 00000350: JUMPDEST 00000351: PUSH2 0x01a5 00000354: PUSH1 0x06 00000356: SLOAD 00000357: DUP2 00000358: JUMP 00000359: JUMPDEST 0000035a: PUSH2 0x0261 0000035d: PUSH2 0x0367 00000360: CALLDATASIZE 00000361: PUSH1 0x04 00000363: PUSH2 0x1e69 00000366: JUMP 00000367: JUMPDEST 00000368: PUSH2 0x1227 0000036b: JUMP 0000036c: JUMPDEST 0000036d: PUSH2 0x01df 00000370: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000391: DUP2 00000392: JUMP 00000393: JUMPDEST 00000394: PUSH1 0x00 00000396: PUSH2 0x039e 00000399: DUP3 0000039a: PUSH2 0x1357 0000039d: JUMP 0000039e: JUMPDEST 0000039f: SWAP3 000003a0: SWAP2 000003a1: POP 000003a2: POP 000003a3: JUMP 000003a4: JUMPDEST 000003a5: PUSH1 0x02 000003a7: PUSH1 0x00 000003a9: SLOAD 000003aa: EQ 000003ab: ISZERO 000003ac: PUSH2 0x0416 000003af: JUMPI 000003b0: PUSH1 0x40 000003b2: MLOAD 000003b3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000003d4: DUP2 000003d5: MSTORE 000003d6: PUSH1 0x20 000003d8: PUSH1 0x04 000003da: DUP3 000003db: ADD 000003dc: MSTORE 000003dd: PUSH1 0x1f 000003df: PUSH1 0x24 000003e1: DUP3 000003e2: ADD 000003e3: MSTORE 000003e4: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000405: PUSH1 0x44 00000407: DUP3 00000408: ADD 00000409: MSTORE 0000040a: PUSH1 0x64 0000040c: ADD 0000040d: JUMPDEST 0000040e: PUSH1 0x40 00000410: MLOAD 00000411: DUP1 00000412: SWAP2 00000413: SUB 00000414: SWAP1 00000415: REVERT 00000416: JUMPDEST 00000417: PUSH1 0x02 00000419: PUSH1 0x00 0000041b: SWAP1 0000041c: DUP2 0000041d: SSTORE 0000041e: CALLER 0000041f: DUP2 00000420: MSTORE 00000421: PUSH1 0x08 00000423: PUSH1 0x20 00000425: MSTORE 00000426: PUSH1 0x40 00000428: SWAP1 00000429: KECCAK256 0000042a: SLOAD 0000042b: PUSH2 0x0434 0000042e: SWAP1 0000042f: DUP3 00000430: PUSH2 0x13e7 00000433: JUMP 00000434: JUMPDEST 00000435: POP 00000436: PUSH1 0x01 00000438: PUSH1 0x00 0000043a: SSTORE 0000043b: JUMP 0000043c: JUMPDEST 0000043d: PUSH1 0x02 0000043f: PUSH1 0x00 00000441: SLOAD 00000442: EQ 00000443: ISZERO 00000444: PUSH2 0x04a9 00000447: JUMPI 00000448: PUSH1 0x40 0000044a: MLOAD 0000044b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000046c: DUP2 0000046d: MSTORE 0000046e: PUSH1 0x20 00000470: PUSH1 0x04 00000472: DUP3 00000473: ADD 00000474: MSTORE 00000475: PUSH1 0x1f 00000477: PUSH1 0x24 00000479: DUP3 0000047a: ADD 0000047b: MSTORE 0000047c: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 0000049d: PUSH1 0x44 0000049f: DUP3 000004a0: ADD 000004a1: MSTORE 000004a2: PUSH1 0x64 000004a4: ADD 000004a5: PUSH2 0x040d 000004a8: JUMP 000004a9: JUMPDEST 000004aa: PUSH1 0x02 000004ac: PUSH1 0x00 000004ae: SSTORE 000004af: DUP2 000004b0: ISZERO 000004b1: DUP1 000004b2: ISZERO 000004b3: SWAP1 000004b4: PUSH2 0x04cc 000004b7: JUMPI 000004b8: POP 000004b9: CALLER 000004ba: PUSH1 0x00 000004bc: SWAP1 000004bd: DUP2 000004be: MSTORE 000004bf: PUSH1 0x08 000004c1: PUSH1 0x20 000004c3: MSTORE 000004c4: PUSH1 0x40 000004c6: SWAP1 000004c7: KECCAK256 000004c8: SLOAD 000004c9: DUP3 000004ca: GT 000004cb: ISZERO 000004cc: JUMPDEST 000004cd: PUSH2 0x0558 000004d0: JUMPI 000004d1: PUSH1 0x40 000004d3: MLOAD 000004d4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004f5: DUP2 000004f6: MSTORE 000004f7: PUSH1 0x20 000004f9: PUSH1 0x04 000004fb: DUP3 000004fc: ADD 000004fd: MSTORE 000004fe: PUSH1 0x36 00000500: PUSH1 0x24 00000502: DUP3 00000503: ADD 00000504: MSTORE 00000505: PUSH32 0x57697468647261773a2053686172657320657175616c20746f2030206f72206c 00000526: PUSH1 0x44 00000528: DUP3 00000529: ADD 0000052a: MSTORE 0000052b: PUSH32 0x6172676572207468616e20757365722073686172657300000000000000000000 0000054c: PUSH1 0x64 0000054e: DUP3 0000054f: ADD 00000550: MSTORE 00000551: PUSH1 0x84 00000553: ADD 00000554: PUSH2 0x040d 00000557: JUMP 00000558: JUMPDEST 00000559: PUSH2 0x0562 0000055c: DUP3 0000055d: DUP3 0000055e: PUSH2 0x13e7 00000561: JUMP 00000562: JUMPDEST 00000563: POP 00000564: POP 00000565: PUSH1 0x01 00000567: PUSH1 0x00 00000569: SSTORE 0000056a: JUMP 0000056b: JUMPDEST 0000056c: PUSH1 0x02 0000056e: PUSH1 0x00 00000570: SLOAD 00000571: EQ 00000572: ISZERO 00000573: PUSH2 0x05d8 00000576: JUMPI 00000577: PUSH1 0x40 00000579: MLOAD 0000057a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000059b: DUP2 0000059c: MSTORE 0000059d: PUSH1 0x20 0000059f: PUSH1 0x04 000005a1: DUP3 000005a2: ADD 000005a3: MSTORE 000005a4: PUSH1 0x1f 000005a6: PUSH1 0x24 000005a8: DUP3 000005a9: ADD 000005aa: MSTORE 000005ab: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000005cc: PUSH1 0x44 000005ce: DUP3 000005cf: ADD 000005d0: MSTORE 000005d1: PUSH1 0x64 000005d3: ADD 000005d4: PUSH2 0x040d 000005d7: JUMP 000005d8: JUMPDEST 000005d9: PUSH1 0x02 000005db: PUSH1 0x00 000005dd: DUP2 000005de: SWAP1 000005df: SSTORE 000005e0: POP 000005e1: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000602: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000617: AND 00000618: PUSH4 0x2a4e051b 0000061d: PUSH1 0x40 0000061f: MLOAD 00000620: DUP2 00000621: PUSH4 0xffffffff 00000626: AND 00000627: PUSH1 0xe0 00000629: SHL 0000062a: DUP2 0000062b: MSTORE 0000062c: PUSH1 0x04 0000062e: ADD 0000062f: PUSH1 0x00 00000631: PUSH1 0x40 00000633: MLOAD 00000634: DUP1 00000635: DUP4 00000636: SUB 00000637: DUP2 00000638: PUSH1 0x00 0000063a: DUP8 0000063b: DUP1 0000063c: EXTCODESIZE 0000063d: ISZERO 0000063e: DUP1 0000063f: ISZERO 00000640: PUSH2 0x0648 00000643: JUMPI 00000644: PUSH1 0x00 00000646: DUP1 00000647: REVERT 00000648: JUMPDEST 00000649: POP 0000064a: GAS 0000064b: CALL 0000064c: ISZERO 0000064d: DUP1 0000064e: ISZERO 0000064f: PUSH2 0x065c 00000652: JUMPI 00000653: RETURNDATASIZE 00000654: PUSH1 0x00 00000656: DUP1 00000657: RETURNDATACOPY 00000658: RETURNDATASIZE 00000659: PUSH1 0x00 0000065b: REVERT 0000065c: JUMPDEST 0000065d: POP 0000065e: POP 0000065f: POP 00000660: POP 00000661: PUSH2 0x0669 00000664: CALLER 00000665: PUSH2 0x1729 00000668: JUMP 00000669: JUMPDEST 0000066a: CALLER 0000066b: PUSH1 0x00 0000066d: SWAP1 0000066e: DUP2 0000066f: MSTORE 00000670: PUSH1 0x08 00000672: PUSH1 0x20 00000674: MSTORE 00000675: PUSH1 0x40 00000677: SWAP1 00000678: KECCAK256 00000679: PUSH1 0x02 0000067b: ADD 0000067c: SLOAD 0000067d: DUP1 0000067e: PUSH2 0x0708 00000681: JUMPI 00000682: PUSH1 0x40 00000684: MLOAD 00000685: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006a6: DUP2 000006a7: MSTORE 000006a8: PUSH1 0x20 000006aa: PUSH1 0x04 000006ac: DUP3 000006ad: ADD 000006ae: MSTORE 000006af: PUSH1 0x24 000006b1: DUP1 000006b2: DUP3 000006b3: ADD 000006b4: MSTORE 000006b5: PUSH32 0x486172766573743a2050656e64696e672072657761726473206d757374206265 000006d6: PUSH1 0x44 000006d8: DUP3 000006d9: ADD 000006da: MSTORE 000006db: PUSH32 0x203e203000000000000000000000000000000000000000000000000000000000 000006fc: PUSH1 0x64 000006fe: DUP3 000006ff: ADD 00000700: MSTORE 00000701: PUSH1 0x84 00000703: ADD 00000704: PUSH2 0x040d 00000707: JUMP 00000708: JUMPDEST 00000709: CALLER 0000070a: PUSH1 0x00 0000070c: DUP2 0000070d: DUP2 0000070e: MSTORE 0000070f: PUSH1 0x08 00000711: PUSH1 0x20 00000713: MSTORE 00000714: PUSH1 0x40 00000716: DUP2 00000717: KECCAK256 00000718: PUSH1 0x02 0000071a: ADD 0000071b: SSTORE 0000071c: PUSH2 0x075d 0000071f: SWAP1 00000720: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000741: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000756: AND 00000757: SWAP1 00000758: DUP4 00000759: PUSH2 0x178b 0000075c: JUMP 0000075d: JUMPDEST 0000075e: PUSH1 0x40 00000760: MLOAD 00000761: DUP2 00000762: DUP2 00000763: MSTORE 00000764: CALLER 00000765: SWAP1 00000766: PUSH32 0xc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba 00000787: SWAP1 00000788: PUSH1 0x20 0000078a: ADD 0000078b: PUSH1 0x40 0000078d: MLOAD 0000078e: DUP1 0000078f: SWAP2 00000790: SUB 00000791: SWAP1 00000792: LOG2 00000793: POP 00000794: PUSH1 0x01 00000796: PUSH1 0x00 00000798: SSTORE 00000799: JUMP 0000079a: JUMPDEST 0000079b: PUSH1 0x40 0000079d: MLOAD 0000079e: PUSH32 0x1959a00200000000000000000000000000000000000000000000000000000000 000007bf: DUP2 000007c0: MSTORE 000007c1: ADDRESS 000007c2: PUSH1 0x04 000007c4: DUP3 000007c5: ADD 000007c6: MSTORE 000007c7: PUSH1 0x00 000007c9: SWAP1 000007ca: DUP2 000007cb: SWAP1 000007cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007e1: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000802: AND 00000803: SWAP1 00000804: PUSH4 0x1959a002 00000809: SWAP1 0000080a: PUSH1 0x24 0000080c: ADD 0000080d: PUSH1 0x40 0000080f: DUP1 00000810: MLOAD 00000811: DUP1 00000812: DUP4 00000813: SUB 00000814: DUP2 00000815: DUP7 00000816: DUP1 00000817: EXTCODESIZE 00000818: ISZERO 00000819: DUP1 0000081a: ISZERO 0000081b: PUSH2 0x0823 0000081e: JUMPI 0000081f: PUSH1 0x00 00000821: DUP1 00000822: REVERT 00000823: JUMPDEST 00000824: POP 00000825: GAS 00000826: STATICCALL 00000827: ISZERO 00000828: DUP1 00000829: ISZERO 0000082a: PUSH2 0x0837 0000082d: JUMPI 0000082e: RETURNDATASIZE 0000082f: PUSH1 0x00 00000831: DUP1 00000832: RETURNDATACOPY 00000833: RETURNDATASIZE 00000834: PUSH1 0x00 00000836: REVERT 00000837: JUMPDEST 00000838: POP 00000839: POP 0000083a: POP 0000083b: POP 0000083c: PUSH1 0x40 0000083e: MLOAD 0000083f: RETURNDATASIZE 00000840: PUSH1 0x1f 00000842: NOT 00000843: PUSH1 0x1f 00000845: DUP3 00000846: ADD 00000847: AND 00000848: DUP3 00000849: ADD 0000084a: DUP1 0000084b: PUSH1 0x40 0000084d: MSTORE 0000084e: POP 0000084f: DUP2 00000850: ADD 00000851: SWAP1 00000852: PUSH2 0x085b 00000855: SWAP2 00000856: SWAP1 00000857: PUSH2 0x1f44 0000085a: JUMP 0000085b: JUMPDEST 0000085c: POP 0000085d: PUSH1 0x40 0000085f: MLOAD 00000860: PUSH32 0x097aad1000000000000000000000000000000000000000000000000000000000 00000881: DUP2 00000882: MSTORE 00000883: ADDRESS 00000884: PUSH1 0x04 00000886: DUP3 00000887: ADD 00000888: MSTORE 00000889: SWAP1 0000088a: SWAP2 0000088b: POP 0000088c: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 000008ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008c2: AND 000008c3: SWAP1 000008c4: PUSH4 0x097aad10 000008c9: SWAP1 000008ca: PUSH1 0x24 000008cc: ADD 000008cd: PUSH1 0x20 000008cf: PUSH1 0x40 000008d1: MLOAD 000008d2: DUP1 000008d3: DUP4 000008d4: SUB 000008d5: DUP2 000008d6: DUP7 000008d7: DUP1 000008d8: EXTCODESIZE 000008d9: ISZERO 000008da: DUP1 000008db: ISZERO 000008dc: PUSH2 0x08e4 000008df: JUMPI 000008e0: PUSH1 0x00 000008e2: DUP1 000008e3: REVERT 000008e4: JUMPDEST 000008e5: POP 000008e6: GAS 000008e7: STATICCALL 000008e8: ISZERO 000008e9: DUP1 000008ea: ISZERO 000008eb: PUSH2 0x08f8 000008ee: JUMPI 000008ef: RETURNDATASIZE 000008f0: PUSH1 0x00 000008f2: DUP1 000008f3: RETURNDATACOPY 000008f4: RETURNDATASIZE 000008f5: PUSH1 0x00 000008f7: REVERT 000008f8: JUMPDEST 000008f9: POP 000008fa: POP 000008fb: POP 000008fc: POP 000008fd: PUSH1 0x40 000008ff: MLOAD 00000900: RETURNDATASIZE 00000901: PUSH1 0x1f 00000903: NOT 00000904: PUSH1 0x1f 00000906: DUP3 00000907: ADD 00000908: AND 00000909: DUP3 0000090a: ADD 0000090b: DUP1 0000090c: PUSH1 0x40 0000090e: MSTORE 0000090f: POP 00000910: DUP2 00000911: ADD 00000912: SWAP1 00000913: PUSH2 0x091c 00000916: SWAP2 00000917: SWAP1 00000918: PUSH2 0x1ed9 0000091b: JUMP 0000091c: JUMPDEST 0000091d: PUSH2 0x0926 00000920: SWAP1 00000921: DUP3 00000922: PUSH2 0x1fd5 00000925: JUMP 00000926: JUMPDEST 00000927: SWAP1 00000928: POP 00000929: PUSH1 0x07 0000092b: SLOAD 0000092c: PUSH1 0x00 0000092e: EQ 0000092f: PUSH2 0x0956 00000932: JUMPI 00000933: PUSH1 0x07 00000935: SLOAD 00000936: PUSH2 0x0947 00000939: PUSH8 0x0de0b6b3a7640000 00000942: DUP4 00000943: PUSH2 0x2028 00000946: JUMP 00000947: JUMPDEST 00000948: PUSH2 0x0951 0000094b: SWAP2 0000094c: SWAP1 0000094d: PUSH2 0x1fed 00000950: JUMP 00000951: JUMPDEST 00000952: PUSH2 0x0960 00000955: JUMP 00000956: JUMPDEST 00000957: PUSH8 0x0de0b6b3a7640000 00000960: JUMPDEST 00000961: SWAP2 00000962: POP 00000963: POP 00000964: SWAP1 00000965: JUMP 00000966: JUMPDEST 00000967: PUSH1 0x01 00000969: SLOAD 0000096a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000097f: AND 00000980: CALLER 00000981: EQ 00000982: PUSH2 0x09e7 00000985: JUMPI 00000986: PUSH1 0x40 00000988: MLOAD 00000989: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009aa: DUP2 000009ab: MSTORE 000009ac: PUSH1 0x20 000009ae: PUSH1 0x04 000009b0: DUP3 000009b1: ADD 000009b2: DUP2 000009b3: SWAP1 000009b4: MSTORE 000009b5: PUSH1 0x24 000009b7: DUP3 000009b8: ADD 000009b9: MSTORE 000009ba: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 000009db: PUSH1 0x44 000009dd: DUP3 000009de: ADD 000009df: MSTORE 000009e0: PUSH1 0x64 000009e2: ADD 000009e3: PUSH2 0x040d 000009e6: JUMP 000009e7: JUMPDEST 000009e8: PUSH2 0x09f1 000009eb: PUSH1 0x00 000009ed: PUSH2 0x1864 000009f0: JUMP 000009f1: JUMPDEST 000009f2: JUMP 000009f3: JUMPDEST 000009f4: PUSH1 0x01 000009f6: SLOAD 000009f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a0c: AND 00000a0d: CALLER 00000a0e: EQ 00000a0f: PUSH2 0x0a74 00000a12: JUMPI 00000a13: PUSH1 0x40 00000a15: MLOAD 00000a16: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a37: DUP2 00000a38: MSTORE 00000a39: PUSH1 0x20 00000a3b: PUSH1 0x04 00000a3d: DUP3 00000a3e: ADD 00000a3f: DUP2 00000a40: SWAP1 00000a41: MSTORE 00000a42: PUSH1 0x24 00000a44: DUP3 00000a45: ADD 00000a46: MSTORE 00000a47: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000a68: PUSH1 0x44 00000a6a: DUP3 00000a6b: ADD 00000a6c: MSTORE 00000a6d: PUSH1 0x64 00000a6f: ADD 00000a70: PUSH2 0x040d 00000a73: JUMP 00000a74: JUMPDEST 00000a75: PUSH1 0x05 00000a77: SLOAD 00000a78: NUMBER 00000a79: LT 00000a7a: PUSH2 0x0a8f 00000a7d: JUMPI 00000a7e: PUSH2 0x0a87 00000a81: DUP2 00000a82: DUP4 00000a83: PUSH2 0x1fed 00000a86: JUMP 00000a87: JUMPDEST 00000a88: PUSH1 0x02 00000a8a: SSTORE 00000a8b: PUSH2 0x0ac3 00000a8e: JUMP 00000a8f: JUMPDEST 00000a90: DUP1 00000a91: PUSH1 0x02 00000a93: SLOAD 00000a94: NUMBER 00000a95: PUSH1 0x05 00000a97: SLOAD 00000a98: PUSH2 0x0aa1 00000a9b: SWAP2 00000a9c: SWAP1 00000a9d: PUSH2 0x2065 00000aa0: JUMP 00000aa1: JUMPDEST 00000aa2: PUSH2 0x0aab 00000aa5: SWAP2 00000aa6: SWAP1 00000aa7: PUSH2 0x2028 00000aaa: JUMP 00000aab: JUMPDEST 00000aac: PUSH2 0x0ab5 00000aaf: SWAP1 00000ab0: DUP5 00000ab1: PUSH2 0x1fd5 00000ab4: JUMP 00000ab5: JUMPDEST 00000ab6: PUSH2 0x0abf 00000ab9: SWAP2 00000aba: SWAP1 00000abb: PUSH2 0x1fed 00000abe: JUMP 00000abf: JUMPDEST 00000ac0: PUSH1 0x02 00000ac2: SSTORE 00000ac3: JUMPDEST 00000ac4: NUMBER 00000ac5: PUSH1 0x04 00000ac7: DUP2 00000ac8: SWAP1 00000ac9: SSTORE 00000aca: PUSH2 0x0ad4 00000acd: SWAP1 00000ace: DUP3 00000acf: SWAP1 00000ad0: PUSH2 0x1fd5 00000ad3: JUMP 00000ad4: JUMPDEST 00000ad5: PUSH1 0x05 00000ad7: SSTORE 00000ad8: PUSH1 0x02 00000ada: SLOAD 00000adb: PUSH1 0x40 00000add: DUP1 00000ade: MLOAD 00000adf: DUP4 00000ae0: DUP2 00000ae1: MSTORE 00000ae2: PUSH1 0x20 00000ae4: DUP2 00000ae5: ADD 00000ae6: SWAP3 00000ae7: SWAP1 00000ae8: SWAP3 00000ae9: MSTORE 00000aea: DUP2 00000aeb: ADD 00000aec: DUP4 00000aed: SWAP1 00000aee: MSTORE 00000aef: PUSH32 0x55b4fa63fe43865f67b4f2c4a4df1cf9e6c1f85767211b44b45cf4649b2c2b51 00000b10: SWAP1 00000b11: PUSH1 0x60 00000b13: ADD 00000b14: PUSH1 0x40 00000b16: MLOAD 00000b17: DUP1 00000b18: SWAP2 00000b19: SUB 00000b1a: SWAP1 00000b1b: LOG1 00000b1c: POP 00000b1d: POP 00000b1e: JUMP 00000b1f: JUMPDEST 00000b20: PUSH1 0x02 00000b22: PUSH1 0x00 00000b24: SLOAD 00000b25: EQ 00000b26: ISZERO 00000b27: PUSH2 0x0b8c 00000b2a: JUMPI 00000b2b: PUSH1 0x40 00000b2d: MLOAD 00000b2e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b4f: DUP2 00000b50: MSTORE 00000b51: PUSH1 0x20 00000b53: PUSH1 0x04 00000b55: DUP3 00000b56: ADD 00000b57: MSTORE 00000b58: PUSH1 0x1f 00000b5a: PUSH1 0x24 00000b5c: DUP3 00000b5d: ADD 00000b5e: MSTORE 00000b5f: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000b80: PUSH1 0x44 00000b82: DUP3 00000b83: ADD 00000b84: MSTORE 00000b85: PUSH1 0x64 00000b87: ADD 00000b88: PUSH2 0x040d 00000b8b: JUMP 00000b8c: JUMPDEST 00000b8d: PUSH1 0x02 00000b8f: PUSH1 0x00 00000b91: SSTORE 00000b92: PUSH8 0x0de0b6b3a7640000 00000b9b: DUP3 00000b9c: LT 00000b9d: ISZERO 00000b9e: PUSH2 0x0c29 00000ba1: JUMPI 00000ba2: PUSH1 0x40 00000ba4: MLOAD 00000ba5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000bc6: DUP2 00000bc7: MSTORE 00000bc8: PUSH1 0x20 00000bca: PUSH1 0x04 00000bcc: DUP3 00000bcd: ADD 00000bce: MSTORE 00000bcf: PUSH1 0x22 00000bd1: PUSH1 0x24 00000bd3: DUP3 00000bd4: ADD 00000bd5: MSTORE 00000bd6: PUSH32 0x4465706f7369743a20416d6f756e74206d757374206265203e3d2031204c4f4f 00000bf7: PUSH1 0x44 00000bf9: DUP3 00000bfa: ADD 00000bfb: MSTORE 00000bfc: PUSH32 0x4b53000000000000000000000000000000000000000000000000000000000000 00000c1d: PUSH1 0x64 00000c1f: DUP3 00000c20: ADD 00000c21: MSTORE 00000c22: PUSH1 0x84 00000c24: ADD 00000c25: PUSH2 0x040d 00000c28: JUMP 00000c29: JUMPDEST 00000c2a: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000c4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c60: AND 00000c61: PUSH4 0x2a4e051b 00000c66: PUSH1 0x40 00000c68: MLOAD 00000c69: DUP2 00000c6a: PUSH4 0xffffffff 00000c6f: AND 00000c70: PUSH1 0xe0 00000c72: SHL 00000c73: DUP2 00000c74: MSTORE 00000c75: PUSH1 0x04 00000c77: ADD 00000c78: PUSH1 0x00 00000c7a: PUSH1 0x40 00000c7c: MLOAD 00000c7d: DUP1 00000c7e: DUP4 00000c7f: SUB 00000c80: DUP2 00000c81: PUSH1 0x00 00000c83: DUP8 00000c84: DUP1 00000c85: EXTCODESIZE 00000c86: ISZERO 00000c87: DUP1 00000c88: ISZERO 00000c89: PUSH2 0x0c91 00000c8c: JUMPI 00000c8d: PUSH1 0x00 00000c8f: DUP1 00000c90: REVERT 00000c91: JUMPDEST 00000c92: POP 00000c93: GAS 00000c94: CALL 00000c95: ISZERO 00000c96: DUP1 00000c97: ISZERO 00000c98: PUSH2 0x0ca5 00000c9b: JUMPI 00000c9c: RETURNDATASIZE 00000c9d: PUSH1 0x00 00000c9f: DUP1 00000ca0: RETURNDATACOPY 00000ca1: RETURNDATASIZE 00000ca2: PUSH1 0x00 00000ca4: REVERT 00000ca5: JUMPDEST 00000ca6: POP 00000ca7: POP 00000ca8: POP 00000ca9: POP 00000caa: PUSH2 0x0cb2 00000cad: CALLER 00000cae: PUSH2 0x1729 00000cb1: JUMP 00000cb2: JUMPDEST 00000cb3: PUSH1 0x40 00000cb5: MLOAD 00000cb6: PUSH32 0x1959a00200000000000000000000000000000000000000000000000000000000 00000cd7: DUP2 00000cd8: MSTORE 00000cd9: ADDRESS 00000cda: PUSH1 0x04 00000cdc: DUP3 00000cdd: ADD 00000cde: MSTORE 00000cdf: PUSH1 0x00 00000ce1: SWAP1 00000ce2: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000d03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d18: AND 00000d19: SWAP1 00000d1a: PUSH4 0x1959a002 00000d1f: SWAP1 00000d20: PUSH1 0x24 00000d22: ADD 00000d23: PUSH1 0x40 00000d25: DUP1 00000d26: MLOAD 00000d27: DUP1 00000d28: DUP4 00000d29: SUB 00000d2a: DUP2 00000d2b: DUP7 00000d2c: DUP1 00000d2d: EXTCODESIZE 00000d2e: ISZERO 00000d2f: DUP1 00000d30: ISZERO 00000d31: PUSH2 0x0d39 00000d34: JUMPI 00000d35: PUSH1 0x00 00000d37: DUP1 00000d38: REVERT 00000d39: JUMPDEST 00000d3a: POP 00000d3b: GAS 00000d3c: STATICCALL 00000d3d: ISZERO 00000d3e: DUP1 00000d3f: ISZERO 00000d40: PUSH2 0x0d4d 00000d43: JUMPI 00000d44: RETURNDATASIZE 00000d45: PUSH1 0x00 00000d47: DUP1 00000d48: RETURNDATACOPY 00000d49: RETURNDATASIZE 00000d4a: PUSH1 0x00 00000d4c: REVERT 00000d4d: JUMPDEST 00000d4e: POP 00000d4f: POP 00000d50: POP 00000d51: POP 00000d52: PUSH1 0x40 00000d54: MLOAD 00000d55: RETURNDATASIZE 00000d56: PUSH1 0x1f 00000d58: NOT 00000d59: PUSH1 0x1f 00000d5b: DUP3 00000d5c: ADD 00000d5d: AND 00000d5e: DUP3 00000d5f: ADD 00000d60: DUP1 00000d61: PUSH1 0x40 00000d63: MSTORE 00000d64: POP 00000d65: DUP2 00000d66: ADD 00000d67: SWAP1 00000d68: PUSH2 0x0d71 00000d6b: SWAP2 00000d6c: SWAP1 00000d6d: PUSH2 0x1f44 00000d70: JUMP 00000d71: JUMPDEST 00000d72: POP 00000d73: SWAP1 00000d74: POP 00000d75: PUSH2 0x0db6 00000d78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d8d: PUSH32 0x000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e 00000dae: AND 00000daf: CALLER 00000db0: ADDRESS 00000db1: DUP7 00000db2: PUSH2 0x18db 00000db5: JUMP 00000db6: JUMPDEST 00000db7: PUSH1 0x00 00000db9: PUSH1 0x07 00000dbb: SLOAD 00000dbc: PUSH1 0x00 00000dbe: EQ 00000dbf: PUSH2 0x0e49 00000dc2: JUMPI 00000dc3: DUP2 00000dc4: PUSH1 0x07 00000dc6: SLOAD 00000dc7: DUP6 00000dc8: PUSH2 0x0dd1 00000dcb: SWAP2 00000dcc: SWAP1 00000dcd: PUSH2 0x2028 00000dd0: JUMP 00000dd1: JUMPDEST 00000dd2: PUSH2 0x0ddb 00000dd5: SWAP2 00000dd6: SWAP1 00000dd7: PUSH2 0x1fed 00000dda: JUMP 00000ddb: JUMPDEST 00000ddc: SWAP1 00000ddd: POP 00000dde: DUP1 00000ddf: PUSH2 0x0e44 00000de2: JUMPI 00000de3: PUSH1 0x40 00000de5: MLOAD 00000de6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e07: DUP2 00000e08: MSTORE 00000e09: PUSH1 0x20 00000e0b: PUSH1 0x04 00000e0d: DUP3 00000e0e: ADD 00000e0f: MSTORE 00000e10: PUSH1 0x0d 00000e12: PUSH1 0x24 00000e14: DUP3 00000e15: ADD 00000e16: MSTORE 00000e17: PUSH32 0x4465706f7369743a204661696c00000000000000000000000000000000000000 00000e38: PUSH1 0x44 00000e3a: DUP3 00000e3b: ADD 00000e3c: MSTORE 00000e3d: PUSH1 0x64 00000e3f: ADD 00000e40: PUSH2 0x040d 00000e43: JUMP 00000e44: JUMPDEST 00000e45: PUSH2 0x0e4c 00000e48: JUMP 00000e49: JUMPDEST 00000e4a: POP 00000e4b: DUP3 00000e4c: JUMPDEST 00000e4d: CALLER 00000e4e: PUSH1 0x00 00000e50: SWAP1 00000e51: DUP2 00000e52: MSTORE 00000e53: PUSH1 0x08 00000e55: PUSH1 0x20 00000e57: MSTORE 00000e58: PUSH1 0x40 00000e5a: DUP2 00000e5b: KECCAK256 00000e5c: DUP1 00000e5d: SLOAD 00000e5e: DUP4 00000e5f: SWAP3 00000e60: SWAP1 00000e61: PUSH2 0x0e6b 00000e64: SWAP1 00000e65: DUP5 00000e66: SWAP1 00000e67: PUSH2 0x1fd5 00000e6a: JUMP 00000e6b: JUMPDEST 00000e6c: SWAP3 00000e6d: POP 00000e6e: POP 00000e6f: DUP2 00000e70: SWAP1 00000e71: SSTORE 00000e72: POP 00000e73: DUP1 00000e74: PUSH1 0x07 00000e76: PUSH1 0x00 00000e78: DUP3 00000e79: DUP3 00000e7a: SLOAD 00000e7b: PUSH2 0x0e84 00000e7e: SWAP2 00000e7f: SWAP1 00000e80: PUSH2 0x1fd5 00000e83: JUMP 00000e84: JUMPDEST 00000e85: SWAP1 00000e86: SWAP2 00000e87: SSTORE 00000e88: POP 00000e89: PUSH1 0x00 00000e8b: SWAP1 00000e8c: POP 00000e8d: DUP4 00000e8e: ISZERO 00000e8f: PUSH2 0x0f01 00000e92: JUMPI 00000e93: POP 00000e94: CALLER 00000e95: PUSH1 0x00 00000e97: SWAP1 00000e98: DUP2 00000e99: MSTORE 00000e9a: PUSH1 0x08 00000e9c: PUSH1 0x20 00000e9e: MSTORE 00000e9f: PUSH1 0x40 00000ea1: SWAP1 00000ea2: KECCAK256 00000ea3: PUSH1 0x02 00000ea5: ADD 00000ea6: SLOAD 00000ea7: DUP1 00000ea8: ISZERO 00000ea9: PUSH2 0x0f01 00000eac: JUMPI 00000ead: CALLER 00000eae: PUSH1 0x00 00000eb0: DUP2 00000eb1: DUP2 00000eb2: MSTORE 00000eb3: PUSH1 0x08 00000eb5: PUSH1 0x20 00000eb7: MSTORE 00000eb8: PUSH1 0x40 00000eba: DUP2 00000ebb: KECCAK256 00000ebc: PUSH1 0x02 00000ebe: ADD 00000ebf: SSTORE 00000ec0: PUSH2 0x0f01 00000ec3: SWAP1 00000ec4: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000ee5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000efa: AND 00000efb: SWAP1 00000efc: DUP4 00000efd: PUSH2 0x178b 00000f00: JUMP 00000f01: JUMPDEST 00000f02: PUSH2 0x0f2b 00000f05: DUP6 00000f06: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000f27: PUSH2 0x193f 00000f2a: JUMP 00000f2b: JUMPDEST 00000f2c: PUSH1 0x40 00000f2e: MLOAD 00000f2f: PUSH32 0xb6b55f2500000000000000000000000000000000000000000000000000000000 00000f50: DUP2 00000f51: MSTORE 00000f52: PUSH1 0x04 00000f54: DUP2 00000f55: ADD 00000f56: DUP7 00000f57: SWAP1 00000f58: MSTORE 00000f59: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00000f7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f8f: AND 00000f90: SWAP1 00000f91: PUSH4 0xb6b55f25 00000f96: SWAP1 00000f97: PUSH1 0x24 00000f99: ADD 00000f9a: PUSH1 0x00 00000f9c: PUSH1 0x40 00000f9e: MLOAD 00000f9f: DUP1 00000fa0: DUP4 00000fa1: SUB 00000fa2: DUP2 00000fa3: PUSH1 0x00 00000fa5: DUP8 00000fa6: DUP1 00000fa7: EXTCODESIZE 00000fa8: ISZERO 00000fa9: DUP1 00000faa: ISZERO 00000fab: PUSH2 0x0fb3 00000fae: JUMPI 00000faf: PUSH1 0x00 00000fb1: DUP1 00000fb2: REVERT 00000fb3: JUMPDEST 00000fb4: POP 00000fb5: GAS 00000fb6: CALL 00000fb7: ISZERO 00000fb8: DUP1 00000fb9: ISZERO 00000fba: PUSH2 0x0fc7 00000fbd: JUMPI 00000fbe: RETURNDATASIZE 00000fbf: PUSH1 0x00 00000fc1: DUP1 00000fc2: RETURNDATACOPY 00000fc3: RETURNDATASIZE 00000fc4: PUSH1 0x00 00000fc6: REVERT 00000fc7: JUMPDEST 00000fc8: POP 00000fc9: POP 00000fca: PUSH1 0x40 00000fcc: DUP1 00000fcd: MLOAD 00000fce: DUP9 00000fcf: DUP2 00000fd0: MSTORE 00000fd1: PUSH1 0x20 00000fd3: DUP2 00000fd4: ADD 00000fd5: DUP6 00000fd6: SWAP1 00000fd7: MSTORE 00000fd8: CALLER 00000fd9: SWAP4 00000fda: POP 00000fdb: PUSH32 0x90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15 00000ffc: SWAP3 00000ffd: POP 00000ffe: ADD 00000fff: PUSH1 0x40 00001001: MLOAD 00001002: DUP1 00001003: SWAP2 00001004: SUB 00001005: SWAP1 00001006: LOG2 00001007: POP 00001008: POP 00001009: PUSH1 0x01 0000100b: PUSH1 0x00 0000100d: SSTORE 0000100e: POP 0000100f: POP 00001010: POP 00001011: JUMP 00001012: JUMPDEST 00001013: PUSH1 0x00 00001015: PUSH2 0x101c 00001018: PUSH2 0x1af9 0000101b: JUMP 0000101c: JUMPDEST 0000101d: SWAP1 0000101e: POP 0000101f: SWAP1 00001020: JUMP 00001021: JUMPDEST 00001022: PUSH1 0x40 00001024: MLOAD 00001025: PUSH32 0x1959a00200000000000000000000000000000000000000000000000000000000 00001046: DUP2 00001047: MSTORE 00001048: ADDRESS 00001049: PUSH1 0x04 0000104b: DUP3 0000104c: ADD 0000104d: MSTORE 0000104e: PUSH1 0x00 00001050: SWAP1 00001051: DUP2 00001052: SWAP1 00001053: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001068: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00001089: AND 0000108a: SWAP1 0000108b: PUSH4 0x1959a002 00001090: SWAP1 00001091: PUSH1 0x24 00001093: ADD 00001094: PUSH1 0x40 00001096: DUP1 00001097: MLOAD 00001098: DUP1 00001099: DUP4 0000109a: SUB 0000109b: DUP2 0000109c: DUP7 0000109d: DUP1 0000109e: EXTCODESIZE 0000109f: ISZERO 000010a0: DUP1 000010a1: ISZERO 000010a2: PUSH2 0x10aa 000010a5: JUMPI 000010a6: PUSH1 0x00 000010a8: DUP1 000010a9: REVERT 000010aa: JUMPDEST 000010ab: POP 000010ac: GAS 000010ad: STATICCALL 000010ae: ISZERO 000010af: DUP1 000010b0: ISZERO 000010b1: PUSH2 0x10be 000010b4: JUMPI 000010b5: RETURNDATASIZE 000010b6: PUSH1 0x00 000010b8: DUP1 000010b9: RETURNDATACOPY 000010ba: RETURNDATASIZE 000010bb: PUSH1 0x00 000010bd: REVERT 000010be: JUMPDEST 000010bf: POP 000010c0: POP 000010c1: POP 000010c2: POP 000010c3: PUSH1 0x40 000010c5: MLOAD 000010c6: RETURNDATASIZE 000010c7: PUSH1 0x1f 000010c9: NOT 000010ca: PUSH1 0x1f 000010cc: DUP3 000010cd: ADD 000010ce: AND 000010cf: DUP3 000010d0: ADD 000010d1: DUP1 000010d2: PUSH1 0x40 000010d4: MSTORE 000010d5: POP 000010d6: DUP2 000010d7: ADD 000010d8: SWAP1 000010d9: PUSH2 0x10e2 000010dc: SWAP2 000010dd: SWAP1 000010de: PUSH2 0x1f44 000010e1: JUMP 000010e2: JUMPDEST 000010e3: POP 000010e4: PUSH1 0x40 000010e6: MLOAD 000010e7: PUSH32 0x097aad1000000000000000000000000000000000000000000000000000000000 00001108: DUP2 00001109: MSTORE 0000110a: ADDRESS 0000110b: PUSH1 0x04 0000110d: DUP3 0000110e: ADD 0000110f: MSTORE 00001110: SWAP1 00001111: SWAP2 00001112: POP 00001113: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00001134: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001149: AND 0000114a: SWAP1 0000114b: PUSH4 0x097aad10 00001150: SWAP1 00001151: PUSH1 0x24 00001153: ADD 00001154: PUSH1 0x20 00001156: PUSH1 0x40 00001158: MLOAD 00001159: DUP1 0000115a: DUP4 0000115b: SUB 0000115c: DUP2 0000115d: DUP7 0000115e: DUP1 0000115f: EXTCODESIZE 00001160: ISZERO 00001161: DUP1 00001162: ISZERO 00001163: PUSH2 0x116b 00001166: JUMPI 00001167: PUSH1 0x00 00001169: DUP1 0000116a: REVERT 0000116b: JUMPDEST 0000116c: POP 0000116d: GAS 0000116e: STATICCALL 0000116f: ISZERO 00001170: DUP1 00001171: ISZERO 00001172: PUSH2 0x117f 00001175: JUMPI 00001176: RETURNDATASIZE 00001177: PUSH1 0x00 00001179: DUP1 0000117a: RETURNDATACOPY 0000117b: RETURNDATASIZE 0000117c: PUSH1 0x00 0000117e: REVERT 0000117f: JUMPDEST 00001180: POP 00001181: POP 00001182: POP 00001183: POP 00001184: PUSH1 0x40 00001186: MLOAD 00001187: RETURNDATASIZE 00001188: PUSH1 0x1f 0000118a: NOT 0000118b: PUSH1 0x1f 0000118d: DUP3 0000118e: ADD 0000118f: AND 00001190: DUP3 00001191: ADD 00001192: DUP1 00001193: PUSH1 0x40 00001195: MSTORE 00001196: POP 00001197: DUP2 00001198: ADD 00001199: SWAP1 0000119a: PUSH2 0x11a3 0000119d: SWAP2 0000119e: SWAP1 0000119f: PUSH2 0x1ed9 000011a2: JUMP 000011a3: JUMPDEST 000011a4: PUSH2 0x11ad 000011a7: SWAP1 000011a8: DUP3 000011a9: PUSH2 0x1fd5 000011ac: JUMP 000011ad: JUMPDEST 000011ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011c3: DUP5 000011c4: AND 000011c5: PUSH1 0x00 000011c7: SWAP1 000011c8: DUP2 000011c9: MSTORE 000011ca: PUSH1 0x08 000011cc: PUSH1 0x20 000011ce: MSTORE 000011cf: PUSH1 0x40 000011d1: SWAP1 000011d2: KECCAK256 000011d3: SLOAD 000011d4: SWAP1 000011d5: SWAP2 000011d6: POP 000011d7: ISZERO 000011d8: PUSH2 0x121d 000011db: JUMPI 000011dc: PUSH1 0x07 000011de: SLOAD 000011df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011f4: DUP5 000011f5: AND 000011f6: PUSH1 0x00 000011f8: SWAP1 000011f9: DUP2 000011fa: MSTORE 000011fb: PUSH1 0x08 000011fd: PUSH1 0x20 000011ff: MSTORE 00001200: PUSH1 0x40 00001202: SWAP1 00001203: KECCAK256 00001204: SLOAD 00001205: PUSH2 0x120e 00001208: SWAP1 00001209: DUP4 0000120a: PUSH2 0x2028 0000120d: JUMP 0000120e: JUMPDEST 0000120f: PUSH2 0x1218 00001212: SWAP2 00001213: SWAP1 00001214: PUSH2 0x1fed 00001217: JUMP 00001218: JUMPDEST 00001219: PUSH2 0x1220 0000121c: JUMP 0000121d: JUMPDEST 0000121e: PUSH1 0x00 00001220: JUMPDEST 00001221: SWAP4 00001222: SWAP3 00001223: POP 00001224: POP 00001225: POP 00001226: JUMP 00001227: JUMPDEST 00001228: PUSH1 0x01 0000122a: SLOAD 0000122b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001240: AND 00001241: CALLER 00001242: EQ 00001243: PUSH2 0x12a8 00001246: JUMPI 00001247: PUSH1 0x40 00001249: MLOAD 0000124a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000126b: DUP2 0000126c: MSTORE 0000126d: PUSH1 0x20 0000126f: PUSH1 0x04 00001271: DUP3 00001272: ADD 00001273: DUP2 00001274: SWAP1 00001275: MSTORE 00001276: PUSH1 0x24 00001278: DUP3 00001279: ADD 0000127a: MSTORE 0000127b: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000129c: PUSH1 0x44 0000129e: DUP3 0000129f: ADD 000012a0: MSTORE 000012a1: PUSH1 0x64 000012a3: ADD 000012a4: PUSH2 0x040d 000012a7: JUMP 000012a8: JUMPDEST 000012a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012be: DUP2 000012bf: AND 000012c0: PUSH2 0x134b 000012c3: JUMPI 000012c4: PUSH1 0x40 000012c6: MLOAD 000012c7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000012e8: DUP2 000012e9: MSTORE 000012ea: PUSH1 0x20 000012ec: PUSH1 0x04 000012ee: DUP3 000012ef: ADD 000012f0: MSTORE 000012f1: PUSH1 0x26 000012f3: PUSH1 0x24 000012f5: DUP3 000012f6: ADD 000012f7: MSTORE 000012f8: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00001319: PUSH1 0x44 0000131b: DUP3 0000131c: ADD 0000131d: MSTORE 0000131e: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 0000133f: PUSH1 0x64 00001341: DUP3 00001342: ADD 00001343: MSTORE 00001344: PUSH1 0x84 00001346: ADD 00001347: PUSH2 0x040d 0000134a: JUMP 0000134b: JUMPDEST 0000134c: PUSH2 0x1354 0000134f: DUP2 00001350: PUSH2 0x1864 00001353: JUMP 00001354: JUMPDEST 00001355: POP 00001356: JUMP 00001357: JUMPDEST 00001358: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000136d: DUP2 0000136e: AND 0000136f: PUSH1 0x00 00001371: SWAP1 00001372: DUP2 00001373: MSTORE 00001374: PUSH1 0x08 00001376: PUSH1 0x20 00001378: MSTORE 00001379: PUSH1 0x40 0000137b: DUP2 0000137c: KECCAK256 0000137d: PUSH1 0x02 0000137f: DUP2 00001380: ADD 00001381: SLOAD 00001382: PUSH1 0x01 00001384: SWAP1 00001385: SWAP2 00001386: ADD 00001387: SLOAD 00001388: PUSH8 0x0de0b6b3a7640000 00001391: SWAP1 00001392: PUSH2 0x1399 00001395: PUSH2 0x1b10 00001398: JUMP 00001399: JUMPDEST 0000139a: PUSH2 0x13a3 0000139d: SWAP2 0000139e: SWAP1 0000139f: PUSH2 0x2065 000013a2: JUMP 000013a3: JUMPDEST 000013a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013b9: DUP6 000013ba: AND 000013bb: PUSH1 0x00 000013bd: SWAP1 000013be: DUP2 000013bf: MSTORE 000013c0: PUSH1 0x08 000013c2: PUSH1 0x20 000013c4: MSTORE 000013c5: PUSH1 0x40 000013c7: SWAP1 000013c8: KECCAK256 000013c9: SLOAD 000013ca: PUSH2 0x13d3 000013cd: SWAP2 000013ce: SWAP1 000013cf: PUSH2 0x2028 000013d2: JUMP 000013d3: JUMPDEST 000013d4: PUSH2 0x13dd 000013d7: SWAP2 000013d8: SWAP1 000013d9: PUSH2 0x1fed 000013dc: JUMP 000013dd: JUMPDEST 000013de: PUSH2 0x039e 000013e1: SWAP2 000013e2: SWAP1 000013e3: PUSH2 0x1fd5 000013e6: JUMP 000013e7: JUMPDEST 000013e8: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 00001409: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000141e: AND 0000141f: PUSH4 0x2a4e051b 00001424: PUSH1 0x40 00001426: MLOAD 00001427: DUP2 00001428: PUSH4 0xffffffff 0000142d: AND 0000142e: PUSH1 0xe0 00001430: SHL 00001431: DUP2 00001432: MSTORE 00001433: PUSH1 0x04 00001435: ADD 00001436: PUSH1 0x00 00001438: PUSH1 0x40 0000143a: MLOAD 0000143b: DUP1 0000143c: DUP4 0000143d: SUB 0000143e: DUP2 0000143f: PUSH1 0x00 00001441: DUP8 00001442: DUP1 00001443: EXTCODESIZE 00001444: ISZERO 00001445: DUP1 00001446: ISZERO 00001447: PUSH2 0x144f 0000144a: JUMPI 0000144b: PUSH1 0x00 0000144d: DUP1 0000144e: REVERT 0000144f: JUMPDEST 00001450: POP 00001451: GAS 00001452: CALL 00001453: ISZERO 00001454: DUP1 00001455: ISZERO 00001456: PUSH2 0x1463 00001459: JUMPI 0000145a: RETURNDATASIZE 0000145b: PUSH1 0x00 0000145d: DUP1 0000145e: RETURNDATACOPY 0000145f: RETURNDATASIZE 00001460: PUSH1 0x00 00001462: REVERT 00001463: JUMPDEST 00001464: POP 00001465: POP 00001466: POP 00001467: POP 00001468: PUSH2 0x1470 0000146b: CALLER 0000146c: PUSH2 0x1729 0000146f: JUMP 00001470: JUMPDEST 00001471: PUSH1 0x40 00001473: MLOAD 00001474: PUSH32 0x1959a00200000000000000000000000000000000000000000000000000000000 00001495: DUP2 00001496: MSTORE 00001497: ADDRESS 00001498: PUSH1 0x04 0000149a: DUP3 0000149b: ADD 0000149c: MSTORE 0000149d: PUSH1 0x00 0000149f: SWAP1 000014a0: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 000014c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014d6: AND 000014d7: SWAP1 000014d8: PUSH4 0x1959a002 000014dd: SWAP1 000014de: PUSH1 0x24 000014e0: ADD 000014e1: PUSH1 0x40 000014e3: DUP1 000014e4: MLOAD 000014e5: DUP1 000014e6: DUP4 000014e7: SUB 000014e8: DUP2 000014e9: DUP7 000014ea: DUP1 000014eb: EXTCODESIZE 000014ec: ISZERO 000014ed: DUP1 000014ee: ISZERO 000014ef: PUSH2 0x14f7 000014f2: JUMPI 000014f3: PUSH1 0x00 000014f5: DUP1 000014f6: REVERT 000014f7: JUMPDEST 000014f8: POP 000014f9: GAS 000014fa: STATICCALL 000014fb: ISZERO 000014fc: DUP1 000014fd: ISZERO 000014fe: PUSH2 0x150b 00001501: JUMPI 00001502: RETURNDATASIZE 00001503: PUSH1 0x00 00001505: DUP1 00001506: RETURNDATACOPY 00001507: RETURNDATASIZE 00001508: PUSH1 0x00 0000150a: REVERT 0000150b: JUMPDEST 0000150c: POP 0000150d: POP 0000150e: POP 0000150f: POP 00001510: PUSH1 0x40 00001512: MLOAD 00001513: RETURNDATASIZE 00001514: PUSH1 0x1f 00001516: NOT 00001517: PUSH1 0x1f 00001519: DUP3 0000151a: ADD 0000151b: AND 0000151c: DUP3 0000151d: ADD 0000151e: DUP1 0000151f: PUSH1 0x40 00001521: MSTORE 00001522: POP 00001523: DUP2 00001524: ADD 00001525: SWAP1 00001526: PUSH2 0x152f 00001529: SWAP2 0000152a: SWAP1 0000152b: PUSH2 0x1f44 0000152e: JUMP 0000152f: JUMPDEST 00001530: POP 00001531: SWAP1 00001532: POP 00001533: PUSH1 0x00 00001535: PUSH1 0x07 00001537: SLOAD 00001538: DUP5 00001539: DUP4 0000153a: PUSH2 0x1543 0000153d: SWAP2 0000153e: SWAP1 0000153f: PUSH2 0x2028 00001542: JUMP 00001543: JUMPDEST 00001544: PUSH2 0x154d 00001547: SWAP2 00001548: SWAP1 00001549: PUSH2 0x1fed 0000154c: JUMP 0000154d: JUMPDEST 0000154e: CALLER 0000154f: PUSH1 0x00 00001551: SWAP1 00001552: DUP2 00001553: MSTORE 00001554: PUSH1 0x08 00001556: PUSH1 0x20 00001558: MSTORE 00001559: PUSH1 0x40 0000155b: DUP2 0000155c: KECCAK256 0000155d: DUP1 0000155e: SLOAD 0000155f: SWAP3 00001560: SWAP4 00001561: POP 00001562: DUP7 00001563: SWAP3 00001564: SWAP1 00001565: SWAP2 00001566: SWAP1 00001567: PUSH2 0x1571 0000156a: SWAP1 0000156b: DUP5 0000156c: SWAP1 0000156d: PUSH2 0x2065 00001570: JUMP 00001571: JUMPDEST 00001572: SWAP3 00001573: POP 00001574: POP 00001575: DUP2 00001576: SWAP1 00001577: SSTORE 00001578: POP 00001579: DUP4 0000157a: PUSH1 0x07 0000157c: PUSH1 0x00 0000157e: DUP3 0000157f: DUP3 00001580: SLOAD 00001581: PUSH2 0x158a 00001584: SWAP2 00001585: SWAP1 00001586: PUSH2 0x2065 00001589: JUMP 0000158a: JUMPDEST 0000158b: SWAP1 0000158c: SWAP2 0000158d: SSTORE 0000158e: POP 0000158f: POP 00001590: PUSH1 0x40 00001592: MLOAD 00001593: PUSH32 0x2e1a7d4d00000000000000000000000000000000000000000000000000000000 000015b4: DUP2 000015b5: MSTORE 000015b6: PUSH1 0x04 000015b8: DUP2 000015b9: ADD 000015ba: DUP3 000015bb: SWAP1 000015bc: MSTORE 000015bd: PUSH32 0x000000000000000000000000465a790b428268196865a3ae2648481ad7e0d3b1 000015de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015f3: AND 000015f4: SWAP1 000015f5: PUSH4 0x2e1a7d4d 000015fa: SWAP1 000015fb: PUSH1 0x24 000015fd: ADD 000015fe: PUSH1 0x00 00001600: PUSH1 0x40 00001602: MLOAD 00001603: DUP1 00001604: DUP4 00001605: SUB 00001606: DUP2 00001607: PUSH1 0x00 00001609: DUP8 0000160a: DUP1 0000160b: EXTCODESIZE 0000160c: ISZERO 0000160d: DUP1 0000160e: ISZERO 0000160f: PUSH2 0x1617 00001612: JUMPI 00001613: PUSH1 0x00 00001615: DUP1 00001616: REVERT 00001617: JUMPDEST 00001618: POP 00001619: GAS 0000161a: CALL 0000161b: ISZERO 0000161c: DUP1 0000161d: ISZERO 0000161e: PUSH2 0x162b 00001621: JUMPI 00001622: RETURNDATASIZE 00001623: PUSH1 0x00 00001625: DUP1 00001626: RETURNDATACOPY 00001627: RETURNDATASIZE 00001628: PUSH1 0x00 0000162a: REVERT 0000162b: JUMPDEST 0000162c: POP 0000162d: POP 0000162e: POP 0000162f: POP 00001630: PUSH1 0x00 00001632: DUP4 00001633: ISZERO 00001634: PUSH2 0x16a6 00001637: JUMPI 00001638: POP 00001639: CALLER 0000163a: PUSH1 0x00 0000163c: SWAP1 0000163d: DUP2 0000163e: MSTORE 0000163f: PUSH1 0x08 00001641: PUSH1 0x20 00001643: MSTORE 00001644: PUSH1 0x40 00001646: SWAP1 00001647: KECCAK256 00001648: PUSH1 0x02 0000164a: ADD 0000164b: SLOAD 0000164c: DUP1 0000164d: ISZERO 0000164e: PUSH2 0x16a6 00001651: JUMPI 00001652: CALLER 00001653: PUSH1 0x00 00001655: DUP2 00001656: DUP2 00001657: MSTORE 00001658: PUSH1 0x08 0000165a: PUSH1 0x20 0000165c: MSTORE 0000165d: PUSH1 0x40 0000165f: DUP2 00001660: KECCAK256 00001661: PUSH1 0x02 00001663: ADD 00001664: SSTORE 00001665: PUSH2 0x16a6 00001668: SWAP1 00001669: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 0000168a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000169f: AND 000016a0: SWAP1 000016a1: DUP4 000016a2: PUSH2 0x178b 000016a5: JUMP 000016a6: JUMPDEST 000016a7: PUSH2 0x16e7 000016aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016bf: PUSH32 0x000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e 000016e0: AND 000016e1: CALLER 000016e2: DUP5 000016e3: PUSH2 0x178b 000016e6: JUMP 000016e7: JUMPDEST 000016e8: PUSH1 0x40 000016ea: DUP1 000016eb: MLOAD 000016ec: DUP4 000016ed: DUP2 000016ee: MSTORE 000016ef: PUSH1 0x20 000016f1: DUP2 000016f2: ADD 000016f3: DUP4 000016f4: SWAP1 000016f5: MSTORE 000016f6: CALLER 000016f7: SWAP2 000016f8: PUSH32 0xf279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568 00001719: SWAP2 0000171a: ADD 0000171b: PUSH1 0x40 0000171d: MLOAD 0000171e: DUP1 0000171f: SWAP2 00001720: SUB 00001721: SWAP1 00001722: LOG2 00001723: POP 00001724: POP 00001725: POP 00001726: POP 00001727: POP 00001728: JUMP 00001729: JUMPDEST 0000172a: PUSH1 0x04 0000172c: SLOAD 0000172d: NUMBER 0000172e: EQ 0000172f: PUSH2 0x1749 00001732: JUMPI 00001733: PUSH2 0x173a 00001736: PUSH2 0x1b10 00001739: JUMP 0000173a: JUMPDEST 0000173b: PUSH1 0x06 0000173d: SSTORE 0000173e: PUSH2 0x1745 00001741: PUSH2 0x1af9 00001744: JUMP 00001745: JUMPDEST 00001746: PUSH1 0x04 00001748: SSTORE 00001749: JUMPDEST 0000174a: PUSH2 0x1752 0000174d: DUP2 0000174e: PUSH2 0x1357 00001751: JUMP 00001752: JUMPDEST 00001753: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001768: SWAP1 00001769: SWAP2 0000176a: AND 0000176b: PUSH1 0x00 0000176d: SWAP1 0000176e: DUP2 0000176f: MSTORE 00001770: PUSH1 0x08 00001772: PUSH1 0x20 00001774: MSTORE 00001775: PUSH1 0x40 00001777: SWAP1 00001778: KECCAK256 00001779: PUSH1 0x02 0000177b: DUP2 0000177c: ADD 0000177d: SWAP2 0000177e: SWAP1 0000177f: SWAP2 00001780: SSTORE 00001781: PUSH1 0x06 00001783: SLOAD 00001784: PUSH1 0x01 00001786: SWAP1 00001787: SWAP2 00001788: ADD 00001789: SSTORE 0000178a: JUMP 0000178b: JUMPDEST 0000178c: PUSH1 0x40 0000178e: MLOAD 0000178f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017a4: DUP4 000017a5: AND 000017a6: PUSH1 0x24 000017a8: DUP3 000017a9: ADD 000017aa: MSTORE 000017ab: PUSH1 0x44 000017ad: DUP2 000017ae: ADD 000017af: DUP3 000017b0: SWAP1 000017b1: MSTORE 000017b2: PUSH2 0x185f 000017b5: SWAP1 000017b6: DUP5 000017b7: SWAP1 000017b8: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 000017d9: SWAP1 000017da: PUSH1 0x64 000017dc: ADD 000017dd: JUMPDEST 000017de: PUSH1 0x40 000017e0: DUP1 000017e1: MLOAD 000017e2: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00001803: DUP2 00001804: DUP5 00001805: SUB 00001806: ADD 00001807: DUP2 00001808: MSTORE 00001809: SWAP2 0000180a: SWAP1 0000180b: MSTORE 0000180c: PUSH1 0x20 0000180e: DUP2 0000180f: ADD 00001810: DUP1 00001811: MLOAD 00001812: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000182f: AND 00001830: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00001851: SWAP1 00001852: SWAP4 00001853: AND 00001854: SWAP3 00001855: SWAP1 00001856: SWAP3 00001857: OR 00001858: SWAP1 00001859: SWAP2 0000185a: MSTORE 0000185b: PUSH2 0x1b73 0000185e: JUMP 0000185f: JUMPDEST 00001860: POP 00001861: POP 00001862: POP 00001863: JUMP 00001864: JUMPDEST 00001865: PUSH1 0x01 00001867: DUP1 00001868: SLOAD 00001869: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000187e: DUP4 0000187f: DUP2 00001880: AND 00001881: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000018a2: DUP4 000018a3: AND 000018a4: DUP2 000018a5: OR 000018a6: SWAP1 000018a7: SWAP4 000018a8: SSTORE 000018a9: PUSH1 0x40 000018ab: MLOAD 000018ac: SWAP2 000018ad: AND 000018ae: SWAP2 000018af: SWAP1 000018b0: DUP3 000018b1: SWAP1 000018b2: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000018d3: SWAP1 000018d4: PUSH1 0x00 000018d6: SWAP1 000018d7: LOG3 000018d8: POP 000018d9: POP 000018da: JUMP 000018db: JUMPDEST 000018dc: PUSH1 0x40 000018de: MLOAD 000018df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018f4: DUP1 000018f5: DUP6 000018f6: AND 000018f7: PUSH1 0x24 000018f9: DUP4 000018fa: ADD 000018fb: MSTORE 000018fc: DUP4 000018fd: AND 000018fe: PUSH1 0x44 00001900: DUP3 00001901: ADD 00001902: MSTORE 00001903: PUSH1 0x64 00001905: DUP2 00001906: ADD 00001907: DUP3 00001908: SWAP1 00001909: MSTORE 0000190a: PUSH2 0x1939 0000190d: SWAP1 0000190e: DUP6 0000190f: SWAP1 00001910: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00001931: SWAP1 00001932: PUSH1 0x84 00001934: ADD 00001935: PUSH2 0x17dd 00001938: JUMP 00001939: JUMPDEST 0000193a: POP 0000193b: POP 0000193c: POP 0000193d: POP 0000193e: JUMP 0000193f: JUMPDEST 00001940: PUSH1 0x40 00001942: MLOAD 00001943: PUSH32 0xdd62ed3e00000000000000000000000000000000000000000000000000000000 00001964: DUP2 00001965: MSTORE 00001966: ADDRESS 00001967: PUSH1 0x04 00001969: DUP3 0000196a: ADD 0000196b: MSTORE 0000196c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001981: DUP3 00001982: DUP2 00001983: AND 00001984: PUSH1 0x24 00001986: DUP4 00001987: ADD 00001988: MSTORE 00001989: DUP4 0000198a: SWAP2 0000198b: PUSH32 0x000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e 000019ac: SWAP1 000019ad: SWAP2 000019ae: AND 000019af: SWAP1 000019b0: PUSH4 0xdd62ed3e 000019b5: SWAP1 000019b6: PUSH1 0x44 000019b8: ADD 000019b9: PUSH1 0x20 000019bb: PUSH1 0x40 000019bd: MLOAD 000019be: DUP1 000019bf: DUP4 000019c0: SUB 000019c1: DUP2 000019c2: DUP7 000019c3: DUP1 000019c4: EXTCODESIZE 000019c5: ISZERO 000019c6: DUP1 000019c7: ISZERO 000019c8: PUSH2 0x19d0 000019cb: JUMPI 000019cc: PUSH1 0x00 000019ce: DUP1 000019cf: REVERT 000019d0: JUMPDEST 000019d1: POP 000019d2: GAS 000019d3: STATICCALL 000019d4: ISZERO 000019d5: DUP1 000019d6: ISZERO 000019d7: PUSH2 0x19e4 000019da: JUMPI 000019db: RETURNDATASIZE 000019dc: PUSH1 0x00 000019de: DUP1 000019df: RETURNDATACOPY 000019e0: RETURNDATASIZE 000019e1: PUSH1 0x00 000019e3: REVERT 000019e4: JUMPDEST 000019e5: POP 000019e6: POP 000019e7: POP 000019e8: POP 000019e9: PUSH1 0x40 000019eb: MLOAD 000019ec: RETURNDATASIZE 000019ed: PUSH1 0x1f 000019ef: NOT 000019f0: PUSH1 0x1f 000019f2: DUP3 000019f3: ADD 000019f4: AND 000019f5: DUP3 000019f6: ADD 000019f7: DUP1 000019f8: PUSH1 0x40 000019fa: MSTORE 000019fb: POP 000019fc: DUP2 000019fd: ADD 000019fe: SWAP1 000019ff: PUSH2 0x1a08 00001a02: SWAP2 00001a03: SWAP1 00001a04: PUSH2 0x1ed9 00001a07: JUMP 00001a08: JUMPDEST 00001a09: LT 00001a0a: ISZERO 00001a0b: PUSH2 0x1af5 00001a0e: JUMPI 00001a0f: PUSH1 0x40 00001a11: MLOAD 00001a12: PUSH32 0x095ea7b300000000000000000000000000000000000000000000000000000000 00001a33: DUP2 00001a34: MSTORE 00001a35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a4a: DUP3 00001a4b: DUP2 00001a4c: AND 00001a4d: PUSH1 0x04 00001a4f: DUP4 00001a50: ADD 00001a51: MSTORE 00001a52: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001a73: PUSH1 0x24 00001a75: DUP4 00001a76: ADD 00001a77: MSTORE 00001a78: PUSH32 0x000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e 00001a99: AND 00001a9a: SWAP1 00001a9b: PUSH4 0x095ea7b3 00001aa0: SWAP1 00001aa1: PUSH1 0x44 00001aa3: ADD 00001aa4: PUSH1 0x20 00001aa6: PUSH1 0x40 00001aa8: MLOAD 00001aa9: DUP1 00001aaa: DUP4 00001aab: SUB 00001aac: DUP2 00001aad: PUSH1 0x00 00001aaf: DUP8 00001ab0: DUP1 00001ab1: EXTCODESIZE 00001ab2: ISZERO 00001ab3: DUP1 00001ab4: ISZERO 00001ab5: PUSH2 0x1abd 00001ab8: JUMPI 00001ab9: PUSH1 0x00 00001abb: DUP1 00001abc: REVERT 00001abd: JUMPDEST 00001abe: POP 00001abf: GAS 00001ac0: CALL 00001ac1: ISZERO 00001ac2: DUP1 00001ac3: ISZERO 00001ac4: PUSH2 0x1ad1 00001ac7: JUMPI 00001ac8: RETURNDATASIZE 00001ac9: PUSH1 0x00 00001acb: DUP1 00001acc: RETURNDATACOPY 00001acd: RETURNDATASIZE 00001ace: PUSH1 0x00 00001ad0: REVERT 00001ad1: JUMPDEST 00001ad2: POP 00001ad3: POP 00001ad4: POP 00001ad5: POP 00001ad6: PUSH1 0x40 00001ad8: MLOAD 00001ad9: RETURNDATASIZE 00001ada: PUSH1 0x1f 00001adc: NOT 00001add: PUSH1 0x1f 00001adf: DUP3 00001ae0: ADD 00001ae1: AND 00001ae2: DUP3 00001ae3: ADD 00001ae4: DUP1 00001ae5: PUSH1 0x40 00001ae7: MSTORE 00001ae8: POP 00001ae9: DUP2 00001aea: ADD 00001aeb: SWAP1 00001aec: PUSH2 0x185f 00001aef: SWAP2 00001af0: SWAP1 00001af1: PUSH2 0x1ebc 00001af4: JUMP 00001af5: JUMPDEST 00001af6: POP 00001af7: POP 00001af8: JUMP 00001af9: JUMPDEST 00001afa: PUSH1 0x00 00001afc: PUSH1 0x05 00001afe: SLOAD 00001aff: NUMBER 00001b00: LT 00001b01: PUSH2 0x1b0b 00001b04: JUMPI 00001b05: POP 00001b06: PUSH1 0x05 00001b08: SLOAD 00001b09: SWAP1 00001b0a: JUMP 00001b0b: JUMPDEST 00001b0c: POP 00001b0d: NUMBER 00001b0e: SWAP1 00001b0f: JUMP 00001b10: JUMPDEST 00001b11: PUSH1 0x00 00001b13: PUSH1 0x07 00001b15: SLOAD 00001b16: PUSH1 0x00 00001b18: EQ 00001b19: ISZERO 00001b1a: PUSH2 0x1b24 00001b1d: JUMPI 00001b1e: POP 00001b1f: PUSH1 0x06 00001b21: SLOAD 00001b22: SWAP1 00001b23: JUMP 00001b24: JUMPDEST 00001b25: PUSH1 0x07 00001b27: SLOAD 00001b28: PUSH8 0x0de0b6b3a7640000 00001b31: PUSH1 0x02 00001b33: SLOAD 00001b34: PUSH2 0x1b3d 00001b37: SWAP2 00001b38: SWAP1 00001b39: PUSH2 0x2028 00001b3c: JUMP 00001b3d: JUMPDEST 00001b3e: PUSH1 0x04 00001b40: SLOAD 00001b41: PUSH2 0x1b48 00001b44: PUSH2 0x1af9 00001b47: JUMP 00001b48: JUMPDEST 00001b49: PUSH2 0x1b52 00001b4c: SWAP2 00001b4d: SWAP1 00001b4e: PUSH2 0x2065 00001b51: JUMP 00001b52: JUMPDEST 00001b53: PUSH2 0x1b5c 00001b56: SWAP2 00001b57: SWAP1 00001b58: PUSH2 0x2028 00001b5b: JUMP 00001b5c: JUMPDEST 00001b5d: PUSH2 0x1b66 00001b60: SWAP2 00001b61: SWAP1 00001b62: PUSH2 0x1fed 00001b65: JUMP 00001b66: JUMPDEST 00001b67: PUSH1 0x06 00001b69: SLOAD 00001b6a: PUSH2 0x101c 00001b6d: SWAP2 00001b6e: SWAP1 00001b6f: PUSH2 0x1fd5 00001b72: JUMP 00001b73: JUMPDEST 00001b74: PUSH1 0x00 00001b76: PUSH2 0x1bd5 00001b79: DUP3 00001b7a: PUSH1 0x40 00001b7c: MLOAD 00001b7d: DUP1 00001b7e: PUSH1 0x40 00001b80: ADD 00001b81: PUSH1 0x40 00001b83: MSTORE 00001b84: DUP1 00001b85: PUSH1 0x20 00001b87: DUP2 00001b88: MSTORE 00001b89: PUSH1 0x20 00001b8b: ADD 00001b8c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00001bad: DUP2 00001bae: MSTORE 00001baf: POP 00001bb0: DUP6 00001bb1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bc6: AND 00001bc7: PUSH2 0x1c7f 00001bca: SWAP1 00001bcb: SWAP3 00001bcc: SWAP2 00001bcd: SWAP1 00001bce: PUSH4 0xffffffff 00001bd3: AND 00001bd4: JUMP 00001bd5: JUMPDEST 00001bd6: DUP1 00001bd7: MLOAD 00001bd8: SWAP1 00001bd9: SWAP2 00001bda: POP 00001bdb: ISZERO 00001bdc: PUSH2 0x185f 00001bdf: JUMPI 00001be0: DUP1 00001be1: DUP1 00001be2: PUSH1 0x20 00001be4: ADD 00001be5: SWAP1 00001be6: MLOAD 00001be7: DUP2 00001be8: ADD 00001be9: SWAP1 00001bea: PUSH2 0x1bf3 00001bed: SWAP2 00001bee: SWAP1 00001bef: PUSH2 0x1ebc 00001bf2: JUMP 00001bf3: JUMPDEST 00001bf4: PUSH2 0x185f 00001bf7: JUMPI 00001bf8: PUSH1 0x40 00001bfa: MLOAD 00001bfb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001c1c: DUP2 00001c1d: MSTORE 00001c1e: PUSH1 0x20 00001c20: PUSH1 0x04 00001c22: DUP3 00001c23: ADD 00001c24: MSTORE 00001c25: PUSH1 0x2a 00001c27: PUSH1 0x24 00001c29: DUP3 00001c2a: ADD 00001c2b: MSTORE 00001c2c: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00001c4d: PUSH1 0x44 00001c4f: DUP3 00001c50: ADD 00001c51: MSTORE 00001c52: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00001c73: PUSH1 0x64 00001c75: DUP3 00001c76: ADD 00001c77: MSTORE 00001c78: PUSH1 0x84 00001c7a: ADD 00001c7b: PUSH2 0x040d 00001c7e: JUMP 00001c7f: JUMPDEST 00001c80: PUSH1 0x60 00001c82: PUSH2 0x1c8e 00001c85: DUP5 00001c86: DUP5 00001c87: PUSH1 0x00 00001c89: DUP6 00001c8a: PUSH2 0x1c96 00001c8d: JUMP 00001c8e: JUMPDEST 00001c8f: SWAP5 00001c90: SWAP4 00001c91: POP 00001c92: POP 00001c93: POP 00001c94: POP 00001c95: JUMP 00001c96: JUMPDEST 00001c97: PUSH1 0x60 00001c99: DUP3 00001c9a: SELFBALANCE 00001c9b: LT 00001c9c: ISZERO 00001c9d: PUSH2 0x1d28 00001ca0: JUMPI 00001ca1: PUSH1 0x40 00001ca3: MLOAD 00001ca4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001cc5: DUP2 00001cc6: MSTORE 00001cc7: PUSH1 0x20 00001cc9: PUSH1 0x04 00001ccb: DUP3 00001ccc: ADD 00001ccd: MSTORE 00001cce: PUSH1 0x26 00001cd0: PUSH1 0x24 00001cd2: DUP3 00001cd3: ADD 00001cd4: MSTORE 00001cd5: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00001cf6: PUSH1 0x44 00001cf8: DUP3 00001cf9: ADD 00001cfa: MSTORE 00001cfb: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00001d1c: PUSH1 0x64 00001d1e: DUP3 00001d1f: ADD 00001d20: MSTORE 00001d21: PUSH1 0x84 00001d23: ADD 00001d24: PUSH2 0x040d 00001d27: JUMP 00001d28: JUMPDEST 00001d29: DUP5 00001d2a: EXTCODESIZE 00001d2b: PUSH2 0x1d90 00001d2e: JUMPI 00001d2f: PUSH1 0x40 00001d31: MLOAD 00001d32: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001d53: DUP2 00001d54: MSTORE 00001d55: PUSH1 0x20 00001d57: PUSH1 0x04 00001d59: DUP3 00001d5a: ADD 00001d5b: MSTORE 00001d5c: PUSH1 0x1d 00001d5e: PUSH1 0x24 00001d60: DUP3 00001d61: ADD 00001d62: MSTORE 00001d63: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00001d84: PUSH1 0x44 00001d86: DUP3 00001d87: ADD 00001d88: MSTORE 00001d89: PUSH1 0x64 00001d8b: ADD 00001d8c: PUSH2 0x040d 00001d8f: JUMP 00001d90: JUMPDEST 00001d91: PUSH1 0x00 00001d93: DUP1 00001d94: DUP7 00001d95: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001daa: AND 00001dab: DUP6 00001dac: DUP8 00001dad: PUSH1 0x40 00001daf: MLOAD 00001db0: PUSH2 0x1db9 00001db3: SWAP2 00001db4: SWAP1 00001db5: PUSH2 0x1f68 00001db8: JUMP 00001db9: JUMPDEST 00001dba: PUSH1 0x00 00001dbc: PUSH1 0x40 00001dbe: MLOAD 00001dbf: DUP1 00001dc0: DUP4 00001dc1: SUB 00001dc2: DUP2 00001dc3: DUP6 00001dc4: DUP8 00001dc5: GAS 00001dc6: CALL 00001dc7: SWAP3 00001dc8: POP 00001dc9: POP 00001dca: POP 00001dcb: RETURNDATASIZE 00001dcc: DUP1 00001dcd: PUSH1 0x00 00001dcf: DUP2 00001dd0: EQ 00001dd1: PUSH2 0x1df6 00001dd4: JUMPI 00001dd5: PUSH1 0x40 00001dd7: MLOAD 00001dd8: SWAP2 00001dd9: POP 00001dda: PUSH1 0x1f 00001ddc: NOT 00001ddd: PUSH1 0x3f 00001ddf: RETURNDATASIZE 00001de0: ADD 00001de1: AND 00001de2: DUP3 00001de3: ADD 00001de4: PUSH1 0x40 00001de6: MSTORE 00001de7: RETURNDATASIZE 00001de8: DUP3 00001de9: MSTORE 00001dea: RETURNDATASIZE 00001deb: PUSH1 0x00 00001ded: PUSH1 0x20 00001def: DUP5 00001df0: ADD 00001df1: RETURNDATACOPY 00001df2: PUSH2 0x1dfb 00001df5: JUMP 00001df6: JUMPDEST 00001df7: PUSH1 0x60 00001df9: SWAP2 00001dfa: POP 00001dfb: JUMPDEST 00001dfc: POP 00001dfd: SWAP2 00001dfe: POP 00001dff: SWAP2 00001e00: POP 00001e01: PUSH2 0x1e0b 00001e04: DUP3 00001e05: DUP3 00001e06: DUP7 00001e07: PUSH2 0x1e16 00001e0a: JUMP 00001e0b: JUMPDEST 00001e0c: SWAP8 00001e0d: SWAP7 00001e0e: POP 00001e0f: POP 00001e10: POP 00001e11: POP 00001e12: POP 00001e13: POP 00001e14: POP 00001e15: JUMP 00001e16: JUMPDEST 00001e17: PUSH1 0x60 00001e19: DUP4 00001e1a: ISZERO 00001e1b: PUSH2 0x1e25 00001e1e: JUMPI 00001e1f: POP 00001e20: DUP2 00001e21: PUSH2 0x1220 00001e24: JUMP 00001e25: JUMPDEST 00001e26: DUP3 00001e27: MLOAD 00001e28: ISZERO 00001e29: PUSH2 0x1e35 00001e2c: JUMPI 00001e2d: DUP3 00001e2e: MLOAD 00001e2f: DUP1 00001e30: DUP5 00001e31: PUSH1 0x20 00001e33: ADD 00001e34: REVERT 00001e35: JUMPDEST 00001e36: DUP2 00001e37: PUSH1 0x40 00001e39: MLOAD 00001e3a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001e5b: DUP2 00001e5c: MSTORE 00001e5d: PUSH1 0x04 00001e5f: ADD 00001e60: PUSH2 0x040d 00001e63: SWAP2 00001e64: SWAP1 00001e65: PUSH2 0x1f84 00001e68: JUMP 00001e69: JUMPDEST 00001e6a: PUSH1 0x00 00001e6c: PUSH1 0x20 00001e6e: DUP3 00001e6f: DUP5 00001e70: SUB 00001e71: SLT 00001e72: ISZERO 00001e73: PUSH2 0x1e7b 00001e76: JUMPI 00001e77: PUSH1 0x00 00001e79: DUP1 00001e7a: REVERT 00001e7b: JUMPDEST 00001e7c: DUP2 00001e7d: CALLDATALOAD 00001e7e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e93: DUP2 00001e94: AND 00001e95: DUP2 00001e96: EQ 00001e97: PUSH2 0x1220 00001e9a: JUMPI 00001e9b: PUSH1 0x00 00001e9d: DUP1 00001e9e: REVERT 00001e9f: JUMPDEST 00001ea0: PUSH1 0x00 00001ea2: PUSH1 0x20 00001ea4: DUP3 00001ea5: DUP5 00001ea6: SUB 00001ea7: SLT 00001ea8: ISZERO 00001ea9: PUSH2 0x1eb1 00001eac: JUMPI 00001ead: PUSH1 0x00 00001eaf: DUP1 00001eb0: REVERT 00001eb1: JUMPDEST 00001eb2: DUP2 00001eb3: CALLDATALOAD 00001eb4: PUSH2 0x1220 00001eb7: DUP2 00001eb8: PUSH2 0x20d7 00001ebb: JUMP 00001ebc: JUMPDEST 00001ebd: PUSH1 0x00 00001ebf: PUSH1 0x20 00001ec1: DUP3 00001ec2: DUP5 00001ec3: SUB 00001ec4: SLT 00001ec5: ISZERO 00001ec6: PUSH2 0x1ece 00001ec9: JUMPI 00001eca: PUSH1 0x00 00001ecc: DUP1 00001ecd: REVERT 00001ece: JUMPDEST 00001ecf: DUP2 00001ed0: MLOAD 00001ed1: PUSH2 0x1220 00001ed4: DUP2 00001ed5: PUSH2 0x20d7 00001ed8: JUMP 00001ed9: JUMPDEST 00001eda: PUSH1 0x00 00001edc: PUSH1 0x20 00001ede: DUP3 00001edf: DUP5 00001ee0: SUB 00001ee1: SLT 00001ee2: ISZERO 00001ee3: PUSH2 0x1eeb 00001ee6: JUMPI 00001ee7: PUSH1 0x00 00001ee9: DUP1 00001eea: REVERT 00001eeb: JUMPDEST 00001eec: POP 00001eed: MLOAD 00001eee: SWAP2 00001eef: SWAP1 00001ef0: POP 00001ef1: JUMP 00001ef2: JUMPDEST 00001ef3: PUSH1 0x00 00001ef5: DUP1 00001ef6: PUSH1 0x40 00001ef8: DUP4 00001ef9: DUP6 00001efa: SUB 00001efb: SLT 00001efc: ISZERO 00001efd: PUSH2 0x1f05 00001f00: JUMPI 00001f01: PUSH1 0x00 00001f03: DUP1 00001f04: REVERT 00001f05: JUMPDEST 00001f06: DUP3 00001f07: CALLDATALOAD 00001f08: SWAP2 00001f09: POP 00001f0a: PUSH1 0x20 00001f0c: DUP4 00001f0d: ADD 00001f0e: CALLDATALOAD 00001f0f: PUSH2 0x1f17 00001f12: DUP2 00001f13: PUSH2 0x20d7 00001f16: JUMP 00001f17: JUMPDEST 00001f18: DUP1 00001f19: SWAP2 00001f1a: POP 00001f1b: POP 00001f1c: SWAP3 00001f1d: POP 00001f1e: SWAP3 00001f1f: SWAP1 00001f20: POP 00001f21: JUMP 00001f22: JUMPDEST 00001f23: PUSH1 0x00 00001f25: DUP1 00001f26: PUSH1 0x40 00001f28: DUP4 00001f29: DUP6 00001f2a: SUB 00001f2b: SLT 00001f2c: ISZERO 00001f2d: PUSH2 0x1f35 00001f30: JUMPI 00001f31: PUSH1 0x00 00001f33: DUP1 00001f34: REVERT 00001f35: JUMPDEST 00001f36: POP 00001f37: POP 00001f38: DUP1 00001f39: CALLDATALOAD 00001f3a: SWAP3 00001f3b: PUSH1 0x20 00001f3d: SWAP1 00001f3e: SWAP2 00001f3f: ADD 00001f40: CALLDATALOAD 00001f41: SWAP2 00001f42: POP 00001f43: JUMP 00001f44: JUMPDEST 00001f45: PUSH1 0x00 00001f47: DUP1 00001f48: PUSH1 0x40 00001f4a: DUP4 00001f4b: DUP6 00001f4c: SUB 00001f4d: SLT 00001f4e: ISZERO 00001f4f: PUSH2 0x1f57 00001f52: JUMPI 00001f53: PUSH1 0x00 00001f55: DUP1 00001f56: REVERT 00001f57: JUMPDEST 00001f58: POP 00001f59: POP 00001f5a: DUP1 00001f5b: MLOAD 00001f5c: PUSH1 0x20 00001f5e: SWAP1 00001f5f: SWAP2 00001f60: ADD 00001f61: MLOAD 00001f62: SWAP1 00001f63: SWAP3 00001f64: SWAP1 00001f65: SWAP2 00001f66: POP 00001f67: JUMP 00001f68: JUMPDEST 00001f69: PUSH1 0x00 00001f6b: DUP3 00001f6c: MLOAD 00001f6d: PUSH2 0x1f7a 00001f70: DUP2 00001f71: DUP5 00001f72: PUSH1 0x20 00001f74: DUP8 00001f75: ADD 00001f76: PUSH2 0x207c 00001f79: JUMP 00001f7a: JUMPDEST 00001f7b: SWAP2 00001f7c: SWAP1 00001f7d: SWAP2 00001f7e: ADD 00001f7f: SWAP3 00001f80: SWAP2 00001f81: POP 00001f82: POP 00001f83: JUMP 00001f84: JUMPDEST 00001f85: PUSH1 0x20 00001f87: DUP2 00001f88: MSTORE 00001f89: PUSH1 0x00 00001f8b: DUP3 00001f8c: MLOAD 00001f8d: DUP1 00001f8e: PUSH1 0x20 00001f90: DUP5 00001f91: ADD 00001f92: MSTORE 00001f93: PUSH2 0x1fa3 00001f96: DUP2 00001f97: PUSH1 0x40 00001f99: DUP6 00001f9a: ADD 00001f9b: PUSH1 0x20 00001f9d: DUP8 00001f9e: ADD 00001f9f: PUSH2 0x207c 00001fa2: JUMP 00001fa3: JUMPDEST 00001fa4: PUSH1 0x1f 00001fa6: ADD 00001fa7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00001fc8: AND 00001fc9: SWAP2 00001fca: SWAP1 00001fcb: SWAP2 00001fcc: ADD 00001fcd: PUSH1 0x40 00001fcf: ADD 00001fd0: SWAP3 00001fd1: SWAP2 00001fd2: POP 00001fd3: POP 00001fd4: JUMP 00001fd5: JUMPDEST 00001fd6: PUSH1 0x00 00001fd8: DUP3 00001fd9: NOT 00001fda: DUP3 00001fdb: GT 00001fdc: ISZERO 00001fdd: PUSH2 0x1fe8 00001fe0: JUMPI 00001fe1: PUSH2 0x1fe8 00001fe4: PUSH2 0x20a8 00001fe7: JUMP 00001fe8: JUMPDEST 00001fe9: POP 00001fea: ADD 00001feb: SWAP1 00001fec: JUMP 00001fed: JUMPDEST 00001fee: PUSH1 0x00 00001ff0: DUP3 00001ff1: PUSH2 0x2023 00001ff4: JUMPI 00001ff5: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002016: PUSH1 0x00 00002018: MSTORE 00002019: PUSH1 0x12 0000201b: PUSH1 0x04 0000201d: MSTORE 0000201e: PUSH1 0x24 00002020: PUSH1 0x00 00002022: REVERT 00002023: JUMPDEST 00002024: POP 00002025: DIV 00002026: SWAP1 00002027: JUMP 00002028: JUMPDEST 00002029: PUSH1 0x00 0000202b: DUP2 0000202c: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000204d: DIV 0000204e: DUP4 0000204f: GT 00002050: DUP3 00002051: ISZERO 00002052: ISZERO 00002053: AND 00002054: ISZERO 00002055: PUSH2 0x2060 00002058: JUMPI 00002059: PUSH2 0x2060 0000205c: PUSH2 0x20a8 0000205f: JUMP 00002060: JUMPDEST 00002061: POP 00002062: MUL 00002063: SWAP1 00002064: JUMP 00002065: JUMPDEST 00002066: PUSH1 0x00 00002068: DUP3 00002069: DUP3 0000206a: LT 0000206b: ISZERO 0000206c: PUSH2 0x2077 0000206f: JUMPI 00002070: PUSH2 0x2077 00002073: PUSH2 0x20a8 00002076: JUMP 00002077: JUMPDEST 00002078: POP 00002079: SUB 0000207a: SWAP1 0000207b: JUMP 0000207c: JUMPDEST 0000207d: PUSH1 0x00 0000207f: JUMPDEST 00002080: DUP4 00002081: DUP2 00002082: LT 00002083: ISZERO 00002084: PUSH2 0x2097 00002087: JUMPI 00002088: DUP2 00002089: DUP2 0000208a: ADD 0000208b: MLOAD 0000208c: DUP4 0000208d: DUP3 0000208e: ADD 0000208f: MSTORE 00002090: PUSH1 0x20 00002092: ADD 00002093: PUSH2 0x207f 00002096: JUMP 00002097: JUMPDEST 00002098: DUP4 00002099: DUP2 0000209a: GT 0000209b: ISZERO 0000209c: PUSH2 0x1939 0000209f: JUMPI 000020a0: POP 000020a1: POP 000020a2: PUSH1 0x00 000020a4: SWAP2 000020a5: ADD 000020a6: MSTORE 000020a7: JUMP 000020a8: JUMPDEST 000020a9: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000020ca: PUSH1 0x00 000020cc: MSTORE 000020cd: PUSH1 0x11 000020cf: PUSH1 0x04 000020d1: MSTORE 000020d2: PUSH1 0x24 000020d4: PUSH1 0x00 000020d6: REVERT 000020d7: JUMPDEST 000020d8: DUP1 000020d9: ISZERO 000020da: ISZERO 000020db: DUP2 000020dc: EQ 000020dd: PUSH2 0x1354 000020e0: JUMPI 000020e1: PUSH1 0x00 000020e3: DUP1 000020e4: REVERT 000020e5: INVALID 000020e6: LOG2 000020e7: PUSH5 0x6970667358 000020ed: UNKNOWN(0x22) 000020ee: SLT 000020ef: KECCAK256 000020f0: DUP10 000020f1: UNKNOWN(0x23) 000020f2: SWAP5 000020f3: UNKNOWN(0xBD) 000020f4: PUSH1 0x2f 000020f6: PUSH23 0x0585958d632858341fe21a5e591dbda65cc1cbb3cd5b76 0000210e: CALLER 0000210f: UNKNOWN(0xD6) 00002110: PUSH5 0x736f6c6343 00002116: STOP 00002117: ADDMOD 00002118: SMOD 00002119: STOP 0000211a: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x4c002c4d6585696f340e0d1ced59696a26152fb5dc9e8955aeff8a5fa25cf4f2
call_targets:
0xbcd7254a1d759efa08ec7c3291b2e85c5dcc12ce
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4c002c4d6585696f340e0d1ced59696a26152fb5dc9e8955aeff8a5fa25cf4f2",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xbcd7254a1d759efa08ec7c3291b2e85c5dcc12ce"
],
"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": "0xdf136d65",
"selector": "0xdf136d65",
"calldata_variants": [
"0xdf136d65",
"0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf7c618c1",
"selector": "0xf7c618c1",
"calldata_variants": [
"0xf7c618c1",
"0xf7c618c10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xab5e32af",
"selector": "0xab5e32af",
"calldata_variants": [
"0xab5e32af",
"0xab5e32af0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb4aec61",
"selector": "0xcb4aec61",
"calldata_variants": [
"0xcb4aec61",
"0xcb4aec610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xccd34cd5",
"selector": "0xccd34cd5",
"calldata_variants": [
"0xccd34cd5",
"0xccd34cd50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa218141b",
"selector": "0xa218141b",
"calldata_variants": [
"0xa218141b",
"0xa218141b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1611,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3220,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4022,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x4c002c4d6585696f340e0d1ced59696a26152fb5dc9e8955aeff8a5fa25cf4f2
call_targets:
0xbcd7254a1d759efa08ec7c3291b2e85c5dcc12ce
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4c002c4d6585696f340e0d1ced59696a26152fb5dc9e8955aeff8a5fa25cf4f2",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xbcd7254a1d759efa08ec7c3291b2e85c5dcc12ce"
],
"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": "0xdf136d65",
"selector": "0xdf136d65",
"calldata_variants": [
"0xdf136d65",
"0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf7c618c1",
"selector": "0xf7c618c1",
"calldata_variants": [
"0xf7c618c1",
"0xf7c618c10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xab5e32af",
"selector": "0xab5e32af",
"calldata_variants": [
"0xab5e32af",
"0xab5e32af0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb4aec61",
"selector": "0xcb4aec61",
"calldata_variants": [
"0xcb4aec61",
"0xcb4aec610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xccd34cd5",
"selector": "0xccd34cd5",
"calldata_variants": [
"0xccd34cd5",
"0xccd34cd50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa218141b",
"selector": "0xa218141b",
"calldata_variants": [
"0xa218141b",
"0xa218141b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1611,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3220,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4022,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| medium | math | codex | Reward accrual can be skipped when updateRewards resets lastUpdateBlock | 75 | no | — |
viewevidence_json{
"evidence": "updateRewards adjusts currentRewardPerBlock and then sets lastUpdateBlock/periodEndBlock without updating rewardPerTokenStored, so accrued rewards between the prior lastUpdateBlock and this call are skipped.",
"locations": [
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:182",
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:192"
],
"recommendation": "Update rewardPerTokenStored before changing lastUpdateBlock (e.g., call _updateReward(address(0)) or inline rewardPerTokenStored = _rewardPerToken(); lastUpdateBlock = _lastRewardBlock();) and consider restricting updateRewards to period boundaries.",
"exploit_scenario": "The owner (or a compromised reward distributor) calls updateRewards mid-period before any user interaction. Because rewardPerTokenStored is not updated and lastUpdateBlock is reset to the current block, rewards accrued since the previous lastUpdateBlock are discarded, reducing user payouts for that interval."
}
|
| low | other | codex | Unchecked return values on token operations can mask failures | 65 | no | — |
viewevidence_json{
"evidence": "FeeSharingSystem calls approve without checking the return value, and TokenDistributor calls mint(tokenSplitter, ...) without checking the returned bool.",
"locations": [
"contracts/contracts/tokenStaking/FeeSharingSystem.sol:256",
"contracts/contracts/tokenStaking/TokenDistributor.sol:357"
],
"recommendation": "Use SafeERC20 helpers (safeApprove/safeIncreaseAllowance) or explicitly require approve to succeed; require mint to tokenSplitter to succeed or revert to avoid silent reward-schedule divergence.",
"exploit_scenario": "If LOOKS token operations return false (paused/non-standard token), the contracts continue execution. FeeSharingSystem may proceed despite a failed approve, and TokenDistributor may advance reward state even if minting to tokenSplitter failed, silently skipping expected token flows."
}
|
| 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
}
|
| 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": 14
}
|