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

Analysis Run

019c0ea9-075d-712a-a36b-c3913c2d8471

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:28 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Liquidation drains entire pool and leaves staking accounting unchanged
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
41578 artifact.fetch complete 1 / 3 2 months ago
41579 proxy.resolve complete 1 / 3 2 months ago
41580 tool.cast_disasm complete 1 / 3 2 months ago
41581 analysis.bundle complete 1 / 3 2 months ago
41582 capability.graph complete 1 / 3 2 months ago
41583 detector.run complete 1 / 3 2 months ago
41584 validation.fork complete 1 / 3 2 months ago
42212 report.consolidate complete 1 / 6 2 months ago
42213 tool.slither complete 1 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
complete
Attempts
1 / 2
Findings
1
Solc
0.6.12 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-8_o7b9is)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-8_o7b9is)

Reentrancy in StakingRewardsLock.exit() (contracts/Contract.sol#712-714):
	External calls:
	- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)
		- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
		- stakingToken.safeTransfer(msg.sender,amount) (contracts/Contract.sol#703-704)
	- getReward() (contracts/Contract.sol#714)
		- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)
		- rewardsToken.safeTransfer(msg.sender,reward) (contracts/Contract.sol#710)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	External calls sending eth:
	- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	- getReward() (contracts/Contract.sol#714)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	State variables written after the call(s):
	- getReward() (contracts/Contract.sol#714)
		- _status = _ENTERED (contracts/Contract.sol#96)
		- _status = _NOT_ENTERED (contracts/Contract.sol#103)
	ReentrancyGuard._status (contracts/Contract.sol#78) can be used in cross function reentrancies:
	- ReentrancyGuard.nonReentrant() (contracts/Contract.sol#91-103)
	- getReward() (contracts/Contract.sol#714)
		- lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#748)
	StakingRewardsLock.lastUpdateTime (contracts/Contract.sol#589) can be used in cross function reentrancies:
	- StakingRewardsLock.lastUpdateTime (contracts/Contract.sol#589)
	- StakingRewardsLock.notifyRewardAmount(uint256,uint256) (contracts/Contract.sol#716-744)
	- StakingRewardsLock.rewardPerToken() (contracts/Contract.sol#634-643)
	- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)
	- getReward() (contracts/Contract.sol#714)
		- lockRewards[account] = lock (contracts/Contract.sol#750)
	StakingRewardsLock.lockRewards (contracts/Contract.sol#597-599) can be used in cross function reentrancies:
	- StakingRewardsLock.earned(address) (contracts/Contract.sol#644-661)
	- StakingRewardsLock.lockRewards (contracts/Contract.sol#597-599)
	- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)
	- getReward() (contracts/Contract.sol#714)
		- rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#746-748)
	StakingRewardsLock.rewardPerTokenStored (contracts/Contract.sol#589-590) can be used in cross function reentrancies:
	- StakingRewardsLock.rewardPerToken() (contracts/Contract.sol#634-643)
	- StakingRewardsLock.rewardPerTokenStored (contracts/Contract.sol#589-590)
	- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)
	- getReward() (contracts/Contract.sol#714)
		- unlockRewards[msg.sender] = 0 (contracts/Contract.sol#709)
		- unlockRewards[account] = unlock (contracts/Contract.sol#750)
	StakingRewardsLock.unlockRewards (contracts/Contract.sol#595-597) can be used in cross function reentrancies:
	- StakingRewardsLock.earned(address) (contracts/Contract.sol#644-661)
	- StakingRewardsLock.getReward() (contracts/Contract.sol#705-711)
	- StakingRewardsLock.unlockRewards (contracts/Contract.sol#595-597)
	- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)
	- getReward() (contracts/Contract.sol#714)
		- userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#751)
	StakingRewardsLock.userRewardPerTokenPaid (contracts/Contract.sol#590-595) can be used in cross function reentrancies:
	- StakingRewardsLock.earnedDuration(address) (contracts/Contract.sol#661-666)
	- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)
	- StakingRewardsLock.userRewardPerTokenPaid (contracts/Contract.sol#590-595)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities

SatellitePool.setLiquidation(address) (contracts/Contract.sol#1141-1144) should emit an event for: 
	- liquidation = liqui (contracts/Contract.sol#1143-1144) 
SatellitePool.transferOwnership(address) (contracts/Contract.sol#1150-1156) should emit an event for: 
	- owner = newOwner (contracts/Contract.sol#1156) 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control

StakingRewardsLock.constructor(address,address,address,uint256,uint256,uint256)._rewardsDistribution (contracts/Contract.sol#607) lacks a zero-check on :
		- rewardsDistribution = _rewardsDistribution (contracts/Contract.sol#615-616)
SatellitePool.constructor(address,address,address,address,address,bytes32,uint256,uint256,uint256,address,uint256)._liquidation (contracts/Contract.sol#1083) lacks a zero-check on :
		- liquidation = _liquidation (contracts/Contract.sol#1106)
SatellitePool.constructor(address,address,address,address,address,bytes32,uint256,uint256,uint256,address,uint256)._owner (contracts/Contract.sol#1095) lacks a zero-check on :
		- owner = _owner (contracts/Contract.sol#1108-1109)
SatellitePool.setLiquidation(address).liqui (contracts/Contract.sol#1142) lacks a zero-check on :
		- liquidation = liqui (contracts/Contract.sol#1143-1144)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation

Reentrancy in StakingRewardsLock.exit() (contracts/Contract.sol#712-714):
	External calls:
	- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)
		- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
		- stakingToken.safeTransfer(msg.sender,amount) (contracts/Contract.sol#703-704)
	- getReward() (contracts/Contract.sol#714)
		- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)
		- rewardsToken.safeTransfer(msg.sender,reward) (contracts/Contract.sol#710)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	External calls sending eth:
	- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	- getReward() (contracts/Contract.sol#714)
		- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
	Event emitted after the call(s):
	- RewardPaid(msg.sender,reward) (contracts/Contract.sol#710-711)
		- getReward() (contracts/Contract.sol#714)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3

StakingRewardsLock.earned(address) (contracts/Contract.sol#644-661) uses timestamp for comparisons
	Dangerous comparisons:
	- block.timestamp >= userLockTime[account] (contracts/Contract.sol#648-651)
StakingRewardsLock.getReward() (contracts/Contract.sol#705-711) uses timestamp for comparisons
	Dangerous comparisons:
	- reward > 0 (contracts/Contract.sol#709)
StakingRewardsLock.notifyRewardAmount(uint256,uint256) (contracts/Contract.sol#716-744) uses timestamp for comparisons
	Dangerous comparisons:
	- block.timestamp >= periodFinish (contracts/Contract.sol#719)
	- require(bool,string)(rewardRate <= balance.div(rewardsDuration),Provided reward too high) (contracts/Contract.sol#739-741)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp

Address.isContract(address) (contracts/Contract.sol#394-407) uses assembly
	- INLINE ASM (contracts/Contract.sol#406)
Address._functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#488-506) uses assembly
	- INLINE ASM (contracts/Contract.sol#500-503)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

4 different versions of Solidity are used:
	- Version constraint ^0.6.12 is used by:
		-^0.6.12 (contracts/Contract.sol#3-4)
		-^0.6.12 (contracts/Contract.sol#31)
		-^0.6.12 (contracts/Contract.sol#584)
		-^0.6.12 (contracts/Contract.sol#764)
		-^0.6.12 (contracts/Contract.sol#961)
		-^0.6.12 (contracts/Contract.sol#1064)
		-^0.6.12 (contracts/Contract.sol#1069-1070)
	- Version constraint ^0.6.0 is used by:
		-^0.6.0 (contracts/Contract.sol#46)
		-^0.6.0 (contracts/Contract.sol#104-105)
		-^0.6.0 (contracts/Contract.sol#261)
		-^0.6.0 (contracts/Contract.sol#292-294)
		-^0.6.0 (contracts/Contract.sol#507)
		-^0.6.0 (contracts/Contract.sol#964)
		-^0.6.0 (contracts/Contract.sol#997)
	- Version constraint ^0.6.2 is used by:
		-^0.6.2 (contracts/Contract.sol#370)
	- Version constraint ^0.6.8 is used by:
		-^0.6.8 (contracts/Contract.sol#769)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Context._msgData() (contracts/Contract.sol#981-994) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code

Version constraint ^0.6.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- DataLocationChangeInInternalOverride
	- NestedCalldataArrayAbiReencodingSizeValidation
	- SignedImmutables
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup.
It is used by:
	- ^0.6.12 (contracts/Contract.sol#3-4)
	- ^0.6.12 (contracts/Contract.sol#31)
	- ^0.6.12 (contracts/Contract.sol#584)
	- ^0.6.12 (contracts/Contract.sol#764)
	- ^0.6.12 (contracts/Contract.sol#961)
	- ^0.6.12 (contracts/Contract.sol#1064)
	- ^0.6.12 (contracts/Contract.sol#1069-1070)
Version constraint ^0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- MissingEscapingInFormatting
	- ArraySliceDynamicallyEncodedBaseType
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- YulOptimizerRedundantAssignmentBreakContinue.
It is used by:
	- ^0.6.0 (contracts/Contract.sol#46)
	- ^0.6.0 (contracts/Contract.sol#104-105)
	- ^0.6.0 (contracts/Contract.sol#261)
	- ^0.6.0 (contracts/Contract.sol#292-294)
	- ^0.6.0 (contracts/Contract.sol#507)
	- ^0.6.0 (contracts/Contract.sol#964)
	- ^0.6.0 (contracts/Contract.sol#997)
Version constraint ^0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- MissingEscapingInFormatting
	- ArraySliceDynamicallyEncodedBaseType
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow.
It is used by:
	- ^0.6.2 (contracts/Contract.sol#370)
Version constraint ^0.6.8 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- SignedImmutables
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup.
It is used by:
	- ^0.6.8 (contracts/Contract.sol#769)
solc-0.6.12 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

Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#425-430):
	- (success,None) = recipient.call{value: amount}() (contracts/Contract.sol#429-430)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#488-506):
	- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls

Redundant expression "this (contracts/Contract.sol#985)" inContext (contracts/Contract.sol#978-994)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements

RewardsDistributionRecipient.rewardsDistribution (contracts/Contract.sol#35-36) should be immutable 
SatellitePool.diffDecimal (contracts/Contract.sol#1080-1082) should be immutable 
SatellitePool.oracle (contracts/Contract.sol#1076) should be immutable 
SatellitePool.stakingTokenSymbol (contracts/Contract.sol#1077-1079) should be immutable 
StakingRewardsLock.lockDuration (contracts/Contract.sol#590) should be immutable 
StakingRewardsLock.lockPercent (contracts/Contract.sol#605-606) should be immutable 
StakingRewardsLock.rewardsToken (contracts/Contract.sol#587) should be immutable 
StakingRewardsLock.stakingToken (contracts/Contract.sol#587) should be immutable 
StakingRewardsLock.unlockPercent (contracts/Contract.sol#603-605) should be immutable 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (17 contracts with 100 detectors), 32 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.6.12",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.6.12",
        "install_stderr": null,
        "install_stdout": "Version '0.6.12' is already installed, skipping..."
    },
    "solc_args": "--base-path /tmp/slither-8_o7b9is --allow-paths /tmp/slither-8_o7b9is,/tmp/slither-8_o7b9is/lib,/tmp/slither-8_o7b9is/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 32,
    "workspace_hash": "8ac0e9d9f9a7c7bde1404d0b250b6857a3d89025ee4cd8b3a3fbe337842183fd",
    "duration_seconds": 0.903975248336792,
    "solc_version_requested": "0.6.12"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
Found a liquidation logic flaw that can drain the entire staking pool without updating internal accounting, leaving rewards accrual inconsistent after liquidation.
View stdout
{"no_findings":false,"summary":"Found a liquidation logic flaw that can drain the entire staking pool without updating internal accounting, leaving rewards accrual inconsistent after liquidation.","findings":[{"severity":"high","category":"other","title":"Liquidation drains entire pool and leaves staking accounting unchanged","exploit_scenario":"If the liquidation address (or a liquidation contract callable by users) calls `liquidate(account)`, the function transfers the entire staking token balance to the provided `account`, regardless of that account’s stake. Internal `_totalSupply` and `_balances` are never updated, so stakers can continue accruing rewards without collateral and withdrawals may revert due to insufficient pool balance. A malicious or compromised liquidation address can drain all staked funds while rewards continue to accrue to stale balances.","recommendation":"Limit liquidation transfers to the target account’s staked amount and update `_balances` and `_totalSupply` accordingly. If full-pool liquidation is intended, explicitly zero `_totalSupply`, clear affected balances, and halt rewards to prevent continued accrual against an empty pool.","evidence":"`liquidate` transfers the entire pool balance and does not modify staking accounting state.","locations":["contracts/Contract.sol:1156","contracts/Contract.sol:1157","contracts/Contract.sol:1158"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-6w920mo9
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0eca-f926-7401-92c9-653fdfd053eb
--------
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
exec
/bin/bash -lc ls in /tmp/codex-6w920mo9 succeeded in 5ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-6w920mo9 succeeded in 5ms:
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
================================================================================
// File: contracts\interface\IStakingRewards.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;

interface IStakingRewards {
    // Views
    function lastTimeRewardApplicable() external view returns (uint256);
    
    function rewardPerToken() external view returns (uint256);

    function earned(address account) external view returns (uint256, uint256);

    function getRewardForDuration() external view returns (uint256);
exec
/bin/bash -lc "sed -n '1,240p' AUDIT_BUNDLE.txt" in /tmp/codex-6w920mo9 succeeded in 7ms:
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
================================================================================
// File: contracts\interface\IStakingRewards.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;

interface IStakingRewards {
    // Views
    function lastTimeRewardApplicable() external view returns (uint256);
    
    function rewardPerToken() external view returns (uint256);

    function earned(address account) external view returns (uint256, uint256);

    function getRewardForDuration() external view returns (uint256);
exec
/bin/bash -lc 'rg -n "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-6w920mo9 succeeded in 15ms:
5:FILE: contracts/Contract.sol
exec
/bin/bash -lc 'rg -n "contract StakingRewardsLock|contract SatellitePool|contract" AUDIT_BUNDLE.txt' in /tmp/codex-6w920mo9 succeeded in 6ms:
5:FILE: contracts/Contract.sol
7:// File: contracts\interface\IStakingRewards.sol
37:// File: contracts\pool\RewardsDistributionRecipient.sol
41:abstract contract RewardsDistributionRecipient {
47:        require(msg.sender == rewardsDistribution, "Caller is not RewardsDistribution contract");
52:// File: @openzeppelin\contracts\utils\ReentrancyGuard.sol
72:contract ReentrancyGuard {
76:    // back. This is the compiler's defense against contract upgrades and
94:     * @dev Prevents a contract from calling itself, directly or indirectly.
115:// File: @openzeppelin\contracts\math\SafeMath.sol
194:        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
275:// File: @openzeppelin\contracts\math\Math.sol
307:// File: node_modules\@openzeppelin\contracts\token\ERC20\IERC20.sol
386:// File: node_modules\@openzeppelin\contracts\utils\Address.sol
395:     * @dev Returns true if `account` is a contract.
400:     * false is an externally-owned account (EOA) and not a contract.
406:     *  - a contract in construction
407:     *  - an address where a contract will be created
408:     *  - an address where a contract lived, but was destroyed
427:     * of certain opcodes, possibly making contracts go over the 2300 gas limit
exec
/bin/bash -lc "sed -n '605,860p' AUDIT_BUNDLE.txt" in /tmp/codex-6w920mo9 succeeded in 6ms:
contract StakingRewardsLock is IStakingRewards, RewardsDistributionRecipient, ReentrancyGuard {

    using SafeMath for uint;
    using Math for uint;
    using SafeERC20 for IERC20;

    IERC20 public rewardsToken;
    IERC20 public stakingToken;
    uint256 public periodFinish = 0;
    uint256 public rewardRate = 0;
    uint256 public rewardsDuration;
    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;
    uint256 public lockDuration;

    mapping(address => uint256) public userRewardPerTokenPaid;
    mapping(address => uint256) public unlockRewards;
    mapping(address => uint256) public lockRewards;
    mapping(address => uint256) public userLockTime;

exec
/bin/bash -lc "sed -n '1120,1203p' AUDIT_BUNDLE.txt" in /tmp/codex-6w920mo9 succeeded in 13ms:
pragma solidity ^0.6.12;

interface IPause {
    function pause() external;
    function unpause() external;
}

// File: contracts\pool\SatellitePool.sol

pragma solidity ^0.6.12;

contract SatellitePool is StakingRewardsLock, ILiquidate, Pausable, IPause{
    using SafeDecimalMath for uint;

    address public liquidation;
    IOracle public oracle;
    bytes32 public stakingTokenSymbol;
    address public owner;
    uint256 public diffDecimal;

exec
/bin/bash -lc 'ls contracts' in /tmp/codex-6w920mo9 succeeded in 6ms:
Contract.sol
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1120,1185p'" in /tmp/codex-6w920mo9 succeeded in 7ms:
  1120	
  1121	// File: contracts\pool\SatellitePool.sol
  1122	
  1123	pragma solidity ^0.6.12;
  1124	
  1125	contract SatellitePool is StakingRewardsLock, ILiquidate, Pausable, IPause{
  1126	    using SafeDecimalMath for uint;
  1127	
  1128	    address public liquidation;
  1129	    IOracle public oracle;
  1130	    bytes32 public stakingTokenSymbol;
  1131	    address public owner;
  1132	    uint256 public diffDecimal;
  1133	
  1134	    constructor(
  1135	        address _liquidation,
  1136	        address _rewardsDistribution,
  1137	        address _rewardsToken,
  1138	        address _stakingToken,
  1139	        address _oracle,
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '605,740p'" in /tmp/codex-6w920mo9 succeeded in 10ms:
   605	    IERC20 public rewardsToken;
   606	    IERC20 public stakingToken;
   607	    uint256 public periodFinish = 0;
   608	    uint256 public rewardRate = 0;
   609	    uint256 public rewardsDuration;
   610	    uint256 public lastUpdateTime;
   611	    uint256 public rewardPerTokenStored;
   612	    uint256 public lockDuration;
   613	
   614	    mapping(address => uint256) public userRewardPerTokenPaid;
   615	    mapping(address => uint256) public unlockRewards;
   616	    mapping(address => uint256) public lockRewards;
   617	    mapping(address => uint256) public userLockTime;
   618	
   619	    uint256 private _totalSupply;
   620	    mapping(address => uint256) private _balances;
   621	
   622	    uint public unlockPercent;
   623	    uint public lockPercent;
   624	
codex
{"no_findings":false,"summary":"Found a liquidation logic flaw that can drain the entire staking pool without updating internal accounting, leaving rewards accrual inconsistent after liquidation.","findings":[{"severity":"high","category":"other","title":"Liquidation drains entire pool and leaves staking accounting unchanged","exploit_scenario":"If the liquidation address (or a liquidation contract callable by users) calls `liquidate(account)`, the function transfers the entire staking token balance to the provided `account`, regardless of that account’s stake. Internal `_totalSupply` and `_balances` are never updated, so stakers can continue accruing rewards without collateral and withdrawals may revert due to insufficient pool balance. A malicious or compromised liquidation address can drain all staked funds while rewards continue to accrue to stale balances.","recommendation":"Limit liquidation transfers to the target account’s staked amount and update `_balances` and `_totalSupply` accordingly. If full-pool liquidation is intended, explicitly zero `_totalSupply`, clear affected balances, and halt rewards to prevent continued accrual against an empty pool.","evidence":"`liquidate` transfers the entire pool balance and does not modify staking accounting state.","locations":["contracts/Contract.sol:1156","contracts/Contract.sol:1157","contracts/Contract.sol:1158"]}]}
tokens used
44,956
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T12:09:43.465681+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Found a liquidation logic flaw that can drain the entire staking pool without updating internal accounting, leaving rewards accrual inconsistent after liquidation.",
    "raw_final": {
        "summary": "Found a liquidation logic flaw that can drain the entire staking pool without updating internal accounting, leaving rewards accrual inconsistent after liquidation.",
        "findings": [
            {
                "title": "Liquidation drains entire pool and leaves staking accounting unchanged",
                "category": "other",
                "evidence": "`liquidate` transfers the entire pool balance and does not modify staking accounting state.",
                "severity": "high",
                "locations": [
                    "contracts/Contract.sol:1156",
                    "contracts/Contract.sol:1157",
                    "contracts/Contract.sol:1158"
                ],
                "recommendation": "Limit liquidation transfers to the target account\u2019s staked amount and update `_balances` and `_totalSupply` accordingly. If full-pool liquidation is intended, explicitly zero `_totalSupply`, clear affected balances, and halt rewards to prevent continued accrual against an empty pool.",
                "exploit_scenario": "If the liquidation address (or a liquidation contract callable by users) calls `liquidate(account)`, the function transfers the entire staking token balance to the provided `account`, regardless of that account\u2019s stake. Internal `_totalSupply` and `_balances` are never updated, so stakers can continue accruing rewards without collateral and withdrawals may revert due to insufficient pool balance. A malicious or compromised liquidation address can drain all staked funds while rewards continue to accrue to stale balances."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
6
Total opcodes
4783
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x023c
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x80faa57d
00000026: GT
00000027: PUSH2 0x013b
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xc8f33c91
00000031: GT
00000032: PUSH2 0x00b8
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xe9fad8ee
0000003c: GT
0000003d: PUSH2 0x007c
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xe9fad8ee
00000047: EQ
00000048: PUSH2 0x04e3
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xebe2b12b
00000052: EQ
00000053: PUSH2 0x04eb
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xecd9ba82
0000005d: EQ
0000005e: PUSH2 0x04f3
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xf2dfbf66
00000068: EQ
00000069: PUSH2 0x052b
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0xf2fde38b
00000073: EQ
00000074: PUSH2 0x0533
00000077: JUMPI
00000078: PUSH2 0x023c
0000007b: JUMP
0000007c: JUMPDEST
0000007d: DUP1
0000007e: PUSH4 0xc8f33c91
00000083: EQ
00000084: PUSH2 0x04bb
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0xcd3daf9d
0000008e: EQ
0000008f: PUSH2 0x04c3
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0xd1af0c7d
00000099: EQ
0000009a: PUSH2 0x04cb
0000009d: JUMPI
0000009e: DUP1
0000009f: PUSH4 0xdf136d65
000000a4: EQ
000000a5: PUSH2 0x04d3
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0xe5328e06
000000af: EQ
000000b0: PUSH2 0x04db
000000b3: JUMPI
000000b4: PUSH2 0x023c
000000b7: JUMP
000000b8: JUMPDEST
000000b9: DUP1
000000ba: PUSH4 0x91030cb6
000000bf: GT
000000c0: PUSH2 0x00ff
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x91030cb6
000000ca: EQ
000000cb: PUSH2 0x0442
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0x94071161
000000d5: EQ
000000d6: PUSH2 0x044a
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0xa694fc3a
000000e0: EQ
000000e1: PUSH2 0x0470
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0xab919ee3
000000eb: EQ
000000ec: PUSH2 0x048d
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0xac0ed758
000000f6: EQ
000000f7: PUSH2 0x04b3
000000fa: JUMPI
000000fb: PUSH2 0x023c
000000fe: JUMP
000000ff: JUMPDEST
00000100: DUP1
00000101: PUSH4 0x80faa57d
00000106: EQ
00000107: PUSH2 0x03de
0000010a: JUMPI
0000010b: DUP1
0000010c: PUSH4 0x8456cb59
00000111: EQ
00000112: PUSH2 0x03e6
00000115: JUMPI
00000116: DUP1
00000117: PUSH4 0x876e65ff
0000011c: EQ
0000011d: PUSH2 0x03ee
00000120: JUMPI
00000121: DUP1
00000122: PUSH4 0x8b876347
00000127: EQ
00000128: PUSH2 0x0414
0000012b: JUMPI
0000012c: DUP1
0000012d: PUSH4 0x8da5cb5b
00000132: EQ
00000133: PUSH2 0x043a
00000136: JUMPI
00000137: PUSH2 0x023c
0000013a: JUMP
0000013b: JUMPDEST
0000013c: DUP1
0000013d: PUSH4 0x3f4ba83a
00000142: GT
00000143: PUSH2 0x01c9
00000146: JUMPI
00000147: DUP1
00000148: PUSH4 0x70a08231
0000014d: GT
0000014e: PUSH2 0x018d
00000151: JUMPI
00000152: DUP1
00000153: PUSH4 0x70a08231
00000158: EQ
00000159: PUSH2 0x0398
0000015c: JUMPI
0000015d: DUP1
0000015e: PUSH4 0x72f702f3
00000163: EQ
00000164: PUSH2 0x03be
00000167: JUMPI
00000168: DUP1
00000169: PUSH4 0x756688c0
0000016e: EQ
0000016f: PUSH2 0x03c6
00000172: JUMPI
00000173: DUP1
00000174: PUSH4 0x7b0a47ee
00000179: EQ
0000017a: PUSH2 0x03ce
0000017d: JUMPI
0000017e: DUP1
0000017f: PUSH4 0x7dc0d1d0
00000184: EQ
00000185: PUSH2 0x03d6
00000188: JUMPI
00000189: PUSH2 0x023c
0000018c: JUMP
0000018d: JUMPDEST
0000018e: DUP1
0000018f: PUSH4 0x3f4ba83a
00000194: EQ
00000195: PUSH2 0x0322
00000198: JUMPI
00000199: DUP1
0000019a: PUSH4 0x3fc6df6e
0000019f: EQ
000001a0: PUSH2 0x032a
000001a3: JUMPI
000001a4: DUP1
000001a5: PUSH4 0x47cae448
000001aa: EQ
000001ab: PUSH2 0x034e
000001ae: JUMPI
000001af: DUP1
000001b0: PUSH4 0x5a9a93fc
000001b5: EQ
000001b6: PUSH2 0x0356
000001b9: JUMPI
000001ba: DUP1
000001bb: PUSH4 0x5c975abb
000001c0: EQ
000001c1: PUSH2 0x037c
000001c4: JUMPI
000001c5: PUSH2 0x023c
000001c8: JUMP
000001c9: JUMPDEST
000001ca: DUP1
000001cb: PUSH4 0x246132f9
000001d0: GT
000001d1: PUSH2 0x0210
000001d4: JUMPI
000001d5: DUP1
000001d6: PUSH4 0x246132f9
000001db: EQ
000001dc: PUSH2 0x02aa
000001df: JUMPI
000001e0: DUP1
000001e1: PUSH4 0x2e1a7d4d
000001e6: EQ
000001e7: PUSH2 0x02cf
000001ea: JUMPI
000001eb: DUP1
000001ec: PUSH4 0x2f865568
000001f1: EQ
000001f2: PUSH2 0x02ec
000001f5: JUMPI
000001f6: DUP1
000001f7: PUSH4 0x386a9525
000001fc: EQ
000001fd: PUSH2 0x0312
00000200: JUMPI
00000201: DUP1
00000202: PUSH4 0x3d18b912
00000207: EQ
00000208: PUSH2 0x031a
0000020b: JUMPI
0000020c: PUSH2 0x023c
0000020f: JUMP
00000210: JUMPDEST
00000211: DUP1
00000212: PUSH3 0x8cc262
00000216: EQ
00000217: PUSH2 0x0241
0000021a: JUMPI
0000021b: DUP1
0000021c: PUSH4 0x04554443
00000221: EQ
00000222: PUSH2 0x0280
00000225: JUMPI
00000226: DUP1
00000227: PUSH4 0x18160ddd
0000022c: EQ
0000022d: PUSH2 0x029a
00000230: JUMPI
00000231: DUP1
00000232: PUSH4 0x1c1f78eb
00000237: EQ
00000238: PUSH2 0x02a2
0000023b: JUMPI
0000023c: JUMPDEST
0000023d: PUSH1 0x00
0000023f: DUP1
00000240: REVERT
00000241: JUMPDEST
00000242: PUSH2 0x0267
00000245: PUSH1 0x04
00000247: DUP1
00000248: CALLDATASIZE
00000249: SUB
0000024a: PUSH1 0x20
0000024c: DUP2
0000024d: LT
0000024e: ISZERO
0000024f: PUSH2 0x0257
00000252: JUMPI
00000253: PUSH1 0x00
00000255: DUP1
00000256: REVERT
00000257: JUMPDEST
00000258: POP
00000259: CALLDATALOAD
0000025a: PUSH1 0x01
0000025c: PUSH1 0x01
0000025e: PUSH1 0xa0
00000260: SHL
00000261: SUB
00000262: AND
00000263: PUSH2 0x0559
00000266: JUMP
00000267: JUMPDEST
00000268: PUSH1 0x40
0000026a: DUP1
0000026b: MLOAD
0000026c: SWAP3
0000026d: DUP4
0000026e: MSTORE
0000026f: PUSH1 0x20
00000271: DUP4
00000272: ADD
00000273: SWAP2
00000274: SWAP1
00000275: SWAP2
00000276: MSTORE
00000277: DUP1
00000278: MLOAD
00000279: SWAP2
0000027a: DUP3
0000027b: SWAP1
0000027c: SUB
0000027d: ADD
0000027e: SWAP1
0000027f: RETURN
00000280: JUMPDEST
00000281: PUSH2 0x0288
00000284: PUSH2 0x0667
00000287: JUMP
00000288: JUMPDEST
00000289: PUSH1 0x40
0000028b: DUP1
0000028c: MLOAD
0000028d: SWAP2
0000028e: DUP3
0000028f: MSTORE
00000290: MLOAD
00000291: SWAP1
00000292: DUP2
00000293: SWAP1
00000294: SUB
00000295: PUSH1 0x20
00000297: ADD
00000298: SWAP1
00000299: RETURN
0000029a: JUMPDEST
0000029b: PUSH2 0x0288
0000029e: PUSH2 0x066d
000002a1: JUMP
000002a2: JUMPDEST
000002a3: PUSH2 0x0288
000002a6: PUSH2 0x0674
000002a9: JUMP
000002aa: JUMPDEST
000002ab: PUSH2 0x02cd
000002ae: PUSH1 0x04
000002b0: DUP1
000002b1: CALLDATASIZE
000002b2: SUB
000002b3: PUSH1 0x40
000002b5: DUP2
000002b6: LT
000002b7: ISZERO
000002b8: PUSH2 0x02c0
000002bb: JUMPI
000002bc: PUSH1 0x00
000002be: DUP1
000002bf: REVERT
000002c0: JUMPDEST
000002c1: POP
000002c2: DUP1
000002c3: CALLDATALOAD
000002c4: SWAP1
000002c5: PUSH1 0x20
000002c7: ADD
000002c8: CALLDATALOAD
000002c9: PUSH2 0x0692
000002cc: JUMP
000002cd: JUMPDEST
000002ce: STOP
000002cf: JUMPDEST
000002d0: PUSH2 0x02cd
000002d3: PUSH1 0x04
000002d5: DUP1
000002d6: CALLDATASIZE
000002d7: SUB
000002d8: PUSH1 0x20
000002da: DUP2
000002db: LT
000002dc: ISZERO
000002dd: PUSH2 0x02e5
000002e0: JUMPI
000002e1: PUSH1 0x00
000002e3: DUP1
000002e4: REVERT
000002e5: JUMPDEST
000002e6: POP
000002e7: CALLDATALOAD
000002e8: PUSH2 0x08dc
000002eb: JUMP
000002ec: JUMPDEST
000002ed: PUSH2 0x02cd
000002f0: PUSH1 0x04
000002f2: DUP1
000002f3: CALLDATASIZE
000002f4: SUB
000002f5: PUSH1 0x20
000002f7: DUP2
000002f8: LT
000002f9: ISZERO
000002fa: PUSH2 0x0302
000002fd: JUMPI
000002fe: PUSH1 0x00
00000300: DUP1
00000301: REVERT
00000302: JUMPDEST
00000303: POP
00000304: CALLDATALOAD
00000305: PUSH1 0x01
00000307: PUSH1 0x01
00000309: PUSH1 0xa0
0000030b: SHL
0000030c: SUB
0000030d: AND
0000030e: PUSH2 0x0933
00000311: JUMP
00000312: JUMPDEST
00000313: PUSH2 0x0288
00000316: PUSH2 0x0a22
00000319: JUMP
0000031a: JUMPDEST
0000031b: PUSH2 0x02cd
0000031e: PUSH2 0x0a28
00000321: JUMP
00000322: JUMPDEST
00000323: PUSH2 0x02cd
00000326: PUSH2 0x0b5d
00000329: JUMP
0000032a: JUMPDEST
0000032b: PUSH2 0x0332
0000032e: PUSH2 0x0bc6
00000331: JUMP
00000332: JUMPDEST
00000333: PUSH1 0x40
00000335: DUP1
00000336: MLOAD
00000337: PUSH1 0x01
00000339: PUSH1 0x01
0000033b: PUSH1 0xa0
0000033d: SHL
0000033e: SUB
0000033f: SWAP1
00000340: SWAP3
00000341: AND
00000342: DUP3
00000343: MSTORE
00000344: MLOAD
00000345: SWAP1
00000346: DUP2
00000347: SWAP1
00000348: SUB
00000349: PUSH1 0x20
0000034b: ADD
0000034c: SWAP1
0000034d: RETURN
0000034e: JUMPDEST
0000034f: PUSH2 0x0288
00000352: PUSH2 0x0bd5
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH2 0x0288
0000035a: PUSH1 0x04
0000035c: DUP1
0000035d: CALLDATASIZE
0000035e: SUB
0000035f: PUSH1 0x20
00000361: DUP2
00000362: LT
00000363: ISZERO
00000364: PUSH2 0x036c
00000367: JUMPI
00000368: PUSH1 0x00
0000036a: DUP1
0000036b: REVERT
0000036c: JUMPDEST
0000036d: POP
0000036e: CALLDATALOAD
0000036f: PUSH1 0x01
00000371: PUSH1 0x01
00000373: PUSH1 0xa0
00000375: SHL
00000376: SUB
00000377: AND
00000378: PUSH2 0x0bdb
0000037b: JUMP
0000037c: JUMPDEST
0000037d: PUSH2 0x0384
00000380: PUSH2 0x0bed
00000383: JUMP
00000384: JUMPDEST
00000385: PUSH1 0x40
00000387: DUP1
00000388: MLOAD
00000389: SWAP2
0000038a: ISZERO
0000038b: ISZERO
0000038c: DUP3
0000038d: MSTORE
0000038e: MLOAD
0000038f: SWAP1
00000390: DUP2
00000391: SWAP1
00000392: SUB
00000393: PUSH1 0x20
00000395: ADD
00000396: SWAP1
00000397: RETURN
00000398: JUMPDEST
00000399: PUSH2 0x0288
0000039c: PUSH1 0x04
0000039e: DUP1
0000039f: CALLDATASIZE
000003a0: SUB
000003a1: PUSH1 0x20
000003a3: DUP2
000003a4: LT
000003a5: ISZERO
000003a6: PUSH2 0x03ae
000003a9: JUMPI
000003aa: PUSH1 0x00
000003ac: DUP1
000003ad: REVERT
000003ae: JUMPDEST
000003af: POP
000003b0: CALLDATALOAD
000003b1: PUSH1 0x01
000003b3: PUSH1 0x01
000003b5: PUSH1 0xa0
000003b7: SHL
000003b8: SUB
000003b9: AND
000003ba: PUSH2 0x0bf6
000003bd: JUMP
000003be: JUMPDEST
000003bf: PUSH2 0x0332
000003c2: PUSH2 0x0c11
000003c5: JUMP
000003c6: JUMPDEST
000003c7: PUSH2 0x0288
000003ca: PUSH2 0x0c20
000003cd: JUMP
000003ce: JUMPDEST
000003cf: PUSH2 0x0288
000003d2: PUSH2 0x0c26
000003d5: JUMP
000003d6: JUMPDEST
000003d7: PUSH2 0x0332
000003da: PUSH2 0x0c2c
000003dd: JUMP
000003de: JUMPDEST
000003df: PUSH2 0x0288
000003e2: PUSH2 0x0c3b
000003e5: JUMP
000003e6: JUMPDEST
000003e7: PUSH2 0x02cd
000003ea: PUSH2 0x0c49
000003ed: JUMP
000003ee: JUMPDEST
000003ef: PUSH2 0x0288
000003f2: PUSH1 0x04
000003f4: DUP1
000003f5: CALLDATASIZE
000003f6: SUB
000003f7: PUSH1 0x20
000003f9: DUP2
000003fa: LT
000003fb: ISZERO
000003fc: PUSH2 0x0404
000003ff: JUMPI
00000400: PUSH1 0x00
00000402: DUP1
00000403: REVERT
00000404: JUMPDEST
00000405: POP
00000406: CALLDATALOAD
00000407: PUSH1 0x01
00000409: PUSH1 0x01
0000040b: PUSH1 0xa0
0000040d: SHL
0000040e: SUB
0000040f: AND
00000410: PUSH2 0x0cb0
00000413: JUMP
00000414: JUMPDEST
00000415: PUSH2 0x0288
00000418: PUSH1 0x04
0000041a: DUP1
0000041b: CALLDATASIZE
0000041c: SUB
0000041d: PUSH1 0x20
0000041f: DUP2
00000420: LT
00000421: ISZERO
00000422: PUSH2 0x042a
00000425: JUMPI
00000426: PUSH1 0x00
00000428: DUP1
00000429: REVERT
0000042a: JUMPDEST
0000042b: POP
0000042c: CALLDATALOAD
0000042d: PUSH1 0x01
0000042f: PUSH1 0x01
00000431: PUSH1 0xa0
00000433: SHL
00000434: SUB
00000435: AND
00000436: PUSH2 0x0cc2
00000439: JUMP
0000043a: JUMPDEST
0000043b: PUSH2 0x0332
0000043e: PUSH2 0x0cd4
00000441: JUMP
00000442: JUMPDEST
00000443: PUSH2 0x0288
00000446: PUSH2 0x0ce3
00000449: JUMP
0000044a: JUMPDEST
0000044b: PUSH2 0x0288
0000044e: PUSH1 0x04
00000450: DUP1
00000451: CALLDATASIZE
00000452: SUB
00000453: PUSH1 0x20
00000455: DUP2
00000456: LT
00000457: ISZERO
00000458: PUSH2 0x0460
0000045b: JUMPI
0000045c: PUSH1 0x00
0000045e: DUP1
0000045f: REVERT
00000460: JUMPDEST
00000461: POP
00000462: CALLDATALOAD
00000463: PUSH1 0x01
00000465: PUSH1 0x01
00000467: PUSH1 0xa0
00000469: SHL
0000046a: SUB
0000046b: AND
0000046c: PUSH2 0x0ce9
0000046f: JUMP
00000470: JUMPDEST
00000471: PUSH2 0x02cd
00000474: PUSH1 0x04
00000476: DUP1
00000477: CALLDATASIZE
00000478: SUB
00000479: PUSH1 0x20
0000047b: DUP2
0000047c: LT
0000047d: ISZERO
0000047e: PUSH2 0x0486
00000481: JUMPI
00000482: PUSH1 0x00
00000484: DUP1
00000485: REVERT
00000486: JUMPDEST
00000487: POP
00000488: CALLDATALOAD
00000489: PUSH2 0x0cfb
0000048c: JUMP
0000048d: JUMPDEST
0000048e: PUSH2 0x02cd
00000491: PUSH1 0x04
00000493: DUP1
00000494: CALLDATASIZE
00000495: SUB
00000496: PUSH1 0x20
00000498: DUP2
00000499: LT
0000049a: ISZERO
0000049b: PUSH2 0x04a3
0000049e: JUMPI
0000049f: PUSH1 0x00
000004a1: DUP1
000004a2: REVERT
000004a3: JUMPDEST
000004a4: POP
000004a5: CALLDATALOAD
000004a6: PUSH1 0x01
000004a8: PUSH1 0x01
000004aa: PUSH1 0xa0
000004ac: SHL
000004ad: SUB
000004ae: AND
000004af: PUSH2 0x0ec0
000004b2: JUMP
000004b3: JUMPDEST
000004b4: PUSH2 0x0288
000004b7: PUSH2 0x0f31
000004ba: JUMP
000004bb: JUMPDEST
000004bc: PUSH2 0x0288
000004bf: PUSH2 0x0f37
000004c2: JUMP
000004c3: JUMPDEST
000004c4: PUSH2 0x0288
000004c7: PUSH2 0x0f3d
000004ca: JUMP
000004cb: JUMPDEST
000004cc: PUSH2 0x0332
000004cf: PUSH2 0x0f91
000004d2: JUMP
000004d3: JUMPDEST
000004d4: PUSH2 0x0288
000004d7: PUSH2 0x0fa0
000004da: JUMP
000004db: JUMPDEST
000004dc: PUSH2 0x0288
000004df: PUSH2 0x0fa6
000004e2: JUMP
000004e3: JUMPDEST
000004e4: PUSH2 0x02cd
000004e7: PUSH2 0x10ca
000004ea: JUMP
000004eb: JUMPDEST
000004ec: PUSH2 0x0288
000004ef: PUSH2 0x10eb
000004f2: JUMP
000004f3: JUMPDEST
000004f4: PUSH2 0x02cd
000004f7: PUSH1 0x04
000004f9: DUP1
000004fa: CALLDATASIZE
000004fb: SUB
000004fc: PUSH1 0xa0
000004fe: DUP2
000004ff: LT
00000500: ISZERO
00000501: PUSH2 0x0509
00000504: JUMPI
00000505: PUSH1 0x00
00000507: DUP1
00000508: REVERT
00000509: JUMPDEST
0000050a: POP
0000050b: DUP1
0000050c: CALLDATALOAD
0000050d: SWAP1
0000050e: PUSH1 0x20
00000510: DUP2
00000511: ADD
00000512: CALLDATALOAD
00000513: SWAP1
00000514: PUSH1 0xff
00000516: PUSH1 0x40
00000518: DUP3
00000519: ADD
0000051a: CALLDATALOAD
0000051b: AND
0000051c: SWAP1
0000051d: PUSH1 0x60
0000051f: DUP2
00000520: ADD
00000521: CALLDATALOAD
00000522: SWAP1
00000523: PUSH1 0x80
00000525: ADD
00000526: CALLDATALOAD
00000527: PUSH2 0x10f1
0000052a: JUMP
0000052b: JUMPDEST
0000052c: PUSH2 0x0332
0000052f: PUSH2 0x1345
00000532: JUMP
00000533: JUMPDEST
00000534: PUSH2 0x02cd
00000537: PUSH1 0x04
00000539: DUP1
0000053a: CALLDATASIZE
0000053b: SUB
0000053c: PUSH1 0x20
0000053e: DUP2
0000053f: LT
00000540: ISZERO
00000541: PUSH2 0x0549
00000544: JUMPI
00000545: PUSH1 0x00
00000547: DUP1
00000548: REVERT
00000549: JUMPDEST
0000054a: POP
0000054b: CALLDATALOAD
0000054c: PUSH1 0x01
0000054e: PUSH1 0x01
00000550: PUSH1 0xa0
00000552: SHL
00000553: SUB
00000554: AND
00000555: PUSH2 0x1359
00000558: JUMP
00000559: JUMPDEST
0000055a: PUSH1 0x00
0000055c: DUP1
0000055d: PUSH1 0x00
0000055f: PUSH2 0x0567
00000562: DUP5
00000563: PUSH2 0x1409
00000566: JUMP
00000567: JUMPDEST
00000568: PUSH1 0x01
0000056a: PUSH1 0x01
0000056c: PUSH1 0xa0
0000056e: SHL
0000056f: SUB
00000570: DUP6
00000571: AND
00000572: PUSH1 0x00
00000574: SWAP1
00000575: DUP2
00000576: MSTORE
00000577: PUSH1 0x0d
00000579: PUSH1 0x20
0000057b: MSTORE
0000057c: PUSH1 0x40
0000057e: SWAP1
0000057f: KECCAK256
00000580: SLOAD
00000581: SWAP1
00000582: SWAP2
00000583: POP
00000584: TIMESTAMP
00000585: LT
00000586: PUSH2 0x05d0
00000589: JUMPI
0000058a: PUSH1 0x01
0000058c: PUSH1 0x01
0000058e: PUSH1 0xa0
00000590: SHL
00000591: SUB
00000592: DUP5
00000593: AND
00000594: PUSH1 0x00
00000596: SWAP1
00000597: DUP2
00000598: MSTORE
00000599: PUSH1 0x0c
0000059b: PUSH1 0x20
0000059d: SWAP1
0000059e: DUP2
0000059f: MSTORE
000005a0: PUSH1 0x40
000005a2: DUP1
000005a3: DUP4
000005a4: KECCAK256
000005a5: SLOAD
000005a6: PUSH1 0x0b
000005a8: SWAP1
000005a9: SWAP3
000005aa: MSTORE
000005ab: DUP3
000005ac: KECCAK256
000005ad: SLOAD
000005ae: PUSH2 0x05c2
000005b1: SWAP2
000005b2: DUP5
000005b3: SWAP2
000005b4: PUSH2 0x05bc
000005b7: SWAP2
000005b8: PUSH2 0x1465
000005bb: JUMP
000005bc: JUMPDEST
000005bd: SWAP1
000005be: PUSH2 0x1465
000005c1: JUMP
000005c2: JUMPDEST
000005c3: SWAP4
000005c4: POP
000005c5: PUSH1 0x00
000005c7: SWAP3
000005c8: POP
000005c9: PUSH2 0x0662
000005cc: SWAP2
000005cd: POP
000005ce: POP
000005cf: JUMP
000005d0: JUMPDEST
000005d1: PUSH1 0x00
000005d3: PUSH2 0x0614
000005d6: PUSH2 0x05f5
000005d9: PUSH1 0x64
000005db: PUSH2 0x05ef
000005de: PUSH1 0x10
000005e0: SLOAD
000005e1: DUP7
000005e2: PUSH2 0x14c6
000005e5: SWAP1
000005e6: SWAP2
000005e7: SWAP1
000005e8: PUSH4 0xffffffff
000005ed: AND
000005ee: JUMP
000005ef: JUMPDEST
000005f0: SWAP1
000005f1: PUSH2 0x151f
000005f4: JUMP
000005f5: JUMPDEST
000005f6: PUSH1 0x01
000005f8: PUSH1 0x01
000005fa: PUSH1 0xa0
000005fc: SHL
000005fd: SUB
000005fe: DUP8
000005ff: AND
00000600: PUSH1 0x00
00000602: SWAP1
00000603: DUP2
00000604: MSTORE
00000605: PUSH1 0x0b
00000607: PUSH1 0x20
00000609: MSTORE
0000060a: PUSH1 0x40
0000060c: SWAP1
0000060d: KECCAK256
0000060e: SLOAD
0000060f: SWAP1
00000610: PUSH2 0x1465
00000613: JUMP
00000614: JUMPDEST
00000615: SWAP1
00000616: POP
00000617: PUSH1 0x00
00000619: PUSH2 0x0654
0000061c: PUSH2 0x0635
0000061f: PUSH1 0x64
00000621: PUSH2 0x05ef
00000624: PUSH1 0x11
00000626: SLOAD
00000627: DUP8
00000628: PUSH2 0x14c6
0000062b: SWAP1
0000062c: SWAP2
0000062d: SWAP1
0000062e: PUSH4 0xffffffff
00000633: AND
00000634: JUMP
00000635: JUMPDEST
00000636: PUSH1 0x01
00000638: PUSH1 0x01
0000063a: PUSH1 0xa0
0000063c: SHL
0000063d: SUB
0000063e: DUP9
0000063f: AND
00000640: PUSH1 0x00
00000642: SWAP1
00000643: DUP2
00000644: MSTORE
00000645: PUSH1 0x0c
00000647: PUSH1 0x20
00000649: MSTORE
0000064a: PUSH1 0x40
0000064c: SWAP1
0000064d: KECCAK256
0000064e: SLOAD
0000064f: SWAP1
00000650: PUSH2 0x1465
00000653: JUMP
00000654: JUMPDEST
00000655: SWAP2
00000656: SWAP5
00000657: POP
00000658: SWAP1
00000659: SWAP3
0000065a: POP
0000065b: PUSH2 0x0662
0000065e: SWAP2
0000065f: POP
00000660: POP
00000661: JUMP
00000662: JUMPDEST
00000663: SWAP2
00000664: POP
00000665: SWAP2
00000666: JUMP
00000667: JUMPDEST
00000668: PUSH1 0x09
0000066a: SLOAD
0000066b: DUP2
0000066c: JUMP
0000066d: JUMPDEST
0000066e: PUSH1 0x0e
00000670: SLOAD
00000671: JUMPDEST
00000672: SWAP1
00000673: JUMP
00000674: JUMPDEST
00000675: PUSH1 0x00
00000677: PUSH2 0x068d
0000067a: PUSH1 0x06
0000067c: SLOAD
0000067d: PUSH1 0x05
0000067f: SLOAD
00000680: PUSH2 0x14c6
00000683: SWAP1
00000684: SWAP2
00000685: SWAP1
00000686: PUSH4 0xffffffff
0000068b: AND
0000068c: JUMP
0000068d: JUMPDEST
0000068e: SWAP1
0000068f: POP
00000690: SWAP1
00000691: JUMP
00000692: JUMPDEST
00000693: PUSH1 0x00
00000695: SLOAD
00000696: PUSH1 0x01
00000698: PUSH1 0x01
0000069a: PUSH1 0xa0
0000069c: SHL
0000069d: SUB
0000069e: AND
0000069f: CALLER
000006a0: EQ
000006a1: PUSH2 0x06db
000006a4: JUMPI
000006a5: PUSH1 0x40
000006a7: MLOAD
000006a8: PUSH3 0x461bcd
000006ac: PUSH1 0xe5
000006ae: SHL
000006af: DUP2
000006b0: MSTORE
000006b1: PUSH1 0x04
000006b3: ADD
000006b4: DUP1
000006b5: DUP1
000006b6: PUSH1 0x20
000006b8: ADD
000006b9: DUP3
000006ba: DUP2
000006bb: SUB
000006bc: DUP3
000006bd: MSTORE
000006be: PUSH1 0x2a
000006c0: DUP2
000006c1: MSTORE
000006c2: PUSH1 0x20
000006c4: ADD
000006c5: DUP1
000006c6: PUSH2 0x1d43
000006c9: PUSH1 0x2a
000006cb: SWAP2
000006cc: CODECOPY
000006cd: PUSH1 0x40
000006cf: ADD
000006d0: SWAP2
000006d1: POP
000006d2: POP
000006d3: PUSH1 0x40
000006d5: MLOAD
000006d6: DUP1
000006d7: SWAP2
000006d8: SUB
000006d9: SWAP1
000006da: REVERT
000006db: JUMPDEST
000006dc: PUSH1 0x00
000006de: PUSH2 0x06e5
000006e1: PUSH2 0x0f3d
000006e4: JUMP
000006e5: JUMPDEST
000006e6: PUSH1 0x08
000006e8: SSTORE
000006e9: PUSH2 0x06f0
000006ec: PUSH2 0x0c3b
000006ef: JUMP
000006f0: JUMPDEST
000006f1: PUSH1 0x07
000006f3: SSTORE
000006f4: PUSH1 0x01
000006f6: PUSH1 0x01
000006f8: PUSH1 0xa0
000006fa: SHL
000006fb: SUB
000006fc: DUP2
000006fd: AND
000006fe: ISZERO
000006ff: PUSH2 0x0748
00000702: JUMPI
00000703: PUSH1 0x00
00000705: DUP1
00000706: PUSH2 0x070e
00000709: DUP4
0000070a: PUSH2 0x0559
0000070d: JUMP
0000070e: JUMPDEST
0000070f: PUSH1 0x01
00000711: PUSH1 0x01
00000713: PUSH1 0xa0
00000715: SHL
00000716: SUB
00000717: DUP6
00000718: AND
00000719: PUSH1 0x00
0000071b: SWAP1
0000071c: DUP2
0000071d: MSTORE
0000071e: PUSH1 0x0b
00000720: PUSH1 0x20
00000722: SWAP1
00000723: DUP2
00000724: MSTORE
00000725: PUSH1 0x40
00000727: DUP1
00000728: DUP4
00000729: KECCAK256
0000072a: SWAP5
0000072b: SWAP1
0000072c: SWAP5
0000072d: SSTORE
0000072e: PUSH1 0x0c
00000730: DUP2
00000731: MSTORE
00000732: DUP4
00000733: DUP3
00000734: KECCAK256
00000735: SWAP3
00000736: SWAP1
00000737: SWAP3
00000738: SSTORE
00000739: PUSH1 0x08
0000073b: SLOAD
0000073c: PUSH1 0x0a
0000073e: SWAP1
0000073f: SWAP3
00000740: MSTORE
00000741: SWAP2
00000742: SWAP1
00000743: SWAP2
00000744: KECCAK256
00000745: SSTORE
00000746: POP
00000747: POP
00000748: JUMPDEST
00000749: PUSH1 0x06
0000074b: DUP3
0000074c: SWAP1
0000074d: SSTORE
0000074e: PUSH1 0x04
00000750: SLOAD
00000751: TIMESTAMP
00000752: LT
00000753: PUSH2 0x076c
00000756: JUMPI
00000757: PUSH1 0x06
00000759: SLOAD
0000075a: PUSH2 0x0764
0000075d: SWAP1
0000075e: DUP5
0000075f: SWAP1
00000760: PUSH2 0x151f
00000763: JUMP
00000764: JUMPDEST
00000765: PUSH1 0x05
00000767: SSTORE
00000768: PUSH2 0x07af
0000076b: JUMP
0000076c: JUMPDEST
0000076d: PUSH1 0x04
0000076f: SLOAD
00000770: PUSH1 0x00
00000772: SWAP1
00000773: PUSH2 0x077c
00000776: SWAP1
00000777: TIMESTAMP
00000778: PUSH2 0x1561
0000077b: JUMP
0000077c: JUMPDEST
0000077d: SWAP1
0000077e: POP
0000077f: PUSH1 0x00
00000781: PUSH2 0x0795
00000784: PUSH1 0x05
00000786: SLOAD
00000787: DUP4
00000788: PUSH2 0x14c6
0000078b: SWAP1
0000078c: SWAP2
0000078d: SWAP1
0000078e: PUSH4 0xffffffff
00000793: AND
00000794: JUMP
00000795: JUMPDEST
00000796: PUSH1 0x06
00000798: SLOAD
00000799: SWAP1
0000079a: SWAP2
0000079b: POP
0000079c: PUSH2 0x07a9
0000079f: SWAP1
000007a0: PUSH2 0x05ef
000007a3: DUP8
000007a4: DUP5
000007a5: PUSH2 0x1465
000007a8: JUMP
000007a9: JUMPDEST
000007aa: PUSH1 0x05
000007ac: SSTORE
000007ad: POP
000007ae: POP
000007af: JUMPDEST
000007b0: PUSH1 0x02
000007b2: SLOAD
000007b3: PUSH1 0x40
000007b5: DUP1
000007b6: MLOAD
000007b7: PUSH4 0x70a08231
000007bc: PUSH1 0xe0
000007be: SHL
000007bf: DUP2
000007c0: MSTORE
000007c1: ADDRESS
000007c2: PUSH1 0x04
000007c4: DUP3
000007c5: ADD
000007c6: MSTORE
000007c7: SWAP1
000007c8: MLOAD
000007c9: PUSH1 0x00
000007cb: SWAP3
000007cc: PUSH1 0x01
000007ce: PUSH1 0x01
000007d0: PUSH1 0xa0
000007d2: SHL
000007d3: SUB
000007d4: AND
000007d5: SWAP2
000007d6: PUSH4 0x70a08231
000007db: SWAP2
000007dc: PUSH1 0x24
000007de: DUP1
000007df: DUP4
000007e0: ADD
000007e1: SWAP3
000007e2: PUSH1 0x20
000007e4: SWAP3
000007e5: SWAP2
000007e6: SWAP1
000007e7: DUP3
000007e8: SWAP1
000007e9: SUB
000007ea: ADD
000007eb: DUP2
000007ec: DUP7
000007ed: DUP1
000007ee: EXTCODESIZE
000007ef: ISZERO
000007f0: DUP1
000007f1: ISZERO
000007f2: PUSH2 0x07fa
000007f5: JUMPI
000007f6: PUSH1 0x00
000007f8: DUP1
000007f9: REVERT
000007fa: JUMPDEST
000007fb: POP
000007fc: GAS
000007fd: STATICCALL
000007fe: ISZERO
000007ff: DUP1
00000800: ISZERO
00000801: PUSH2 0x080e
00000804: JUMPI
00000805: RETURNDATASIZE
00000806: PUSH1 0x00
00000808: DUP1
00000809: RETURNDATACOPY
0000080a: RETURNDATASIZE
0000080b: PUSH1 0x00
0000080d: REVERT
0000080e: JUMPDEST
0000080f: POP
00000810: POP
00000811: POP
00000812: POP
00000813: PUSH1 0x40
00000815: MLOAD
00000816: RETURNDATASIZE
00000817: PUSH1 0x20
00000819: DUP2
0000081a: LT
0000081b: ISZERO
0000081c: PUSH2 0x0824
0000081f: JUMPI
00000820: PUSH1 0x00
00000822: DUP1
00000823: REVERT
00000824: JUMPDEST
00000825: POP
00000826: MLOAD
00000827: PUSH1 0x06
00000829: SLOAD
0000082a: SWAP1
0000082b: SWAP2
0000082c: POP
0000082d: PUSH2 0x0837
00000830: SWAP1
00000831: DUP3
00000832: SWAP1
00000833: PUSH2 0x151f
00000836: JUMP
00000837: JUMPDEST
00000838: PUSH1 0x05
0000083a: SLOAD
0000083b: GT
0000083c: ISZERO
0000083d: PUSH2 0x088d
00000840: JUMPI
00000841: PUSH1 0x40
00000843: DUP1
00000844: MLOAD
00000845: PUSH3 0x461bcd
00000849: PUSH1 0xe5
0000084b: SHL
0000084c: DUP2
0000084d: MSTORE
0000084e: PUSH1 0x20
00000850: PUSH1 0x04
00000852: DUP3
00000853: ADD
00000854: MSTORE
00000855: PUSH1 0x18
00000857: PUSH1 0x24
00000859: DUP3
0000085a: ADD
0000085b: MSTORE
0000085c: PUSH32 0x50726f76696465642072657761726420746f6f20686967680000000000000000
0000087d: PUSH1 0x44
0000087f: DUP3
00000880: ADD
00000881: MSTORE
00000882: SWAP1
00000883: MLOAD
00000884: SWAP1
00000885: DUP2
00000886: SWAP1
00000887: SUB
00000888: PUSH1 0x64
0000088a: ADD
0000088b: SWAP1
0000088c: REVERT
0000088d: JUMPDEST
0000088e: TIMESTAMP
0000088f: PUSH1 0x07
00000891: DUP2
00000892: SWAP1
00000893: SSTORE
00000894: PUSH1 0x06
00000896: SLOAD
00000897: PUSH2 0x08a0
0000089a: SWAP2
0000089b: SWAP1
0000089c: PUSH2 0x1465
0000089f: JUMP
000008a0: JUMPDEST
000008a1: PUSH1 0x04
000008a3: SSTORE
000008a4: PUSH1 0x40
000008a6: DUP1
000008a7: MLOAD
000008a8: DUP6
000008a9: DUP2
000008aa: MSTORE
000008ab: SWAP1
000008ac: MLOAD
000008ad: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d
000008ce: SWAP2
000008cf: DUP2
000008d0: SWAP1
000008d1: SUB
000008d2: PUSH1 0x20
000008d4: ADD
000008d5: SWAP1
000008d6: LOG1
000008d7: POP
000008d8: POP
000008d9: POP
000008da: POP
000008db: JUMP
000008dc: JUMPDEST
000008dd: PUSH1 0x12
000008df: SLOAD
000008e0: PUSH1 0xff
000008e2: AND
000008e3: ISZERO
000008e4: PUSH2 0x0927
000008e7: JUMPI
000008e8: PUSH1 0x40
000008ea: DUP1
000008eb: MLOAD
000008ec: PUSH3 0x461bcd
000008f0: PUSH1 0xe5
000008f2: SHL
000008f3: DUP2
000008f4: MSTORE
000008f5: PUSH1 0x20
000008f7: PUSH1 0x04
000008f9: DUP3
000008fa: ADD
000008fb: MSTORE
000008fc: PUSH1 0x10
000008fe: PUSH1 0x24
00000900: DUP3
00000901: ADD
00000902: MSTORE
00000903: PUSH16 0x14185d5cd8589b194e881c185d5cd959
00000914: PUSH1 0x82
00000916: SHL
00000917: PUSH1 0x44
00000919: DUP3
0000091a: ADD
0000091b: MSTORE
0000091c: SWAP1
0000091d: MLOAD
0000091e: SWAP1
0000091f: DUP2
00000920: SWAP1
00000921: SUB
00000922: PUSH1 0x64
00000924: ADD
00000925: SWAP1
00000926: REVERT
00000927: JUMPDEST
00000928: PUSH2 0x0930
0000092b: DUP2
0000092c: PUSH2 0x15a3
0000092f: JUMP
00000930: JUMPDEST
00000931: POP
00000932: JUMP
00000933: JUMPDEST
00000934: PUSH1 0x12
00000936: SLOAD
00000937: PUSH2 0x0100
0000093a: SWAP1
0000093b: DIV
0000093c: PUSH1 0x01
0000093e: PUSH1 0x01
00000940: PUSH1 0xa0
00000942: SHL
00000943: SUB
00000944: AND
00000945: CALLER
00000946: EQ
00000947: PUSH2 0x0992
0000094a: JUMPI
0000094b: PUSH1 0x40
0000094d: DUP1
0000094e: MLOAD
0000094f: PUSH3 0x461bcd
00000953: PUSH1 0xe5
00000955: SHL
00000956: DUP2
00000957: MSTORE
00000958: PUSH1 0x20
0000095a: PUSH1 0x04
0000095c: DUP3
0000095d: ADD
0000095e: MSTORE
0000095f: PUSH1 0x18
00000961: PUSH1 0x24
00000963: DUP3
00000964: ADD
00000965: MSTORE
00000966: PUSH24 0x31b0b63632b91034b9903737ba103634b8bab4b230ba37b9
0000097f: PUSH1 0x41
00000981: SHL
00000982: PUSH1 0x44
00000984: DUP3
00000985: ADD
00000986: MSTORE
00000987: SWAP1
00000988: MLOAD
00000989: SWAP1
0000098a: DUP2
0000098b: SWAP1
0000098c: SUB
0000098d: PUSH1 0x64
0000098f: ADD
00000990: SWAP1
00000991: REVERT
00000992: JUMPDEST
00000993: PUSH1 0x03
00000995: SLOAD
00000996: PUSH1 0x40
00000998: DUP1
00000999: MLOAD
0000099a: PUSH4 0x70a08231
0000099f: PUSH1 0xe0
000009a1: SHL
000009a2: DUP2
000009a3: MSTORE
000009a4: ADDRESS
000009a5: PUSH1 0x04
000009a7: DUP3
000009a8: ADD
000009a9: MSTORE
000009aa: SWAP1
000009ab: MLOAD
000009ac: PUSH2 0x0930
000009af: SWAP3
000009b0: DUP5
000009b1: SWAP3
000009b2: PUSH1 0x01
000009b4: PUSH1 0x01
000009b6: PUSH1 0xa0
000009b8: SHL
000009b9: SUB
000009ba: SWAP1
000009bb: SWAP2
000009bc: AND
000009bd: SWAP2
000009be: PUSH4 0x70a08231
000009c3: SWAP2
000009c4: PUSH1 0x24
000009c6: DUP1
000009c7: DUP3
000009c8: ADD
000009c9: SWAP3
000009ca: PUSH1 0x20
000009cc: SWAP3
000009cd: SWAP1
000009ce: SWAP2
000009cf: SWAP1
000009d0: DUP3
000009d1: SWAP1
000009d2: SUB
000009d3: ADD
000009d4: DUP2
000009d5: DUP7
000009d6: DUP1
000009d7: EXTCODESIZE
000009d8: ISZERO
000009d9: DUP1
000009da: ISZERO
000009db: PUSH2 0x09e3
000009de: JUMPI
000009df: PUSH1 0x00
000009e1: DUP1
000009e2: REVERT
000009e3: JUMPDEST
000009e4: POP
000009e5: GAS
000009e6: STATICCALL
000009e7: ISZERO
000009e8: DUP1
000009e9: ISZERO
000009ea: PUSH2 0x09f7
000009ed: JUMPI
000009ee: RETURNDATASIZE
000009ef: PUSH1 0x00
000009f1: DUP1
000009f2: RETURNDATACOPY
000009f3: RETURNDATASIZE
000009f4: PUSH1 0x00
000009f6: REVERT
000009f7: JUMPDEST
000009f8: POP
000009f9: POP
000009fa: POP
000009fb: POP
000009fc: PUSH1 0x40
000009fe: MLOAD
000009ff: RETURNDATASIZE
00000a00: PUSH1 0x20
00000a02: DUP2
00000a03: LT
00000a04: ISZERO
00000a05: PUSH2 0x0a0d
00000a08: JUMPI
00000a09: PUSH1 0x00
00000a0b: DUP1
00000a0c: REVERT
00000a0d: JUMPDEST
00000a0e: POP
00000a0f: MLOAD
00000a10: PUSH1 0x03
00000a12: SLOAD
00000a13: PUSH1 0x01
00000a15: PUSH1 0x01
00000a17: PUSH1 0xa0
00000a19: SHL
00000a1a: SUB
00000a1b: AND
00000a1c: SWAP2
00000a1d: SWAP1
00000a1e: PUSH2 0x1737
00000a21: JUMP
00000a22: JUMPDEST
00000a23: PUSH1 0x06
00000a25: SLOAD
00000a26: DUP2
00000a27: JUMP
00000a28: JUMPDEST
00000a29: PUSH1 0x02
00000a2b: PUSH1 0x01
00000a2d: SLOAD
00000a2e: EQ
00000a2f: ISZERO
00000a30: PUSH2 0x0a6e
00000a33: JUMPI
00000a34: PUSH1 0x40
00000a36: DUP1
00000a37: MLOAD
00000a38: PUSH3 0x461bcd
00000a3c: PUSH1 0xe5
00000a3e: SHL
00000a3f: DUP2
00000a40: MSTORE
00000a41: PUSH1 0x20
00000a43: PUSH1 0x04
00000a45: DUP3
00000a46: ADD
00000a47: MSTORE
00000a48: PUSH1 0x1f
00000a4a: PUSH1 0x24
00000a4c: DUP3
00000a4d: ADD
00000a4e: MSTORE
00000a4f: PUSH1 0x00
00000a51: DUP1
00000a52: MLOAD
00000a53: PUSH1 0x20
00000a55: PUSH2 0x1cb6
00000a58: DUP4
00000a59: CODECOPY
00000a5a: DUP2
00000a5b: MLOAD
00000a5c: SWAP2
00000a5d: MSTORE
00000a5e: PUSH1 0x44
00000a60: DUP3
00000a61: ADD
00000a62: MSTORE
00000a63: SWAP1
00000a64: MLOAD
00000a65: SWAP1
00000a66: DUP2
00000a67: SWAP1
00000a68: SUB
00000a69: PUSH1 0x64
00000a6b: ADD
00000a6c: SWAP1
00000a6d: REVERT
00000a6e: JUMPDEST
00000a6f: PUSH1 0x02
00000a71: PUSH1 0x01
00000a73: SSTORE
00000a74: CALLER
00000a75: PUSH2 0x0a7c
00000a78: PUSH2 0x0f3d
00000a7b: JUMP
00000a7c: JUMPDEST
00000a7d: PUSH1 0x08
00000a7f: SSTORE
00000a80: PUSH2 0x0a87
00000a83: PUSH2 0x0c3b
00000a86: JUMP
00000a87: JUMPDEST
00000a88: PUSH1 0x07
00000a8a: SSTORE
00000a8b: PUSH1 0x01
00000a8d: PUSH1 0x01
00000a8f: PUSH1 0xa0
00000a91: SHL
00000a92: SUB
00000a93: DUP2
00000a94: AND
00000a95: ISZERO
00000a96: PUSH2 0x0adf
00000a99: JUMPI
00000a9a: PUSH1 0x00
00000a9c: DUP1
00000a9d: PUSH2 0x0aa5
00000aa0: DUP4
00000aa1: PUSH2 0x0559
00000aa4: JUMP
00000aa5: JUMPDEST
00000aa6: PUSH1 0x01
00000aa8: PUSH1 0x01
00000aaa: PUSH1 0xa0
00000aac: SHL
00000aad: SUB
00000aae: DUP6
00000aaf: AND
00000ab0: PUSH1 0x00
00000ab2: SWAP1
00000ab3: DUP2
00000ab4: MSTORE
00000ab5: PUSH1 0x0b
00000ab7: PUSH1 0x20
00000ab9: SWAP1
00000aba: DUP2
00000abb: MSTORE
00000abc: PUSH1 0x40
00000abe: DUP1
00000abf: DUP4
00000ac0: KECCAK256
00000ac1: SWAP5
00000ac2: SWAP1
00000ac3: SWAP5
00000ac4: SSTORE
00000ac5: PUSH1 0x0c
00000ac7: DUP2
00000ac8: MSTORE
00000ac9: DUP4
00000aca: DUP3
00000acb: KECCAK256
00000acc: SWAP3
00000acd: SWAP1
00000ace: SWAP3
00000acf: SSTORE
00000ad0: PUSH1 0x08
00000ad2: SLOAD
00000ad3: PUSH1 0x0a
00000ad5: SWAP1
00000ad6: SWAP3
00000ad7: MSTORE
00000ad8: SWAP2
00000ad9: SWAP1
00000ada: SWAP2
00000adb: KECCAK256
00000adc: SSTORE
00000add: POP
00000ade: POP
00000adf: JUMPDEST
00000ae0: CALLER
00000ae1: PUSH1 0x00
00000ae3: SWAP1
00000ae4: DUP2
00000ae5: MSTORE
00000ae6: PUSH1 0x0b
00000ae8: PUSH1 0x20
00000aea: MSTORE
00000aeb: PUSH1 0x40
00000aed: SWAP1
00000aee: KECCAK256
00000aef: SLOAD
00000af0: DUP1
00000af1: ISZERO
00000af2: PUSH2 0x0b55
00000af5: JUMPI
00000af6: CALLER
00000af7: PUSH1 0x00
00000af9: DUP2
00000afa: DUP2
00000afb: MSTORE
00000afc: PUSH1 0x0b
00000afe: PUSH1 0x20
00000b00: MSTORE
00000b01: PUSH1 0x40
00000b03: DUP2
00000b04: KECCAK256
00000b05: SSTORE
00000b06: PUSH1 0x02
00000b08: SLOAD
00000b09: PUSH2 0x0b1e
00000b0c: SWAP2
00000b0d: PUSH1 0x01
00000b0f: PUSH1 0x01
00000b11: PUSH1 0xa0
00000b13: SHL
00000b14: SUB
00000b15: SWAP1
00000b16: SWAP2
00000b17: AND
00000b18: SWAP1
00000b19: DUP4
00000b1a: PUSH2 0x1737
00000b1d: JUMP
00000b1e: JUMPDEST
00000b1f: PUSH1 0x40
00000b21: DUP1
00000b22: MLOAD
00000b23: DUP3
00000b24: DUP2
00000b25: MSTORE
00000b26: SWAP1
00000b27: MLOAD
00000b28: CALLER
00000b29: SWAP2
00000b2a: PUSH32 0xe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486
00000b4b: SWAP2
00000b4c: SWAP1
00000b4d: DUP2
00000b4e: SWAP1
00000b4f: SUB
00000b50: PUSH1 0x20
00000b52: ADD
00000b53: SWAP1
00000b54: LOG2
00000b55: JUMPDEST
00000b56: POP
00000b57: POP
00000b58: PUSH1 0x01
00000b5a: DUP1
00000b5b: SSTORE
00000b5c: JUMP
00000b5d: JUMPDEST
00000b5e: PUSH1 0x12
00000b60: SLOAD
00000b61: PUSH2 0x0100
00000b64: SWAP1
00000b65: DIV
00000b66: PUSH1 0x01
00000b68: PUSH1 0x01
00000b6a: PUSH1 0xa0
00000b6c: SHL
00000b6d: SUB
00000b6e: AND
00000b6f: CALLER
00000b70: EQ
00000b71: PUSH2 0x0bbc
00000b74: JUMPI
00000b75: PUSH1 0x40
00000b77: DUP1
00000b78: MLOAD
00000b79: PUSH3 0x461bcd
00000b7d: PUSH1 0xe5
00000b7f: SHL
00000b80: DUP2
00000b81: MSTORE
00000b82: PUSH1 0x20
00000b84: PUSH1 0x04
00000b86: DUP3
00000b87: ADD
00000b88: MSTORE
00000b89: PUSH1 0x18
00000b8b: PUSH1 0x24
00000b8d: DUP3
00000b8e: ADD
00000b8f: MSTORE
00000b90: PUSH24 0x31b0b63632b91034b9903737ba103634b8bab4b230ba37b9
00000ba9: PUSH1 0x41
00000bab: SHL
00000bac: PUSH1 0x44
00000bae: DUP3
00000baf: ADD
00000bb0: MSTORE
00000bb1: SWAP1
00000bb2: MLOAD
00000bb3: SWAP1
00000bb4: DUP2
00000bb5: SWAP1
00000bb6: SUB
00000bb7: PUSH1 0x64
00000bb9: ADD
00000bba: SWAP1
00000bbb: REVERT
00000bbc: JUMPDEST
00000bbd: PUSH2 0x0bc4
00000bc0: PUSH2 0x178e
00000bc3: JUMP
00000bc4: JUMPDEST
00000bc5: JUMP
00000bc6: JUMPDEST
00000bc7: PUSH1 0x00
00000bc9: SLOAD
00000bca: PUSH1 0x01
00000bcc: PUSH1 0x01
00000bce: PUSH1 0xa0
00000bd0: SHL
00000bd1: SUB
00000bd2: AND
00000bd3: DUP2
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: PUSH1 0x16
00000bd8: SLOAD
00000bd9: DUP2
00000bda: JUMP
00000bdb: JUMPDEST
00000bdc: PUSH1 0x0d
00000bde: PUSH1 0x20
00000be0: MSTORE
00000be1: PUSH1 0x00
00000be3: SWAP1
00000be4: DUP2
00000be5: MSTORE
00000be6: PUSH1 0x40
00000be8: SWAP1
00000be9: KECCAK256
00000bea: SLOAD
00000beb: DUP2
00000bec: JUMP
00000bed: JUMPDEST
00000bee: PUSH1 0x12
00000bf0: SLOAD
00000bf1: PUSH1 0xff
00000bf3: AND
00000bf4: SWAP1
00000bf5: JUMP
00000bf6: JUMPDEST
00000bf7: PUSH1 0x01
00000bf9: PUSH1 0x01
00000bfb: PUSH1 0xa0
00000bfd: SHL
00000bfe: SUB
00000bff: AND
00000c00: PUSH1 0x00
00000c02: SWAP1
00000c03: DUP2
00000c04: MSTORE
00000c05: PUSH1 0x0f
00000c07: PUSH1 0x20
00000c09: MSTORE
00000c0a: PUSH1 0x40
00000c0c: SWAP1
00000c0d: KECCAK256
00000c0e: SLOAD
00000c0f: SWAP1
00000c10: JUMP
00000c11: JUMPDEST
00000c12: PUSH1 0x03
00000c14: SLOAD
00000c15: PUSH1 0x01
00000c17: PUSH1 0x01
00000c19: PUSH1 0xa0
00000c1b: SHL
00000c1c: SUB
00000c1d: AND
00000c1e: DUP2
00000c1f: JUMP
00000c20: JUMPDEST
00000c21: PUSH1 0x10
00000c23: SLOAD
00000c24: DUP2
00000c25: JUMP
00000c26: JUMPDEST
00000c27: PUSH1 0x05
00000c29: SLOAD
00000c2a: DUP2
00000c2b: JUMP
00000c2c: JUMPDEST
00000c2d: PUSH1 0x13
00000c2f: SLOAD
00000c30: PUSH1 0x01
00000c32: PUSH1 0x01
00000c34: PUSH1 0xa0
00000c36: SHL
00000c37: SUB
00000c38: AND
00000c39: DUP2
00000c3a: JUMP
00000c3b: JUMPDEST
00000c3c: PUSH1 0x00
00000c3e: PUSH2 0x068d
00000c41: TIMESTAMP
00000c42: PUSH1 0x04
00000c44: SLOAD
00000c45: PUSH2 0x182c
00000c48: JUMP
00000c49: JUMPDEST
00000c4a: PUSH1 0x12
00000c4c: SLOAD
00000c4d: PUSH2 0x0100
00000c50: SWAP1
00000c51: DIV
00000c52: PUSH1 0x01
00000c54: PUSH1 0x01
00000c56: PUSH1 0xa0
00000c58: SHL
00000c59: SUB
00000c5a: AND
00000c5b: CALLER
00000c5c: EQ
00000c5d: PUSH2 0x0ca8
00000c60: JUMPI
00000c61: PUSH1 0x40
00000c63: DUP1
00000c64: MLOAD
00000c65: PUSH3 0x461bcd
00000c69: PUSH1 0xe5
00000c6b: SHL
00000c6c: DUP2
00000c6d: MSTORE
00000c6e: PUSH1 0x20
00000c70: PUSH1 0x04
00000c72: DUP3
00000c73: ADD
00000c74: MSTORE
00000c75: PUSH1 0x18
00000c77: PUSH1 0x24
00000c79: DUP3
00000c7a: ADD
00000c7b: MSTORE
00000c7c: PUSH24 0x31b0b63632b91034b9903737ba103634b8bab4b230ba37b9
00000c95: PUSH1 0x41
00000c97: SHL
00000c98: PUSH1 0x44
00000c9a: DUP3
00000c9b: ADD
00000c9c: MSTORE
00000c9d: SWAP1
00000c9e: MLOAD
00000c9f: SWAP1
00000ca0: DUP2
00000ca1: SWAP1
00000ca2: SUB
00000ca3: PUSH1 0x64
00000ca5: ADD
00000ca6: SWAP1
00000ca7: REVERT
00000ca8: JUMPDEST
00000ca9: PUSH2 0x0bc4
00000cac: PUSH2 0x1842
00000caf: JUMP
00000cb0: JUMPDEST
00000cb1: PUSH1 0x0b
00000cb3: PUSH1 0x20
00000cb5: MSTORE
00000cb6: PUSH1 0x00
00000cb8: SWAP1
00000cb9: DUP2
00000cba: MSTORE
00000cbb: PUSH1 0x40
00000cbd: SWAP1
00000cbe: KECCAK256
00000cbf: SLOAD
00000cc0: DUP2
00000cc1: JUMP
00000cc2: JUMPDEST
00000cc3: PUSH1 0x0a
00000cc5: PUSH1 0x20
00000cc7: MSTORE
00000cc8: PUSH1 0x00
00000cca: SWAP1
00000ccb: DUP2
00000ccc: MSTORE
00000ccd: PUSH1 0x40
00000ccf: SWAP1
00000cd0: KECCAK256
00000cd1: SLOAD
00000cd2: DUP2
00000cd3: JUMP
00000cd4: JUMPDEST
00000cd5: PUSH1 0x15
00000cd7: SLOAD
00000cd8: PUSH1 0x01
00000cda: PUSH1 0x01
00000cdc: PUSH1 0xa0
00000cde: SHL
00000cdf: SUB
00000ce0: AND
00000ce1: DUP2
00000ce2: JUMP
00000ce3: JUMPDEST
00000ce4: PUSH1 0x11
00000ce6: SLOAD
00000ce7: DUP2
00000ce8: JUMP
00000ce9: JUMPDEST
00000cea: PUSH1 0x0c
00000cec: PUSH1 0x20
00000cee: MSTORE
00000cef: PUSH1 0x00
00000cf1: SWAP1
00000cf2: DUP2
00000cf3: MSTORE
00000cf4: PUSH1 0x40
00000cf6: SWAP1
00000cf7: KECCAK256
00000cf8: SLOAD
00000cf9: DUP2
00000cfa: JUMP
00000cfb: JUMPDEST
00000cfc: PUSH1 0x02
00000cfe: PUSH1 0x01
00000d00: SLOAD
00000d01: EQ
00000d02: ISZERO
00000d03: PUSH2 0x0d41
00000d06: JUMPI
00000d07: PUSH1 0x40
00000d09: DUP1
00000d0a: MLOAD
00000d0b: PUSH3 0x461bcd
00000d0f: PUSH1 0xe5
00000d11: SHL
00000d12: DUP2
00000d13: MSTORE
00000d14: PUSH1 0x20
00000d16: PUSH1 0x04
00000d18: DUP3
00000d19: ADD
00000d1a: MSTORE
00000d1b: PUSH1 0x1f
00000d1d: PUSH1 0x24
00000d1f: DUP3
00000d20: ADD
00000d21: MSTORE
00000d22: PUSH1 0x00
00000d24: DUP1
00000d25: MLOAD
00000d26: PUSH1 0x20
00000d28: PUSH2 0x1cb6
00000d2b: DUP4
00000d2c: CODECOPY
00000d2d: DUP2
00000d2e: MLOAD
00000d2f: SWAP2
00000d30: MSTORE
00000d31: PUSH1 0x44
00000d33: DUP3
00000d34: ADD
00000d35: MSTORE
00000d36: SWAP1
00000d37: MLOAD
00000d38: SWAP1
00000d39: DUP2
00000d3a: SWAP1
00000d3b: SUB
00000d3c: PUSH1 0x64
00000d3e: ADD
00000d3f: SWAP1
00000d40: REVERT
00000d41: JUMPDEST
00000d42: PUSH1 0x02
00000d44: PUSH1 0x01
00000d46: SSTORE
00000d47: CALLER
00000d48: PUSH2 0x0d4f
00000d4b: PUSH2 0x0f3d
00000d4e: JUMP
00000d4f: JUMPDEST
00000d50: PUSH1 0x08
00000d52: SSTORE
00000d53: PUSH2 0x0d5a
00000d56: PUSH2 0x0c3b
00000d59: JUMP
00000d5a: JUMPDEST
00000d5b: PUSH1 0x07
00000d5d: SSTORE
00000d5e: PUSH1 0x01
00000d60: PUSH1 0x01
00000d62: PUSH1 0xa0
00000d64: SHL
00000d65: SUB
00000d66: DUP2
00000d67: AND
00000d68: ISZERO
00000d69: PUSH2 0x0db2
00000d6c: JUMPI
00000d6d: PUSH1 0x00
00000d6f: DUP1
00000d70: PUSH2 0x0d78
00000d73: DUP4
00000d74: PUSH2 0x0559
00000d77: JUMP
00000d78: JUMPDEST
00000d79: PUSH1 0x01
00000d7b: PUSH1 0x01
00000d7d: PUSH1 0xa0
00000d7f: SHL
00000d80: SUB
00000d81: DUP6
00000d82: AND
00000d83: PUSH1 0x00
00000d85: SWAP1
00000d86: DUP2
00000d87: MSTORE
00000d88: PUSH1 0x0b
00000d8a: PUSH1 0x20
00000d8c: SWAP1
00000d8d: DUP2
00000d8e: MSTORE
00000d8f: PUSH1 0x40
00000d91: DUP1
00000d92: DUP4
00000d93: KECCAK256
00000d94: SWAP5
00000d95: SWAP1
00000d96: SWAP5
00000d97: SSTORE
00000d98: PUSH1 0x0c
00000d9a: DUP2
00000d9b: MSTORE
00000d9c: DUP4
00000d9d: DUP3
00000d9e: KECCAK256
00000d9f: SWAP3
00000da0: SWAP1
00000da1: SWAP3
00000da2: SSTORE
00000da3: PUSH1 0x08
00000da5: SLOAD
00000da6: PUSH1 0x0a
00000da8: SWAP1
00000da9: SWAP3
00000daa: MSTORE
00000dab: SWAP2
00000dac: SWAP1
00000dad: SWAP2
00000dae: KECCAK256
00000daf: SSTORE
00000db0: POP
00000db1: POP
00000db2: JUMPDEST
00000db3: PUSH1 0x00
00000db5: DUP3
00000db6: GT
00000db7: PUSH2 0x0df8
00000dba: JUMPI
00000dbb: PUSH1 0x40
00000dbd: DUP1
00000dbe: MLOAD
00000dbf: PUSH3 0x461bcd
00000dc3: PUSH1 0xe5
00000dc5: SHL
00000dc6: DUP2
00000dc7: MSTORE
00000dc8: PUSH1 0x20
00000dca: PUSH1 0x04
00000dcc: DUP3
00000dcd: ADD
00000dce: MSTORE
00000dcf: PUSH1 0x0e
00000dd1: PUSH1 0x24
00000dd3: DUP3
00000dd4: ADD
00000dd5: MSTORE
00000dd6: PUSH14 0x043616e6e6f74207374616b65203
00000de5: PUSH1 0x94
00000de7: SHL
00000de8: PUSH1 0x44
00000dea: DUP3
00000deb: ADD
00000dec: MSTORE
00000ded: SWAP1
00000dee: MLOAD
00000def: SWAP1
00000df0: DUP2
00000df1: SWAP1
00000df2: SUB
00000df3: PUSH1 0x64
00000df5: ADD
00000df6: SWAP1
00000df7: REVERT
00000df8: JUMPDEST
00000df9: CALLER
00000dfa: PUSH1 0x00
00000dfc: SWAP1
00000dfd: DUP2
00000dfe: MSTORE
00000dff: PUSH1 0x0d
00000e01: PUSH1 0x20
00000e03: MSTORE
00000e04: PUSH1 0x40
00000e06: SWAP1
00000e07: KECCAK256
00000e08: SLOAD
00000e09: PUSH2 0x0e2b
00000e0c: JUMPI
00000e0d: PUSH1 0x09
00000e0f: SLOAD
00000e10: PUSH2 0x0e1a
00000e13: SWAP1
00000e14: TIMESTAMP
00000e15: SWAP1
00000e16: PUSH2 0x1465
00000e19: JUMP
00000e1a: JUMPDEST
00000e1b: CALLER
00000e1c: PUSH1 0x00
00000e1e: SWAP1
00000e1f: DUP2
00000e20: MSTORE
00000e21: PUSH1 0x0d
00000e23: PUSH1 0x20
00000e25: MSTORE
00000e26: PUSH1 0x40
00000e28: SWAP1
00000e29: KECCAK256
00000e2a: SSTORE
00000e2b: JUMPDEST
00000e2c: PUSH1 0x0e
00000e2e: SLOAD
00000e2f: PUSH2 0x0e38
00000e32: SWAP1
00000e33: DUP4
00000e34: PUSH2 0x1465
00000e37: JUMP
00000e38: JUMPDEST
00000e39: PUSH1 0x0e
00000e3b: SSTORE
00000e3c: CALLER
00000e3d: PUSH1 0x00
00000e3f: SWAP1
00000e40: DUP2
00000e41: MSTORE
00000e42: PUSH1 0x0f
00000e44: PUSH1 0x20
00000e46: MSTORE
00000e47: PUSH1 0x40
00000e49: SWAP1
00000e4a: KECCAK256
00000e4b: SLOAD
00000e4c: PUSH2 0x0e55
00000e4f: SWAP1
00000e50: DUP4
00000e51: PUSH2 0x1465
00000e54: JUMP
00000e55: JUMPDEST
00000e56: CALLER
00000e57: PUSH1 0x00
00000e59: DUP2
00000e5a: DUP2
00000e5b: MSTORE
00000e5c: PUSH1 0x0f
00000e5e: PUSH1 0x20
00000e60: MSTORE
00000e61: PUSH1 0x40
00000e63: SWAP1
00000e64: KECCAK256
00000e65: SWAP2
00000e66: SWAP1
00000e67: SWAP2
00000e68: SSTORE
00000e69: PUSH1 0x03
00000e6b: SLOAD
00000e6c: PUSH2 0x0e82
00000e6f: SWAP2
00000e70: PUSH1 0x01
00000e72: PUSH1 0x01
00000e74: PUSH1 0xa0
00000e76: SHL
00000e77: SUB
00000e78: SWAP1
00000e79: SWAP2
00000e7a: AND
00000e7b: SWAP1
00000e7c: ADDRESS
00000e7d: DUP6
00000e7e: PUSH2 0x18c3
00000e81: JUMP
00000e82: JUMPDEST
00000e83: PUSH1 0x40
00000e85: DUP1
00000e86: MLOAD
00000e87: DUP4
00000e88: DUP2
00000e89: MSTORE
00000e8a: SWAP1
00000e8b: MLOAD
00000e8c: CALLER
00000e8d: SWAP2
00000e8e: PUSH32 0x9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d
00000eaf: SWAP2
00000eb0: SWAP1
00000eb1: DUP2
00000eb2: SWAP1
00000eb3: SUB
00000eb4: PUSH1 0x20
00000eb6: ADD
00000eb7: SWAP1
00000eb8: LOG2
00000eb9: POP
00000eba: POP
00000ebb: PUSH1 0x01
00000ebd: DUP1
00000ebe: SSTORE
00000ebf: JUMP
00000ec0: JUMPDEST
00000ec1: PUSH1 0x15
00000ec3: SLOAD
00000ec4: PUSH1 0x01
00000ec6: PUSH1 0x01
00000ec8: PUSH1 0xa0
00000eca: SHL
00000ecb: SUB
00000ecc: AND
00000ecd: CALLER
00000ece: EQ
00000ecf: PUSH2 0x0f09
00000ed2: JUMPI
00000ed3: PUSH1 0x40
00000ed5: MLOAD
00000ed6: PUSH3 0x461bcd
00000eda: PUSH1 0xe5
00000edc: SHL
00000edd: DUP2
00000ede: MSTORE
00000edf: PUSH1 0x04
00000ee1: ADD
00000ee2: DUP1
00000ee3: DUP1
00000ee4: PUSH1 0x20
00000ee6: ADD
00000ee7: DUP3
00000ee8: DUP2
00000ee9: SUB
00000eea: DUP3
00000eeb: MSTORE
00000eec: PUSH1 0x26
00000eee: DUP2
00000eef: MSTORE
00000ef0: PUSH1 0x20
00000ef2: ADD
00000ef3: DUP1
00000ef4: PUSH2 0x1cd6
00000ef7: PUSH1 0x26
00000ef9: SWAP2
00000efa: CODECOPY
00000efb: PUSH1 0x40
00000efd: ADD
00000efe: SWAP2
00000eff: POP
00000f00: POP
00000f01: PUSH1 0x40
00000f03: MLOAD
00000f04: DUP1
00000f05: SWAP2
00000f06: SUB
00000f07: SWAP1
00000f08: REVERT
00000f09: JUMPDEST
00000f0a: PUSH1 0x12
00000f0c: DUP1
00000f0d: SLOAD
00000f0e: PUSH1 0x01
00000f10: PUSH1 0x01
00000f12: PUSH1 0xa0
00000f14: SHL
00000f15: SUB
00000f16: SWAP1
00000f17: SWAP3
00000f18: AND
00000f19: PUSH2 0x0100
00000f1c: MUL
00000f1d: PUSH2 0x0100
00000f20: PUSH1 0x01
00000f22: PUSH1 0xa8
00000f24: SHL
00000f25: SUB
00000f26: NOT
00000f27: SWAP1
00000f28: SWAP3
00000f29: AND
00000f2a: SWAP2
00000f2b: SWAP1
00000f2c: SWAP2
00000f2d: OR
00000f2e: SWAP1
00000f2f: SSTORE
00000f30: JUMP
00000f31: JUMPDEST
00000f32: PUSH1 0x14
00000f34: SLOAD
00000f35: DUP2
00000f36: JUMP
00000f37: JUMPDEST
00000f38: PUSH1 0x07
00000f3a: SLOAD
00000f3b: DUP2
00000f3c: JUMP
00000f3d: JUMPDEST
00000f3e: PUSH1 0x00
00000f40: PUSH1 0x0e
00000f42: SLOAD
00000f43: PUSH1 0x00
00000f45: EQ
00000f46: ISZERO
00000f47: PUSH2 0x0f53
00000f4a: JUMPI
00000f4b: POP
00000f4c: PUSH1 0x08
00000f4e: SLOAD
00000f4f: PUSH2 0x0671
00000f52: JUMP
00000f53: JUMPDEST
00000f54: PUSH2 0x068d
00000f57: PUSH2 0x0f88
00000f5a: PUSH1 0x0e
00000f5c: SLOAD
00000f5d: PUSH2 0x05ef
00000f60: PUSH8 0x0de0b6b3a7640000
00000f69: PUSH2 0x0f82
00000f6c: PUSH1 0x05
00000f6e: SLOAD
00000f6f: PUSH2 0x0f82
00000f72: PUSH1 0x07
00000f74: SLOAD
00000f75: PUSH2 0x0f7c
00000f78: PUSH2 0x0c3b
00000f7b: JUMP
00000f7c: JUMPDEST
00000f7d: SWAP1
00000f7e: PUSH2 0x1561
00000f81: JUMP
00000f82: JUMPDEST
00000f83: SWAP1
00000f84: PUSH2 0x14c6
00000f87: JUMP
00000f88: JUMPDEST
00000f89: PUSH1 0x08
00000f8b: SLOAD
00000f8c: SWAP1
00000f8d: PUSH2 0x1465
00000f90: JUMP
00000f91: JUMPDEST
00000f92: PUSH1 0x02
00000f94: SLOAD
00000f95: PUSH1 0x01
00000f97: PUSH1 0x01
00000f99: PUSH1 0xa0
00000f9b: SHL
00000f9c: SUB
00000f9d: AND
00000f9e: DUP2
00000f9f: JUMP
00000fa0: JUMPDEST
00000fa1: PUSH1 0x08
00000fa3: SLOAD
00000fa4: DUP2
00000fa5: JUMP
00000fa6: JUMPDEST
00000fa7: PUSH1 0x03
00000fa9: SLOAD
00000faa: PUSH1 0x40
00000fac: DUP1
00000fad: MLOAD
00000fae: PUSH4 0x70a08231
00000fb3: PUSH1 0xe0
00000fb5: SHL
00000fb6: DUP2
00000fb7: MSTORE
00000fb8: ADDRESS
00000fb9: PUSH1 0x04
00000fbb: DUP3
00000fbc: ADD
00000fbd: MSTORE
00000fbe: SWAP1
00000fbf: MLOAD
00000fc0: PUSH1 0x00
00000fc2: SWAP3
00000fc3: DUP4
00000fc4: SWAP3
00000fc5: PUSH1 0x01
00000fc7: PUSH1 0x01
00000fc9: PUSH1 0xa0
00000fcb: SHL
00000fcc: SUB
00000fcd: SWAP1
00000fce: SWAP2
00000fcf: AND
00000fd0: SWAP2
00000fd1: PUSH4 0x70a08231
00000fd6: SWAP2
00000fd7: PUSH1 0x24
00000fd9: DUP1
00000fda: DUP3
00000fdb: ADD
00000fdc: SWAP3
00000fdd: PUSH1 0x20
00000fdf: SWAP3
00000fe0: SWAP1
00000fe1: SWAP2
00000fe2: SWAP1
00000fe3: DUP3
00000fe4: SWAP1
00000fe5: SUB
00000fe6: ADD
00000fe7: DUP2
00000fe8: DUP7
00000fe9: DUP1
00000fea: EXTCODESIZE
00000feb: ISZERO
00000fec: DUP1
00000fed: ISZERO
00000fee: PUSH2 0x0ff6
00000ff1: JUMPI
00000ff2: PUSH1 0x00
00000ff4: DUP1
00000ff5: REVERT
00000ff6: JUMPDEST
00000ff7: POP
00000ff8: GAS
00000ff9: STATICCALL
00000ffa: ISZERO
00000ffb: DUP1
00000ffc: ISZERO
00000ffd: PUSH2 0x100a
00001000: JUMPI
00001001: RETURNDATASIZE
00001002: PUSH1 0x00
00001004: DUP1
00001005: RETURNDATACOPY
00001006: RETURNDATASIZE
00001007: PUSH1 0x00
00001009: REVERT
0000100a: JUMPDEST
0000100b: POP
0000100c: POP
0000100d: POP
0000100e: POP
0000100f: PUSH1 0x40
00001011: MLOAD
00001012: RETURNDATASIZE
00001013: PUSH1 0x20
00001015: DUP2
00001016: LT
00001017: ISZERO
00001018: PUSH2 0x1020
0000101b: JUMPI
0000101c: PUSH1 0x00
0000101e: DUP1
0000101f: REVERT
00001020: JUMPDEST
00001021: POP
00001022: MLOAD
00001023: PUSH1 0x13
00001025: SLOAD
00001026: PUSH1 0x14
00001028: SLOAD
00001029: PUSH1 0x40
0000102b: DUP1
0000102c: MLOAD
0000102d: PUSH4 0x31d98b3f
00001032: PUSH1 0xe0
00001034: SHL
00001035: DUP2
00001036: MSTORE
00001037: PUSH1 0x04
00001039: DUP2
0000103a: ADD
0000103b: SWAP3
0000103c: SWAP1
0000103d: SWAP3
0000103e: MSTORE
0000103f: MLOAD
00001040: SWAP3
00001041: SWAP4
00001042: POP
00001043: PUSH1 0x00
00001045: SWAP3
00001046: PUSH1 0x01
00001048: PUSH1 0x01
0000104a: PUSH1 0xa0
0000104c: SHL
0000104d: SUB
0000104e: SWAP1
0000104f: SWAP3
00001050: AND
00001051: SWAP2
00001052: PUSH4 0x31d98b3f
00001057: SWAP2
00001058: PUSH1 0x24
0000105a: DUP1
0000105b: DUP3
0000105c: ADD
0000105d: SWAP3
0000105e: PUSH1 0x20
00001060: SWAP3
00001061: SWAP1
00001062: SWAP2
00001063: SWAP1
00001064: DUP3
00001065: SWAP1
00001066: SUB
00001067: ADD
00001068: DUP2
00001069: DUP7
0000106a: DUP1
0000106b: EXTCODESIZE
0000106c: ISZERO
0000106d: DUP1
0000106e: ISZERO
0000106f: PUSH2 0x1077
00001072: JUMPI
00001073: PUSH1 0x00
00001075: DUP1
00001076: REVERT
00001077: JUMPDEST
00001078: POP
00001079: GAS
0000107a: STATICCALL
0000107b: ISZERO
0000107c: DUP1
0000107d: ISZERO
0000107e: PUSH2 0x108b
00001081: JUMPI
00001082: RETURNDATASIZE
00001083: PUSH1 0x00
00001085: DUP1
00001086: RETURNDATACOPY
00001087: RETURNDATASIZE
00001088: PUSH1 0x00
0000108a: REVERT
0000108b: JUMPDEST
0000108c: POP
0000108d: POP
0000108e: POP
0000108f: POP
00001090: PUSH1 0x40
00001092: MLOAD
00001093: RETURNDATASIZE
00001094: PUSH1 0x20
00001096: DUP2
00001097: LT
00001098: ISZERO
00001099: PUSH2 0x10a1
0000109c: JUMPI
0000109d: PUSH1 0x00
0000109f: DUP1
000010a0: REVERT
000010a1: JUMPDEST
000010a2: POP
000010a3: MLOAD
000010a4: PUSH1 0x16
000010a6: SLOAD
000010a7: SWAP1
000010a8: SWAP2
000010a9: POP
000010aa: PUSH2 0x10c3
000010ad: SWAP1
000010ae: DUP3
000010af: SWAP1
000010b0: PUSH2 0x10bd
000010b3: SWAP1
000010b4: DUP6
000010b5: SWAP1
000010b6: PUSH1 0x0a
000010b8: EXP
000010b9: PUSH2 0x14c6
000010bc: JUMP
000010bd: JUMPDEST
000010be: SWAP1
000010bf: PUSH2 0x1923
000010c2: JUMP
000010c3: JUMPDEST
000010c4: SWAP3
000010c5: POP
000010c6: POP
000010c7: POP
000010c8: SWAP1
000010c9: JUMP
000010ca: JUMPDEST
000010cb: CALLER
000010cc: PUSH1 0x00
000010ce: SWAP1
000010cf: DUP2
000010d0: MSTORE
000010d1: PUSH1 0x0f
000010d3: PUSH1 0x20
000010d5: MSTORE
000010d6: PUSH1 0x40
000010d8: SWAP1
000010d9: KECCAK256
000010da: SLOAD
000010db: PUSH2 0x10e3
000010de: SWAP1
000010df: PUSH2 0x08dc
000010e2: JUMP
000010e3: JUMPDEST
000010e4: PUSH2 0x0bc4
000010e7: PUSH2 0x0a28
000010ea: JUMP
000010eb: JUMPDEST
000010ec: PUSH1 0x04
000010ee: SLOAD
000010ef: DUP2
000010f0: JUMP
000010f1: JUMPDEST
000010f2: PUSH1 0x02
000010f4: PUSH1 0x01
000010f6: SLOAD
000010f7: EQ
000010f8: ISZERO
000010f9: PUSH2 0x1137
000010fc: JUMPI
000010fd: PUSH1 0x40
000010ff: DUP1
00001100: MLOAD
00001101: PUSH3 0x461bcd
00001105: PUSH1 0xe5
00001107: SHL
00001108: DUP2
00001109: MSTORE
0000110a: PUSH1 0x20
0000110c: PUSH1 0x04
0000110e: DUP3
0000110f: ADD
00001110: MSTORE
00001111: PUSH1 0x1f
00001113: PUSH1 0x24
00001115: DUP3
00001116: ADD
00001117: MSTORE
00001118: PUSH1 0x00
0000111a: DUP1
0000111b: MLOAD
0000111c: PUSH1 0x20
0000111e: PUSH2 0x1cb6
00001121: DUP4
00001122: CODECOPY
00001123: DUP2
00001124: MLOAD
00001125: SWAP2
00001126: MSTORE
00001127: PUSH1 0x44
00001129: DUP3
0000112a: ADD
0000112b: MSTORE
0000112c: SWAP1
0000112d: MLOAD
0000112e: SWAP1
0000112f: DUP2
00001130: SWAP1
00001131: SUB
00001132: PUSH1 0x64
00001134: ADD
00001135: SWAP1
00001136: REVERT
00001137: JUMPDEST
00001138: PUSH1 0x02
0000113a: PUSH1 0x01
0000113c: SSTORE
0000113d: CALLER
0000113e: PUSH2 0x1145
00001141: PUSH2 0x0f3d
00001144: JUMP
00001145: JUMPDEST
00001146: PUSH1 0x08
00001148: SSTORE
00001149: PUSH2 0x1150
0000114c: PUSH2 0x0c3b
0000114f: JUMP
00001150: JUMPDEST
00001151: PUSH1 0x07
00001153: SSTORE
00001154: PUSH1 0x01
00001156: PUSH1 0x01
00001158: PUSH1 0xa0
0000115a: SHL
0000115b: SUB
0000115c: DUP2
0000115d: AND
0000115e: ISZERO
0000115f: PUSH2 0x11a8
00001162: JUMPI
00001163: PUSH1 0x00
00001165: DUP1
00001166: PUSH2 0x116e
00001169: DUP4
0000116a: PUSH2 0x0559
0000116d: JUMP
0000116e: JUMPDEST
0000116f: PUSH1 0x01
00001171: PUSH1 0x01
00001173: PUSH1 0xa0
00001175: SHL
00001176: SUB
00001177: DUP6
00001178: AND
00001179: PUSH1 0x00
0000117b: SWAP1
0000117c: DUP2
0000117d: MSTORE
0000117e: PUSH1 0x0b
00001180: PUSH1 0x20
00001182: SWAP1
00001183: DUP2
00001184: MSTORE
00001185: PUSH1 0x40
00001187: DUP1
00001188: DUP4
00001189: KECCAK256
0000118a: SWAP5
0000118b: SWAP1
0000118c: SWAP5
0000118d: SSTORE
0000118e: PUSH1 0x0c
00001190: DUP2
00001191: MSTORE
00001192: DUP4
00001193: DUP3
00001194: KECCAK256
00001195: SWAP3
00001196: SWAP1
00001197: SWAP3
00001198: SSTORE
00001199: PUSH1 0x08
0000119b: SLOAD
0000119c: PUSH1 0x0a
0000119e: SWAP1
0000119f: SWAP3
000011a0: MSTORE
000011a1: SWAP2
000011a2: SWAP1
000011a3: SWAP2
000011a4: KECCAK256
000011a5: SSTORE
000011a6: POP
000011a7: POP
000011a8: JUMPDEST
000011a9: PUSH1 0x00
000011ab: DUP7
000011ac: GT
000011ad: PUSH2 0x11ee
000011b0: JUMPI
000011b1: PUSH1 0x40
000011b3: DUP1
000011b4: MLOAD
000011b5: PUSH3 0x461bcd
000011b9: PUSH1 0xe5
000011bb: SHL
000011bc: DUP2
000011bd: MSTORE
000011be: PUSH1 0x20
000011c0: PUSH1 0x04
000011c2: DUP3
000011c3: ADD
000011c4: MSTORE
000011c5: PUSH1 0x0e
000011c7: PUSH1 0x24
000011c9: DUP3
000011ca: ADD
000011cb: MSTORE
000011cc: PUSH14 0x043616e6e6f74207374616b65203
000011db: PUSH1 0x94
000011dd: SHL
000011de: PUSH1 0x44
000011e0: DUP3
000011e1: ADD
000011e2: MSTORE
000011e3: SWAP1
000011e4: MLOAD
000011e5: SWAP1
000011e6: DUP2
000011e7: SWAP1
000011e8: SUB
000011e9: PUSH1 0x64
000011eb: ADD
000011ec: SWAP1
000011ed: REVERT
000011ee: JUMPDEST
000011ef: CALLER
000011f0: PUSH1 0x00
000011f2: SWAP1
000011f3: DUP2
000011f4: MSTORE
000011f5: PUSH1 0x0d
000011f7: PUSH1 0x20
000011f9: MSTORE
000011fa: PUSH1 0x40
000011fc: SWAP1
000011fd: KECCAK256
000011fe: SLOAD
000011ff: PUSH2 0x1221
00001202: JUMPI
00001203: PUSH1 0x09
00001205: SLOAD
00001206: PUSH2 0x1210
00001209: SWAP1
0000120a: TIMESTAMP
0000120b: SWAP1
0000120c: PUSH2 0x1465
0000120f: JUMP
00001210: JUMPDEST
00001211: CALLER
00001212: PUSH1 0x00
00001214: SWAP1
00001215: DUP2
00001216: MSTORE
00001217: PUSH1 0x0d
00001219: PUSH1 0x20
0000121b: MSTORE
0000121c: PUSH1 0x40
0000121e: SWAP1
0000121f: KECCAK256
00001220: SSTORE
00001221: JUMPDEST
00001222: PUSH1 0x0e
00001224: SLOAD
00001225: PUSH2 0x122e
00001228: SWAP1
00001229: DUP8
0000122a: PUSH2 0x1465
0000122d: JUMP
0000122e: JUMPDEST
0000122f: PUSH1 0x0e
00001231: SSTORE
00001232: CALLER
00001233: PUSH1 0x00
00001235: SWAP1
00001236: DUP2
00001237: MSTORE
00001238: PUSH1 0x0f
0000123a: PUSH1 0x20
0000123c: MSTORE
0000123d: PUSH1 0x40
0000123f: SWAP1
00001240: KECCAK256
00001241: SLOAD
00001242: PUSH2 0x124b
00001245: SWAP1
00001246: DUP8
00001247: PUSH2 0x1465
0000124a: JUMP
0000124b: JUMPDEST
0000124c: CALLER
0000124d: PUSH1 0x00
0000124f: DUP2
00001250: DUP2
00001251: MSTORE
00001252: PUSH1 0x0f
00001254: PUSH1 0x20
00001256: MSTORE
00001257: PUSH1 0x40
00001259: DUP1
0000125a: DUP3
0000125b: KECCAK256
0000125c: SWAP4
0000125d: SWAP1
0000125e: SWAP4
0000125f: SSTORE
00001260: PUSH1 0x03
00001262: SLOAD
00001263: DUP4
00001264: MLOAD
00001265: PUSH4 0xd505accf
0000126a: PUSH1 0xe0
0000126c: SHL
0000126d: DUP2
0000126e: MSTORE
0000126f: PUSH1 0x04
00001271: DUP2
00001272: ADD
00001273: SWAP4
00001274: SWAP1
00001275: SWAP4
00001276: MSTORE
00001277: ADDRESS
00001278: PUSH1 0x24
0000127a: DUP5
0000127b: ADD
0000127c: MSTORE
0000127d: PUSH1 0x44
0000127f: DUP4
00001280: ADD
00001281: DUP11
00001282: SWAP1
00001283: MSTORE
00001284: PUSH1 0x64
00001286: DUP4
00001287: ADD
00001288: DUP10
00001289: SWAP1
0000128a: MSTORE
0000128b: PUSH1 0xff
0000128d: DUP9
0000128e: AND
0000128f: PUSH1 0x84
00001291: DUP5
00001292: ADD
00001293: MSTORE
00001294: PUSH1 0xa4
00001296: DUP4
00001297: ADD
00001298: DUP8
00001299: SWAP1
0000129a: MSTORE
0000129b: PUSH1 0xc4
0000129d: DUP4
0000129e: ADD
0000129f: DUP7
000012a0: SWAP1
000012a1: MSTORE
000012a2: SWAP3
000012a3: MLOAD
000012a4: PUSH1 0x01
000012a6: PUSH1 0x01
000012a8: PUSH1 0xa0
000012aa: SHL
000012ab: SUB
000012ac: SWAP1
000012ad: SWAP4
000012ae: AND
000012af: SWAP3
000012b0: PUSH4 0xd505accf
000012b5: SWAP3
000012b6: PUSH1 0xe4
000012b8: DUP1
000012b9: DUP3
000012ba: ADD
000012bb: SWAP4
000012bc: SWAP3
000012bd: SWAP2
000012be: DUP3
000012bf: SWAP1
000012c0: SUB
000012c1: ADD
000012c2: DUP2
000012c3: DUP4
000012c4: DUP8
000012c5: DUP1
000012c6: EXTCODESIZE
000012c7: ISZERO
000012c8: DUP1
000012c9: ISZERO
000012ca: PUSH2 0x12d2
000012cd: JUMPI
000012ce: PUSH1 0x00
000012d0: DUP1
000012d1: REVERT
000012d2: JUMPDEST
000012d3: POP
000012d4: GAS
000012d5: CALL
000012d6: ISZERO
000012d7: DUP1
000012d8: ISZERO
000012d9: PUSH2 0x12e6
000012dc: JUMPI
000012dd: RETURNDATASIZE
000012de: PUSH1 0x00
000012e0: DUP1
000012e1: RETURNDATACOPY
000012e2: RETURNDATASIZE
000012e3: PUSH1 0x00
000012e5: REVERT
000012e6: JUMPDEST
000012e7: POP
000012e8: POP
000012e9: PUSH1 0x03
000012eb: SLOAD
000012ec: PUSH2 0x1303
000012ef: SWAP3
000012f0: POP
000012f1: PUSH1 0x01
000012f3: PUSH1 0x01
000012f5: PUSH1 0xa0
000012f7: SHL
000012f8: SUB
000012f9: AND
000012fa: SWAP1
000012fb: POP
000012fc: CALLER
000012fd: ADDRESS
000012fe: DUP10
000012ff: PUSH2 0x18c3
00001302: JUMP
00001303: JUMPDEST
00001304: PUSH1 0x40
00001306: DUP1
00001307: MLOAD
00001308: DUP8
00001309: DUP2
0000130a: MSTORE
0000130b: SWAP1
0000130c: MLOAD
0000130d: CALLER
0000130e: SWAP2
0000130f: PUSH32 0x9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d
00001330: SWAP2
00001331: SWAP1
00001332: DUP2
00001333: SWAP1
00001334: SUB
00001335: PUSH1 0x20
00001337: ADD
00001338: SWAP1
00001339: LOG2
0000133a: POP
0000133b: POP
0000133c: PUSH1 0x01
0000133e: DUP1
0000133f: SSTORE
00001340: POP
00001341: POP
00001342: POP
00001343: POP
00001344: JUMP
00001345: JUMPDEST
00001346: PUSH1 0x12
00001348: SLOAD
00001349: PUSH2 0x0100
0000134c: SWAP1
0000134d: DIV
0000134e: PUSH1 0x01
00001350: PUSH1 0x01
00001352: PUSH1 0xa0
00001354: SHL
00001355: SUB
00001356: AND
00001357: DUP2
00001358: JUMP
00001359: JUMPDEST
0000135a: PUSH1 0x15
0000135c: SLOAD
0000135d: PUSH1 0x01
0000135f: PUSH1 0x01
00001361: PUSH1 0xa0
00001363: SHL
00001364: SUB
00001365: AND
00001366: CALLER
00001367: EQ
00001368: PUSH2 0x13a2
0000136b: JUMPI
0000136c: PUSH1 0x40
0000136e: MLOAD
0000136f: PUSH3 0x461bcd
00001373: PUSH1 0xe5
00001375: SHL
00001376: DUP2
00001377: MSTORE
00001378: PUSH1 0x04
0000137a: ADD
0000137b: DUP1
0000137c: DUP1
0000137d: PUSH1 0x20
0000137f: ADD
00001380: DUP3
00001381: DUP2
00001382: SUB
00001383: DUP3
00001384: MSTORE
00001385: PUSH1 0x26
00001387: DUP2
00001388: MSTORE
00001389: PUSH1 0x20
0000138b: ADD
0000138c: DUP1
0000138d: PUSH2 0x1cd6
00001390: PUSH1 0x26
00001392: SWAP2
00001393: CODECOPY
00001394: PUSH1 0x40
00001396: ADD
00001397: SWAP2
00001398: POP
00001399: POP
0000139a: PUSH1 0x40
0000139c: MLOAD
0000139d: DUP1
0000139e: SWAP2
0000139f: SUB
000013a0: SWAP1
000013a1: REVERT
000013a2: JUMPDEST
000013a3: PUSH1 0x01
000013a5: PUSH1 0x01
000013a7: PUSH1 0xa0
000013a9: SHL
000013aa: SUB
000013ab: DUP2
000013ac: AND
000013ad: PUSH2 0x13e7
000013b0: JUMPI
000013b1: PUSH1 0x40
000013b3: MLOAD
000013b4: PUSH3 0x461bcd
000013b8: PUSH1 0xe5
000013ba: SHL
000013bb: DUP2
000013bc: MSTORE
000013bd: PUSH1 0x04
000013bf: ADD
000013c0: DUP1
000013c1: DUP1
000013c2: PUSH1 0x20
000013c4: ADD
000013c5: DUP3
000013c6: DUP2
000013c7: SUB
000013c8: DUP3
000013c9: MSTORE
000013ca: PUSH1 0x26
000013cc: DUP2
000013cd: MSTORE
000013ce: PUSH1 0x20
000013d0: ADD
000013d1: DUP1
000013d2: PUSH2 0x1cfc
000013d5: PUSH1 0x26
000013d7: SWAP2
000013d8: CODECOPY
000013d9: PUSH1 0x40
000013db: ADD
000013dc: SWAP2
000013dd: POP
000013de: POP
000013df: PUSH1 0x40
000013e1: MLOAD
000013e2: DUP1
000013e3: SWAP2
000013e4: SUB
000013e5: SWAP1
000013e6: REVERT
000013e7: JUMPDEST
000013e8: PUSH1 0x15
000013ea: DUP1
000013eb: SLOAD
000013ec: PUSH1 0x01
000013ee: PUSH1 0x01
000013f0: PUSH1 0xa0
000013f2: SHL
000013f3: SUB
000013f4: NOT
000013f5: AND
000013f6: PUSH1 0x01
000013f8: PUSH1 0x01
000013fa: PUSH1 0xa0
000013fc: SHL
000013fd: SUB
000013fe: SWAP3
000013ff: SWAP1
00001400: SWAP3
00001401: AND
00001402: SWAP2
00001403: SWAP1
00001404: SWAP2
00001405: OR
00001406: SWAP1
00001407: SSTORE
00001408: JUMP
00001409: JUMPDEST
0000140a: PUSH1 0x01
0000140c: PUSH1 0x01
0000140e: PUSH1 0xa0
00001410: SHL
00001411: SUB
00001412: DUP2
00001413: AND
00001414: PUSH1 0x00
00001416: SWAP1
00001417: DUP2
00001418: MSTORE
00001419: PUSH1 0x0a
0000141b: PUSH1 0x20
0000141d: MSTORE
0000141e: PUSH1 0x40
00001420: DUP2
00001421: KECCAK256
00001422: SLOAD
00001423: PUSH2 0x145f
00001426: SWAP1
00001427: PUSH8 0x0de0b6b3a7640000
00001430: SWAP1
00001431: PUSH2 0x05ef
00001434: SWAP1
00001435: PUSH2 0x1440
00001438: SWAP1
00001439: PUSH2 0x0f7c
0000143c: PUSH2 0x0f3d
0000143f: JUMP
00001440: JUMPDEST
00001441: PUSH1 0x01
00001443: PUSH1 0x01
00001445: PUSH1 0xa0
00001447: SHL
00001448: SUB
00001449: DUP7
0000144a: AND
0000144b: PUSH1 0x00
0000144d: SWAP1
0000144e: DUP2
0000144f: MSTORE
00001450: PUSH1 0x0f
00001452: PUSH1 0x20
00001454: MSTORE
00001455: PUSH1 0x40
00001457: SWAP1
00001458: KECCAK256
00001459: SLOAD
0000145a: SWAP1
0000145b: PUSH2 0x14c6
0000145e: JUMP
0000145f: JUMPDEST
00001460: SWAP3
00001461: SWAP2
00001462: POP
00001463: POP
00001464: JUMP
00001465: JUMPDEST
00001466: PUSH1 0x00
00001468: DUP3
00001469: DUP3
0000146a: ADD
0000146b: DUP4
0000146c: DUP2
0000146d: LT
0000146e: ISZERO
0000146f: PUSH2 0x14bf
00001472: JUMPI
00001473: PUSH1 0x40
00001475: DUP1
00001476: MLOAD
00001477: PUSH3 0x461bcd
0000147b: PUSH1 0xe5
0000147d: SHL
0000147e: DUP2
0000147f: MSTORE
00001480: PUSH1 0x20
00001482: PUSH1 0x04
00001484: DUP3
00001485: ADD
00001486: MSTORE
00001487: PUSH1 0x1b
00001489: PUSH1 0x24
0000148b: DUP3
0000148c: ADD
0000148d: MSTORE
0000148e: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
000014af: PUSH1 0x44
000014b1: DUP3
000014b2: ADD
000014b3: MSTORE
000014b4: SWAP1
000014b5: MLOAD
000014b6: SWAP1
000014b7: DUP2
000014b8: SWAP1
000014b9: SUB
000014ba: PUSH1 0x64
000014bc: ADD
000014bd: SWAP1
000014be: REVERT
000014bf: JUMPDEST
000014c0: SWAP4
000014c1: SWAP3
000014c2: POP
000014c3: POP
000014c4: POP
000014c5: JUMP
000014c6: JUMPDEST
000014c7: PUSH1 0x00
000014c9: DUP3
000014ca: PUSH2 0x14d5
000014cd: JUMPI
000014ce: POP
000014cf: PUSH1 0x00
000014d1: PUSH2 0x145f
000014d4: JUMP
000014d5: JUMPDEST
000014d6: DUP3
000014d7: DUP3
000014d8: MUL
000014d9: DUP3
000014da: DUP5
000014db: DUP3
000014dc: DUP2
000014dd: PUSH2 0x14e2
000014e0: JUMPI
000014e1: INVALID
000014e2: JUMPDEST
000014e3: DIV
000014e4: EQ
000014e5: PUSH2 0x14bf
000014e8: JUMPI
000014e9: PUSH1 0x40
000014eb: MLOAD
000014ec: PUSH3 0x461bcd
000014f0: PUSH1 0xe5
000014f2: SHL
000014f3: DUP2
000014f4: MSTORE
000014f5: PUSH1 0x04
000014f7: ADD
000014f8: DUP1
000014f9: DUP1
000014fa: PUSH1 0x20
000014fc: ADD
000014fd: DUP3
000014fe: DUP2
000014ff: SUB
00001500: DUP3
00001501: MSTORE
00001502: PUSH1 0x21
00001504: DUP2
00001505: MSTORE
00001506: PUSH1 0x20
00001508: ADD
00001509: DUP1
0000150a: PUSH2 0x1d22
0000150d: PUSH1 0x21
0000150f: SWAP2
00001510: CODECOPY
00001511: PUSH1 0x40
00001513: ADD
00001514: SWAP2
00001515: POP
00001516: POP
00001517: PUSH1 0x40
00001519: MLOAD
0000151a: DUP1
0000151b: SWAP2
0000151c: SUB
0000151d: SWAP1
0000151e: REVERT
0000151f: JUMPDEST
00001520: PUSH1 0x00
00001522: PUSH2 0x14bf
00001525: DUP4
00001526: DUP4
00001527: PUSH1 0x40
00001529: MLOAD
0000152a: DUP1
0000152b: PUSH1 0x40
0000152d: ADD
0000152e: PUSH1 0x40
00001530: MSTORE
00001531: DUP1
00001532: PUSH1 0x1a
00001534: DUP2
00001535: MSTORE
00001536: PUSH1 0x20
00001538: ADD
00001539: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
0000155a: DUP2
0000155b: MSTORE
0000155c: POP
0000155d: PUSH2 0x1947
00001560: JUMP
00001561: JUMPDEST
00001562: PUSH1 0x00
00001564: PUSH2 0x14bf
00001567: DUP4
00001568: DUP4
00001569: PUSH1 0x40
0000156b: MLOAD
0000156c: DUP1
0000156d: PUSH1 0x40
0000156f: ADD
00001570: PUSH1 0x40
00001572: MSTORE
00001573: DUP1
00001574: PUSH1 0x1e
00001576: DUP2
00001577: MSTORE
00001578: PUSH1 0x20
0000157a: ADD
0000157b: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
0000159c: DUP2
0000159d: MSTORE
0000159e: POP
0000159f: PUSH2 0x19e9
000015a2: JUMP
000015a3: JUMPDEST
000015a4: PUSH1 0x02
000015a6: PUSH1 0x01
000015a8: SLOAD
000015a9: EQ
000015aa: ISZERO
000015ab: PUSH2 0x15e9
000015ae: JUMPI
000015af: PUSH1 0x40
000015b1: DUP1
000015b2: MLOAD
000015b3: PUSH3 0x461bcd
000015b7: PUSH1 0xe5
000015b9: SHL
000015ba: DUP2
000015bb: MSTORE
000015bc: PUSH1 0x20
000015be: PUSH1 0x04
000015c0: DUP3
000015c1: ADD
000015c2: MSTORE
000015c3: PUSH1 0x1f
000015c5: PUSH1 0x24
000015c7: DUP3
000015c8: ADD
000015c9: MSTORE
000015ca: PUSH1 0x00
000015cc: DUP1
000015cd: MLOAD
000015ce: PUSH1 0x20
000015d0: PUSH2 0x1cb6
000015d3: DUP4
000015d4: CODECOPY
000015d5: DUP2
000015d6: MLOAD
000015d7: SWAP2
000015d8: MSTORE
000015d9: PUSH1 0x44
000015db: DUP3
000015dc: ADD
000015dd: MSTORE
000015de: SWAP1
000015df: MLOAD
000015e0: SWAP1
000015e1: DUP2
000015e2: SWAP1
000015e3: SUB
000015e4: PUSH1 0x64
000015e6: ADD
000015e7: SWAP1
000015e8: REVERT
000015e9: JUMPDEST
000015ea: PUSH1 0x02
000015ec: PUSH1 0x01
000015ee: SSTORE
000015ef: CALLER
000015f0: PUSH2 0x15f7
000015f3: PUSH2 0x0f3d
000015f6: JUMP
000015f7: JUMPDEST
000015f8: PUSH1 0x08
000015fa: SSTORE
000015fb: PUSH2 0x1602
000015fe: PUSH2 0x0c3b
00001601: JUMP
00001602: JUMPDEST
00001603: PUSH1 0x07
00001605: SSTORE
00001606: PUSH1 0x01
00001608: PUSH1 0x01
0000160a: PUSH1 0xa0
0000160c: SHL
0000160d: SUB
0000160e: DUP2
0000160f: AND
00001610: ISZERO
00001611: PUSH2 0x165a
00001614: JUMPI
00001615: PUSH1 0x00
00001617: DUP1
00001618: PUSH2 0x1620
0000161b: DUP4
0000161c: PUSH2 0x0559
0000161f: JUMP
00001620: JUMPDEST
00001621: PUSH1 0x01
00001623: PUSH1 0x01
00001625: PUSH1 0xa0
00001627: SHL
00001628: SUB
00001629: DUP6
0000162a: AND
0000162b: PUSH1 0x00
0000162d: SWAP1
0000162e: DUP2
0000162f: MSTORE
00001630: PUSH1 0x0b
00001632: PUSH1 0x20
00001634: SWAP1
00001635: DUP2
00001636: MSTORE
00001637: PUSH1 0x40
00001639: DUP1
0000163a: DUP4
0000163b: KECCAK256
0000163c: SWAP5
0000163d: SWAP1
0000163e: SWAP5
0000163f: SSTORE
00001640: PUSH1 0x0c
00001642: DUP2
00001643: MSTORE
00001644: DUP4
00001645: DUP3
00001646: KECCAK256
00001647: SWAP3
00001648: SWAP1
00001649: SWAP3
0000164a: SSTORE
0000164b: PUSH1 0x08
0000164d: SLOAD
0000164e: PUSH1 0x0a
00001650: SWAP1
00001651: SWAP3
00001652: MSTORE
00001653: SWAP2
00001654: SWAP1
00001655: SWAP2
00001656: KECCAK256
00001657: SSTORE
00001658: POP
00001659: POP
0000165a: JUMPDEST
0000165b: PUSH1 0x00
0000165d: DUP3
0000165e: GT
0000165f: PUSH2 0x16a3
00001662: JUMPI
00001663: PUSH1 0x40
00001665: DUP1
00001666: MLOAD
00001667: PUSH3 0x461bcd
0000166b: PUSH1 0xe5
0000166d: SHL
0000166e: DUP2
0000166f: MSTORE
00001670: PUSH1 0x20
00001672: PUSH1 0x04
00001674: DUP3
00001675: ADD
00001676: MSTORE
00001677: PUSH1 0x11
00001679: PUSH1 0x24
0000167b: DUP3
0000167c: ADD
0000167d: MSTORE
0000167e: PUSH17 0x043616e6e6f74207769746864726177203
00001690: PUSH1 0x7c
00001692: SHL
00001693: PUSH1 0x44
00001695: DUP3
00001696: ADD
00001697: MSTORE
00001698: SWAP1
00001699: MLOAD
0000169a: SWAP1
0000169b: DUP2
0000169c: SWAP1
0000169d: SUB
0000169e: PUSH1 0x64
000016a0: ADD
000016a1: SWAP1
000016a2: REVERT
000016a3: JUMPDEST
000016a4: PUSH1 0x0e
000016a6: SLOAD
000016a7: PUSH2 0x16b0
000016aa: SWAP1
000016ab: DUP4
000016ac: PUSH2 0x1561
000016af: JUMP
000016b0: JUMPDEST
000016b1: PUSH1 0x0e
000016b3: SSTORE
000016b4: CALLER
000016b5: PUSH1 0x00
000016b7: SWAP1
000016b8: DUP2
000016b9: MSTORE
000016ba: PUSH1 0x0f
000016bc: PUSH1 0x20
000016be: MSTORE
000016bf: PUSH1 0x40
000016c1: SWAP1
000016c2: KECCAK256
000016c3: SLOAD
000016c4: PUSH2 0x16cd
000016c7: SWAP1
000016c8: DUP4
000016c9: PUSH2 0x1561
000016cc: JUMP
000016cd: JUMPDEST
000016ce: CALLER
000016cf: PUSH1 0x00
000016d1: DUP2
000016d2: DUP2
000016d3: MSTORE
000016d4: PUSH1 0x0f
000016d6: PUSH1 0x20
000016d8: MSTORE
000016d9: PUSH1 0x40
000016db: SWAP1
000016dc: KECCAK256
000016dd: SWAP2
000016de: SWAP1
000016df: SWAP2
000016e0: SSTORE
000016e1: PUSH1 0x03
000016e3: SLOAD
000016e4: PUSH2 0x16f9
000016e7: SWAP2
000016e8: PUSH1 0x01
000016ea: PUSH1 0x01
000016ec: PUSH1 0xa0
000016ee: SHL
000016ef: SUB
000016f0: SWAP1
000016f1: SWAP2
000016f2: AND
000016f3: SWAP1
000016f4: DUP5
000016f5: PUSH2 0x1737
000016f8: JUMP
000016f9: JUMPDEST
000016fa: PUSH1 0x40
000016fc: DUP1
000016fd: MLOAD
000016fe: DUP4
000016ff: DUP2
00001700: MSTORE
00001701: SWAP1
00001702: MLOAD
00001703: CALLER
00001704: SWAP2
00001705: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5
00001726: SWAP2
00001727: SWAP1
00001728: DUP2
00001729: SWAP1
0000172a: SUB
0000172b: PUSH1 0x20
0000172d: ADD
0000172e: SWAP1
0000172f: LOG2
00001730: POP
00001731: POP
00001732: PUSH1 0x01
00001734: DUP1
00001735: SSTORE
00001736: JUMP
00001737: JUMPDEST
00001738: PUSH1 0x40
0000173a: DUP1
0000173b: MLOAD
0000173c: PUSH1 0x01
0000173e: PUSH1 0x01
00001740: PUSH1 0xa0
00001742: SHL
00001743: SUB
00001744: DUP5
00001745: AND
00001746: PUSH1 0x24
00001748: DUP3
00001749: ADD
0000174a: MSTORE
0000174b: PUSH1 0x44
0000174d: DUP1
0000174e: DUP3
0000174f: ADD
00001750: DUP5
00001751: SWAP1
00001752: MSTORE
00001753: DUP3
00001754: MLOAD
00001755: DUP1
00001756: DUP4
00001757: SUB
00001758: SWAP1
00001759: SWAP2
0000175a: ADD
0000175b: DUP2
0000175c: MSTORE
0000175d: PUSH1 0x64
0000175f: SWAP1
00001760: SWAP2
00001761: ADD
00001762: SWAP1
00001763: SWAP2
00001764: MSTORE
00001765: PUSH1 0x20
00001767: DUP2
00001768: ADD
00001769: DUP1
0000176a: MLOAD
0000176b: PUSH1 0x01
0000176d: PUSH1 0x01
0000176f: PUSH1 0xe0
00001771: SHL
00001772: SUB
00001773: AND
00001774: PUSH4 0xa9059cbb
00001779: PUSH1 0xe0
0000177b: SHL
0000177c: OR
0000177d: SWAP1
0000177e: MSTORE
0000177f: PUSH2 0x1789
00001782: SWAP1
00001783: DUP5
00001784: SWAP1
00001785: PUSH2 0x1a43
00001788: JUMP
00001789: JUMPDEST
0000178a: POP
0000178b: POP
0000178c: POP
0000178d: JUMP
0000178e: JUMPDEST
0000178f: PUSH1 0x12
00001791: SLOAD
00001792: PUSH1 0xff
00001794: AND
00001795: PUSH2 0x17dc
00001798: JUMPI
00001799: PUSH1 0x40
0000179b: DUP1
0000179c: MLOAD
0000179d: PUSH3 0x461bcd
000017a1: PUSH1 0xe5
000017a3: SHL
000017a4: DUP2
000017a5: MSTORE
000017a6: PUSH1 0x20
000017a8: PUSH1 0x04
000017aa: DUP3
000017ab: ADD
000017ac: MSTORE
000017ad: PUSH1 0x14
000017af: PUSH1 0x24
000017b1: DUP3
000017b2: ADD
000017b3: MSTORE
000017b4: PUSH20 0x14185d5cd8589b194e881b9bdd081c185d5cd959
000017c9: PUSH1 0x62
000017cb: SHL
000017cc: PUSH1 0x44
000017ce: DUP3
000017cf: ADD
000017d0: MSTORE
000017d1: SWAP1
000017d2: MLOAD
000017d3: SWAP1
000017d4: DUP2
000017d5: SWAP1
000017d6: SUB
000017d7: PUSH1 0x64
000017d9: ADD
000017da: SWAP1
000017db: REVERT
000017dc: JUMPDEST
000017dd: PUSH1 0x12
000017df: DUP1
000017e0: SLOAD
000017e1: PUSH1 0xff
000017e3: NOT
000017e4: AND
000017e5: SWAP1
000017e6: SSTORE
000017e7: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
00001808: PUSH2 0x180f
0000180b: PUSH2 0x1af4
0000180e: JUMP
0000180f: JUMPDEST
00001810: PUSH1 0x40
00001812: DUP1
00001813: MLOAD
00001814: PUSH1 0x01
00001816: PUSH1 0x01
00001818: PUSH1 0xa0
0000181a: SHL
0000181b: SUB
0000181c: SWAP1
0000181d: SWAP3
0000181e: AND
0000181f: DUP3
00001820: MSTORE
00001821: MLOAD
00001822: SWAP1
00001823: DUP2
00001824: SWAP1
00001825: SUB
00001826: PUSH1 0x20
00001828: ADD
00001829: SWAP1
0000182a: LOG1
0000182b: JUMP
0000182c: JUMPDEST
0000182d: PUSH1 0x00
0000182f: DUP2
00001830: DUP4
00001831: LT
00001832: PUSH2 0x183b
00001835: JUMPI
00001836: DUP2
00001837: PUSH2 0x14bf
0000183a: JUMP
0000183b: JUMPDEST
0000183c: POP
0000183d: SWAP1
0000183e: SWAP2
0000183f: SWAP1
00001840: POP
00001841: JUMP
00001842: JUMPDEST
00001843: PUSH1 0x12
00001845: SLOAD
00001846: PUSH1 0xff
00001848: AND
00001849: ISZERO
0000184a: PUSH2 0x188d
0000184d: JUMPI
0000184e: PUSH1 0x40
00001850: DUP1
00001851: MLOAD
00001852: PUSH3 0x461bcd
00001856: PUSH1 0xe5
00001858: SHL
00001859: DUP2
0000185a: MSTORE
0000185b: PUSH1 0x20
0000185d: PUSH1 0x04
0000185f: DUP3
00001860: ADD
00001861: MSTORE
00001862: PUSH1 0x10
00001864: PUSH1 0x24
00001866: DUP3
00001867: ADD
00001868: MSTORE
00001869: PUSH16 0x14185d5cd8589b194e881c185d5cd959
0000187a: PUSH1 0x82
0000187c: SHL
0000187d: PUSH1 0x44
0000187f: DUP3
00001880: ADD
00001881: MSTORE
00001882: SWAP1
00001883: MLOAD
00001884: SWAP1
00001885: DUP2
00001886: SWAP1
00001887: SUB
00001888: PUSH1 0x64
0000188a: ADD
0000188b: SWAP1
0000188c: REVERT
0000188d: JUMPDEST
0000188e: PUSH1 0x12
00001890: DUP1
00001891: SLOAD
00001892: PUSH1 0xff
00001894: NOT
00001895: AND
00001896: PUSH1 0x01
00001898: OR
00001899: SWAP1
0000189a: SSTORE
0000189b: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
000018bc: PUSH2 0x180f
000018bf: PUSH2 0x1af4
000018c2: JUMP
000018c3: JUMPDEST
000018c4: PUSH1 0x40
000018c6: DUP1
000018c7: MLOAD
000018c8: PUSH1 0x01
000018ca: PUSH1 0x01
000018cc: PUSH1 0xa0
000018ce: SHL
000018cf: SUB
000018d0: DUP1
000018d1: DUP7
000018d2: AND
000018d3: PUSH1 0x24
000018d5: DUP4
000018d6: ADD
000018d7: MSTORE
000018d8: DUP5
000018d9: AND
000018da: PUSH1 0x44
000018dc: DUP3
000018dd: ADD
000018de: MSTORE
000018df: PUSH1 0x64
000018e1: DUP1
000018e2: DUP3
000018e3: ADD
000018e4: DUP5
000018e5: SWAP1
000018e6: MSTORE
000018e7: DUP3
000018e8: MLOAD
000018e9: DUP1
000018ea: DUP4
000018eb: SUB
000018ec: SWAP1
000018ed: SWAP2
000018ee: ADD
000018ef: DUP2
000018f0: MSTORE
000018f1: PUSH1 0x84
000018f3: SWAP1
000018f4: SWAP2
000018f5: ADD
000018f6: SWAP1
000018f7: SWAP2
000018f8: MSTORE
000018f9: PUSH1 0x20
000018fb: DUP2
000018fc: ADD
000018fd: DUP1
000018fe: MLOAD
000018ff: PUSH1 0x01
00001901: PUSH1 0x01
00001903: PUSH1 0xe0
00001905: SHL
00001906: SUB
00001907: AND
00001908: PUSH4 0x23b872dd
0000190d: PUSH1 0xe0
0000190f: SHL
00001910: OR
00001911: SWAP1
00001912: MSTORE
00001913: PUSH2 0x191d
00001916: SWAP1
00001917: DUP6
00001918: SWAP1
00001919: PUSH2 0x1a43
0000191c: JUMP
0000191d: JUMPDEST
0000191e: POP
0000191f: POP
00001920: POP
00001921: POP
00001922: JUMP
00001923: JUMPDEST
00001924: PUSH1 0x00
00001926: PUSH8 0x0de0b6b3a7640000
0000192f: PUSH2 0x1938
00001932: DUP5
00001933: DUP5
00001934: PUSH2 0x14c6
00001937: JUMP
00001938: JUMPDEST
00001939: DUP2
0000193a: PUSH2 0x193f
0000193d: JUMPI
0000193e: INVALID
0000193f: JUMPDEST
00001940: DIV
00001941: SWAP4
00001942: SWAP3
00001943: POP
00001944: POP
00001945: POP
00001946: JUMP
00001947: JUMPDEST
00001948: PUSH1 0x00
0000194a: DUP2
0000194b: DUP4
0000194c: PUSH2 0x19d3
0000194f: JUMPI
00001950: PUSH1 0x40
00001952: MLOAD
00001953: PUSH3 0x461bcd
00001957: PUSH1 0xe5
00001959: SHL
0000195a: DUP2
0000195b: MSTORE
0000195c: PUSH1 0x04
0000195e: ADD
0000195f: DUP1
00001960: DUP1
00001961: PUSH1 0x20
00001963: ADD
00001964: DUP3
00001965: DUP2
00001966: SUB
00001967: DUP3
00001968: MSTORE
00001969: DUP4
0000196a: DUP2
0000196b: DUP2
0000196c: MLOAD
0000196d: DUP2
0000196e: MSTORE
0000196f: PUSH1 0x20
00001971: ADD
00001972: SWAP2
00001973: POP
00001974: DUP1
00001975: MLOAD
00001976: SWAP1
00001977: PUSH1 0x20
00001979: ADD
0000197a: SWAP1
0000197b: DUP1
0000197c: DUP4
0000197d: DUP4
0000197e: PUSH1 0x00
00001980: JUMPDEST
00001981: DUP4
00001982: DUP2
00001983: LT
00001984: ISZERO
00001985: PUSH2 0x1998
00001988: JUMPI
00001989: DUP2
0000198a: DUP2
0000198b: ADD
0000198c: MLOAD
0000198d: DUP4
0000198e: DUP3
0000198f: ADD
00001990: MSTORE
00001991: PUSH1 0x20
00001993: ADD
00001994: PUSH2 0x1980
00001997: JUMP
00001998: JUMPDEST
00001999: POP
0000199a: POP
0000199b: POP
0000199c: POP
0000199d: SWAP1
0000199e: POP
0000199f: SWAP1
000019a0: DUP2
000019a1: ADD
000019a2: SWAP1
000019a3: PUSH1 0x1f
000019a5: AND
000019a6: DUP1
000019a7: ISZERO
000019a8: PUSH2 0x19c5
000019ab: JUMPI
000019ac: DUP1
000019ad: DUP3
000019ae: SUB
000019af: DUP1
000019b0: MLOAD
000019b1: PUSH1 0x01
000019b3: DUP4
000019b4: PUSH1 0x20
000019b6: SUB
000019b7: PUSH2 0x0100
000019ba: EXP
000019bb: SUB
000019bc: NOT
000019bd: AND
000019be: DUP2
000019bf: MSTORE
000019c0: PUSH1 0x20
000019c2: ADD
000019c3: SWAP2
000019c4: POP
000019c5: JUMPDEST
000019c6: POP
000019c7: SWAP3
000019c8: POP
000019c9: POP
000019ca: POP
000019cb: PUSH1 0x40
000019cd: MLOAD
000019ce: DUP1
000019cf: SWAP2
000019d0: SUB
000019d1: SWAP1
000019d2: REVERT
000019d3: JUMPDEST
000019d4: POP
000019d5: PUSH1 0x00
000019d7: DUP4
000019d8: DUP6
000019d9: DUP2
000019da: PUSH2 0x19df
000019dd: JUMPI
000019de: INVALID
000019df: JUMPDEST
000019e0: DIV
000019e1: SWAP6
000019e2: SWAP5
000019e3: POP
000019e4: POP
000019e5: POP
000019e6: POP
000019e7: POP
000019e8: JUMP
000019e9: JUMPDEST
000019ea: PUSH1 0x00
000019ec: DUP2
000019ed: DUP5
000019ee: DUP5
000019ef: GT
000019f0: ISZERO
000019f1: PUSH2 0x1a3b
000019f4: JUMPI
000019f5: PUSH1 0x40
000019f7: MLOAD
000019f8: PUSH3 0x461bcd
000019fc: PUSH1 0xe5
000019fe: SHL
000019ff: DUP2
00001a00: MSTORE
00001a01: PUSH1 0x20
00001a03: PUSH1 0x04
00001a05: DUP3
00001a06: ADD
00001a07: DUP2
00001a08: DUP2
00001a09: MSTORE
00001a0a: DUP4
00001a0b: MLOAD
00001a0c: PUSH1 0x24
00001a0e: DUP5
00001a0f: ADD
00001a10: MSTORE
00001a11: DUP4
00001a12: MLOAD
00001a13: SWAP1
00001a14: SWAP3
00001a15: DUP4
00001a16: SWAP3
00001a17: PUSH1 0x44
00001a19: SWAP1
00001a1a: SWAP2
00001a1b: ADD
00001a1c: SWAP2
00001a1d: SWAP1
00001a1e: DUP6
00001a1f: ADD
00001a20: SWAP1
00001a21: DUP1
00001a22: DUP4
00001a23: DUP4
00001a24: PUSH1 0x00
00001a26: DUP4
00001a27: ISZERO
00001a28: PUSH2 0x1998
00001a2b: JUMPI
00001a2c: DUP2
00001a2d: DUP2
00001a2e: ADD
00001a2f: MLOAD
00001a30: DUP4
00001a31: DUP3
00001a32: ADD
00001a33: MSTORE
00001a34: PUSH1 0x20
00001a36: ADD
00001a37: PUSH2 0x1980
00001a3a: JUMP
00001a3b: JUMPDEST
00001a3c: POP
00001a3d: POP
00001a3e: POP
00001a3f: SWAP1
00001a40: SUB
00001a41: SWAP1
00001a42: JUMP
00001a43: JUMPDEST
00001a44: PUSH1 0x60
00001a46: PUSH2 0x1a98
00001a49: DUP3
00001a4a: PUSH1 0x40
00001a4c: MLOAD
00001a4d: DUP1
00001a4e: PUSH1 0x40
00001a50: ADD
00001a51: PUSH1 0x40
00001a53: MSTORE
00001a54: DUP1
00001a55: PUSH1 0x20
00001a57: DUP2
00001a58: MSTORE
00001a59: PUSH1 0x20
00001a5b: ADD
00001a5c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001a7d: DUP2
00001a7e: MSTORE
00001a7f: POP
00001a80: DUP6
00001a81: PUSH1 0x01
00001a83: PUSH1 0x01
00001a85: PUSH1 0xa0
00001a87: SHL
00001a88: SUB
00001a89: AND
00001a8a: PUSH2 0x1af8
00001a8d: SWAP1
00001a8e: SWAP3
00001a8f: SWAP2
00001a90: SWAP1
00001a91: PUSH4 0xffffffff
00001a96: AND
00001a97: JUMP
00001a98: JUMPDEST
00001a99: DUP1
00001a9a: MLOAD
00001a9b: SWAP1
00001a9c: SWAP2
00001a9d: POP
00001a9e: ISZERO
00001a9f: PUSH2 0x1789
00001aa2: JUMPI
00001aa3: DUP1
00001aa4: DUP1
00001aa5: PUSH1 0x20
00001aa7: ADD
00001aa8: SWAP1
00001aa9: MLOAD
00001aaa: PUSH1 0x20
00001aac: DUP2
00001aad: LT
00001aae: ISZERO
00001aaf: PUSH2 0x1ab7
00001ab2: JUMPI
00001ab3: PUSH1 0x00
00001ab5: DUP1
00001ab6: REVERT
00001ab7: JUMPDEST
00001ab8: POP
00001ab9: MLOAD
00001aba: PUSH2 0x1789
00001abd: JUMPI
00001abe: PUSH1 0x40
00001ac0: MLOAD
00001ac1: PUSH3 0x461bcd
00001ac5: PUSH1 0xe5
00001ac7: SHL
00001ac8: DUP2
00001ac9: MSTORE
00001aca: PUSH1 0x04
00001acc: ADD
00001acd: DUP1
00001ace: DUP1
00001acf: PUSH1 0x20
00001ad1: ADD
00001ad2: DUP3
00001ad3: DUP2
00001ad4: SUB
00001ad5: DUP3
00001ad6: MSTORE
00001ad7: PUSH1 0x2a
00001ad9: DUP2
00001ada: MSTORE
00001adb: PUSH1 0x20
00001add: ADD
00001ade: DUP1
00001adf: PUSH2 0x1d6d
00001ae2: PUSH1 0x2a
00001ae4: SWAP2
00001ae5: CODECOPY
00001ae6: PUSH1 0x40
00001ae8: ADD
00001ae9: SWAP2
00001aea: POP
00001aeb: POP
00001aec: PUSH1 0x40
00001aee: MLOAD
00001aef: DUP1
00001af0: SWAP2
00001af1: SUB
00001af2: SWAP1
00001af3: REVERT
00001af4: JUMPDEST
00001af5: CALLER
00001af6: SWAP1
00001af7: JUMP
00001af8: JUMPDEST
00001af9: PUSH1 0x60
00001afb: PUSH2 0x1b07
00001afe: DUP5
00001aff: DUP5
00001b00: PUSH1 0x00
00001b02: DUP6
00001b03: PUSH2 0x1b0f
00001b06: JUMP
00001b07: JUMPDEST
00001b08: SWAP5
00001b09: SWAP4
00001b0a: POP
00001b0b: POP
00001b0c: POP
00001b0d: POP
00001b0e: JUMP
00001b0f: JUMPDEST
00001b10: PUSH1 0x60
00001b12: PUSH2 0x1b1a
00001b15: DUP6
00001b16: PUSH2 0x1c7c
00001b19: JUMP
00001b1a: JUMPDEST
00001b1b: PUSH2 0x1b6b
00001b1e: JUMPI
00001b1f: PUSH1 0x40
00001b21: DUP1
00001b22: MLOAD
00001b23: PUSH3 0x461bcd
00001b27: PUSH1 0xe5
00001b29: SHL
00001b2a: DUP2
00001b2b: MSTORE
00001b2c: PUSH1 0x20
00001b2e: PUSH1 0x04
00001b30: DUP3
00001b31: ADD
00001b32: MSTORE
00001b33: PUSH1 0x1d
00001b35: PUSH1 0x24
00001b37: DUP3
00001b38: ADD
00001b39: MSTORE
00001b3a: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001b5b: PUSH1 0x44
00001b5d: DUP3
00001b5e: ADD
00001b5f: MSTORE
00001b60: SWAP1
00001b61: MLOAD
00001b62: SWAP1
00001b63: DUP2
00001b64: SWAP1
00001b65: SUB
00001b66: PUSH1 0x64
00001b68: ADD
00001b69: SWAP1
00001b6a: REVERT
00001b6b: JUMPDEST
00001b6c: PUSH1 0x00
00001b6e: PUSH1 0x60
00001b70: DUP7
00001b71: PUSH1 0x01
00001b73: PUSH1 0x01
00001b75: PUSH1 0xa0
00001b77: SHL
00001b78: SUB
00001b79: AND
00001b7a: DUP6
00001b7b: DUP8
00001b7c: PUSH1 0x40
00001b7e: MLOAD
00001b7f: DUP1
00001b80: DUP3
00001b81: DUP1
00001b82: MLOAD
00001b83: SWAP1
00001b84: PUSH1 0x20
00001b86: ADD
00001b87: SWAP1
00001b88: DUP1
00001b89: DUP4
00001b8a: DUP4
00001b8b: JUMPDEST
00001b8c: PUSH1 0x20
00001b8e: DUP4
00001b8f: LT
00001b90: PUSH2 0x1baa
00001b93: JUMPI
00001b94: DUP1
00001b95: MLOAD
00001b96: DUP3
00001b97: MSTORE
00001b98: PUSH1 0x1f
00001b9a: NOT
00001b9b: SWAP1
00001b9c: SWAP3
00001b9d: ADD
00001b9e: SWAP2
00001b9f: PUSH1 0x20
00001ba1: SWAP2
00001ba2: DUP3
00001ba3: ADD
00001ba4: SWAP2
00001ba5: ADD
00001ba6: PUSH2 0x1b8b
00001ba9: JUMP
00001baa: JUMPDEST
00001bab: PUSH1 0x01
00001bad: DUP4
00001bae: PUSH1 0x20
00001bb0: SUB
00001bb1: PUSH2 0x0100
00001bb4: EXP
00001bb5: SUB
00001bb6: DUP1
00001bb7: NOT
00001bb8: DUP3
00001bb9: MLOAD
00001bba: AND
00001bbb: DUP2
00001bbc: DUP5
00001bbd: MLOAD
00001bbe: AND
00001bbf: DUP1
00001bc0: DUP3
00001bc1: OR
00001bc2: DUP6
00001bc3: MSTORE
00001bc4: POP
00001bc5: POP
00001bc6: POP
00001bc7: POP
00001bc8: POP
00001bc9: POP
00001bca: SWAP1
00001bcb: POP
00001bcc: ADD
00001bcd: SWAP2
00001bce: POP
00001bcf: POP
00001bd0: PUSH1 0x00
00001bd2: PUSH1 0x40
00001bd4: MLOAD
00001bd5: DUP1
00001bd6: DUP4
00001bd7: SUB
00001bd8: DUP2
00001bd9: DUP6
00001bda: DUP8
00001bdb: GAS
00001bdc: CALL
00001bdd: SWAP3
00001bde: POP
00001bdf: POP
00001be0: POP
00001be1: RETURNDATASIZE
00001be2: DUP1
00001be3: PUSH1 0x00
00001be5: DUP2
00001be6: EQ
00001be7: PUSH2 0x1c0c
00001bea: JUMPI
00001beb: PUSH1 0x40
00001bed: MLOAD
00001bee: SWAP2
00001bef: POP
00001bf0: PUSH1 0x1f
00001bf2: NOT
00001bf3: PUSH1 0x3f
00001bf5: RETURNDATASIZE
00001bf6: ADD
00001bf7: AND
00001bf8: DUP3
00001bf9: ADD
00001bfa: PUSH1 0x40
00001bfc: MSTORE
00001bfd: RETURNDATASIZE
00001bfe: DUP3
00001bff: MSTORE
00001c00: RETURNDATASIZE
00001c01: PUSH1 0x00
00001c03: PUSH1 0x20
00001c05: DUP5
00001c06: ADD
00001c07: RETURNDATACOPY
00001c08: PUSH2 0x1c11
00001c0b: JUMP
00001c0c: JUMPDEST
00001c0d: PUSH1 0x60
00001c0f: SWAP2
00001c10: POP
00001c11: JUMPDEST
00001c12: POP
00001c13: SWAP2
00001c14: POP
00001c15: SWAP2
00001c16: POP
00001c17: DUP2
00001c18: ISZERO
00001c19: PUSH2 0x1c25
00001c1c: JUMPI
00001c1d: SWAP2
00001c1e: POP
00001c1f: PUSH2 0x1b07
00001c22: SWAP1
00001c23: POP
00001c24: JUMP
00001c25: JUMPDEST
00001c26: DUP1
00001c27: MLOAD
00001c28: ISZERO
00001c29: PUSH2 0x1c35
00001c2c: JUMPI
00001c2d: DUP1
00001c2e: MLOAD
00001c2f: DUP1
00001c30: DUP3
00001c31: PUSH1 0x20
00001c33: ADD
00001c34: REVERT
00001c35: JUMPDEST
00001c36: PUSH1 0x40
00001c38: MLOAD
00001c39: PUSH3 0x461bcd
00001c3d: PUSH1 0xe5
00001c3f: SHL
00001c40: DUP2
00001c41: MSTORE
00001c42: PUSH1 0x20
00001c44: PUSH1 0x04
00001c46: DUP3
00001c47: ADD
00001c48: DUP2
00001c49: DUP2
00001c4a: MSTORE
00001c4b: DUP7
00001c4c: MLOAD
00001c4d: PUSH1 0x24
00001c4f: DUP5
00001c50: ADD
00001c51: MSTORE
00001c52: DUP7
00001c53: MLOAD
00001c54: DUP8
00001c55: SWAP4
00001c56: SWAP2
00001c57: SWAP3
00001c58: DUP4
00001c59: SWAP3
00001c5a: PUSH1 0x44
00001c5c: ADD
00001c5d: SWAP2
00001c5e: SWAP1
00001c5f: DUP6
00001c60: ADD
00001c61: SWAP1
00001c62: DUP1
00001c63: DUP4
00001c64: DUP4
00001c65: PUSH1 0x00
00001c67: DUP4
00001c68: ISZERO
00001c69: PUSH2 0x1998
00001c6c: JUMPI
00001c6d: DUP2
00001c6e: DUP2
00001c6f: ADD
00001c70: MLOAD
00001c71: DUP4
00001c72: DUP3
00001c73: ADD
00001c74: MSTORE
00001c75: PUSH1 0x20
00001c77: ADD
00001c78: PUSH2 0x1980
00001c7b: JUMP
00001c7c: JUMPDEST
00001c7d: PUSH1 0x00
00001c7f: DUP2
00001c80: EXTCODEHASH
00001c81: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
00001ca2: DUP2
00001ca3: DUP2
00001ca4: EQ
00001ca5: DUP1
00001ca6: ISZERO
00001ca7: SWAP1
00001ca8: PUSH2 0x1b07
00001cab: JUMPI
00001cac: POP
00001cad: POP
00001cae: ISZERO
00001caf: ISZERO
00001cb0: SWAP3
00001cb1: SWAP2
00001cb2: POP
00001cb3: POP
00001cb4: JUMP
00001cb5: INVALID
00001cb6: MSTORE
00001cb7: PUSH6 0x656e7472616e
00001cbe: PUSH4 0x79477561
00001cc3: PUSH19 0x643a207265656e7472616e742063616c6c0053
00001cd7: PUSH2 0x7465
00001cda: PUSH13 0x6c697465506f6f6c3a2063616c
00001ce8: PUSH13 0x6572206973206e6f7420746865
00001cf6: KECCAK256
00001cf7: PUSH16 0x776e65724f776e61626c653a206e6577
00001d08: KECCAK256
00001d09: PUSH16 0x776e657220697320746865207a65726f
00001d1a: KECCAK256
00001d1b: PUSH2 0x6464
00001d1e: PUSH19 0x657373536166654d6174683a206d756c746970
00001d32: PUSH13 0x69636174696f6e206f76657266
00001d40: PUSH13 0x6f7743616c6c6572206973206e
00001d4e: PUSH16 0x74205265776172647344697374726962
00001d5f: PUSH22 0x74696f6e20636f6e7472616374536166654552433230
00001d76: GASPRICE
00001d77: KECCAK256
00001d78: GASLIMIT
00001d79: MSTORE
00001d7a: NUMBER
00001d7b: ORIGIN
00001d7c: ADDRESS
00001d7d: KECCAK256
00001d7e: PUSH16 0x7065726174696f6e20646964206e6f74
00001d8f: KECCAK256
00001d90: PUSH20 0x756363656564a2646970667358221220eb5aa248
00001da5: UNKNOWN(0xE2)
00001da6: SWAP16
00001da7: PUSH17 0xf08c78a10ae2b1036078b55bfc3926afbd
00001db9: EQ
00001dba: PUSH10 0x7aa85079fe9164736f6c
00001dc5: PUSH4 0x4300060c
00001dca: STOP
00001dcb: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other codex Liquidation drains entire pool and leaves staking accounting unchanged 85 no
view
evidence_json
{
    "evidence": "`liquidate` transfers the entire pool balance and does not modify staking accounting state.",
    "locations": [
        "contracts/Contract.sol:1156",
        "contracts/Contract.sol:1157",
        "contracts/Contract.sol:1158"
    ],
    "recommendation": "Limit liquidation transfers to the target account\u2019s staked amount and update `_balances` and `_totalSupply` accordingly. If full-pool liquidation is intended, explicitly zero `_totalSupply`, clear affected balances, and halt rewards to prevent continued accrual against an empty pool.",
    "exploit_scenario": "If the liquidation address (or a liquidation contract callable by users) calls `liquidate(account)`, the function transfers the entire staking token balance to the provided `account`, regardless of that account\u2019s stake. Internal `_totalSupply` and `_balances` are never updated, so stakers can continue accruing rewards without collateral and withdrawals may revert due to insufficient pool balance. A malicious or compromised liquidation address can drain all staked funds while rewards continue to accrue to stale balances."
}
high reentrancy slither Reentrancy in StakingRewardsLock.exit() (contracts/Contract.sol#712-714): 85 no
view
evidence_json
{
    "impact": "High",
    "detector": "reentrancy-eth",
    "elements": [
        {
            "name": "exit",
            "type": "function",
            "source_mapping": {
                "lines": [
                    712,
                    713,
                    714
                ],
                "start": 27353,
                "length": 103,
                "ending_column": 96,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 2,
                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "StakingRewardsLock",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            584,
                            585,
                            586,
                            587,
                            588,
                            589,
                            590,
                            591,
                            592,
                            593,
                            594,
                            595,
                            596,
                            597,
                            598,
                            599,
                            600,
                            601,
                            602,
                            603,
                            604,
                            605,
                            606,
                            607,
                            608,
                            609,
                            610,
                            611,
                            612,
                            613,
                            614,
                            615,
                            616,
                            617,
                            618,
                            619,
                            620,
                            621,
                            622,
                            623,
                            624,
                            625,
                            626,
                            627,
                            628,
                            629,
                            630,
                            631,
                            632,
                            633,
                            634,
                            635,
                            636,
                            637,
                            638,
                            639,
                            640,
                            641,
                            642,
                            643,
                            644,
                            645,
                            646,
                            647,
                            648,
                            649,
                            650,
                            651,
                            652,
                            653,
                            654,
                            655,
                            656,
                            657,
                            658,
                            659,
                            660,
                            661,
                            662,
                            663,
                            664,
                            665,
                            666,
                            667,
                            668,
                            669,
                            670,
                            671,
                            672,
                            673,
                            674,
                            675,
                            676,
                            677,
                            678,
                            679,
                            680,
                            681,
                            682,
                            683,
                            684,
                            685,
                            686,
                            687,
                            688,
                            689,
                            690,
                            691,
                            692,
                            693,
                            694,
                            695,
                            696,
                            697,
                            698,
                            699,
                            700,
                            701,
                            702,
                            703,
                            704,
                            705,
                            706,
                            707,
                            708,
                            709,
                            710,
                            711,
                            712,
                            713,
                            714,
                            715,
                            716,
                            717,
                            718,
                            719,
                            720,
                            721,
                            722,
                            723,
                            724,
                            725,
                            726,
                            727,
                            728,
                            729,
                            730,
                            731,
                            732,
                            733,
                            734,
                            735,
                            736,
                            737,
                            738,
                            739,
                            740,
                            741,
                            742,
                            743,
                            744,
                            745,
                            746,
                            747,
                            748,
                            749,
                            750,
                            751,
                            752,
                            753,
                            754,
                            755,
                            756,
                            757
                        ],
                        "start": 22403,
                        "length": 6963,
                        "ending_column": 9,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 58,
                        "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    }
                },
                "signature": "exit()"
            }
        },
        {
            "name": "withdraw(_balances[msg.sender])",
            "type": "node",
            "source_mapping": {
                "lines": [
                    714
                ],
                "start": 27397,
                "length": 31,
                "ending_column": 68,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 37,
                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "exit",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            712,
                            713,
                            714
                        ],
                        "start": 27353,
                        "length": 103,
                        "ending_column": 96,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 2,
                        "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "StakingRewardsLock",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    584,
                                    585,
                                    586,
                                    587,
                                    588,
                                    589,
                                    590,
                                    591,
                                    592,
                                    593,
                                    594,
                                    595,
                                    596,
                                    597,
                                    598,
                                    599,
                                    600,
                                    601,
                                    602,
                                    603,
                                    604,
                                    605,
                                    606,
                                    607,
                                    608,
                                    609,
                                    610,
                                    611,
                                    612,
                                    613,
                                    614,
                                    615,
                                    616,
                                    617,
                                    618,
                                    619,
                                    620,
                                    621,
                                    622,
                                    623,
                                    624,
                                    625,
                                    626,
                                    627,
                                    628,
                                    629,
                                    630,
                                    631,
                                    632,
                                    633,
                                    634,
                                    635,
                                    636,
                                    637,
                                    638,
                                    639,
                                    640,
                                    641,
                                    642,
                                    643,
                                    644,
                                    645,
                                    646,
                                    647,
                                    648,
                                    649,
                                    650,
                                    651,
                                    652,
                                    653,
                                    654,
                                    655,
                                    656,
                                    657,
                                    658,
                                    659,
                                    660,
                                    661,
                                    662,
                                    663,
                                    664,
                                    665,
                                    666,
                                    667,
                                    668,
                                    669,
                                    670,
                                    671,
                                    672,
                                    673,
                                    674,
                                    675,
                                    676,
                                    677,
                                    678,
                                    679,
                                    680,
                                    681,
                                    682,
                                    683,
                                    684,
                                    685,
                                    686,
                                    687,
                                    688,
                                    689,
                                    690,
                                    691,
                                    692,
                                    693,
                                    694,
                                    695,
                                    696,
                                    697,
                                    698,
                                    699,
                                    700,
                                    701,
                                    702,
                                    703,
                                    704,
                                    705,
                                    706,
                                    707,
                                    708,
                                    709,
                                    710,
                                    711,
                                    712,
                                    713,
                                    714,
                                    715,
                                    716,
                                    717,
                                    718,
                                    719,
                                    720,
                                    721,
                                    722,
                                    723,
                                    724,
                                    725,
                                    726,
                                    727,
                                    728,
                                    729,
                                    730,
                                    731,
                                    732,
                                    733,
                                    734,
                                    735,
                                    736,
                                    737,
                                    738,
                                    739,
                                    740,
                                    741,
                                    742,
                                    743,
                                    744,
                                    745,
                                    746,
                                    747,
                                    748,
                                    749,
                                    750,
                                    751,
                                    752,
                                    753,
                                    754,
                                    755,
                                    756,
                                    757
                                ],
                                "start": 22403,
                                "length": 6963,
                                "ending_column": 9,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 58,
                                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "exit()"
                    }
                }
            }
        },
        {
            "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    578,
                    579,
                    580
                ],
                "start": 21993,
                "length": 95,
                "ending_column": 32,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 97,
                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "_callOptionalReturn",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            572,
                            573,
                            574,
                            575,
                            576,
                            577,
                            578,
                            579,
                            580,
                            581,
                            582,
                            583
                        ],
                        "start": 21574,
                        "length": 751,
                        "ending_column": 98,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 53,
                        "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "SafeERC20",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    522,
                                    523,
                                    524,
                                    525,
                                    526,
                                    527,
                                    528,
                                    529,
                                    530,
                                    531,
                                    532,
                                    533,
                                    534,
                                    535,
                                    536,
                                    537,
                                    538,
                                    539,
                                    540,
                                    541,
                                    542,
                                    543,
                                    544,
                                    545,
                                    546,
                                    547,
                                    548,
                                    549,
                                    550,
                                    551,
                                    552,
                                    553,
                                    554,
                                    555,
                                    556,
                                    557,
                                    558,
                                    559,
                                    560,
                                    561,
                                    562,
                                    563,
                                    564,
                                    565,
                                    566,
                                    567,
                                    568,
                                    569,
                                    570,
                                    571,
                                    572,
                                    573,
                                    574,
                                    575,
                                    576,
                                    577,
                                    578,
                                    579,
                                    580,
                                    581,
                                    582,
                                    583
                                ],
                                "start": 19223,
                                "length": 3104,
                                "ending_column": 100,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 24,
                                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "_callOptionalReturn(IERC20,bytes)"
                    }
                }
            }
        },
        {
            "name": "(success,returndata) = target.call{value: weiValue}(data)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    493,
                    494
                ],
                "start": 18001,
                "length": 78,
                "ending_column": 46,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 116,
                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "_functionCallWithValue",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            488,
                            489,
                            490,
                            491,
                            492,
                            493,
                            494,
                            495,
                            496,
                            497,
                            498,
                            499,
                            500,
                            501,
                            502,
                            503,
                            504,
                            505,
                            506
                        ],
                        "start": 17717,
                        "length": 958,
                        "ending_column": 19,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 71,
                        "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Address",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    373,
                                    374,
                                    375,
                                    376,
                                    377,
                                    378,
                                    379,
                                    380,
                                    381,
                                    382,
                                    383,
                                    384,
                                    385,
                                    386,
                                    387,
                                    388,
                                    389,
                                    390,
                                    391,
                                    392,
                                    393,
                                    394,
                                    395,
                                    396,
                                    397,
                                    398,
                                    399,
                                    400,
                                    401,
                                    402,
                                    403,
                                    404,
                                    405,
                                    406,
                                    407,
                                    408,
                                    409,
                                    410,
                                    411,
                                    412,
                                    413,
                                    414,
                                    415,
                                    416,
                                    417,
                                    418,
                                    419,
                                    420,
                                    421,
                                    422,
                                    423,
                                    424,
                                    425,
                                    426,
                                    427,
                                    428,
                                    429,
                                    430,
                                    431,
                                    432,
                                    433,
                                    434,
                                    435,
                                    436,
                                    437,
                                    438,
                                    439,
                                    440,
                                    441,
                                    442,
                                    443,
                                    444,
                                    445,
                                    446,
                                    447,
                                    448,
                                    449,
                                    450,
                                    451,
                                    452,
                                    453,
                                    454,
                                    455,
                                    456,
                                    457,
                                    458,
                                    459,
                                    460,
                                    461,
                                    462,
                                    463,
                                    464,
                                    465,
                                    466,
                                    467,
                                    468,
                                    469,
                                    470,
                                    471,
                                    472,
                                    473,
                                    474,
                                    475,
                                    476,
                                    477,
                                    478,
                                    479,
                                    480,
                                    481,
                                    482,
                                    483,
                                    484,
                                    485,
                                    486,
                                    487,
                                    488,
                                    489,
                                    490,
                                    491,
                                    492,
                                    493,
                                    494,
                                    495,
                                    496,
                                    497,
                                    498,
                                    499,
                                    500,
                                    501,
                                    502,
                                    503,
                                    504,
                                    505,
                                    506
                                ],
                                "start": 12726,
                                "length": 5951,
                                "ending_column": 21,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 19,
                                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "_functionCallWithValue(address,bytes,uint256,string)"
                    }
                }
            }
        },
        {
            "name": "stakingToken.safeTransfer(msg.sender,amount)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    703,
                    704
                ],
                "start": 26924,
                "length": 45,
                "ending_column": 33,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 82,
                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "withdraw",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            697,
                            698,
                            699,
                            700,
                            701,
                            702,
                            703,
                            704,
                            705
                        ],
                        "start": 26652,
                        "length": 368,
                        "ending_column": 36,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 42,
                        "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "StakingRewardsLock",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    584,
                                    585,
                                    586,
                                    587,
                                    588,
                                    589,
                                    590,
                                    591,
                                    592,
                                    593,
                                    594,
                                    595,
                                    596,
                                    597,
                                    598,
                                    599,
                                    600,
                                    601,
                                    602,
                                    603,
                                    604,
                                    605,
                                    606,
                                    607,
                                    608,
                                    609,
                                    610,
                                    611,
                                    612,
                                    613,
                                    614,
                                    615,
                                    616,
                                    617,
                                    618,
                                    619,
                                    620,
                                    621,
                                    622,
                                    623,
                                    624,
                                    625,
                                    626,
                                    627,
                                    628,
                                    629,
                                    630,
                                    631,
                                    632,
                                    633,
                                    634,
                                    635,
                                    636,
                                    637,
                                    638,
                                    639,
                                    640,
                                    641,
                                    642,
                                    643,
                                    644,
                                    645,
                                    646,
                                    647,
                                    648,
                                    649,
                                    650,
                                    651,
                                    652,
                                    653,
                                    654,
                                    655,
                                    656,
                                    657,
                                    658,
                                    659,
                                    660,
                                    661,
                                    662,
                                    663,
                                    664,
                                    665,
                                    666,
                                    667,
                                    668,
                                    669,
                                    670,
                                    671,
                                    672,
                                    673,
                                    674,
                                    675,
                                    676,
                                    677,
                                    678,
                                    679,
                                    680,
                                    681,
                                    682,
                                    683,
                                    684,
                                    685,
                                    686,
                                    687,
                                    688,
                                    689,
                                    690,
                                    691,
                                    692,
                                    693,
                                    694,
                                    695,
                                    696,
                                    697,
                                    698,
                                    699,
                                    700,
                                    701,
                                    702,
                                    703,
                                    704,
                                    705,
                                    706,
                                    707,
                                    708,
                                    709,
                                    710,
                                    711,
                                    712,
                                    713,
                                    714,
                                    715,
                                    716,
                                    717,
                                    718,
                                    719,
                                    720,
                                    721,
                                    722,
                                    723,
                                    724,
                                    725,
                                    726,
                                    727,
                                    728,
                                    729,
                                    730,
                                    731,
                                    732,
                                    733,
                                    734,
                                    735,
                                    736,
                                    737,
                                    738,
                                    739,
                                    740,
                                    741,
                                    742,
                                    743,
                                    744,
                                    745,
                                    746,
                                    747,
                                    748,
                                    749,
                                    750,
                                    751,
                                    752,
                                    753,
                                    754,
                                    755,
                                    756,
                                    757
                                ],
                                "start": 22403,
                                "length": 6963,
                                "ending_column": 9,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 58,
                                "filename_absolute": "/tmp/slither-8_o7b9is/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "withdraw(uint256)"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/Contract.sol",
            "name": "exit",
            "type": "function",
            "lines": [
                712,
                713,
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "withdraw(_balances[msg.sender])",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)",
            "type": "node",
            "lines": [
                578,
                579,
                580
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = target.call{value: weiValue}(data)",
            "type": "node",
            "lines": [
                493,
                494
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "stakingToken.safeTransfer(msg.sender,amount)",
            "type": "node",
            "lines": [
                703,
                704
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)",
            "type": "node",
            "lines": [
                578,
                579,
                580
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "rewardsToken.safeTransfer(msg.sender,reward)",
            "type": "node",
            "lines": [
                710
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = target.call{value: weiValue}(data)",
            "type": "node",
            "lines": [
                493,
                494
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "withdraw(_balances[msg.sender])",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = target.call{value: weiValue}(data)",
            "type": "node",
            "lines": [
                493,
                494
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = target.call{value: weiValue}(data)",
            "type": "node",
            "lines": [
                493,
                494
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "_status = _ENTERED",
            "type": "node",
            "lines": [
                96
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "_status = _NOT_ENTERED",
            "type": "node",
            "lines": [
                103
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "lastUpdateTime = lastTimeRewardApplicable()",
            "type": "node",
            "lines": [
                748
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "lockRewards[account] = lock",
            "type": "node",
            "lines": [
                750
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "rewardPerTokenStored = rewardPerToken()",
            "type": "node",
            "lines": [
                746,
                747,
                748
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "unlockRewards[msg.sender] = 0",
            "type": "node",
            "lines": [
                709
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "unlockRewards[account] = unlock",
            "type": "node",
            "lines": [
                750
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                714
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "userRewardPerTokenPaid[account] = rewardPerTokenStored",
            "type": "node",
            "lines": [
                751
            ]
        }
    ],
    "description": "Reentrancy in StakingRewardsLock.exit() (contracts/Contract.sol#712-714):\n\tExternal calls:\n\t- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)\n\t\t- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)\n\t\t- stakingToken.safeTransfer(msg.sender,amount) (contracts/Contract.sol#703-704)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (contracts/Contract.sol#578-580)\n\t\t- rewardsToken.safeTransfer(msg.sender,reward) (contracts/Contract.sol#710)\n\t\t- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)\n\tExternal calls sending eth:\n\t- withdraw(_balances[msg.sender]) (contracts/Contract.sol#714)\n\t\t- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#493-494)\n\tState variables written after the call(s):\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- _status = _ENTERED (contracts/Contract.sol#96)\n\t\t- _status = _NOT_ENTERED (contracts/Contract.sol#103)\n\tReentrancyGuard._status (contracts/Contract.sol#78) can be used in cross function reentrancies:\n\t- ReentrancyGuard.nonReentrant() (contracts/Contract.sol#91-103)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#748)\n\tStakingRewardsLock.lastUpdateTime (contracts/Contract.sol#589) can be used in cross function reentrancies:\n\t- StakingRewardsLock.lastUpdateTime (contracts/Contract.sol#589)\n\t- StakingRewardsLock.notifyRewardAmount(uint256,uint256) (contracts/Contract.sol#716-744)\n\t- StakingRewardsLock.rewardPerToken() (contracts/Contract.sol#634-643)\n\t- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- lockRewards[account] = lock (contracts/Contract.sol#750)\n\tStakingRewardsLock.lockRewards (contracts/Contract.sol#597-599) can be used in cross function reentrancies:\n\t- StakingRewardsLock.earned(address) (contracts/Contract.sol#644-661)\n\t- StakingRewardsLock.lockRewards (contracts/Contract.sol#597-599)\n\t- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#746-748)\n\tStakingRewardsLock.rewardPerTokenStored (contracts/Contract.sol#589-590) can be used in cross function reentrancies:\n\t- StakingRewardsLock.rewardPerToken() (contracts/Contract.sol#634-643)\n\t- StakingRewardsLock.rewardPerTokenStored (contracts/Contract.sol#589-590)\n\t- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- unlockRewards[msg.sender] = 0 (contracts/Contract.sol#709)\n\t\t- unlockRewards[account] = unlock (contracts/Contract.sol#750)\n\tStakingRewardsLock.unlockRewards (contracts/Contract.sol#595-597) can be used in cross function reentrancies:\n\t- StakingRewardsLock.earned(address) (contracts/Contract.sol#644-661)\n\t- StakingRewardsLock.getReward() (contracts/Contract.sol#705-711)\n\t- StakingRewardsLock.unlockRewards (contracts/Contract.sol#595-597)\n\t- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)\n\t- getReward() (contracts/Contract.sol#714)\n\t\t- userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#751)\n\tStakingRewardsLock.userRewardPerTokenPaid (contracts/Contract.sol#590-595) can be used in cross function reentrancies:\n\t- StakingRewardsLock.earnedDuration(address) (contracts/Contract.sol#661-666)\n\t- StakingRewardsLock.updateReward(address) (contracts/Contract.sol#745-752)\n\t- StakingRewardsLock.userRewardPerTokenPaid (contracts/Contract.sol#590-595)"
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xecd9ba82",
            "selector": "0xecd9ba82",
            "calldata_variants": [
                "0xecd9ba82",
                "0xecd9ba820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2dfbf66",
            "selector": "0xf2dfbf66",
            "calldata_variants": [
                "0xf2dfbf66",
                "0xf2dfbf660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 7547,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x6bb56948a9fcd06e32d20cba947cddbbb1efab686b36625f0b52b04b2712b42a
call_targets: 0x89f0112a9c75d987686c608ca1840f9c7344b7ff
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6bb56948a9fcd06e32d20cba947cddbbb1efab686b36625f0b52b04b2712b42a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x89f0112a9c75d987686c608ca1840f9c7344b7ff"
    ],
    "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": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xecd9ba82",
            "selector": "0xecd9ba82",
            "calldata_variants": [
                "0xecd9ba82",
                "0xecd9ba820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2dfbf66",
            "selector": "0xf2dfbf66",
            "calldata_variants": [
                "0xf2dfbf66",
                "0xf2dfbf660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4821,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7132,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 7547,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x6bb56948a9fcd06e32d20cba947cddbbb1efab686b36625f0b52b04b2712b42a
call_targets: 0x89f0112a9c75d987686c608ca1840f9c7344b7ff
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6bb56948a9fcd06e32d20cba947cddbbb1efab686b36625f0b52b04b2712b42a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x89f0112a9c75d987686c608ca1840f9c7344b7ff"
    ],
    "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": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xecd9ba82",
            "selector": "0xecd9ba82",
            "calldata_variants": [
                "0xecd9ba82",
                "0xecd9ba820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2dfbf66",
            "selector": "0xf2dfbf66",
            "calldata_variants": [
                "0xf2dfbf66",
                "0xf2dfbf660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4821,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7132,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 7547,
            "type": "tx_origin_used"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 6
}