019c0ea9-075d-712a-a36b-c3913c2d8471
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
{
"status": "not_proxy"
}
'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
{
"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"
}
{"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"]}]}
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
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | codex | Liquidation drains entire pool and leaves staking accounting unchanged | 85 | no | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewvalidation_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 6
}
|