019bb50b-e18c-7289-a46a-78f23643b5ab
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 |
|---|---|---|---|---|
| 40408 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 40409 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 40410 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 40411 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 40412 | capability.graph | complete | 1 / 3 | 3 months ago |
| 40413 | detector.run | complete | 1 / 3 | 3 months ago |
| 40414 | validation.fork | complete | 1 / 3 | 3 months ago |
| 40498 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 40499 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-umfrr9w6)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-umfrr9w6)
NashSavingsLedgerAave.calcPrincipalAmounts(uint256[5]).out (contracts/NashSavingsLedgerAave.sol#347) is a local variable never initialized
NashSavingsLedgerAave.balanceOf(address).out (contracts/NashSavingsLedgerAave.sol#273) is a local variable never initialized
NashSavingsLedgerAave.balanceOf(address).userData (contracts/NashSavingsLedgerAave.sol#281) is a local variable never initialized
NashSavingsLedgerAave.withdraw(uint256[5]).user (contracts/NashSavingsLedgerAave.sol#292) is a local variable never initialized
NashSavingsLedgerAave.updateBalances(BalanceUpdate[]).user (contracts/NashSavingsLedgerAave.sol#220) is a local variable never initialized
NashSavingsLedgerAave.calcAmounts(uint256[5]).out (contracts/NashSavingsLedgerAave.sol#357) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
NashSavingsLedgerAave.deposit() (contracts/NashSavingsLedgerAave.sol#197-211) ignores return value by utok.approve(address(pools[i]),amount) (contracts/NashSavingsLedgerAave.sol#208)
NashSavingsLedgerAave.withdraw(uint256[5]) (contracts/NashSavingsLedgerAave.sol#291-323) ignores return value by pools[i_scope_0].withdraw(address(underlyingTokens[i_scope_0]),scaleAmount(applyFee(amounts[i_scope_0],manualWithdrawalFee),ledgerBalanceScale,tokens[i_scope_0].decimals()),msg.sender) (contracts/NashSavingsLedgerAave.sol#316-320)
NashSavingsLedgerAave.withdrawNash(uint256[5]) (contracts/NashSavingsLedgerAave.sol#325-343) ignores return value by pools[i].withdraw(address(underlyingTokens[i]),scaleAmount(amounts[i],ledgerBalanceScale,tokens[i].decimals()),msg.sender) (contracts/NashSavingsLedgerAave.sol#337-341)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
IncentivizedERC20.constructor(string,string,uint8).name (contracts/protocol/tokenization/IncentivizedERC20.sol#27) shadows:
- IncentivizedERC20.name() (contracts/protocol/tokenization/IncentivizedERC20.sol#39-41) (function)
- IERC20Detailed.name() (contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol#7) (function)
IncentivizedERC20.constructor(string,string,uint8).symbol (contracts/protocol/tokenization/IncentivizedERC20.sol#28) shadows:
- IncentivizedERC20.symbol() (contracts/protocol/tokenization/IncentivizedERC20.sol#46-48) (function)
- IERC20Detailed.symbol() (contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol#9) (function)
IncentivizedERC20.constructor(string,string,uint8).decimals (contracts/protocol/tokenization/IncentivizedERC20.sol#29) shadows:
- IncentivizedERC20.decimals() (contracts/protocol/tokenization/IncentivizedERC20.sol#53-55) (function)
- IERC20Detailed.decimals() (contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol#11) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
NashSavingsLedgerAave.setFee(uint256) (contracts/NashSavingsLedgerAave.sol#212-214) should emit an event for:
- manualWithdrawalFee = newFee (contracts/NashSavingsLedgerAave.sol#213)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic
AToken.initialize(ILendingPool,address,address,IAaveIncentivesController,uint8,string,string,bytes).treasury (contracts/protocol/tokenization/AToken.sol#66) lacks a zero-check on :
- _treasury = treasury (contracts/protocol/tokenization/AToken.sol#96)
AToken.initialize(ILendingPool,address,address,IAaveIncentivesController,uint8,string,string,bytes).underlyingAsset (contracts/protocol/tokenization/AToken.sol#67) lacks a zero-check on :
- _underlyingAsset = underlyingAsset (contracts/protocol/tokenization/AToken.sol#97)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
NashSavingsLedgerAave.constructor(AToken,AToken,AToken,AToken,AToken,IAaveIncentivesController) (contracts/NashSavingsLedgerAave.sol#63-82) has external calls inside a loop: underlyingTokens[i] = IERC20(tokens[i].UNDERLYING_ASSET_ADDRESS()) (contracts/NashSavingsLedgerAave.sol#79)
NashSavingsLedgerAave.constructor(AToken,AToken,AToken,AToken,AToken,IAaveIncentivesController) (contracts/NashSavingsLedgerAave.sol#63-82) has external calls inside a loop: pools[i] = tokens[i].POOL() (contracts/NashSavingsLedgerAave.sol#80)
NashSavingsLedgerAave.updatePoolsAndTokens() (contracts/NashSavingsLedgerAave.sol#84-89) has external calls inside a loop: underlyingTokens[i] = IERC20(tokens[i].UNDERLYING_ASSET_ADDRESS()) (contracts/NashSavingsLedgerAave.sol#86)
NashSavingsLedgerAave.updatePoolsAndTokens() (contracts/NashSavingsLedgerAave.sol#84-89) has external calls inside a loop: pools[i] = tokens[i].POOL() (contracts/NashSavingsLedgerAave.sol#87)
NashSavingsLedgerAave.deposit() (contracts/NashSavingsLedgerAave.sol#197-211) has external calls inside a loop: amount = utok.balanceOf(address(this)) (contracts/NashSavingsLedgerAave.sol#200)
NashSavingsLedgerAave.deposit() (contracts/NashSavingsLedgerAave.sol#197-211) has external calls inside a loop: utok.approve(address(pools[i]),amount) (contracts/NashSavingsLedgerAave.sol#208)
NashSavingsLedgerAave.deposit() (contracts/NashSavingsLedgerAave.sol#197-211) has external calls inside a loop: pools[i].deposit(address(utok),amount,address(this),0) (contracts/NashSavingsLedgerAave.sol#209)
NashSavingsLedgerAave.principalBalance(uint256) (contracts/NashSavingsLedgerAave.sol#258-264) has external calls inside a loop: scaleAmount(tokens[tok].scaledBalanceOf(address(this)),tokens[tok].decimals(),ledgerBalanceScale) (contracts/NashSavingsLedgerAave.sol#259-263)
Calls stack containing the loop:
NashSavingsLedgerAave.updateBalances(BalanceUpdate[])
NashSavingsLedgerAave.principalBalance(uint256) (contracts/NashSavingsLedgerAave.sol#258-264) has external calls inside a loop: scaleAmount(tokens[tok].scaledBalanceOf(address(this)),tokens[tok].decimals(),ledgerBalanceScale) (contracts/NashSavingsLedgerAave.sol#259-263)
Calls stack containing the loop:
NashSavingsLedgerAave.balanceOf(address)
NashSavingsLedgerAave.getCurrentLiquidityIndex(uint256) (contracts/NashSavingsLedgerAave.sol#266-270) has external calls inside a loop: pools[tok].getReserveNormalizedIncome(address(underlyingTokens[tok])) (contracts/NashSavingsLedgerAave.sol#267-269)
Calls stack containing the loop:
NashSavingsLedgerAave.balanceOf(address)
NashSavingsLedgerAave.getCurrentLiquidityIndex(uint256) (contracts/NashSavingsLedgerAave.sol#266-270) has external calls inside a loop: pools[tok].getReserveNormalizedIncome(address(underlyingTokens[tok])) (contracts/NashSavingsLedgerAave.sol#267-269)
Calls stack containing the loop:
NashSavingsLedgerAave.withdraw(uint256[5])
NashSavingsLedgerAave.withdraw(uint256[5]) (contracts/NashSavingsLedgerAave.sol#291-323) has external calls inside a loop: pools[i_scope_0].withdraw(address(underlyingTokens[i_scope_0]),scaleAmount(applyFee(amounts[i_scope_0],manualWithdrawalFee),ledgerBalanceScale,tokens[i_scope_0].decimals()),msg.sender) (contracts/NashSavingsLedgerAave.sol#316-320)
NashSavingsLedgerAave.getCurrentLiquidityIndex(uint256) (contracts/NashSavingsLedgerAave.sol#266-270) has external calls inside a loop: pools[tok].getReserveNormalizedIncome(address(underlyingTokens[tok])) (contracts/NashSavingsLedgerAave.sol#267-269)
Calls stack containing the loop:
NashSavingsLedgerAave.withdrawNash(uint256[5])
NashSavingsLedgerAave.principalBalance(uint256) (contracts/NashSavingsLedgerAave.sol#258-264) has external calls inside a loop: scaleAmount(tokens[tok].scaledBalanceOf(address(this)),tokens[tok].decimals(),ledgerBalanceScale) (contracts/NashSavingsLedgerAave.sol#259-263)
Calls stack containing the loop:
NashSavingsLedgerAave.withdrawNash(uint256[5])
NashSavingsLedgerAave.withdrawNash(uint256[5]) (contracts/NashSavingsLedgerAave.sol#325-343) has external calls inside a loop: pools[i].withdraw(address(underlyingTokens[i]),scaleAmount(amounts[i],ledgerBalanceScale,tokens[i].decimals()),msg.sender) (contracts/NashSavingsLedgerAave.sol#337-341)
NashSavingsLedgerAave.getCurrentLiquidityIndex(uint256) (contracts/NashSavingsLedgerAave.sol#266-270) has external calls inside a loop: pools[tok].getReserveNormalizedIncome(address(underlyingTokens[tok])) (contracts/NashSavingsLedgerAave.sol#267-269)
Calls stack containing the loop:
NashSavingsLedgerAave.calcPrincipalAmounts(uint256[5])
NashSavingsLedgerAave.getCurrentLiquidityIndex(uint256) (contracts/NashSavingsLedgerAave.sol#266-270) has external calls inside a loop: pools[tok].getReserveNormalizedIncome(address(underlyingTokens[tok])) (contracts/NashSavingsLedgerAave.sol#267-269)
Calls stack containing the loop:
NashSavingsLedgerAave.calcAmounts(uint256[5])
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in IncentivizedERC20.transferFrom(address,address,uint256) (contracts/protocol/tokenization/IncentivizedERC20.sol#122-135):
External calls:
- _transfer(sender,recipient,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#127)
- _getIncentivesController().handleAction(sender,currentTotalSupply,oldSenderBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#187)
- _getIncentivesController().handleAction(recipient,currentTotalSupply,oldRecipientBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#189)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/protocol/tokenization/IncentivizedERC20.sol#128-132)
- _allowances[owner][spender] = amount (contracts/protocol/tokenization/IncentivizedERC20.sol#234)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in AToken._transfer(address,address,uint256,bool) (contracts/protocol/tokenization/AToken.sol#370-391):
External calls:
- super._transfer(from,to,amount.rayDiv(index)) (contracts/protocol/tokenization/AToken.sol#384)
- _getIncentivesController().handleAction(sender,currentTotalSupply,oldSenderBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#187)
- _getIncentivesController().handleAction(recipient,currentTotalSupply,oldRecipientBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#189)
- pool.finalizeTransfer(underlyingAsset,from,to,amount,fromBalanceBefore,toBalanceBefore) (contracts/protocol/tokenization/AToken.sol#387)
Event emitted after the call(s):
- BalanceTransfer(from,to,amount,index) (contracts/protocol/tokenization/AToken.sol#390)
Reentrancy in AToken.burn(address,address,uint256,uint256) (contracts/protocol/tokenization/AToken.sol#120-134):
External calls:
- _burn(user,amountScaled) (contracts/protocol/tokenization/AToken.sol#128)
- _getIncentivesController().handleAction(account,oldTotalSupply,oldAccountBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#222)
- IERC20(_underlyingAsset).safeTransfer(receiverOfUnderlying,amount) (contracts/protocol/tokenization/AToken.sol#130)
Event emitted after the call(s):
- Burn(user,receiverOfUnderlying,amount,index) (contracts/protocol/tokenization/AToken.sol#133)
- Transfer(user,address(0),amount) (contracts/protocol/tokenization/AToken.sol#132)
Reentrancy in AToken.mint(address,uint256,uint256) (contracts/protocol/tokenization/AToken.sol#144-159):
External calls:
- _mint(user,amountScaled) (contracts/protocol/tokenization/AToken.sol#153)
- _getIncentivesController().handleAction(account,oldTotalSupply,oldAccountBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#206)
Event emitted after the call(s):
- Mint(user,amount,index) (contracts/protocol/tokenization/AToken.sol#156)
- Transfer(address(0),user,amount) (contracts/protocol/tokenization/AToken.sol#155)
Reentrancy in AToken.mintToTreasury(uint256,uint256) (contracts/protocol/tokenization/AToken.sol#167-182):
External calls:
- _mint(treasury,amount.rayDiv(index)) (contracts/protocol/tokenization/AToken.sol#178)
- _getIncentivesController().handleAction(account,oldTotalSupply,oldAccountBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#206)
Event emitted after the call(s):
- Mint(treasury,amount,index) (contracts/protocol/tokenization/AToken.sol#181)
- Transfer(address(0),treasury,amount) (contracts/protocol/tokenization/AToken.sol#180)
Reentrancy in IncentivizedERC20.transfer(address,uint256) (contracts/protocol/tokenization/IncentivizedERC20.sol#83-87):
External calls:
- _transfer(_msgSender(),recipient,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#84)
- _getIncentivesController().handleAction(sender,currentTotalSupply,oldSenderBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#187)
- _getIncentivesController().handleAction(recipient,currentTotalSupply,oldRecipientBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#189)
Event emitted after the call(s):
- Transfer(_msgSender(),recipient,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#85)
Reentrancy in IncentivizedERC20.transferFrom(address,address,uint256) (contracts/protocol/tokenization/IncentivizedERC20.sol#122-135):
External calls:
- _transfer(sender,recipient,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#127)
- _getIncentivesController().handleAction(sender,currentTotalSupply,oldSenderBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#187)
- _getIncentivesController().handleAction(recipient,currentTotalSupply,oldRecipientBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#189)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#235)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/protocol/tokenization/IncentivizedERC20.sol#128-132)
- Transfer(sender,recipient,amount) (contracts/protocol/tokenization/IncentivizedERC20.sol#133)
Reentrancy in AToken.transferOnLiquidation(address,address,uint256) (contracts/protocol/tokenization/AToken.sol#191-201):
External calls:
- _transfer(from,to,value,false) (contracts/protocol/tokenization/AToken.sol#198)
- pool.finalizeTransfer(underlyingAsset,from,to,amount,fromBalanceBefore,toBalanceBefore) (contracts/protocol/tokenization/AToken.sol#387)
- _getIncentivesController().handleAction(sender,currentTotalSupply,oldSenderBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#187)
- _getIncentivesController().handleAction(recipient,currentTotalSupply,oldRecipientBalance) (contracts/protocol/tokenization/IncentivizedERC20.sol#189)
Event emitted after the call(s):
- Transfer(from,to,value) (contracts/protocol/tokenization/AToken.sol#200)
Reentrancy in NashSavingsLedgerAave.withdraw(uint256[5]) (contracts/NashSavingsLedgerAave.sol#291-323):
External calls:
- pools[i_scope_0].withdraw(address(underlyingTokens[i_scope_0]),scaleAmount(applyFee(amounts[i_scope_0],manualWithdrawalFee),ledgerBalanceScale,tokens[i_scope_0].decimals()),msg.sender) (contracts/NashSavingsLedgerAave.sol#316-320)
Event emitted after the call(s):
- ManualWithdrawal(msg.sender,amounts[0],amounts[1],amounts[2],amounts[3],amounts[4]) (contracts/NashSavingsLedgerAave.sol#322)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
AToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/protocol/tokenization/AToken.sol#336-360) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,INVALID_EXPIRATION) (contracts/protocol/tokenization/AToken.sol#347)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Address.isContract(address) (contracts/dependencies/openzeppelin/contracts/Address.sol#25-36) uses assembly
- INLINE ASM (contracts/dependencies/openzeppelin/contracts/Address.sol#32-34)
VersionedInitializable.isConstructor() (contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol#61-73) uses assembly
- INLINE ASM (contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol#69-71)
AToken.initialize(ILendingPool,address,address,IAaveIncentivesController,uint8,string,string,bytes) (contracts/protocol/tokenization/AToken.sol#64-110) uses assembly
- INLINE ASM (contracts/protocol/tokenization/AToken.sol#77-79)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
2 different versions of Solidity are used:
- Version constraint ^0.6.12 is used by:
-^0.6.12 (contracts/NashSavingsLedgerAave.sol#3)
-^0.6.12 (contracts/libraries/Ownerable.sol#1)
-^0.6.12 (contracts/libraries/SafeMath.sol#1)
- Version constraint 0.6.12 is used by:
-0.6.12 (contracts/dependencies/openzeppelin/contracts/Address.sol#2)
-0.6.12 (contracts/dependencies/openzeppelin/contracts/Context.sol#2)
-0.6.12 (contracts/dependencies/openzeppelin/contracts/IERC20.sol#2)
-0.6.12 (contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol#2)
-0.6.12 (contracts/dependencies/openzeppelin/contracts/SafeERC20.sol#3)
-0.6.12 (contracts/dependencies/openzeppelin/contracts/SafeMath.sol#2)
-0.6.12 (contracts/interfaces/IAToken.sol#2)
-0.6.12 (contracts/interfaces/IAaveIncentivesController.sol#2)
-0.6.12 (contracts/interfaces/IInitializableAToken.sol#2)
-0.6.12 (contracts/interfaces/ILendingPool.sol#2)
-0.6.12 (contracts/interfaces/ILendingPoolAddressesProvider.sol#2)
-0.6.12 (contracts/interfaces/IScaledBalanceToken.sol#2)
-0.6.12 (contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol#2)
-0.6.12 (contracts/protocol/libraries/helpers/Errors.sol#2)
-0.6.12 (contracts/protocol/libraries/math/WadRayMath.sol#2)
-0.6.12 (contracts/protocol/libraries/types/DataTypes.sol#2)
-0.6.12 (contracts/protocol/tokenization/AToken.sol#2)
-0.6.12 (contracts/protocol/tokenization/IncentivizedERC20.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
Context._msgData() (contracts/dependencies/openzeppelin/contracts/Context.sol#19-22) 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/NashSavingsLedgerAave.sol#3)
- ^0.6.12 (contracts/libraries/Ownerable.sol#1)
- ^0.6.12 (contracts/libraries/SafeMath.sol#1)
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/dependencies/openzeppelin/contracts/Address.sol#2)
- 0.6.12 (contracts/dependencies/openzeppelin/contracts/Context.sol#2)
- 0.6.12 (contracts/dependencies/openzeppelin/contracts/IERC20.sol#2)
- 0.6.12 (contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol#2)
- 0.6.12 (contracts/dependencies/openzeppelin/contracts/SafeERC20.sol#3)
- 0.6.12 (contracts/dependencies/openzeppelin/contracts/SafeMath.sol#2)
- 0.6.12 (contracts/interfaces/IAToken.sol#2)
- 0.6.12 (contracts/interfaces/IAaveIncentivesController.sol#2)
- 0.6.12 (contracts/interfaces/IInitializableAToken.sol#2)
- 0.6.12 (contracts/interfaces/ILendingPool.sol#2)
- 0.6.12 (contracts/interfaces/ILendingPoolAddressesProvider.sol#2)
- 0.6.12 (contracts/interfaces/IScaledBalanceToken.sol#2)
- 0.6.12 (contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol#2)
- 0.6.12 (contracts/protocol/libraries/helpers/Errors.sol#2)
- 0.6.12 (contracts/protocol/libraries/math/WadRayMath.sol#2)
- 0.6.12 (contracts/protocol/libraries/types/DataTypes.sol#2)
- 0.6.12 (contracts/protocol/tokenization/AToken.sol#2)
- 0.6.12 (contracts/protocol/tokenization/IncentivizedERC20.sol#2)
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/dependencies/openzeppelin/contracts/Address.sol#54-60):
- (success,None) = recipient.call{value: amount}() (contracts/dependencies/openzeppelin/contracts/Address.sol#58)
Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (contracts/dependencies/openzeppelin/contracts/SafeERC20.sol#51-63):
- (success,returndata) = address(token).call(data) (contracts/dependencies/openzeppelin/contracts/SafeERC20.sol#55)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function IAToken.UNDERLYING_ASSET_ADDRESS() (contracts/interfaces/IAToken.sol#106) is not in mixedCase
Function IAaveIncentivesController.REWARD_TOKEN() (contracts/interfaces/IAaveIncentivesController.sol#122) is not in mixedCase
Function IAaveIncentivesController.PRECISION() (contracts/interfaces/IAaveIncentivesController.sol#127) is not in mixedCase
Variable VersionedInitializable.______gap (contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol#76) is not in mixedCase
Constant WadRayMath.halfWAD (contracts/protocol/libraries/math/WadRayMath.sol#14) is not in UPPER_CASE_WITH_UNDERSCORES
Constant WadRayMath.halfRAY (contracts/protocol/libraries/math/WadRayMath.sol#17) is not in UPPER_CASE_WITH_UNDERSCORES
Function AToken.RESERVE_TREASURY_ADDRESS() (contracts/protocol/tokenization/AToken.sol#269-271) is not in mixedCase
Function AToken.UNDERLYING_ASSET_ADDRESS() (contracts/protocol/tokenization/AToken.sol#276-278) is not in mixedCase
Function AToken.POOL() (contracts/protocol/tokenization/AToken.sol#283-285) is not in mixedCase
Variable AToken._nonces (contracts/protocol/tokenization/AToken.sol#36) is not in mixedCase
Variable AToken.DOMAIN_SEPARATOR (contracts/protocol/tokenization/AToken.sol#38) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Redundant expression "this (contracts/dependencies/openzeppelin/contracts/Context.sol#20)" inContext (contracts/dependencies/openzeppelin/contracts/Context.sol#14-23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
Loop condition i < tokens.length (contracts/NashSavingsLedgerAave.sol#276) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i_scope_0 < tokens.length (contracts/NashSavingsLedgerAave.sol#283) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < tokens.length (contracts/NashSavingsLedgerAave.sol#348) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < tokens.length (contracts/NashSavingsLedgerAave.sol#358) should use cached array length instead of referencing `length` member of the storage array.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
NashSavingsLedgerAave.incentivesController (contracts/NashSavingsLedgerAave.sol#44) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (21 contracts with 100 detectors), 69 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-umfrr9w6 --allow-paths /tmp/slither-umfrr9w6,/tmp/slither-umfrr9w6/lib,/tmp/slither-umfrr9w6/src",
"remappings": [],
"source_files": [
"contracts/NashSavingsLedgerAave.sol",
"contracts/protocol/tokenization/AToken.sol",
"contracts/interfaces/ILendingPool.sol",
"contracts/interfaces/IAaveIncentivesController.sol",
"contracts/protocol/libraries/math/WadRayMath.sol",
"contracts/libraries/SafeMath.sol",
"contracts/libraries/Ownerable.sol",
"contracts/dependencies/openzeppelin/contracts/IERC20.sol",
"contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
"contracts/interfaces/IAToken.sol",
"contracts/protocol/libraries/helpers/Errors.sol",
"contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
"contracts/protocol/tokenization/IncentivizedERC20.sol",
"contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
"contracts/dependencies/openzeppelin/contracts/Address.sol",
"contracts/interfaces/ILendingPoolAddressesProvider.sol",
"contracts/protocol/libraries/types/DataTypes.sol",
"contracts/interfaces/IScaledBalanceToken.sol",
"contracts/interfaces/IInitializableAToken.sol",
"contracts/dependencies/openzeppelin/contracts/Context.sol",
"contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 69,
"workspace_hash": "9b16b3f46bef3e69625c25fd2c1275fa4ecf910cd7ae10152cd82c089f478773",
"duration_seconds": 1.6061770915985107,
"solc_version_requested": "0.6.12"
}
{"no_findings":false,"summary":"Found two low-severity issues: balance-update signatures are replayable across contracts/chains, and the withdrawal fee lacks an upper bound causing underflow/DoS risk.","findings":[{"severity":"low","category":"auth","title":"Balance update signatures lack domain separation (replay across contracts/chains)","exploit_scenario":"A user signs an offchain balance update for one deployment. Because the signed message only includes deltas and nonce, the same signature can be replayed on another deployment or chain with the same nonce, allowing a privileged updater to apply unintended negative deltas there.","recommendation":"Bind signatures to the contract and chain (e.g., EIP-712 typed data including contract address, chainId, user address, and nonce). Consider using a full-width uint256 nonce to avoid wrap-around reuse.","evidence":"verifyProof/getMessage hash only `deltas` and `userNonce` with no contract/chain binding.","locations":["contracts/NashSavingsLedgerAave.sol:161","contracts/NashSavingsLedgerAave.sol:366"]},{"severity":"low","category":"math","title":"Manual withdrawal fee is unchecked and can underflow","exploit_scenario":"If the owner sets `manualWithdrawalFee` above 10000, `applyFee` underflows and produces a huge withdrawal amount, likely causing withdrawals to revert and effectively DoSing user withdrawals.","recommendation":"Validate `newFee <= 10000` in `setFee` and use SafeMath or explicit bounds checks in `applyFee`.","evidence":"`applyFee` computes `(10000 - fee)` without bounds checks; `setFee` allows any value and `withdraw` uses `applyFee`.","locations":["contracts/NashSavingsLedgerAave.sol:154","contracts/NashSavingsLedgerAave.sol:212","contracts/NashSavingsLedgerAave.sol:318"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-f28cogl2
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb538-213c-7420-8183-fd4ad710027e
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Auditing files using cat**
exec
/bin/bash -lc 'cat /tmp/codex-f28cogl2/AUDIT_BUNDLE.txt' in /tmp/codex-f28cogl2 succeeded in 6ms:
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/NashSavingsLedgerAave.sol
================================================================================
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;
import "./protocol/tokenization/AToken.sol";
import "./interfaces/ILendingPool.sol";
import "./interfaces/IAaveIncentivesController.sol";
import "./protocol/libraries/math/WadRayMath.sol";
import "./libraries/SafeMath.sol";
import "./libraries/Ownerable.sol";
struct BalanceUpdate {
int[5] deltas;
thinking
**Analyzing smart contract security risks**
I’m carefully reviewing the NashSavingsLedgerAave.sol contract for vulnerabilities like reentrancy, unchecked return values, signature replay, and fee underflows. There’s interesting complexity around owner privileges, signature verification without chain binding, potential withdrawal fee misconfiguration causing underflows, and subtle rounding issues that might affect fund accounting. I’m weighing how severe these risks are given the contract’s design and access controls.
thinking
**Examining edge cases and numeric precision**
I’m unpacking subtle rounding effects in principal calculations, allowance handling quirks with token approvals, and edge cases around signed integer conversions that arise in balance updates. The interplay between liquidity indices, fees, and scaling factors could allow minor imbalances or miscalculations, but they seem more like precision nuances than direct exploits.
exec
/bin/bash -lc 'rg -n "applyFee|setFee" /tmp/codex-f28cogl2/AUDIT_BUNDLE.txt' in /tmp/codex-f28cogl2 succeeded in 38ms:
160: function applyFee(uint amount, uint fee) internal pure returns (uint) {
218: function setFee(uint newFee) external onlyOwner {
324: scaleAmount(applyFee(amounts[i], manualWithdrawalFee), ledgerBalanceScale, tokens[i].decimals()),
thinking
**Checking line numbers in source file**
exec
/bin/bash -lc 'rg -n "applyFee|setFee|verifyProof|getMessage" /tmp/codex-f28cogl2/contracts/NashSavingsLedgerAave.sol' in /tmp/codex-f28cogl2 succeeded in 14ms:
154: function applyFee(uint amount, uint fee) internal pure returns (uint) {
161: function verifyProof(BalanceUpdate memory update, uint userNonce) internal pure {
212: function setFee(uint newFee) external onlyOwner {
225: verifyProof(update, user[0]);
318: scaleAmount(applyFee(amounts[i], manualWithdrawalFee), ledgerBalanceScale, tokens[i].decimals()),
366: function getMessage(address user, int[5] calldata deltas) external view returns (bytes32) {
thinking
**Preparing security audit findings**
codex
{"no_findings":false,"summary":"Found two low-severity issues: balance-update signatures are replayable across contracts/chains, and the withdrawal fee lacks an upper bound causing underflow/DoS risk.","findings":[{"severity":"low","category":"auth","title":"Balance update signatures lack domain separation (replay across contracts/chains)","exploit_scenario":"A user signs an offchain balance update for one deployment. Because the signed message only includes deltas and nonce, the same signature can be replayed on another deployment or chain with the same nonce, allowing a privileged updater to apply unintended negative deltas there.","recommendation":"Bind signatures to the contract and chain (e.g., EIP-712 typed data including contract address, chainId, user address, and nonce). Consider using a full-width uint256 nonce to avoid wrap-around reuse.","evidence":"verifyProof/getMessage hash only `deltas` and `userNonce` with no contract/chain binding.","locations":["contracts/NashSavingsLedgerAave.sol:161","contracts/NashSavingsLedgerAave.sol:366"]},{"severity":"low","category":"math","title":"Manual withdrawal fee is unchecked and can underflow","exploit_scenario":"If the owner sets `manualWithdrawalFee` above 10000, `applyFee` underflows and produces a huge withdrawal amount, likely causing withdrawals to revert and effectively DoSing user withdrawals.","recommendation":"Validate `newFee <= 10000` in `setFee` and use SafeMath or explicit bounds checks in `applyFee`.","evidence":"`applyFee` computes `(10000 - fee)` without bounds checks; `setFee` allows any value and `withdraw` uses `applyFee`.","locations":["contracts/NashSavingsLedgerAave.sol:154","contracts/NashSavingsLedgerAave.sol:212","contracts/NashSavingsLedgerAave.sol:318"]}]}
tokens used
27,821
{
"codex": {
"ran_at": "2026-01-13T02:41:27.346395+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 21,
"import_count": 29,
"first_party_contracts_count": 21
},
"summary": "Found two low-severity issues: balance-update signatures are replayable across contracts/chains, and the withdrawal fee lacks an upper bound causing underflow/DoS risk.",
"raw_final": {
"summary": "Found two low-severity issues: balance-update signatures are replayable across contracts/chains, and the withdrawal fee lacks an upper bound causing underflow/DoS risk.",
"findings": [
{
"title": "Balance update signatures lack domain separation (replay across contracts/chains)",
"category": "auth",
"evidence": "verifyProof/getMessage hash only `deltas` and `userNonce` with no contract/chain binding.",
"severity": "low",
"locations": [
"contracts/NashSavingsLedgerAave.sol:161",
"contracts/NashSavingsLedgerAave.sol:366"
],
"recommendation": "Bind signatures to the contract and chain (e.g., EIP-712 typed data including contract address, chainId, user address, and nonce). Consider using a full-width uint256 nonce to avoid wrap-around reuse.",
"exploit_scenario": "A user signs an offchain balance update for one deployment. Because the signed message only includes deltas and nonce, the same signature can be replayed on another deployment or chain with the same nonce, allowing a privileged updater to apply unintended negative deltas there."
},
{
"title": "Manual withdrawal fee is unchecked and can underflow",
"category": "math",
"evidence": "`applyFee` computes `(10000 - fee)` without bounds checks; `setFee` allows any value and `withdraw` uses `applyFee`.",
"severity": "low",
"locations": [
"contracts/NashSavingsLedgerAave.sol:154",
"contracts/NashSavingsLedgerAave.sol:212",
"contracts/NashSavingsLedgerAave.sol:318"
],
"recommendation": "Validate `newFee <= 10000` in `setFee` and use SafeMath or explicit bounds checks in `applyFee`.",
"exploit_scenario": "If the owner sets `manualWithdrawalFee` above 10000, `applyFee` underflows and produces a huge withdrawal amount, likely causing withdrawals to revert and effectively DoSing user withdrawals."
}
],
"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 0x0177 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x830e5d6d 00000026: GT 00000027: PUSH2 0x00d8 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xb38dfbcd 00000031: GT 00000032: PUSH2 0x008c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xd5eecedd 0000003c: GT 0000003d: PUSH2 0x0066 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xd5eecedd 00000047: EQ 00000048: PUSH2 0x02ac 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xf2fde38b 00000052: EQ 00000053: PUSH2 0x02bf 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xfebcc2bd 0000005d: EQ 0000005e: PUSH2 0x02d2 00000061: JUMPI 00000062: PUSH2 0x0177 00000065: JUMP 00000066: JUMPDEST 00000067: DUP1 00000068: PUSH4 0xb38dfbcd 0000006d: EQ 0000006e: PUSH2 0x0289 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0xbf220914 00000078: EQ 00000079: PUSH2 0x029c 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xd0e30db0 00000083: EQ 00000084: PUSH2 0x02a4 00000087: JUMPI 00000088: PUSH2 0x0177 0000008b: JUMP 0000008c: JUMPDEST 0000008d: DUP1 0000008e: PUSH4 0xa3bf224b 00000093: GT 00000094: PUSH2 0x00bd 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0xa3bf224b 0000009e: EQ 0000009f: PUSH2 0x025b 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xac4afa38 000000a9: EQ 000000aa: PUSH2 0x026e 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xaf1df255 000000b4: EQ 000000b5: PUSH2 0x0281 000000b8: JUMPI 000000b9: PUSH2 0x0177 000000bc: JUMP 000000bd: JUMPDEST 000000be: DUP1 000000bf: PUSH4 0x830e5d6d 000000c4: EQ 000000c5: PUSH2 0x024b 000000c8: JUMPI 000000c9: DUP1 000000ca: PUSH4 0x8da5cb5b 000000cf: EQ 000000d0: PUSH2 0x0253 000000d3: JUMPI 000000d4: PUSH2 0x0177 000000d7: JUMP 000000d8: JUMPDEST 000000d9: DUP1 000000da: PUSH4 0x5a21bba2 000000df: GT 000000e0: PUSH2 0x012f 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0x69fe0e2d 000000ea: GT 000000eb: PUSH2 0x0114 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x69fe0e2d 000000f5: EQ 000000f6: PUSH2 0x021d 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x70a08231 00000100: EQ 00000101: PUSH2 0x0230 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x715018a6 0000010b: EQ 0000010c: PUSH2 0x0243 0000010f: JUMPI 00000110: PUSH2 0x0177 00000113: JUMP 00000114: JUMPDEST 00000115: DUP1 00000116: PUSH4 0x5a21bba2 0000011b: EQ 0000011c: PUSH2 0x01f5 0000011f: JUMPI 00000120: DUP1 00000121: PUSH4 0x6834e3a8 00000126: EQ 00000127: PUSH2 0x020a 0000012a: JUMPI 0000012b: PUSH2 0x0177 0000012e: JUMP 0000012f: JUMPDEST 00000130: DUP1 00000131: PUSH4 0x4074f987 00000136: GT 00000137: PUSH2 0x0160 0000013a: JUMPI 0000013b: DUP1 0000013c: PUSH4 0x4074f987 00000141: EQ 00000142: PUSH2 0x01af 00000145: JUMPI 00000146: DUP1 00000147: PUSH4 0x44c015f5 0000014c: EQ 0000014d: PUSH2 0x01c2 00000150: JUMPI 00000151: DUP1 00000152: PUSH4 0x4f64b2be 00000157: EQ 00000158: PUSH2 0x01d5 0000015b: JUMPI 0000015c: PUSH2 0x0177 0000015f: JUMP 00000160: JUMPDEST 00000161: DUP1 00000162: PUSH4 0x088a2b9c 00000167: EQ 00000168: PUSH2 0x017c 0000016b: JUMPI 0000016c: DUP1 0000016d: PUSH4 0x241f362c 00000172: EQ 00000173: PUSH2 0x01a5 00000176: JUMPI 00000177: JUMPDEST 00000178: PUSH1 0x00 0000017a: DUP1 0000017b: REVERT 0000017c: JUMPDEST 0000017d: PUSH2 0x018f 00000180: PUSH2 0x018a 00000183: CALLDATASIZE 00000184: PUSH1 0x04 00000186: PUSH2 0x1cc7 00000189: JUMP 0000018a: JUMPDEST 0000018b: PUSH2 0x02e5 0000018e: JUMP 0000018f: JUMPDEST 00000190: PUSH1 0x40 00000192: MLOAD 00000193: PUSH2 0x019c 00000196: SWAP2 00000197: SWAP1 00000198: PUSH2 0x1f67 0000019b: JUMP 0000019c: JUMPDEST 0000019d: PUSH1 0x40 0000019f: MLOAD 000001a0: DUP1 000001a1: SWAP2 000001a2: SUB 000001a3: SWAP1 000001a4: RETURN 000001a5: JUMPDEST 000001a6: PUSH2 0x01ad 000001a9: PUSH2 0x034a 000001ac: JUMP 000001ad: JUMPDEST 000001ae: STOP 000001af: JUMPDEST 000001b0: PUSH2 0x018f 000001b3: PUSH2 0x01bd 000001b6: CALLDATASIZE 000001b7: PUSH1 0x04 000001b9: PUSH2 0x1cc7 000001bc: JUMP 000001bd: JUMPDEST 000001be: PUSH2 0x0524 000001c1: JUMP 000001c2: JUMPDEST 000001c3: PUSH2 0x01ad 000001c6: PUSH2 0x01d0 000001c9: CALLDATASIZE 000001ca: PUSH1 0x04 000001cc: PUSH2 0x1c56 000001cf: JUMP 000001d0: JUMPDEST 000001d1: PUSH2 0x0582 000001d4: JUMP 000001d5: JUMPDEST 000001d6: PUSH2 0x01e8 000001d9: PUSH2 0x01e3 000001dc: CALLDATASIZE 000001dd: PUSH1 0x04 000001df: PUSH2 0x1dab 000001e2: JUMP 000001e3: JUMPDEST 000001e4: PUSH2 0x0800 000001e7: JUMP 000001e8: JUMPDEST 000001e9: PUSH1 0x40 000001eb: MLOAD 000001ec: PUSH2 0x019c 000001ef: SWAP2 000001f0: SWAP1 000001f1: PUSH2 0x1e86 000001f4: JUMP 000001f5: JUMPDEST 000001f6: PUSH2 0x01fd 000001f9: PUSH2 0x081d 000001fc: JUMP 000001fd: JUMPDEST 000001fe: PUSH1 0x40 00000200: MLOAD 00000201: PUSH2 0x019c 00000204: SWAP2 00000205: SWAP1 00000206: PUSH2 0x1f98 00000209: JUMP 0000020a: JUMPDEST 0000020b: PUSH2 0x01fd 0000020e: PUSH2 0x0218 00000211: CALLDATASIZE 00000212: PUSH1 0x04 00000214: PUSH2 0x1be9 00000217: JUMP 00000218: JUMPDEST 00000219: PUSH2 0x0822 0000021c: JUMP 0000021d: JUMPDEST 0000021e: PUSH2 0x01ad 00000221: PUSH2 0x022b 00000224: CALLDATASIZE 00000225: PUSH1 0x04 00000227: PUSH2 0x1dab 0000022a: JUMP 0000022b: JUMPDEST 0000022c: PUSH2 0x0840 0000022f: JUMP 00000230: JUMPDEST 00000231: PUSH2 0x018f 00000234: PUSH2 0x023e 00000237: CALLDATASIZE 00000238: PUSH1 0x04 0000023a: PUSH2 0x1be9 0000023d: JUMP 0000023e: JUMPDEST 0000023f: PUSH2 0x085c 00000242: JUMP 00000243: JUMPDEST 00000244: PUSH2 0x01ad 00000247: PUSH2 0x0975 0000024a: JUMP 0000024b: JUMPDEST 0000024c: PUSH2 0x01fd 0000024f: PUSH2 0x09ec 00000252: JUMP 00000253: JUMPDEST 00000254: PUSH2 0x01e8 00000257: PUSH2 0x0bb0 0000025a: JUMP 0000025b: JUMPDEST 0000025c: PUSH2 0x01e8 0000025f: PUSH2 0x0269 00000262: CALLDATASIZE 00000263: PUSH1 0x04 00000265: PUSH2 0x1dab 00000268: JUMP 00000269: JUMPDEST 0000026a: PUSH2 0x0bbf 0000026d: JUMP 0000026e: JUMPDEST 0000026f: PUSH2 0x01e8 00000272: PUSH2 0x027c 00000275: CALLDATASIZE 00000276: PUSH1 0x04 00000278: PUSH2 0x1dab 0000027b: JUMP 0000027c: JUMPDEST 0000027d: PUSH2 0x0bcc 00000280: JUMP 00000281: JUMPDEST 00000282: PUSH2 0x01e8 00000285: PUSH2 0x0bd9 00000288: JUMP 00000289: JUMPDEST 0000028a: PUSH2 0x01ad 0000028d: PUSH2 0x0297 00000290: CALLDATASIZE 00000291: PUSH1 0x04 00000293: PUSH2 0x1cc7 00000296: JUMP 00000297: JUMPDEST 00000298: PUSH2 0x0be8 0000029b: JUMP 0000029c: JUMPDEST 0000029d: PUSH2 0x01fd 000002a0: PUSH2 0x0f18 000002a3: JUMP 000002a4: JUMPDEST 000002a5: PUSH2 0x01ad 000002a8: PUSH2 0x0f1e 000002ab: JUMP 000002ac: JUMPDEST 000002ad: PUSH2 0x01fd 000002b0: PUSH2 0x02ba 000002b3: CALLDATASIZE 000002b4: PUSH1 0x04 000002b6: PUSH2 0x1c21 000002b9: JUMP 000002ba: JUMPDEST 000002bb: PUSH2 0x1158 000002be: JUMP 000002bf: JUMPDEST 000002c0: PUSH2 0x01ad 000002c3: PUSH2 0x02cd 000002c6: CALLDATASIZE 000002c7: PUSH1 0x04 000002c9: PUSH2 0x1be9 000002cc: JUMP 000002cd: JUMPDEST 000002ce: PUSH2 0x11aa 000002d1: JUMP 000002d2: JUMPDEST 000002d3: PUSH2 0x01ad 000002d6: PUSH2 0x02e0 000002d9: CALLDATASIZE 000002da: PUSH1 0x04 000002dc: PUSH2 0x1cc7 000002df: JUMP 000002e0: JUMPDEST 000002e1: PUSH2 0x1247 000002e4: JUMP 000002e5: JUMPDEST 000002e6: PUSH2 0x02ed 000002e9: PUSH2 0x1b51 000002ec: JUMP 000002ed: JUMPDEST 000002ee: PUSH2 0x02f5 000002f1: PUSH2 0x1b51 000002f4: JUMP 000002f5: JUMPDEST 000002f6: PUSH1 0x00 000002f8: JUMPDEST 000002f9: PUSH1 0x05 000002fb: DUP2 000002fc: LT 000002fd: ISZERO 000002fe: PUSH2 0x0343 00000301: JUMPI 00000302: PUSH1 0x00 00000304: PUSH2 0x030c 00000307: DUP3 00000308: PUSH2 0x13f8 0000030b: JUMP 0000030c: JUMPDEST 0000030d: SWAP1 0000030e: POP 0000030f: PUSH2 0x0329 00000312: DUP2 00000313: DUP7 00000314: DUP5 00000315: PUSH1 0x05 00000317: DUP2 00000318: LT 00000319: PUSH2 0x031e 0000031c: JUMPI 0000031d: INVALID 0000031e: JUMPDEST 0000031f: PUSH1 0x20 00000321: MUL 00000322: ADD 00000323: CALLDATALOAD 00000324: SWAP1 00000325: PUSH2 0x14b8 00000328: JUMP 00000329: JUMPDEST 0000032a: DUP4 0000032b: DUP4 0000032c: PUSH1 0x05 0000032e: DUP2 0000032f: LT 00000330: PUSH2 0x0335 00000333: JUMPI 00000334: INVALID 00000335: JUMPDEST 00000336: PUSH1 0x20 00000338: MUL 00000339: ADD 0000033a: MSTORE 0000033b: POP 0000033c: PUSH1 0x01 0000033e: ADD 0000033f: PUSH2 0x02f8 00000342: JUMP 00000343: JUMPDEST 00000344: POP 00000345: SWAP3 00000346: SWAP2 00000347: POP 00000348: POP 00000349: JUMP 0000034a: JUMPDEST 0000034b: PUSH1 0x00 0000034d: SLOAD 0000034e: PUSH1 0x01 00000350: PUSH1 0x01 00000352: PUSH1 0xa0 00000354: SHL 00000355: SUB 00000356: AND 00000357: CALLER 00000358: EQ 00000359: PUSH2 0x0361 0000035c: JUMPI 0000035d: PUSH1 0x00 0000035f: DUP1 00000360: REVERT 00000361: JUMPDEST 00000362: PUSH1 0x00 00000364: JUMPDEST 00000365: PUSH1 0x05 00000367: DUP2 00000368: LT 00000369: ISZERO 0000036a: PUSH2 0x0521 0000036d: JUMPI 0000036e: PUSH1 0x03 00000370: DUP2 00000371: PUSH1 0x05 00000373: DUP2 00000374: LT 00000375: PUSH2 0x037a 00000378: JUMPI 00000379: INVALID 0000037a: JUMPDEST 0000037b: ADD 0000037c: PUSH1 0x00 0000037e: SWAP1 0000037f: SLOAD 00000380: SWAP1 00000381: PUSH2 0x0100 00000384: EXP 00000385: SWAP1 00000386: DIV 00000387: PUSH1 0x01 00000389: PUSH1 0x01 0000038b: PUSH1 0xa0 0000038d: SHL 0000038e: SUB 0000038f: AND 00000390: PUSH1 0x01 00000392: PUSH1 0x01 00000394: PUSH1 0xa0 00000396: SHL 00000397: SUB 00000398: AND 00000399: PUSH4 0xb16a19de 0000039e: PUSH1 0x40 000003a0: MLOAD 000003a1: DUP2 000003a2: PUSH4 0xffffffff 000003a7: AND 000003a8: PUSH1 0xe0 000003aa: SHL 000003ab: DUP2 000003ac: MSTORE 000003ad: PUSH1 0x04 000003af: ADD 000003b0: PUSH1 0x20 000003b2: PUSH1 0x40 000003b4: MLOAD 000003b5: DUP1 000003b6: DUP4 000003b7: SUB 000003b8: DUP2 000003b9: DUP7 000003ba: DUP1 000003bb: EXTCODESIZE 000003bc: ISZERO 000003bd: DUP1 000003be: ISZERO 000003bf: PUSH2 0x03c7 000003c2: JUMPI 000003c3: PUSH1 0x00 000003c5: DUP1 000003c6: REVERT 000003c7: JUMPDEST 000003c8: POP 000003c9: GAS 000003ca: STATICCALL 000003cb: ISZERO 000003cc: DUP1 000003cd: ISZERO 000003ce: PUSH2 0x03db 000003d1: JUMPI 000003d2: RETURNDATASIZE 000003d3: PUSH1 0x00 000003d5: DUP1 000003d6: RETURNDATACOPY 000003d7: RETURNDATASIZE 000003d8: PUSH1 0x00 000003da: REVERT 000003db: JUMPDEST 000003dc: POP 000003dd: POP 000003de: POP 000003df: POP 000003e0: PUSH1 0x40 000003e2: MLOAD 000003e3: RETURNDATASIZE 000003e4: PUSH1 0x1f 000003e6: NOT 000003e7: PUSH1 0x1f 000003e9: DUP3 000003ea: ADD 000003eb: AND 000003ec: DUP3 000003ed: ADD 000003ee: DUP1 000003ef: PUSH1 0x40 000003f1: MSTORE 000003f2: POP 000003f3: DUP2 000003f4: ADD 000003f5: SWAP1 000003f6: PUSH2 0x03ff 000003f9: SWAP2 000003fa: SWAP1 000003fb: PUSH2 0x1c05 000003fe: JUMP 000003ff: JUMPDEST 00000400: PUSH1 0x08 00000402: DUP3 00000403: PUSH1 0x05 00000405: DUP2 00000406: LT 00000407: PUSH2 0x040c 0000040a: JUMPI 0000040b: INVALID 0000040c: JUMPDEST 0000040d: ADD 0000040e: DUP1 0000040f: SLOAD 00000410: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000431: AND 00000432: PUSH1 0x01 00000434: PUSH1 0x01 00000436: PUSH1 0xa0 00000438: SHL 00000439: SUB 0000043a: SWAP3 0000043b: SWAP1 0000043c: SWAP3 0000043d: AND 0000043e: SWAP2 0000043f: SWAP1 00000440: SWAP2 00000441: OR 00000442: SWAP1 00000443: SSTORE 00000444: PUSH1 0x03 00000446: DUP2 00000447: PUSH1 0x05 00000449: DUP2 0000044a: LT 0000044b: PUSH2 0x0450 0000044e: JUMPI 0000044f: INVALID 00000450: JUMPDEST 00000451: ADD 00000452: PUSH1 0x00 00000454: SWAP1 00000455: SLOAD 00000456: SWAP1 00000457: PUSH2 0x0100 0000045a: EXP 0000045b: SWAP1 0000045c: DIV 0000045d: PUSH1 0x01 0000045f: PUSH1 0x01 00000461: PUSH1 0xa0 00000463: SHL 00000464: SUB 00000465: AND 00000466: PUSH1 0x01 00000468: PUSH1 0x01 0000046a: PUSH1 0xa0 0000046c: SHL 0000046d: SUB 0000046e: AND 0000046f: PUSH4 0x7535d246 00000474: PUSH1 0x40 00000476: MLOAD 00000477: DUP2 00000478: PUSH4 0xffffffff 0000047d: AND 0000047e: PUSH1 0xe0 00000480: SHL 00000481: DUP2 00000482: MSTORE 00000483: PUSH1 0x04 00000485: ADD 00000486: PUSH1 0x20 00000488: PUSH1 0x40 0000048a: MLOAD 0000048b: DUP1 0000048c: DUP4 0000048d: SUB 0000048e: DUP2 0000048f: DUP7 00000490: DUP1 00000491: EXTCODESIZE 00000492: ISZERO 00000493: DUP1 00000494: ISZERO 00000495: PUSH2 0x049d 00000498: JUMPI 00000499: PUSH1 0x00 0000049b: DUP1 0000049c: REVERT 0000049d: JUMPDEST 0000049e: POP 0000049f: GAS 000004a0: STATICCALL 000004a1: ISZERO 000004a2: DUP1 000004a3: ISZERO 000004a4: PUSH2 0x04b1 000004a7: JUMPI 000004a8: RETURNDATASIZE 000004a9: PUSH1 0x00 000004ab: DUP1 000004ac: RETURNDATACOPY 000004ad: RETURNDATASIZE 000004ae: PUSH1 0x00 000004b0: REVERT 000004b1: JUMPDEST 000004b2: POP 000004b3: POP 000004b4: POP 000004b5: POP 000004b6: PUSH1 0x40 000004b8: MLOAD 000004b9: RETURNDATASIZE 000004ba: PUSH1 0x1f 000004bc: NOT 000004bd: PUSH1 0x1f 000004bf: DUP3 000004c0: ADD 000004c1: AND 000004c2: DUP3 000004c3: ADD 000004c4: DUP1 000004c5: PUSH1 0x40 000004c7: MSTORE 000004c8: POP 000004c9: DUP2 000004ca: ADD 000004cb: SWAP1 000004cc: PUSH2 0x04d5 000004cf: SWAP2 000004d0: SWAP1 000004d1: PUSH2 0x1c05 000004d4: JUMP 000004d5: JUMPDEST 000004d6: PUSH1 0x0d 000004d8: DUP3 000004d9: PUSH1 0x05 000004db: DUP2 000004dc: LT 000004dd: PUSH2 0x04e2 000004e0: JUMPI 000004e1: INVALID 000004e2: JUMPDEST 000004e3: ADD 000004e4: DUP1 000004e5: SLOAD 000004e6: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000507: AND 00000508: PUSH1 0x01 0000050a: PUSH1 0x01 0000050c: PUSH1 0xa0 0000050e: SHL 0000050f: SUB 00000510: SWAP3 00000511: SWAP1 00000512: SWAP3 00000513: AND 00000514: SWAP2 00000515: SWAP1 00000516: SWAP2 00000517: OR 00000518: SWAP1 00000519: SSTORE 0000051a: PUSH1 0x01 0000051c: ADD 0000051d: PUSH2 0x0364 00000520: JUMP 00000521: JUMPDEST 00000522: POP 00000523: JUMP 00000524: JUMPDEST 00000525: PUSH2 0x052c 00000528: PUSH2 0x1b51 0000052b: JUMP 0000052c: JUMPDEST 0000052d: PUSH2 0x0534 00000530: PUSH2 0x1b51 00000533: JUMP 00000534: JUMPDEST 00000535: PUSH1 0x00 00000537: JUMPDEST 00000538: PUSH1 0x05 0000053a: DUP2 0000053b: LT 0000053c: ISZERO 0000053d: PUSH2 0x0343 00000540: JUMPI 00000541: PUSH1 0x00 00000543: PUSH2 0x054b 00000546: DUP3 00000547: PUSH2 0x13f8 0000054a: JUMP 0000054b: JUMPDEST 0000054c: SWAP1 0000054d: POP 0000054e: PUSH2 0x0568 00000551: DUP2 00000552: DUP7 00000553: DUP5 00000554: PUSH1 0x05 00000556: DUP2 00000557: LT 00000558: PUSH2 0x055d 0000055b: JUMPI 0000055c: INVALID 0000055d: JUMPDEST 0000055e: PUSH1 0x20 00000560: MUL 00000561: ADD 00000562: CALLDATALOAD 00000563: SWAP1 00000564: PUSH2 0x1595 00000567: JUMP 00000568: JUMPDEST 00000569: DUP4 0000056a: DUP4 0000056b: PUSH1 0x05 0000056d: DUP2 0000056e: LT 0000056f: PUSH2 0x0574 00000572: JUMPI 00000573: INVALID 00000574: JUMPDEST 00000575: PUSH1 0x20 00000577: MUL 00000578: ADD 00000579: MSTORE 0000057a: POP 0000057b: PUSH1 0x01 0000057d: ADD 0000057e: PUSH2 0x0537 00000581: JUMP 00000582: JUMPDEST 00000583: PUSH1 0x00 00000585: SLOAD 00000586: PUSH1 0x01 00000588: PUSH1 0x01 0000058a: PUSH1 0xa0 0000058c: SHL 0000058d: SUB 0000058e: AND 0000058f: CALLER 00000590: EQ 00000591: PUSH2 0x0599 00000594: JUMPI 00000595: PUSH1 0x00 00000597: DUP1 00000598: REVERT 00000599: JUMPDEST 0000059a: PUSH2 0x05a1 0000059d: PUSH2 0x1b51 000005a0: JUMP 000005a1: JUMPDEST 000005a2: PUSH2 0x05ac 000005a5: PUSH1 0x01 000005a7: SLOAD 000005a8: PUSH2 0x16aa 000005ab: JUMP 000005ac: JUMPDEST 000005ad: SWAP1 000005ae: POP 000005af: PUSH2 0x05b6 000005b2: PUSH2 0x1b6f 000005b5: JUMP 000005b6: JUMPDEST 000005b7: PUSH1 0x00 000005b9: JUMPDEST 000005ba: DUP4 000005bb: DUP2 000005bc: LT 000005bd: ISZERO 000005be: PUSH2 0x0786 000005c1: JUMPI 000005c2: PUSH2 0x05c9 000005c5: PUSH2 0x1b8d 000005c8: JUMP 000005c9: JUMPDEST 000005ca: DUP6 000005cb: DUP6 000005cc: DUP4 000005cd: DUP2 000005ce: DUP2 000005cf: LT 000005d0: PUSH2 0x05d5 000005d3: JUMPI 000005d4: INVALID 000005d5: JUMPDEST 000005d6: SWAP1 000005d7: POP 000005d8: PUSH2 0x0120 000005db: MUL 000005dc: ADD 000005dd: DUP1 000005de: CALLDATASIZE 000005df: SUB 000005e0: DUP2 000005e1: ADD 000005e2: SWAP1 000005e3: PUSH2 0x05ec 000005e6: SWAP2 000005e7: SWAP1 000005e8: PUSH2 0x1d02 000005eb: JUMP 000005ec: JUMPDEST 000005ed: PUSH1 0x80 000005ef: DUP2 000005f0: ADD 000005f1: MLOAD 000005f2: PUSH1 0x01 000005f4: PUSH1 0x01 000005f6: PUSH1 0xa0 000005f8: SHL 000005f9: SUB 000005fa: AND 000005fb: PUSH1 0x00 000005fd: SWAP1 000005fe: DUP2 000005ff: MSTORE 00000600: PUSH1 0x13 00000602: PUSH1 0x20 00000604: MSTORE 00000605: PUSH1 0x40 00000607: SWAP1 00000608: KECCAK256 00000609: SLOAD 0000060a: SWAP1 0000060b: SWAP2 0000060c: POP 0000060d: PUSH2 0x0617 00000610: SWAP1 00000611: DUP5 00000612: SWAP1 00000613: PUSH2 0x1700 00000616: JUMP 00000617: JUMPDEST 00000618: DUP3 00000619: MLOAD 0000061a: PUSH2 0x0624 0000061d: SWAP1 0000061e: DUP3 0000061f: SWAP1 00000620: PUSH2 0x1746 00000623: JUMP 00000624: JUMPDEST 00000625: DUP3 00000626: MLOAD 00000627: PUSH1 0x01 00000629: ADD 0000062a: DUP4 0000062b: MSTORE 0000062c: PUSH1 0x00 0000062e: JUMPDEST 0000062f: PUSH1 0x05 00000631: DUP2 00000632: LT 00000633: ISZERO 00000634: PUSH2 0x0756 00000637: JUMPI 00000638: DUP2 00000639: MLOAD 0000063a: PUSH1 0x00 0000063c: SWAP1 0000063d: DUP3 0000063e: PUSH1 0x05 00000640: DUP2 00000641: LT 00000642: PUSH2 0x0647 00000645: JUMPI 00000646: INVALID 00000647: JUMPDEST 00000648: PUSH1 0x20 0000064a: MUL 0000064b: ADD 0000064c: MLOAD 0000064d: SWAP1 0000064e: POP 0000064f: DUP1 00000650: PUSH2 0x0659 00000653: JUMPI 00000654: POP 00000655: PUSH2 0x074e 00000658: JUMP 00000659: JUMPDEST 0000065a: PUSH1 0x00 0000065c: DUP6 0000065d: DUP4 0000065e: PUSH1 0x01 00000660: ADD 00000661: PUSH1 0x06 00000663: DUP2 00000664: LT 00000665: PUSH2 0x066a 00000668: JUMPI 00000669: INVALID 0000066a: JUMPDEST 0000066b: PUSH1 0x20 0000066d: MUL 0000066e: ADD 0000066f: MLOAD 00000670: SWAP1 00000671: POP 00000672: PUSH1 0x00 00000674: DUP8 00000675: DUP5 00000676: PUSH1 0x05 00000678: DUP2 00000679: LT 0000067a: PUSH2 0x067f 0000067d: JUMPI 0000067e: INVALID 0000067f: JUMPDEST 00000680: PUSH1 0x20 00000682: MUL 00000683: ADD 00000684: MLOAD 00000685: SWAP1 00000686: POP 00000687: PUSH1 0x00 00000689: DUP1 0000068a: DUP5 0000068b: SLT 0000068c: SWAP1 0000068d: DUP2 0000068e: PUSH2 0x0697 00000691: JUMPI 00000692: DUP5 00000693: PUSH2 0x069c 00000696: JUMP 00000697: JUMPDEST 00000698: DUP5 00000699: PUSH1 0x00 0000069b: SUB 0000069c: JUMPDEST 0000069d: SWAP1 0000069e: POP 0000069f: DUP2 000006a0: ISZERO 000006a1: PUSH2 0x06e7 000006a4: JUMPI 000006a5: DUP1 000006a6: DUP5 000006a7: LT 000006a8: ISZERO 000006a9: PUSH2 0x06e7 000006ac: JUMPI 000006ad: PUSH1 0x40 000006af: MLOAD 000006b0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006d1: DUP2 000006d2: MSTORE 000006d3: PUSH1 0x04 000006d5: ADD 000006d6: PUSH2 0x06de 000006d9: SWAP1 000006da: PUSH2 0x20d5 000006dd: JUMP 000006de: JUMPDEST 000006df: PUSH1 0x40 000006e1: MLOAD 000006e2: DUP1 000006e3: SWAP2 000006e4: SUB 000006e5: SWAP1 000006e6: REVERT 000006e7: JUMPDEST 000006e8: DUP2 000006e9: PUSH2 0x06fb 000006ec: JUMPI 000006ed: PUSH2 0x06f6 000006f0: DUP5 000006f1: DUP3 000006f2: PUSH2 0x18a8 000006f5: JUMP 000006f6: JUMPDEST 000006f7: PUSH2 0x0705 000006fa: JUMP 000006fb: JUMPDEST 000006fc: PUSH2 0x0705 000006ff: DUP5 00000700: DUP3 00000701: PUSH2 0x18b5 00000704: JUMP 00000705: JUMPDEST 00000706: DUP10 00000707: DUP8 00000708: PUSH1 0x01 0000070a: ADD 0000070b: PUSH1 0x06 0000070d: DUP2 0000070e: LT 0000070f: PUSH2 0x0714 00000712: JUMPI 00000713: INVALID 00000714: JUMPDEST 00000715: PUSH1 0x20 00000717: MUL 00000718: ADD 00000719: MSTORE 0000071a: DUP2 0000071b: PUSH2 0x072d 0000071e: JUMPI 0000071f: PUSH2 0x0728 00000722: DUP4 00000723: DUP3 00000724: PUSH2 0x18a8 00000727: JUMP 00000728: JUMPDEST 00000729: PUSH2 0x0737 0000072c: JUMP 0000072d: JUMPDEST 0000072e: PUSH2 0x0737 00000731: DUP4 00000732: DUP3 00000733: PUSH2 0x18b5 00000736: JUMP 00000737: JUMPDEST 00000738: DUP11 00000739: DUP8 0000073a: PUSH1 0x05 0000073c: DUP2 0000073d: LT 0000073e: PUSH2 0x0743 00000741: JUMPI 00000742: INVALID 00000743: JUMPDEST 00000744: PUSH1 0x20 00000746: MUL 00000747: ADD 00000748: MSTORE 00000749: POP 0000074a: POP 0000074b: POP 0000074c: POP 0000074d: POP 0000074e: JUMPDEST 0000074f: PUSH1 0x01 00000751: ADD 00000752: PUSH2 0x062e 00000755: JUMP 00000756: JUMPDEST 00000757: POP 00000758: PUSH2 0x0760 0000075b: DUP4 0000075c: PUSH2 0x18c7 0000075f: JUMP 00000760: JUMPDEST 00000761: PUSH1 0x80 00000763: SWAP1 00000764: SWAP2 00000765: ADD 00000766: MLOAD 00000767: PUSH1 0x01 00000769: PUSH1 0x01 0000076b: PUSH1 0xa0 0000076d: SHL 0000076e: SUB 0000076f: AND 00000770: PUSH1 0x00 00000772: SWAP1 00000773: DUP2 00000774: MSTORE 00000775: PUSH1 0x13 00000777: PUSH1 0x20 00000779: MSTORE 0000077a: PUSH1 0x40 0000077c: SWAP1 0000077d: KECCAK256 0000077e: SSTORE 0000077f: PUSH1 0x01 00000781: ADD 00000782: PUSH2 0x05b9 00000785: JUMP 00000786: JUMPDEST 00000787: POP 00000788: PUSH1 0x00 0000078a: JUMPDEST 0000078b: PUSH1 0x05 0000078d: DUP2 0000078e: LT 0000078f: ISZERO 00000790: PUSH2 0x07ed 00000793: JUMPI 00000794: PUSH2 0x079c 00000797: DUP2 00000798: PUSH2 0x1944 0000079b: JUMP 0000079c: JUMPDEST 0000079d: DUP4 0000079e: DUP3 0000079f: PUSH1 0x05 000007a1: DUP2 000007a2: LT 000007a3: PUSH2 0x07a8 000007a6: JUMPI 000007a7: INVALID 000007a8: JUMPDEST 000007a9: PUSH1 0x20 000007ab: MUL 000007ac: ADD 000007ad: MLOAD 000007ae: GT 000007af: ISZERO 000007b0: PUSH2 0x07e5 000007b3: JUMPI 000007b4: PUSH1 0x40 000007b6: MLOAD 000007b7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000007d8: DUP2 000007d9: MSTORE 000007da: PUSH1 0x04 000007dc: ADD 000007dd: PUSH2 0x06de 000007e0: SWAP1 000007e1: PUSH2 0x2067 000007e4: JUMP 000007e5: JUMPDEST 000007e6: PUSH1 0x01 000007e8: ADD 000007e9: PUSH2 0x078a 000007ec: JUMP 000007ed: JUMPDEST 000007ee: POP 000007ef: PUSH2 0x07f7 000007f2: DUP3 000007f3: PUSH2 0x1a8a 000007f6: JUMP 000007f7: JUMPDEST 000007f8: PUSH1 0x01 000007fa: SSTORE 000007fb: POP 000007fc: POP 000007fd: POP 000007fe: POP 000007ff: JUMP 00000800: JUMPDEST 00000801: PUSH1 0x03 00000803: DUP2 00000804: PUSH1 0x05 00000806: DUP2 00000807: LT 00000808: PUSH2 0x080d 0000080b: JUMPI 0000080c: INVALID 0000080d: JUMPDEST 0000080e: ADD 0000080f: SLOAD 00000810: PUSH1 0x01 00000812: PUSH1 0x01 00000814: PUSH1 0xa0 00000816: SHL 00000817: SUB 00000818: AND 00000819: SWAP1 0000081a: POP 0000081b: DUP2 0000081c: JUMP 0000081d: JUMPDEST 0000081e: PUSH1 0x06 00000820: DUP2 00000821: JUMP 00000822: JUMPDEST 00000823: PUSH1 0x01 00000825: PUSH1 0x01 00000827: PUSH1 0xa0 00000829: SHL 0000082a: SUB 0000082b: AND 0000082c: PUSH1 0x00 0000082e: SWAP1 0000082f: DUP2 00000830: MSTORE 00000831: PUSH1 0x13 00000833: PUSH1 0x20 00000835: MSTORE 00000836: PUSH1 0x40 00000838: SWAP1 00000839: KECCAK256 0000083a: SLOAD 0000083b: PUSH1 0xf0 0000083d: SHR 0000083e: SWAP1 0000083f: JUMP 00000840: JUMPDEST 00000841: PUSH1 0x00 00000843: SLOAD 00000844: PUSH1 0x01 00000846: PUSH1 0x01 00000848: PUSH1 0xa0 0000084a: SHL 0000084b: SUB 0000084c: AND 0000084d: CALLER 0000084e: EQ 0000084f: PUSH2 0x0857 00000852: JUMPI 00000853: PUSH1 0x00 00000855: DUP1 00000856: REVERT 00000857: JUMPDEST 00000858: PUSH1 0x02 0000085a: SSTORE 0000085b: JUMP 0000085c: JUMPDEST 0000085d: PUSH2 0x0864 00000860: PUSH2 0x1b51 00000863: JUMP 00000864: JUMPDEST 00000865: PUSH2 0x086c 00000868: PUSH2 0x1b51 0000086b: JUMP 0000086c: JUMPDEST 0000086d: PUSH1 0x00 0000086f: SLOAD 00000870: PUSH1 0x01 00000872: PUSH1 0x01 00000874: PUSH1 0xa0 00000876: SHL 00000877: SUB 00000878: DUP5 00000879: DUP2 0000087a: AND 0000087b: SWAP2 0000087c: AND 0000087d: EQ 0000087e: ISZERO 0000087f: PUSH2 0x08f6 00000882: JUMPI 00000883: PUSH2 0x088a 00000886: PUSH2 0x1b51 00000889: JUMP 0000088a: JUMPDEST 0000088b: PUSH2 0x0895 0000088e: PUSH1 0x01 00000890: SLOAD 00000891: PUSH2 0x16aa 00000894: JUMP 00000895: JUMPDEST 00000896: SWAP1 00000897: POP 00000898: PUSH1 0x00 0000089a: JUMPDEST 0000089b: PUSH1 0x05 0000089d: DUP2 0000089e: LT 0000089f: ISZERO 000008a0: PUSH2 0x08ef 000008a3: JUMPI 000008a4: PUSH1 0x00 000008a6: DUP3 000008a7: DUP3 000008a8: PUSH1 0x05 000008aa: DUP2 000008ab: LT 000008ac: PUSH2 0x08b1 000008af: JUMPI 000008b0: INVALID 000008b1: JUMPDEST 000008b2: PUSH1 0x20 000008b4: MUL 000008b5: ADD 000008b6: MLOAD 000008b7: PUSH2 0x08bf 000008ba: DUP4 000008bb: PUSH2 0x1944 000008be: JUMP 000008bf: JUMPDEST 000008c0: SUB 000008c1: SWAP1 000008c2: POP 000008c3: PUSH2 0x08d5 000008c6: PUSH2 0x08ce 000008c9: DUP4 000008ca: PUSH2 0x13f8 000008cd: JUMP 000008ce: JUMPDEST 000008cf: DUP3 000008d0: SWAP1 000008d1: PUSH2 0x14b8 000008d4: JUMP 000008d5: JUMPDEST 000008d6: DUP5 000008d7: DUP4 000008d8: PUSH1 0x05 000008da: DUP2 000008db: LT 000008dc: PUSH2 0x08e1 000008df: JUMPI 000008e0: INVALID 000008e1: JUMPDEST 000008e2: PUSH1 0x20 000008e4: MUL 000008e5: ADD 000008e6: MSTORE 000008e7: POP 000008e8: PUSH1 0x01 000008ea: ADD 000008eb: PUSH2 0x089a 000008ee: JUMP 000008ef: JUMPDEST 000008f0: POP 000008f1: POP 000008f2: PUSH2 0x096f 000008f5: JUMP 000008f6: JUMPDEST 000008f7: PUSH2 0x08fe 000008fa: PUSH2 0x1b6f 000008fd: JUMP 000008fe: JUMPDEST 000008ff: PUSH1 0x01 00000901: PUSH1 0x01 00000903: PUSH1 0xa0 00000905: SHL 00000906: SUB 00000907: DUP5 00000908: AND 00000909: PUSH1 0x00 0000090b: SWAP1 0000090c: DUP2 0000090d: MSTORE 0000090e: PUSH1 0x13 00000910: PUSH1 0x20 00000912: MSTORE 00000913: PUSH1 0x40 00000915: SWAP1 00000916: KECCAK256 00000917: SLOAD 00000918: PUSH2 0x0922 0000091b: SWAP1 0000091c: DUP3 0000091d: SWAP1 0000091e: PUSH2 0x1700 00000921: JUMP 00000922: JUMPDEST 00000923: PUSH1 0x00 00000925: JUMPDEST 00000926: PUSH1 0x05 00000928: DUP2 00000929: LT 0000092a: ISZERO 0000092b: PUSH2 0x096c 0000092e: JUMPI 0000092f: PUSH1 0x00 00000931: DUP3 00000932: DUP3 00000933: PUSH1 0x01 00000935: ADD 00000936: PUSH1 0x06 00000938: DUP2 00000939: LT 0000093a: PUSH2 0x093f 0000093d: JUMPI 0000093e: INVALID 0000093f: JUMPDEST 00000940: PUSH1 0x20 00000942: MUL 00000943: ADD 00000944: MLOAD 00000945: SWAP1 00000946: POP 00000947: PUSH2 0x0952 0000094a: PUSH2 0x08ce 0000094d: DUP4 0000094e: PUSH2 0x13f8 00000951: JUMP 00000952: JUMPDEST 00000953: DUP5 00000954: DUP4 00000955: PUSH1 0x05 00000957: DUP2 00000958: LT 00000959: PUSH2 0x095e 0000095c: JUMPI 0000095d: INVALID 0000095e: JUMPDEST 0000095f: PUSH1 0x20 00000961: MUL 00000962: ADD 00000963: MSTORE 00000964: POP 00000965: PUSH1 0x01 00000967: ADD 00000968: PUSH2 0x0925 0000096b: JUMP 0000096c: JUMPDEST 0000096d: POP 0000096e: POP 0000096f: JUMPDEST 00000970: SWAP3 00000971: SWAP2 00000972: POP 00000973: POP 00000974: JUMP 00000975: JUMPDEST 00000976: PUSH1 0x00 00000978: SLOAD 00000979: PUSH1 0x01 0000097b: PUSH1 0x01 0000097d: PUSH1 0xa0 0000097f: SHL 00000980: SUB 00000981: AND 00000982: CALLER 00000983: EQ 00000984: PUSH2 0x098c 00000987: JUMPI 00000988: PUSH1 0x00 0000098a: DUP1 0000098b: REVERT 0000098c: JUMPDEST 0000098d: PUSH1 0x00 0000098f: DUP1 00000990: SLOAD 00000991: PUSH1 0x40 00000993: MLOAD 00000994: PUSH1 0x01 00000996: PUSH1 0x01 00000998: PUSH1 0xa0 0000099a: SHL 0000099b: SUB 0000099c: SWAP1 0000099d: SWAP2 0000099e: AND 0000099f: SWAP2 000009a0: PUSH32 0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820 000009c1: SWAP2 000009c2: LOG2 000009c3: PUSH1 0x00 000009c5: DUP1 000009c6: SLOAD 000009c7: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000009e8: AND 000009e9: SWAP1 000009ea: SSTORE 000009eb: JUMP 000009ec: JUMPDEST 000009ed: PUSH1 0x40 000009ef: DUP1 000009f0: MLOAD 000009f1: PUSH1 0x05 000009f3: DUP1 000009f4: DUP3 000009f5: MSTORE 000009f6: PUSH1 0xc0 000009f8: DUP3 000009f9: ADD 000009fa: SWAP1 000009fb: SWAP3 000009fc: MSTORE 000009fd: PUSH1 0x00 000009ff: SWAP2 00000a00: PUSH1 0x60 00000a02: SWAP2 00000a03: SWAP1 00000a04: PUSH1 0x20 00000a06: DUP3 00000a07: ADD 00000a08: PUSH1 0xa0 00000a0a: DUP1 00000a0b: CALLDATASIZE 00000a0c: DUP4 00000a0d: CALLDATACOPY 00000a0e: POP 00000a0f: POP 00000a10: PUSH1 0x03 00000a12: SLOAD 00000a13: DUP3 00000a14: MLOAD 00000a15: SWAP3 00000a16: SWAP4 00000a17: POP 00000a18: PUSH1 0x01 00000a1a: PUSH1 0x01 00000a1c: PUSH1 0xa0 00000a1e: SHL 00000a1f: SUB 00000a20: AND 00000a21: SWAP2 00000a22: DUP4 00000a23: SWAP2 00000a24: POP 00000a25: PUSH1 0x00 00000a27: SWAP1 00000a28: PUSH2 0x0a2d 00000a2b: JUMPI 00000a2c: INVALID 00000a2d: JUMPDEST 00000a2e: PUSH1 0x01 00000a30: PUSH1 0x01 00000a32: PUSH1 0xa0 00000a34: SHL 00000a35: SUB 00000a36: SWAP3 00000a37: DUP4 00000a38: AND 00000a39: PUSH1 0x20 00000a3b: SWAP2 00000a3c: DUP3 00000a3d: MUL 00000a3e: SWAP3 00000a3f: SWAP1 00000a40: SWAP3 00000a41: ADD 00000a42: ADD 00000a43: MSTORE 00000a44: PUSH1 0x04 00000a46: SLOAD 00000a47: DUP3 00000a48: MLOAD 00000a49: SWAP2 00000a4a: AND 00000a4b: SWAP1 00000a4c: DUP3 00000a4d: SWAP1 00000a4e: PUSH1 0x01 00000a50: SWAP1 00000a51: DUP2 00000a52: LT 00000a53: PUSH2 0x0a58 00000a56: JUMPI 00000a57: INVALID 00000a58: JUMPDEST 00000a59: PUSH1 0x01 00000a5b: PUSH1 0x01 00000a5d: PUSH1 0xa0 00000a5f: SHL 00000a60: SUB 00000a61: SWAP3 00000a62: DUP4 00000a63: AND 00000a64: PUSH1 0x20 00000a66: SWAP2 00000a67: DUP3 00000a68: MUL 00000a69: SWAP3 00000a6a: SWAP1 00000a6b: SWAP3 00000a6c: ADD 00000a6d: ADD 00000a6e: MSTORE 00000a6f: PUSH1 0x05 00000a71: SLOAD 00000a72: DUP3 00000a73: MLOAD 00000a74: SWAP2 00000a75: AND 00000a76: SWAP1 00000a77: DUP3 00000a78: SWAP1 00000a79: PUSH1 0x02 00000a7b: SWAP1 00000a7c: DUP2 00000a7d: LT 00000a7e: PUSH2 0x0a83 00000a81: JUMPI 00000a82: INVALID 00000a83: JUMPDEST 00000a84: PUSH1 0x01 00000a86: PUSH1 0x01 00000a88: PUSH1 0xa0 00000a8a: SHL 00000a8b: SUB 00000a8c: SWAP3 00000a8d: DUP4 00000a8e: AND 00000a8f: PUSH1 0x20 00000a91: SWAP2 00000a92: DUP3 00000a93: MUL 00000a94: SWAP3 00000a95: SWAP1 00000a96: SWAP3 00000a97: ADD 00000a98: ADD 00000a99: MSTORE 00000a9a: PUSH1 0x06 00000a9c: SLOAD 00000a9d: DUP3 00000a9e: MLOAD 00000a9f: SWAP2 00000aa0: AND 00000aa1: SWAP1 00000aa2: DUP3 00000aa3: SWAP1 00000aa4: PUSH1 0x03 00000aa6: SWAP1 00000aa7: DUP2 00000aa8: LT 00000aa9: PUSH2 0x0aae 00000aac: JUMPI 00000aad: INVALID 00000aae: JUMPDEST 00000aaf: PUSH1 0x01 00000ab1: PUSH1 0x01 00000ab3: PUSH1 0xa0 00000ab5: SHL 00000ab6: SUB 00000ab7: SWAP3 00000ab8: DUP4 00000ab9: AND 00000aba: PUSH1 0x20 00000abc: SWAP2 00000abd: DUP3 00000abe: MUL 00000abf: SWAP3 00000ac0: SWAP1 00000ac1: SWAP3 00000ac2: ADD 00000ac3: ADD 00000ac4: MSTORE 00000ac5: PUSH1 0x07 00000ac7: SLOAD 00000ac8: DUP3 00000ac9: MLOAD 00000aca: SWAP2 00000acb: AND 00000acc: SWAP1 00000acd: DUP3 00000ace: SWAP1 00000acf: PUSH1 0x04 00000ad1: SWAP1 00000ad2: DUP2 00000ad3: LT 00000ad4: PUSH2 0x0ad9 00000ad7: JUMPI 00000ad8: INVALID 00000ad9: JUMPDEST 00000ada: PUSH1 0x01 00000adc: PUSH1 0x01 00000ade: PUSH1 0xa0 00000ae0: SHL 00000ae1: SUB 00000ae2: SWAP3 00000ae3: DUP4 00000ae4: AND 00000ae5: PUSH1 0x20 00000ae7: SWAP2 00000ae8: DUP3 00000ae9: MUL 00000aea: SWAP3 00000aeb: SWAP1 00000aec: SWAP3 00000aed: ADD 00000aee: ADD 00000aef: MSTORE 00000af0: PUSH1 0x12 00000af2: SLOAD 00000af3: PUSH1 0x00 00000af5: SLOAD 00000af6: PUSH1 0x40 00000af8: MLOAD 00000af9: PUSH32 0x3111e7b300000000000000000000000000000000000000000000000000000000 00000b1a: DUP2 00000b1b: MSTORE 00000b1c: SWAP2 00000b1d: DUP4 00000b1e: AND 00000b1f: SWAP3 00000b20: PUSH4 0x3111e7b3 00000b25: SWAP3 00000b26: PUSH2 0x0b58 00000b29: SWAP3 00000b2a: DUP7 00000b2b: SWAP3 00000b2c: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000b4d: SWAP3 00000b4e: SWAP2 00000b4f: AND 00000b50: SWAP1 00000b51: PUSH1 0x04 00000b53: ADD 00000b54: PUSH2 0x1f03 00000b57: JUMP 00000b58: JUMPDEST 00000b59: PUSH1 0x20 00000b5b: PUSH1 0x40 00000b5d: MLOAD 00000b5e: DUP1 00000b5f: DUP4 00000b60: SUB 00000b61: DUP2 00000b62: PUSH1 0x00 00000b64: DUP8 00000b65: DUP1 00000b66: EXTCODESIZE 00000b67: ISZERO 00000b68: DUP1 00000b69: ISZERO 00000b6a: PUSH2 0x0b72 00000b6d: JUMPI 00000b6e: PUSH1 0x00 00000b70: DUP1 00000b71: REVERT 00000b72: JUMPDEST 00000b73: POP 00000b74: GAS 00000b75: CALL 00000b76: ISZERO 00000b77: DUP1 00000b78: ISZERO 00000b79: PUSH2 0x0b86 00000b7c: JUMPI 00000b7d: RETURNDATASIZE 00000b7e: PUSH1 0x00 00000b80: DUP1 00000b81: RETURNDATACOPY 00000b82: RETURNDATASIZE 00000b83: PUSH1 0x00 00000b85: REVERT 00000b86: JUMPDEST 00000b87: POP 00000b88: POP 00000b89: POP 00000b8a: POP 00000b8b: PUSH1 0x40 00000b8d: MLOAD 00000b8e: RETURNDATASIZE 00000b8f: PUSH1 0x1f 00000b91: NOT 00000b92: PUSH1 0x1f 00000b94: DUP3 00000b95: ADD 00000b96: AND 00000b97: DUP3 00000b98: ADD 00000b99: DUP1 00000b9a: PUSH1 0x40 00000b9c: MSTORE 00000b9d: POP 00000b9e: DUP2 00000b9f: ADD 00000ba0: SWAP1 00000ba1: PUSH2 0x0baa 00000ba4: SWAP2 00000ba5: SWAP1 00000ba6: PUSH2 0x1dc3 00000ba9: JUMP 00000baa: JUMPDEST 00000bab: SWAP2 00000bac: POP 00000bad: POP 00000bae: SWAP1 00000baf: JUMP 00000bb0: JUMPDEST 00000bb1: PUSH1 0x00 00000bb3: SLOAD 00000bb4: PUSH1 0x01 00000bb6: PUSH1 0x01 00000bb8: PUSH1 0xa0 00000bba: SHL 00000bbb: SUB 00000bbc: AND 00000bbd: DUP2 00000bbe: JUMP 00000bbf: JUMPDEST 00000bc0: PUSH1 0x08 00000bc2: DUP2 00000bc3: PUSH1 0x05 00000bc5: DUP2 00000bc6: LT 00000bc7: PUSH2 0x080d 00000bca: JUMPI 00000bcb: INVALID 00000bcc: JUMPDEST 00000bcd: PUSH1 0x0d 00000bcf: DUP2 00000bd0: PUSH1 0x05 00000bd2: DUP2 00000bd3: LT 00000bd4: PUSH2 0x080d 00000bd7: JUMPI 00000bd8: INVALID 00000bd9: JUMPDEST 00000bda: PUSH1 0x12 00000bdc: SLOAD 00000bdd: PUSH1 0x01 00000bdf: PUSH1 0x01 00000be1: PUSH1 0xa0 00000be3: SHL 00000be4: SUB 00000be5: AND 00000be6: DUP2 00000be7: JUMP 00000be8: JUMPDEST 00000be9: PUSH2 0x0bf0 00000bec: PUSH2 0x1b6f 00000bef: JUMP 00000bf0: JUMPDEST 00000bf1: CALLER 00000bf2: PUSH1 0x00 00000bf4: SWAP1 00000bf5: DUP2 00000bf6: MSTORE 00000bf7: PUSH1 0x13 00000bf9: PUSH1 0x20 00000bfb: MSTORE 00000bfc: PUSH1 0x40 00000bfe: SWAP1 00000bff: KECCAK256 00000c00: SLOAD 00000c01: PUSH2 0x0c0b 00000c04: SWAP1 00000c05: DUP3 00000c06: SWAP1 00000c07: PUSH2 0x1700 00000c0a: JUMP 00000c0b: JUMPDEST 00000c0c: PUSH2 0x0c13 00000c0f: PUSH2 0x1b51 00000c12: JUMP 00000c13: JUMPDEST 00000c14: PUSH2 0x0c1e 00000c17: PUSH1 0x01 00000c19: SLOAD 00000c1a: PUSH2 0x16aa 00000c1d: JUMP 00000c1e: JUMPDEST 00000c1f: SWAP1 00000c20: POP 00000c21: PUSH1 0x00 00000c23: JUMPDEST 00000c24: PUSH1 0x05 00000c26: DUP2 00000c27: LT 00000c28: ISZERO 00000c29: PUSH2 0x0d09 00000c2c: JUMPI 00000c2d: DUP4 00000c2e: DUP2 00000c2f: PUSH1 0x05 00000c31: DUP2 00000c32: LT 00000c33: PUSH2 0x0c38 00000c36: JUMPI 00000c37: INVALID 00000c38: JUMPDEST 00000c39: PUSH1 0x20 00000c3b: MUL 00000c3c: ADD 00000c3d: CALLDATALOAD 00000c3e: PUSH2 0x0c46 00000c41: JUMPI 00000c42: PUSH2 0x0d01 00000c45: JUMP 00000c46: JUMPDEST 00000c47: PUSH1 0x00 00000c49: PUSH2 0x0c60 00000c4c: PUSH2 0x0c54 00000c4f: DUP4 00000c50: PUSH2 0x13f8 00000c53: JUMP 00000c54: JUMPDEST 00000c55: DUP7 00000c56: DUP5 00000c57: PUSH1 0x05 00000c59: DUP2 00000c5a: LT 00000c5b: PUSH2 0x055d 00000c5e: JUMPI 00000c5f: INVALID 00000c60: JUMPDEST 00000c61: SWAP1 00000c62: POP 00000c63: PUSH1 0x00 00000c65: DUP5 00000c66: DUP4 00000c67: PUSH1 0x01 00000c69: ADD 00000c6a: PUSH1 0x06 00000c6c: DUP2 00000c6d: LT 00000c6e: PUSH2 0x0c73 00000c71: JUMPI 00000c72: INVALID 00000c73: JUMPDEST 00000c74: PUSH1 0x20 00000c76: MUL 00000c77: ADD 00000c78: MLOAD 00000c79: SWAP1 00000c7a: POP 00000c7b: DUP1 00000c7c: DUP3 00000c7d: GT 00000c7e: ISZERO 00000c7f: PUSH2 0x0cb4 00000c82: JUMPI 00000c83: PUSH1 0x40 00000c85: MLOAD 00000c86: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ca7: DUP2 00000ca8: MSTORE 00000ca9: PUSH1 0x04 00000cab: ADD 00000cac: PUSH2 0x06de 00000caf: SWAP1 00000cb0: PUSH2 0x2030 00000cb3: JUMP 00000cb4: JUMPDEST 00000cb5: PUSH2 0x0ccf 00000cb8: DUP3 00000cb9: DUP6 00000cba: DUP6 00000cbb: PUSH1 0x05 00000cbd: DUP2 00000cbe: LT 00000cbf: PUSH2 0x0cc4 00000cc2: JUMPI 00000cc3: INVALID 00000cc4: JUMPDEST 00000cc5: PUSH1 0x20 00000cc7: MUL 00000cc8: ADD 00000cc9: MLOAD 00000cca: SWAP1 00000ccb: PUSH2 0x18b5 00000cce: JUMP 00000ccf: JUMPDEST 00000cd0: DUP5 00000cd1: DUP5 00000cd2: PUSH1 0x05 00000cd4: DUP2 00000cd5: LT 00000cd6: PUSH2 0x0cdb 00000cd9: JUMPI 00000cda: INVALID 00000cdb: JUMPDEST 00000cdc: PUSH1 0x20 00000cde: MUL 00000cdf: ADD 00000ce0: MSTORE 00000ce1: PUSH2 0x0cea 00000ce4: DUP2 00000ce5: DUP4 00000ce6: PUSH2 0x18b5 00000ce9: JUMP 00000cea: JUMPDEST 00000ceb: DUP6 00000cec: DUP5 00000ced: PUSH1 0x01 00000cef: ADD 00000cf0: PUSH1 0x06 00000cf2: DUP2 00000cf3: LT 00000cf4: PUSH2 0x0cf9 00000cf7: JUMPI 00000cf8: INVALID 00000cf9: JUMPDEST 00000cfa: PUSH1 0x20 00000cfc: MUL 00000cfd: ADD 00000cfe: MSTORE 00000cff: POP 00000d00: POP 00000d01: JUMPDEST 00000d02: PUSH1 0x01 00000d04: ADD 00000d05: PUSH2 0x0c23 00000d08: JUMP 00000d09: JUMPDEST 00000d0a: POP 00000d0b: PUSH2 0x0d13 00000d0e: DUP3 00000d0f: PUSH2 0x18c7 00000d12: JUMP 00000d13: JUMPDEST 00000d14: CALLER 00000d15: PUSH1 0x00 00000d17: SWAP1 00000d18: DUP2 00000d19: MSTORE 00000d1a: PUSH1 0x13 00000d1c: PUSH1 0x20 00000d1e: MSTORE 00000d1f: PUSH1 0x40 00000d21: SWAP1 00000d22: KECCAK256 00000d23: SSTORE 00000d24: PUSH2 0x0d2c 00000d27: DUP2 00000d28: PUSH2 0x1a8a 00000d2b: JUMP 00000d2c: JUMPDEST 00000d2d: PUSH1 0x01 00000d2f: SSTORE 00000d30: PUSH1 0x00 00000d32: JUMPDEST 00000d33: PUSH1 0x05 00000d35: DUP2 00000d36: LT 00000d37: ISZERO 00000d38: PUSH2 0x0ec0 00000d3b: JUMPI 00000d3c: DUP4 00000d3d: DUP2 00000d3e: PUSH1 0x05 00000d40: DUP2 00000d41: LT 00000d42: PUSH2 0x0d47 00000d45: JUMPI 00000d46: INVALID 00000d47: JUMPDEST 00000d48: PUSH1 0x20 00000d4a: MUL 00000d4b: ADD 00000d4c: CALLDATALOAD 00000d4d: PUSH2 0x0d55 00000d50: JUMPI 00000d51: PUSH2 0x0eb8 00000d54: JUMP 00000d55: JUMPDEST 00000d56: PUSH1 0x0d 00000d58: DUP2 00000d59: PUSH1 0x05 00000d5b: DUP2 00000d5c: LT 00000d5d: PUSH2 0x0d62 00000d60: JUMPI 00000d61: INVALID 00000d62: JUMPDEST 00000d63: ADD 00000d64: SLOAD 00000d65: PUSH1 0x01 00000d67: PUSH1 0x01 00000d69: PUSH1 0xa0 00000d6b: SHL 00000d6c: SUB 00000d6d: AND 00000d6e: PUSH4 0x69328dec 00000d73: PUSH1 0x08 00000d75: DUP4 00000d76: PUSH1 0x05 00000d78: DUP2 00000d79: LT 00000d7a: PUSH2 0x0d7f 00000d7d: JUMPI 00000d7e: INVALID 00000d7f: JUMPDEST 00000d80: ADD 00000d81: SLOAD 00000d82: PUSH1 0x01 00000d84: PUSH1 0x01 00000d86: PUSH1 0xa0 00000d88: SHL 00000d89: SUB 00000d8a: AND 00000d8b: PUSH2 0x0e45 00000d8e: PUSH2 0x0da9 00000d91: DUP9 00000d92: DUP7 00000d93: PUSH1 0x05 00000d95: DUP2 00000d96: LT 00000d97: PUSH2 0x0d9c 00000d9a: JUMPI 00000d9b: INVALID 00000d9c: JUMPDEST 00000d9d: PUSH1 0x20 00000d9f: MUL 00000da0: ADD 00000da1: CALLDATALOAD 00000da2: PUSH1 0x02 00000da4: SLOAD 00000da5: PUSH2 0x1af6 00000da8: JUMP 00000da9: JUMPDEST 00000daa: PUSH1 0x06 00000dac: PUSH1 0x03 00000dae: DUP8 00000daf: PUSH1 0x05 00000db1: DUP2 00000db2: LT 00000db3: PUSH2 0x0db8 00000db6: JUMPI 00000db7: INVALID 00000db8: JUMPDEST 00000db9: ADD 00000dba: PUSH1 0x00 00000dbc: SWAP1 00000dbd: SLOAD 00000dbe: SWAP1 00000dbf: PUSH2 0x0100 00000dc2: EXP 00000dc3: SWAP1 00000dc4: DIV 00000dc5: PUSH1 0x01 00000dc7: PUSH1 0x01 00000dc9: PUSH1 0xa0 00000dcb: SHL 00000dcc: SUB 00000dcd: AND 00000dce: PUSH1 0x01 00000dd0: PUSH1 0x01 00000dd2: PUSH1 0xa0 00000dd4: SHL 00000dd5: SUB 00000dd6: AND 00000dd7: PUSH4 0x313ce567 00000ddc: PUSH1 0x40 00000dde: MLOAD 00000ddf: DUP2 00000de0: PUSH4 0xffffffff 00000de5: AND 00000de6: PUSH1 0xe0 00000de8: SHL 00000de9: DUP2 00000dea: MSTORE 00000deb: PUSH1 0x04 00000ded: ADD 00000dee: PUSH1 0x20 00000df0: PUSH1 0x40 00000df2: MLOAD 00000df3: DUP1 00000df4: DUP4 00000df5: SUB 00000df6: DUP2 00000df7: DUP7 00000df8: DUP1 00000df9: EXTCODESIZE 00000dfa: ISZERO 00000dfb: DUP1 00000dfc: ISZERO 00000dfd: PUSH2 0x0e05 00000e00: JUMPI 00000e01: PUSH1 0x00 00000e03: DUP1 00000e04: REVERT 00000e05: JUMPDEST 00000e06: POP 00000e07: GAS 00000e08: STATICCALL 00000e09: ISZERO 00000e0a: DUP1 00000e0b: ISZERO 00000e0c: PUSH2 0x0e19 00000e0f: JUMPI 00000e10: RETURNDATASIZE 00000e11: PUSH1 0x00 00000e13: DUP1 00000e14: RETURNDATACOPY 00000e15: RETURNDATASIZE 00000e16: PUSH1 0x00 00000e18: REVERT 00000e19: JUMPDEST 00000e1a: POP 00000e1b: POP 00000e1c: POP 00000e1d: POP 00000e1e: PUSH1 0x40 00000e20: MLOAD 00000e21: RETURNDATASIZE 00000e22: PUSH1 0x1f 00000e24: NOT 00000e25: PUSH1 0x1f 00000e27: DUP3 00000e28: ADD 00000e29: AND 00000e2a: DUP3 00000e2b: ADD 00000e2c: DUP1 00000e2d: PUSH1 0x40 00000e2f: MSTORE 00000e30: POP 00000e31: DUP2 00000e32: ADD 00000e33: SWAP1 00000e34: PUSH2 0x0e3d 00000e37: SWAP2 00000e38: SWAP1 00000e39: PUSH2 0x1ddb 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: PUSH1 0xff 00000e40: AND 00000e41: PUSH2 0x1b11 00000e44: JUMP 00000e45: JUMPDEST 00000e46: CALLER 00000e47: PUSH1 0x40 00000e49: MLOAD 00000e4a: DUP5 00000e4b: PUSH4 0xffffffff 00000e50: AND 00000e51: PUSH1 0xe0 00000e53: SHL 00000e54: DUP2 00000e55: MSTORE 00000e56: PUSH1 0x04 00000e58: ADD 00000e59: PUSH2 0x0e64 00000e5c: SWAP4 00000e5d: SWAP3 00000e5e: SWAP2 00000e5f: SWAP1 00000e60: PUSH2 0x1eb3 00000e63: JUMP 00000e64: JUMPDEST 00000e65: PUSH1 0x20 00000e67: PUSH1 0x40 00000e69: MLOAD 00000e6a: DUP1 00000e6b: DUP4 00000e6c: SUB 00000e6d: DUP2 00000e6e: PUSH1 0x00 00000e70: DUP8 00000e71: DUP1 00000e72: EXTCODESIZE 00000e73: ISZERO 00000e74: DUP1 00000e75: ISZERO 00000e76: PUSH2 0x0e7e 00000e79: JUMPI 00000e7a: PUSH1 0x00 00000e7c: DUP1 00000e7d: REVERT 00000e7e: JUMPDEST 00000e7f: POP 00000e80: GAS 00000e81: CALL 00000e82: ISZERO 00000e83: DUP1 00000e84: ISZERO 00000e85: PUSH2 0x0e92 00000e88: JUMPI 00000e89: RETURNDATASIZE 00000e8a: PUSH1 0x00 00000e8c: DUP1 00000e8d: RETURNDATACOPY 00000e8e: RETURNDATASIZE 00000e8f: PUSH1 0x00 00000e91: REVERT 00000e92: JUMPDEST 00000e93: POP 00000e94: POP 00000e95: POP 00000e96: POP 00000e97: PUSH1 0x40 00000e99: MLOAD 00000e9a: RETURNDATASIZE 00000e9b: PUSH1 0x1f 00000e9d: NOT 00000e9e: PUSH1 0x1f 00000ea0: DUP3 00000ea1: ADD 00000ea2: AND 00000ea3: DUP3 00000ea4: ADD 00000ea5: DUP1 00000ea6: PUSH1 0x40 00000ea8: MSTORE 00000ea9: POP 00000eaa: DUP2 00000eab: ADD 00000eac: SWAP1 00000ead: PUSH2 0x0eb6 00000eb0: SWAP2 00000eb1: SWAP1 00000eb2: PUSH2 0x1dc3 00000eb5: JUMP 00000eb6: JUMPDEST 00000eb7: POP 00000eb8: JUMPDEST 00000eb9: PUSH1 0x01 00000ebb: ADD 00000ebc: PUSH2 0x0d32 00000ebf: JUMP 00000ec0: JUMPDEST 00000ec1: POP 00000ec2: PUSH1 0x40 00000ec4: DUP1 00000ec5: MLOAD 00000ec6: CALLER 00000ec7: SWAP2 00000ec8: PUSH32 0x7eeff8be585edc71336fb7c23449d95ce599eaa42a8af172412928d3bb22f848 00000ee9: SWAP2 00000eea: PUSH2 0x0f0b 00000eed: SWAP2 00000eee: DUP8 00000eef: CALLDATALOAD 00000ef0: SWAP2 00000ef1: PUSH1 0x20 00000ef3: DUP10 00000ef4: ADD 00000ef5: CALLDATALOAD 00000ef6: SWAP2 00000ef7: DUP10 00000ef8: ADD 00000ef9: CALLDATALOAD 00000efa: SWAP1 00000efb: PUSH1 0x60 00000efd: DUP11 00000efe: ADD 00000eff: CALLDATALOAD 00000f00: SWAP1 00000f01: PUSH1 0x80 00000f03: DUP12 00000f04: ADD 00000f05: CALLDATALOAD 00000f06: SWAP1 00000f07: PUSH2 0x210c 00000f0a: JUMP 00000f0b: JUMPDEST 00000f0c: PUSH1 0x40 00000f0e: MLOAD 00000f0f: DUP1 00000f10: SWAP2 00000f11: SUB 00000f12: SWAP1 00000f13: LOG2 00000f14: POP 00000f15: POP 00000f16: POP 00000f17: JUMP 00000f18: JUMPDEST 00000f19: PUSH1 0x02 00000f1b: SLOAD 00000f1c: DUP2 00000f1d: JUMP 00000f1e: JUMPDEST 00000f1f: PUSH1 0x00 00000f21: JUMPDEST 00000f22: PUSH1 0x05 00000f24: DUP2 00000f25: LT 00000f26: ISZERO 00000f27: PUSH2 0x0521 00000f2a: JUMPI 00000f2b: PUSH1 0x00 00000f2d: PUSH1 0x08 00000f2f: DUP3 00000f30: PUSH1 0x05 00000f32: DUP2 00000f33: LT 00000f34: PUSH2 0x0f39 00000f37: JUMPI 00000f38: INVALID 00000f39: JUMPDEST 00000f3a: ADD 00000f3b: SLOAD 00000f3c: PUSH1 0x40 00000f3e: MLOAD 00000f3f: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 00000f60: DUP2 00000f61: MSTORE 00000f62: PUSH1 0x01 00000f64: PUSH1 0x01 00000f66: PUSH1 0xa0 00000f68: SHL 00000f69: SUB 00000f6a: SWAP1 00000f6b: SWAP2 00000f6c: AND 00000f6d: SWAP2 00000f6e: POP 00000f6f: PUSH1 0x00 00000f71: SWAP1 00000f72: DUP3 00000f73: SWAP1 00000f74: PUSH4 0x70a08231 00000f79: SWAP1 00000f7a: PUSH2 0x0f87 00000f7d: SWAP1 00000f7e: ADDRESS 00000f7f: SWAP1 00000f80: PUSH1 0x04 00000f82: ADD 00000f83: PUSH2 0x1e86 00000f86: JUMP 00000f87: JUMPDEST 00000f88: PUSH1 0x20 00000f8a: PUSH1 0x40 00000f8c: MLOAD 00000f8d: DUP1 00000f8e: DUP4 00000f8f: SUB 00000f90: DUP2 00000f91: DUP7 00000f92: DUP1 00000f93: EXTCODESIZE 00000f94: ISZERO 00000f95: DUP1 00000f96: ISZERO 00000f97: PUSH2 0x0f9f 00000f9a: JUMPI 00000f9b: PUSH1 0x00 00000f9d: DUP1 00000f9e: REVERT 00000f9f: JUMPDEST 00000fa0: POP 00000fa1: GAS 00000fa2: STATICCALL 00000fa3: ISZERO 00000fa4: DUP1 00000fa5: ISZERO 00000fa6: PUSH2 0x0fb3 00000fa9: JUMPI 00000faa: RETURNDATASIZE 00000fab: PUSH1 0x00 00000fad: DUP1 00000fae: RETURNDATACOPY 00000faf: RETURNDATASIZE 00000fb0: PUSH1 0x00 00000fb2: REVERT 00000fb3: JUMPDEST 00000fb4: POP 00000fb5: POP 00000fb6: POP 00000fb7: POP 00000fb8: PUSH1 0x40 00000fba: MLOAD 00000fbb: RETURNDATASIZE 00000fbc: PUSH1 0x1f 00000fbe: NOT 00000fbf: PUSH1 0x1f 00000fc1: DUP3 00000fc2: ADD 00000fc3: AND 00000fc4: DUP3 00000fc5: ADD 00000fc6: DUP1 00000fc7: PUSH1 0x40 00000fc9: MSTORE 00000fca: POP 00000fcb: DUP2 00000fcc: ADD 00000fcd: SWAP1 00000fce: PUSH2 0x0fd7 00000fd1: SWAP2 00000fd2: SWAP1 00000fd3: PUSH2 0x1dc3 00000fd6: JUMP 00000fd7: JUMPDEST 00000fd8: SWAP1 00000fd9: POP 00000fda: PUSH1 0x01 00000fdc: DUP2 00000fdd: GT 00000fde: PUSH2 0x0fe8 00000fe1: JUMPI 00000fe2: POP 00000fe3: POP 00000fe4: PUSH2 0x1150 00000fe7: JUMP 00000fe8: JUMPDEST 00000fe9: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000100a: ADD 0000100b: PUSH1 0x01 0000100d: PUSH1 0x01 0000100f: PUSH1 0xa0 00001011: SHL 00001012: SUB 00001013: DUP3 00001014: AND 00001015: PUSH4 0x095ea7b3 0000101a: PUSH1 0x0d 0000101c: DUP6 0000101d: PUSH1 0x05 0000101f: DUP2 00001020: LT 00001021: PUSH2 0x1026 00001024: JUMPI 00001025: INVALID 00001026: JUMPDEST 00001027: ADD 00001028: SLOAD 00001029: PUSH1 0x40 0000102b: MLOAD 0000102c: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000104d: PUSH1 0xe0 0000104f: DUP5 00001050: SWAP1 00001051: SHL 00001052: AND 00001053: DUP2 00001054: MSTORE 00001055: PUSH2 0x106c 00001058: SWAP2 00001059: PUSH1 0x01 0000105b: PUSH1 0x01 0000105d: PUSH1 0xa0 0000105f: SHL 00001060: SUB 00001061: AND 00001062: SWAP1 00001063: DUP6 00001064: SWAP1 00001065: PUSH1 0x04 00001067: ADD 00001068: PUSH2 0x1e9a 0000106b: JUMP 0000106c: JUMPDEST 0000106d: PUSH1 0x20 0000106f: PUSH1 0x40 00001071: MLOAD 00001072: DUP1 00001073: DUP4 00001074: SUB 00001075: DUP2 00001076: PUSH1 0x00 00001078: DUP8 00001079: DUP1 0000107a: EXTCODESIZE 0000107b: ISZERO 0000107c: DUP1 0000107d: ISZERO 0000107e: PUSH2 0x1086 00001081: JUMPI 00001082: PUSH1 0x00 00001084: DUP1 00001085: REVERT 00001086: JUMPDEST 00001087: POP 00001088: GAS 00001089: CALL 0000108a: ISZERO 0000108b: DUP1 0000108c: ISZERO 0000108d: PUSH2 0x109a 00001090: JUMPI 00001091: RETURNDATASIZE 00001092: PUSH1 0x00 00001094: DUP1 00001095: RETURNDATACOPY 00001096: RETURNDATASIZE 00001097: PUSH1 0x00 00001099: REVERT 0000109a: JUMPDEST 0000109b: POP 0000109c: POP 0000109d: POP 0000109e: POP 0000109f: PUSH1 0x40 000010a1: MLOAD 000010a2: RETURNDATASIZE 000010a3: PUSH1 0x1f 000010a5: NOT 000010a6: PUSH1 0x1f 000010a8: DUP3 000010a9: ADD 000010aa: AND 000010ab: DUP3 000010ac: ADD 000010ad: DUP1 000010ae: PUSH1 0x40 000010b0: MSTORE 000010b1: POP 000010b2: DUP2 000010b3: ADD 000010b4: SWAP1 000010b5: PUSH2 0x10be 000010b8: SWAP2 000010b9: SWAP1 000010ba: PUSH2 0x1ce2 000010bd: JUMP 000010be: JUMPDEST 000010bf: POP 000010c0: PUSH1 0x0d 000010c2: DUP4 000010c3: PUSH1 0x05 000010c5: DUP2 000010c6: LT 000010c7: PUSH2 0x10cc 000010ca: JUMPI 000010cb: INVALID 000010cc: JUMPDEST 000010cd: ADD 000010ce: SLOAD 000010cf: PUSH1 0x40 000010d1: MLOAD 000010d2: PUSH32 0xe8eda9df00000000000000000000000000000000000000000000000000000000 000010f3: DUP2 000010f4: MSTORE 000010f5: PUSH1 0x01 000010f7: PUSH1 0x01 000010f9: PUSH1 0xa0 000010fb: SHL 000010fc: SUB 000010fd: SWAP1 000010fe: SWAP2 000010ff: AND 00001100: SWAP1 00001101: PUSH4 0xe8eda9df 00001106: SWAP1 00001107: PUSH2 0x111b 0000110a: SWAP1 0000110b: DUP6 0000110c: SWAP1 0000110d: DUP6 0000110e: SWAP1 0000110f: ADDRESS 00001110: SWAP1 00001111: PUSH1 0x00 00001113: SWAP1 00001114: PUSH1 0x04 00001116: ADD 00001117: PUSH2 0x1ed6 0000111a: JUMP 0000111b: JUMPDEST 0000111c: PUSH1 0x00 0000111e: PUSH1 0x40 00001120: MLOAD 00001121: DUP1 00001122: DUP4 00001123: SUB 00001124: DUP2 00001125: PUSH1 0x00 00001127: DUP8 00001128: DUP1 00001129: EXTCODESIZE 0000112a: ISZERO 0000112b: DUP1 0000112c: ISZERO 0000112d: PUSH2 0x1135 00001130: JUMPI 00001131: PUSH1 0x00 00001133: DUP1 00001134: REVERT 00001135: JUMPDEST 00001136: POP 00001137: GAS 00001138: CALL 00001139: ISZERO 0000113a: DUP1 0000113b: ISZERO 0000113c: PUSH2 0x1149 0000113f: JUMPI 00001140: RETURNDATASIZE 00001141: PUSH1 0x00 00001143: DUP1 00001144: RETURNDATACOPY 00001145: RETURNDATASIZE 00001146: PUSH1 0x00 00001148: REVERT 00001149: JUMPDEST 0000114a: POP 0000114b: POP 0000114c: POP 0000114d: POP 0000114e: POP 0000114f: POP 00001150: JUMPDEST 00001151: PUSH1 0x01 00001153: ADD 00001154: PUSH2 0x0f21 00001157: JUMP 00001158: JUMPDEST 00001159: PUSH1 0x01 0000115b: PUSH1 0x01 0000115d: PUSH1 0xa0 0000115f: SHL 00001160: SUB 00001161: DUP3 00001162: AND 00001163: PUSH1 0x00 00001165: SWAP1 00001166: DUP2 00001167: MSTORE 00001168: PUSH1 0x13 0000116a: PUSH1 0x20 0000116c: SWAP1 0000116d: DUP2 0000116e: MSTORE 0000116f: PUSH1 0x40 00001171: DUP1 00001172: DUP4 00001173: KECCAK256 00001174: SLOAD 00001175: SWAP1 00001176: MLOAD 00001177: PUSH1 0xf0 00001179: SWAP2 0000117a: SWAP1 0000117b: SWAP2 0000117c: SHR 0000117d: SWAP2 0000117e: PUSH2 0x118b 00001181: SWAP2 00001182: DUP6 00001183: SWAP2 00001184: DUP5 00001185: SWAP2 00001186: ADD 00001187: PUSH2 0x1df7 0000118a: JUMP 0000118b: JUMPDEST 0000118c: PUSH1 0x40 0000118e: MLOAD 0000118f: PUSH1 0x20 00001191: DUP2 00001192: DUP4 00001193: SUB 00001194: SUB 00001195: DUP2 00001196: MSTORE 00001197: SWAP1 00001198: PUSH1 0x40 0000119a: MSTORE 0000119b: DUP1 0000119c: MLOAD 0000119d: SWAP1 0000119e: PUSH1 0x20 000011a0: ADD 000011a1: KECCAK256 000011a2: SWAP2 000011a3: POP 000011a4: POP 000011a5: SWAP3 000011a6: SWAP2 000011a7: POP 000011a8: POP 000011a9: JUMP 000011aa: JUMPDEST 000011ab: PUSH1 0x00 000011ad: SLOAD 000011ae: PUSH1 0x01 000011b0: PUSH1 0x01 000011b2: PUSH1 0xa0 000011b4: SHL 000011b5: SUB 000011b6: AND 000011b7: CALLER 000011b8: EQ 000011b9: PUSH2 0x11c1 000011bc: JUMPI 000011bd: PUSH1 0x00 000011bf: DUP1 000011c0: REVERT 000011c1: JUMPDEST 000011c2: PUSH1 0x01 000011c4: PUSH1 0x01 000011c6: PUSH1 0xa0 000011c8: SHL 000011c9: SUB 000011ca: DUP2 000011cb: AND 000011cc: PUSH2 0x11d4 000011cf: JUMPI 000011d0: PUSH1 0x00 000011d2: DUP1 000011d3: REVERT 000011d4: JUMPDEST 000011d5: PUSH1 0x00 000011d7: DUP1 000011d8: SLOAD 000011d9: PUSH1 0x40 000011db: MLOAD 000011dc: PUSH1 0x01 000011de: PUSH1 0x01 000011e0: PUSH1 0xa0 000011e2: SHL 000011e3: SUB 000011e4: DUP1 000011e5: DUP6 000011e6: AND 000011e7: SWAP4 000011e8: SWAP3 000011e9: AND 000011ea: SWAP2 000011eb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 0000120c: SWAP2 0000120d: LOG3 0000120e: PUSH1 0x00 00001210: DUP1 00001211: SLOAD 00001212: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001233: AND 00001234: PUSH1 0x01 00001236: PUSH1 0x01 00001238: PUSH1 0xa0 0000123a: SHL 0000123b: SUB 0000123c: SWAP3 0000123d: SWAP1 0000123e: SWAP3 0000123f: AND 00001240: SWAP2 00001241: SWAP1 00001242: SWAP2 00001243: OR 00001244: SWAP1 00001245: SSTORE 00001246: JUMP 00001247: JUMPDEST 00001248: PUSH1 0x00 0000124a: SLOAD 0000124b: PUSH1 0x01 0000124d: PUSH1 0x01 0000124f: PUSH1 0xa0 00001251: SHL 00001252: SUB 00001253: AND 00001254: CALLER 00001255: EQ 00001256: PUSH2 0x125e 00001259: JUMPI 0000125a: PUSH1 0x00 0000125c: DUP1 0000125d: REVERT 0000125e: JUMPDEST 0000125f: PUSH2 0x1266 00001262: PUSH2 0x1b51 00001265: JUMP 00001266: JUMPDEST 00001267: PUSH2 0x1271 0000126a: PUSH1 0x01 0000126c: SLOAD 0000126d: PUSH2 0x16aa 00001270: JUMP 00001271: JUMPDEST 00001272: SWAP1 00001273: POP 00001274: PUSH1 0x00 00001276: JUMPDEST 00001277: PUSH1 0x05 00001279: DUP2 0000127a: LT 0000127b: ISZERO 0000127c: PUSH2 0x13f3 0000127f: JUMPI 00001280: DUP3 00001281: DUP2 00001282: PUSH1 0x05 00001284: DUP2 00001285: LT 00001286: PUSH2 0x128b 00001289: JUMPI 0000128a: INVALID 0000128b: JUMPDEST 0000128c: PUSH1 0x20 0000128e: MUL 0000128f: ADD 00001290: CALLDATALOAD 00001291: PUSH2 0x1299 00001294: JUMPI 00001295: PUSH2 0x13eb 00001298: JUMP 00001299: JUMPDEST 0000129a: PUSH1 0x00 0000129c: PUSH2 0x12a4 0000129f: DUP3 000012a0: PUSH2 0x13f8 000012a3: JUMP 000012a4: JUMPDEST 000012a5: SWAP1 000012a6: POP 000012a7: PUSH1 0x00 000012a9: DUP4 000012aa: DUP4 000012ab: PUSH1 0x05 000012ad: DUP2 000012ae: LT 000012af: PUSH2 0x12b4 000012b2: JUMPI 000012b3: INVALID 000012b4: JUMPDEST 000012b5: PUSH1 0x20 000012b7: MUL 000012b8: ADD 000012b9: MLOAD 000012ba: PUSH2 0x12c2 000012bd: DUP5 000012be: PUSH2 0x1944 000012c1: JUMP 000012c2: JUMPDEST 000012c3: SUB 000012c4: SWAP1 000012c5: POP 000012c6: PUSH1 0x00 000012c8: PUSH2 0x12d1 000012cb: DUP3 000012cc: DUP5 000012cd: PUSH2 0x14b8 000012d0: JUMP 000012d1: JUMPDEST 000012d2: SWAP1 000012d3: POP 000012d4: DUP1 000012d5: DUP7 000012d6: DUP6 000012d7: PUSH1 0x05 000012d9: DUP2 000012da: LT 000012db: PUSH2 0x12e0 000012de: JUMPI 000012df: INVALID 000012e0: JUMPDEST 000012e1: PUSH1 0x20 000012e3: MUL 000012e4: ADD 000012e5: CALLDATALOAD 000012e6: GT 000012e7: ISZERO 000012e8: PUSH2 0x131d 000012eb: JUMPI 000012ec: PUSH1 0x40 000012ee: MLOAD 000012ef: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001310: DUP2 00001311: MSTORE 00001312: PUSH1 0x04 00001314: ADD 00001315: PUSH2 0x06de 00001318: SWAP1 00001319: PUSH2 0x2030 0000131c: JUMP 0000131d: JUMPDEST 0000131e: PUSH1 0x0d 00001320: DUP5 00001321: PUSH1 0x05 00001323: DUP2 00001324: LT 00001325: PUSH2 0x132a 00001328: JUMPI 00001329: INVALID 0000132a: JUMPDEST 0000132b: ADD 0000132c: SLOAD 0000132d: PUSH1 0x01 0000132f: PUSH1 0x01 00001331: PUSH1 0xa0 00001333: SHL 00001334: SUB 00001335: AND 00001336: PUSH4 0x69328dec 0000133b: PUSH1 0x08 0000133d: DUP7 0000133e: PUSH1 0x05 00001340: DUP2 00001341: LT 00001342: PUSH2 0x1347 00001345: JUMPI 00001346: INVALID 00001347: JUMPDEST 00001348: ADD 00001349: SLOAD 0000134a: PUSH1 0x01 0000134c: PUSH1 0x01 0000134e: PUSH1 0xa0 00001350: SHL 00001351: SUB 00001352: AND 00001353: PUSH2 0x1375 00001356: DUP10 00001357: DUP9 00001358: PUSH1 0x05 0000135a: DUP2 0000135b: LT 0000135c: PUSH2 0x1361 0000135f: JUMPI 00001360: INVALID 00001361: JUMPDEST 00001362: PUSH1 0x20 00001364: MUL 00001365: ADD 00001366: CALLDATALOAD 00001367: PUSH1 0x06 00001369: PUSH1 0x03 0000136b: DUP11 0000136c: PUSH1 0x05 0000136e: DUP2 0000136f: LT 00001370: PUSH2 0x0db8 00001373: JUMPI 00001374: INVALID 00001375: JUMPDEST 00001376: CALLER 00001377: PUSH1 0x40 00001379: MLOAD 0000137a: DUP5 0000137b: PUSH4 0xffffffff 00001380: AND 00001381: PUSH1 0xe0 00001383: SHL 00001384: DUP2 00001385: MSTORE 00001386: PUSH1 0x04 00001388: ADD 00001389: PUSH2 0x1394 0000138c: SWAP4 0000138d: SWAP3 0000138e: SWAP2 0000138f: SWAP1 00001390: PUSH2 0x1eb3 00001393: JUMP 00001394: JUMPDEST 00001395: PUSH1 0x20 00001397: PUSH1 0x40 00001399: MLOAD 0000139a: DUP1 0000139b: DUP4 0000139c: SUB 0000139d: DUP2 0000139e: PUSH1 0x00 000013a0: DUP8 000013a1: DUP1 000013a2: EXTCODESIZE 000013a3: ISZERO 000013a4: DUP1 000013a5: ISZERO 000013a6: PUSH2 0x13ae 000013a9: JUMPI 000013aa: PUSH1 0x00 000013ac: DUP1 000013ad: REVERT 000013ae: JUMPDEST 000013af: POP 000013b0: GAS 000013b1: CALL 000013b2: ISZERO 000013b3: DUP1 000013b4: ISZERO 000013b5: PUSH2 0x13c2 000013b8: JUMPI 000013b9: RETURNDATASIZE 000013ba: PUSH1 0x00 000013bc: DUP1 000013bd: RETURNDATACOPY 000013be: RETURNDATASIZE 000013bf: PUSH1 0x00 000013c1: REVERT 000013c2: JUMPDEST 000013c3: POP 000013c4: POP 000013c5: POP 000013c6: POP 000013c7: PUSH1 0x40 000013c9: MLOAD 000013ca: RETURNDATASIZE 000013cb: PUSH1 0x1f 000013cd: NOT 000013ce: PUSH1 0x1f 000013d0: DUP3 000013d1: ADD 000013d2: AND 000013d3: DUP3 000013d4: ADD 000013d5: DUP1 000013d6: PUSH1 0x40 000013d8: MSTORE 000013d9: POP 000013da: DUP2 000013db: ADD 000013dc: SWAP1 000013dd: PUSH2 0x13e6 000013e0: SWAP2 000013e1: SWAP1 000013e2: PUSH2 0x1dc3 000013e5: JUMP 000013e6: JUMPDEST 000013e7: POP 000013e8: POP 000013e9: POP 000013ea: POP 000013eb: JUMPDEST 000013ec: PUSH1 0x01 000013ee: ADD 000013ef: PUSH2 0x1276 000013f2: JUMP 000013f3: JUMPDEST 000013f4: POP 000013f5: POP 000013f6: POP 000013f7: JUMP 000013f8: JUMPDEST 000013f9: PUSH1 0x00 000013fb: PUSH1 0x0d 000013fd: DUP3 000013fe: PUSH1 0x05 00001400: DUP2 00001401: LT 00001402: PUSH2 0x1407 00001405: JUMPI 00001406: INVALID 00001407: JUMPDEST 00001408: ADD 00001409: SLOAD 0000140a: PUSH1 0x01 0000140c: PUSH1 0x01 0000140e: PUSH1 0xa0 00001410: SHL 00001411: SUB 00001412: AND 00001413: PUSH4 0xd15e0053 00001418: PUSH1 0x08 0000141a: DUP5 0000141b: PUSH1 0x05 0000141d: DUP2 0000141e: LT 0000141f: PUSH2 0x1424 00001422: JUMPI 00001423: INVALID 00001424: JUMPDEST 00001425: ADD 00001426: SLOAD 00001427: PUSH1 0x40 00001429: MLOAD 0000142a: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000144b: PUSH1 0xe0 0000144d: DUP5 0000144e: SWAP1 0000144f: SHL 00001450: AND 00001451: DUP2 00001452: MSTORE 00001453: PUSH2 0x1468 00001456: SWAP2 00001457: PUSH1 0x01 00001459: PUSH1 0x01 0000145b: PUSH1 0xa0 0000145d: SHL 0000145e: SUB 0000145f: AND 00001460: SWAP1 00001461: PUSH1 0x04 00001463: ADD 00001464: PUSH2 0x1e86 00001467: JUMP 00001468: JUMPDEST 00001469: PUSH1 0x20 0000146b: PUSH1 0x40 0000146d: MLOAD 0000146e: DUP1 0000146f: DUP4 00001470: SUB 00001471: DUP2 00001472: DUP7 00001473: DUP1 00001474: EXTCODESIZE 00001475: ISZERO 00001476: DUP1 00001477: ISZERO 00001478: PUSH2 0x1480 0000147b: JUMPI 0000147c: PUSH1 0x00 0000147e: DUP1 0000147f: REVERT 00001480: JUMPDEST 00001481: POP 00001482: GAS 00001483: STATICCALL 00001484: ISZERO 00001485: DUP1 00001486: ISZERO 00001487: PUSH2 0x1494 0000148a: JUMPI 0000148b: RETURNDATASIZE 0000148c: PUSH1 0x00 0000148e: DUP1 0000148f: RETURNDATACOPY 00001490: RETURNDATASIZE 00001491: PUSH1 0x00 00001493: REVERT 00001494: JUMPDEST 00001495: POP 00001496: POP 00001497: POP 00001498: POP 00001499: PUSH1 0x40 0000149b: MLOAD 0000149c: RETURNDATASIZE 0000149d: PUSH1 0x1f 0000149f: NOT 000014a0: PUSH1 0x1f 000014a2: DUP3 000014a3: ADD 000014a4: AND 000014a5: DUP3 000014a6: ADD 000014a7: DUP1 000014a8: PUSH1 0x40 000014aa: MSTORE 000014ab: POP 000014ac: DUP2 000014ad: ADD 000014ae: SWAP1 000014af: PUSH2 0x096f 000014b2: SWAP2 000014b3: SWAP1 000014b4: PUSH2 0x1dc3 000014b7: JUMP 000014b8: JUMPDEST 000014b9: PUSH1 0x00 000014bb: DUP3 000014bc: ISZERO 000014bd: DUP1 000014be: PUSH2 0x14c5 000014c1: JUMPI 000014c2: POP 000014c3: DUP2 000014c4: ISZERO 000014c5: JUMPDEST 000014c6: ISZERO 000014c7: PUSH2 0x14d2 000014ca: JUMPI 000014cb: POP 000014cc: PUSH1 0x00 000014ce: PUSH2 0x096f 000014d1: JUMP 000014d2: JUMPDEST 000014d3: DUP2 000014d4: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff 000014f5: DUP2 000014f6: PUSH2 0x14fb 000014f9: JUMPI 000014fa: INVALID 000014fb: JUMPDEST 000014fc: DIV 000014fd: DUP4 000014fe: GT 000014ff: ISZERO 00001500: PUSH1 0x40 00001502: MLOAD 00001503: DUP1 00001504: PUSH1 0x40 00001506: ADD 00001507: PUSH1 0x40 00001509: MSTORE 0000150a: DUP1 0000150b: PUSH1 0x02 0000150d: DUP2 0000150e: MSTORE 0000150f: PUSH1 0x20 00001511: ADD 00001512: PUSH32 0x3438000000000000000000000000000000000000000000000000000000000000 00001533: DUP2 00001534: MSTORE 00001535: POP 00001536: SWAP1 00001537: PUSH2 0x156d 0000153a: JUMPI 0000153b: PUSH1 0x40 0000153d: MLOAD 0000153e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000155f: DUP2 00001560: MSTORE 00001561: PUSH1 0x04 00001563: ADD 00001564: PUSH2 0x06de 00001567: SWAP2 00001568: SWAP1 00001569: PUSH2 0x1fbf 0000156c: JUMP 0000156d: JUMPDEST 0000156e: POP 0000156f: PUSH12 0x033b2e3c9fd0803ce8000000 0000157c: DUP4 0000157d: DUP4 0000157e: MUL 0000157f: PUSH12 0x019d971e4fe8401e74000000 0000158c: ADD 0000158d: JUMPDEST 0000158e: DIV 0000158f: SWAP4 00001590: SWAP3 00001591: POP 00001592: POP 00001593: POP 00001594: JUMP 00001595: JUMPDEST 00001596: PUSH1 0x40 00001598: DUP1 00001599: MLOAD 0000159a: DUP1 0000159b: DUP3 0000159c: ADD 0000159d: SWAP1 0000159e: SWAP2 0000159f: MSTORE 000015a0: PUSH1 0x02 000015a2: DUP2 000015a3: MSTORE 000015a4: PUSH32 0x3530000000000000000000000000000000000000000000000000000000000000 000015c5: PUSH1 0x20 000015c7: DUP3 000015c8: ADD 000015c9: MSTORE 000015ca: PUSH1 0x00 000015cc: SWAP1 000015cd: DUP3 000015ce: PUSH2 0x1604 000015d1: JUMPI 000015d2: PUSH1 0x40 000015d4: MLOAD 000015d5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000015f6: DUP2 000015f7: MSTORE 000015f8: PUSH1 0x04 000015fa: ADD 000015fb: PUSH2 0x06de 000015fe: SWAP2 000015ff: SWAP1 00001600: PUSH2 0x1fbf 00001603: JUMP 00001604: JUMPDEST 00001605: POP 00001606: PUSH1 0x40 00001608: DUP1 00001609: MLOAD 0000160a: DUP1 0000160b: DUP3 0000160c: ADD 0000160d: SWAP1 0000160e: SWAP2 0000160f: MSTORE 00001610: PUSH1 0x02 00001612: DUP1 00001613: DUP3 00001614: MSTORE 00001615: PUSH32 0x3438000000000000000000000000000000000000000000000000000000000000 00001636: PUSH1 0x20 00001638: DUP4 00001639: ADD 0000163a: MSTORE 0000163b: DUP4 0000163c: DIV 0000163d: SWAP1 0000163e: PUSH12 0x033b2e3c9fd0803ce8000000 0000164b: DUP3 0000164c: NOT 0000164d: DIV 0000164e: DUP6 0000164f: GT 00001650: ISZERO 00001651: PUSH2 0x1687 00001654: JUMPI 00001655: PUSH1 0x40 00001657: MLOAD 00001658: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001679: DUP2 0000167a: MSTORE 0000167b: PUSH1 0x04 0000167d: ADD 0000167e: PUSH2 0x06de 00001681: SWAP2 00001682: SWAP1 00001683: PUSH2 0x1fbf 00001686: JUMP 00001687: JUMPDEST 00001688: POP 00001689: DUP3 0000168a: DUP2 0000168b: PUSH12 0x033b2e3c9fd0803ce8000000 00001698: DUP7 00001699: MUL 0000169a: ADD 0000169b: DUP2 0000169c: PUSH2 0x16a1 0000169f: JUMPI 000016a0: INVALID 000016a1: JUMPDEST 000016a2: DIV 000016a3: SWAP5 000016a4: SWAP4 000016a5: POP 000016a6: POP 000016a7: POP 000016a8: POP 000016a9: JUMP 000016aa: JUMPDEST 000016ab: PUSH2 0x16b2 000016ae: PUSH2 0x1b51 000016b1: JUMP 000016b2: JUMPDEST 000016b3: PUSH2 0x16ba 000016b6: PUSH2 0x1b51 000016b9: JUMP 000016ba: JUMPDEST 000016bb: POP 000016bc: POP 000016bd: PUSH1 0x40 000016bf: DUP1 000016c0: MLOAD 000016c1: PUSH1 0xa0 000016c3: DUP1 000016c4: DUP3 000016c5: ADD 000016c6: DUP4 000016c7: MSTORE 000016c8: PUSH1 0xd0 000016ca: DUP5 000016cb: SWAP1 000016cc: SHR 000016cd: DUP3 000016ce: MSTORE 000016cf: DUP4 000016d0: SWAP1 000016d1: SHR 000016d2: PUSH6 0xffffffffffff 000016d9: SWAP1 000016da: DUP2 000016db: AND 000016dc: PUSH1 0x20 000016de: DUP4 000016df: ADD 000016e0: MSTORE 000016e1: PUSH1 0x70 000016e3: DUP5 000016e4: SWAP1 000016e5: SHR 000016e6: DUP2 000016e7: AND 000016e8: DUP3 000016e9: DUP5 000016ea: ADD 000016eb: MSTORE 000016ec: SWAP2 000016ed: DUP4 000016ee: SWAP1 000016ef: SHR 000016f0: DUP3 000016f1: AND 000016f2: PUSH1 0x60 000016f4: DUP3 000016f5: ADD 000016f6: MSTORE 000016f7: SWAP2 000016f8: AND 000016f9: PUSH1 0x80 000016fb: DUP3 000016fc: ADD 000016fd: MSTORE 000016fe: SWAP1 000016ff: JUMP 00001700: JUMPDEST 00001701: PUSH1 0xf0 00001703: DUP2 00001704: SWAP1 00001705: SHR 00001706: DUP3 00001707: MSTORE 00001708: PUSH6 0xffffffffffff 0000170f: PUSH1 0xc0 00001711: DUP3 00001712: SWAP1 00001713: SHR 00001714: DUP2 00001715: AND 00001716: PUSH1 0x20 00001718: DUP5 00001719: ADD 0000171a: MSTORE 0000171b: PUSH1 0x90 0000171d: DUP3 0000171e: SWAP1 0000171f: SHR 00001720: DUP2 00001721: AND 00001722: PUSH1 0x40 00001724: DUP5 00001725: ADD 00001726: MSTORE 00001727: PUSH1 0x60 00001729: DUP3 0000172a: DUP2 0000172b: SHR 0000172c: DUP3 0000172d: AND 0000172e: SWAP1 0000172f: DUP5 00001730: ADD 00001731: MSTORE 00001732: PUSH1 0x30 00001734: DUP3 00001735: SWAP1 00001736: SHR 00001737: DUP2 00001738: AND 00001739: PUSH1 0x80 0000173b: DUP5 0000173c: ADD 0000173d: MSTORE 0000173e: AND 0000173f: PUSH1 0xa0 00001741: SWAP1 00001742: SWAP2 00001743: ADD 00001744: MSTORE 00001745: JUMP 00001746: JUMPDEST 00001747: DUP2 00001748: MLOAD 00001749: MLOAD 0000174a: PUSH1 0x00 0000174c: SGT 0000174d: DUP1 0000174e: ISZERO 0000174f: SWAP1 00001750: PUSH2 0x175f 00001753: JUMPI 00001754: POP 00001755: DUP2 00001756: MLOAD 00001757: PUSH1 0x20 00001759: ADD 0000175a: MLOAD 0000175b: PUSH1 0x00 0000175d: SGT 0000175e: ISZERO 0000175f: JUMPDEST 00001760: DUP1 00001761: ISZERO 00001762: PUSH2 0x1771 00001765: JUMPI 00001766: POP 00001767: DUP2 00001768: MLOAD 00001769: PUSH1 0x40 0000176b: ADD 0000176c: MLOAD 0000176d: PUSH1 0x00 0000176f: SGT 00001770: ISZERO 00001771: JUMPDEST 00001772: DUP1 00001773: ISZERO 00001774: PUSH2 0x1783 00001777: JUMPI 00001778: POP 00001779: DUP2 0000177a: MLOAD 0000177b: PUSH1 0x60 0000177d: ADD 0000177e: MLOAD 0000177f: PUSH1 0x00 00001781: SGT 00001782: ISZERO 00001783: JUMPDEST 00001784: DUP1 00001785: ISZERO 00001786: PUSH2 0x1795 00001789: JUMPI 0000178a: POP 0000178b: DUP2 0000178c: MLOAD 0000178d: PUSH1 0x80 0000178f: ADD 00001790: MLOAD 00001791: PUSH1 0x00 00001793: SGT 00001794: ISZERO 00001795: JUMPDEST 00001796: ISZERO 00001797: PUSH2 0x179f 0000179a: JUMPI 0000179b: PUSH2 0x18a4 0000179e: JUMP 0000179f: JUMPDEST 000017a0: DUP2 000017a1: MLOAD 000017a2: PUSH1 0x40 000017a4: MLOAD 000017a5: PUSH1 0x00 000017a7: SWAP2 000017a8: PUSH2 0x17b5 000017ab: SWAP2 000017ac: DUP5 000017ad: SWAP1 000017ae: PUSH1 0x20 000017b0: ADD 000017b1: PUSH2 0x1e30 000017b4: JUMP 000017b5: JUMPDEST 000017b6: PUSH1 0x40 000017b8: MLOAD 000017b9: PUSH1 0x20 000017bb: DUP2 000017bc: DUP4 000017bd: SUB 000017be: SUB 000017bf: DUP2 000017c0: MSTORE 000017c1: SWAP1 000017c2: PUSH1 0x40 000017c4: MSTORE 000017c5: DUP1 000017c6: MLOAD 000017c7: SWAP1 000017c8: PUSH1 0x20 000017ca: ADD 000017cb: KECCAK256 000017cc: SWAP1 000017cd: POP 000017ce: PUSH1 0x00 000017d0: DUP2 000017d1: PUSH1 0x40 000017d3: MLOAD 000017d4: PUSH1 0x20 000017d6: ADD 000017d7: PUSH2 0x17e0 000017da: SWAP2 000017db: SWAP1 000017dc: PUSH2 0x1e55 000017df: JUMP 000017e0: JUMPDEST 000017e1: PUSH1 0x40 000017e3: MLOAD 000017e4: PUSH1 0x20 000017e6: DUP2 000017e7: DUP4 000017e8: SUB 000017e9: SUB 000017ea: DUP2 000017eb: MSTORE 000017ec: SWAP1 000017ed: PUSH1 0x40 000017ef: MSTORE 000017f0: DUP1 000017f1: MLOAD 000017f2: SWAP1 000017f3: PUSH1 0x20 000017f5: ADD 000017f6: KECCAK256 000017f7: SWAP1 000017f8: POP 000017f9: DUP4 000017fa: PUSH1 0x80 000017fc: ADD 000017fd: MLOAD 000017fe: PUSH1 0x01 00001800: PUSH1 0x01 00001802: PUSH1 0xa0 00001804: SHL 00001805: SUB 00001806: AND 00001807: PUSH1 0x01 00001809: DUP3 0000180a: DUP7 0000180b: PUSH1 0x60 0000180d: ADD 0000180e: MLOAD 0000180f: DUP8 00001810: PUSH1 0x20 00001812: ADD 00001813: MLOAD 00001814: DUP9 00001815: PUSH1 0x40 00001817: ADD 00001818: MLOAD 00001819: PUSH1 0x40 0000181b: MLOAD 0000181c: PUSH1 0x00 0000181e: DUP2 0000181f: MSTORE 00001820: PUSH1 0x20 00001822: ADD 00001823: PUSH1 0x40 00001825: MSTORE 00001826: PUSH1 0x40 00001828: MLOAD 00001829: PUSH2 0x1835 0000182c: SWAP5 0000182d: SWAP4 0000182e: SWAP3 0000182f: SWAP2 00001830: SWAP1 00001831: PUSH2 0x1fa1 00001834: JUMP 00001835: JUMPDEST 00001836: PUSH1 0x20 00001838: PUSH1 0x40 0000183a: MLOAD 0000183b: PUSH1 0x20 0000183d: DUP2 0000183e: SUB 0000183f: SWAP1 00001840: DUP1 00001841: DUP5 00001842: SUB 00001843: SWAP1 00001844: DUP6 00001845: GAS 00001846: STATICCALL 00001847: ISZERO 00001848: DUP1 00001849: ISZERO 0000184a: PUSH2 0x1857 0000184d: JUMPI 0000184e: RETURNDATASIZE 0000184f: PUSH1 0x00 00001851: DUP1 00001852: RETURNDATACOPY 00001853: RETURNDATASIZE 00001854: PUSH1 0x00 00001856: REVERT 00001857: JUMPDEST 00001858: POP 00001859: POP 0000185a: POP 0000185b: PUSH1 0x20 0000185d: PUSH1 0x40 0000185f: MLOAD 00001860: SUB 00001861: MLOAD 00001862: PUSH1 0x01 00001864: PUSH1 0x01 00001866: PUSH1 0xa0 00001868: SHL 00001869: SUB 0000186a: AND 0000186b: EQ 0000186c: PUSH2 0x18a1 0000186f: JUMPI 00001870: PUSH1 0x40 00001872: MLOAD 00001873: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001894: DUP2 00001895: MSTORE 00001896: PUSH1 0x04 00001898: ADD 00001899: PUSH2 0x06de 0000189c: SWAP1 0000189d: PUSH2 0x209e 000018a0: JUMP 000018a1: JUMPDEST 000018a2: POP 000018a3: POP 000018a4: JUMPDEST 000018a5: POP 000018a6: POP 000018a7: JUMP 000018a8: JUMPDEST 000018a9: DUP2 000018aa: DUP2 000018ab: ADD 000018ac: DUP3 000018ad: DUP2 000018ae: LT 000018af: ISZERO 000018b0: PUSH2 0x096f 000018b3: JUMPI 000018b4: INVALID 000018b5: JUMPDEST 000018b6: PUSH1 0x00 000018b8: DUP3 000018b9: DUP3 000018ba: GT 000018bb: ISZERO 000018bc: PUSH2 0x18c1 000018bf: JUMPI 000018c0: INVALID 000018c1: JUMPDEST 000018c2: POP 000018c3: SWAP1 000018c4: SUB 000018c5: SWAP1 000018c6: JUMP 000018c7: JUMPDEST 000018c8: PUSH1 0x00 000018ca: DUP2 000018cb: PUSH1 0x05 000018cd: PUSH1 0x20 000018cf: MUL 000018d0: ADD 000018d1: MLOAD 000018d2: PUSH6 0xffffffffffff 000018d9: AND 000018da: PUSH1 0x30 000018dc: DUP4 000018dd: PUSH1 0x04 000018df: PUSH1 0x20 000018e1: MUL 000018e2: ADD 000018e3: MLOAD 000018e4: PUSH6 0xffffffffffff 000018eb: AND 000018ec: SWAP1 000018ed: SHL 000018ee: PUSH1 0x60 000018f0: DUP5 000018f1: PUSH1 0x03 000018f3: PUSH1 0x20 000018f5: MUL 000018f6: ADD 000018f7: MLOAD 000018f8: PUSH6 0xffffffffffff 000018ff: AND 00001900: SWAP1 00001901: SHL 00001902: PUSH1 0x90 00001904: DUP6 00001905: PUSH1 0x02 00001907: PUSH1 0x20 00001909: MUL 0000190a: ADD 0000190b: MLOAD 0000190c: PUSH6 0xffffffffffff 00001913: AND 00001914: SWAP1 00001915: SHL 00001916: PUSH1 0xc0 00001918: DUP7 00001919: PUSH1 0x01 0000191b: PUSH1 0x20 0000191d: MUL 0000191e: ADD 0000191f: MLOAD 00001920: PUSH6 0xffffffffffff 00001927: AND 00001928: SWAP1 00001929: SHL 0000192a: PUSH1 0xf0 0000192c: DUP8 0000192d: PUSH1 0x00 0000192f: PUSH1 0x20 00001931: MUL 00001932: ADD 00001933: MLOAD 00001934: PUSH2 0xffff 00001937: AND 00001938: SWAP1 00001939: SHL 0000193a: OR 0000193b: OR 0000193c: OR 0000193d: OR 0000193e: OR 0000193f: SWAP3 00001940: SWAP2 00001941: POP 00001942: POP 00001943: JUMP 00001944: JUMPDEST 00001945: PUSH1 0x00 00001947: PUSH2 0x096f 0000194a: PUSH1 0x03 0000194c: DUP4 0000194d: PUSH1 0x05 0000194f: DUP2 00001950: LT 00001951: PUSH2 0x1956 00001954: JUMPI 00001955: INVALID 00001956: JUMPDEST 00001957: ADD 00001958: SLOAD 00001959: PUSH1 0x40 0000195b: MLOAD 0000195c: PUSH32 0x1da24f3e00000000000000000000000000000000000000000000000000000000 0000197d: DUP2 0000197e: MSTORE 0000197f: PUSH1 0x01 00001981: PUSH1 0x01 00001983: PUSH1 0xa0 00001985: SHL 00001986: SUB 00001987: SWAP1 00001988: SWAP2 00001989: AND 0000198a: SWAP1 0000198b: PUSH4 0x1da24f3e 00001990: SWAP1 00001991: PUSH2 0x199e 00001994: SWAP1 00001995: ADDRESS 00001996: SWAP1 00001997: PUSH1 0x04 00001999: ADD 0000199a: PUSH2 0x1e86 0000199d: JUMP 0000199e: JUMPDEST 0000199f: PUSH1 0x20 000019a1: PUSH1 0x40 000019a3: MLOAD 000019a4: DUP1 000019a5: DUP4 000019a6: SUB 000019a7: DUP2 000019a8: DUP7 000019a9: DUP1 000019aa: EXTCODESIZE 000019ab: ISZERO 000019ac: DUP1 000019ad: ISZERO 000019ae: PUSH2 0x19b6 000019b1: JUMPI 000019b2: PUSH1 0x00 000019b4: DUP1 000019b5: REVERT 000019b6: JUMPDEST 000019b7: POP 000019b8: GAS 000019b9: STATICCALL 000019ba: ISZERO 000019bb: DUP1 000019bc: ISZERO 000019bd: PUSH2 0x19ca 000019c0: JUMPI 000019c1: RETURNDATASIZE 000019c2: PUSH1 0x00 000019c4: DUP1 000019c5: RETURNDATACOPY 000019c6: RETURNDATASIZE 000019c7: PUSH1 0x00 000019c9: REVERT 000019ca: JUMPDEST 000019cb: POP 000019cc: POP 000019cd: POP 000019ce: POP 000019cf: PUSH1 0x40 000019d1: MLOAD 000019d2: RETURNDATASIZE 000019d3: PUSH1 0x1f 000019d5: NOT 000019d6: PUSH1 0x1f 000019d8: DUP3 000019d9: ADD 000019da: AND 000019db: DUP3 000019dc: ADD 000019dd: DUP1 000019de: PUSH1 0x40 000019e0: MSTORE 000019e1: POP 000019e2: DUP2 000019e3: ADD 000019e4: SWAP1 000019e5: PUSH2 0x19ee 000019e8: SWAP2 000019e9: SWAP1 000019ea: PUSH2 0x1dc3 000019ed: JUMP 000019ee: JUMPDEST 000019ef: PUSH1 0x03 000019f1: DUP5 000019f2: PUSH1 0x05 000019f4: DUP2 000019f5: LT 000019f6: PUSH2 0x19fb 000019f9: JUMPI 000019fa: INVALID 000019fb: JUMPDEST 000019fc: ADD 000019fd: PUSH1 0x00 000019ff: SWAP1 00001a00: SLOAD 00001a01: SWAP1 00001a02: PUSH2 0x0100 00001a05: EXP 00001a06: SWAP1 00001a07: DIV 00001a08: PUSH1 0x01 00001a0a: PUSH1 0x01 00001a0c: PUSH1 0xa0 00001a0e: SHL 00001a0f: SUB 00001a10: AND 00001a11: PUSH1 0x01 00001a13: PUSH1 0x01 00001a15: PUSH1 0xa0 00001a17: SHL 00001a18: SUB 00001a19: AND 00001a1a: PUSH4 0x313ce567 00001a1f: PUSH1 0x40 00001a21: MLOAD 00001a22: DUP2 00001a23: PUSH4 0xffffffff 00001a28: AND 00001a29: PUSH1 0xe0 00001a2b: SHL 00001a2c: DUP2 00001a2d: MSTORE 00001a2e: PUSH1 0x04 00001a30: ADD 00001a31: PUSH1 0x20 00001a33: PUSH1 0x40 00001a35: MLOAD 00001a36: DUP1 00001a37: DUP4 00001a38: SUB 00001a39: DUP2 00001a3a: DUP7 00001a3b: DUP1 00001a3c: EXTCODESIZE 00001a3d: ISZERO 00001a3e: DUP1 00001a3f: ISZERO 00001a40: PUSH2 0x1a48 00001a43: JUMPI 00001a44: PUSH1 0x00 00001a46: DUP1 00001a47: REVERT 00001a48: JUMPDEST 00001a49: POP 00001a4a: GAS 00001a4b: STATICCALL 00001a4c: ISZERO 00001a4d: DUP1 00001a4e: ISZERO 00001a4f: PUSH2 0x1a5c 00001a52: JUMPI 00001a53: RETURNDATASIZE 00001a54: PUSH1 0x00 00001a56: DUP1 00001a57: RETURNDATACOPY 00001a58: RETURNDATASIZE 00001a59: PUSH1 0x00 00001a5b: REVERT 00001a5c: JUMPDEST 00001a5d: POP 00001a5e: POP 00001a5f: POP 00001a60: POP 00001a61: PUSH1 0x40 00001a63: MLOAD 00001a64: RETURNDATASIZE 00001a65: PUSH1 0x1f 00001a67: NOT 00001a68: PUSH1 0x1f 00001a6a: DUP3 00001a6b: ADD 00001a6c: AND 00001a6d: DUP3 00001a6e: ADD 00001a6f: DUP1 00001a70: PUSH1 0x40 00001a72: MSTORE 00001a73: POP 00001a74: DUP2 00001a75: ADD 00001a76: SWAP1 00001a77: PUSH2 0x1a80 00001a7a: SWAP2 00001a7b: SWAP1 00001a7c: PUSH2 0x1ddb 00001a7f: JUMP 00001a80: JUMPDEST 00001a81: PUSH1 0xff 00001a83: AND 00001a84: PUSH1 0x06 00001a86: PUSH2 0x1b11 00001a89: JUMP 00001a8a: JUMPDEST 00001a8b: PUSH1 0x00 00001a8d: DUP2 00001a8e: PUSH1 0x04 00001a90: PUSH1 0x20 00001a92: MUL 00001a93: ADD 00001a94: MLOAD 00001a95: PUSH6 0xffffffffffff 00001a9c: AND 00001a9d: PUSH1 0x40 00001a9f: DUP4 00001aa0: PUSH1 0x03 00001aa2: PUSH1 0x20 00001aa4: MUL 00001aa5: ADD 00001aa6: MLOAD 00001aa7: PUSH6 0xffffffffffff 00001aae: AND 00001aaf: SWAP1 00001ab0: SHL 00001ab1: PUSH1 0x70 00001ab3: DUP5 00001ab4: PUSH1 0x02 00001ab6: PUSH1 0x20 00001ab8: MUL 00001ab9: ADD 00001aba: MLOAD 00001abb: PUSH6 0xffffffffffff 00001ac2: AND 00001ac3: SWAP1 00001ac4: SHL 00001ac5: PUSH1 0xa0 00001ac7: DUP6 00001ac8: PUSH1 0x01 00001aca: PUSH1 0x20 00001acc: MUL 00001acd: ADD 00001ace: MLOAD 00001acf: PUSH6 0xffffffffffff 00001ad6: AND 00001ad7: SWAP1 00001ad8: SHL 00001ad9: PUSH1 0xd0 00001adb: DUP7 00001adc: PUSH1 0x00 00001ade: PUSH1 0x20 00001ae0: MUL 00001ae1: ADD 00001ae2: MLOAD 00001ae3: PUSH6 0xffffffffffff 00001aea: AND 00001aeb: SWAP1 00001aec: SHL 00001aed: OR 00001aee: OR 00001aef: OR 00001af0: OR 00001af1: SWAP3 00001af2: SWAP2 00001af3: POP 00001af4: POP 00001af5: JUMP 00001af6: JUMPDEST 00001af7: PUSH1 0x00 00001af9: DUP2 00001afa: PUSH2 0x1b04 00001afd: JUMPI 00001afe: POP 00001aff: DUP2 00001b00: PUSH2 0x096f 00001b03: JUMP 00001b04: JUMPDEST 00001b05: PUSH2 0x2710 00001b08: DUP3 00001b09: DUP2 00001b0a: SUB 00001b0b: DUP5 00001b0c: MUL 00001b0d: PUSH2 0x158d 00001b10: JUMP 00001b11: JUMPDEST 00001b12: PUSH1 0x00 00001b14: DUP2 00001b15: DUP4 00001b16: EQ 00001b17: ISZERO 00001b18: PUSH2 0x1b22 00001b1b: JUMPI 00001b1c: POP 00001b1d: DUP3 00001b1e: PUSH2 0x1b4a 00001b21: JUMP 00001b22: JUMPDEST 00001b23: DUP2 00001b24: DUP4 00001b25: LT 00001b26: ISZERO 00001b27: PUSH2 0x1b38 00001b2a: JUMPI 00001b2b: POP 00001b2c: DUP2 00001b2d: DUP2 00001b2e: SUB 00001b2f: PUSH1 0x0a 00001b31: EXP 00001b32: DUP4 00001b33: MUL 00001b34: PUSH2 0x1b4a 00001b37: JUMP 00001b38: JUMPDEST 00001b39: DUP2 00001b3a: DUP4 00001b3b: SUB 00001b3c: PUSH1 0x0a 00001b3e: EXP 00001b3f: DUP5 00001b40: DUP2 00001b41: PUSH2 0x1b46 00001b44: JUMPI 00001b45: INVALID 00001b46: JUMPDEST 00001b47: DIV 00001b48: SWAP1 00001b49: POP 00001b4a: JUMPDEST 00001b4b: SWAP4 00001b4c: SWAP3 00001b4d: POP 00001b4e: POP 00001b4f: POP 00001b50: JUMP 00001b51: JUMPDEST 00001b52: PUSH1 0x40 00001b54: MLOAD 00001b55: DUP1 00001b56: PUSH1 0xa0 00001b58: ADD 00001b59: PUSH1 0x40 00001b5b: MSTORE 00001b5c: DUP1 00001b5d: PUSH1 0x05 00001b5f: SWAP1 00001b60: PUSH1 0x20 00001b62: DUP3 00001b63: MUL 00001b64: DUP1 00001b65: CALLDATASIZE 00001b66: DUP4 00001b67: CALLDATACOPY 00001b68: POP 00001b69: SWAP2 00001b6a: SWAP3 00001b6b: SWAP2 00001b6c: POP 00001b6d: POP 00001b6e: JUMP 00001b6f: JUMPDEST 00001b70: PUSH1 0x40 00001b72: MLOAD 00001b73: DUP1 00001b74: PUSH1 0xc0 00001b76: ADD 00001b77: PUSH1 0x40 00001b79: MSTORE 00001b7a: DUP1 00001b7b: PUSH1 0x06 00001b7d: SWAP1 00001b7e: PUSH1 0x20 00001b80: DUP3 00001b81: MUL 00001b82: DUP1 00001b83: CALLDATASIZE 00001b84: DUP4 00001b85: CALLDATACOPY 00001b86: POP 00001b87: SWAP2 00001b88: SWAP3 00001b89: SWAP2 00001b8a: POP 00001b8b: POP 00001b8c: JUMP 00001b8d: JUMPDEST 00001b8e: PUSH1 0x40 00001b90: MLOAD 00001b91: DUP1 00001b92: PUSH1 0xa0 00001b94: ADD 00001b95: PUSH1 0x40 00001b97: MSTORE 00001b98: DUP1 00001b99: PUSH2 0x1ba0 00001b9c: PUSH2 0x1b51 00001b9f: JUMP 00001ba0: JUMPDEST 00001ba1: DUP2 00001ba2: MSTORE 00001ba3: PUSH1 0x00 00001ba5: PUSH1 0x20 00001ba7: DUP3 00001ba8: ADD 00001ba9: DUP2 00001baa: SWAP1 00001bab: MSTORE 00001bac: PUSH1 0x40 00001bae: DUP3 00001baf: ADD 00001bb0: DUP2 00001bb1: SWAP1 00001bb2: MSTORE 00001bb3: PUSH1 0x60 00001bb5: DUP3 00001bb6: ADD 00001bb7: DUP2 00001bb8: SWAP1 00001bb9: MSTORE 00001bba: PUSH1 0x80 00001bbc: SWAP1 00001bbd: SWAP2 00001bbe: ADD 00001bbf: MSTORE 00001bc0: SWAP1 00001bc1: JUMP 00001bc2: JUMPDEST 00001bc3: DUP1 00001bc4: CALLDATALOAD 00001bc5: PUSH2 0x096f 00001bc8: DUP2 00001bc9: PUSH2 0x2156 00001bcc: JUMP 00001bcd: JUMPDEST 00001bce: DUP1 00001bcf: PUSH1 0xa0 00001bd1: DUP2 00001bd2: ADD 00001bd3: DUP4 00001bd4: LT 00001bd5: ISZERO 00001bd6: PUSH2 0x096f 00001bd9: JUMPI 00001bda: PUSH1 0x00 00001bdc: DUP1 00001bdd: REVERT 00001bde: JUMPDEST 00001bdf: DUP1 00001be0: CALLDATALOAD 00001be1: PUSH2 0x096f 00001be4: DUP2 00001be5: PUSH2 0x216b 00001be8: JUMP 00001be9: JUMPDEST 00001bea: PUSH1 0x00 00001bec: PUSH1 0x20 00001bee: DUP3 00001bef: DUP5 00001bf0: SUB 00001bf1: SLT 00001bf2: ISZERO 00001bf3: PUSH2 0x1bfa 00001bf6: JUMPI 00001bf7: DUP1 00001bf8: DUP2 00001bf9: REVERT 00001bfa: JUMPDEST 00001bfb: DUP2 00001bfc: CALLDATALOAD 00001bfd: PUSH2 0x1b4a 00001c00: DUP2 00001c01: PUSH2 0x2156 00001c04: JUMP 00001c05: JUMPDEST 00001c06: PUSH1 0x00 00001c08: PUSH1 0x20 00001c0a: DUP3 00001c0b: DUP5 00001c0c: SUB 00001c0d: SLT 00001c0e: ISZERO 00001c0f: PUSH2 0x1c16 00001c12: JUMPI 00001c13: DUP1 00001c14: DUP2 00001c15: REVERT 00001c16: JUMPDEST 00001c17: DUP2 00001c18: MLOAD 00001c19: PUSH2 0x1b4a 00001c1c: DUP2 00001c1d: PUSH2 0x2156 00001c20: JUMP 00001c21: JUMPDEST 00001c22: PUSH1 0x00 00001c24: DUP1 00001c25: PUSH1 0xc0 00001c27: DUP4 00001c28: DUP6 00001c29: SUB 00001c2a: SLT 00001c2b: ISZERO 00001c2c: PUSH2 0x1c33 00001c2f: JUMPI 00001c30: DUP1 00001c31: DUP2 00001c32: REVERT 00001c33: JUMPDEST 00001c34: DUP3 00001c35: CALLDATALOAD 00001c36: PUSH2 0x1c3e 00001c39: DUP2 00001c3a: PUSH2 0x2156 00001c3d: JUMP 00001c3e: JUMPDEST 00001c3f: SWAP2 00001c40: POP 00001c41: PUSH2 0x1c4d 00001c44: DUP5 00001c45: PUSH1 0x20 00001c47: DUP6 00001c48: ADD 00001c49: PUSH2 0x1bcd 00001c4c: JUMP 00001c4d: JUMPDEST 00001c4e: SWAP1 00001c4f: POP 00001c50: SWAP3 00001c51: POP 00001c52: SWAP3 00001c53: SWAP1 00001c54: POP 00001c55: JUMP 00001c56: JUMPDEST 00001c57: PUSH1 0x00 00001c59: DUP1 00001c5a: PUSH1 0x20 00001c5c: DUP4 00001c5d: DUP6 00001c5e: SUB 00001c5f: SLT 00001c60: ISZERO 00001c61: PUSH2 0x1c68 00001c64: JUMPI 00001c65: DUP2 00001c66: DUP3 00001c67: REVERT 00001c68: JUMPDEST 00001c69: DUP3 00001c6a: CALLDATALOAD 00001c6b: PUSH8 0xffffffffffffffff 00001c74: DUP1 00001c75: DUP3 00001c76: GT 00001c77: ISZERO 00001c78: PUSH2 0x1c7f 00001c7b: JUMPI 00001c7c: DUP4 00001c7d: DUP5 00001c7e: REVERT 00001c7f: JUMPDEST 00001c80: DUP2 00001c81: DUP6 00001c82: ADD 00001c83: SWAP2 00001c84: POP 00001c85: DUP6 00001c86: PUSH1 0x1f 00001c88: DUP4 00001c89: ADD 00001c8a: SLT 00001c8b: PUSH2 0x1c92 00001c8e: JUMPI 00001c8f: DUP4 00001c90: DUP5 00001c91: REVERT 00001c92: JUMPDEST 00001c93: DUP2 00001c94: CALLDATALOAD 00001c95: DUP2 00001c96: DUP2 00001c97: GT 00001c98: ISZERO 00001c99: PUSH2 0x1ca0 00001c9c: JUMPI 00001c9d: DUP5 00001c9e: DUP6 00001c9f: REVERT 00001ca0: JUMPDEST 00001ca1: DUP7 00001ca2: PUSH1 0x20 00001ca4: PUSH2 0x0120 00001ca7: DUP4 00001ca8: MUL 00001ca9: DUP6 00001caa: ADD 00001cab: ADD 00001cac: GT 00001cad: ISZERO 00001cae: PUSH2 0x1cb5 00001cb1: JUMPI 00001cb2: DUP5 00001cb3: DUP6 00001cb4: REVERT 00001cb5: JUMPDEST 00001cb6: PUSH1 0x20 00001cb8: SWAP3 00001cb9: SWAP1 00001cba: SWAP3 00001cbb: ADD 00001cbc: SWAP7 00001cbd: SWAP2 00001cbe: SWAP6 00001cbf: POP 00001cc0: SWAP1 00001cc1: SWAP4 00001cc2: POP 00001cc3: POP 00001cc4: POP 00001cc5: POP 00001cc6: JUMP 00001cc7: JUMPDEST 00001cc8: PUSH1 0x00 00001cca: PUSH1 0xa0 00001ccc: DUP3 00001ccd: DUP5 00001cce: SUB 00001ccf: SLT 00001cd0: ISZERO 00001cd1: PUSH2 0x1cd8 00001cd4: JUMPI 00001cd5: DUP1 00001cd6: DUP2 00001cd7: REVERT 00001cd8: JUMPDEST 00001cd9: PUSH2 0x1b4a 00001cdc: DUP4 00001cdd: DUP4 00001cde: PUSH2 0x1bcd 00001ce1: JUMP 00001ce2: JUMPDEST 00001ce3: PUSH1 0x00 00001ce5: PUSH1 0x20 00001ce7: DUP3 00001ce8: DUP5 00001ce9: SUB 00001cea: SLT 00001ceb: ISZERO 00001cec: PUSH2 0x1cf3 00001cef: JUMPI 00001cf0: DUP1 00001cf1: DUP2 00001cf2: REVERT 00001cf3: JUMPDEST 00001cf4: DUP2 00001cf5: MLOAD 00001cf6: DUP1 00001cf7: ISZERO 00001cf8: ISZERO 00001cf9: DUP2 00001cfa: EQ 00001cfb: PUSH2 0x1b4a 00001cfe: JUMPI 00001cff: DUP2 00001d00: DUP3 00001d01: REVERT 00001d02: JUMPDEST 00001d03: PUSH1 0x00 00001d05: PUSH2 0x0120 00001d08: DUP3 00001d09: DUP5 00001d0a: SUB 00001d0b: SLT 00001d0c: ISZERO 00001d0d: PUSH2 0x1d14 00001d10: JUMPI 00001d11: DUP1 00001d12: DUP2 00001d13: REVERT 00001d14: JUMPDEST 00001d15: PUSH2 0x1d1e 00001d18: PUSH1 0xa0 00001d1a: PUSH2 0x212f 00001d1d: JUMP 00001d1e: JUMPDEST 00001d1f: DUP4 00001d20: PUSH1 0x1f 00001d22: DUP5 00001d23: ADD 00001d24: SLT 00001d25: PUSH2 0x1d2c 00001d28: JUMPI 00001d29: DUP2 00001d2a: DUP3 00001d2b: REVERT 00001d2c: JUMPDEST 00001d2d: PUSH2 0x1d36 00001d30: PUSH1 0xa0 00001d32: PUSH2 0x212f 00001d35: JUMP 00001d36: JUMPDEST 00001d37: DUP1 00001d38: DUP5 00001d39: PUSH1 0xa0 00001d3b: DUP7 00001d3c: ADD 00001d3d: DUP8 00001d3e: DUP2 00001d3f: GT 00001d40: ISZERO 00001d41: PUSH2 0x1d48 00001d44: JUMPI 00001d45: DUP6 00001d46: DUP7 00001d47: REVERT 00001d48: JUMPDEST 00001d49: DUP6 00001d4a: JUMPDEST 00001d4b: PUSH1 0x05 00001d4d: DUP2 00001d4e: LT 00001d4f: ISZERO 00001d50: PUSH2 0x1d69 00001d53: JUMPI 00001d54: DUP3 00001d55: CALLDATALOAD 00001d56: DUP6 00001d57: MSTORE 00001d58: PUSH1 0x20 00001d5a: SWAP5 00001d5b: DUP6 00001d5c: ADD 00001d5d: SWAP5 00001d5e: SWAP1 00001d5f: SWAP3 00001d60: ADD 00001d61: SWAP2 00001d62: PUSH1 0x01 00001d64: ADD 00001d65: PUSH2 0x1d4a 00001d68: JUMP 00001d69: JUMPDEST 00001d6a: POP 00001d6b: SWAP2 00001d6c: DUP5 00001d6d: MSTORE 00001d6e: POP 00001d6f: CALLDATALOAD 00001d70: PUSH1 0x20 00001d72: DUP4 00001d73: ADD 00001d74: MSTORE 00001d75: POP 00001d76: PUSH1 0xc0 00001d78: DUP4 00001d79: ADD 00001d7a: CALLDATALOAD 00001d7b: PUSH1 0x40 00001d7d: DUP3 00001d7e: ADD 00001d7f: MSTORE 00001d80: PUSH2 0x1d8c 00001d83: DUP5 00001d84: PUSH1 0xe0 00001d86: DUP6 00001d87: ADD 00001d88: PUSH2 0x1bde 00001d8b: JUMP 00001d8c: JUMPDEST 00001d8d: PUSH1 0x60 00001d8f: DUP3 00001d90: ADD 00001d91: MSTORE 00001d92: PUSH2 0x1d9f 00001d95: DUP5 00001d96: PUSH2 0x0100 00001d99: DUP6 00001d9a: ADD 00001d9b: PUSH2 0x1bc2 00001d9e: JUMP 00001d9f: JUMPDEST 00001da0: PUSH1 0x80 00001da2: DUP3 00001da3: ADD 00001da4: MSTORE 00001da5: SWAP4 00001da6: SWAP3 00001da7: POP 00001da8: POP 00001da9: POP 00001daa: JUMP 00001dab: JUMPDEST 00001dac: PUSH1 0x00 00001dae: PUSH1 0x20 00001db0: DUP3 00001db1: DUP5 00001db2: SUB 00001db3: SLT 00001db4: ISZERO 00001db5: PUSH2 0x1dbc 00001db8: JUMPI 00001db9: DUP1 00001dba: DUP2 00001dbb: REVERT 00001dbc: JUMPDEST 00001dbd: POP 00001dbe: CALLDATALOAD 00001dbf: SWAP2 00001dc0: SWAP1 00001dc1: POP 00001dc2: JUMP 00001dc3: JUMPDEST 00001dc4: PUSH1 0x00 00001dc6: PUSH1 0x20 00001dc8: DUP3 00001dc9: DUP5 00001dca: SUB 00001dcb: SLT 00001dcc: ISZERO 00001dcd: PUSH2 0x1dd4 00001dd0: JUMPI 00001dd1: DUP1 00001dd2: DUP2 00001dd3: REVERT 00001dd4: JUMPDEST 00001dd5: POP 00001dd6: MLOAD 00001dd7: SWAP2 00001dd8: SWAP1 00001dd9: POP 00001dda: JUMP 00001ddb: JUMPDEST 00001ddc: PUSH1 0x00 00001dde: PUSH1 0x20 00001de0: DUP3 00001de1: DUP5 00001de2: SUB 00001de3: SLT 00001de4: ISZERO 00001de5: PUSH2 0x1dec 00001de8: JUMPI 00001de9: DUP1 00001dea: DUP2 00001deb: REVERT 00001dec: JUMPDEST 00001ded: DUP2 00001dee: MLOAD 00001def: PUSH2 0x1b4a 00001df2: DUP2 00001df3: PUSH2 0x216b 00001df6: JUMP 00001df7: JUMPDEST 00001df8: PUSH1 0x00 00001dfa: DUP2 00001dfb: DUP5 00001dfc: DUP3 00001dfd: JUMPDEST 00001dfe: PUSH1 0x05 00001e00: DUP2 00001e01: LT 00001e02: ISZERO 00001e03: PUSH2 0x1e1c 00001e06: JUMPI 00001e07: DUP2 00001e08: CALLDATALOAD 00001e09: DUP4 00001e0a: MSTORE 00001e0b: PUSH1 0x20 00001e0d: SWAP3 00001e0e: DUP4 00001e0f: ADD 00001e10: SWAP3 00001e11: SWAP1 00001e12: SWAP2 00001e13: ADD 00001e14: SWAP1 00001e15: PUSH1 0x01 00001e17: ADD 00001e18: PUSH2 0x1dfd 00001e1b: JUMP 00001e1c: JUMPDEST 00001e1d: POP 00001e1e: POP 00001e1f: POP 00001e20: POP 00001e21: PUSH1 0xa0 00001e23: DUP2 00001e24: ADD 00001e25: SWAP2 00001e26: SWAP1 00001e27: SWAP2 00001e28: MSTORE 00001e29: PUSH1 0xc0 00001e2b: ADD 00001e2c: SWAP2 00001e2d: SWAP1 00001e2e: POP 00001e2f: JUMP 00001e30: JUMPDEST 00001e31: PUSH1 0x00 00001e33: DUP2 00001e34: DUP5 00001e35: DUP3 00001e36: JUMPDEST 00001e37: PUSH1 0x05 00001e39: DUP2 00001e3a: LT 00001e3b: ISZERO 00001e3c: PUSH2 0x1e1c 00001e3f: JUMPI 00001e40: DUP2 00001e41: MLOAD 00001e42: DUP4 00001e43: MSTORE 00001e44: PUSH1 0x20 00001e46: SWAP3 00001e47: DUP4 00001e48: ADD 00001e49: SWAP3 00001e4a: SWAP1 00001e4b: SWAP2 00001e4c: ADD 00001e4d: SWAP1 00001e4e: PUSH1 0x01 00001e50: ADD 00001e51: PUSH2 0x1e36 00001e54: JUMP 00001e55: JUMPDEST 00001e56: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00001e77: DUP2 00001e78: MSTORE 00001e79: PUSH1 0x1c 00001e7b: DUP2 00001e7c: ADD 00001e7d: SWAP2 00001e7e: SWAP1 00001e7f: SWAP2 00001e80: MSTORE 00001e81: PUSH1 0x3c 00001e83: ADD 00001e84: SWAP1 00001e85: JUMP 00001e86: JUMPDEST 00001e87: PUSH1 0x01 00001e89: PUSH1 0x01 00001e8b: PUSH1 0xa0 00001e8d: SHL 00001e8e: SUB 00001e8f: SWAP2 00001e90: SWAP1 00001e91: SWAP2 00001e92: AND 00001e93: DUP2 00001e94: MSTORE 00001e95: PUSH1 0x20 00001e97: ADD 00001e98: SWAP1 00001e99: JUMP 00001e9a: JUMPDEST 00001e9b: PUSH1 0x01 00001e9d: PUSH1 0x01 00001e9f: PUSH1 0xa0 00001ea1: SHL 00001ea2: SUB 00001ea3: SWAP3 00001ea4: SWAP1 00001ea5: SWAP3 00001ea6: AND 00001ea7: DUP3 00001ea8: MSTORE 00001ea9: PUSH1 0x20 00001eab: DUP3 00001eac: ADD 00001ead: MSTORE 00001eae: PUSH1 0x40 00001eb0: ADD 00001eb1: SWAP1 00001eb2: JUMP 00001eb3: JUMPDEST 00001eb4: PUSH1 0x01 00001eb6: PUSH1 0x01 00001eb8: PUSH1 0xa0 00001eba: SHL 00001ebb: SUB 00001ebc: SWAP4 00001ebd: DUP5 00001ebe: AND 00001ebf: DUP2 00001ec0: MSTORE 00001ec1: PUSH1 0x20 00001ec3: DUP2 00001ec4: ADD 00001ec5: SWAP3 00001ec6: SWAP1 00001ec7: SWAP3 00001ec8: MSTORE 00001ec9: SWAP1 00001eca: SWAP2 00001ecb: AND 00001ecc: PUSH1 0x40 00001ece: DUP3 00001ecf: ADD 00001ed0: MSTORE 00001ed1: PUSH1 0x60 00001ed3: ADD 00001ed4: SWAP1 00001ed5: JUMP 00001ed6: JUMPDEST 00001ed7: PUSH1 0x01 00001ed9: PUSH1 0x01 00001edb: PUSH1 0xa0 00001edd: SHL 00001ede: SUB 00001edf: SWAP5 00001ee0: DUP6 00001ee1: AND 00001ee2: DUP2 00001ee3: MSTORE 00001ee4: PUSH1 0x20 00001ee6: DUP2 00001ee7: ADD 00001ee8: SWAP4 00001ee9: SWAP1 00001eea: SWAP4 00001eeb: MSTORE 00001eec: SWAP3 00001eed: AND 00001eee: PUSH1 0x40 00001ef0: DUP3 00001ef1: ADD 00001ef2: MSTORE 00001ef3: PUSH2 0xffff 00001ef6: SWAP1 00001ef7: SWAP2 00001ef8: AND 00001ef9: PUSH1 0x60 00001efb: DUP3 00001efc: ADD 00001efd: MSTORE 00001efe: PUSH1 0x80 00001f00: ADD 00001f01: SWAP1 00001f02: JUMP 00001f03: JUMPDEST 00001f04: PUSH1 0x60 00001f06: DUP1 00001f07: DUP3 00001f08: MSTORE 00001f09: DUP5 00001f0a: MLOAD 00001f0b: SWAP1 00001f0c: DUP3 00001f0d: ADD 00001f0e: DUP2 00001f0f: SWAP1 00001f10: MSTORE 00001f11: PUSH1 0x00 00001f13: SWAP1 00001f14: PUSH1 0x20 00001f16: SWAP1 00001f17: PUSH1 0x80 00001f19: DUP5 00001f1a: ADD 00001f1b: SWAP1 00001f1c: DUP3 00001f1d: DUP9 00001f1e: ADD 00001f1f: DUP5 00001f20: JUMPDEST 00001f21: DUP3 00001f22: DUP2 00001f23: LT 00001f24: ISZERO 00001f25: PUSH2 0x1f45 00001f28: JUMPI 00001f29: DUP2 00001f2a: MLOAD 00001f2b: PUSH1 0x01 00001f2d: PUSH1 0x01 00001f2f: PUSH1 0xa0 00001f31: SHL 00001f32: SUB 00001f33: AND 00001f34: DUP5 00001f35: MSTORE 00001f36: SWAP3 00001f37: DUP5 00001f38: ADD 00001f39: SWAP3 00001f3a: SWAP1 00001f3b: DUP5 00001f3c: ADD 00001f3d: SWAP1 00001f3e: PUSH1 0x01 00001f40: ADD 00001f41: PUSH2 0x1f20 00001f44: JUMP 00001f45: JUMPDEST 00001f46: POP 00001f47: POP 00001f48: POP 00001f49: SWAP1 00001f4a: DUP4 00001f4b: ADD 00001f4c: SWAP5 00001f4d: SWAP1 00001f4e: SWAP5 00001f4f: MSTORE 00001f50: POP 00001f51: PUSH1 0x01 00001f53: PUSH1 0x01 00001f55: PUSH1 0xa0 00001f57: SHL 00001f58: SUB 00001f59: SWAP2 00001f5a: SWAP1 00001f5b: SWAP2 00001f5c: AND 00001f5d: PUSH1 0x40 00001f5f: SWAP1 00001f60: SWAP2 00001f61: ADD 00001f62: MSTORE 00001f63: SWAP2 00001f64: SWAP1 00001f65: POP 00001f66: JUMP 00001f67: JUMPDEST 00001f68: PUSH1 0xa0 00001f6a: DUP2 00001f6b: ADD 00001f6c: DUP2 00001f6d: DUP4 00001f6e: PUSH1 0x00 00001f70: JUMPDEST 00001f71: PUSH1 0x05 00001f73: DUP2 00001f74: LT 00001f75: ISZERO 00001f76: PUSH2 0x1f8f 00001f79: JUMPI 00001f7a: DUP2 00001f7b: MLOAD 00001f7c: DUP4 00001f7d: MSTORE 00001f7e: PUSH1 0x20 00001f80: SWAP3 00001f81: DUP4 00001f82: ADD 00001f83: SWAP3 00001f84: SWAP1 00001f85: SWAP2 00001f86: ADD 00001f87: SWAP1 00001f88: PUSH1 0x01 00001f8a: ADD 00001f8b: PUSH2 0x1f70 00001f8e: JUMP 00001f8f: JUMPDEST 00001f90: POP 00001f91: POP 00001f92: POP 00001f93: SWAP3 00001f94: SWAP2 00001f95: POP 00001f96: POP 00001f97: JUMP 00001f98: JUMPDEST 00001f99: SWAP1 00001f9a: DUP2 00001f9b: MSTORE 00001f9c: PUSH1 0x20 00001f9e: ADD 00001f9f: SWAP1 00001fa0: JUMP 00001fa1: JUMPDEST 00001fa2: SWAP4 00001fa3: DUP5 00001fa4: MSTORE 00001fa5: PUSH1 0xff 00001fa7: SWAP3 00001fa8: SWAP1 00001fa9: SWAP3 00001faa: AND 00001fab: PUSH1 0x20 00001fad: DUP5 00001fae: ADD 00001faf: MSTORE 00001fb0: PUSH1 0x40 00001fb2: DUP4 00001fb3: ADD 00001fb4: MSTORE 00001fb5: PUSH1 0x60 00001fb7: DUP3 00001fb8: ADD 00001fb9: MSTORE 00001fba: PUSH1 0x80 00001fbc: ADD 00001fbd: SWAP1 00001fbe: JUMP 00001fbf: JUMPDEST 00001fc0: PUSH1 0x00 00001fc2: PUSH1 0x20 00001fc4: DUP1 00001fc5: DUP4 00001fc6: MSTORE 00001fc7: DUP4 00001fc8: MLOAD 00001fc9: DUP1 00001fca: DUP3 00001fcb: DUP6 00001fcc: ADD 00001fcd: MSTORE 00001fce: DUP3 00001fcf: JUMPDEST 00001fd0: DUP2 00001fd1: DUP2 00001fd2: LT 00001fd3: ISZERO 00001fd4: PUSH2 0x1feb 00001fd7: JUMPI 00001fd8: DUP6 00001fd9: DUP2 00001fda: ADD 00001fdb: DUP4 00001fdc: ADD 00001fdd: MLOAD 00001fde: DUP6 00001fdf: DUP3 00001fe0: ADD 00001fe1: PUSH1 0x40 00001fe3: ADD 00001fe4: MSTORE 00001fe5: DUP3 00001fe6: ADD 00001fe7: PUSH2 0x1fcf 00001fea: JUMP 00001feb: JUMPDEST 00001fec: DUP2 00001fed: DUP2 00001fee: GT 00001fef: ISZERO 00001ff0: PUSH2 0x1ffc 00001ff3: JUMPI 00001ff4: DUP4 00001ff5: PUSH1 0x40 00001ff7: DUP4 00001ff8: DUP8 00001ff9: ADD 00001ffa: ADD 00001ffb: MSTORE 00001ffc: JUMPDEST 00001ffd: POP 00001ffe: PUSH1 0x1f 00002000: ADD 00002001: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002022: AND 00002023: SWAP3 00002024: SWAP1 00002025: SWAP3 00002026: ADD 00002027: PUSH1 0x40 00002029: ADD 0000202a: SWAP4 0000202b: SWAP3 0000202c: POP 0000202d: POP 0000202e: POP 0000202f: JUMP 00002030: JUMPDEST 00002031: PUSH1 0x20 00002033: DUP1 00002034: DUP3 00002035: MSTORE 00002036: PUSH1 0x13 00002038: SWAP1 00002039: DUP3 0000203a: ADD 0000203b: MSTORE 0000203c: PUSH32 0x556e737566696369656e742062616c616e636500000000000000000000000000 0000205d: PUSH1 0x40 0000205f: DUP3 00002060: ADD 00002061: MSTORE 00002062: PUSH1 0x60 00002064: ADD 00002065: SWAP1 00002066: JUMP 00002067: JUMPDEST 00002068: PUSH1 0x20 0000206a: DUP1 0000206b: DUP3 0000206c: MSTORE 0000206d: PUSH1 0x1a 0000206f: SWAP1 00002070: DUP3 00002071: ADD 00002072: MSTORE 00002073: PUSH32 0x556e737566696369656e74206275666665722062616c616e6365000000000000 00002094: PUSH1 0x40 00002096: DUP3 00002097: ADD 00002098: MSTORE 00002099: PUSH1 0x60 0000209b: ADD 0000209c: SWAP1 0000209d: JUMP 0000209e: JUMPDEST 0000209f: PUSH1 0x20 000020a1: DUP1 000020a2: DUP3 000020a3: MSTORE 000020a4: PUSH1 0x11 000020a6: SWAP1 000020a7: DUP3 000020a8: ADD 000020a9: MSTORE 000020aa: PUSH32 0x496e76616c6964207369676e6174757265000000000000000000000000000000 000020cb: PUSH1 0x40 000020cd: DUP3 000020ce: ADD 000020cf: MSTORE 000020d0: PUSH1 0x60 000020d2: ADD 000020d3: SWAP1 000020d4: JUMP 000020d5: JUMPDEST 000020d6: PUSH1 0x20 000020d8: DUP1 000020d9: DUP3 000020da: MSTORE 000020db: PUSH1 0x13 000020dd: SWAP1 000020de: DUP3 000020df: ADD 000020e0: MSTORE 000020e1: PUSH32 0x496e737566696369656e742062616c616e636500000000000000000000000000 00002102: PUSH1 0x40 00002104: DUP3 00002105: ADD 00002106: MSTORE 00002107: PUSH1 0x60 00002109: ADD 0000210a: SWAP1 0000210b: JUMP 0000210c: JUMPDEST 0000210d: SWAP5 0000210e: DUP6 0000210f: MSTORE 00002110: PUSH1 0x20 00002112: DUP6 00002113: ADD 00002114: SWAP4 00002115: SWAP1 00002116: SWAP4 00002117: MSTORE 00002118: PUSH1 0x40 0000211a: DUP5 0000211b: ADD 0000211c: SWAP2 0000211d: SWAP1 0000211e: SWAP2 0000211f: MSTORE 00002120: PUSH1 0x60 00002122: DUP4 00002123: ADD 00002124: MSTORE 00002125: PUSH1 0x80 00002127: DUP3 00002128: ADD 00002129: MSTORE 0000212a: PUSH1 0xa0 0000212c: ADD 0000212d: SWAP1 0000212e: JUMP 0000212f: JUMPDEST 00002130: PUSH1 0x40 00002132: MLOAD 00002133: DUP2 00002134: DUP2 00002135: ADD 00002136: PUSH8 0xffffffffffffffff 0000213f: DUP2 00002140: GT 00002141: DUP3 00002142: DUP3 00002143: LT 00002144: OR 00002145: ISZERO 00002146: PUSH2 0x214e 00002149: JUMPI 0000214a: PUSH1 0x00 0000214c: DUP1 0000214d: REVERT 0000214e: JUMPDEST 0000214f: PUSH1 0x40 00002151: MSTORE 00002152: SWAP2 00002153: SWAP1 00002154: POP 00002155: JUMP 00002156: JUMPDEST 00002157: PUSH1 0x01 00002159: PUSH1 0x01 0000215b: PUSH1 0xa0 0000215d: SHL 0000215e: SUB 0000215f: DUP2 00002160: AND 00002161: DUP2 00002162: EQ 00002163: PUSH2 0x0521 00002166: JUMPI 00002167: PUSH1 0x00 00002169: DUP1 0000216a: REVERT 0000216b: JUMPDEST 0000216c: PUSH1 0xff 0000216e: DUP2 0000216f: AND 00002170: DUP2 00002171: EQ 00002172: PUSH2 0x0521 00002175: JUMPI 00002176: PUSH1 0x00 00002178: DUP1 00002179: REVERT 0000217a: INVALID 0000217b: LOG2 0000217c: PUSH5 0x6970667358 00002182: UNKNOWN(0x22) 00002183: SLT 00002184: KECCAK256 00002185: DUP6 00002186: PUSH28 0xc2d00815f2c9769d1295d1a140240ae14a17266c9bfae1f7cad3f098 000021a3: SMOD 000021a4: UNKNOWN(0xE7) 000021a5: PUSH5 0x736f6c6343 000021ab: STOP 000021ac: MOD 000021ad: UNKNOWN(0x0C) 000021ae: STOP 000021af: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x1f8b3a12d5835886f321f0fe553f827a2c653651d1536946f00a07654f9e44fd
call_targets:
0x0c432335a0f4280d348e5ff865e02cc5e9562b3d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1f8b3a12d5835886f321f0fe553f827a2c653651d1536946f00a07654f9e44fd",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0c432335a0f4280d348e5ff865e02cc5e9562b3d"
],
"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": "0xd5eecedd",
"selector": "0xd5eecedd",
"calldata_variants": [
"0xd5eecedd",
"0xd5eecedd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfebcc2bd",
"selector": "0xfebcc2bd",
"calldata_variants": [
"0xfebcc2bd",
"0xfebcc2bd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb38dfbcd",
"selector": "0xb38dfbcd",
"calldata_variants": [
"0xb38dfbcd",
"0xb38dfbcd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf220914",
"selector": "0xbf220914",
"calldata_variants": [
"0xbf220914",
"0xbf2209140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd0e30db0",
"selector": "0xd0e30db0",
"calldata_variants": [
"0xd0e30db0",
"0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3bf224b",
"selector": "0xa3bf224b",
"calldata_variants": [
"0xa3bf224b",
"0xa3bf224b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xac4afa38",
"selector": "0xac4afa38",
"calldata_variants": [
"0xac4afa38",
"0xac4afa380000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2933,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3713,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4233,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [],
"untrusted_call_count": 5
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x1f8b3a12d5835886f321f0fe553f827a2c653651d1536946f00a07654f9e44fd
call_targets:
0x0c432335a0f4280d348e5ff865e02cc5e9562b3d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1f8b3a12d5835886f321f0fe553f827a2c653651d1536946f00a07654f9e44fd",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0c432335a0f4280d348e5ff865e02cc5e9562b3d"
],
"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": "0xd5eecedd",
"selector": "0xd5eecedd",
"calldata_variants": [
"0xd5eecedd",
"0xd5eecedd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfebcc2bd",
"selector": "0xfebcc2bd",
"calldata_variants": [
"0xfebcc2bd",
"0xfebcc2bd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb38dfbcd",
"selector": "0xb38dfbcd",
"calldata_variants": [
"0xb38dfbcd",
"0xb38dfbcd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf220914",
"selector": "0xbf220914",
"calldata_variants": [
"0xbf220914",
"0xbf2209140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd0e30db0",
"selector": "0xd0e30db0",
"calldata_variants": [
"0xd0e30db0",
"0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3bf224b",
"selector": "0xa3bf224b",
"calldata_variants": [
"0xa3bf224b",
"0xa3bf224b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xac4afa38",
"selector": "0xac4afa38",
"calldata_variants": [
"0xac4afa38",
"0xac4afa380000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2933,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3713,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4233,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": []
}
|
| low | auth | codex | Balance update signatures lack domain separation (replay across contracts/chains) | 65 | no | — |
viewevidence_json{
"evidence": "verifyProof/getMessage hash only `deltas` and `userNonce` with no contract/chain binding.",
"locations": [
"contracts/NashSavingsLedgerAave.sol:161",
"contracts/NashSavingsLedgerAave.sol:366"
],
"recommendation": "Bind signatures to the contract and chain (e.g., EIP-712 typed data including contract address, chainId, user address, and nonce). Consider using a full-width uint256 nonce to avoid wrap-around reuse.",
"exploit_scenario": "A user signs an offchain balance update for one deployment. Because the signed message only includes deltas and nonce, the same signature can be replayed on another deployment or chain with the same nonce, allowing a privileged updater to apply unintended negative deltas there."
}
|
| low | math | codex | Manual withdrawal fee is unchecked and can underflow | 65 | no | — |
viewevidence_json{
"evidence": "`applyFee` computes `(10000 - fee)` without bounds checks; `setFee` allows any value and `withdraw` uses `applyFee`.",
"locations": [
"contracts/NashSavingsLedgerAave.sol:154",
"contracts/NashSavingsLedgerAave.sol:212",
"contracts/NashSavingsLedgerAave.sol:318"
],
"recommendation": "Validate `newFee <= 10000` in `setFee` and use SafeMath or explicit bounds checks in `applyFee`.",
"exploit_scenario": "If the owner sets `manualWithdrawalFee` above 10000, `applyFee` underflows and produces a huge withdrawal amount, likely causing withdrawals to revert and effectively DoSing user withdrawals."
}
|
| 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": 12
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 13
}
|