019bb004-7ac1-71ec-a3df-76571e731ff7
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 39297 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39298 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39299 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39300 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39301 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39302 | detector.run | complete | 1 / 3 | 3 months ago |
| 39303 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39452 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39453 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-0mud7ax9) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-0mud7ax9) DRSCoin.getUnpaidPerfit(uint32,uint32,uint256) (contracts/Contract.sol#533-552) uses a dangerous strict equality: - _startMonth == _endMonth (contracts/Contract.sol#540) DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses a dangerous strict equality: - _startMonth == 0 (contracts/Contract.sol#455) DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses a dangerous strict equality: - _nowMonth == _startMonth (contracts/Contract.sol#456) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities TimeUtils.parseTimestampToYM(uint256).month (contracts/Contract.sol#219) is a local variable never initialized Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables DRSCoin.settleEth(address,uint32,uint32) (contracts/Contract.sol#452-472) uses timestamp for comparisons Dangerous comparisons: - require(bool)(_nowMonth >= _startMonth) (contracts/Contract.sol#454) - _startMonth == 0 (contracts/Contract.sol#455) - _nowMonth == _startMonth (contracts/Contract.sol#456) DRSCoin.getUnpaidPerfit(uint32,uint32,uint256) (contracts/Contract.sol#533-552) uses timestamp for comparisons Dangerous comparisons: - require(bool)(_startMonth > 0) (contracts/Contract.sol#537) - require(bool)(_endMonth >= _startMonth) (contracts/Contract.sol#537-539) - _startMonth == _endMonth (contracts/Contract.sol#540) - j < _endMonth (contracts/Contract.sol#542-543) DRSCoin.addGame(address) (contracts/Contract.sol#666-677) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(proposedGames[gameAddress] > 0,game must be in proposed list first) (contracts/Contract.sol#669-672) - require(bool,string)(now > proposedGames[gameAddress].add(proposingPeriod),game must be debated for 2 days) (contracts/Contract.sol#672-674) DRSCoin.proposeGame(address) (contracts/Contract.sol#677-686) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(proposedGames[gameAddress] == 0,game already in proposed list) (contracts/Contract.sol#684-685) DRSCoin.deleteGame(address) (contracts/Contract.sol#686-696) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(allowedGameAddress[gameAddress] || proposedGames[gameAddress] > 0,game must in allow list or proposed list) (contracts/Contract.sol#687-689) DRSCoin.gameCountdown(address) (contracts/Contract.sol#696-705) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(proposedGames[gameAddress] > 0,game not in proposed list) (contracts/Contract.sol#697-698) - now < proposedTime.add(proposingPeriod) (contracts/Contract.sol#700-701) DRSCoin.getEthPerfit(address) (contracts/Contract.sol#732-751) uses timestamp for comparisons Dangerous comparisons: - _startMonth < _nowMonth && _tokenAmount > 0 (contracts/Contract.sol#744-746) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp Version constraint ^0.4.24 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow - privateCanBeOverridden - SignedArrayStorageCopy - ABIEncoderV2StorageArrayWithMultiSlotElement - DynamicConstructorArgumentsClippedABIV2 - UninitializedFunctionPointerInConstructor_0.4.x - IncorrectEventSignatureInLibraries_0.4.x - ABIEncoderV2PackedStorage_0.4.x - ExpExponentCleanup - EventStructWrongData. It is used by: - ^0.4.24 (contracts/Contract.sol#1) solc-0.4.24 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity DRSCoin (contracts/Contract.sol#354-751) should inherit from DRSCoinInterface (contracts/Contract.sol#345-352) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance Struct TimeUtils._DateTime (contracts/Contract.sol#118-127) is not in CapWords Parameter DRSCoin.settleEth(address,uint32,uint32)._addr (contracts/Contract.sol#452) is not in mixedCase Parameter DRSCoin.settleEth(address,uint32,uint32)._startMonth (contracts/Contract.sol#452) is not in mixedCase Parameter DRSCoin.settleEth(address,uint32,uint32)._nowMonth (contracts/Contract.sol#452) is not in mixedCase Parameter DRSCoin.transfer(address,uint256)._to (contracts/Contract.sol#479) is not in mixedCase Parameter DRSCoin.transfer(address,uint256)._value (contracts/Contract.sol#479) is not in mixedCase Parameter DRSCoin.approve(address,uint256)._spender (contracts/Contract.sol#505) is not in mixedCase Parameter DRSCoin.approve(address,uint256)._value (contracts/Contract.sol#506-507) is not in mixedCase Parameter DRSCoin.transferFrom(address,address,uint256)._from (contracts/Contract.sol#512) is not in mixedCase Parameter DRSCoin.transferFrom(address,address,uint256)._to (contracts/Contract.sol#512) is not in mixedCase Parameter DRSCoin.transferFrom(address,address,uint256)._value (contracts/Contract.sol#512) is not in mixedCase Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._startMonth (contracts/Contract.sol#534) is not in mixedCase Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._endMonth (contracts/Contract.sol#534) is not in mixedCase Parameter DRSCoin.getUnpaidPerfit(uint32,uint32,uint256)._tokenAmount (contracts/Contract.sol#534) is not in mixedCase Parameter DRSCoin.balanceOf(address)._owner (contracts/Contract.sol#566) is not in mixedCase Parameter DRSCoin.allowance(address,address)._owner (contracts/Contract.sol#568) is not in mixedCase Parameter DRSCoin.allowance(address,address)._spender (contracts/Contract.sol#568) is not in mixedCase Parameter DRSCoin.editRestrictedAddress(address)._newRestrictedAddress (contracts/Contract.sol#579-580) is not in mixedCase Parameter DRSCoin.isRestrictedAddress(address)._querryAddress (contracts/Contract.sol#587) is not in mixedCase Parameter DRSCoin.getMintAmount(uint256)._eth (contracts/Contract.sol#591) is not in mixedCase Parameter DRSCoin.mint(address,uint256)._to (contracts/Contract.sol#616) is not in mixedCase Parameter DRSCoin.mint(address,uint256)._eth (contracts/Contract.sol#616) is not in mixedCase Parameter DRSCoin.burn(uint256)._value (contracts/Contract.sol#648-649) is not in mixedCase Parameter DRSCoin.getEthPerfit(address)._addr (contracts/Contract.sol#734) is not in mixedCase Constant DRSCoin.tokenName (contracts/Contract.sol#364-366) is not in UPPER_CASE_WITH_UNDERSCORES Constant DRSCoin.tokenSymbol (contracts/Contract.sol#366-367) is not in UPPER_CASE_WITH_UNDERSCORES Constant DRSCoin.decimalUnits (contracts/Contract.sol#367-368) is not in UPPER_CASE_WITH_UNDERSCORES Constant DRSCoin.proposingPeriod (contracts/Contract.sol#382-383) is not in UPPER_CASE_WITH_UNDERSCORES Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Reentrancy in DRSCoin.withdraw() (contracts/Contract.sol#717-732): External calls: - msg.sender.transfer(_profit) (contracts/Contract.sol#730) Event emitted after the call(s): - Withdraw(msg.sender,_profit) (contracts/Contract.sol#732) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4 DRSCoin.slitherConstructorConstantVariables() (contracts/Contract.sol#354-751) uses literals with too many digits: - tokenReduceValue = 5000000 (contracts/Contract.sol#377-379) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits . analyzed (4 contracts with 100 detectors), 44 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.4.24",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.4.24",
"install_stderr": null,
"install_stdout": "Version '0.4.24' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-0mud7ax9 --allow-paths /tmp/slither-0mud7ax9,/tmp/slither-0mud7ax9/lib,/tmp/slither-0mud7ax9/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 44,
"workspace_hash": "b9ab2dcb2a41f7820c151c6bbcdf1b8f0d1f8a58f9cc81a1009d2d5f5cb1d8f9",
"duration_seconds": 0.8541238307952881,
"solc_version_requested": "0.4.24"
}
{"no_findings":false,"summary":"Found three issues: profit accounting can be retroactively diluted by mid‑month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.","findings":[{"severity":"medium","category":"math","title":"Mid‑month mint/burn retroactively changes the profit denominator for the entire month","exploit_scenario":"A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month’s `totalTokenSupply` to the new supply, so the entire month’s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder’s share.","recommendation":"Snapshot supply at the time each profit deposit is recorded (e.g., store a per‑deposit `totalSupply` or use an accumulated “profit per token” index). Avoid overwriting a single month-wide supply after income has already been recorded.","evidence":"`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month’s `ethIncome` by this single value.","locations":["contracts/Contract.sol:553","contracts/Contract.sol:657","contracts/Contract.sol:684","contracts/Contract.sol:732"]},{"severity":"medium","category":"other","title":"Unbounded month iteration can make transfers/withdrawals run out of gas","exploit_scenario":"`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long‑term holders may become unable to move tokens or withdraw profits, effectively locking funds.","recommendation":"Replace the per‑month loop with an accumulated per‑token profit index, or allow claims in bounded batches (e.g., user‑supplied ranges with stateful checkpoints) to keep gas usage predictable.","evidence":"`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.","locations":["contracts/Contract.sol:469","contracts/Contract.sol:553"]},{"severity":"low","category":"oracle","title":"Month boundaries rely on `now`, allowing miner influence around cutoff times","exploit_scenario":"A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions.","recommendation":"If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.","evidence":"Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.","locations":["contracts/Contract.sol:496","contracts/Contract.sol:732"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dd4t8mvx
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb013-6984-7ee2-9aea-59589ca05552
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-dd4t8mvx succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 9ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.24;
// File: contracts/library/SafeMath.sol
/**
* @title SafeMath v0.1.9
* @dev Math operations with safety checks that throw on error
* change notes: original SafeMath library from OpenZeppelin modified by Inventor
* - added sqrt
* - added sq
* - added pwr
* - changed asserts to requires with error log outputs
* - removed div, its useless
*/
exec
/bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 13ms:
dt.month = i;
break;
}
secondsAccountedFor += secondsInMonth;
}
// Day
for (i = 1; i <= getDaysInMonth(dt.month, dt.year); i++) {
if (DAY_IN_SECONDS + secondsAccountedFor > timestamp) {
dt.day = i;
break;
}
secondsAccountedFor += DAY_IN_SECONDS;
}
// Hour
dt.hour = getHour(timestamp);
// Minute
dt.minute = getMinute(timestamp);
exec
/bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 5ms:
string public name;
string public symbol;
uint8 public decimals;
uint256 public totalSupply = 0;
uint256 public tokenReduceAmount;
uint256 public tokenExchangeRate; // DRSCoin / eth
uint256 public nextReduceSupply; // next DRSCoin reduction supply
address public owner;
mapping(address => bool) restrictedAddresses;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
mapping(address => uint32) public lastRefundMonth;
mapping(address => uint256) public refundEth; //record the user profit
thinking
**Analyzing Solidity contract vulnerabilities**
I’m auditing DRSCoin written in Solidity 0.4.24, checking for common issues like reentrancy, access control, and accounting errors. There are some naming conflicts between state variables and functions causing compile errors, but I’m focusing on exploitable flaws. Key findings include economic manipulation where month-end minting dilutes earlier holders' profits, unbounded loops causing potential gas DoS on withdrawals/transfers, and trusted minting without ETH backing—likely by design but noteworthy. I’m capturing these observations for the user with approximate source line references.
exec
/bin/bash -lc "rg -n \"function withdraw|function getUnpaidPerfit|monthInfos\\[_nowMonth\\]\\.totalTokenSupply\" AUDIT_BUNDLE.txt" in /tmp/codex-dd4t8mvx succeeded in 15ms:
553: function getUnpaidPerfit(uint32 _startMonth, uint32 _endMonth, uint256 _tokenAmount) internal view returns(uint256)
658: monthInfos[_nowMonth].totalTokenSupply = totalSupply;
684: monthInfos[_nowMonth].totalTokenSupply = totalSupply;
740: if(monthInfos[_nowMonth].totalTokenSupply == 0) {
741: monthInfos[_nowMonth].totalTokenSupply = totalSupply;
747: function withdraw() public {
thinking
**Verifying line numbers referencing Contract.sol**
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '520,780p'" in /tmp/codex-dd4t8mvx succeeded in 6ms:
520 return true;
521 }
522
523 function approve(address _spender, uint256 _value) public returns(bool success) {
524 allowance[msg.sender][_spender] = _value; // Set allowance
525 emit Approval(msg.sender, _spender, _value); // Raise Approval event
526 return true;
527 }
528
529 function transferFrom(address _from, address _to, uint256 _value) public returns(bool success) {
530 require(balanceOf[_from] >= _value); // Check if the sender has enough
531 require(balanceOf[_to] + _value >= balanceOf[_to]); // Check for overflows
532 require(_value <= allowance[_from][msg.sender]); // Check allowance
533 require(!restrictedAddresses[_from]);
534 require(!restrictedAddresses[msg.sender]);
535 require(!restrictedAddresses[_to]);
536
537 uint32 _nowMonth = getCurrentMonth();
538
539 // settle _from's eth
thinking
**Summarizing profit calculation and settlement issues**
I'll summarize key findings about profit dilution via mid-month minting, the unbounded loop creating potential DoS in token transfers or withdrawals, and the timestamp reliance enabling minor oracle manipulation—tying them to relevant code lines and suggesting improvements focused on accounting accuracy, gas efficiency, and manipulation risks.
exec
/bin/bash -lc 'rg -n "function settleEth" -n AUDIT_BUNDLE.txt' in /tmp/codex-dd4t8mvx succeeded in 32ms:
469: function settleEth(address _addr, uint32 _startMonth, uint32 _nowMonth) internal {
thinking
**Noticing month boundary miner influence**
exec
/bin/bash -lc 'rg -n "function getCurrentMonth|parseTimestampToYM|profitEth" AUDIT_BUNDLE.txt' in /tmp/codex-dd4t8mvx succeeded in 32ms:
228: function parseTimestampToYM(uint timestamp) internal pure returns (uint16, uint8) {
374: function profitEth() external payable;
496: function getCurrentMonth() internal view returns(uint32) {
497: (uint16 _year, uint8 _month) = now.parseTimestampToYM();
732: function profitEth() external payable onlyAllowedGameAddress {
733: (uint16 _year, uint8 _month) = now.parseTimestampToYM();
thinking
**Preparing categorized findings summary**
codex
{"no_findings":false,"summary":"Found three issues: profit accounting can be retroactively diluted by mid‑month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.","findings":[{"severity":"medium","category":"math","title":"Mid‑month mint/burn retroactively changes the profit denominator for the entire month","exploit_scenario":"A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month’s `totalTokenSupply` to the new supply, so the entire month’s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder’s share.","recommendation":"Snapshot supply at the time each profit deposit is recorded (e.g., store a per‑deposit `totalSupply` or use an accumulated “profit per token” index). Avoid overwriting a single month-wide supply after income has already been recorded.","evidence":"`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month’s `ethIncome` by this single value.","locations":["contracts/Contract.sol:553","contracts/Contract.sol:657","contracts/Contract.sol:684","contracts/Contract.sol:732"]},{"severity":"medium","category":"other","title":"Unbounded month iteration can make transfers/withdrawals run out of gas","exploit_scenario":"`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long‑term holders may become unable to move tokens or withdraw profits, effectively locking funds.","recommendation":"Replace the per‑month loop with an accumulated per‑token profit index, or allow claims in bounded batches (e.g., user‑supplied ranges with stateful checkpoints) to keep gas usage predictable.","evidence":"`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.","locations":["contracts/Contract.sol:469","contracts/Contract.sol:553"]},{"severity":"low","category":"oracle","title":"Month boundaries rely on `now`, allowing miner influence around cutoff times","exploit_scenario":"A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions.","recommendation":"If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.","evidence":"Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.","locations":["contracts/Contract.sol:496","contracts/Contract.sol:732"]}]}
tokens used
35,120
{
"codex": {
"ran_at": "2026-01-12T02:42:41.019453+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found three issues: profit accounting can be retroactively diluted by mid\u2011month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.",
"raw_final": {
"summary": "Found three issues: profit accounting can be retroactively diluted by mid\u2011month mint/burn, unbounded month iteration can DoS transfers/withdrawals over time, and timestamp-based month boundaries are miner-influencable.",
"findings": [
{
"title": "Mid\u2011month mint/burn retroactively changes the profit denominator for the entire month",
"category": "math",
"evidence": "`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month\u2019s `ethIncome` by this single value.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:553",
"contracts/Contract.sol:657",
"contracts/Contract.sol:684",
"contracts/Contract.sol:732"
],
"recommendation": "Snapshot supply at the time each profit deposit is recorded (e.g., store a per\u2011deposit `totalSupply` or use an accumulated \u201cprofit per token\u201d index). Avoid overwriting a single month-wide supply after income has already been recorded.",
"exploit_scenario": "A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month\u2019s `totalTokenSupply` to the new supply, so the entire month\u2019s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder\u2019s share."
},
{
"title": "Unbounded month iteration can make transfers/withdrawals run out of gas",
"category": "other",
"evidence": "`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:469",
"contracts/Contract.sol:553"
],
"recommendation": "Replace the per\u2011month loop with an accumulated per\u2011token profit index, or allow claims in bounded batches (e.g., user\u2011supplied ranges with stateful checkpoints) to keep gas usage predictable.",
"exploit_scenario": "`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long\u2011term holders may become unable to move tokens or withdraw profits, effectively locking funds."
},
{
"title": "Month boundaries rely on `now`, allowing miner influence around cutoff times",
"category": "oracle",
"evidence": "Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.",
"severity": "low",
"locations": [
"contracts/Contract.sol:496",
"contracts/Contract.sol:732"
],
"recommendation": "If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.",
"exploit_scenario": "A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x017f 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH4 0x03c175ff 0000003a: DUP2 0000003b: EQ 0000003c: PUSH2 0x0184 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x06fdde03 00000046: EQ 00000047: PUSH2 0x01b9 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x095ea7b3 00000051: EQ 00000052: PUSH2 0x0243 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x18160ddd 0000005c: EQ 0000005d: PUSH2 0x0267 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x23b872dd 00000067: EQ 00000068: PUSH2 0x028e 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x2bf4760b 00000072: EQ 00000073: PUSH2 0x02b8 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x313ce567 0000007d: EQ 0000007e: PUSH2 0x02d9 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x3ccfd60b 00000088: EQ 00000089: PUSH2 0x0304 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0x40c10f19 00000093: EQ 00000094: PUSH2 0x031b 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x4172d080 0000009e: EQ 0000009f: PUSH2 0x033f 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x42966c68 000000a9: EQ 000000aa: PUSH2 0x0354 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x4ec883d1 000000b4: EQ 000000b5: PUSH2 0x036c 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0x70a08231 000000bf: EQ 000000c0: PUSH2 0x038d 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x762c159a 000000ca: EQ 000000cb: PUSH2 0x03ae 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x8284f2a7 000000d5: EQ 000000d6: PUSH2 0x03c3 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x8406ab82 000000e0: EQ 000000e1: PUSH2 0x03e4 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x8b77071c 000000eb: EQ 000000ec: PUSH2 0x0405 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x8da5cb5b 000000f6: EQ 000000f7: PUSH2 0x040d 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x903e285a 00000101: EQ 00000102: PUSH2 0x043e 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0x94807acc 0000010c: EQ 0000010d: PUSH2 0x0453 00000110: JUMPI 00000111: DUP1 00000112: PUSH4 0x95d89b41 00000117: EQ 00000118: PUSH2 0x0468 0000011b: JUMPI 0000011c: DUP1 0000011d: PUSH4 0x97da2f8c 00000122: EQ 00000123: PUSH2 0x047d 00000126: JUMPI 00000127: DUP1 00000128: PUSH4 0x9b741d9d 0000012d: EQ 0000012e: PUSH2 0x0492 00000131: JUMPI 00000132: DUP1 00000133: PUSH4 0xa9059cbb 00000138: EQ 00000139: PUSH2 0x04a7 0000013c: JUMPI 0000013d: DUP1 0000013e: PUSH4 0xd72d04db 00000143: EQ 00000144: PUSH2 0x04cb 00000147: JUMPI 00000148: DUP1 00000149: PUSH4 0xd83edd70 0000014e: EQ 0000014f: PUSH2 0x04ec 00000152: JUMPI 00000153: DUP1 00000154: PUSH4 0xdd62ed3e 00000159: EQ 0000015a: PUSH2 0x050d 0000015d: JUMPI 0000015e: DUP1 0000015f: PUSH4 0xe39f722a 00000164: EQ 00000165: PUSH2 0x0534 00000168: JUMPI 00000169: DUP1 0000016a: PUSH4 0xf16b6482 0000016f: EQ 00000170: PUSH2 0x056e 00000173: JUMPI 00000174: DUP1 00000175: PUSH4 0xf45ef033 0000017a: EQ 0000017b: PUSH2 0x058f 0000017e: JUMPI 0000017f: JUMPDEST 00000180: PUSH1 0x00 00000182: DUP1 00000183: REVERT 00000184: JUMPDEST 00000185: CALLVALUE 00000186: DUP1 00000187: ISZERO 00000188: PUSH2 0x0190 0000018b: JUMPI 0000018c: PUSH1 0x00 0000018e: DUP1 0000018f: REVERT 00000190: JUMPDEST 00000191: POP 00000192: PUSH2 0x01a5 00000195: PUSH1 0x01 00000197: PUSH1 0xa0 00000199: PUSH1 0x02 0000019b: EXP 0000019c: SUB 0000019d: PUSH1 0x04 0000019f: CALLDATALOAD 000001a0: AND 000001a1: PUSH2 0x05a4 000001a4: JUMP 000001a5: JUMPDEST 000001a6: PUSH1 0x40 000001a8: DUP1 000001a9: MLOAD 000001aa: SWAP2 000001ab: ISZERO 000001ac: ISZERO 000001ad: DUP3 000001ae: MSTORE 000001af: MLOAD 000001b0: SWAP1 000001b1: DUP2 000001b2: SWAP1 000001b3: SUB 000001b4: PUSH1 0x20 000001b6: ADD 000001b7: SWAP1 000001b8: RETURN 000001b9: JUMPDEST 000001ba: CALLVALUE 000001bb: DUP1 000001bc: ISZERO 000001bd: PUSH2 0x01c5 000001c0: JUMPI 000001c1: PUSH1 0x00 000001c3: DUP1 000001c4: REVERT 000001c5: JUMPDEST 000001c6: POP 000001c7: PUSH2 0x01ce 000001ca: PUSH2 0x05c6 000001cd: JUMP 000001ce: JUMPDEST 000001cf: PUSH1 0x40 000001d1: DUP1 000001d2: MLOAD 000001d3: PUSH1 0x20 000001d5: DUP1 000001d6: DUP3 000001d7: MSTORE 000001d8: DUP4 000001d9: MLOAD 000001da: DUP2 000001db: DUP4 000001dc: ADD 000001dd: MSTORE 000001de: DUP4 000001df: MLOAD 000001e0: SWAP2 000001e1: SWAP3 000001e2: DUP4 000001e3: SWAP3 000001e4: SWAP1 000001e5: DUP4 000001e6: ADD 000001e7: SWAP2 000001e8: DUP6 000001e9: ADD 000001ea: SWAP1 000001eb: DUP1 000001ec: DUP4 000001ed: DUP4 000001ee: PUSH1 0x00 000001f0: JUMPDEST 000001f1: DUP4 000001f2: DUP2 000001f3: LT 000001f4: ISZERO 000001f5: PUSH2 0x0208 000001f8: JUMPI 000001f9: DUP2 000001fa: DUP2 000001fb: ADD 000001fc: MLOAD 000001fd: DUP4 000001fe: DUP3 000001ff: ADD 00000200: MSTORE 00000201: PUSH1 0x20 00000203: ADD 00000204: PUSH2 0x01f0 00000207: JUMP 00000208: JUMPDEST 00000209: POP 0000020a: POP 0000020b: POP 0000020c: POP 0000020d: SWAP1 0000020e: POP 0000020f: SWAP1 00000210: DUP2 00000211: ADD 00000212: SWAP1 00000213: PUSH1 0x1f 00000215: AND 00000216: DUP1 00000217: ISZERO 00000218: PUSH2 0x0235 0000021b: JUMPI 0000021c: DUP1 0000021d: DUP3 0000021e: SUB 0000021f: DUP1 00000220: MLOAD 00000221: PUSH1 0x01 00000223: DUP4 00000224: PUSH1 0x20 00000226: SUB 00000227: PUSH2 0x0100 0000022a: EXP 0000022b: SUB 0000022c: NOT 0000022d: AND 0000022e: DUP2 0000022f: MSTORE 00000230: PUSH1 0x20 00000232: ADD 00000233: SWAP2 00000234: POP 00000235: JUMPDEST 00000236: POP 00000237: SWAP3 00000238: POP 00000239: POP 0000023a: POP 0000023b: PUSH1 0x40 0000023d: MLOAD 0000023e: DUP1 0000023f: SWAP2 00000240: SUB 00000241: SWAP1 00000242: RETURN 00000243: JUMPDEST 00000244: CALLVALUE 00000245: DUP1 00000246: ISZERO 00000247: PUSH2 0x024f 0000024a: JUMPI 0000024b: PUSH1 0x00 0000024d: DUP1 0000024e: REVERT 0000024f: JUMPDEST 00000250: POP 00000251: PUSH2 0x01a5 00000254: PUSH1 0x01 00000256: PUSH1 0xa0 00000258: PUSH1 0x02 0000025a: EXP 0000025b: SUB 0000025c: PUSH1 0x04 0000025e: CALLDATALOAD 0000025f: AND 00000260: PUSH1 0x24 00000262: CALLDATALOAD 00000263: PUSH2 0x0654 00000266: JUMP 00000267: JUMPDEST 00000268: CALLVALUE 00000269: DUP1 0000026a: ISZERO 0000026b: PUSH2 0x0273 0000026e: JUMPI 0000026f: PUSH1 0x00 00000271: DUP1 00000272: REVERT 00000273: JUMPDEST 00000274: POP 00000275: PUSH2 0x027c 00000278: PUSH2 0x06bb 0000027b: JUMP 0000027c: JUMPDEST 0000027d: PUSH1 0x40 0000027f: DUP1 00000280: MLOAD 00000281: SWAP2 00000282: DUP3 00000283: MSTORE 00000284: MLOAD 00000285: SWAP1 00000286: DUP2 00000287: SWAP1 00000288: SUB 00000289: PUSH1 0x20 0000028b: ADD 0000028c: SWAP1 0000028d: RETURN 0000028e: JUMPDEST 0000028f: CALLVALUE 00000290: DUP1 00000291: ISZERO 00000292: PUSH2 0x029a 00000295: JUMPI 00000296: PUSH1 0x00 00000298: DUP1 00000299: REVERT 0000029a: JUMPDEST 0000029b: POP 0000029c: PUSH2 0x01a5 0000029f: PUSH1 0x01 000002a1: PUSH1 0xa0 000002a3: PUSH1 0x02 000002a5: EXP 000002a6: SUB 000002a7: PUSH1 0x04 000002a9: CALLDATALOAD 000002aa: DUP2 000002ab: AND 000002ac: SWAP1 000002ad: PUSH1 0x24 000002af: CALLDATALOAD 000002b0: AND 000002b1: PUSH1 0x44 000002b3: CALLDATALOAD 000002b4: PUSH2 0x06c1 000002b7: JUMP 000002b8: JUMPDEST 000002b9: CALLVALUE 000002ba: DUP1 000002bb: ISZERO 000002bc: PUSH2 0x02c4 000002bf: JUMPI 000002c0: PUSH1 0x00 000002c2: DUP1 000002c3: REVERT 000002c4: JUMPDEST 000002c5: POP 000002c6: PUSH2 0x027c 000002c9: PUSH1 0x01 000002cb: PUSH1 0xa0 000002cd: PUSH1 0x02 000002cf: EXP 000002d0: SUB 000002d1: PUSH1 0x04 000002d3: CALLDATALOAD 000002d4: AND 000002d5: PUSH2 0x0917 000002d8: JUMP 000002d9: JUMPDEST 000002da: CALLVALUE 000002db: DUP1 000002dc: ISZERO 000002dd: PUSH2 0x02e5 000002e0: JUMPI 000002e1: PUSH1 0x00 000002e3: DUP1 000002e4: REVERT 000002e5: JUMPDEST 000002e6: POP 000002e7: PUSH2 0x02ee 000002ea: PUSH2 0x09d1 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH1 0x40 000002f1: DUP1 000002f2: MLOAD 000002f3: PUSH1 0xff 000002f5: SWAP1 000002f6: SWAP3 000002f7: AND 000002f8: DUP3 000002f9: MSTORE 000002fa: MLOAD 000002fb: SWAP1 000002fc: DUP2 000002fd: SWAP1 000002fe: SUB 000002ff: PUSH1 0x20 00000301: ADD 00000302: SWAP1 00000303: RETURN 00000304: JUMPDEST 00000305: CALLVALUE 00000306: DUP1 00000307: ISZERO 00000308: PUSH2 0x0310 0000030b: JUMPI 0000030c: PUSH1 0x00 0000030e: DUP1 0000030f: REVERT 00000310: JUMPDEST 00000311: POP 00000312: PUSH2 0x0319 00000315: PUSH2 0x09da 00000318: JUMP 00000319: JUMPDEST 0000031a: STOP 0000031b: JUMPDEST 0000031c: CALLVALUE 0000031d: DUP1 0000031e: ISZERO 0000031f: PUSH2 0x0327 00000322: JUMPI 00000323: PUSH1 0x00 00000325: DUP1 00000326: REVERT 00000327: JUMPDEST 00000328: POP 00000329: PUSH2 0x0319 0000032c: PUSH1 0x01 0000032e: PUSH1 0xa0 00000330: PUSH1 0x02 00000332: EXP 00000333: SUB 00000334: PUSH1 0x04 00000336: CALLDATALOAD 00000337: AND 00000338: PUSH1 0x24 0000033a: CALLDATALOAD 0000033b: PUSH2 0x0aca 0000033e: JUMP 0000033f: JUMPDEST 00000340: CALLVALUE 00000341: DUP1 00000342: ISZERO 00000343: PUSH2 0x034b 00000346: JUMPI 00000347: PUSH1 0x00 00000349: DUP1 0000034a: REVERT 0000034b: JUMPDEST 0000034c: POP 0000034d: PUSH2 0x027c 00000350: PUSH2 0x0d13 00000353: JUMP 00000354: JUMPDEST 00000355: CALLVALUE 00000356: DUP1 00000357: ISZERO 00000358: PUSH2 0x0360 0000035b: JUMPI 0000035c: PUSH1 0x00 0000035e: DUP1 0000035f: REVERT 00000360: JUMPDEST 00000361: POP 00000362: PUSH2 0x01a5 00000365: PUSH1 0x04 00000367: CALLDATALOAD 00000368: PUSH2 0x0d19 0000036b: JUMP 0000036c: JUMPDEST 0000036d: CALLVALUE 0000036e: DUP1 0000036f: ISZERO 00000370: PUSH2 0x0378 00000373: JUMPI 00000374: PUSH1 0x00 00000376: DUP1 00000377: REVERT 00000378: JUMPDEST 00000379: POP 0000037a: PUSH2 0x0319 0000037d: PUSH1 0x01 0000037f: PUSH1 0xa0 00000381: PUSH1 0x02 00000383: EXP 00000384: SUB 00000385: PUSH1 0x04 00000387: CALLDATALOAD 00000388: AND 00000389: PUSH2 0x0e13 0000038c: JUMP 0000038d: JUMPDEST 0000038e: CALLVALUE 0000038f: DUP1 00000390: ISZERO 00000391: PUSH2 0x0399 00000394: JUMPI 00000395: PUSH1 0x00 00000397: DUP1 00000398: REVERT 00000399: JUMPDEST 0000039a: POP 0000039b: PUSH2 0x027c 0000039e: PUSH1 0x01 000003a0: PUSH1 0xa0 000003a2: PUSH1 0x02 000003a4: EXP 000003a5: SUB 000003a6: PUSH1 0x04 000003a8: CALLDATALOAD 000003a9: AND 000003aa: PUSH2 0x0e50 000003ad: JUMP 000003ae: JUMPDEST 000003af: CALLVALUE 000003b0: DUP1 000003b1: ISZERO 000003b2: PUSH2 0x03ba 000003b5: JUMPI 000003b6: PUSH1 0x00 000003b8: DUP1 000003b9: REVERT 000003ba: JUMPDEST 000003bb: POP 000003bc: PUSH2 0x027c 000003bf: PUSH2 0x0e6b 000003c2: JUMP 000003c3: JUMPDEST 000003c4: CALLVALUE 000003c5: DUP1 000003c6: ISZERO 000003c7: PUSH2 0x03cf 000003ca: JUMPI 000003cb: PUSH1 0x00 000003cd: DUP1 000003ce: REVERT 000003cf: JUMPDEST 000003d0: POP 000003d1: PUSH2 0x0319 000003d4: PUSH1 0x01 000003d6: PUSH1 0xa0 000003d8: PUSH1 0x02 000003da: EXP 000003db: SUB 000003dc: PUSH1 0x04 000003de: CALLDATALOAD 000003df: AND 000003e0: PUSH2 0x0e71 000003e3: JUMP 000003e4: JUMPDEST 000003e5: CALLVALUE 000003e6: DUP1 000003e7: ISZERO 000003e8: PUSH2 0x03f0 000003eb: JUMPI 000003ec: PUSH1 0x00 000003ee: DUP1 000003ef: REVERT 000003f0: JUMPDEST 000003f1: POP 000003f2: PUSH2 0x0319 000003f5: PUSH1 0x01 000003f7: PUSH1 0xa0 000003f9: PUSH1 0x02 000003fb: EXP 000003fc: SUB 000003fd: PUSH1 0x04 000003ff: CALLDATALOAD 00000400: AND 00000401: PUSH2 0x0f80 00000404: JUMP 00000405: JUMPDEST 00000406: PUSH2 0x0319 00000409: PUSH2 0x1079 0000040c: JUMP 0000040d: JUMPDEST 0000040e: CALLVALUE 0000040f: DUP1 00000410: ISZERO 00000411: PUSH2 0x0419 00000414: JUMPI 00000415: PUSH1 0x00 00000417: DUP1 00000418: REVERT 00000419: JUMPDEST 0000041a: POP 0000041b: PUSH2 0x0422 0000041e: PUSH2 0x11da 00000421: JUMP 00000422: JUMPDEST 00000423: PUSH1 0x40 00000425: DUP1 00000426: MLOAD 00000427: PUSH1 0x01 00000429: PUSH1 0xa0 0000042b: PUSH1 0x02 0000042d: EXP 0000042e: SUB 0000042f: SWAP1 00000430: SWAP3 00000431: AND 00000432: DUP3 00000433: MSTORE 00000434: MLOAD 00000435: SWAP1 00000436: DUP2 00000437: SWAP1 00000438: SUB 00000439: PUSH1 0x20 0000043b: ADD 0000043c: SWAP1 0000043d: RETURN 0000043e: JUMPDEST 0000043f: CALLVALUE 00000440: DUP1 00000441: ISZERO 00000442: PUSH2 0x044a 00000445: JUMPI 00000446: PUSH1 0x00 00000448: DUP1 00000449: REVERT 0000044a: JUMPDEST 0000044b: POP 0000044c: PUSH2 0x027c 0000044f: PUSH2 0x11e9 00000452: JUMP 00000453: JUMPDEST 00000454: CALLVALUE 00000455: DUP1 00000456: ISZERO 00000457: PUSH2 0x045f 0000045a: JUMPI 0000045b: PUSH1 0x00 0000045d: DUP1 0000045e: REVERT 0000045f: JUMPDEST 00000460: POP 00000461: PUSH2 0x027c 00000464: PUSH2 0x11ee 00000467: JUMP 00000468: JUMPDEST 00000469: CALLVALUE 0000046a: DUP1 0000046b: ISZERO 0000046c: PUSH2 0x0474 0000046f: JUMPI 00000470: PUSH1 0x00 00000472: DUP1 00000473: REVERT 00000474: JUMPDEST 00000475: POP 00000476: PUSH2 0x01ce 00000479: PUSH2 0x11f5 0000047c: JUMP 0000047d: JUMPDEST 0000047e: CALLVALUE 0000047f: DUP1 00000480: ISZERO 00000481: PUSH2 0x0489 00000484: JUMPI 00000485: PUSH1 0x00 00000487: DUP1 00000488: REVERT 00000489: JUMPDEST 0000048a: POP 0000048b: PUSH2 0x027c 0000048e: PUSH2 0x124f 00000491: JUMP 00000492: JUMPDEST 00000493: CALLVALUE 00000494: DUP1 00000495: ISZERO 00000496: PUSH2 0x049e 00000499: JUMPI 0000049a: PUSH1 0x00 0000049c: DUP1 0000049d: REVERT 0000049e: JUMPDEST 0000049f: POP 000004a0: PUSH2 0x027c 000004a3: PUSH2 0x1254 000004a6: JUMP 000004a7: JUMPDEST 000004a8: CALLVALUE 000004a9: DUP1 000004aa: ISZERO 000004ab: PUSH2 0x04b3 000004ae: JUMPI 000004af: PUSH1 0x00 000004b1: DUP1 000004b2: REVERT 000004b3: JUMPDEST 000004b4: POP 000004b5: PUSH2 0x01a5 000004b8: PUSH1 0x01 000004ba: PUSH1 0xa0 000004bc: PUSH1 0x02 000004be: EXP 000004bf: SUB 000004c0: PUSH1 0x04 000004c2: CALLDATALOAD 000004c3: AND 000004c4: PUSH1 0x24 000004c6: CALLDATALOAD 000004c7: PUSH2 0x125a 000004ca: JUMP 000004cb: JUMPDEST 000004cc: CALLVALUE 000004cd: DUP1 000004ce: ISZERO 000004cf: PUSH2 0x04d7 000004d2: JUMPI 000004d3: PUSH1 0x00 000004d5: DUP1 000004d6: REVERT 000004d7: JUMPDEST 000004d8: POP 000004d9: PUSH2 0x0319 000004dc: PUSH1 0x01 000004de: PUSH1 0xa0 000004e0: PUSH1 0x02 000004e2: EXP 000004e3: SUB 000004e4: PUSH1 0x04 000004e6: CALLDATALOAD 000004e7: AND 000004e8: PUSH2 0x13f6 000004eb: JUMP 000004ec: JUMPDEST 000004ed: CALLVALUE 000004ee: DUP1 000004ef: ISZERO 000004f0: PUSH2 0x04f8 000004f3: JUMPI 000004f4: PUSH1 0x00 000004f6: DUP1 000004f7: REVERT 000004f8: JUMPDEST 000004f9: POP 000004fa: PUSH2 0x027c 000004fd: PUSH1 0x01 000004ff: PUSH1 0xa0 00000501: PUSH1 0x02 00000503: EXP 00000504: SUB 00000505: PUSH1 0x04 00000507: CALLDATALOAD 00000508: AND 00000509: PUSH2 0x15c0 0000050c: JUMP 0000050d: JUMPDEST 0000050e: CALLVALUE 0000050f: DUP1 00000510: ISZERO 00000511: PUSH2 0x0519 00000514: JUMPI 00000515: PUSH1 0x00 00000517: DUP1 00000518: REVERT 00000519: JUMPDEST 0000051a: POP 0000051b: PUSH2 0x027c 0000051e: PUSH1 0x01 00000520: PUSH1 0xa0 00000522: PUSH1 0x02 00000524: EXP 00000525: SUB 00000526: PUSH1 0x04 00000528: CALLDATALOAD 00000529: DUP2 0000052a: AND 0000052b: SWAP1 0000052c: PUSH1 0x24 0000052e: CALLDATALOAD 0000052f: AND 00000530: PUSH2 0x15d2 00000533: JUMP 00000534: JUMPDEST 00000535: CALLVALUE 00000536: DUP1 00000537: ISZERO 00000538: PUSH2 0x0540 0000053b: JUMPI 0000053c: PUSH1 0x00 0000053e: DUP1 0000053f: REVERT 00000540: JUMPDEST 00000541: POP 00000542: PUSH2 0x0555 00000545: PUSH1 0x01 00000547: PUSH1 0xa0 00000549: PUSH1 0x02 0000054b: EXP 0000054c: SUB 0000054d: PUSH1 0x04 0000054f: CALLDATALOAD 00000550: AND 00000551: PUSH2 0x15fd 00000554: JUMP 00000555: JUMPDEST 00000556: PUSH1 0x40 00000558: DUP1 00000559: MLOAD 0000055a: PUSH4 0xffffffff 0000055f: SWAP1 00000560: SWAP3 00000561: AND 00000562: DUP3 00000563: MSTORE 00000564: MLOAD 00000565: SWAP1 00000566: DUP2 00000567: SWAP1 00000568: SUB 00000569: PUSH1 0x20 0000056b: ADD 0000056c: SWAP1 0000056d: RETURN 0000056e: JUMPDEST 0000056f: CALLVALUE 00000570: DUP1 00000571: ISZERO 00000572: PUSH2 0x057a 00000575: JUMPI 00000576: PUSH1 0x00 00000578: DUP1 00000579: REVERT 0000057a: JUMPDEST 0000057b: POP 0000057c: PUSH2 0x027c 0000057f: PUSH1 0x01 00000581: PUSH1 0xa0 00000583: PUSH1 0x02 00000585: EXP 00000586: SUB 00000587: PUSH1 0x04 00000589: CALLDATALOAD 0000058a: AND 0000058b: PUSH2 0x1615 0000058e: JUMP 0000058f: JUMPDEST 00000590: CALLVALUE 00000591: DUP1 00000592: ISZERO 00000593: PUSH2 0x059b 00000596: JUMPI 00000597: PUSH1 0x00 00000599: DUP1 0000059a: REVERT 0000059b: JUMPDEST 0000059c: POP 0000059d: PUSH2 0x027c 000005a0: PUSH2 0x16ed 000005a3: JUMP 000005a4: JUMPDEST 000005a5: PUSH1 0x01 000005a7: PUSH1 0xa0 000005a9: PUSH1 0x02 000005ab: EXP 000005ac: SUB 000005ad: DUP2 000005ae: AND 000005af: PUSH1 0x00 000005b1: SWAP1 000005b2: DUP2 000005b3: MSTORE 000005b4: PUSH1 0x08 000005b6: PUSH1 0x20 000005b8: MSTORE 000005b9: PUSH1 0x40 000005bb: SWAP1 000005bc: KECCAK256 000005bd: SLOAD 000005be: PUSH1 0xff 000005c0: AND 000005c1: JUMPDEST 000005c2: SWAP2 000005c3: SWAP1 000005c4: POP 000005c5: JUMP 000005c6: JUMPDEST 000005c7: PUSH1 0x00 000005c9: DUP1 000005ca: SLOAD 000005cb: PUSH1 0x40 000005cd: DUP1 000005ce: MLOAD 000005cf: PUSH1 0x20 000005d1: PUSH1 0x02 000005d3: PUSH1 0x01 000005d5: DUP6 000005d6: AND 000005d7: ISZERO 000005d8: PUSH2 0x0100 000005db: MUL 000005dc: PUSH1 0x00 000005de: NOT 000005df: ADD 000005e0: SWAP1 000005e1: SWAP5 000005e2: AND 000005e3: SWAP4 000005e4: SWAP1 000005e5: SWAP4 000005e6: DIV 000005e7: PUSH1 0x1f 000005e9: DUP2 000005ea: ADD 000005eb: DUP5 000005ec: SWAP1 000005ed: DIV 000005ee: DUP5 000005ef: MUL 000005f0: DUP3 000005f1: ADD 000005f2: DUP5 000005f3: ADD 000005f4: SWAP1 000005f5: SWAP3 000005f6: MSTORE 000005f7: DUP2 000005f8: DUP2 000005f9: MSTORE 000005fa: SWAP3 000005fb: SWAP2 000005fc: DUP4 000005fd: ADD 000005fe: DUP3 000005ff: DUP3 00000600: DUP1 00000601: ISZERO 00000602: PUSH2 0x064c 00000605: JUMPI 00000606: DUP1 00000607: PUSH1 0x1f 00000609: LT 0000060a: PUSH2 0x0621 0000060d: JUMPI 0000060e: PUSH2 0x0100 00000611: DUP1 00000612: DUP4 00000613: SLOAD 00000614: DIV 00000615: MUL 00000616: DUP4 00000617: MSTORE 00000618: SWAP2 00000619: PUSH1 0x20 0000061b: ADD 0000061c: SWAP2 0000061d: PUSH2 0x064c 00000620: JUMP 00000621: JUMPDEST 00000622: DUP3 00000623: ADD 00000624: SWAP2 00000625: SWAP1 00000626: PUSH1 0x00 00000628: MSTORE 00000629: PUSH1 0x20 0000062b: PUSH1 0x00 0000062d: KECCAK256 0000062e: SWAP1 0000062f: JUMPDEST 00000630: DUP2 00000631: SLOAD 00000632: DUP2 00000633: MSTORE 00000634: SWAP1 00000635: PUSH1 0x01 00000637: ADD 00000638: SWAP1 00000639: PUSH1 0x20 0000063b: ADD 0000063c: DUP1 0000063d: DUP4 0000063e: GT 0000063f: PUSH2 0x062f 00000642: JUMPI 00000643: DUP3 00000644: SWAP1 00000645: SUB 00000646: PUSH1 0x1f 00000648: AND 00000649: DUP3 0000064a: ADD 0000064b: SWAP2 0000064c: JUMPDEST 0000064d: POP 0000064e: POP 0000064f: POP 00000650: POP 00000651: POP 00000652: DUP2 00000653: JUMP 00000654: JUMPDEST 00000655: CALLER 00000656: PUSH1 0x00 00000658: DUP2 00000659: DUP2 0000065a: MSTORE 0000065b: PUSH1 0x0a 0000065d: PUSH1 0x20 0000065f: SWAP1 00000660: DUP2 00000661: MSTORE 00000662: PUSH1 0x40 00000664: DUP1 00000665: DUP4 00000666: KECCAK256 00000667: PUSH1 0x01 00000669: PUSH1 0xa0 0000066b: PUSH1 0x02 0000066d: EXP 0000066e: SUB 0000066f: DUP8 00000670: AND 00000671: DUP1 00000672: DUP6 00000673: MSTORE 00000674: SWAP1 00000675: DUP4 00000676: MSTORE 00000677: DUP2 00000678: DUP5 00000679: KECCAK256 0000067a: DUP7 0000067b: SWAP1 0000067c: SSTORE 0000067d: DUP2 0000067e: MLOAD 0000067f: DUP7 00000680: DUP2 00000681: MSTORE 00000682: SWAP2 00000683: MLOAD 00000684: SWAP4 00000685: SWAP5 00000686: SWAP1 00000687: SWAP4 00000688: SWAP1 00000689: SWAP3 0000068a: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 000006ab: SWAP3 000006ac: DUP3 000006ad: SWAP1 000006ae: SUB 000006af: ADD 000006b0: SWAP1 000006b1: LOG3 000006b2: POP 000006b3: PUSH1 0x01 000006b5: JUMPDEST 000006b6: SWAP3 000006b7: SWAP2 000006b8: POP 000006b9: POP 000006ba: JUMP 000006bb: JUMPDEST 000006bc: PUSH1 0x03 000006be: SLOAD 000006bf: SWAP1 000006c0: JUMP 000006c1: JUMPDEST 000006c2: PUSH1 0x01 000006c4: PUSH1 0xa0 000006c6: PUSH1 0x02 000006c8: EXP 000006c9: SUB 000006ca: DUP4 000006cb: AND 000006cc: PUSH1 0x00 000006ce: SWAP1 000006cf: DUP2 000006d0: MSTORE 000006d1: PUSH1 0x09 000006d3: PUSH1 0x20 000006d5: MSTORE 000006d6: PUSH1 0x40 000006d8: DUP2 000006d9: KECCAK256 000006da: SLOAD 000006db: DUP2 000006dc: SWAP1 000006dd: DUP4 000006de: GT 000006df: ISZERO 000006e0: PUSH2 0x06e8 000006e3: JUMPI 000006e4: PUSH1 0x00 000006e6: DUP1 000006e7: REVERT 000006e8: JUMPDEST 000006e9: PUSH1 0x01 000006eb: PUSH1 0xa0 000006ed: PUSH1 0x02 000006ef: EXP 000006f0: SUB 000006f1: DUP5 000006f2: AND 000006f3: PUSH1 0x00 000006f5: SWAP1 000006f6: DUP2 000006f7: MSTORE 000006f8: PUSH1 0x09 000006fa: PUSH1 0x20 000006fc: MSTORE 000006fd: PUSH1 0x40 000006ff: SWAP1 00000700: KECCAK256 00000701: SLOAD 00000702: DUP4 00000703: DUP2 00000704: ADD 00000705: LT 00000706: ISZERO 00000707: PUSH2 0x070f 0000070a: JUMPI 0000070b: PUSH1 0x00 0000070d: DUP1 0000070e: REVERT 0000070f: JUMPDEST 00000710: PUSH1 0x01 00000712: PUSH1 0xa0 00000714: PUSH1 0x02 00000716: EXP 00000717: SUB 00000718: DUP6 00000719: AND 0000071a: PUSH1 0x00 0000071c: SWAP1 0000071d: DUP2 0000071e: MSTORE 0000071f: PUSH1 0x0a 00000721: PUSH1 0x20 00000723: SWAP1 00000724: DUP2 00000725: MSTORE 00000726: PUSH1 0x40 00000728: DUP1 00000729: DUP4 0000072a: KECCAK256 0000072b: CALLER 0000072c: DUP5 0000072d: MSTORE 0000072e: SWAP1 0000072f: SWAP2 00000730: MSTORE 00000731: SWAP1 00000732: KECCAK256 00000733: SLOAD 00000734: DUP4 00000735: GT 00000736: ISZERO 00000737: PUSH2 0x073f 0000073a: JUMPI 0000073b: PUSH1 0x00 0000073d: DUP1 0000073e: REVERT 0000073f: JUMPDEST 00000740: PUSH1 0x01 00000742: PUSH1 0xa0 00000744: PUSH1 0x02 00000746: EXP 00000747: SUB 00000748: DUP6 00000749: AND 0000074a: PUSH1 0x00 0000074c: SWAP1 0000074d: DUP2 0000074e: MSTORE 0000074f: PUSH1 0x08 00000751: PUSH1 0x20 00000753: MSTORE 00000754: PUSH1 0x40 00000756: SWAP1 00000757: KECCAK256 00000758: SLOAD 00000759: PUSH1 0xff 0000075b: AND 0000075c: ISZERO 0000075d: PUSH2 0x0765 00000760: JUMPI 00000761: PUSH1 0x00 00000763: DUP1 00000764: REVERT 00000765: JUMPDEST 00000766: CALLER 00000767: PUSH1 0x00 00000769: SWAP1 0000076a: DUP2 0000076b: MSTORE 0000076c: PUSH1 0x08 0000076e: PUSH1 0x20 00000770: MSTORE 00000771: PUSH1 0x40 00000773: SWAP1 00000774: KECCAK256 00000775: SLOAD 00000776: PUSH1 0xff 00000778: AND 00000779: ISZERO 0000077a: PUSH2 0x0782 0000077d: JUMPI 0000077e: PUSH1 0x00 00000780: DUP1 00000781: REVERT 00000782: JUMPDEST 00000783: PUSH1 0x01 00000785: PUSH1 0xa0 00000787: PUSH1 0x02 00000789: EXP 0000078a: SUB 0000078b: DUP5 0000078c: AND 0000078d: PUSH1 0x00 0000078f: SWAP1 00000790: DUP2 00000791: MSTORE 00000792: PUSH1 0x08 00000794: PUSH1 0x20 00000796: MSTORE 00000797: PUSH1 0x40 00000799: SWAP1 0000079a: KECCAK256 0000079b: SLOAD 0000079c: PUSH1 0xff 0000079e: AND 0000079f: ISZERO 000007a0: PUSH2 0x07a8 000007a3: JUMPI 000007a4: PUSH1 0x00 000007a6: DUP1 000007a7: REVERT 000007a8: JUMPDEST 000007a9: PUSH2 0x07b0 000007ac: PUSH2 0x16f3 000007af: JUMP 000007b0: JUMPDEST 000007b1: PUSH1 0x01 000007b3: PUSH1 0xa0 000007b5: PUSH1 0x02 000007b7: EXP 000007b8: SUB 000007b9: DUP7 000007ba: AND 000007bb: PUSH1 0x00 000007bd: SWAP1 000007be: DUP2 000007bf: MSTORE 000007c0: PUSH1 0x0b 000007c2: PUSH1 0x20 000007c4: MSTORE 000007c5: PUSH1 0x40 000007c7: SWAP1 000007c8: KECCAK256 000007c9: SLOAD 000007ca: SWAP1 000007cb: SWAP2 000007cc: POP 000007cd: PUSH2 0x07de 000007d0: SWAP1 000007d1: DUP7 000007d2: SWAP1 000007d3: PUSH4 0xffffffff 000007d8: AND 000007d9: DUP4 000007da: PUSH2 0x171c 000007dd: JUMP 000007de: JUMPDEST 000007df: PUSH1 0x01 000007e1: PUSH1 0xa0 000007e3: PUSH1 0x02 000007e5: EXP 000007e6: SUB 000007e7: DUP5 000007e8: AND 000007e9: PUSH1 0x00 000007eb: SWAP1 000007ec: DUP2 000007ed: MSTORE 000007ee: PUSH1 0x0b 000007f0: PUSH1 0x20 000007f2: MSTORE 000007f3: PUSH1 0x40 000007f5: SWAP1 000007f6: KECCAK256 000007f7: SLOAD 000007f8: PUSH2 0x0809 000007fb: SWAP1 000007fc: DUP6 000007fd: SWAP1 000007fe: PUSH4 0xffffffff 00000803: AND 00000804: DUP4 00000805: PUSH2 0x171c 00000808: JUMP 00000809: JUMPDEST 0000080a: PUSH1 0x01 0000080c: PUSH1 0xa0 0000080e: PUSH1 0x02 00000810: EXP 00000811: SUB 00000812: DUP6 00000813: AND 00000814: PUSH1 0x00 00000816: SWAP1 00000817: DUP2 00000818: MSTORE 00000819: PUSH1 0x09 0000081b: PUSH1 0x20 0000081d: MSTORE 0000081e: PUSH1 0x40 00000820: SWAP1 00000821: KECCAK256 00000822: SLOAD 00000823: PUSH2 0x0832 00000826: SWAP1 00000827: DUP5 00000828: PUSH4 0xffffffff 0000082d: PUSH2 0x187e 00000830: AND 00000831: JUMP 00000832: JUMPDEST 00000833: PUSH1 0x01 00000835: PUSH1 0xa0 00000837: PUSH1 0x02 00000839: EXP 0000083a: SUB 0000083b: DUP1 0000083c: DUP8 0000083d: AND 0000083e: PUSH1 0x00 00000840: SWAP1 00000841: DUP2 00000842: MSTORE 00000843: PUSH1 0x09 00000845: PUSH1 0x20 00000847: MSTORE 00000848: PUSH1 0x40 0000084a: DUP1 0000084b: DUP3 0000084c: KECCAK256 0000084d: SWAP4 0000084e: SWAP1 0000084f: SWAP4 00000850: SSTORE 00000851: SWAP1 00000852: DUP7 00000853: AND 00000854: DUP2 00000855: MSTORE 00000856: KECCAK256 00000857: SLOAD 00000858: PUSH2 0x0867 0000085b: SWAP1 0000085c: DUP5 0000085d: PUSH4 0xffffffff 00000862: PUSH2 0x18de 00000865: AND 00000866: JUMP 00000867: JUMPDEST 00000868: PUSH1 0x01 0000086a: PUSH1 0xa0 0000086c: PUSH1 0x02 0000086e: EXP 0000086f: SUB 00000870: DUP1 00000871: DUP7 00000872: AND 00000873: PUSH1 0x00 00000875: SWAP1 00000876: DUP2 00000877: MSTORE 00000878: PUSH1 0x09 0000087a: PUSH1 0x20 0000087c: SWAP1 0000087d: DUP2 0000087e: MSTORE 0000087f: PUSH1 0x40 00000881: DUP1 00000882: DUP4 00000883: KECCAK256 00000884: SWAP5 00000885: SWAP1 00000886: SWAP5 00000887: SSTORE 00000888: SWAP2 00000889: DUP9 0000088a: AND 0000088b: DUP2 0000088c: MSTORE 0000088d: PUSH1 0x0a 0000088f: DUP3 00000890: MSTORE 00000891: DUP3 00000892: DUP2 00000893: KECCAK256 00000894: CALLER 00000895: DUP3 00000896: MSTORE 00000897: SWAP1 00000898: SWAP2 00000899: MSTORE 0000089a: KECCAK256 0000089b: SLOAD 0000089c: PUSH2 0x08ab 0000089f: SWAP1 000008a0: DUP5 000008a1: PUSH4 0xffffffff 000008a6: PUSH2 0x187e 000008a9: AND 000008aa: JUMP 000008ab: JUMPDEST 000008ac: PUSH1 0x01 000008ae: PUSH1 0xa0 000008b0: PUSH1 0x02 000008b2: EXP 000008b3: SUB 000008b4: DUP1 000008b5: DUP8 000008b6: AND 000008b7: PUSH1 0x00 000008b9: DUP2 000008ba: DUP2 000008bb: MSTORE 000008bc: PUSH1 0x0a 000008be: PUSH1 0x20 000008c0: SWAP1 000008c1: DUP2 000008c2: MSTORE 000008c3: PUSH1 0x40 000008c5: DUP1 000008c6: DUP4 000008c7: KECCAK256 000008c8: CALLER 000008c9: DUP5 000008ca: MSTORE 000008cb: DUP3 000008cc: MSTORE 000008cd: SWAP2 000008ce: DUP3 000008cf: SWAP1 000008d0: KECCAK256 000008d1: SWAP5 000008d2: SWAP1 000008d3: SWAP5 000008d4: SSTORE 000008d5: DUP1 000008d6: MLOAD 000008d7: DUP8 000008d8: DUP2 000008d9: MSTORE 000008da: SWAP1 000008db: MLOAD 000008dc: SWAP3 000008dd: DUP9 000008de: AND 000008df: SWAP4 000008e0: SWAP2 000008e1: SWAP3 000008e2: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000903: SWAP3 00000904: SWAP2 00000905: DUP2 00000906: SWAP1 00000907: SUB 00000908: SWAP1 00000909: SWAP2 0000090a: ADD 0000090b: SWAP1 0000090c: LOG3 0000090d: POP 0000090e: PUSH1 0x01 00000910: SWAP5 00000911: SWAP4 00000912: POP 00000913: POP 00000914: POP 00000915: POP 00000916: JUMP 00000917: JUMPDEST 00000918: PUSH1 0x00 0000091a: DUP1 0000091b: PUSH1 0x00 0000091d: DUP1 0000091e: PUSH1 0x00 00000920: DUP1 00000921: PUSH2 0x0928 00000924: PUSH2 0x16f3 00000927: JUMP 00000928: JUMPDEST 00000929: PUSH1 0x01 0000092b: PUSH1 0xa0 0000092d: PUSH1 0x02 0000092f: EXP 00000930: SUB 00000931: DUP9 00000932: AND 00000933: PUSH1 0x00 00000935: SWAP1 00000936: DUP2 00000937: MSTORE 00000938: PUSH1 0x0b 0000093a: PUSH1 0x20 0000093c: MSTORE 0000093d: PUSH1 0x40 0000093f: SWAP1 00000940: KECCAK256 00000941: SLOAD 00000942: SWAP1 00000943: SWAP6 00000944: POP 00000945: PUSH4 0xffffffff 0000094a: AND 0000094b: SWAP4 0000094c: POP 0000094d: DUP4 0000094e: ISZERO 0000094f: ISZERO 00000950: PUSH2 0x095c 00000953: JUMPI 00000954: PUSH1 0x00 00000956: SWAP6 00000957: POP 00000958: PUSH2 0x09c7 0000095b: JUMP 0000095c: JUMPDEST 0000095d: PUSH1 0x01 0000095f: PUSH1 0xa0 00000961: PUSH1 0x02 00000963: EXP 00000964: SUB 00000965: DUP8 00000966: AND 00000967: PUSH1 0x00 00000969: SWAP1 0000096a: DUP2 0000096b: MSTORE 0000096c: PUSH1 0x09 0000096e: PUSH1 0x20 00000970: SWAP1 00000971: DUP2 00000972: MSTORE 00000973: PUSH1 0x40 00000975: DUP1 00000976: DUP4 00000977: KECCAK256 00000978: SLOAD 00000979: PUSH1 0x0c 0000097b: SWAP1 0000097c: SWAP3 0000097d: MSTORE 0000097e: SWAP1 0000097f: SWAP2 00000980: KECCAK256 00000981: SLOAD 00000982: SWAP1 00000983: SWAP4 00000984: POP 00000985: SWAP2 00000986: POP 00000987: PUSH4 0xffffffff 0000098c: DUP1 0000098d: DUP7 0000098e: AND 0000098f: SWAP1 00000990: DUP6 00000991: AND 00000992: LT 00000993: DUP1 00000994: ISZERO 00000995: PUSH2 0x099e 00000998: JUMPI 00000999: POP 0000099a: PUSH1 0x00 0000099c: DUP4 0000099d: GT 0000099e: JUMPDEST 0000099f: ISZERO 000009a0: PUSH2 0x09c3 000009a3: JUMPI 000009a4: PUSH2 0x09ae 000009a7: DUP5 000009a8: DUP7 000009a9: DUP6 000009aa: PUSH2 0x1939 000009ad: JUMP 000009ae: JUMPDEST 000009af: SWAP1 000009b0: POP 000009b1: PUSH2 0x09c0 000009b4: DUP3 000009b5: DUP3 000009b6: PUSH4 0xffffffff 000009bb: PUSH2 0x18de 000009be: AND 000009bf: JUMP 000009c0: JUMPDEST 000009c1: SWAP2 000009c2: POP 000009c3: JUMPDEST 000009c4: DUP2 000009c5: SWAP6 000009c6: POP 000009c7: JUMPDEST 000009c8: POP 000009c9: POP 000009ca: POP 000009cb: POP 000009cc: POP 000009cd: SWAP2 000009ce: SWAP1 000009cf: POP 000009d0: JUMP 000009d1: JUMPDEST 000009d2: PUSH1 0x02 000009d4: SLOAD 000009d5: PUSH1 0xff 000009d7: AND 000009d8: DUP2 000009d9: JUMP 000009da: JUMPDEST 000009db: CALLER 000009dc: PUSH1 0x00 000009de: SWAP1 000009df: DUP2 000009e0: MSTORE 000009e1: PUSH1 0x08 000009e3: PUSH1 0x20 000009e5: MSTORE 000009e6: PUSH1 0x40 000009e8: DUP2 000009e9: KECCAK256 000009ea: SLOAD 000009eb: DUP2 000009ec: SWAP1 000009ed: DUP2 000009ee: SWAP1 000009ef: PUSH1 0xff 000009f1: AND 000009f2: ISZERO 000009f3: PUSH2 0x09fb 000009f6: JUMPI 000009f7: PUSH1 0x00 000009f9: DUP1 000009fa: REVERT 000009fb: JUMPDEST 000009fc: PUSH2 0x0a03 000009ff: PUSH2 0x16f3 00000a02: JUMP 00000a03: JUMPDEST 00000a04: CALLER 00000a05: PUSH1 0x00 00000a07: SWAP1 00000a08: DUP2 00000a09: MSTORE 00000a0a: PUSH1 0x0b 00000a0c: PUSH1 0x20 00000a0e: MSTORE 00000a0f: PUSH1 0x40 00000a11: DUP2 00000a12: KECCAK256 00000a13: SLOAD 00000a14: SWAP2 00000a15: SWAP5 00000a16: POP 00000a17: PUSH4 0xffffffff 00000a1c: SWAP1 00000a1d: SWAP2 00000a1e: AND 00000a1f: SWAP3 00000a20: POP 00000a21: DUP3 00000a22: GT 00000a23: PUSH2 0x0a2b 00000a26: JUMPI 00000a27: PUSH1 0x00 00000a29: DUP1 00000a2a: REVERT 00000a2b: JUMPDEST 00000a2c: PUSH2 0x0a36 00000a2f: CALLER 00000a30: DUP4 00000a31: DUP6 00000a32: PUSH2 0x171c 00000a35: JUMP 00000a36: JUMPDEST 00000a37: POP 00000a38: CALLER 00000a39: PUSH1 0x00 00000a3b: SWAP1 00000a3c: DUP2 00000a3d: MSTORE 00000a3e: PUSH1 0x0c 00000a40: PUSH1 0x20 00000a42: MSTORE 00000a43: PUSH1 0x40 00000a45: DUP2 00000a46: KECCAK256 00000a47: SLOAD 00000a48: SWAP1 00000a49: DUP2 00000a4a: GT 00000a4b: PUSH2 0x0a53 00000a4e: JUMPI 00000a4f: PUSH1 0x00 00000a51: DUP1 00000a52: REVERT 00000a53: JUMPDEST 00000a54: CALLER 00000a55: PUSH1 0x00 00000a57: DUP2 00000a58: DUP2 00000a59: MSTORE 00000a5a: PUSH1 0x0c 00000a5c: PUSH1 0x20 00000a5e: MSTORE 00000a5f: PUSH1 0x40 00000a61: DUP1 00000a62: DUP3 00000a63: KECCAK256 00000a64: DUP3 00000a65: SWAP1 00000a66: SSTORE 00000a67: MLOAD 00000a68: DUP4 00000a69: ISZERO 00000a6a: PUSH2 0x08fc 00000a6d: MUL 00000a6e: SWAP2 00000a6f: DUP5 00000a70: SWAP2 00000a71: SWAP1 00000a72: DUP2 00000a73: DUP2 00000a74: DUP2 00000a75: DUP6 00000a76: DUP9 00000a77: DUP9 00000a78: CALL 00000a79: SWAP4 00000a7a: POP 00000a7b: POP 00000a7c: POP 00000a7d: POP 00000a7e: ISZERO 00000a7f: DUP1 00000a80: ISZERO 00000a81: PUSH2 0x0a8e 00000a84: JUMPI 00000a85: RETURNDATASIZE 00000a86: PUSH1 0x00 00000a88: DUP1 00000a89: RETURNDATACOPY 00000a8a: RETURNDATASIZE 00000a8b: PUSH1 0x00 00000a8d: REVERT 00000a8e: JUMPDEST 00000a8f: POP 00000a90: PUSH1 0x40 00000a92: DUP1 00000a93: MLOAD 00000a94: DUP3 00000a95: DUP2 00000a96: MSTORE 00000a97: SWAP1 00000a98: MLOAD 00000a99: CALLER 00000a9a: SWAP2 00000a9b: PUSH32 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364 00000abc: SWAP2 00000abd: SWAP1 00000abe: DUP2 00000abf: SWAP1 00000ac0: SUB 00000ac1: PUSH1 0x20 00000ac3: ADD 00000ac4: SWAP1 00000ac5: LOG2 00000ac6: POP 00000ac7: POP 00000ac8: POP 00000ac9: JUMP 00000aca: JUMPDEST 00000acb: CALLER 00000acc: PUSH1 0x00 00000ace: SWAP1 00000acf: DUP2 00000ad0: MSTORE 00000ad1: PUSH1 0x0e 00000ad3: PUSH1 0x20 00000ad5: MSTORE 00000ad6: PUSH1 0x40 00000ad8: DUP2 00000ad9: KECCAK256 00000ada: SLOAD 00000adb: DUP2 00000adc: SWAP1 00000add: DUP2 00000ade: SWAP1 00000adf: DUP2 00000ae0: SWAP1 00000ae1: PUSH1 0xff 00000ae3: AND 00000ae4: ISZERO 00000ae5: ISZERO 00000ae6: PUSH2 0x0b5f 00000ae9: JUMPI 00000aea: PUSH1 0x40 00000aec: DUP1 00000aed: MLOAD 00000aee: PUSH1 0xe5 00000af0: PUSH1 0x02 00000af2: EXP 00000af3: PUSH3 0x461bcd 00000af7: MUL 00000af8: DUP2 00000af9: MSTORE 00000afa: PUSH1 0x20 00000afc: PUSH1 0x04 00000afe: DUP3 00000aff: ADD 00000b00: MSTORE 00000b01: PUSH1 0x21 00000b03: PUSH1 0x24 00000b05: DUP3 00000b06: ADD 00000b07: MSTORE 00000b08: PUSH32 0x6f6e6c7920616c6c6f7765642067616d6573207065726d697420746f2063616c 00000b29: PUSH1 0x44 00000b2b: DUP3 00000b2c: ADD 00000b2d: MSTORE 00000b2e: PUSH32 0x6c00000000000000000000000000000000000000000000000000000000000000 00000b4f: PUSH1 0x64 00000b51: DUP3 00000b52: ADD 00000b53: MSTORE 00000b54: SWAP1 00000b55: MLOAD 00000b56: SWAP1 00000b57: DUP2 00000b58: SWAP1 00000b59: SUB 00000b5a: PUSH1 0x84 00000b5c: ADD 00000b5d: SWAP1 00000b5e: REVERT 00000b5f: JUMPDEST 00000b60: PUSH1 0x00 00000b62: DUP6 00000b63: GT 00000b64: PUSH2 0x0b6c 00000b67: JUMPI 00000b68: PUSH1 0x00 00000b6a: DUP1 00000b6b: REVERT 00000b6c: JUMPDEST 00000b6d: PUSH2 0x0b75 00000b70: DUP6 00000b71: PUSH2 0x1a2e 00000b74: JUMP 00000b75: JUMPDEST 00000b76: SWAP2 00000b77: SWAP6 00000b78: POP 00000b79: SWAP4 00000b7a: POP 00000b7b: SWAP2 00000b7c: POP 00000b7d: PUSH1 0x00 00000b7f: DUP5 00000b80: GT 00000b81: PUSH2 0x0b89 00000b84: JUMPI 00000b85: PUSH1 0x00 00000b87: DUP1 00000b88: REVERT 00000b89: JUMPDEST 00000b8a: PUSH1 0x03 00000b8c: SLOAD 00000b8d: DUP5 00000b8e: DUP2 00000b8f: ADD 00000b90: GT 00000b91: PUSH2 0x0b99 00000b94: JUMPI 00000b95: PUSH1 0x00 00000b97: DUP1 00000b98: REVERT 00000b99: JUMPDEST 00000b9a: PUSH1 0x01 00000b9c: PUSH1 0xa0 00000b9e: PUSH1 0x02 00000ba0: EXP 00000ba1: SUB 00000ba2: DUP7 00000ba3: AND 00000ba4: PUSH1 0x00 00000ba6: SWAP1 00000ba7: DUP2 00000ba8: MSTORE 00000ba9: PUSH1 0x09 00000bab: PUSH1 0x20 00000bad: MSTORE 00000bae: PUSH1 0x40 00000bb0: SWAP1 00000bb1: KECCAK256 00000bb2: SLOAD 00000bb3: DUP5 00000bb4: DUP2 00000bb5: ADD 00000bb6: GT 00000bb7: PUSH2 0x0bbf 00000bba: JUMPI 00000bbb: PUSH1 0x00 00000bbd: DUP1 00000bbe: REVERT 00000bbf: JUMPDEST 00000bc0: PUSH2 0x0bc7 00000bc3: PUSH2 0x16f3 00000bc6: JUMP 00000bc7: JUMPDEST 00000bc8: PUSH1 0x01 00000bca: PUSH1 0xa0 00000bcc: PUSH1 0x02 00000bce: EXP 00000bcf: SUB 00000bd0: DUP8 00000bd1: AND 00000bd2: PUSH1 0x00 00000bd4: SWAP1 00000bd5: DUP2 00000bd6: MSTORE 00000bd7: PUSH1 0x0b 00000bd9: PUSH1 0x20 00000bdb: MSTORE 00000bdc: PUSH1 0x40 00000bde: SWAP1 00000bdf: KECCAK256 00000be0: SLOAD 00000be1: SWAP1 00000be2: SWAP2 00000be3: POP 00000be4: PUSH2 0x0bf5 00000be7: SWAP1 00000be8: DUP8 00000be9: SWAP1 00000bea: PUSH4 0xffffffff 00000bef: AND 00000bf0: DUP4 00000bf1: PUSH2 0x171c 00000bf4: JUMP 00000bf5: JUMPDEST 00000bf6: PUSH1 0x03 00000bf8: SLOAD 00000bf9: PUSH2 0x0c09 00000bfc: SWAP1 00000bfd: DUP6 00000bfe: SWAP1 00000bff: PUSH4 0xffffffff 00000c04: PUSH2 0x18de 00000c07: AND 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: PUSH1 0x03 00000c0c: SSTORE 00000c0d: PUSH1 0x01 00000c0f: PUSH1 0xa0 00000c11: PUSH1 0x02 00000c13: EXP 00000c14: SUB 00000c15: DUP7 00000c16: AND 00000c17: PUSH1 0x00 00000c19: SWAP1 00000c1a: DUP2 00000c1b: MSTORE 00000c1c: PUSH1 0x09 00000c1e: PUSH1 0x20 00000c20: MSTORE 00000c21: PUSH1 0x40 00000c23: SWAP1 00000c24: KECCAK256 00000c25: SLOAD 00000c26: PUSH2 0x0c36 00000c29: SWAP1 00000c2a: DUP6 00000c2b: SWAP1 00000c2c: PUSH4 0xffffffff 00000c31: PUSH2 0x18de 00000c34: AND 00000c35: JUMP 00000c36: JUMPDEST 00000c37: PUSH1 0x01 00000c39: PUSH1 0xa0 00000c3b: PUSH1 0x02 00000c3d: EXP 00000c3e: SUB 00000c3f: DUP8 00000c40: AND 00000c41: PUSH1 0x00 00000c43: SWAP1 00000c44: DUP2 00000c45: MSTORE 00000c46: PUSH1 0x09 00000c48: PUSH1 0x20 00000c4a: SWAP1 00000c4b: DUP2 00000c4c: MSTORE 00000c4d: PUSH1 0x40 00000c4f: DUP1 00000c50: DUP4 00000c51: KECCAK256 00000c52: SWAP4 00000c53: SWAP1 00000c54: SWAP4 00000c55: SSTORE 00000c56: PUSH1 0x03 00000c58: SLOAD 00000c59: PUSH4 0xffffffff 00000c5e: DUP6 00000c5f: AND 00000c60: DUP4 00000c61: MSTORE 00000c62: PUSH1 0x0d 00000c64: SWAP1 00000c65: SWAP2 00000c66: MSTORE 00000c67: SWAP2 00000c68: SWAP1 00000c69: KECCAK256 00000c6a: PUSH1 0x01 00000c6c: ADD 00000c6d: SSTORE 00000c6e: PUSH1 0x06 00000c70: SLOAD 00000c71: DUP4 00000c72: EQ 00000c73: PUSH2 0x0c7c 00000c76: JUMPI 00000c77: PUSH1 0x06 00000c79: DUP4 00000c7a: SWAP1 00000c7b: SSTORE 00000c7c: JUMPDEST 00000c7d: PUSH1 0x05 00000c7f: SLOAD 00000c80: DUP3 00000c81: EQ 00000c82: PUSH2 0x0c8b 00000c85: JUMPI 00000c86: PUSH1 0x05 00000c88: DUP3 00000c89: SWAP1 00000c8a: SSTORE 00000c8b: JUMPDEST 00000c8c: PUSH1 0x40 00000c8e: DUP1 00000c8f: MLOAD 00000c90: DUP6 00000c91: DUP2 00000c92: MSTORE 00000c93: SWAP1 00000c94: MLOAD 00000c95: PUSH1 0x01 00000c97: PUSH1 0xa0 00000c99: PUSH1 0x02 00000c9b: EXP 00000c9c: SUB 00000c9d: DUP9 00000c9e: AND 00000c9f: SWAP2 00000ca0: PUSH32 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885 00000cc1: SWAP2 00000cc2: SWAP1 00000cc3: DUP2 00000cc4: SWAP1 00000cc5: SUB 00000cc6: PUSH1 0x20 00000cc8: ADD 00000cc9: SWAP1 00000cca: LOG2 00000ccb: PUSH1 0x40 00000ccd: DUP1 00000cce: MLOAD 00000ccf: DUP6 00000cd0: DUP2 00000cd1: MSTORE 00000cd2: SWAP1 00000cd3: MLOAD 00000cd4: PUSH1 0x01 00000cd6: PUSH1 0xa0 00000cd8: PUSH1 0x02 00000cda: EXP 00000cdb: SUB 00000cdc: DUP9 00000cdd: AND 00000cde: SWAP2 00000cdf: PUSH1 0x00 00000ce1: SWAP2 00000ce2: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000d03: SWAP2 00000d04: DUP2 00000d05: SWAP1 00000d06: SUB 00000d07: PUSH1 0x20 00000d09: ADD 00000d0a: SWAP1 00000d0b: LOG3 00000d0c: POP 00000d0d: POP 00000d0e: POP 00000d0f: POP 00000d10: POP 00000d11: POP 00000d12: JUMP 00000d13: JUMPDEST 00000d14: PUSH1 0x05 00000d16: SLOAD 00000d17: SWAP1 00000d18: JUMP 00000d19: JUMPDEST 00000d1a: CALLER 00000d1b: PUSH1 0x00 00000d1d: SWAP1 00000d1e: DUP2 00000d1f: MSTORE 00000d20: PUSH1 0x09 00000d22: PUSH1 0x20 00000d24: MSTORE 00000d25: PUSH1 0x40 00000d27: DUP2 00000d28: KECCAK256 00000d29: SLOAD 00000d2a: DUP2 00000d2b: SWAP1 00000d2c: DUP4 00000d2d: GT 00000d2e: ISZERO 00000d2f: PUSH2 0x0d37 00000d32: JUMPI 00000d33: PUSH1 0x00 00000d35: DUP1 00000d36: REVERT 00000d37: JUMPDEST 00000d38: PUSH1 0x00 00000d3a: DUP4 00000d3b: GT 00000d3c: PUSH2 0x0d44 00000d3f: JUMPI 00000d40: PUSH1 0x00 00000d42: DUP1 00000d43: REVERT 00000d44: JUMPDEST 00000d45: PUSH2 0x0d4c 00000d48: PUSH2 0x16f3 00000d4b: JUMP 00000d4c: JUMPDEST 00000d4d: CALLER 00000d4e: PUSH1 0x00 00000d50: DUP2 00000d51: DUP2 00000d52: MSTORE 00000d53: PUSH1 0x0b 00000d55: PUSH1 0x20 00000d57: MSTORE 00000d58: PUSH1 0x40 00000d5a: SWAP1 00000d5b: KECCAK256 00000d5c: SLOAD 00000d5d: SWAP2 00000d5e: SWAP3 00000d5f: POP 00000d60: PUSH2 0x0d6f 00000d63: SWAP2 00000d64: PUSH4 0xffffffff 00000d69: AND 00000d6a: DUP4 00000d6b: PUSH2 0x171c 00000d6e: JUMP 00000d6f: JUMPDEST 00000d70: CALLER 00000d71: PUSH1 0x00 00000d73: SWAP1 00000d74: DUP2 00000d75: MSTORE 00000d76: PUSH1 0x09 00000d78: PUSH1 0x20 00000d7a: MSTORE 00000d7b: PUSH1 0x40 00000d7d: SWAP1 00000d7e: KECCAK256 00000d7f: SLOAD 00000d80: PUSH2 0x0d8f 00000d83: SWAP1 00000d84: DUP5 00000d85: PUSH4 0xffffffff 00000d8a: PUSH2 0x187e 00000d8d: AND 00000d8e: JUMP 00000d8f: JUMPDEST 00000d90: CALLER 00000d91: PUSH1 0x00 00000d93: SWAP1 00000d94: DUP2 00000d95: MSTORE 00000d96: PUSH1 0x09 00000d98: PUSH1 0x20 00000d9a: MSTORE 00000d9b: PUSH1 0x40 00000d9d: SWAP1 00000d9e: KECCAK256 00000d9f: SSTORE 00000da0: PUSH1 0x03 00000da2: SLOAD 00000da3: PUSH2 0x0db2 00000da6: SWAP1 00000da7: DUP5 00000da8: PUSH4 0xffffffff 00000dad: PUSH2 0x187e 00000db0: AND 00000db1: JUMP 00000db2: JUMPDEST 00000db3: PUSH1 0x03 00000db5: DUP2 00000db6: SWAP1 00000db7: SSTORE 00000db8: PUSH4 0xffffffff 00000dbd: DUP3 00000dbe: AND 00000dbf: PUSH1 0x00 00000dc1: SWAP1 00000dc2: DUP2 00000dc3: MSTORE 00000dc4: PUSH1 0x0d 00000dc6: PUSH1 0x20 00000dc8: SWAP1 00000dc9: DUP2 00000dca: MSTORE 00000dcb: PUSH1 0x40 00000dcd: SWAP2 00000dce: DUP3 00000dcf: SWAP1 00000dd0: KECCAK256 00000dd1: PUSH1 0x01 00000dd3: ADD 00000dd4: SWAP3 00000dd5: SWAP1 00000dd6: SWAP3 00000dd7: SSTORE 00000dd8: DUP1 00000dd9: MLOAD 00000dda: DUP6 00000ddb: DUP2 00000ddc: MSTORE 00000ddd: SWAP1 00000dde: MLOAD 00000ddf: CALLER 00000de0: SWAP3 00000de1: PUSH32 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5 00000e02: SWAP3 00000e03: DUP3 00000e04: SWAP1 00000e05: SUB 00000e06: ADD 00000e07: SWAP1 00000e08: LOG2 00000e09: PUSH1 0x01 00000e0b: SWAP2 00000e0c: POP 00000e0d: JUMPDEST 00000e0e: POP 00000e0f: SWAP2 00000e10: SWAP1 00000e11: POP 00000e12: JUMP 00000e13: JUMPDEST 00000e14: PUSH1 0x07 00000e16: SLOAD 00000e17: PUSH1 0x01 00000e19: PUSH1 0xa0 00000e1b: PUSH1 0x02 00000e1d: EXP 00000e1e: SUB 00000e1f: AND 00000e20: CALLER 00000e21: EQ 00000e22: PUSH2 0x0e27 00000e25: JUMPI 00000e26: INVALID 00000e27: JUMPDEST 00000e28: PUSH1 0x01 00000e2a: PUSH1 0xa0 00000e2c: PUSH1 0x02 00000e2e: EXP 00000e2f: SUB 00000e30: AND 00000e31: PUSH1 0x00 00000e33: SWAP1 00000e34: DUP2 00000e35: MSTORE 00000e36: PUSH1 0x08 00000e38: PUSH1 0x20 00000e3a: MSTORE 00000e3b: PUSH1 0x40 00000e3d: SWAP1 00000e3e: KECCAK256 00000e3f: DUP1 00000e40: SLOAD 00000e41: PUSH1 0xff 00000e43: NOT 00000e44: DUP2 00000e45: AND 00000e46: PUSH1 0xff 00000e48: SWAP1 00000e49: SWAP2 00000e4a: AND 00000e4b: ISZERO 00000e4c: OR 00000e4d: SWAP1 00000e4e: SSTORE 00000e4f: JUMP 00000e50: JUMPDEST 00000e51: PUSH1 0x01 00000e53: PUSH1 0xa0 00000e55: PUSH1 0x02 00000e57: EXP 00000e58: SUB 00000e59: AND 00000e5a: PUSH1 0x00 00000e5c: SWAP1 00000e5d: DUP2 00000e5e: MSTORE 00000e5f: PUSH1 0x09 00000e61: PUSH1 0x20 00000e63: MSTORE 00000e64: PUSH1 0x40 00000e66: SWAP1 00000e67: KECCAK256 00000e68: SLOAD 00000e69: SWAP1 00000e6a: JUMP 00000e6b: JUMPDEST 00000e6c: PUSH1 0x04 00000e6e: SLOAD 00000e6f: DUP2 00000e70: JUMP 00000e71: JUMPDEST 00000e72: PUSH1 0x07 00000e74: SLOAD 00000e75: PUSH1 0x01 00000e77: PUSH1 0xa0 00000e79: PUSH1 0x02 00000e7b: EXP 00000e7c: SUB 00000e7d: AND 00000e7e: CALLER 00000e7f: EQ 00000e80: PUSH2 0x0e85 00000e83: JUMPI 00000e84: INVALID 00000e85: JUMPDEST 00000e86: PUSH1 0x01 00000e88: PUSH1 0xa0 00000e8a: PUSH1 0x02 00000e8c: EXP 00000e8d: SUB 00000e8e: DUP2 00000e8f: AND 00000e90: PUSH1 0x00 00000e92: SWAP1 00000e93: DUP2 00000e94: MSTORE 00000e95: PUSH1 0x0e 00000e97: PUSH1 0x20 00000e99: MSTORE 00000e9a: PUSH1 0x40 00000e9c: SWAP1 00000e9d: KECCAK256 00000e9e: SLOAD 00000e9f: PUSH1 0xff 00000ea1: AND 00000ea2: ISZERO 00000ea3: PUSH2 0x0ef6 00000ea6: JUMPI 00000ea7: PUSH1 0x40 00000ea9: DUP1 00000eaa: MLOAD 00000eab: PUSH1 0xe5 00000ead: PUSH1 0x02 00000eaf: EXP 00000eb0: PUSH3 0x461bcd 00000eb4: MUL 00000eb5: DUP2 00000eb6: MSTORE 00000eb7: PUSH1 0x20 00000eb9: PUSH1 0x04 00000ebb: DUP3 00000ebc: ADD 00000ebd: MSTORE 00000ebe: PUSH1 0x1a 00000ec0: PUSH1 0x24 00000ec2: DUP3 00000ec3: ADD 00000ec4: MSTORE 00000ec5: PUSH32 0x67616d6520616c726561647920696e20616c6c6f77206c697374000000000000 00000ee6: PUSH1 0x44 00000ee8: DUP3 00000ee9: ADD 00000eea: MSTORE 00000eeb: SWAP1 00000eec: MLOAD 00000eed: SWAP1 00000eee: DUP2 00000eef: SWAP1 00000ef0: SUB 00000ef1: PUSH1 0x64 00000ef3: ADD 00000ef4: SWAP1 00000ef5: REVERT 00000ef6: JUMPDEST 00000ef7: PUSH1 0x01 00000ef9: PUSH1 0xa0 00000efb: PUSH1 0x02 00000efd: EXP 00000efe: SUB 00000eff: DUP2 00000f00: AND 00000f01: PUSH1 0x00 00000f03: SWAP1 00000f04: DUP2 00000f05: MSTORE 00000f06: PUSH1 0x0f 00000f08: PUSH1 0x20 00000f0a: MSTORE 00000f0b: PUSH1 0x40 00000f0d: SWAP1 00000f0e: KECCAK256 00000f0f: SLOAD 00000f10: ISZERO 00000f11: PUSH2 0x0f64 00000f14: JUMPI 00000f15: PUSH1 0x40 00000f17: DUP1 00000f18: MLOAD 00000f19: PUSH1 0xe5 00000f1b: PUSH1 0x02 00000f1d: EXP 00000f1e: PUSH3 0x461bcd 00000f22: MUL 00000f23: DUP2 00000f24: MSTORE 00000f25: PUSH1 0x20 00000f27: PUSH1 0x04 00000f29: DUP3 00000f2a: ADD 00000f2b: MSTORE 00000f2c: PUSH1 0x1d 00000f2e: PUSH1 0x24 00000f30: DUP3 00000f31: ADD 00000f32: MSTORE 00000f33: PUSH32 0x67616d6520616c726561647920696e2070726f706f736564206c697374000000 00000f54: PUSH1 0x44 00000f56: DUP3 00000f57: ADD 00000f58: MSTORE 00000f59: SWAP1 00000f5a: MLOAD 00000f5b: SWAP1 00000f5c: DUP2 00000f5d: SWAP1 00000f5e: SUB 00000f5f: PUSH1 0x64 00000f61: ADD 00000f62: SWAP1 00000f63: REVERT 00000f64: JUMPDEST 00000f65: PUSH1 0x01 00000f67: PUSH1 0xa0 00000f69: PUSH1 0x02 00000f6b: EXP 00000f6c: SUB 00000f6d: AND 00000f6e: PUSH1 0x00 00000f70: SWAP1 00000f71: DUP2 00000f72: MSTORE 00000f73: PUSH1 0x0f 00000f75: PUSH1 0x20 00000f77: MSTORE 00000f78: PUSH1 0x40 00000f7a: SWAP1 00000f7b: KECCAK256 00000f7c: TIMESTAMP 00000f7d: SWAP1 00000f7e: SSTORE 00000f7f: JUMP 00000f80: JUMPDEST 00000f81: PUSH1 0x07 00000f83: SLOAD 00000f84: PUSH1 0x01 00000f86: PUSH1 0xa0 00000f88: PUSH1 0x02 00000f8a: EXP 00000f8b: SUB 00000f8c: AND 00000f8d: CALLER 00000f8e: EQ 00000f8f: PUSH2 0x0f94 00000f92: JUMPI 00000f93: INVALID 00000f94: JUMPDEST 00000f95: PUSH1 0x01 00000f97: PUSH1 0xa0 00000f99: PUSH1 0x02 00000f9b: EXP 00000f9c: SUB 00000f9d: DUP2 00000f9e: AND 00000f9f: PUSH1 0x00 00000fa1: SWAP1 00000fa2: DUP2 00000fa3: MSTORE 00000fa4: PUSH1 0x0e 00000fa6: PUSH1 0x20 00000fa8: MSTORE 00000fa9: PUSH1 0x40 00000fab: SWAP1 00000fac: KECCAK256 00000fad: SLOAD 00000fae: PUSH1 0xff 00000fb0: AND 00000fb1: DUP1 00000fb2: PUSH2 0x0fd1 00000fb5: JUMPI 00000fb6: POP 00000fb7: PUSH1 0x01 00000fb9: PUSH1 0xa0 00000fbb: PUSH1 0x02 00000fbd: EXP 00000fbe: SUB 00000fbf: DUP2 00000fc0: AND 00000fc1: PUSH1 0x00 00000fc3: SWAP1 00000fc4: DUP2 00000fc5: MSTORE 00000fc6: PUSH1 0x0f 00000fc8: PUSH1 0x20 00000fca: MSTORE 00000fcb: PUSH1 0x40 00000fcd: DUP2 00000fce: KECCAK256 00000fcf: SLOAD 00000fd0: GT 00000fd1: JUMPDEST 00000fd2: ISZERO 00000fd3: ISZERO 00000fd4: PUSH2 0x104d 00000fd7: JUMPI 00000fd8: PUSH1 0x40 00000fda: DUP1 00000fdb: MLOAD 00000fdc: PUSH1 0xe5 00000fde: PUSH1 0x02 00000fe0: EXP 00000fe1: PUSH3 0x461bcd 00000fe5: MUL 00000fe6: DUP2 00000fe7: MSTORE 00000fe8: PUSH1 0x20 00000fea: PUSH1 0x04 00000fec: DUP3 00000fed: ADD 00000fee: MSTORE 00000fef: PUSH1 0x28 00000ff1: PUSH1 0x24 00000ff3: DUP3 00000ff4: ADD 00000ff5: MSTORE 00000ff6: PUSH32 0x67616d65206d75737420696e20616c6c6f77206c697374206f722070726f706f 00001017: PUSH1 0x44 00001019: DUP3 0000101a: ADD 0000101b: MSTORE 0000101c: PUSH32 0x736564206c697374000000000000000000000000000000000000000000000000 0000103d: PUSH1 0x64 0000103f: DUP3 00001040: ADD 00001041: MSTORE 00001042: SWAP1 00001043: MLOAD 00001044: SWAP1 00001045: DUP2 00001046: SWAP1 00001047: SUB 00001048: PUSH1 0x84 0000104a: ADD 0000104b: SWAP1 0000104c: REVERT 0000104d: JUMPDEST 0000104e: PUSH1 0x01 00001050: PUSH1 0xa0 00001052: PUSH1 0x02 00001054: EXP 00001055: SUB 00001056: AND 00001057: PUSH1 0x00 00001059: SWAP1 0000105a: DUP2 0000105b: MSTORE 0000105c: PUSH1 0x0e 0000105e: PUSH1 0x20 00001060: SWAP1 00001061: DUP2 00001062: MSTORE 00001063: PUSH1 0x40 00001065: DUP1 00001066: DUP4 00001067: KECCAK256 00001068: DUP1 00001069: SLOAD 0000106a: PUSH1 0xff 0000106c: NOT 0000106d: AND 0000106e: SWAP1 0000106f: SSTORE 00001070: PUSH1 0x0f 00001072: SWAP1 00001073: SWAP2 00001074: MSTORE 00001075: DUP2 00001076: KECCAK256 00001077: SSTORE 00001078: JUMP 00001079: JUMPDEST 0000107a: CALLER 0000107b: PUSH1 0x00 0000107d: SWAP1 0000107e: DUP2 0000107f: MSTORE 00001080: PUSH1 0x0e 00001082: PUSH1 0x20 00001084: MSTORE 00001085: PUSH1 0x40 00001087: DUP2 00001088: KECCAK256 00001089: SLOAD 0000108a: DUP2 0000108b: SWAP1 0000108c: DUP2 0000108d: SWAP1 0000108e: DUP2 0000108f: SWAP1 00001090: PUSH1 0xff 00001092: AND 00001093: ISZERO 00001094: ISZERO 00001095: PUSH2 0x110e 00001098: JUMPI 00001099: PUSH1 0x40 0000109b: DUP1 0000109c: MLOAD 0000109d: PUSH1 0xe5 0000109f: PUSH1 0x02 000010a1: EXP 000010a2: PUSH3 0x461bcd 000010a6: MUL 000010a7: DUP2 000010a8: MSTORE 000010a9: PUSH1 0x20 000010ab: PUSH1 0x04 000010ad: DUP3 000010ae: ADD 000010af: MSTORE 000010b0: PUSH1 0x21 000010b2: PUSH1 0x24 000010b4: DUP3 000010b5: ADD 000010b6: MSTORE 000010b7: PUSH32 0x6f6e6c7920616c6c6f7765642067616d6573207065726d697420746f2063616c 000010d8: PUSH1 0x44 000010da: DUP3 000010db: ADD 000010dc: MSTORE 000010dd: PUSH32 0x6c00000000000000000000000000000000000000000000000000000000000000 000010fe: PUSH1 0x64 00001100: DUP3 00001101: ADD 00001102: MSTORE 00001103: SWAP1 00001104: MLOAD 00001105: SWAP1 00001106: DUP2 00001107: SWAP1 00001108: SUB 00001109: PUSH1 0x84 0000110b: ADD 0000110c: SWAP1 0000110d: REVERT 0000110e: JUMPDEST 0000110f: PUSH2 0x1117 00001112: TIMESTAMP 00001113: PUSH2 0x1b05 00001116: JUMP 00001117: JUMPDEST 00001118: PUSH2 0xffff 0000111b: PUSH1 0x00 0000111d: NOT 0000111e: PUSH1 0x0c 00001120: DUP5 00001121: MUL 00001122: PUSH1 0xff 00001124: DUP5 00001125: AND 00001126: ADD 00001127: ADD 00001128: AND 00001129: PUSH1 0x00 0000112b: DUP2 0000112c: DUP2 0000112d: MSTORE 0000112e: PUSH1 0x0d 00001130: PUSH1 0x20 00001132: MSTORE 00001133: PUSH1 0x40 00001135: SWAP1 00001136: KECCAK256 00001137: SLOAD 00001138: SWAP3 00001139: SWAP7 0000113a: POP 0000113b: SWAP1 0000113c: SWAP5 0000113d: POP 0000113e: SWAP3 0000113f: POP 00001140: PUSH2 0x1149 00001143: SWAP1 00001144: CALLVALUE 00001145: PUSH2 0x18de 00001148: JUMP 00001149: JUMPDEST 0000114a: PUSH4 0xffffffff 0000114f: DUP4 00001150: AND 00001151: PUSH1 0x00 00001153: SWAP1 00001154: DUP2 00001155: MSTORE 00001156: PUSH1 0x0d 00001158: PUSH1 0x20 0000115a: MSTORE 0000115b: PUSH1 0x40 0000115d: SWAP1 0000115e: KECCAK256 0000115f: DUP2 00001160: DUP2 00001161: SSTORE 00001162: PUSH1 0x01 00001164: ADD 00001165: SLOAD 00001166: SWAP1 00001167: SWAP2 00001168: POP 00001169: ISZERO 0000116a: ISZERO 0000116b: PUSH2 0x118b 0000116e: JUMPI 0000116f: PUSH1 0x03 00001171: SLOAD 00001172: PUSH4 0xffffffff 00001177: DUP4 00001178: AND 00001179: PUSH1 0x00 0000117b: SWAP1 0000117c: DUP2 0000117d: MSTORE 0000117e: PUSH1 0x0d 00001180: PUSH1 0x20 00001182: MSTORE 00001183: PUSH1 0x40 00001185: SWAP1 00001186: KECCAK256 00001187: PUSH1 0x01 00001189: ADD 0000118a: SSTORE 0000118b: JUMPDEST 0000118c: PUSH1 0x40 0000118e: DUP1 0000118f: MLOAD 00001190: PUSH2 0xffff 00001193: DUP7 00001194: AND 00001195: DUP2 00001196: MSTORE 00001197: PUSH1 0xff 00001199: DUP6 0000119a: AND 0000119b: PUSH1 0x20 0000119d: DUP3 0000119e: ADD 0000119f: MSTORE 000011a0: DUP1 000011a1: DUP3 000011a2: ADD 000011a3: DUP4 000011a4: SWAP1 000011a5: MSTORE 000011a6: SWAP1 000011a7: MLOAD 000011a8: CALLER 000011a9: SWAP2 000011aa: PUSH32 0x8b0cb8ed9764b54369b23141ee20ee74d5fec21db7c14535d1fe5ce94b4d4913 000011cb: SWAP2 000011cc: SWAP1 000011cd: DUP2 000011ce: SWAP1 000011cf: SUB 000011d0: PUSH1 0x60 000011d2: ADD 000011d3: SWAP1 000011d4: LOG2 000011d5: POP 000011d6: POP 000011d7: POP 000011d8: POP 000011d9: JUMP 000011da: JUMPDEST 000011db: PUSH1 0x07 000011dd: SLOAD 000011de: PUSH1 0x01 000011e0: PUSH1 0xa0 000011e2: PUSH1 0x02 000011e4: EXP 000011e5: SUB 000011e6: AND 000011e7: DUP2 000011e8: JUMP 000011e9: JUMPDEST 000011ea: PUSH1 0x0a 000011ec: DUP2 000011ed: JUMP 000011ee: JUMPDEST 000011ef: PUSH3 0x4c4b40 000011f3: DUP2 000011f4: JUMP 000011f5: JUMPDEST 000011f6: PUSH1 0x01 000011f8: DUP1 000011f9: SLOAD 000011fa: PUSH1 0x40 000011fc: DUP1 000011fd: MLOAD 000011fe: PUSH1 0x20 00001200: PUSH1 0x02 00001202: DUP5 00001203: DUP7 00001204: AND 00001205: ISZERO 00001206: PUSH2 0x0100 00001209: MUL 0000120a: PUSH1 0x00 0000120c: NOT 0000120d: ADD 0000120e: SWAP1 0000120f: SWAP5 00001210: AND 00001211: SWAP4 00001212: SWAP1 00001213: SWAP4 00001214: DIV 00001215: PUSH1 0x1f 00001217: DUP2 00001218: ADD 00001219: DUP5 0000121a: SWAP1 0000121b: DIV 0000121c: DUP5 0000121d: MUL 0000121e: DUP3 0000121f: ADD 00001220: DUP5 00001221: ADD 00001222: SWAP1 00001223: SWAP3 00001224: MSTORE 00001225: DUP2 00001226: DUP2 00001227: MSTORE 00001228: SWAP3 00001229: SWAP2 0000122a: DUP4 0000122b: ADD 0000122c: DUP3 0000122d: DUP3 0000122e: DUP1 0000122f: ISZERO 00001230: PUSH2 0x064c 00001233: JUMPI 00001234: DUP1 00001235: PUSH1 0x1f 00001237: LT 00001238: PUSH2 0x0621 0000123b: JUMPI 0000123c: PUSH2 0x0100 0000123f: DUP1 00001240: DUP4 00001241: SLOAD 00001242: DIV 00001243: MUL 00001244: DUP4 00001245: MSTORE 00001246: SWAP2 00001247: PUSH1 0x20 00001249: ADD 0000124a: SWAP2 0000124b: PUSH2 0x064c 0000124e: JUMP 0000124f: JUMPDEST 00001250: PUSH1 0x5a 00001252: DUP2 00001253: JUMP 00001254: JUMPDEST 00001255: PUSH2 0x01f4 00001258: DUP2 00001259: JUMP 0000125a: JUMPDEST 0000125b: PUSH1 0x00 0000125d: DUP1 0000125e: DUP1 0000125f: DUP4 00001260: GT 00001261: PUSH2 0x1269 00001264: JUMPI 00001265: PUSH1 0x00 00001267: DUP1 00001268: REVERT 00001269: JUMPDEST 0000126a: CALLER 0000126b: PUSH1 0x00 0000126d: SWAP1 0000126e: DUP2 0000126f: MSTORE 00001270: PUSH1 0x09 00001272: PUSH1 0x20 00001274: MSTORE 00001275: PUSH1 0x40 00001277: SWAP1 00001278: KECCAK256 00001279: SLOAD 0000127a: DUP4 0000127b: GT 0000127c: ISZERO 0000127d: PUSH2 0x1285 00001280: JUMPI 00001281: PUSH1 0x00 00001283: DUP1 00001284: REVERT 00001285: JUMPDEST 00001286: PUSH1 0x01 00001288: PUSH1 0xa0 0000128a: PUSH1 0x02 0000128c: EXP 0000128d: SUB 0000128e: DUP5 0000128f: AND 00001290: PUSH1 0x00 00001292: SWAP1 00001293: DUP2 00001294: MSTORE 00001295: PUSH1 0x09 00001297: PUSH1 0x20 00001299: MSTORE 0000129a: PUSH1 0x40 0000129c: SWAP1 0000129d: KECCAK256 0000129e: SLOAD 0000129f: DUP4 000012a0: DUP2 000012a1: ADD 000012a2: LT 000012a3: ISZERO 000012a4: PUSH2 0x12ac 000012a7: JUMPI 000012a8: PUSH1 0x00 000012aa: DUP1 000012ab: REVERT 000012ac: JUMPDEST 000012ad: CALLER 000012ae: PUSH1 0x00 000012b0: SWAP1 000012b1: DUP2 000012b2: MSTORE 000012b3: PUSH1 0x08 000012b5: PUSH1 0x20 000012b7: MSTORE 000012b8: PUSH1 0x40 000012ba: SWAP1 000012bb: KECCAK256 000012bc: SLOAD 000012bd: PUSH1 0xff 000012bf: AND 000012c0: ISZERO 000012c1: PUSH2 0x12c9 000012c4: JUMPI 000012c5: PUSH1 0x00 000012c7: DUP1 000012c8: REVERT 000012c9: JUMPDEST 000012ca: PUSH1 0x01 000012cc: PUSH1 0xa0 000012ce: PUSH1 0x02 000012d0: EXP 000012d1: SUB 000012d2: DUP5 000012d3: AND 000012d4: PUSH1 0x00 000012d6: SWAP1 000012d7: DUP2 000012d8: MSTORE 000012d9: PUSH1 0x08 000012db: PUSH1 0x20 000012dd: MSTORE 000012de: PUSH1 0x40 000012e0: SWAP1 000012e1: KECCAK256 000012e2: SLOAD 000012e3: PUSH1 0xff 000012e5: AND 000012e6: ISZERO 000012e7: PUSH2 0x12ef 000012ea: JUMPI 000012eb: PUSH1 0x00 000012ed: DUP1 000012ee: REVERT 000012ef: JUMPDEST 000012f0: PUSH2 0x12f7 000012f3: PUSH2 0x16f3 000012f6: JUMP 000012f7: JUMPDEST 000012f8: CALLER 000012f9: PUSH1 0x00 000012fb: DUP2 000012fc: DUP2 000012fd: MSTORE 000012fe: PUSH1 0x0b 00001300: PUSH1 0x20 00001302: MSTORE 00001303: PUSH1 0x40 00001305: SWAP1 00001306: KECCAK256 00001307: SLOAD 00001308: SWAP2 00001309: SWAP3 0000130a: POP 0000130b: PUSH2 0x131a 0000130e: SWAP2 0000130f: PUSH4 0xffffffff 00001314: AND 00001315: DUP4 00001316: PUSH2 0x171c 00001319: JUMP 0000131a: JUMPDEST 0000131b: PUSH1 0x01 0000131d: PUSH1 0xa0 0000131f: PUSH1 0x02 00001321: EXP 00001322: SUB 00001323: DUP5 00001324: AND 00001325: PUSH1 0x00 00001327: SWAP1 00001328: DUP2 00001329: MSTORE 0000132a: PUSH1 0x0b 0000132c: PUSH1 0x20 0000132e: MSTORE 0000132f: PUSH1 0x40 00001331: SWAP1 00001332: KECCAK256 00001333: SLOAD 00001334: PUSH2 0x1345 00001337: SWAP1 00001338: DUP6 00001339: SWAP1 0000133a: PUSH4 0xffffffff 0000133f: AND 00001340: DUP4 00001341: PUSH2 0x171c 00001344: JUMP 00001345: JUMPDEST 00001346: CALLER 00001347: PUSH1 0x00 00001349: SWAP1 0000134a: DUP2 0000134b: MSTORE 0000134c: PUSH1 0x09 0000134e: PUSH1 0x20 00001350: MSTORE 00001351: PUSH1 0x40 00001353: SWAP1 00001354: KECCAK256 00001355: SLOAD 00001356: PUSH2 0x1365 00001359: SWAP1 0000135a: DUP5 0000135b: PUSH4 0xffffffff 00001360: PUSH2 0x187e 00001363: AND 00001364: JUMP 00001365: JUMPDEST 00001366: CALLER 00001367: PUSH1 0x00 00001369: SWAP1 0000136a: DUP2 0000136b: MSTORE 0000136c: PUSH1 0x09 0000136e: PUSH1 0x20 00001370: MSTORE 00001371: PUSH1 0x40 00001373: DUP1 00001374: DUP3 00001375: KECCAK256 00001376: SWAP3 00001377: SWAP1 00001378: SWAP3 00001379: SSTORE 0000137a: PUSH1 0x01 0000137c: PUSH1 0xa0 0000137e: PUSH1 0x02 00001380: EXP 00001381: SUB 00001382: DUP7 00001383: AND 00001384: DUP2 00001385: MSTORE 00001386: KECCAK256 00001387: SLOAD 00001388: PUSH2 0x1397 0000138b: SWAP1 0000138c: DUP5 0000138d: PUSH4 0xffffffff 00001392: PUSH2 0x18de 00001395: AND 00001396: JUMP 00001397: JUMPDEST 00001398: PUSH1 0x01 0000139a: PUSH1 0xa0 0000139c: PUSH1 0x02 0000139e: EXP 0000139f: SUB 000013a0: DUP6 000013a1: AND 000013a2: PUSH1 0x00 000013a4: DUP2 000013a5: DUP2 000013a6: MSTORE 000013a7: PUSH1 0x09 000013a9: PUSH1 0x20 000013ab: SWAP1 000013ac: DUP2 000013ad: MSTORE 000013ae: PUSH1 0x40 000013b0: SWAP2 000013b1: DUP3 000013b2: SWAP1 000013b3: KECCAK256 000013b4: SWAP4 000013b5: SWAP1 000013b6: SWAP4 000013b7: SSTORE 000013b8: DUP1 000013b9: MLOAD 000013ba: DUP7 000013bb: DUP2 000013bc: MSTORE 000013bd: SWAP1 000013be: MLOAD 000013bf: SWAP2 000013c0: SWAP3 000013c1: CALLER 000013c2: SWAP3 000013c3: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000013e4: SWAP3 000013e5: DUP2 000013e6: SWAP1 000013e7: SUB 000013e8: SWAP1 000013e9: SWAP2 000013ea: ADD 000013eb: SWAP1 000013ec: LOG3 000013ed: POP 000013ee: PUSH1 0x01 000013f0: SWAP4 000013f1: SWAP3 000013f2: POP 000013f3: POP 000013f4: POP 000013f5: JUMP 000013f6: JUMPDEST 000013f7: PUSH1 0x07 000013f9: SLOAD 000013fa: PUSH1 0x01 000013fc: PUSH1 0xa0 000013fe: PUSH1 0x02 00001400: EXP 00001401: SUB 00001402: AND 00001403: CALLER 00001404: EQ 00001405: PUSH2 0x140a 00001408: JUMPI 00001409: INVALID 0000140a: JUMPDEST 0000140b: PUSH1 0x01 0000140d: PUSH1 0xa0 0000140f: PUSH1 0x02 00001411: EXP 00001412: SUB 00001413: DUP2 00001414: AND 00001415: PUSH1 0x00 00001417: SWAP1 00001418: DUP2 00001419: MSTORE 0000141a: PUSH1 0x0e 0000141c: PUSH1 0x20 0000141e: MSTORE 0000141f: PUSH1 0x40 00001421: SWAP1 00001422: KECCAK256 00001423: SLOAD 00001424: PUSH1 0xff 00001426: AND 00001427: ISZERO 00001428: PUSH2 0x147b 0000142b: JUMPI 0000142c: PUSH1 0x40 0000142e: DUP1 0000142f: MLOAD 00001430: PUSH1 0xe5 00001432: PUSH1 0x02 00001434: EXP 00001435: PUSH3 0x461bcd 00001439: MUL 0000143a: DUP2 0000143b: MSTORE 0000143c: PUSH1 0x20 0000143e: PUSH1 0x04 00001440: DUP3 00001441: ADD 00001442: MSTORE 00001443: PUSH1 0x1a 00001445: PUSH1 0x24 00001447: DUP3 00001448: ADD 00001449: MSTORE 0000144a: PUSH32 0x67616d6520616c726561647920696e20616c6c6f77206c697374000000000000 0000146b: PUSH1 0x44 0000146d: DUP3 0000146e: ADD 0000146f: MSTORE 00001470: SWAP1 00001471: MLOAD 00001472: SWAP1 00001473: DUP2 00001474: SWAP1 00001475: SUB 00001476: PUSH1 0x64 00001478: ADD 00001479: SWAP1 0000147a: REVERT 0000147b: JUMPDEST 0000147c: PUSH1 0x01 0000147e: PUSH1 0xa0 00001480: PUSH1 0x02 00001482: EXP 00001483: SUB 00001484: DUP2 00001485: AND 00001486: PUSH1 0x00 00001488: SWAP1 00001489: DUP2 0000148a: MSTORE 0000148b: PUSH1 0x0f 0000148d: PUSH1 0x20 0000148f: MSTORE 00001490: PUSH1 0x40 00001492: DUP2 00001493: KECCAK256 00001494: SLOAD 00001495: GT 00001496: PUSH2 0x150f 00001499: JUMPI 0000149a: PUSH1 0x40 0000149c: DUP1 0000149d: MLOAD 0000149e: PUSH1 0xe5 000014a0: PUSH1 0x02 000014a2: EXP 000014a3: PUSH3 0x461bcd 000014a7: MUL 000014a8: DUP2 000014a9: MSTORE 000014aa: PUSH1 0x20 000014ac: PUSH1 0x04 000014ae: DUP3 000014af: ADD 000014b0: MSTORE 000014b1: PUSH1 0x23 000014b3: PUSH1 0x24 000014b5: DUP3 000014b6: ADD 000014b7: MSTORE 000014b8: PUSH32 0x67616d65206d75737420626520696e2070726f706f736564206c697374206669 000014d9: PUSH1 0x44 000014db: DUP3 000014dc: ADD 000014dd: MSTORE 000014de: PUSH32 0x7273740000000000000000000000000000000000000000000000000000000000 000014ff: PUSH1 0x64 00001501: DUP3 00001502: ADD 00001503: MSTORE 00001504: SWAP1 00001505: MLOAD 00001506: SWAP1 00001507: DUP2 00001508: SWAP1 00001509: SUB 0000150a: PUSH1 0x84 0000150c: ADD 0000150d: SWAP1 0000150e: REVERT 0000150f: JUMPDEST 00001510: PUSH1 0x01 00001512: PUSH1 0xa0 00001514: PUSH1 0x02 00001516: EXP 00001517: SUB 00001518: DUP2 00001519: AND 0000151a: PUSH1 0x00 0000151c: SWAP1 0000151d: DUP2 0000151e: MSTORE 0000151f: PUSH1 0x0f 00001521: PUSH1 0x20 00001523: MSTORE 00001524: PUSH1 0x40 00001526: SWAP1 00001527: KECCAK256 00001528: SLOAD 00001529: PUSH2 0x153b 0000152c: SWAP1 0000152d: PUSH3 0x02a300 00001531: PUSH4 0xffffffff 00001536: PUSH2 0x18de 00001539: AND 0000153a: JUMP 0000153b: JUMPDEST 0000153c: TIMESTAMP 0000153d: GT 0000153e: PUSH2 0x1591 00001541: JUMPI 00001542: PUSH1 0x40 00001544: DUP1 00001545: MLOAD 00001546: PUSH1 0xe5 00001548: PUSH1 0x02 0000154a: EXP 0000154b: PUSH3 0x461bcd 0000154f: MUL 00001550: DUP2 00001551: MSTORE 00001552: PUSH1 0x20 00001554: PUSH1 0x04 00001556: DUP3 00001557: ADD 00001558: MSTORE 00001559: PUSH1 0x1f 0000155b: PUSH1 0x24 0000155d: DUP3 0000155e: ADD 0000155f: MSTORE 00001560: PUSH32 0x67616d65206d757374206265206465626174656420666f722032206461797300 00001581: PUSH1 0x44 00001583: DUP3 00001584: ADD 00001585: MSTORE 00001586: SWAP1 00001587: MLOAD 00001588: SWAP1 00001589: DUP2 0000158a: SWAP1 0000158b: SUB 0000158c: PUSH1 0x64 0000158e: ADD 0000158f: SWAP1 00001590: REVERT 00001591: JUMPDEST 00001592: PUSH1 0x01 00001594: PUSH1 0xa0 00001596: PUSH1 0x02 00001598: EXP 00001599: SUB 0000159a: AND 0000159b: PUSH1 0x00 0000159d: SWAP1 0000159e: DUP2 0000159f: MSTORE 000015a0: PUSH1 0x0e 000015a2: PUSH1 0x20 000015a4: SWAP1 000015a5: DUP2 000015a6: MSTORE 000015a7: PUSH1 0x40 000015a9: DUP1 000015aa: DUP4 000015ab: KECCAK256 000015ac: DUP1 000015ad: SLOAD 000015ae: PUSH1 0xff 000015b0: NOT 000015b1: AND 000015b2: PUSH1 0x01 000015b4: OR 000015b5: SWAP1 000015b6: SSTORE 000015b7: PUSH1 0x0f 000015b9: SWAP1 000015ba: SWAP2 000015bb: MSTORE 000015bc: DUP2 000015bd: KECCAK256 000015be: SSTORE 000015bf: JUMP 000015c0: JUMPDEST 000015c1: PUSH1 0x0c 000015c3: PUSH1 0x20 000015c5: MSTORE 000015c6: PUSH1 0x00 000015c8: SWAP1 000015c9: DUP2 000015ca: MSTORE 000015cb: PUSH1 0x40 000015cd: SWAP1 000015ce: KECCAK256 000015cf: SLOAD 000015d0: DUP2 000015d1: JUMP 000015d2: JUMPDEST 000015d3: PUSH1 0x01 000015d5: PUSH1 0xa0 000015d7: PUSH1 0x02 000015d9: EXP 000015da: SUB 000015db: SWAP2 000015dc: DUP3 000015dd: AND 000015de: PUSH1 0x00 000015e0: SWAP1 000015e1: DUP2 000015e2: MSTORE 000015e3: PUSH1 0x0a 000015e5: PUSH1 0x20 000015e7: SWAP1 000015e8: DUP2 000015e9: MSTORE 000015ea: PUSH1 0x40 000015ec: DUP1 000015ed: DUP4 000015ee: KECCAK256 000015ef: SWAP4 000015f0: SWAP1 000015f1: SWAP5 000015f2: AND 000015f3: DUP3 000015f4: MSTORE 000015f5: SWAP2 000015f6: SWAP1 000015f7: SWAP2 000015f8: MSTORE 000015f9: KECCAK256 000015fa: SLOAD 000015fb: SWAP1 000015fc: JUMP 000015fd: JUMPDEST 000015fe: PUSH1 0x0b 00001600: PUSH1 0x20 00001602: MSTORE 00001603: PUSH1 0x00 00001605: SWAP1 00001606: DUP2 00001607: MSTORE 00001608: PUSH1 0x40 0000160a: SWAP1 0000160b: KECCAK256 0000160c: SLOAD 0000160d: PUSH4 0xffffffff 00001612: AND 00001613: DUP2 00001614: JUMP 00001615: JUMPDEST 00001616: PUSH1 0x01 00001618: PUSH1 0xa0 0000161a: PUSH1 0x02 0000161c: EXP 0000161d: SUB 0000161e: DUP2 0000161f: AND 00001620: PUSH1 0x00 00001622: SWAP1 00001623: DUP2 00001624: MSTORE 00001625: PUSH1 0x0f 00001627: PUSH1 0x20 00001629: MSTORE 0000162a: PUSH1 0x40 0000162c: DUP2 0000162d: KECCAK256 0000162e: SLOAD 0000162f: DUP2 00001630: SWAP1 00001631: DUP2 00001632: LT 00001633: PUSH2 0x1686 00001636: JUMPI 00001637: PUSH1 0x40 00001639: DUP1 0000163a: MLOAD 0000163b: PUSH1 0xe5 0000163d: PUSH1 0x02 0000163f: EXP 00001640: PUSH3 0x461bcd 00001644: MUL 00001645: DUP2 00001646: MSTORE 00001647: PUSH1 0x20 00001649: PUSH1 0x04 0000164b: DUP3 0000164c: ADD 0000164d: MSTORE 0000164e: PUSH1 0x19 00001650: PUSH1 0x24 00001652: DUP3 00001653: ADD 00001654: MSTORE 00001655: PUSH32 0x67616d65206e6f7420696e2070726f706f736564206c69737400000000000000 00001676: PUSH1 0x44 00001678: DUP3 00001679: ADD 0000167a: MSTORE 0000167b: SWAP1 0000167c: MLOAD 0000167d: SWAP1 0000167e: DUP2 0000167f: SWAP1 00001680: SUB 00001681: PUSH1 0x64 00001683: ADD 00001684: SWAP1 00001685: REVERT 00001686: JUMPDEST 00001687: POP 00001688: PUSH1 0x01 0000168a: PUSH1 0xa0 0000168c: PUSH1 0x02 0000168e: EXP 0000168f: SUB 00001690: DUP3 00001691: AND 00001692: PUSH1 0x00 00001694: SWAP1 00001695: DUP2 00001696: MSTORE 00001697: PUSH1 0x0f 00001699: PUSH1 0x20 0000169b: MSTORE 0000169c: PUSH1 0x40 0000169e: SWAP1 0000169f: KECCAK256 000016a0: SLOAD 000016a1: PUSH2 0x16b3 000016a4: DUP2 000016a5: PUSH3 0x02a300 000016a9: PUSH4 0xffffffff 000016ae: PUSH2 0x18de 000016b1: AND 000016b2: JUMP 000016b3: JUMPDEST 000016b4: TIMESTAMP 000016b5: LT 000016b6: ISZERO 000016b7: PUSH2 0x16e4 000016ba: JUMPI 000016bb: PUSH2 0x16dd 000016be: TIMESTAMP 000016bf: PUSH2 0x16d1 000016c2: DUP4 000016c3: PUSH3 0x02a300 000016c7: PUSH4 0xffffffff 000016cc: PUSH2 0x18de 000016cf: AND 000016d0: JUMP 000016d1: JUMPDEST 000016d2: SWAP1 000016d3: PUSH4 0xffffffff 000016d8: PUSH2 0x187e 000016db: AND 000016dc: JUMP 000016dd: JUMPDEST 000016de: SWAP2 000016df: POP 000016e0: PUSH2 0x0e0d 000016e3: JUMP 000016e4: JUMPDEST 000016e5: PUSH1 0x00 000016e7: SWAP2 000016e8: POP 000016e9: PUSH2 0x0e0d 000016ec: JUMP 000016ed: JUMPDEST 000016ee: PUSH1 0x06 000016f0: SLOAD 000016f1: SWAP1 000016f2: JUMP 000016f3: JUMPDEST 000016f4: PUSH1 0x00 000016f6: DUP1 000016f7: PUSH1 0x00 000016f9: PUSH2 0x1701 000016fc: TIMESTAMP 000016fd: PUSH2 0x1b05 00001700: JUMP 00001701: JUMPDEST 00001702: SWAP2 00001703: POP 00001704: SWAP2 00001705: POP 00001706: PUSH1 0x01 00001708: DUP2 00001709: PUSH1 0xff 0000170b: AND 0000170c: DUP4 0000170d: PUSH1 0x0c 0000170f: MUL 00001710: ADD 00001711: SUB 00001712: PUSH2 0xffff 00001715: AND 00001716: SWAP3 00001717: POP 00001718: POP 00001719: POP 0000171a: SWAP1 0000171b: JUMP 0000171c: JUMPDEST 0000171d: PUSH1 0x00 0000171f: DUP1 00001720: PUSH4 0xffffffff 00001725: DUP1 00001726: DUP6 00001727: AND 00001728: SWAP1 00001729: DUP5 0000172a: AND 0000172b: LT 0000172c: ISZERO 0000172d: PUSH2 0x1735 00001730: JUMPI 00001731: PUSH1 0x00 00001733: DUP1 00001734: REVERT 00001735: JUMPDEST 00001736: PUSH4 0xffffffff 0000173b: DUP5 0000173c: AND 0000173d: ISZERO 0000173e: ISZERO 0000173f: PUSH2 0x1772 00001742: JUMPI 00001743: PUSH1 0x01 00001745: PUSH1 0xa0 00001747: PUSH1 0x02 00001749: EXP 0000174a: SUB 0000174b: DUP6 0000174c: AND 0000174d: PUSH1 0x00 0000174f: SWAP1 00001750: DUP2 00001751: MSTORE 00001752: PUSH1 0x0b 00001754: PUSH1 0x20 00001756: MSTORE 00001757: PUSH1 0x40 00001759: SWAP1 0000175a: KECCAK256 0000175b: DUP1 0000175c: SLOAD 0000175d: PUSH4 0xffffffff 00001762: NOT 00001763: AND 00001764: PUSH4 0xffffffff 00001769: DUP6 0000176a: AND 0000176b: OR 0000176c: SWAP1 0000176d: SSTORE 0000176e: PUSH2 0x1877 00001771: JUMP 00001772: JUMPDEST 00001773: DUP4 00001774: PUSH4 0xffffffff 00001779: AND 0000177a: DUP4 0000177b: PUSH4 0xffffffff 00001780: AND 00001781: EQ 00001782: ISZERO 00001783: PUSH2 0x17b6 00001786: JUMPI 00001787: PUSH1 0x01 00001789: PUSH1 0xa0 0000178b: PUSH1 0x02 0000178d: EXP 0000178e: SUB 0000178f: DUP6 00001790: AND 00001791: PUSH1 0x00 00001793: SWAP1 00001794: DUP2 00001795: MSTORE 00001796: PUSH1 0x0b 00001798: PUSH1 0x20 0000179a: MSTORE 0000179b: PUSH1 0x40 0000179d: SWAP1 0000179e: KECCAK256 0000179f: DUP1 000017a0: SLOAD 000017a1: PUSH4 0xffffffff 000017a6: NOT 000017a7: AND 000017a8: PUSH4 0xffffffff 000017ad: DUP6 000017ae: AND 000017af: OR 000017b0: SWAP1 000017b1: SSTORE 000017b2: PUSH2 0x1877 000017b5: JUMP 000017b6: JUMPDEST 000017b7: PUSH1 0x01 000017b9: PUSH1 0xa0 000017bb: PUSH1 0x02 000017bd: EXP 000017be: SUB 000017bf: DUP6 000017c0: AND 000017c1: PUSH1 0x00 000017c3: SWAP1 000017c4: DUP2 000017c5: MSTORE 000017c6: PUSH1 0x09 000017c8: PUSH1 0x20 000017ca: MSTORE 000017cb: PUSH1 0x40 000017cd: SWAP1 000017ce: KECCAK256 000017cf: SLOAD 000017d0: SWAP2 000017d1: POP 000017d2: DUP2 000017d3: ISZERO 000017d4: ISZERO 000017d5: PUSH2 0x1808 000017d8: JUMPI 000017d9: PUSH1 0x01 000017db: PUSH1 0xa0 000017dd: PUSH1 0x02 000017df: EXP 000017e0: SUB 000017e1: DUP6 000017e2: AND 000017e3: PUSH1 0x00 000017e5: SWAP1 000017e6: DUP2 000017e7: MSTORE 000017e8: PUSH1 0x0b 000017ea: PUSH1 0x20 000017ec: MSTORE 000017ed: PUSH1 0x40 000017ef: SWAP1 000017f0: KECCAK256 000017f1: DUP1 000017f2: SLOAD 000017f3: PUSH4 0xffffffff 000017f8: NOT 000017f9: AND 000017fa: PUSH4 0xffffffff 000017ff: DUP6 00001800: AND 00001801: OR 00001802: SWAP1 00001803: SSTORE 00001804: PUSH2 0x1877 00001807: JUMP 00001808: JUMPDEST 00001809: PUSH2 0x1813 0000180c: DUP5 0000180d: DUP5 0000180e: DUP5 0000180f: PUSH2 0x1939 00001812: JUMP 00001813: JUMPDEST 00001814: PUSH1 0x01 00001816: PUSH1 0xa0 00001818: PUSH1 0x02 0000181a: EXP 0000181b: SUB 0000181c: DUP7 0000181d: AND 0000181e: PUSH1 0x00 00001820: SWAP1 00001821: DUP2 00001822: MSTORE 00001823: PUSH1 0x0c 00001825: PUSH1 0x20 00001827: MSTORE 00001828: PUSH1 0x40 0000182a: SWAP1 0000182b: KECCAK256 0000182c: SLOAD 0000182d: SWAP1 0000182e: SWAP2 0000182f: POP 00001830: PUSH2 0x183f 00001833: SWAP1 00001834: DUP3 00001835: PUSH4 0xffffffff 0000183a: PUSH2 0x18de 0000183d: AND 0000183e: JUMP 0000183f: JUMPDEST 00001840: PUSH1 0x01 00001842: PUSH1 0xa0 00001844: PUSH1 0x02 00001846: EXP 00001847: SUB 00001848: DUP7 00001849: AND 0000184a: PUSH1 0x00 0000184c: SWAP1 0000184d: DUP2 0000184e: MSTORE 0000184f: PUSH1 0x0c 00001851: PUSH1 0x20 00001853: SWAP1 00001854: DUP2 00001855: MSTORE 00001856: PUSH1 0x40 00001858: DUP1 00001859: DUP4 0000185a: KECCAK256 0000185b: SWAP4 0000185c: SWAP1 0000185d: SWAP4 0000185e: SSTORE 0000185f: PUSH1 0x0b 00001861: SWAP1 00001862: MSTORE 00001863: KECCAK256 00001864: DUP1 00001865: SLOAD 00001866: PUSH4 0xffffffff 0000186b: NOT 0000186c: AND 0000186d: PUSH4 0xffffffff 00001872: DUP6 00001873: AND 00001874: OR 00001875: SWAP1 00001876: SSTORE 00001877: JUMPDEST 00001878: POP 00001879: POP 0000187a: POP 0000187b: POP 0000187c: POP 0000187d: JUMP 0000187e: JUMPDEST 0000187f: PUSH1 0x00 00001881: DUP3 00001882: DUP3 00001883: GT 00001884: ISZERO 00001885: PUSH2 0x18d8 00001888: JUMPI 00001889: PUSH1 0x40 0000188b: DUP1 0000188c: MLOAD 0000188d: PUSH1 0xe5 0000188f: PUSH1 0x02 00001891: EXP 00001892: PUSH3 0x461bcd 00001896: MUL 00001897: DUP2 00001898: MSTORE 00001899: PUSH1 0x20 0000189b: PUSH1 0x04 0000189d: DUP3 0000189e: ADD 0000189f: MSTORE 000018a0: PUSH1 0x13 000018a2: PUSH1 0x24 000018a4: DUP3 000018a5: ADD 000018a6: MSTORE 000018a7: PUSH32 0x536166654d61746820737562206661696c656400000000000000000000000000 000018c8: PUSH1 0x44 000018ca: DUP3 000018cb: ADD 000018cc: MSTORE 000018cd: SWAP1 000018ce: MLOAD 000018cf: SWAP1 000018d0: DUP2 000018d1: SWAP1 000018d2: SUB 000018d3: PUSH1 0x64 000018d5: ADD 000018d6: SWAP1 000018d7: REVERT 000018d8: JUMPDEST 000018d9: POP 000018da: SWAP1 000018db: SUB 000018dc: SWAP1 000018dd: JUMP 000018de: JUMPDEST 000018df: DUP2 000018e0: DUP2 000018e1: ADD 000018e2: DUP3 000018e3: DUP2 000018e4: LT 000018e5: ISZERO 000018e6: PUSH2 0x06b5 000018e9: JUMPI 000018ea: PUSH1 0x40 000018ec: DUP1 000018ed: MLOAD 000018ee: PUSH1 0xe5 000018f0: PUSH1 0x02 000018f2: EXP 000018f3: PUSH3 0x461bcd 000018f7: MUL 000018f8: DUP2 000018f9: MSTORE 000018fa: PUSH1 0x20 000018fc: PUSH1 0x04 000018fe: DUP3 000018ff: ADD 00001900: MSTORE 00001901: PUSH1 0x13 00001903: PUSH1 0x24 00001905: DUP3 00001906: ADD 00001907: MSTORE 00001908: PUSH32 0x536166654d61746820616464206661696c656400000000000000000000000000 00001929: PUSH1 0x44 0000192b: DUP3 0000192c: ADD 0000192d: MSTORE 0000192e: SWAP1 0000192f: MLOAD 00001930: SWAP1 00001931: DUP2 00001932: SWAP1 00001933: SUB 00001934: PUSH1 0x64 00001936: ADD 00001937: SWAP1 00001938: REVERT 00001939: JUMPDEST 0000193a: PUSH1 0x00 0000193c: DUP1 0000193d: DUP1 0000193e: DUP1 0000193f: DUP1 00001940: PUSH4 0xffffffff 00001945: DUP9 00001946: AND 00001947: DUP2 00001948: LT 00001949: PUSH2 0x1951 0000194c: JUMPI 0000194d: PUSH1 0x00 0000194f: DUP1 00001950: REVERT 00001951: JUMPDEST 00001952: PUSH4 0xffffffff 00001957: DUP1 00001958: DUP10 00001959: AND 0000195a: SWAP1 0000195b: DUP9 0000195c: AND 0000195d: LT 0000195e: ISZERO 0000195f: PUSH2 0x1967 00001962: JUMPI 00001963: PUSH1 0x00 00001965: DUP1 00001966: REVERT 00001967: JUMPDEST 00001968: DUP7 00001969: PUSH4 0xffffffff 0000196e: AND 0000196f: DUP9 00001970: PUSH4 0xffffffff 00001975: AND 00001976: EQ 00001977: ISZERO 00001978: PUSH2 0x1984 0000197b: JUMPI 0000197c: PUSH1 0x00 0000197e: SWAP5 0000197f: POP 00001980: PUSH2 0x1a23 00001983: JUMP 00001984: JUMPDEST 00001985: DUP6 00001986: ISZERO 00001987: ISZERO 00001988: PUSH2 0x1994 0000198b: JUMPI 0000198c: PUSH1 0x00 0000198e: SWAP5 0000198f: POP 00001990: PUSH2 0x1a23 00001993: JUMP 00001994: JUMPDEST 00001995: POP 00001996: PUSH1 0x00 00001998: SWAP3 00001999: POP 0000199a: DUP7 0000199b: JUMPDEST 0000199c: DUP7 0000199d: PUSH4 0xffffffff 000019a2: AND 000019a3: DUP2 000019a4: PUSH4 0xffffffff 000019a9: AND 000019aa: LT 000019ab: ISZERO 000019ac: PUSH2 0x1a1f 000019af: JUMPI 000019b0: PUSH4 0xffffffff 000019b5: DUP2 000019b6: AND 000019b7: PUSH1 0x00 000019b9: SWAP1 000019ba: DUP2 000019bb: MSTORE 000019bc: PUSH1 0x0d 000019be: PUSH1 0x20 000019c0: MSTORE 000019c1: PUSH1 0x40 000019c3: DUP2 000019c4: KECCAK256 000019c5: DUP1 000019c6: SLOAD 000019c7: PUSH1 0x01 000019c9: SWAP1 000019ca: SWAP2 000019cb: ADD 000019cc: SLOAD 000019cd: SWAP1 000019ce: SWAP5 000019cf: POP 000019d0: SWAP3 000019d1: POP 000019d2: DUP4 000019d3: GT 000019d4: DUP1 000019d5: ISZERO 000019d6: PUSH2 0x19df 000019d9: JUMPI 000019da: POP 000019db: PUSH1 0x00 000019dd: DUP3 000019de: GT 000019df: JUMPDEST 000019e0: ISZERO 000019e1: PUSH2 0x1a17 000019e4: JUMPI 000019e5: PUSH2 0x1a14 000019e8: PUSH2 0x1a07 000019eb: DUP4 000019ec: PUSH2 0x19fb 000019ef: DUP7 000019f0: DUP11 000019f1: PUSH4 0xffffffff 000019f6: PUSH2 0x1ba7 000019f9: AND 000019fa: JUMP 000019fb: JUMPDEST 000019fc: SWAP1 000019fd: PUSH4 0xffffffff 00001a02: PUSH2 0x1c1e 00001a05: AND 00001a06: JUMP 00001a07: JUMPDEST 00001a08: DUP6 00001a09: SWAP1 00001a0a: PUSH4 0xffffffff 00001a0f: PUSH2 0x18de 00001a12: AND 00001a13: JUMP 00001a14: JUMPDEST 00001a15: SWAP4 00001a16: POP 00001a17: JUMPDEST 00001a18: PUSH1 0x01 00001a1a: ADD 00001a1b: PUSH2 0x199b 00001a1e: JUMP 00001a1f: JUMPDEST 00001a20: DUP4 00001a21: SWAP5 00001a22: POP 00001a23: JUMPDEST 00001a24: POP 00001a25: POP 00001a26: POP 00001a27: POP 00001a28: SWAP4 00001a29: SWAP3 00001a2a: POP 00001a2b: POP 00001a2c: POP 00001a2d: JUMP 00001a2e: JUMPDEST 00001a2f: PUSH1 0x06 00001a31: SLOAD 00001a32: PUSH1 0x05 00001a34: SLOAD 00001a35: PUSH1 0x03 00001a37: SLOAD 00001a38: PUSH1 0x00 00001a3a: SWAP3 00001a3b: SWAP2 00001a3c: SWAP1 00001a3d: DUP4 00001a3e: SWAP1 00001a3f: PUSH2 0x1a4f 00001a42: SWAP1 00001a43: DUP5 00001a44: SWAP1 00001a45: PUSH4 0xffffffff 00001a4a: PUSH2 0x187e 00001a4d: AND 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: SWAP1 00001a51: POP 00001a52: JUMPDEST 00001a53: PUSH2 0x1a62 00001a56: DUP6 00001a57: DUP4 00001a58: PUSH4 0xffffffff 00001a5d: PUSH2 0x1ba7 00001a60: AND 00001a61: JUMP 00001a62: JUMPDEST 00001a63: DUP2 00001a64: GT 00001a65: PUSH2 0x1ae8 00001a68: JUMPI 00001a69: PUSH2 0x1a88 00001a6c: PUSH2 0x1a7b 00001a6f: DUP3 00001a70: DUP5 00001a71: PUSH4 0xffffffff 00001a76: PUSH2 0x1c1e 00001a79: AND 00001a7a: JUMP 00001a7b: JUMPDEST 00001a7c: DUP7 00001a7d: SWAP1 00001a7e: PUSH4 0xffffffff 00001a83: PUSH2 0x187e 00001a86: AND 00001a87: JUMP 00001a88: JUMPDEST 00001a89: SWAP5 00001a8a: POP 00001a8b: PUSH2 0x1a9a 00001a8e: DUP5 00001a8f: DUP3 00001a90: PUSH4 0xffffffff 00001a95: PUSH2 0x18de 00001a98: AND 00001a99: JUMP 00001a9a: JUMPDEST 00001a9b: PUSH1 0x04 00001a9d: SLOAD 00001a9e: SWAP1 00001a9f: SWAP5 00001aa0: POP 00001aa1: SWAP1 00001aa2: POP 00001aa3: PUSH2 0x1ab2 00001aa6: DUP4 00001aa7: DUP3 00001aa8: PUSH4 0xffffffff 00001aad: PUSH2 0x18de 00001ab0: AND 00001ab1: JUMP 00001ab2: JUMPDEST 00001ab3: SWAP3 00001ab4: POP 00001ab5: PUSH1 0x0a 00001ab7: DUP3 00001ab8: GT 00001ab9: ISZERO 00001aba: PUSH2 0x1ae3 00001abd: JUMPI 00001abe: PUSH2 0x1ad3 00001ac1: PUSH1 0x64 00001ac3: PUSH2 0x19fb 00001ac6: DUP5 00001ac7: PUSH1 0x5a 00001ac9: PUSH4 0xffffffff 00001ace: PUSH2 0x1ba7 00001ad1: AND 00001ad2: JUMP 00001ad3: JUMPDEST 00001ad4: SWAP2 00001ad5: POP 00001ad6: PUSH1 0x0a 00001ad8: DUP3 00001ad9: LT 00001ada: ISZERO 00001adb: PUSH2 0x1ae3 00001ade: JUMPI 00001adf: PUSH1 0x0a 00001ae1: SWAP2 00001ae2: POP 00001ae3: JUMPDEST 00001ae4: PUSH2 0x1a52 00001ae7: JUMP 00001ae8: JUMPDEST 00001ae9: PUSH2 0x1afb 00001aec: PUSH2 0x1a07 00001aef: DUP7 00001af0: DUP5 00001af1: PUSH4 0xffffffff 00001af6: PUSH2 0x1ba7 00001af9: AND 00001afa: JUMP 00001afb: JUMPDEST 00001afc: SWAP4 00001afd: POP 00001afe: POP 00001aff: SWAP2 00001b00: SWAP4 00001b01: SWAP1 00001b02: SWAP3 00001b03: POP 00001b04: JUMP 00001b05: JUMPDEST 00001b06: PUSH1 0x00 00001b08: DUP1 00001b09: DUP1 00001b0a: DUP1 00001b0b: DUP1 00001b0c: DUP1 00001b0d: DUP1 00001b0e: DUP1 00001b0f: PUSH2 0x1b17 00001b12: DUP10 00001b13: PUSH2 0x1c3e 00001b16: JUMP 00001b17: JUMPDEST 00001b18: SWAP3 00001b19: POP 00001b1a: PUSH2 0x1b24 00001b1d: PUSH2 0x07b2 00001b20: PUSH2 0x1cce 00001b23: JUMP 00001b24: JUMPDEST 00001b25: PUSH2 0x1b31 00001b28: DUP5 00001b29: PUSH2 0xffff 00001b2c: AND 00001b2d: PUSH2 0x1cce 00001b30: JUMP 00001b31: JUMPDEST 00001b32: SUB 00001b33: SWAP5 00001b34: POP 00001b35: DUP5 00001b36: PUSH4 0x01e28500 00001b3b: MUL 00001b3c: DUP7 00001b3d: ADD 00001b3e: SWAP6 00001b3f: POP 00001b40: DUP5 00001b41: PUSH2 0x07b2 00001b44: DUP5 00001b45: SUB 00001b46: PUSH2 0xffff 00001b49: AND 00001b4a: SUB 00001b4b: PUSH4 0x01e13380 00001b50: MUL 00001b51: DUP7 00001b52: ADD 00001b53: SWAP6 00001b54: POP 00001b55: PUSH1 0x01 00001b57: SWAP4 00001b58: POP 00001b59: JUMPDEST 00001b5a: PUSH1 0x0c 00001b5c: PUSH1 0xff 00001b5e: DUP6 00001b5f: AND 00001b60: GT 00001b61: PUSH2 0x1b99 00001b64: JUMPI 00001b65: PUSH2 0x1b6e 00001b68: DUP5 00001b69: DUP5 00001b6a: PUSH2 0x1ce9 00001b6d: JUMP 00001b6e: JUMPDEST 00001b6f: PUSH1 0xff 00001b71: AND 00001b72: PUSH3 0x015180 00001b76: MUL 00001b77: SWAP1 00001b78: POP 00001b79: DUP9 00001b7a: DUP7 00001b7b: DUP3 00001b7c: ADD 00001b7d: GT 00001b7e: ISZERO 00001b7f: PUSH2 0x1b8a 00001b82: JUMPI 00001b83: DUP4 00001b84: SWAP2 00001b85: POP 00001b86: PUSH2 0x1b99 00001b89: JUMP 00001b8a: JUMPDEST 00001b8b: SWAP5 00001b8c: DUP6 00001b8d: ADD 00001b8e: SWAP5 00001b8f: PUSH1 0x01 00001b91: SWAP1 00001b92: SWAP4 00001b93: ADD 00001b94: SWAP3 00001b95: PUSH2 0x1b59 00001b98: JUMP 00001b99: JUMPDEST 00001b9a: POP 00001b9b: SWAP1 00001b9c: SWAP8 00001b9d: SWAP1 00001b9e: SWAP7 00001b9f: POP 00001ba0: SWAP5 00001ba1: POP 00001ba2: POP 00001ba3: POP 00001ba4: POP 00001ba5: POP 00001ba6: JUMP 00001ba7: JUMPDEST 00001ba8: PUSH1 0x00 00001baa: DUP3 00001bab: ISZERO 00001bac: ISZERO 00001bad: PUSH2 0x1bb8 00001bb0: JUMPI 00001bb1: POP 00001bb2: PUSH1 0x00 00001bb4: PUSH2 0x06b5 00001bb7: JUMP 00001bb8: JUMPDEST 00001bb9: POP 00001bba: DUP2 00001bbb: DUP2 00001bbc: MUL 00001bbd: DUP2 00001bbe: DUP4 00001bbf: DUP3 00001bc0: DUP2 00001bc1: ISZERO 00001bc2: ISZERO 00001bc3: PUSH2 0x1bc8 00001bc6: JUMPI 00001bc7: INVALID 00001bc8: JUMPDEST 00001bc9: DIV 00001bca: EQ 00001bcb: PUSH2 0x06b5 00001bce: JUMPI 00001bcf: PUSH1 0x40 00001bd1: DUP1 00001bd2: MLOAD 00001bd3: PUSH1 0xe5 00001bd5: PUSH1 0x02 00001bd7: EXP 00001bd8: PUSH3 0x461bcd 00001bdc: MUL 00001bdd: DUP2 00001bde: MSTORE 00001bdf: PUSH1 0x20 00001be1: PUSH1 0x04 00001be3: DUP3 00001be4: ADD 00001be5: MSTORE 00001be6: PUSH1 0x13 00001be8: PUSH1 0x24 00001bea: DUP3 00001beb: ADD 00001bec: MSTORE 00001bed: PUSH32 0x536166654d617468206d756c206661696c656400000000000000000000000000 00001c0e: PUSH1 0x44 00001c10: DUP3 00001c11: ADD 00001c12: MSTORE 00001c13: SWAP1 00001c14: MLOAD 00001c15: SWAP1 00001c16: DUP2 00001c17: SWAP1 00001c18: SUB 00001c19: PUSH1 0x64 00001c1b: ADD 00001c1c: SWAP1 00001c1d: REVERT 00001c1e: JUMPDEST 00001c1f: PUSH1 0x00 00001c21: DUP1 00001c22: DUP1 00001c23: DUP4 00001c24: GT 00001c25: PUSH2 0x1c2a 00001c28: JUMPI 00001c29: INVALID 00001c2a: JUMPDEST 00001c2b: DUP3 00001c2c: DUP5 00001c2d: DUP2 00001c2e: ISZERO 00001c2f: ISZERO 00001c30: PUSH2 0x1c35 00001c33: JUMPI 00001c34: INVALID 00001c35: JUMPDEST 00001c36: DIV 00001c37: SWAP5 00001c38: SWAP4 00001c39: POP 00001c3a: POP 00001c3b: POP 00001c3c: POP 00001c3d: JUMP 00001c3e: JUMPDEST 00001c3f: PUSH1 0x00 00001c41: DUP1 00001c42: PUSH2 0x07b2 00001c45: PUSH4 0x01e13380 00001c4a: DUP5 00001c4b: DIV 00001c4c: DUP2 00001c4d: ADD 00001c4e: SWAP1 00001c4f: DUP3 00001c50: SWAP1 00001c51: PUSH2 0x1c59 00001c54: SWAP1 00001c55: PUSH2 0x1cce 00001c58: JUMP 00001c59: JUMPDEST 00001c5a: PUSH2 0x1c66 00001c5d: DUP4 00001c5e: PUSH2 0xffff 00001c61: AND 00001c62: PUSH2 0x1cce 00001c65: JUMP 00001c66: JUMPDEST 00001c67: SUB 00001c68: SWAP1 00001c69: POP 00001c6a: DUP1 00001c6b: PUSH4 0x01e28500 00001c70: MUL 00001c71: DUP4 00001c72: ADD 00001c73: SWAP3 00001c74: POP 00001c75: DUP1 00001c76: PUSH2 0x07b2 00001c79: DUP4 00001c7a: SUB 00001c7b: PUSH2 0xffff 00001c7e: AND 00001c7f: SUB 00001c80: PUSH4 0x01e13380 00001c85: MUL 00001c86: DUP4 00001c87: ADD 00001c88: SWAP3 00001c89: POP 00001c8a: JUMPDEST 00001c8b: DUP5 00001c8c: DUP4 00001c8d: GT 00001c8e: ISZERO 00001c8f: PUSH2 0x1cc6 00001c92: JUMPI 00001c93: PUSH2 0x1c9e 00001c96: PUSH1 0x01 00001c98: DUP4 00001c99: SUB 00001c9a: PUSH2 0x1daf 00001c9d: JUMP 00001c9e: JUMPDEST 00001c9f: ISZERO 00001ca0: PUSH2 0x1cb1 00001ca3: JUMPI 00001ca4: PUSH4 0x01e28500 00001ca9: DUP4 00001caa: SUB 00001cab: SWAP3 00001cac: POP 00001cad: PUSH2 0x1cbb 00001cb0: JUMP 00001cb1: JUMPDEST 00001cb2: PUSH4 0x01e13380 00001cb7: DUP4 00001cb8: SUB 00001cb9: SWAP3 00001cba: POP 00001cbb: JUMPDEST 00001cbc: PUSH1 0x01 00001cbe: DUP3 00001cbf: SUB 00001cc0: SWAP2 00001cc1: POP 00001cc2: PUSH2 0x1c8a 00001cc5: JUMP 00001cc6: JUMPDEST 00001cc7: POP 00001cc8: SWAP4 00001cc9: SWAP3 00001cca: POP 00001ccb: POP 00001ccc: POP 00001ccd: JUMP 00001cce: JUMPDEST 00001ccf: PUSH1 0x00 00001cd1: NOT 00001cd2: ADD 00001cd3: PUSH1 0x00 00001cd5: PUSH2 0x0190 00001cd8: DUP3 00001cd9: DIV 00001cda: PUSH1 0x64 00001cdc: DUP4 00001cdd: DIV 00001cde: PUSH1 0x04 00001ce0: DUP5 00001ce1: DIV 00001ce2: SUB 00001ce3: ADD 00001ce4: SWAP3 00001ce5: SWAP2 00001ce6: POP 00001ce7: POP 00001ce8: JUMP 00001ce9: JUMPDEST 00001cea: PUSH1 0x00 00001cec: DUP3 00001ced: PUSH1 0xff 00001cef: AND 00001cf0: PUSH1 0x01 00001cf2: EQ 00001cf3: DUP1 00001cf4: PUSH2 0x1d00 00001cf7: JUMPI 00001cf8: POP 00001cf9: DUP3 00001cfa: PUSH1 0xff 00001cfc: AND 00001cfd: PUSH1 0x03 00001cff: EQ 00001d00: JUMPDEST 00001d01: DUP1 00001d02: PUSH2 0x1d0e 00001d05: JUMPI 00001d06: POP 00001d07: DUP3 00001d08: PUSH1 0xff 00001d0a: AND 00001d0b: PUSH1 0x05 00001d0d: EQ 00001d0e: JUMPDEST 00001d0f: DUP1 00001d10: PUSH2 0x1d1c 00001d13: JUMPI 00001d14: POP 00001d15: DUP3 00001d16: PUSH1 0xff 00001d18: AND 00001d19: PUSH1 0x07 00001d1b: EQ 00001d1c: JUMPDEST 00001d1d: DUP1 00001d1e: PUSH2 0x1d2a 00001d21: JUMPI 00001d22: POP 00001d23: DUP3 00001d24: PUSH1 0xff 00001d26: AND 00001d27: PUSH1 0x08 00001d29: EQ 00001d2a: JUMPDEST 00001d2b: DUP1 00001d2c: PUSH2 0x1d38 00001d2f: JUMPI 00001d30: POP 00001d31: DUP3 00001d32: PUSH1 0xff 00001d34: AND 00001d35: PUSH1 0x0a 00001d37: EQ 00001d38: JUMPDEST 00001d39: DUP1 00001d3a: PUSH2 0x1d46 00001d3d: JUMPI 00001d3e: POP 00001d3f: DUP3 00001d40: PUSH1 0xff 00001d42: AND 00001d43: PUSH1 0x0c 00001d45: EQ 00001d46: JUMPDEST 00001d47: ISZERO 00001d48: PUSH2 0x1d53 00001d4b: JUMPI 00001d4c: POP 00001d4d: PUSH1 0x1f 00001d4f: PUSH2 0x06b5 00001d52: JUMP 00001d53: JUMPDEST 00001d54: DUP3 00001d55: PUSH1 0xff 00001d57: AND 00001d58: PUSH1 0x04 00001d5a: EQ 00001d5b: DUP1 00001d5c: PUSH2 0x1d68 00001d5f: JUMPI 00001d60: POP 00001d61: DUP3 00001d62: PUSH1 0xff 00001d64: AND 00001d65: PUSH1 0x06 00001d67: EQ 00001d68: JUMPDEST 00001d69: DUP1 00001d6a: PUSH2 0x1d76 00001d6d: JUMPI 00001d6e: POP 00001d6f: DUP3 00001d70: PUSH1 0xff 00001d72: AND 00001d73: PUSH1 0x09 00001d75: EQ 00001d76: JUMPDEST 00001d77: DUP1 00001d78: PUSH2 0x1d84 00001d7b: JUMPI 00001d7c: POP 00001d7d: DUP3 00001d7e: PUSH1 0xff 00001d80: AND 00001d81: PUSH1 0x0b 00001d83: EQ 00001d84: JUMPDEST 00001d85: ISZERO 00001d86: PUSH2 0x1d91 00001d89: JUMPI 00001d8a: POP 00001d8b: PUSH1 0x1e 00001d8d: PUSH2 0x06b5 00001d90: JUMP 00001d91: JUMPDEST 00001d92: PUSH2 0x1d9a 00001d95: DUP3 00001d96: PUSH2 0x1daf 00001d99: JUMP 00001d9a: JUMPDEST 00001d9b: ISZERO 00001d9c: PUSH2 0x1da7 00001d9f: JUMPI 00001da0: POP 00001da1: PUSH1 0x1d 00001da3: PUSH2 0x06b5 00001da6: JUMP 00001da7: JUMPDEST 00001da8: POP 00001da9: PUSH1 0x1c 00001dab: PUSH2 0x06b5 00001dae: JUMP 00001daf: JUMPDEST 00001db0: PUSH1 0x00 00001db2: PUSH1 0x03 00001db4: DUP3 00001db5: AND 00001db6: ISZERO 00001db7: PUSH2 0x1dc2 00001dba: JUMPI 00001dbb: POP 00001dbc: PUSH1 0x00 00001dbe: PUSH2 0x05c1 00001dc1: JUMP 00001dc2: JUMPDEST 00001dc3: PUSH1 0x64 00001dc5: PUSH2 0xffff 00001dc8: DUP4 00001dc9: AND 00001dca: MOD 00001dcb: PUSH2 0xffff 00001dce: AND 00001dcf: ISZERO 00001dd0: PUSH2 0x1ddb 00001dd3: JUMPI 00001dd4: POP 00001dd5: PUSH1 0x01 00001dd7: PUSH2 0x05c1 00001dda: JUMP 00001ddb: JUMPDEST 00001ddc: PUSH2 0x0190 00001ddf: PUSH2 0xffff 00001de2: DUP4 00001de3: AND 00001de4: MOD 00001de5: PUSH2 0xffff 00001de8: AND 00001de9: ISZERO 00001dea: PUSH2 0x1df5 00001ded: JUMPI 00001dee: POP 00001def: PUSH1 0x00 00001df1: PUSH2 0x05c1 00001df4: JUMP 00001df5: JUMPDEST 00001df6: POP 00001df7: PUSH1 0x01 00001df9: SWAP2 00001dfa: SWAP1 00001dfb: POP 00001dfc: JUMP 00001dfd: STOP 00001dfe: LOG1 00001dff: PUSH6 0x627a7a723058 00001e06: KECCAK256 00001e07: SWAP2 00001e08: SIGNEXTEND 00001e09: POP 00001e0a: UNKNOWN(0xD5) 00001e0b: UNKNOWN(0xC2) 00001e0c: EXP 00001e0d: UNKNOWN(0xE3) 00001e0e: REVERT 00001e0f: SLOAD 00001e10: UNKNOWN(0xF7) 00001e11: PUSH32
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8
call_targets:
0x6b249a94182219cb1af58a197573dccd9ab94144
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6b249a94182219cb1af58a197573dccd9ab94144"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x03c175ff",
"selector": "0x03c175ff",
"calldata_variants": [
"0x03c175ff",
"0x03c175ff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2bf4760b",
"selector": "0x2bf4760b",
"calldata_variants": [
"0x2bf4760b",
"0x2bf4760b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2680,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8
call_targets:
0x6b249a94182219cb1af58a197573dccd9ab94144
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6ae84398c4921cdf17b58c4a2175f59b5ff4c7d742051efd898dfdff08e006f8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6b249a94182219cb1af58a197573dccd9ab94144"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x03c175ff",
"selector": "0x03c175ff",
"calldata_variants": [
"0x03c175ff",
"0x03c175ff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2bf4760b",
"selector": "0x2bf4760b",
"calldata_variants": [
"0x2bf4760b",
"0x2bf4760b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2680,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| medium | math | codex | Mid‑month mint/burn retroactively changes the profit denominator for the entire month | 75 | no | — |
viewevidence_json{
"evidence": "`monthInfos[_nowMonth].totalTokenSupply` is set lazily in `profitEth` and overwritten on `mint`/`burn`, while `getUnpaidPerfit` divides the whole month\u2019s `ethIncome` by this single value.",
"locations": [
"contracts/Contract.sol:553",
"contracts/Contract.sol:657",
"contracts/Contract.sol:684",
"contracts/Contract.sol:732"
],
"recommendation": "Snapshot supply at the time each profit deposit is recorded (e.g., store a per\u2011deposit `totalSupply` or use an accumulated \u201cprofit per token\u201d index). Avoid overwriting a single month-wide supply after income has already been recorded.",
"exploit_scenario": "A privileged game address deposits ETH income early in a month, then mints a large amount of tokens later in the same month. The contract overwrites that month\u2019s `totalTokenSupply` to the new supply, so the entire month\u2019s income is divided by a larger supply, letting newly minted tokens claim a share of income that accrued before they existed and diluting existing holders. The same effect can be abused with burns to amplify a holder\u2019s share."
}
|
| medium | other | codex | Unbounded month iteration can make transfers/withdrawals run out of gas | 75 | no | — |
viewevidence_json{
"evidence": "`getUnpaidPerfit` iterates over every month between `_startMonth` and `_endMonth` and is called from `settleEth`.",
"locations": [
"contracts/Contract.sol:469",
"contracts/Contract.sol:553"
],
"recommendation": "Replace the per\u2011month loop with an accumulated per\u2011token profit index, or allow claims in bounded batches (e.g., user\u2011supplied ranges with stateful checkpoints) to keep gas usage predictable.",
"exploit_scenario": "`settleEth` calls `getUnpaidPerfit`, which loops from `_startMonth` to `_endMonth`. After enough months/years, this loop can exceed gas limits. Since `settleEth` is called in `transfer`, `transferFrom`, `mint`, `burn`, and `withdraw`, long\u2011term holders may become unable to move tokens or withdraw profits, effectively locking funds."
}
|
| low | oracle | codex | Month boundaries rely on `now`, allowing miner influence around cutoff times | 65 | no | — |
viewevidence_json{
"evidence": "Month calculations are derived from `now.parseTimestampToYM()` in both `getCurrentMonth` and `profitEth`.",
"locations": [
"contracts/Contract.sol:496",
"contracts/Contract.sol:732"
],
"recommendation": "If month boundary integrity matters, use a less manipulable time source (e.g., an external oracle) or introduce buffering rules that make boundary selection deterministic despite small timestamp drift.",
"exploit_scenario": "A miner (or a game contract working with a miner) can nudge block timestamps around month boundaries to decide which month a `profitEth` deposit or `settleEth` calculation falls into. This can shift income between months to favor certain holders, especially at month transitions."
}
|