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

Analysis Run

46a061cb-b215-4d54-b156-a9ace98d5799

complete
Chain ID
1
Address
Block Number
Created
Fri, Dec 26, 2025 3:31 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Found one medium-severity accounting issue in FeeSharingSystem reward updates and one low-severity unchecked token return value issue.
View stderr
[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"]}]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
14
EXT*/BALANCE
14
Total opcodes
3570
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 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
view
trace_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
view
evidence_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
view
evidence_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
view
evidence_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
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 14
}