019bab3d-a126-71a9-ba02-d6d1d782d905
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 |
|---|---|---|---|---|
| 39119 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39120 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39121 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39122 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39123 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39124 | detector.run | complete | 1 / 3 | 3 months ago |
| 39125 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39251 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39252 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-296267lr)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-296267lr)
IAaveIncentivesController.configureAssets(address[],uint256[]).assets (contracts/interfaces/IAaveIncentivesController.sol#67) shadows:
- IAaveIncentivesController.assets(address) (contracts/interfaces/IAaveIncentivesController.sol#39-46) (function)
IAaveIncentivesController.getRewardsBalance(address[],address).assets (contracts/interfaces/IAaveIncentivesController.sol#87) shadows:
- IAaveIncentivesController.assets(address) (contracts/interfaces/IAaveIncentivesController.sol#39-46) (function)
IAaveIncentivesController.claimRewards(address[],uint256,address).assets (contracts/interfaces/IAaveIncentivesController.sol#99) shadows:
- IAaveIncentivesController.assets(address) (contracts/interfaces/IAaveIncentivesController.sol#39-46) (function)
IAaveIncentivesController.claimRewardsOnBehalf(address[],uint256,address,address).assets (contracts/interfaces/IAaveIncentivesController.sol#113) shadows:
- IAaveIncentivesController.assets(address) (contracts/interfaces/IAaveIncentivesController.sol#39-46) (function)
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
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
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)
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
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/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#127) is not in mixedCase
Function IAaveIncentivesController.REWARD_TOKEN() (contracts/interfaces/IAaveIncentivesController.sol#137) is not in mixedCase
Function IAaveIncentivesController.PRECISION() (contracts/interfaces/IAaveIncentivesController.sol#142) is not in mixedCase
Function IAaveIncentivesController.DISTRIBUTION_END() (contracts/interfaces/IAaveIncentivesController.sol#147) 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
. analyzed (18 contracts with 100 detectors), 39 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-296267lr --allow-paths /tmp/slither-296267lr,/tmp/slither-296267lr/lib,/tmp/slither-296267lr/src",
"remappings": [],
"source_files": [
"contracts/protocol/tokenization/AToken.sol",
"contracts/dependencies/openzeppelin/contracts/IERC20.sol",
"contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
"contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
"contracts/dependencies/openzeppelin/contracts/Address.sol",
"contracts/interfaces/ILendingPool.sol",
"contracts/interfaces/ILendingPoolAddressesProvider.sol",
"contracts/protocol/libraries/types/DataTypes.sol",
"contracts/interfaces/IAToken.sol",
"contracts/interfaces/IScaledBalanceToken.sol",
"contracts/interfaces/IInitializableAToken.sol",
"contracts/interfaces/IAaveIncentivesController.sol",
"contracts/protocol/libraries/math/WadRayMath.sol",
"contracts/protocol/libraries/helpers/Errors.sol",
"contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
"contracts/protocol/tokenization/IncentivizedERC20.sol",
"contracts/dependencies/openzeppelin/contracts/Context.sol",
"contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 39,
"workspace_hash": "649f40b98dbb503672e06cd31640557c77d63f17639f2609dd58d9023b01e388",
"duration_seconds": 1.1110234260559082,
"solc_version_requested": "0.6.12"
}
{"no_findings":false,"summary":"Found one high-severity upgradeability risk: the AToken initializer is externally callable without access control, enabling takeover if a proxy or instance is deployed without atomic initialization.","findings":[{"severity":"high","category":"upgradeability","title":"Unrestricted initializer allows takeover of uninitialized AToken instance/proxy","exploit_scenario":"If a new AToken proxy/instance is deployed and `initialize` is not called atomically, an attacker can call `initialize` first, set `_pool` to their address and `_underlyingAsset` to the real reserve asset, then use `transferUnderlyingTo`/`mint`/`burn` as the LendingPool to drain assets or mint arbitrary balances.","recommendation":"Ensure initialization happens atomically at deployment (constructor-based or factory call), or restrict `initialize` to a trusted deployer (e.g., addresses provider/admin). Consider locking the implementation with a constructor that sets `lastInitializedRevision` or a dedicated `_disableInitializers` pattern.","evidence":"`initialize` is `external` and only protected by `initializer`, with no caller restriction.","locations":["contracts/protocol/tokenization/AToken.sol:64"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-j2wcyvwt
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac38-af46-7ed3-b737-9c2b7a0ea766
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-j2wcyvwt succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-j2wcyvwt succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/dependencies/openzeppelin/contracts/Address.sol
================================================================================
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
thinking
**Identifying first-party source files**
exec
/bin/bash -lc 'rg "''^FILE:" -n AUDIT_BUNDLE.txt' in /tmp/codex-j2wcyvwt succeeded in 8ms:
5:FILE: contracts/dependencies/openzeppelin/contracts/Address.sol
70:FILE: contracts/dependencies/openzeppelin/contracts/Context.sol
97:FILE: contracts/dependencies/openzeppelin/contracts/IERC20.sol
181:FILE: contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol
197:FILE: contracts/dependencies/openzeppelin/contracts/SafeERC20.sol
265:FILE: contracts/dependencies/openzeppelin/contracts/SafeMath.sol
432:FILE: contracts/interfaces/IAToken.sol
564:FILE: contracts/interfaces/IAaveIncentivesController.sol
716:FILE: contracts/interfaces/IInitializableAToken.sol
775:FILE: contracts/interfaces/ILendingPool.sol
1189:FILE: contracts/interfaces/ILendingPoolAddressesProvider.sol
1253:FILE: contracts/interfaces/IScaledBalanceToken.sol
1283:FILE: contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol
1364:FILE: contracts/protocol/libraries/helpers/Errors.sol
1493:FILE: contracts/protocol/libraries/math/WadRayMath.sol
1632:FILE: contracts/protocol/libraries/types/DataTypes.sol
1687:FILE: contracts/protocol/tokenization/AToken.sol
2097:FILE: contracts/protocol/tokenization/IncentivizedERC20.sol
thinking
**Extracting AToken contract code**
exec
/bin/bash -lc "sed -n '1283,1750p' AUDIT_BUNDLE.txt" in /tmp/codex-j2wcyvwt succeeded in 7ms:
FILE: contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol
================================================================================
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
/**
* @title VersionedInitializable
*
* @dev Helper contract to implement initializer functions. To use it, replace
* the constructor with a function that has the `initializer` modifier.
* WARNING: Unlike constructors, initializer functions must be manually
* invoked. This applies both to deploying an Initializable contract, as well
* as extending an Initializable contract via inheritance.
* WARNING: When used with inheritance, manual care must be taken to not invoke
* a parent initializer twice, or ensure that all initializers are idempotent,
* because this is not dealt with automatically as with constructors.
*
* @author Aave, inspired by the OpenZeppelin Initializable contract
*/
abstract contract VersionedInitializable {
exec
/bin/bash -lc "sed -n '1750,2160p' AUDIT_BUNDLE.txt" in /tmp/codex-j2wcyvwt succeeded in 12ms:
* @param aTokenSymbol The symbol of the aToken
*/
function initialize(
ILendingPool pool,
address treasury,
address underlyingAsset,
IAaveIncentivesController incentivesController,
uint8 aTokenDecimals,
string calldata aTokenName,
string calldata aTokenSymbol,
bytes calldata params
) external override initializer {
uint256 chainId;
//solium-disable-next-line
assembly {
chainId := chainid()
}
DOMAIN_SEPARATOR = keccak256(
thinking
**Analyzing potential upgradeability and access control risks**
I'm reviewing the AToken’s initialization and external functions, noting that its external initializer lacks access control which could allow takeover if deployed improperly. I’m also curious about signature malleability in permit and potential minor reentrancy or rounding issues, but overall these seem low risk or expected given the protocol context. The main concern is unprotected initialization in upgradeable proxy patterns, a typical but important risk to flag.
exec
/bin/bash -lc "sed -n '700,850p' AUDIT_BUNDLE.txt" in /tmp/codex-j2wcyvwt succeeded in 8ms:
* @dev for backward compatibility with previous implementation of the Incentives controller
*/
function REWARD_TOKEN() external view returns (address);
/**
* @dev for backward compatibility with previous implementation of the Incentives controller
*/
function PRECISION() external view returns (uint8);
/**
* @dev Gets the distribution end timestamp of the emissions
*/
function DISTRIBUTION_END() external view returns (uint256);
}
================================================================================
FILE: contracts/interfaces/IInitializableAToken.sol
================================================================================
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
thinking
**Evaluating potential vulnerabilities and initializer risks**
I'm reviewing key concerns like unprotected initialization, possible reentrancy through external calls, domain separator chainId issues, and missing access control, focusing mainly on AToken's initializer and external call patterns to highlight the most meaningful risks.
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1687,1865p'" in /tmp/codex-j2wcyvwt succeeded in 6ms:
1687 FILE: contracts/protocol/tokenization/AToken.sol
1688 ================================================================================
1689 // SPDX-License-Identifier: agpl-3.0
1690 pragma solidity 0.6.12;
1691
1692 import {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';
1693 import {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';
1694 import {ILendingPool} from '../../interfaces/ILendingPool.sol';
1695 import {IAToken} from '../../interfaces/IAToken.sol';
1696 import {WadRayMath} from '../libraries/math/WadRayMath.sol';
1697 import {Errors} from '../libraries/helpers/Errors.sol';
1698 import {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';
1699 import {IncentivizedERC20} from './IncentivizedERC20.sol';
1700 import {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';
1701
1702 /**
1703 * @title Aave ERC20 AToken
1704 * @dev Implementation of the interest bearing token for the Aave protocol
1705 * @author Aave
1706 */
thinking
**Clarifying source file line numbers**
exec
/bin/bash -lc "nl -ba contracts/protocol/tokenization/AToken.sol | sed -n '60,160p'" in /tmp/codex-j2wcyvwt succeeded in 6ms:
60 * @param aTokenDecimals The decimals of the aToken, same as the underlying asset's
61 * @param aTokenName The name of the aToken
62 * @param aTokenSymbol The symbol of the aToken
63 */
64 function initialize(
65 ILendingPool pool,
66 address treasury,
67 address underlyingAsset,
68 IAaveIncentivesController incentivesController,
69 uint8 aTokenDecimals,
70 string calldata aTokenName,
71 string calldata aTokenSymbol,
72 bytes calldata params
73 ) external override initializer {
74 uint256 chainId;
75
76 //solium-disable-next-line
77 assembly {
78 chainId := chainid()
79 }
thinking
**Analyzing AToken initializer and upgradeability risks**
codex
{"no_findings":false,"summary":"Found one high-severity upgradeability risk: the AToken initializer is externally callable without access control, enabling takeover if a proxy or instance is deployed without atomic initialization.","findings":[{"severity":"high","category":"upgradeability","title":"Unrestricted initializer allows takeover of uninitialized AToken instance/proxy","exploit_scenario":"If a new AToken proxy/instance is deployed and `initialize` is not called atomically, an attacker can call `initialize` first, set `_pool` to their address and `_underlyingAsset` to the real reserve asset, then use `transferUnderlyingTo`/`mint`/`burn` as the LendingPool to drain assets or mint arbitrary balances.","recommendation":"Ensure initialization happens atomically at deployment (constructor-based or factory call), or restrict `initialize` to a trusted deployer (e.g., addresses provider/admin). Consider locking the implementation with a constructor that sets `lastInitializedRevision` or a dedicated `_disableInitializers` pattern.","evidence":"`initialize` is `external` and only protected by `initializer`, with no caller restriction.","locations":["contracts/protocol/tokenization/AToken.sol:64"]}]}
tokens used
32,953
{
"codex": {
"ran_at": "2026-01-11T08:45:12.483350+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 18,
"import_count": 23,
"first_party_contracts_count": 18
},
"summary": "Found one high-severity upgradeability risk: the AToken initializer is externally callable without access control, enabling takeover if a proxy or instance is deployed without atomic initialization.",
"raw_final": {
"summary": "Found one high-severity upgradeability risk: the AToken initializer is externally callable without access control, enabling takeover if a proxy or instance is deployed without atomic initialization.",
"findings": [
{
"title": "Unrestricted initializer allows takeover of uninitialized AToken instance/proxy",
"category": "upgradeability",
"evidence": "`initialize` is `external` and only protected by `initializer`, with no caller restriction.",
"severity": "high",
"locations": [
"contracts/protocol/tokenization/AToken.sol:64"
],
"recommendation": "Ensure initialization happens atomically at deployment (constructor-based or factory call), or restrict `initialize` to a trusted deployer (e.g., addresses provider/admin). Consider locking the implementation with a constructor that sets `lastInitializedRevision` or a dedicated `_disableInitializers` pattern.",
"exploit_scenario": "If a new AToken proxy/instance is deployed and `initialize` is not called atomically, an attacker can call `initialize` first, set `_pool` to their address and `_underlyingAsset` to the real reserve asset, then use `transferUnderlyingTo`/`mint`/`burn` as the LendingPool to drain assets or mint arbitrary balances."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x01a5 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x7535d246 00000026: GT 00000027: PUSH2 0x00ef 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xae167335 00000031: GT 00000032: PUSH2 0x0092 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xae167335 0000003c: EQ 0000003d: PUSH2 0x0626 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xb16a19de 00000047: EQ 00000048: PUSH2 0x062e 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xb1bf962d 00000052: EQ 00000053: PUSH2 0x0636 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xb9844d8d 0000005d: EQ 0000005e: PUSH2 0x063e 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xd505accf 00000068: EQ 00000069: PUSH2 0x0664 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xd7020d0a 00000073: EQ 00000074: PUSH2 0x06b5 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0xdd62ed3e 0000007e: EQ 0000007f: PUSH2 0x06f1 00000082: JUMPI 00000083: DUP1 00000084: PUSH4 0xf866c319 00000089: EQ 0000008a: PUSH2 0x071f 0000008d: JUMPI 0000008e: PUSH2 0x01a5 00000091: JUMP 00000092: JUMPDEST 00000093: DUP1 00000094: PUSH4 0x7535d246 00000099: EQ 0000009a: PUSH2 0x0543 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x75d26413 000000a4: EQ 000000a5: PUSH2 0x0567 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x78160376 000000af: EQ 000000b0: PUSH2 0x056f 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x7df5bd3b 000000ba: EQ 000000bb: PUSH2 0x0577 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x88dd91a1 000000c5: EQ 000000c6: PUSH2 0x059a 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x95d89b41 000000d0: EQ 000000d1: PUSH2 0x05c6 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0xa457c2d7 000000db: EQ 000000dc: PUSH2 0x05ce 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0xa9059cbb 000000e6: EQ 000000e7: PUSH2 0x05fa 000000ea: JUMPI 000000eb: PUSH2 0x01a5 000000ee: JUMP 000000ef: JUMPDEST 000000f0: DUP1 000000f1: PUSH4 0x1da24f3e 000000f6: GT 000000f7: PUSH2 0x0157 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x1da24f3e 00000101: EQ 00000102: PUSH2 0x043b 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0x23b872dd 0000010c: EQ 0000010d: PUSH2 0x0461 00000110: JUMPI 00000111: DUP1 00000112: PUSH4 0x30adf81f 00000117: EQ 00000118: PUSH2 0x0497 0000011b: JUMPI 0000011c: DUP1 0000011d: PUSH4 0x313ce567 00000122: EQ 00000123: PUSH2 0x049f 00000126: JUMPI 00000127: DUP1 00000128: PUSH4 0x3644e515 0000012d: EQ 0000012e: PUSH2 0x04bd 00000131: JUMPI 00000132: DUP1 00000133: PUSH4 0x39509351 00000138: EQ 00000139: PUSH2 0x04c5 0000013c: JUMPI 0000013d: DUP1 0000013e: PUSH4 0x4efecaa5 00000143: EQ 00000144: PUSH2 0x04f1 00000147: JUMPI 00000148: DUP1 00000149: PUSH4 0x70a08231 0000014e: EQ 0000014f: PUSH2 0x051d 00000152: JUMPI 00000153: PUSH2 0x01a5 00000156: JUMP 00000157: JUMPDEST 00000158: DUP1 00000159: PUSH4 0x06fdde03 0000015e: EQ 0000015f: PUSH2 0x01aa 00000162: JUMPI 00000163: DUP1 00000164: PUSH4 0x095ea7b3 00000169: EQ 0000016a: PUSH2 0x0227 0000016d: JUMPI 0000016e: DUP1 0000016f: PUSH4 0x0afbcdc9 00000174: EQ 00000175: PUSH2 0x0267 00000178: JUMPI 00000179: DUP1 0000017a: PUSH4 0x0bd7ad3b 0000017f: EQ 00000180: PUSH2 0x02a6 00000183: JUMPI 00000184: DUP1 00000185: PUSH4 0x156e29f6 0000018a: EQ 0000018b: PUSH2 0x02c0 0000018e: JUMPI 0000018f: DUP1 00000190: PUSH4 0x18160ddd 00000195: EQ 00000196: PUSH2 0x02f2 00000199: JUMPI 0000019a: DUP1 0000019b: PUSH4 0x183fb413 000001a0: EQ 000001a1: PUSH2 0x02fa 000001a4: JUMPI 000001a5: JUMPDEST 000001a6: PUSH1 0x00 000001a8: DUP1 000001a9: REVERT 000001aa: JUMPDEST 000001ab: PUSH2 0x01b2 000001ae: PUSH2 0x0755 000001b1: JUMP 000001b2: JUMPDEST 000001b3: PUSH1 0x40 000001b5: DUP1 000001b6: MLOAD 000001b7: PUSH1 0x20 000001b9: DUP1 000001ba: DUP3 000001bb: MSTORE 000001bc: DUP4 000001bd: MLOAD 000001be: DUP2 000001bf: DUP4 000001c0: ADD 000001c1: MSTORE 000001c2: DUP4 000001c3: MLOAD 000001c4: SWAP2 000001c5: SWAP3 000001c6: DUP4 000001c7: SWAP3 000001c8: SWAP1 000001c9: DUP4 000001ca: ADD 000001cb: SWAP2 000001cc: DUP6 000001cd: ADD 000001ce: SWAP1 000001cf: DUP1 000001d0: DUP4 000001d1: DUP4 000001d2: PUSH1 0x00 000001d4: JUMPDEST 000001d5: DUP4 000001d6: DUP2 000001d7: LT 000001d8: ISZERO 000001d9: PUSH2 0x01ec 000001dc: JUMPI 000001dd: DUP2 000001de: DUP2 000001df: ADD 000001e0: MLOAD 000001e1: DUP4 000001e2: DUP3 000001e3: ADD 000001e4: MSTORE 000001e5: PUSH1 0x20 000001e7: ADD 000001e8: PUSH2 0x01d4 000001eb: JUMP 000001ec: JUMPDEST 000001ed: POP 000001ee: POP 000001ef: POP 000001f0: POP 000001f1: SWAP1 000001f2: POP 000001f3: SWAP1 000001f4: DUP2 000001f5: ADD 000001f6: SWAP1 000001f7: PUSH1 0x1f 000001f9: AND 000001fa: DUP1 000001fb: ISZERO 000001fc: PUSH2 0x0219 000001ff: JUMPI 00000200: DUP1 00000201: DUP3 00000202: SUB 00000203: DUP1 00000204: MLOAD 00000205: PUSH1 0x01 00000207: DUP4 00000208: PUSH1 0x20 0000020a: SUB 0000020b: PUSH2 0x0100 0000020e: EXP 0000020f: SUB 00000210: NOT 00000211: AND 00000212: DUP2 00000213: MSTORE 00000214: PUSH1 0x20 00000216: ADD 00000217: SWAP2 00000218: POP 00000219: JUMPDEST 0000021a: POP 0000021b: SWAP3 0000021c: POP 0000021d: POP 0000021e: POP 0000021f: PUSH1 0x40 00000221: MLOAD 00000222: DUP1 00000223: SWAP2 00000224: SUB 00000225: SWAP1 00000226: RETURN 00000227: JUMPDEST 00000228: PUSH2 0x0253 0000022b: PUSH1 0x04 0000022d: DUP1 0000022e: CALLDATASIZE 0000022f: SUB 00000230: PUSH1 0x40 00000232: DUP2 00000233: LT 00000234: ISZERO 00000235: PUSH2 0x023d 00000238: JUMPI 00000239: PUSH1 0x00 0000023b: DUP1 0000023c: REVERT 0000023d: JUMPDEST 0000023e: POP 0000023f: PUSH1 0x01 00000241: PUSH1 0x01 00000243: PUSH1 0xa0 00000245: SHL 00000246: SUB 00000247: DUP2 00000248: CALLDATALOAD 00000249: AND 0000024a: SWAP1 0000024b: PUSH1 0x20 0000024d: ADD 0000024e: CALLDATALOAD 0000024f: PUSH2 0x07ec 00000252: JUMP 00000253: JUMPDEST 00000254: PUSH1 0x40 00000256: DUP1 00000257: MLOAD 00000258: SWAP2 00000259: ISZERO 0000025a: ISZERO 0000025b: DUP3 0000025c: MSTORE 0000025d: MLOAD 0000025e: SWAP1 0000025f: DUP2 00000260: SWAP1 00000261: SUB 00000262: PUSH1 0x20 00000264: ADD 00000265: SWAP1 00000266: RETURN 00000267: JUMPDEST 00000268: PUSH2 0x028d 0000026b: PUSH1 0x04 0000026d: DUP1 0000026e: CALLDATASIZE 0000026f: SUB 00000270: PUSH1 0x20 00000272: DUP2 00000273: LT 00000274: ISZERO 00000275: PUSH2 0x027d 00000278: JUMPI 00000279: PUSH1 0x00 0000027b: DUP1 0000027c: REVERT 0000027d: JUMPDEST 0000027e: POP 0000027f: CALLDATALOAD 00000280: PUSH1 0x01 00000282: PUSH1 0x01 00000284: PUSH1 0xa0 00000286: SHL 00000287: SUB 00000288: AND 00000289: PUSH2 0x080a 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH1 0x40 00000290: DUP1 00000291: MLOAD 00000292: SWAP3 00000293: DUP4 00000294: MSTORE 00000295: PUSH1 0x20 00000297: DUP4 00000298: ADD 00000299: SWAP2 0000029a: SWAP1 0000029b: SWAP2 0000029c: MSTORE 0000029d: DUP1 0000029e: MLOAD 0000029f: SWAP2 000002a0: DUP3 000002a1: SWAP1 000002a2: SUB 000002a3: ADD 000002a4: SWAP1 000002a5: RETURN 000002a6: JUMPDEST 000002a7: PUSH2 0x02ae 000002aa: PUSH2 0x0827 000002ad: JUMP 000002ae: JUMPDEST 000002af: PUSH1 0x40 000002b1: DUP1 000002b2: MLOAD 000002b3: SWAP2 000002b4: DUP3 000002b5: MSTORE 000002b6: MLOAD 000002b7: SWAP1 000002b8: DUP2 000002b9: SWAP1 000002ba: SUB 000002bb: PUSH1 0x20 000002bd: ADD 000002be: SWAP1 000002bf: RETURN 000002c0: JUMPDEST 000002c1: PUSH2 0x0253 000002c4: PUSH1 0x04 000002c6: DUP1 000002c7: CALLDATASIZE 000002c8: SUB 000002c9: PUSH1 0x60 000002cb: DUP2 000002cc: LT 000002cd: ISZERO 000002ce: PUSH2 0x02d6 000002d1: JUMPI 000002d2: PUSH1 0x00 000002d4: DUP1 000002d5: REVERT 000002d6: JUMPDEST 000002d7: POP 000002d8: PUSH1 0x01 000002da: PUSH1 0x01 000002dc: PUSH1 0xa0 000002de: SHL 000002df: SUB 000002e0: DUP2 000002e1: CALLDATALOAD 000002e2: AND 000002e3: SWAP1 000002e4: PUSH1 0x20 000002e6: DUP2 000002e7: ADD 000002e8: CALLDATALOAD 000002e9: SWAP1 000002ea: PUSH1 0x40 000002ec: ADD 000002ed: CALLDATALOAD 000002ee: PUSH2 0x082c 000002f1: JUMP 000002f2: JUMPDEST 000002f3: PUSH2 0x02ae 000002f6: PUSH2 0x09fa 000002f9: JUMP 000002fa: JUMPDEST 000002fb: PUSH2 0x0439 000002fe: PUSH1 0x04 00000300: DUP1 00000301: CALLDATASIZE 00000302: SUB 00000303: PUSH2 0x0100 00000306: DUP2 00000307: LT 00000308: ISZERO 00000309: PUSH2 0x0311 0000030c: JUMPI 0000030d: PUSH1 0x00 0000030f: DUP1 00000310: REVERT 00000311: JUMPDEST 00000312: PUSH1 0x01 00000314: PUSH1 0x01 00000316: PUSH1 0xa0 00000318: SHL 00000319: SUB 0000031a: DUP3 0000031b: CALLDATALOAD 0000031c: DUP2 0000031d: AND 0000031e: SWAP3 0000031f: PUSH1 0x20 00000321: DUP2 00000322: ADD 00000323: CALLDATALOAD 00000324: DUP3 00000325: AND 00000326: SWAP3 00000327: PUSH1 0x40 00000329: DUP3 0000032a: ADD 0000032b: CALLDATALOAD 0000032c: DUP4 0000032d: AND 0000032e: SWAP3 0000032f: PUSH1 0x60 00000331: DUP4 00000332: ADD 00000333: CALLDATALOAD 00000334: AND 00000335: SWAP2 00000336: PUSH1 0xff 00000338: PUSH1 0x80 0000033a: DUP3 0000033b: ADD 0000033c: CALLDATALOAD 0000033d: AND 0000033e: SWAP2 0000033f: DUP2 00000340: ADD 00000341: SWAP1 00000342: PUSH1 0xc0 00000344: DUP2 00000345: ADD 00000346: PUSH1 0xa0 00000348: DUP3 00000349: ADD 0000034a: CALLDATALOAD 0000034b: PUSH1 0x01 0000034d: PUSH1 0x20 0000034f: SHL 00000350: DUP2 00000351: GT 00000352: ISZERO 00000353: PUSH2 0x035b 00000356: JUMPI 00000357: PUSH1 0x00 00000359: DUP1 0000035a: REVERT 0000035b: JUMPDEST 0000035c: DUP3 0000035d: ADD 0000035e: DUP4 0000035f: PUSH1 0x20 00000361: DUP3 00000362: ADD 00000363: GT 00000364: ISZERO 00000365: PUSH2 0x036d 00000368: JUMPI 00000369: PUSH1 0x00 0000036b: DUP1 0000036c: REVERT 0000036d: JUMPDEST 0000036e: DUP1 0000036f: CALLDATALOAD 00000370: SWAP1 00000371: PUSH1 0x20 00000373: ADD 00000374: SWAP2 00000375: DUP5 00000376: PUSH1 0x01 00000378: DUP4 00000379: MUL 0000037a: DUP5 0000037b: ADD 0000037c: GT 0000037d: PUSH1 0x01 0000037f: PUSH1 0x20 00000381: SHL 00000382: DUP4 00000383: GT 00000384: OR 00000385: ISZERO 00000386: PUSH2 0x038e 00000389: JUMPI 0000038a: PUSH1 0x00 0000038c: DUP1 0000038d: REVERT 0000038e: JUMPDEST 0000038f: SWAP2 00000390: SWAP4 00000391: SWAP1 00000392: SWAP3 00000393: SWAP1 00000394: SWAP2 00000395: PUSH1 0x20 00000397: DUP2 00000398: ADD 00000399: SWAP1 0000039a: CALLDATALOAD 0000039b: PUSH1 0x01 0000039d: PUSH1 0x20 0000039f: SHL 000003a0: DUP2 000003a1: GT 000003a2: ISZERO 000003a3: PUSH2 0x03ab 000003a6: JUMPI 000003a7: PUSH1 0x00 000003a9: DUP1 000003aa: REVERT 000003ab: JUMPDEST 000003ac: DUP3 000003ad: ADD 000003ae: DUP4 000003af: PUSH1 0x20 000003b1: DUP3 000003b2: ADD 000003b3: GT 000003b4: ISZERO 000003b5: PUSH2 0x03bd 000003b8: JUMPI 000003b9: PUSH1 0x00 000003bb: DUP1 000003bc: REVERT 000003bd: JUMPDEST 000003be: DUP1 000003bf: CALLDATALOAD 000003c0: SWAP1 000003c1: PUSH1 0x20 000003c3: ADD 000003c4: SWAP2 000003c5: DUP5 000003c6: PUSH1 0x01 000003c8: DUP4 000003c9: MUL 000003ca: DUP5 000003cb: ADD 000003cc: GT 000003cd: PUSH1 0x01 000003cf: PUSH1 0x20 000003d1: SHL 000003d2: DUP4 000003d3: GT 000003d4: OR 000003d5: ISZERO 000003d6: PUSH2 0x03de 000003d9: JUMPI 000003da: PUSH1 0x00 000003dc: DUP1 000003dd: REVERT 000003de: JUMPDEST 000003df: SWAP2 000003e0: SWAP4 000003e1: SWAP1 000003e2: SWAP3 000003e3: SWAP1 000003e4: SWAP2 000003e5: PUSH1 0x20 000003e7: DUP2 000003e8: ADD 000003e9: SWAP1 000003ea: CALLDATALOAD 000003eb: PUSH1 0x01 000003ed: PUSH1 0x20 000003ef: SHL 000003f0: DUP2 000003f1: GT 000003f2: ISZERO 000003f3: PUSH2 0x03fb 000003f6: JUMPI 000003f7: PUSH1 0x00 000003f9: DUP1 000003fa: REVERT 000003fb: JUMPDEST 000003fc: DUP3 000003fd: ADD 000003fe: DUP4 000003ff: PUSH1 0x20 00000401: DUP3 00000402: ADD 00000403: GT 00000404: ISZERO 00000405: PUSH2 0x040d 00000408: JUMPI 00000409: PUSH1 0x00 0000040b: DUP1 0000040c: REVERT 0000040d: JUMPDEST 0000040e: DUP1 0000040f: CALLDATALOAD 00000410: SWAP1 00000411: PUSH1 0x20 00000413: ADD 00000414: SWAP2 00000415: DUP5 00000416: PUSH1 0x01 00000418: DUP4 00000419: MUL 0000041a: DUP5 0000041b: ADD 0000041c: GT 0000041d: PUSH1 0x01 0000041f: PUSH1 0x20 00000421: SHL 00000422: DUP4 00000423: GT 00000424: OR 00000425: ISZERO 00000426: PUSH2 0x042e 00000429: JUMPI 0000042a: PUSH1 0x00 0000042c: DUP1 0000042d: REVERT 0000042e: JUMPDEST 0000042f: POP 00000430: SWAP1 00000431: SWAP3 00000432: POP 00000433: SWAP1 00000434: POP 00000435: PUSH2 0x0aa4 00000438: JUMP 00000439: JUMPDEST 0000043a: STOP 0000043b: JUMPDEST 0000043c: PUSH2 0x02ae 0000043f: PUSH1 0x04 00000441: DUP1 00000442: CALLDATASIZE 00000443: SUB 00000444: PUSH1 0x20 00000446: DUP2 00000447: LT 00000448: ISZERO 00000449: PUSH2 0x0451 0000044c: JUMPI 0000044d: PUSH1 0x00 0000044f: DUP1 00000450: REVERT 00000451: JUMPDEST 00000452: POP 00000453: CALLDATALOAD 00000454: PUSH1 0x01 00000456: PUSH1 0x01 00000458: PUSH1 0xa0 0000045a: SHL 0000045b: SUB 0000045c: AND 0000045d: PUSH2 0x0e21 00000460: JUMP 00000461: JUMPDEST 00000462: PUSH2 0x0253 00000465: PUSH1 0x04 00000467: DUP1 00000468: CALLDATASIZE 00000469: SUB 0000046a: PUSH1 0x60 0000046c: DUP2 0000046d: LT 0000046e: ISZERO 0000046f: PUSH2 0x0477 00000472: JUMPI 00000473: PUSH1 0x00 00000475: DUP1 00000476: REVERT 00000477: JUMPDEST 00000478: POP 00000479: PUSH1 0x01 0000047b: PUSH1 0x01 0000047d: PUSH1 0xa0 0000047f: SHL 00000480: SUB 00000481: DUP2 00000482: CALLDATALOAD 00000483: DUP2 00000484: AND 00000485: SWAP2 00000486: PUSH1 0x20 00000488: DUP2 00000489: ADD 0000048a: CALLDATALOAD 0000048b: SWAP1 0000048c: SWAP2 0000048d: AND 0000048e: SWAP1 0000048f: PUSH1 0x40 00000491: ADD 00000492: CALLDATALOAD 00000493: PUSH2 0x0e2c 00000496: JUMP 00000497: JUMPDEST 00000498: PUSH2 0x02ae 0000049b: PUSH2 0x0eec 0000049e: JUMP 0000049f: JUMPDEST 000004a0: PUSH2 0x04a7 000004a3: PUSH2 0x0f10 000004a6: JUMP 000004a7: JUMPDEST 000004a8: PUSH1 0x40 000004aa: DUP1 000004ab: MLOAD 000004ac: PUSH1 0xff 000004ae: SWAP1 000004af: SWAP3 000004b0: AND 000004b1: DUP3 000004b2: MSTORE 000004b3: MLOAD 000004b4: SWAP1 000004b5: DUP2 000004b6: SWAP1 000004b7: SUB 000004b8: PUSH1 0x20 000004ba: ADD 000004bb: SWAP1 000004bc: RETURN 000004bd: JUMPDEST 000004be: PUSH2 0x02ae 000004c1: PUSH2 0x0f19 000004c4: JUMP 000004c5: JUMPDEST 000004c6: PUSH2 0x0253 000004c9: PUSH1 0x04 000004cb: DUP1 000004cc: CALLDATASIZE 000004cd: SUB 000004ce: PUSH1 0x40 000004d0: DUP2 000004d1: LT 000004d2: ISZERO 000004d3: PUSH2 0x04db 000004d6: JUMPI 000004d7: PUSH1 0x00 000004d9: DUP1 000004da: REVERT 000004db: JUMPDEST 000004dc: POP 000004dd: PUSH1 0x01 000004df: PUSH1 0x01 000004e1: PUSH1 0xa0 000004e3: SHL 000004e4: SUB 000004e5: DUP2 000004e6: CALLDATALOAD 000004e7: AND 000004e8: SWAP1 000004e9: PUSH1 0x20 000004eb: ADD 000004ec: CALLDATALOAD 000004ed: PUSH2 0x0f1f 000004f0: JUMP 000004f1: JUMPDEST 000004f2: PUSH2 0x02ae 000004f5: PUSH1 0x04 000004f7: DUP1 000004f8: CALLDATASIZE 000004f9: SUB 000004fa: PUSH1 0x40 000004fc: DUP2 000004fd: LT 000004fe: ISZERO 000004ff: PUSH2 0x0507 00000502: JUMPI 00000503: PUSH1 0x00 00000505: DUP1 00000506: REVERT 00000507: JUMPDEST 00000508: POP 00000509: PUSH1 0x01 0000050b: PUSH1 0x01 0000050d: PUSH1 0xa0 0000050f: SHL 00000510: SUB 00000511: DUP2 00000512: CALLDATALOAD 00000513: AND 00000514: SWAP1 00000515: PUSH1 0x20 00000517: ADD 00000518: CALLDATALOAD 00000519: PUSH2 0x0f6d 0000051c: JUMP 0000051d: JUMPDEST 0000051e: PUSH2 0x02ae 00000521: PUSH1 0x04 00000523: DUP1 00000524: CALLDATASIZE 00000525: SUB 00000526: PUSH1 0x20 00000528: DUP2 00000529: LT 0000052a: ISZERO 0000052b: PUSH2 0x0533 0000052e: JUMPI 0000052f: PUSH1 0x00 00000531: DUP1 00000532: REVERT 00000533: JUMPDEST 00000534: POP 00000535: CALLDATALOAD 00000536: PUSH1 0x01 00000538: PUSH1 0x01 0000053a: PUSH1 0xa0 0000053c: SHL 0000053d: SUB 0000053e: AND 0000053f: PUSH2 0x1013 00000542: JUMP 00000543: JUMPDEST 00000544: PUSH2 0x054b 00000547: PUSH2 0x10a2 0000054a: JUMP 0000054b: JUMPDEST 0000054c: PUSH1 0x40 0000054e: DUP1 0000054f: MLOAD 00000550: PUSH1 0x01 00000552: PUSH1 0x01 00000554: PUSH1 0xa0 00000556: SHL 00000557: SUB 00000558: SWAP1 00000559: SWAP3 0000055a: AND 0000055b: DUP3 0000055c: MSTORE 0000055d: MLOAD 0000055e: SWAP1 0000055f: DUP2 00000560: SWAP1 00000561: SUB 00000562: PUSH1 0x20 00000564: ADD 00000565: SWAP1 00000566: RETURN 00000567: JUMPDEST 00000568: PUSH2 0x054b 0000056b: PUSH2 0x10b1 0000056e: JUMP 0000056f: JUMPDEST 00000570: PUSH2 0x01b2 00000573: PUSH2 0x10c0 00000576: JUMP 00000577: JUMPDEST 00000578: PUSH2 0x0439 0000057b: PUSH1 0x04 0000057d: DUP1 0000057e: CALLDATASIZE 0000057f: SUB 00000580: PUSH1 0x40 00000582: DUP2 00000583: LT 00000584: ISZERO 00000585: PUSH2 0x058d 00000588: JUMPI 00000589: PUSH1 0x00 0000058b: DUP1 0000058c: REVERT 0000058d: JUMPDEST 0000058e: POP 0000058f: DUP1 00000590: CALLDATALOAD 00000591: SWAP1 00000592: PUSH1 0x20 00000594: ADD 00000595: CALLDATALOAD 00000596: PUSH2 0x10dd 00000599: JUMP 0000059a: JUMPDEST 0000059b: PUSH2 0x0439 0000059e: PUSH1 0x04 000005a0: DUP1 000005a1: CALLDATASIZE 000005a2: SUB 000005a3: PUSH1 0x40 000005a5: DUP2 000005a6: LT 000005a7: ISZERO 000005a8: PUSH2 0x05b0 000005ab: JUMPI 000005ac: PUSH1 0x00 000005ae: DUP1 000005af: REVERT 000005b0: JUMPDEST 000005b1: POP 000005b2: PUSH1 0x01 000005b4: PUSH1 0x01 000005b6: PUSH1 0xa0 000005b8: SHL 000005b9: SUB 000005ba: DUP2 000005bb: CALLDATALOAD 000005bc: AND 000005bd: SWAP1 000005be: PUSH1 0x20 000005c0: ADD 000005c1: CALLDATALOAD 000005c2: PUSH2 0x1204 000005c5: JUMP 000005c6: JUMPDEST 000005c7: PUSH2 0x01b2 000005ca: PUSH2 0x128e 000005cd: JUMP 000005ce: JUMPDEST 000005cf: PUSH2 0x0253 000005d2: PUSH1 0x04 000005d4: DUP1 000005d5: CALLDATASIZE 000005d6: SUB 000005d7: PUSH1 0x40 000005d9: DUP2 000005da: LT 000005db: ISZERO 000005dc: PUSH2 0x05e4 000005df: JUMPI 000005e0: PUSH1 0x00 000005e2: DUP1 000005e3: REVERT 000005e4: JUMPDEST 000005e5: POP 000005e6: PUSH1 0x01 000005e8: PUSH1 0x01 000005ea: PUSH1 0xa0 000005ec: SHL 000005ed: SUB 000005ee: DUP2 000005ef: CALLDATALOAD 000005f0: AND 000005f1: SWAP1 000005f2: PUSH1 0x20 000005f4: ADD 000005f5: CALLDATALOAD 000005f6: PUSH2 0x12ef 000005f9: JUMP 000005fa: JUMPDEST 000005fb: PUSH2 0x0253 000005fe: PUSH1 0x04 00000600: DUP1 00000601: CALLDATASIZE 00000602: SUB 00000603: PUSH1 0x40 00000605: DUP2 00000606: LT 00000607: ISZERO 00000608: PUSH2 0x0610 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: REVERT 00000610: JUMPDEST 00000611: POP 00000612: PUSH1 0x01 00000614: PUSH1 0x01 00000616: PUSH1 0xa0 00000618: SHL 00000619: SUB 0000061a: DUP2 0000061b: CALLDATALOAD 0000061c: AND 0000061d: SWAP1 0000061e: PUSH1 0x20 00000620: ADD 00000621: CALLDATALOAD 00000622: PUSH2 0x1357 00000625: JUMP 00000626: JUMPDEST 00000627: PUSH2 0x054b 0000062a: PUSH2 0x13b4 0000062d: JUMP 0000062e: JUMPDEST 0000062f: PUSH2 0x054b 00000632: PUSH2 0x13c3 00000635: JUMP 00000636: JUMPDEST 00000637: PUSH2 0x02ae 0000063a: PUSH2 0x13d2 0000063d: JUMP 0000063e: JUMPDEST 0000063f: PUSH2 0x02ae 00000642: PUSH1 0x04 00000644: DUP1 00000645: CALLDATASIZE 00000646: SUB 00000647: PUSH1 0x20 00000649: DUP2 0000064a: LT 0000064b: ISZERO 0000064c: PUSH2 0x0654 0000064f: JUMPI 00000650: PUSH1 0x00 00000652: DUP1 00000653: REVERT 00000654: JUMPDEST 00000655: POP 00000656: CALLDATALOAD 00000657: PUSH1 0x01 00000659: PUSH1 0x01 0000065b: PUSH1 0xa0 0000065d: SHL 0000065e: SUB 0000065f: AND 00000660: PUSH2 0x13dc 00000663: JUMP 00000664: JUMPDEST 00000665: PUSH2 0x0439 00000668: PUSH1 0x04 0000066a: DUP1 0000066b: CALLDATASIZE 0000066c: SUB 0000066d: PUSH1 0xe0 0000066f: DUP2 00000670: LT 00000671: ISZERO 00000672: PUSH2 0x067a 00000675: JUMPI 00000676: PUSH1 0x00 00000678: DUP1 00000679: REVERT 0000067a: JUMPDEST 0000067b: POP 0000067c: PUSH1 0x01 0000067e: PUSH1 0x01 00000680: PUSH1 0xa0 00000682: SHL 00000683: SUB 00000684: DUP2 00000685: CALLDATALOAD 00000686: DUP2 00000687: AND 00000688: SWAP2 00000689: PUSH1 0x20 0000068b: DUP2 0000068c: ADD 0000068d: CALLDATALOAD 0000068e: SWAP1 0000068f: SWAP2 00000690: AND 00000691: SWAP1 00000692: PUSH1 0x40 00000694: DUP2 00000695: ADD 00000696: CALLDATALOAD 00000697: SWAP1 00000698: PUSH1 0x60 0000069a: DUP2 0000069b: ADD 0000069c: CALLDATALOAD 0000069d: SWAP1 0000069e: PUSH1 0xff 000006a0: PUSH1 0x80 000006a2: DUP3 000006a3: ADD 000006a4: CALLDATALOAD 000006a5: AND 000006a6: SWAP1 000006a7: PUSH1 0xa0 000006a9: DUP2 000006aa: ADD 000006ab: CALLDATALOAD 000006ac: SWAP1 000006ad: PUSH1 0xc0 000006af: ADD 000006b0: CALLDATALOAD 000006b1: PUSH2 0x13ee 000006b4: JUMP 000006b5: JUMPDEST 000006b6: PUSH2 0x0439 000006b9: PUSH1 0x04 000006bb: DUP1 000006bc: CALLDATASIZE 000006bd: SUB 000006be: PUSH1 0x80 000006c0: DUP2 000006c1: LT 000006c2: ISZERO 000006c3: PUSH2 0x06cb 000006c6: JUMPI 000006c7: PUSH1 0x00 000006c9: DUP1 000006ca: REVERT 000006cb: JUMPDEST 000006cc: POP 000006cd: PUSH1 0x01 000006cf: PUSH1 0x01 000006d1: PUSH1 0xa0 000006d3: SHL 000006d4: SUB 000006d5: DUP2 000006d6: CALLDATALOAD 000006d7: DUP2 000006d8: AND 000006d9: SWAP2 000006da: PUSH1 0x20 000006dc: DUP2 000006dd: ADD 000006de: CALLDATALOAD 000006df: SWAP1 000006e0: SWAP2 000006e1: AND 000006e2: SWAP1 000006e3: PUSH1 0x40 000006e5: DUP2 000006e6: ADD 000006e7: CALLDATALOAD 000006e8: SWAP1 000006e9: PUSH1 0x60 000006eb: ADD 000006ec: CALLDATALOAD 000006ed: PUSH2 0x1635 000006f0: JUMP 000006f1: JUMPDEST 000006f2: PUSH2 0x02ae 000006f5: PUSH1 0x04 000006f7: DUP1 000006f8: CALLDATASIZE 000006f9: SUB 000006fa: PUSH1 0x40 000006fc: DUP2 000006fd: LT 000006fe: ISZERO 000006ff: PUSH2 0x0707 00000702: JUMPI 00000703: PUSH1 0x00 00000705: DUP1 00000706: REVERT 00000707: JUMPDEST 00000708: POP 00000709: PUSH1 0x01 0000070b: PUSH1 0x01 0000070d: PUSH1 0xa0 0000070f: SHL 00000710: SUB 00000711: DUP2 00000712: CALLDATALOAD 00000713: DUP2 00000714: AND 00000715: SWAP2 00000716: PUSH1 0x20 00000718: ADD 00000719: CALLDATALOAD 0000071a: AND 0000071b: PUSH2 0x17da 0000071e: JUMP 0000071f: JUMPDEST 00000720: PUSH2 0x0439 00000723: PUSH1 0x04 00000725: DUP1 00000726: CALLDATASIZE 00000727: SUB 00000728: PUSH1 0x60 0000072a: DUP2 0000072b: LT 0000072c: ISZERO 0000072d: PUSH2 0x0735 00000730: JUMPI 00000731: PUSH1 0x00 00000733: DUP1 00000734: REVERT 00000735: JUMPDEST 00000736: POP 00000737: PUSH1 0x01 00000739: PUSH1 0x01 0000073b: PUSH1 0xa0 0000073d: SHL 0000073e: SUB 0000073f: DUP2 00000740: CALLDATALOAD 00000741: DUP2 00000742: AND 00000743: SWAP2 00000744: PUSH1 0x20 00000746: DUP2 00000747: ADD 00000748: CALLDATALOAD 00000749: SWAP1 0000074a: SWAP2 0000074b: AND 0000074c: SWAP1 0000074d: PUSH1 0x40 0000074f: ADD 00000750: CALLDATALOAD 00000751: PUSH2 0x1805 00000754: JUMP 00000755: JUMPDEST 00000756: PUSH1 0x37 00000758: DUP1 00000759: SLOAD 0000075a: PUSH1 0x40 0000075c: DUP1 0000075d: MLOAD 0000075e: PUSH1 0x20 00000760: PUSH1 0x1f 00000762: PUSH1 0x02 00000764: PUSH1 0x00 00000766: NOT 00000767: PUSH2 0x0100 0000076a: PUSH1 0x01 0000076c: DUP9 0000076d: AND 0000076e: ISZERO 0000076f: MUL 00000770: ADD 00000771: SWAP1 00000772: SWAP6 00000773: AND 00000774: SWAP5 00000775: SWAP1 00000776: SWAP5 00000777: DIV 00000778: SWAP4 00000779: DUP5 0000077a: ADD 0000077b: DUP2 0000077c: SWAP1 0000077d: DIV 0000077e: DUP2 0000077f: MUL 00000780: DUP3 00000781: ADD 00000782: DUP2 00000783: ADD 00000784: SWAP1 00000785: SWAP3 00000786: MSTORE 00000787: DUP3 00000788: DUP2 00000789: MSTORE 0000078a: PUSH1 0x60 0000078c: SWAP4 0000078d: SWAP1 0000078e: SWAP3 0000078f: SWAP1 00000790: SWAP2 00000791: DUP4 00000792: ADD 00000793: DUP3 00000794: DUP3 00000795: DUP1 00000796: ISZERO 00000797: PUSH2 0x07e1 0000079a: JUMPI 0000079b: DUP1 0000079c: PUSH1 0x1f 0000079e: LT 0000079f: PUSH2 0x07b6 000007a2: JUMPI 000007a3: PUSH2 0x0100 000007a6: DUP1 000007a7: DUP4 000007a8: SLOAD 000007a9: DIV 000007aa: MUL 000007ab: DUP4 000007ac: MSTORE 000007ad: SWAP2 000007ae: PUSH1 0x20 000007b0: ADD 000007b1: SWAP2 000007b2: PUSH2 0x07e1 000007b5: JUMP 000007b6: JUMPDEST 000007b7: DUP3 000007b8: ADD 000007b9: SWAP2 000007ba: SWAP1 000007bb: PUSH1 0x00 000007bd: MSTORE 000007be: PUSH1 0x20 000007c0: PUSH1 0x00 000007c2: KECCAK256 000007c3: SWAP1 000007c4: JUMPDEST 000007c5: DUP2 000007c6: SLOAD 000007c7: DUP2 000007c8: MSTORE 000007c9: SWAP1 000007ca: PUSH1 0x01 000007cc: ADD 000007cd: SWAP1 000007ce: PUSH1 0x20 000007d0: ADD 000007d1: DUP1 000007d2: DUP4 000007d3: GT 000007d4: PUSH2 0x07c4 000007d7: JUMPI 000007d8: DUP3 000007d9: SWAP1 000007da: SUB 000007db: PUSH1 0x1f 000007dd: AND 000007de: DUP3 000007df: ADD 000007e0: SWAP2 000007e1: JUMPDEST 000007e2: POP 000007e3: POP 000007e4: POP 000007e5: POP 000007e6: POP 000007e7: SWAP1 000007e8: POP 000007e9: JUMPDEST 000007ea: SWAP1 000007eb: JUMP 000007ec: JUMPDEST 000007ed: PUSH1 0x00 000007ef: PUSH2 0x0800 000007f2: PUSH2 0x07f9 000007f5: PUSH2 0x18d6 000007f8: JUMP 000007f9: JUMPDEST 000007fa: DUP5 000007fb: DUP5 000007fc: PUSH2 0x18da 000007ff: JUMP 00000800: JUMPDEST 00000801: POP 00000802: PUSH1 0x01 00000804: JUMPDEST 00000805: SWAP3 00000806: SWAP2 00000807: POP 00000808: POP 00000809: JUMP 0000080a: JUMPDEST 0000080b: PUSH1 0x00 0000080d: DUP1 0000080e: PUSH2 0x0816 00000811: DUP4 00000812: PUSH2 0x19c6 00000815: JUMP 00000816: JUMPDEST 00000817: PUSH2 0x081e 0000081a: PUSH2 0x19e1 0000081d: JUMP 0000081e: JUMPDEST 0000081f: SWAP2 00000820: POP 00000821: SWAP2 00000822: POP 00000823: SWAP2 00000824: POP 00000825: SWAP2 00000826: JUMP 00000827: JUMPDEST 00000828: PUSH1 0x01 0000082a: DUP2 0000082b: JUMP 0000082c: JUMPDEST 0000082d: PUSH1 0x3c 0000082f: SLOAD 00000830: PUSH1 0x00 00000832: SWAP1 00000833: PUSH1 0x01 00000835: PUSH1 0x01 00000837: PUSH1 0xa0 00000839: SHL 0000083a: SUB 0000083b: AND 0000083c: PUSH2 0x0843 0000083f: PUSH2 0x18d6 00000842: JUMP 00000843: JUMPDEST 00000844: PUSH1 0x01 00000846: PUSH1 0x01 00000848: PUSH1 0xa0 0000084a: SHL 0000084b: SUB 0000084c: AND 0000084d: EQ 0000084e: PUSH1 0x40 00000850: MLOAD 00000851: DUP1 00000852: PUSH1 0x40 00000854: ADD 00000855: PUSH1 0x40 00000857: MSTORE 00000858: DUP1 00000859: PUSH1 0x02 0000085b: DUP2 0000085c: MSTORE 0000085d: PUSH1 0x20 0000085f: ADD 00000860: PUSH2 0x3239 00000863: PUSH1 0xf0 00000865: SHL 00000866: DUP2 00000867: MSTORE 00000868: POP 00000869: SWAP1 0000086a: PUSH2 0x08f1 0000086d: JUMPI 0000086e: PUSH1 0x40 00000870: MLOAD 00000871: PUSH3 0x461bcd 00000875: PUSH1 0xe5 00000877: SHL 00000878: DUP2 00000879: MSTORE 0000087a: PUSH1 0x04 0000087c: ADD 0000087d: DUP1 0000087e: DUP1 0000087f: PUSH1 0x20 00000881: ADD 00000882: DUP3 00000883: DUP2 00000884: SUB 00000885: DUP3 00000886: MSTORE 00000887: DUP4 00000888: DUP2 00000889: DUP2 0000088a: MLOAD 0000088b: DUP2 0000088c: MSTORE 0000088d: PUSH1 0x20 0000088f: ADD 00000890: SWAP2 00000891: POP 00000892: DUP1 00000893: MLOAD 00000894: SWAP1 00000895: PUSH1 0x20 00000897: ADD 00000898: SWAP1 00000899: DUP1 0000089a: DUP4 0000089b: DUP4 0000089c: PUSH1 0x00 0000089e: JUMPDEST 0000089f: DUP4 000008a0: DUP2 000008a1: LT 000008a2: ISZERO 000008a3: PUSH2 0x08b6 000008a6: JUMPI 000008a7: DUP2 000008a8: DUP2 000008a9: ADD 000008aa: MLOAD 000008ab: DUP4 000008ac: DUP3 000008ad: ADD 000008ae: MSTORE 000008af: PUSH1 0x20 000008b1: ADD 000008b2: PUSH2 0x089e 000008b5: JUMP 000008b6: JUMPDEST 000008b7: POP 000008b8: POP 000008b9: POP 000008ba: POP 000008bb: SWAP1 000008bc: POP 000008bd: SWAP1 000008be: DUP2 000008bf: ADD 000008c0: SWAP1 000008c1: PUSH1 0x1f 000008c3: AND 000008c4: DUP1 000008c5: ISZERO 000008c6: PUSH2 0x08e3 000008c9: JUMPI 000008ca: DUP1 000008cb: DUP3 000008cc: SUB 000008cd: DUP1 000008ce: MLOAD 000008cf: PUSH1 0x01 000008d1: DUP4 000008d2: PUSH1 0x20 000008d4: SUB 000008d5: PUSH2 0x0100 000008d8: EXP 000008d9: SUB 000008da: NOT 000008db: AND 000008dc: DUP2 000008dd: MSTORE 000008de: PUSH1 0x20 000008e0: ADD 000008e1: SWAP2 000008e2: POP 000008e3: JUMPDEST 000008e4: POP 000008e5: SWAP3 000008e6: POP 000008e7: POP 000008e8: POP 000008e9: PUSH1 0x40 000008eb: MLOAD 000008ec: DUP1 000008ed: SWAP2 000008ee: SUB 000008ef: SWAP1 000008f0: REVERT 000008f1: JUMPDEST 000008f2: POP 000008f3: PUSH1 0x00 000008f5: PUSH2 0x08fd 000008f8: DUP6 000008f9: PUSH2 0x19c6 000008fc: JUMP 000008fd: JUMPDEST 000008fe: SWAP1 000008ff: POP 00000900: PUSH1 0x00 00000902: PUSH2 0x090b 00000905: DUP6 00000906: DUP6 00000907: PUSH2 0x19e7 0000090a: JUMP 0000090b: JUMPDEST 0000090c: PUSH1 0x40 0000090e: DUP1 0000090f: MLOAD 00000910: DUP1 00000911: DUP3 00000912: ADD 00000913: SWAP1 00000914: SWAP2 00000915: MSTORE 00000916: PUSH1 0x02 00000918: DUP2 00000919: MSTORE 0000091a: PUSH2 0x1a9b 0000091d: PUSH1 0xf1 0000091f: SHL 00000920: PUSH1 0x20 00000922: DUP3 00000923: ADD 00000924: MSTORE 00000925: SWAP1 00000926: SWAP2 00000927: POP 00000928: DUP2 00000929: PUSH2 0x0973 0000092c: JUMPI 0000092d: PUSH1 0x40 0000092f: MLOAD 00000930: PUSH3 0x461bcd 00000934: PUSH1 0xe5 00000936: SHL 00000937: DUP2 00000938: MSTORE 00000939: PUSH1 0x20 0000093b: PUSH1 0x04 0000093d: DUP3 0000093e: ADD 0000093f: DUP2 00000940: DUP2 00000941: MSTORE 00000942: DUP4 00000943: MLOAD 00000944: PUSH1 0x24 00000946: DUP5 00000947: ADD 00000948: MSTORE 00000949: DUP4 0000094a: MLOAD 0000094b: SWAP1 0000094c: SWAP3 0000094d: DUP4 0000094e: SWAP3 0000094f: PUSH1 0x44 00000951: SWAP1 00000952: SWAP2 00000953: ADD 00000954: SWAP2 00000955: SWAP1 00000956: DUP6 00000957: ADD 00000958: SWAP1 00000959: DUP1 0000095a: DUP4 0000095b: DUP4 0000095c: PUSH1 0x00 0000095e: DUP4 0000095f: ISZERO 00000960: PUSH2 0x08b6 00000963: JUMPI 00000964: DUP2 00000965: DUP2 00000966: ADD 00000967: MLOAD 00000968: DUP4 00000969: DUP3 0000096a: ADD 0000096b: MSTORE 0000096c: PUSH1 0x20 0000096e: ADD 0000096f: PUSH2 0x089e 00000972: JUMP 00000973: JUMPDEST 00000974: POP 00000975: PUSH2 0x097e 00000978: DUP7 00000979: DUP3 0000097a: PUSH2 0x1aee 0000097d: JUMP 0000097e: JUMPDEST 0000097f: PUSH1 0x40 00000981: DUP1 00000982: MLOAD 00000983: DUP7 00000984: DUP2 00000985: MSTORE 00000986: SWAP1 00000987: MLOAD 00000988: PUSH1 0x01 0000098a: PUSH1 0x01 0000098c: PUSH1 0xa0 0000098e: SHL 0000098f: SUB 00000990: DUP9 00000991: AND 00000992: SWAP2 00000993: PUSH1 0x00 00000995: SWAP2 00000996: PUSH1 0x00 00000998: DUP1 00000999: MLOAD 0000099a: PUSH1 0x20 0000099c: PUSH2 0x26ce 0000099f: DUP4 000009a0: CODECOPY 000009a1: DUP2 000009a2: MLOAD 000009a3: SWAP2 000009a4: MSTORE 000009a5: SWAP2 000009a6: DUP2 000009a7: SWAP1 000009a8: SUB 000009a9: PUSH1 0x20 000009ab: ADD 000009ac: SWAP1 000009ad: LOG3 000009ae: PUSH1 0x40 000009b0: DUP1 000009b1: MLOAD 000009b2: DUP7 000009b3: DUP2 000009b4: MSTORE 000009b5: PUSH1 0x20 000009b7: DUP2 000009b8: ADD 000009b9: DUP7 000009ba: SWAP1 000009bb: MSTORE 000009bc: DUP2 000009bd: MLOAD 000009be: PUSH1 0x01 000009c0: PUSH1 0x01 000009c2: PUSH1 0xa0 000009c4: SHL 000009c5: SUB 000009c6: DUP10 000009c7: AND 000009c8: SWAP3 000009c9: PUSH32 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f 000009ea: SWAP3 000009eb: DUP3 000009ec: SWAP1 000009ed: SUB 000009ee: ADD 000009ef: SWAP1 000009f0: LOG2 000009f1: POP 000009f2: ISZERO 000009f3: SWAP5 000009f4: SWAP4 000009f5: POP 000009f6: POP 000009f7: POP 000009f8: POP 000009f9: JUMP 000009fa: JUMPDEST 000009fb: PUSH1 0x00 000009fd: DUP1 000009fe: PUSH2 0x0a05 00000a01: PUSH2 0x19e1 00000a04: JUMP 00000a05: JUMPDEST 00000a06: SWAP1 00000a07: POP 00000a08: DUP1 00000a09: PUSH2 0x0a16 00000a0c: JUMPI 00000a0d: PUSH1 0x00 00000a0f: SWAP2 00000a10: POP 00000a11: POP 00000a12: PUSH2 0x07e9 00000a15: JUMP 00000a16: JUMPDEST 00000a17: PUSH1 0x3c 00000a19: SLOAD 00000a1a: PUSH1 0x3e 00000a1c: SLOAD 00000a1d: PUSH1 0x40 00000a1f: DUP1 00000a20: MLOAD 00000a21: PUSH4 0xd15e0053 00000a26: PUSH1 0xe0 00000a28: SHL 00000a29: DUP2 00000a2a: MSTORE 00000a2b: PUSH1 0x01 00000a2d: PUSH1 0x01 00000a2f: PUSH1 0xa0 00000a31: SHL 00000a32: SUB 00000a33: SWAP3 00000a34: DUP4 00000a35: AND 00000a36: PUSH1 0x04 00000a38: DUP3 00000a39: ADD 00000a3a: MSTORE 00000a3b: SWAP1 00000a3c: MLOAD 00000a3d: PUSH2 0x0a9e 00000a40: SWAP4 00000a41: SWAP3 00000a42: SWAP1 00000a43: SWAP3 00000a44: AND 00000a45: SWAP2 00000a46: PUSH4 0xd15e0053 00000a4b: SWAP2 00000a4c: PUSH1 0x24 00000a4e: DUP1 00000a4f: DUP3 00000a50: ADD 00000a51: SWAP3 00000a52: PUSH1 0x20 00000a54: SWAP3 00000a55: SWAP1 00000a56: SWAP2 00000a57: SWAP1 00000a58: DUP3 00000a59: SWAP1 00000a5a: SUB 00000a5b: ADD 00000a5c: DUP2 00000a5d: DUP7 00000a5e: DUP1 00000a5f: EXTCODESIZE 00000a60: ISZERO 00000a61: DUP1 00000a62: ISZERO 00000a63: PUSH2 0x0a6b 00000a66: JUMPI 00000a67: PUSH1 0x00 00000a69: DUP1 00000a6a: REVERT 00000a6b: JUMPDEST 00000a6c: POP 00000a6d: GAS 00000a6e: STATICCALL 00000a6f: ISZERO 00000a70: DUP1 00000a71: ISZERO 00000a72: PUSH2 0x0a7f 00000a75: JUMPI 00000a76: RETURNDATASIZE 00000a77: PUSH1 0x00 00000a79: DUP1 00000a7a: RETURNDATACOPY 00000a7b: RETURNDATASIZE 00000a7c: PUSH1 0x00 00000a7e: REVERT 00000a7f: JUMPDEST 00000a80: POP 00000a81: POP 00000a82: POP 00000a83: POP 00000a84: PUSH1 0x40 00000a86: MLOAD 00000a87: RETURNDATASIZE 00000a88: PUSH1 0x20 00000a8a: DUP2 00000a8b: LT 00000a8c: ISZERO 00000a8d: PUSH2 0x0a95 00000a90: JUMPI 00000a91: PUSH1 0x00 00000a93: DUP1 00000a94: REVERT 00000a95: JUMPDEST 00000a96: POP 00000a97: MLOAD 00000a98: DUP3 00000a99: SWAP1 00000a9a: PUSH2 0x1c3f 00000a9d: JUMP 00000a9e: JUMPDEST 00000a9f: SWAP2 00000aa0: POP 00000aa1: POP 00000aa2: SWAP1 00000aa3: JUMP 00000aa4: JUMPDEST 00000aa5: PUSH1 0x00 00000aa7: PUSH2 0x0aae 00000aaa: PUSH2 0x1cfd 00000aad: JUMP 00000aae: JUMPDEST 00000aaf: PUSH1 0x01 00000ab1: SLOAD 00000ab2: SWAP1 00000ab3: SWAP2 00000ab4: POP 00000ab5: PUSH1 0xff 00000ab7: AND 00000ab8: DUP1 00000ab9: PUSH2 0x0ac5 00000abc: JUMPI 00000abd: POP 00000abe: PUSH2 0x0ac5 00000ac1: PUSH2 0x1d02 00000ac4: JUMP 00000ac5: JUMPDEST 00000ac6: DUP1 00000ac7: PUSH2 0x0ad1 00000aca: JUMPI 00000acb: POP 00000acc: PUSH1 0x00 00000ace: SLOAD 00000acf: DUP2 00000ad0: GT 00000ad1: JUMPDEST 00000ad2: PUSH2 0x0b0c 00000ad5: JUMPI 00000ad6: PUSH1 0x40 00000ad8: MLOAD 00000ad9: PUSH3 0x461bcd 00000add: PUSH1 0xe5 00000adf: SHL 00000ae0: DUP2 00000ae1: MSTORE 00000ae2: PUSH1 0x04 00000ae4: ADD 00000ae5: DUP1 00000ae6: DUP1 00000ae7: PUSH1 0x20 00000ae9: ADD 00000aea: DUP3 00000aeb: DUP2 00000aec: SUB 00000aed: DUP3 00000aee: MSTORE 00000aef: PUSH1 0x2e 00000af1: DUP2 00000af2: MSTORE 00000af3: PUSH1 0x20 00000af5: ADD 00000af6: DUP1 00000af7: PUSH2 0x26a0 00000afa: PUSH1 0x2e 00000afc: SWAP2 00000afd: CODECOPY 00000afe: PUSH1 0x40 00000b00: ADD 00000b01: SWAP2 00000b02: POP 00000b03: POP 00000b04: PUSH1 0x40 00000b06: MLOAD 00000b07: DUP1 00000b08: SWAP2 00000b09: SUB 00000b0a: SWAP1 00000b0b: REVERT 00000b0c: JUMPDEST 00000b0d: PUSH1 0x01 00000b0f: SLOAD 00000b10: PUSH1 0xff 00000b12: AND 00000b13: ISZERO 00000b14: DUP1 00000b15: ISZERO 00000b16: PUSH2 0x0b2b 00000b19: JUMPI 00000b1a: PUSH1 0x01 00000b1c: DUP1 00000b1d: SLOAD 00000b1e: PUSH1 0xff 00000b20: NOT 00000b21: AND 00000b22: DUP2 00000b23: OR 00000b24: SWAP1 00000b25: SSTORE 00000b26: PUSH1 0x00 00000b28: DUP3 00000b29: SWAP1 00000b2a: SSTORE 00000b2b: JUMPDEST 00000b2c: PUSH1 0x00 00000b2e: CHAINID 00000b2f: SWAP1 00000b30: POP 00000b31: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 00000b52: DUP10 00000b53: DUP10 00000b54: PUSH1 0x40 00000b56: MLOAD 00000b57: DUP1 00000b58: DUP4 00000b59: DUP4 00000b5a: DUP1 00000b5b: DUP3 00000b5c: DUP5 00000b5d: CALLDATACOPY 00000b5e: DUP1 00000b5f: DUP4 00000b60: ADD 00000b61: SWAP3 00000b62: POP 00000b63: POP 00000b64: POP 00000b65: SWAP3 00000b66: POP 00000b67: POP 00000b68: POP 00000b69: PUSH1 0x40 00000b6b: MLOAD 00000b6c: DUP1 00000b6d: SWAP2 00000b6e: SUB 00000b6f: SWAP1 00000b70: KECCAK256 00000b71: PUSH1 0x40 00000b73: MLOAD 00000b74: DUP1 00000b75: PUSH1 0x40 00000b77: ADD 00000b78: PUSH1 0x40 00000b7a: MSTORE 00000b7b: DUP1 00000b7c: PUSH1 0x01 00000b7e: DUP2 00000b7f: MSTORE 00000b80: PUSH1 0x20 00000b82: ADD 00000b83: PUSH1 0x31 00000b85: PUSH1 0xf8 00000b87: SHL 00000b88: DUP2 00000b89: MSTORE 00000b8a: POP 00000b8b: DUP1 00000b8c: MLOAD 00000b8d: SWAP1 00000b8e: PUSH1 0x20 00000b90: ADD 00000b91: KECCAK256 00000b92: DUP4 00000b93: ADDRESS 00000b94: PUSH1 0x40 00000b96: MLOAD 00000b97: PUSH1 0x20 00000b99: ADD 00000b9a: DUP1 00000b9b: DUP7 00000b9c: DUP2 00000b9d: MSTORE 00000b9e: PUSH1 0x20 00000ba0: ADD 00000ba1: DUP6 00000ba2: DUP2 00000ba3: MSTORE 00000ba4: PUSH1 0x20 00000ba6: ADD 00000ba7: DUP5 00000ba8: DUP2 00000ba9: MSTORE 00000baa: PUSH1 0x20 00000bac: ADD 00000bad: DUP4 00000bae: DUP2 00000baf: MSTORE 00000bb0: PUSH1 0x20 00000bb2: ADD 00000bb3: DUP3 00000bb4: PUSH1 0x01 00000bb6: PUSH1 0x01 00000bb8: PUSH1 0xa0 00000bba: SHL 00000bbb: SUB 00000bbc: AND 00000bbd: DUP2 00000bbe: MSTORE 00000bbf: PUSH1 0x20 00000bc1: ADD 00000bc2: SWAP6 00000bc3: POP 00000bc4: POP 00000bc5: POP 00000bc6: POP 00000bc7: POP 00000bc8: POP 00000bc9: PUSH1 0x40 00000bcb: MLOAD 00000bcc: PUSH1 0x20 00000bce: DUP2 00000bcf: DUP4 00000bd0: SUB 00000bd1: SUB 00000bd2: DUP2 00000bd3: MSTORE 00000bd4: SWAP1 00000bd5: PUSH1 0x40 00000bd7: MSTORE 00000bd8: DUP1 00000bd9: MLOAD 00000bda: SWAP1 00000bdb: PUSH1 0x20 00000bdd: ADD 00000bde: KECCAK256 00000bdf: PUSH1 0x3b 00000be1: DUP2 00000be2: SWAP1 00000be3: SSTORE 00000be4: POP 00000be5: PUSH2 0x0c23 00000be8: DUP10 00000be9: DUP10 00000bea: DUP1 00000beb: DUP1 00000bec: PUSH1 0x1f 00000bee: ADD 00000bef: PUSH1 0x20 00000bf1: DUP1 00000bf2: SWAP2 00000bf3: DIV 00000bf4: MUL 00000bf5: PUSH1 0x20 00000bf7: ADD 00000bf8: PUSH1 0x40 00000bfa: MLOAD 00000bfb: SWAP1 00000bfc: DUP2 00000bfd: ADD 00000bfe: PUSH1 0x40 00000c00: MSTORE 00000c01: DUP1 00000c02: SWAP4 00000c03: SWAP3 00000c04: SWAP2 00000c05: SWAP1 00000c06: DUP2 00000c07: DUP2 00000c08: MSTORE 00000c09: PUSH1 0x20 00000c0b: ADD 00000c0c: DUP4 00000c0d: DUP4 00000c0e: DUP1 00000c0f: DUP3 00000c10: DUP5 00000c11: CALLDATACOPY 00000c12: PUSH1 0x00 00000c14: SWAP3 00000c15: ADD 00000c16: SWAP2 00000c17: SWAP1 00000c18: SWAP2 00000c19: MSTORE 00000c1a: POP 00000c1b: PUSH2 0x1d08 00000c1e: SWAP3 00000c1f: POP 00000c20: POP 00000c21: POP 00000c22: JUMP 00000c23: JUMPDEST 00000c24: PUSH2 0x0c62 00000c27: DUP8 00000c28: DUP8 00000c29: DUP1 00000c2a: DUP1 00000c2b: PUSH1 0x1f 00000c2d: ADD 00000c2e: PUSH1 0x20 00000c30: DUP1 00000c31: SWAP2 00000c32: DIV 00000c33: MUL 00000c34: PUSH1 0x20 00000c36: ADD 00000c37: PUSH1 0x40 00000c39: MLOAD 00000c3a: SWAP1 00000c3b: DUP2 00000c3c: ADD 00000c3d: PUSH1 0x40 00000c3f: MSTORE 00000c40: DUP1 00000c41: SWAP4 00000c42: SWAP3 00000c43: SWAP2 00000c44: SWAP1 00000c45: DUP2 00000c46: DUP2 00000c47: MSTORE 00000c48: PUSH1 0x20 00000c4a: ADD 00000c4b: DUP4 00000c4c: DUP4 00000c4d: DUP1 00000c4e: DUP3 00000c4f: DUP5 00000c50: CALLDATACOPY 00000c51: PUSH1 0x00 00000c53: SWAP3 00000c54: ADD 00000c55: SWAP2 00000c56: SWAP1 00000c57: SWAP2 00000c58: MSTORE 00000c59: POP 00000c5a: PUSH2 0x1d1b 00000c5d: SWAP3 00000c5e: POP 00000c5f: POP 00000c60: POP 00000c61: JUMP 00000c62: JUMPDEST 00000c63: PUSH2 0x0c6b 00000c66: DUP11 00000c67: PUSH2 0x1d2e 00000c6a: JUMP 00000c6b: JUMPDEST 00000c6c: DUP14 00000c6d: PUSH1 0x3c 00000c6f: PUSH1 0x00 00000c71: PUSH2 0x0100 00000c74: EXP 00000c75: DUP2 00000c76: SLOAD 00000c77: DUP2 00000c78: PUSH1 0x01 00000c7a: PUSH1 0x01 00000c7c: PUSH1 0xa0 00000c7e: SHL 00000c7f: SUB 00000c80: MUL 00000c81: NOT 00000c82: AND 00000c83: SWAP1 00000c84: DUP4 00000c85: PUSH1 0x01 00000c87: PUSH1 0x01 00000c89: PUSH1 0xa0 00000c8b: SHL 00000c8c: SUB 00000c8d: AND 00000c8e: MUL 00000c8f: OR 00000c90: SWAP1 00000c91: SSTORE 00000c92: POP 00000c93: DUP13 00000c94: PUSH1 0x3d 00000c96: PUSH1 0x00 00000c98: PUSH2 0x0100 00000c9b: EXP 00000c9c: DUP2 00000c9d: SLOAD 00000c9e: DUP2 00000c9f: PUSH1 0x01 00000ca1: PUSH1 0x01 00000ca3: PUSH1 0xa0 00000ca5: SHL 00000ca6: SUB 00000ca7: MUL 00000ca8: NOT 00000ca9: AND 00000caa: SWAP1 00000cab: DUP4 00000cac: PUSH1 0x01 00000cae: PUSH1 0x01 00000cb0: PUSH1 0xa0 00000cb2: SHL 00000cb3: SUB 00000cb4: AND 00000cb5: MUL 00000cb6: OR 00000cb7: SWAP1 00000cb8: SSTORE 00000cb9: POP 00000cba: DUP12 00000cbb: PUSH1 0x3e 00000cbd: PUSH1 0x00 00000cbf: PUSH2 0x0100 00000cc2: EXP 00000cc3: DUP2 00000cc4: SLOAD 00000cc5: DUP2 00000cc6: PUSH1 0x01 00000cc8: PUSH1 0x01 00000cca: PUSH1 0xa0 00000ccc: SHL 00000ccd: SUB 00000cce: MUL 00000ccf: NOT 00000cd0: AND 00000cd1: SWAP1 00000cd2: DUP4 00000cd3: PUSH1 0x01 00000cd5: PUSH1 0x01 00000cd7: PUSH1 0xa0 00000cd9: SHL 00000cda: SUB 00000cdb: AND 00000cdc: MUL 00000cdd: OR 00000cde: SWAP1 00000cdf: SSTORE 00000ce0: POP 00000ce1: DUP11 00000ce2: PUSH1 0x3f 00000ce4: PUSH1 0x00 00000ce6: PUSH2 0x0100 00000ce9: EXP 00000cea: DUP2 00000ceb: SLOAD 00000cec: DUP2 00000ced: PUSH1 0x01 00000cef: PUSH1 0x01 00000cf1: PUSH1 0xa0 00000cf3: SHL 00000cf4: SUB 00000cf5: MUL 00000cf6: NOT 00000cf7: AND 00000cf8: SWAP1 00000cf9: DUP4 00000cfa: PUSH1 0x01 00000cfc: PUSH1 0x01 00000cfe: PUSH1 0xa0 00000d00: SHL 00000d01: SUB 00000d02: AND 00000d03: MUL 00000d04: OR 00000d05: SWAP1 00000d06: SSTORE 00000d07: POP 00000d08: DUP14 00000d09: PUSH1 0x01 00000d0b: PUSH1 0x01 00000d0d: PUSH1 0xa0 00000d0f: SHL 00000d10: SUB 00000d11: AND 00000d12: DUP13 00000d13: PUSH1 0x01 00000d15: PUSH1 0x01 00000d17: PUSH1 0xa0 00000d19: SHL 00000d1a: SUB 00000d1b: AND 00000d1c: PUSH32 0xb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b 00000d3d: DUP16 00000d3e: DUP15 00000d3f: DUP15 00000d40: DUP15 00000d41: DUP15 00000d42: DUP15 00000d43: DUP15 00000d44: DUP15 00000d45: DUP15 00000d46: PUSH1 0x40 00000d48: MLOAD 00000d49: DUP1 00000d4a: DUP11 00000d4b: PUSH1 0x01 00000d4d: PUSH1 0x01 00000d4f: PUSH1 0xa0 00000d51: SHL 00000d52: SUB 00000d53: AND 00000d54: DUP2 00000d55: MSTORE 00000d56: PUSH1 0x20 00000d58: ADD 00000d59: DUP10 00000d5a: PUSH1 0x01 00000d5c: PUSH1 0x01 00000d5e: PUSH1 0xa0 00000d60: SHL 00000d61: SUB 00000d62: AND 00000d63: DUP2 00000d64: MSTORE 00000d65: PUSH1 0x20 00000d67: ADD 00000d68: DUP9 00000d69: PUSH1 0xff 00000d6b: AND 00000d6c: DUP2 00000d6d: MSTORE 00000d6e: PUSH1 0x20 00000d70: ADD 00000d71: DUP1 00000d72: PUSH1 0x20 00000d74: ADD 00000d75: DUP1 00000d76: PUSH1 0x20 00000d78: ADD 00000d79: DUP1 00000d7a: PUSH1 0x20 00000d7c: ADD 00000d7d: DUP5 00000d7e: DUP2 00000d7f: SUB 00000d80: DUP5 00000d81: MSTORE 00000d82: DUP11 00000d83: DUP11 00000d84: DUP3 00000d85: DUP2 00000d86: DUP2 00000d87: MSTORE 00000d88: PUSH1 0x20 00000d8a: ADD 00000d8b: SWAP3 00000d8c: POP 00000d8d: DUP1 00000d8e: DUP3 00000d8f: DUP5 00000d90: CALLDATACOPY 00000d91: PUSH1 0x00 00000d93: DUP4 00000d94: DUP3 00000d95: ADD 00000d96: MSTORE 00000d97: PUSH1 0x1f 00000d99: ADD 00000d9a: PUSH1 0x1f 00000d9c: NOT 00000d9d: AND 00000d9e: SWAP1 00000d9f: SWAP2 00000da0: ADD 00000da1: DUP6 00000da2: DUP2 00000da3: SUB 00000da4: DUP5 00000da5: MSTORE 00000da6: DUP9 00000da7: DUP2 00000da8: MSTORE 00000da9: PUSH1 0x20 00000dab: ADD 00000dac: SWAP1 00000dad: POP 00000dae: DUP9 00000daf: DUP9 00000db0: DUP1 00000db1: DUP3 00000db2: DUP5 00000db3: CALLDATACOPY 00000db4: PUSH1 0x00 00000db6: DUP4 00000db7: DUP3 00000db8: ADD 00000db9: MSTORE 00000dba: PUSH1 0x1f 00000dbc: ADD 00000dbd: PUSH1 0x1f 00000dbf: NOT 00000dc0: AND 00000dc1: SWAP1 00000dc2: SWAP2 00000dc3: ADD 00000dc4: DUP6 00000dc5: DUP2 00000dc6: SUB 00000dc7: DUP4 00000dc8: MSTORE 00000dc9: DUP7 00000dca: DUP2 00000dcb: MSTORE 00000dcc: PUSH1 0x20 00000dce: ADD 00000dcf: SWAP1 00000dd0: POP 00000dd1: DUP7 00000dd2: DUP7 00000dd3: DUP1 00000dd4: DUP3 00000dd5: DUP5 00000dd6: CALLDATACOPY 00000dd7: PUSH1 0x00 00000dd9: DUP4 00000dda: DUP3 00000ddb: ADD 00000ddc: MSTORE 00000ddd: PUSH1 0x40 00000ddf: MLOAD 00000de0: PUSH1 0x1f 00000de2: SWAP1 00000de3: SWAP2 00000de4: ADD 00000de5: PUSH1 0x1f 00000de7: NOT 00000de8: AND 00000de9: SWAP1 00000dea: SWAP3 00000deb: ADD 00000dec: DUP3 00000ded: SWAP1 00000dee: SUB 00000def: SWAP15 00000df0: POP 00000df1: SWAP1 00000df2: SWAP13 00000df3: POP 00000df4: POP 00000df5: POP 00000df6: POP 00000df7: POP 00000df8: POP 00000df9: POP 00000dfa: POP 00000dfb: POP 00000dfc: POP 00000dfd: POP 00000dfe: POP 00000dff: POP 00000e00: LOG3 00000e01: POP 00000e02: DUP1 00000e03: ISZERO 00000e04: PUSH2 0x0e12 00000e07: JUMPI 00000e08: PUSH1 0x01 00000e0a: DUP1 00000e0b: SLOAD 00000e0c: PUSH1 0xff 00000e0e: NOT 00000e0f: AND 00000e10: SWAP1 00000e11: SSTORE 00000e12: JUMPDEST 00000e13: POP 00000e14: POP 00000e15: POP 00000e16: POP 00000e17: POP 00000e18: POP 00000e19: POP 00000e1a: POP 00000e1b: POP 00000e1c: POP 00000e1d: POP 00000e1e: POP 00000e1f: POP 00000e20: JUMP 00000e21: JUMPDEST 00000e22: PUSH1 0x00 00000e24: PUSH2 0x0804 00000e27: DUP3 00000e28: PUSH2 0x19c6 00000e2b: JUMP 00000e2c: JUMPDEST 00000e2d: PUSH1 0x00 00000e2f: PUSH2 0x0e39 00000e32: DUP5 00000e33: DUP5 00000e34: DUP5 00000e35: PUSH2 0x1d44 00000e38: JUMP 00000e39: JUMPDEST 00000e3a: PUSH2 0x0ea9 00000e3d: DUP5 00000e3e: PUSH2 0x0e45 00000e41: PUSH2 0x18d6 00000e44: JUMP 00000e45: JUMPDEST 00000e46: PUSH2 0x0ea4 00000e49: DUP6 00000e4a: PUSH1 0x40 00000e4c: MLOAD 00000e4d: DUP1 00000e4e: PUSH1 0x60 00000e50: ADD 00000e51: PUSH1 0x40 00000e53: MSTORE 00000e54: DUP1 00000e55: PUSH1 0x28 00000e57: DUP2 00000e58: MSTORE 00000e59: PUSH1 0x20 00000e5b: ADD 00000e5c: PUSH2 0x2678 00000e5f: PUSH1 0x28 00000e61: SWAP2 00000e62: CODECOPY 00000e63: PUSH1 0x01 00000e65: PUSH1 0x01 00000e67: PUSH1 0xa0 00000e69: SHL 00000e6a: SUB 00000e6b: DUP11 00000e6c: AND 00000e6d: PUSH1 0x00 00000e6f: SWAP1 00000e70: DUP2 00000e71: MSTORE 00000e72: PUSH1 0x35 00000e74: PUSH1 0x20 00000e76: MSTORE 00000e77: PUSH1 0x40 00000e79: DUP2 00000e7a: KECCAK256 00000e7b: SWAP1 00000e7c: PUSH2 0x0e83 00000e7f: PUSH2 0x18d6 00000e82: JUMP 00000e83: JUMPDEST 00000e84: PUSH1 0x01 00000e86: PUSH1 0x01 00000e88: PUSH1 0xa0 00000e8a: SHL 00000e8b: SUB 00000e8c: AND 00000e8d: DUP2 00000e8e: MSTORE 00000e8f: PUSH1 0x20 00000e91: DUP2 00000e92: ADD 00000e93: SWAP2 00000e94: SWAP1 00000e95: SWAP2 00000e96: MSTORE 00000e97: PUSH1 0x40 00000e99: ADD 00000e9a: PUSH1 0x00 00000e9c: KECCAK256 00000e9d: SLOAD 00000e9e: SWAP2 00000e9f: SWAP1 00000ea0: PUSH2 0x1d51 00000ea3: JUMP 00000ea4: JUMPDEST 00000ea5: PUSH2 0x18da 00000ea8: JUMP 00000ea9: JUMPDEST 00000eaa: DUP3 00000eab: PUSH1 0x01 00000ead: PUSH1 0x01 00000eaf: PUSH1 0xa0 00000eb1: SHL 00000eb2: SUB 00000eb3: AND 00000eb4: DUP5 00000eb5: PUSH1 0x01 00000eb7: PUSH1 0x01 00000eb9: PUSH1 0xa0 00000ebb: SHL 00000ebc: SUB 00000ebd: AND 00000ebe: PUSH1 0x00 00000ec0: DUP1 00000ec1: MLOAD 00000ec2: PUSH1 0x20 00000ec4: PUSH2 0x26ce 00000ec7: DUP4 00000ec8: CODECOPY 00000ec9: DUP2 00000eca: MLOAD 00000ecb: SWAP2 00000ecc: MSTORE 00000ecd: DUP5 00000ece: PUSH1 0x40 00000ed0: MLOAD 00000ed1: DUP1 00000ed2: DUP3 00000ed3: DUP2 00000ed4: MSTORE 00000ed5: PUSH1 0x20 00000ed7: ADD 00000ed8: SWAP2 00000ed9: POP 00000eda: POP 00000edb: PUSH1 0x40 00000edd: MLOAD 00000ede: DUP1 00000edf: SWAP2 00000ee0: SUB 00000ee1: SWAP1 00000ee2: LOG3 00000ee3: POP 00000ee4: PUSH1 0x01 00000ee6: SWAP4 00000ee7: SWAP3 00000ee8: POP 00000ee9: POP 00000eea: POP 00000eeb: JUMP 00000eec: JUMPDEST 00000eed: PUSH32 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 00000f0e: DUP2 00000f0f: JUMP 00000f10: JUMPDEST 00000f11: PUSH1 0x39 00000f13: SLOAD 00000f14: PUSH1 0xff 00000f16: AND 00000f17: SWAP1 00000f18: JUMP 00000f19: JUMPDEST 00000f1a: PUSH1 0x3b 00000f1c: SLOAD 00000f1d: DUP2 00000f1e: JUMP 00000f1f: JUMPDEST 00000f20: PUSH1 0x00 00000f22: PUSH2 0x0800 00000f25: PUSH2 0x0f2c 00000f28: PUSH2 0x18d6 00000f2b: JUMP 00000f2c: JUMPDEST 00000f2d: DUP5 00000f2e: PUSH2 0x0ea4 00000f31: DUP6 00000f32: PUSH1 0x35 00000f34: PUSH1 0x00 00000f36: PUSH2 0x0f3d 00000f39: PUSH2 0x18d6 00000f3c: JUMP 00000f3d: JUMPDEST 00000f3e: PUSH1 0x01 00000f40: PUSH1 0x01 00000f42: PUSH1 0xa0 00000f44: SHL 00000f45: SUB 00000f46: SWAP1 00000f47: DUP2 00000f48: AND 00000f49: DUP3 00000f4a: MSTORE 00000f4b: PUSH1 0x20 00000f4d: DUP1 00000f4e: DUP4 00000f4f: ADD 00000f50: SWAP4 00000f51: SWAP1 00000f52: SWAP4 00000f53: MSTORE 00000f54: PUSH1 0x40 00000f56: SWAP2 00000f57: DUP3 00000f58: ADD 00000f59: PUSH1 0x00 00000f5b: SWAP1 00000f5c: DUP2 00000f5d: KECCAK256 00000f5e: SWAP2 00000f5f: DUP13 00000f60: AND 00000f61: DUP2 00000f62: MSTORE 00000f63: SWAP3 00000f64: MSTORE 00000f65: SWAP1 00000f66: KECCAK256 00000f67: SLOAD 00000f68: SWAP1 00000f69: PUSH2 0x1dab 00000f6c: JUMP 00000f6d: JUMPDEST 00000f6e: PUSH1 0x3c 00000f70: SLOAD 00000f71: PUSH1 0x00 00000f73: SWAP1 00000f74: PUSH1 0x01 00000f76: PUSH1 0x01 00000f78: PUSH1 0xa0 00000f7a: SHL 00000f7b: SUB 00000f7c: AND 00000f7d: PUSH2 0x0f84 00000f80: PUSH2 0x18d6 00000f83: JUMP 00000f84: JUMPDEST 00000f85: PUSH1 0x01 00000f87: PUSH1 0x01 00000f89: PUSH1 0xa0 00000f8b: SHL 00000f8c: SUB 00000f8d: AND 00000f8e: EQ 00000f8f: PUSH1 0x40 00000f91: MLOAD 00000f92: DUP1 00000f93: PUSH1 0x40 00000f95: ADD 00000f96: PUSH1 0x40 00000f98: MSTORE 00000f99: DUP1 00000f9a: PUSH1 0x02 00000f9c: DUP2 00000f9d: MSTORE 00000f9e: PUSH1 0x20 00000fa0: ADD 00000fa1: PUSH2 0x3239 00000fa4: PUSH1 0xf0 00000fa6: SHL 00000fa7: DUP2 00000fa8: MSTORE 00000fa9: POP 00000faa: SWAP1 00000fab: PUSH2 0x0ff5 00000fae: JUMPI 00000faf: PUSH1 0x40 00000fb1: MLOAD 00000fb2: PUSH3 0x461bcd 00000fb6: PUSH1 0xe5 00000fb8: SHL 00000fb9: DUP2 00000fba: MSTORE 00000fbb: PUSH1 0x20 00000fbd: PUSH1 0x04 00000fbf: DUP3 00000fc0: ADD 00000fc1: DUP2 00000fc2: DUP2 00000fc3: MSTORE 00000fc4: DUP4 00000fc5: MLOAD 00000fc6: PUSH1 0x24 00000fc8: DUP5 00000fc9: ADD 00000fca: MSTORE 00000fcb: DUP4 00000fcc: MLOAD 00000fcd: SWAP1 00000fce: SWAP3 00000fcf: DUP4 00000fd0: SWAP3 00000fd1: PUSH1 0x44 00000fd3: SWAP1 00000fd4: SWAP2 00000fd5: ADD 00000fd6: SWAP2 00000fd7: SWAP1 00000fd8: DUP6 00000fd9: ADD 00000fda: SWAP1 00000fdb: DUP1 00000fdc: DUP4 00000fdd: DUP4 00000fde: PUSH1 0x00 00000fe0: DUP4 00000fe1: ISZERO 00000fe2: PUSH2 0x08b6 00000fe5: JUMPI 00000fe6: DUP2 00000fe7: DUP2 00000fe8: ADD 00000fe9: MLOAD 00000fea: DUP4 00000feb: DUP3 00000fec: ADD 00000fed: MSTORE 00000fee: PUSH1 0x20 00000ff0: ADD 00000ff1: PUSH2 0x089e 00000ff4: JUMP 00000ff5: JUMPDEST 00000ff6: POP 00000ff7: PUSH1 0x3e 00000ff9: SLOAD 00000ffa: PUSH2 0x100d 00000ffd: SWAP1 00000ffe: PUSH1 0x01 00001000: PUSH1 0x01 00001002: PUSH1 0xa0 00001004: SHL 00001005: SUB 00001006: AND 00001007: DUP5 00001008: DUP5 00001009: PUSH2 0x1e0c 0000100c: JUMP 0000100d: JUMPDEST 0000100e: POP 0000100f: SWAP2 00001010: SWAP1 00001011: POP 00001012: JUMP 00001013: JUMPDEST 00001014: PUSH1 0x3c 00001016: SLOAD 00001017: PUSH1 0x3e 00001019: SLOAD 0000101a: PUSH1 0x40 0000101c: DUP1 0000101d: MLOAD 0000101e: PUSH4 0xd15e0053 00001023: PUSH1 0xe0 00001025: SHL 00001026: DUP2 00001027: MSTORE 00001028: PUSH1 0x01 0000102a: PUSH1 0x01 0000102c: PUSH1 0xa0 0000102e: SHL 0000102f: SUB 00001030: SWAP3 00001031: DUP4 00001032: AND 00001033: PUSH1 0x04 00001035: DUP3 00001036: ADD 00001037: MSTORE 00001038: SWAP1 00001039: MLOAD 0000103a: PUSH1 0x00 0000103c: SWAP4 0000103d: PUSH2 0x0804 00001040: SWAP4 00001041: AND 00001042: SWAP2 00001043: PUSH4 0xd15e0053 00001048: SWAP2 00001049: PUSH1 0x24 0000104b: DUP1 0000104c: DUP4 0000104d: ADD 0000104e: SWAP3 0000104f: PUSH1 0x20 00001051: SWAP3 00001052: SWAP2 00001053: SWAP1 00001054: DUP3 00001055: SWAP1 00001056: SUB 00001057: ADD 00001058: DUP2 00001059: DUP7 0000105a: DUP1 0000105b: EXTCODESIZE 0000105c: ISZERO 0000105d: DUP1 0000105e: ISZERO 0000105f: PUSH2 0x1067 00001062: JUMPI 00001063: PUSH1 0x00 00001065: DUP1 00001066: REVERT 00001067: JUMPDEST 00001068: POP 00001069: GAS 0000106a: STATICCALL 0000106b: ISZERO 0000106c: DUP1 0000106d: ISZERO 0000106e: PUSH2 0x107b 00001071: JUMPI 00001072: RETURNDATASIZE 00001073: PUSH1 0x00 00001075: DUP1 00001076: RETURNDATACOPY 00001077: RETURNDATASIZE 00001078: PUSH1 0x00 0000107a: REVERT 0000107b: JUMPDEST 0000107c: POP 0000107d: POP 0000107e: POP 0000107f: POP 00001080: PUSH1 0x40 00001082: MLOAD 00001083: RETURNDATASIZE 00001084: PUSH1 0x20 00001086: DUP2 00001087: LT 00001088: ISZERO 00001089: PUSH2 0x1091 0000108c: JUMPI 0000108d: PUSH1 0x00 0000108f: DUP1 00001090: REVERT 00001091: JUMPDEST 00001092: POP 00001093: MLOAD 00001094: PUSH2 0x109c 00001097: DUP5 00001098: PUSH2 0x19c6 0000109b: JUMP 0000109c: JUMPDEST 0000109d: SWAP1 0000109e: PUSH2 0x1c3f 000010a1: JUMP 000010a2: JUMPDEST 000010a3: PUSH1 0x3c 000010a5: SLOAD 000010a6: PUSH1 0x01 000010a8: PUSH1 0x01 000010aa: PUSH1 0xa0 000010ac: SHL 000010ad: SUB 000010ae: AND 000010af: SWAP1 000010b0: JUMP 000010b1: JUMPDEST 000010b2: PUSH1 0x00 000010b4: PUSH2 0x10bb 000010b7: PUSH2 0x1e5e 000010ba: JUMP 000010bb: JUMPDEST 000010bc: SWAP1 000010bd: POP 000010be: SWAP1 000010bf: JUMP 000010c0: JUMPDEST 000010c1: PUSH1 0x40 000010c3: MLOAD 000010c4: DUP1 000010c5: PUSH1 0x40 000010c7: ADD 000010c8: PUSH1 0x40 000010ca: MSTORE 000010cb: DUP1 000010cc: PUSH1 0x01 000010ce: DUP2 000010cf: MSTORE 000010d0: PUSH1 0x20 000010d2: ADD 000010d3: PUSH1 0x31 000010d5: PUSH1 0xf8 000010d7: SHL 000010d8: DUP2 000010d9: MSTORE 000010da: POP 000010db: DUP2 000010dc: JUMP 000010dd: JUMPDEST 000010de: PUSH1 0x3c 000010e0: SLOAD 000010e1: PUSH1 0x01 000010e3: PUSH1 0x01 000010e5: PUSH1 0xa0 000010e7: SHL 000010e8: SUB 000010e9: AND 000010ea: PUSH2 0x10f1 000010ed: PUSH2 0x18d6 000010f0: JUMP 000010f1: JUMPDEST 000010f2: PUSH1 0x01 000010f4: PUSH1 0x01 000010f6: PUSH1 0xa0 000010f8: SHL 000010f9: SUB 000010fa: AND 000010fb: EQ 000010fc: PUSH1 0x40 000010fe: MLOAD 000010ff: DUP1 00001100: PUSH1 0x40 00001102: ADD 00001103: PUSH1 0x40 00001105: MSTORE 00001106: DUP1 00001107: PUSH1 0x02 00001109: DUP2 0000110a: MSTORE 0000110b: PUSH1 0x20 0000110d: ADD 0000110e: PUSH2 0x3239 00001111: PUSH1 0xf0 00001113: SHL 00001114: DUP2 00001115: MSTORE 00001116: POP 00001117: SWAP1 00001118: PUSH2 0x1162 0000111b: JUMPI 0000111c: PUSH1 0x40 0000111e: MLOAD 0000111f: PUSH3 0x461bcd 00001123: PUSH1 0xe5 00001125: SHL 00001126: DUP2 00001127: MSTORE 00001128: PUSH1 0x20 0000112a: PUSH1 0x04 0000112c: DUP3 0000112d: ADD 0000112e: DUP2 0000112f: DUP2 00001130: MSTORE 00001131: DUP4 00001132: MLOAD 00001133: PUSH1 0x24 00001135: DUP5 00001136: ADD 00001137: MSTORE 00001138: DUP4 00001139: MLOAD 0000113a: SWAP1 0000113b: SWAP3 0000113c: DUP4 0000113d: SWAP3 0000113e: PUSH1 0x44 00001140: SWAP1 00001141: SWAP2 00001142: ADD 00001143: SWAP2 00001144: SWAP1 00001145: DUP6 00001146: ADD 00001147: SWAP1 00001148: DUP1 00001149: DUP4 0000114a: DUP4 0000114b: PUSH1 0x00 0000114d: DUP4 0000114e: ISZERO 0000114f: PUSH2 0x08b6 00001152: JUMPI 00001153: DUP2 00001154: DUP2 00001155: ADD 00001156: MLOAD 00001157: DUP4 00001158: DUP3 00001159: ADD 0000115a: MSTORE 0000115b: PUSH1 0x20 0000115d: ADD 0000115e: PUSH2 0x089e 00001161: JUMP 00001162: JUMPDEST 00001163: POP 00001164: DUP2 00001165: PUSH2 0x116d 00001168: JUMPI 00001169: PUSH2 0x1200 0000116c: JUMP 0000116d: JUMPDEST 0000116e: PUSH1 0x3d 00001170: SLOAD 00001171: PUSH1 0x01 00001173: PUSH1 0x01 00001175: PUSH1 0xa0 00001177: SHL 00001178: SUB 00001179: AND 0000117a: PUSH2 0x118c 0000117d: DUP2 0000117e: PUSH2 0x1187 00001181: DUP6 00001182: DUP6 00001183: PUSH2 0x19e7 00001186: JUMP 00001187: JUMPDEST 00001188: PUSH2 0x1aee 0000118b: JUMP 0000118c: JUMPDEST 0000118d: PUSH1 0x40 0000118f: DUP1 00001190: MLOAD 00001191: DUP5 00001192: DUP2 00001193: MSTORE 00001194: SWAP1 00001195: MLOAD 00001196: PUSH1 0x01 00001198: PUSH1 0x01 0000119a: PUSH1 0xa0 0000119c: SHL 0000119d: SUB 0000119e: DUP4 0000119f: AND 000011a0: SWAP2 000011a1: PUSH1 0x00 000011a3: SWAP2 000011a4: PUSH1 0x00 000011a6: DUP1 000011a7: MLOAD 000011a8: PUSH1 0x20 000011aa: PUSH2 0x26ce 000011ad: DUP4 000011ae: CODECOPY 000011af: DUP2 000011b0: MLOAD 000011b1: SWAP2 000011b2: MSTORE 000011b3: SWAP2 000011b4: DUP2 000011b5: SWAP1 000011b6: SUB 000011b7: PUSH1 0x20 000011b9: ADD 000011ba: SWAP1 000011bb: LOG3 000011bc: PUSH1 0x40 000011be: DUP1 000011bf: MLOAD 000011c0: DUP5 000011c1: DUP2 000011c2: MSTORE 000011c3: PUSH1 0x20 000011c5: DUP2 000011c6: ADD 000011c7: DUP5 000011c8: SWAP1 000011c9: MSTORE 000011ca: DUP2 000011cb: MLOAD 000011cc: PUSH1 0x01 000011ce: PUSH1 0x01 000011d0: PUSH1 0xa0 000011d2: SHL 000011d3: SUB 000011d4: DUP5 000011d5: AND 000011d6: SWAP3 000011d7: PUSH32 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f 000011f8: SWAP3 000011f9: DUP3 000011fa: SWAP1 000011fb: SUB 000011fc: ADD 000011fd: SWAP1 000011fe: LOG2 000011ff: POP 00001200: JUMPDEST 00001201: POP 00001202: POP 00001203: JUMP 00001204: JUMPDEST 00001205: PUSH1 0x3c 00001207: SLOAD 00001208: PUSH1 0x01 0000120a: PUSH1 0x01 0000120c: PUSH1 0xa0 0000120e: SHL 0000120f: SUB 00001210: AND 00001211: PUSH2 0x1218 00001214: PUSH2 0x18d6 00001217: JUMP 00001218: JUMPDEST 00001219: PUSH1 0x01 0000121b: PUSH1 0x01 0000121d: PUSH1 0xa0 0000121f: SHL 00001220: SUB 00001221: AND 00001222: EQ 00001223: PUSH1 0x40 00001225: MLOAD 00001226: DUP1 00001227: PUSH1 0x40 00001229: ADD 0000122a: PUSH1 0x40 0000122c: MSTORE 0000122d: DUP1 0000122e: PUSH1 0x02 00001230: DUP2 00001231: MSTORE 00001232: PUSH1 0x20 00001234: ADD 00001235: PUSH2 0x3239 00001238: PUSH1 0xf0 0000123a: SHL 0000123b: DUP2 0000123c: MSTORE 0000123d: POP 0000123e: SWAP1 0000123f: PUSH2 0x1289 00001242: JUMPI 00001243: PUSH1 0x40 00001245: MLOAD 00001246: PUSH3 0x461bcd 0000124a: PUSH1 0xe5 0000124c: SHL 0000124d: DUP2 0000124e: MSTORE 0000124f: PUSH1 0x20 00001251: PUSH1 0x04 00001253: DUP3 00001254: ADD 00001255: DUP2 00001256: DUP2 00001257: MSTORE 00001258: DUP4 00001259: MLOAD 0000125a: PUSH1 0x24 0000125c: DUP5 0000125d: ADD 0000125e: MSTORE 0000125f: DUP4 00001260: MLOAD 00001261: SWAP1 00001262: SWAP3 00001263: DUP4 00001264: SWAP3 00001265: PUSH1 0x44 00001267: SWAP1 00001268: SWAP2 00001269: ADD 0000126a: SWAP2 0000126b: SWAP1 0000126c: DUP6 0000126d: ADD 0000126e: SWAP1 0000126f: DUP1 00001270: DUP4 00001271: DUP4 00001272: PUSH1 0x00 00001274: DUP4 00001275: ISZERO 00001276: PUSH2 0x08b6 00001279: JUMPI 0000127a: DUP2 0000127b: DUP2 0000127c: ADD 0000127d: MLOAD 0000127e: DUP4 0000127f: DUP3 00001280: ADD 00001281: MSTORE 00001282: PUSH1 0x20 00001284: ADD 00001285: PUSH2 0x089e 00001288: JUMP 00001289: JUMPDEST 0000128a: POP 0000128b: POP 0000128c: POP 0000128d: JUMP 0000128e: JUMPDEST 0000128f: PUSH1 0x38 00001291: DUP1 00001292: SLOAD 00001293: PUSH1 0x40 00001295: DUP1 00001296: MLOAD 00001297: PUSH1 0x20 00001299: PUSH1 0x1f 0000129b: PUSH1 0x02 0000129d: PUSH1 0x00 0000129f: NOT 000012a0: PUSH2 0x0100 000012a3: PUSH1 0x01 000012a5: DUP9 000012a6: AND 000012a7: ISZERO 000012a8: MUL 000012a9: ADD 000012aa: SWAP1 000012ab: SWAP6 000012ac: AND 000012ad: SWAP5 000012ae: SWAP1 000012af: SWAP5 000012b0: DIV 000012b1: SWAP4 000012b2: DUP5 000012b3: ADD 000012b4: DUP2 000012b5: SWAP1 000012b6: DIV 000012b7: DUP2 000012b8: MUL 000012b9: DUP3 000012ba: ADD 000012bb: DUP2 000012bc: ADD 000012bd: SWAP1 000012be: SWAP3 000012bf: MSTORE 000012c0: DUP3 000012c1: DUP2 000012c2: MSTORE 000012c3: PUSH1 0x60 000012c5: SWAP4 000012c6: SWAP1 000012c7: SWAP3 000012c8: SWAP1 000012c9: SWAP2 000012ca: DUP4 000012cb: ADD 000012cc: DUP3 000012cd: DUP3 000012ce: DUP1 000012cf: ISZERO 000012d0: PUSH2 0x07e1 000012d3: JUMPI 000012d4: DUP1 000012d5: PUSH1 0x1f 000012d7: LT 000012d8: PUSH2 0x07b6 000012db: JUMPI 000012dc: PUSH2 0x0100 000012df: DUP1 000012e0: DUP4 000012e1: SLOAD 000012e2: DIV 000012e3: MUL 000012e4: DUP4 000012e5: MSTORE 000012e6: SWAP2 000012e7: PUSH1 0x20 000012e9: ADD 000012ea: SWAP2 000012eb: PUSH2 0x07e1 000012ee: JUMP 000012ef: JUMPDEST 000012f0: PUSH1 0x00 000012f2: PUSH2 0x0800 000012f5: PUSH2 0x12fc 000012f8: PUSH2 0x18d6 000012fb: JUMP 000012fc: JUMPDEST 000012fd: DUP5 000012fe: PUSH2 0x0ea4 00001301: DUP6 00001302: PUSH1 0x40 00001304: MLOAD 00001305: DUP1 00001306: PUSH1 0x60 00001308: ADD 00001309: PUSH1 0x40 0000130b: MSTORE 0000130c: DUP1 0000130d: PUSH1 0x25 0000130f: DUP2 00001310: MSTORE 00001311: PUSH1 0x20 00001313: ADD 00001314: PUSH2 0x2782 00001317: PUSH1 0x25 00001319: SWAP2 0000131a: CODECOPY 0000131b: PUSH1 0x35 0000131d: PUSH1 0x00 0000131f: PUSH2 0x1326 00001322: PUSH2 0x18d6 00001325: JUMP 00001326: JUMPDEST 00001327: PUSH1 0x01 00001329: PUSH1 0x01 0000132b: PUSH1 0xa0 0000132d: SHL 0000132e: SUB 0000132f: SWAP1 00001330: DUP2 00001331: AND 00001332: DUP3 00001333: MSTORE 00001334: PUSH1 0x20 00001336: DUP1 00001337: DUP4 00001338: ADD 00001339: SWAP4 0000133a: SWAP1 0000133b: SWAP4 0000133c: MSTORE 0000133d: PUSH1 0x40 0000133f: SWAP2 00001340: DUP3 00001341: ADD 00001342: PUSH1 0x00 00001344: SWAP1 00001345: DUP2 00001346: KECCAK256 00001347: SWAP2 00001348: DUP14 00001349: AND 0000134a: DUP2 0000134b: MSTORE 0000134c: SWAP3 0000134d: MSTORE 0000134e: SWAP1 0000134f: KECCAK256 00001350: SLOAD 00001351: SWAP2 00001352: SWAP1 00001353: PUSH2 0x1d51 00001356: JUMP 00001357: JUMPDEST 00001358: PUSH1 0x00 0000135a: PUSH2 0x136b 0000135d: PUSH2 0x1364 00001360: PUSH2 0x18d6 00001363: JUMP 00001364: JUMPDEST 00001365: DUP5 00001366: DUP5 00001367: PUSH2 0x1d44 0000136a: JUMP 0000136b: JUMPDEST 0000136c: DUP3 0000136d: PUSH1 0x01 0000136f: PUSH1 0x01 00001371: PUSH1 0xa0 00001373: SHL 00001374: SUB 00001375: AND 00001376: PUSH2 0x137d 00001379: PUSH2 0x18d6 0000137c: JUMP 0000137d: JUMPDEST 0000137e: PUSH1 0x01 00001380: PUSH1 0x01 00001382: PUSH1 0xa0 00001384: SHL 00001385: SUB 00001386: AND 00001387: PUSH1 0x00 00001389: DUP1 0000138a: MLOAD 0000138b: PUSH1 0x20 0000138d: PUSH2 0x26ce 00001390: DUP4 00001391: CODECOPY 00001392: DUP2 00001393: MLOAD 00001394: SWAP2 00001395: MSTORE 00001396: DUP5 00001397: PUSH1 0x40 00001399: MLOAD 0000139a: DUP1 0000139b: DUP3 0000139c: DUP2 0000139d: MSTORE 0000139e: PUSH1 0x20 000013a0: ADD 000013a1: SWAP2 000013a2: POP 000013a3: POP 000013a4: PUSH1 0x40 000013a6: MLOAD 000013a7: DUP1 000013a8: SWAP2 000013a9: SUB 000013aa: SWAP1 000013ab: LOG3 000013ac: POP 000013ad: PUSH1 0x01 000013af: SWAP3 000013b0: SWAP2 000013b1: POP 000013b2: POP 000013b3: JUMP 000013b4: JUMPDEST 000013b5: PUSH1 0x3d 000013b7: SLOAD 000013b8: PUSH1 0x01 000013ba: PUSH1 0x01 000013bc: PUSH1 0xa0 000013be: SHL 000013bf: SUB 000013c0: AND 000013c1: SWAP1 000013c2: JUMP 000013c3: JUMPDEST 000013c4: PUSH1 0x3e 000013c6: SLOAD 000013c7: PUSH1 0x01 000013c9: PUSH1 0x01 000013cb: PUSH1 0xa0 000013cd: SHL 000013ce: SUB 000013cf: AND 000013d0: SWAP1 000013d1: JUMP 000013d2: JUMPDEST 000013d3: PUSH1 0x00 000013d5: PUSH2 0x10bb 000013d8: PUSH2 0x19e1 000013db: JUMP 000013dc: JUMPDEST 000013dd: PUSH1 0x3a 000013df: PUSH1 0x20 000013e1: MSTORE 000013e2: PUSH1 0x00 000013e4: SWAP1 000013e5: DUP2 000013e6: MSTORE 000013e7: PUSH1 0x40 000013e9: SWAP1 000013ea: KECCAK256 000013eb: SLOAD 000013ec: DUP2 000013ed: JUMP 000013ee: JUMPDEST 000013ef: PUSH1 0x01 000013f1: PUSH1 0x01 000013f3: PUSH1 0xa0 000013f5: SHL 000013f6: SUB 000013f7: DUP8 000013f8: AND 000013f9: PUSH2 0x1439 000013fc: JUMPI 000013fd: PUSH1 0x40 000013ff: DUP1 00001400: MLOAD 00001401: PUSH3 0x461bcd 00001405: PUSH1 0xe5 00001407: SHL 00001408: DUP2 00001409: MSTORE 0000140a: PUSH1 0x20 0000140c: PUSH1 0x04 0000140e: DUP3 0000140f: ADD 00001410: MSTORE 00001411: PUSH1 0x0d 00001413: PUSH1 0x24 00001415: DUP3 00001416: ADD 00001417: MSTORE 00001418: PUSH13 0x24a72b20a624a22fa7aba722a9 00001426: PUSH1 0x99 00001428: SHL 00001429: PUSH1 0x44 0000142b: DUP3 0000142c: ADD 0000142d: MSTORE 0000142e: SWAP1 0000142f: MLOAD 00001430: SWAP1 00001431: DUP2 00001432: SWAP1 00001433: SUB 00001434: PUSH1 0x64 00001436: ADD 00001437: SWAP1 00001438: REVERT 00001439: JUMPDEST 0000143a: DUP4 0000143b: TIMESTAMP 0000143c: GT 0000143d: ISZERO 0000143e: PUSH2 0x1483 00001441: JUMPI 00001442: PUSH1 0x40 00001444: DUP1 00001445: MLOAD 00001446: PUSH3 0x461bcd 0000144a: PUSH1 0xe5 0000144c: SHL 0000144d: DUP2 0000144e: MSTORE 0000144f: PUSH1 0x20 00001451: PUSH1 0x04 00001453: DUP3 00001454: ADD 00001455: MSTORE 00001456: PUSH1 0x12 00001458: PUSH1 0x24 0000145a: DUP3 0000145b: ADD 0000145c: MSTORE 0000145d: PUSH18 0x24a72b20a624a22fa2ac2824a920aa24a7a7 00001470: PUSH1 0x71 00001472: SHL 00001473: PUSH1 0x44 00001475: DUP3 00001476: ADD 00001477: MSTORE 00001478: SWAP1 00001479: MLOAD 0000147a: SWAP1 0000147b: DUP2 0000147c: SWAP1 0000147d: SUB 0000147e: PUSH1 0x64 00001480: ADD 00001481: SWAP1 00001482: REVERT 00001483: JUMPDEST 00001484: PUSH1 0x01 00001486: PUSH1 0x01 00001488: PUSH1 0xa0 0000148a: SHL 0000148b: SUB 0000148c: DUP1 0000148d: DUP9 0000148e: AND 0000148f: PUSH1 0x00 00001491: DUP2 00001492: DUP2 00001493: MSTORE 00001494: PUSH1 0x3a 00001496: PUSH1 0x20 00001498: SWAP1 00001499: DUP2 0000149a: MSTORE 0000149b: PUSH1 0x40 0000149d: DUP1 0000149e: DUP4 0000149f: KECCAK256 000014a0: SLOAD 000014a1: PUSH1 0x3b 000014a3: SLOAD 000014a4: DUP3 000014a5: MLOAD 000014a6: PUSH32 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 000014c7: DUP2 000014c8: DUP7 000014c9: ADD 000014ca: MSTORE 000014cb: DUP1 000014cc: DUP5 000014cd: ADD 000014ce: SWAP7 000014cf: SWAP1 000014d0: SWAP7 000014d1: MSTORE 000014d2: SWAP6 000014d3: DUP13 000014d4: AND 000014d5: PUSH1 0x60 000014d7: DUP7 000014d8: ADD 000014d9: MSTORE 000014da: PUSH1 0x80 000014dc: DUP6 000014dd: ADD 000014de: DUP12 000014df: SWAP1 000014e0: MSTORE 000014e1: PUSH1 0xa0 000014e3: DUP6 000014e4: ADD 000014e5: DUP2 000014e6: SWAP1 000014e7: MSTORE 000014e8: PUSH1 0xc0 000014ea: DUP1 000014eb: DUP7 000014ec: ADD 000014ed: DUP12 000014ee: SWAP1 000014ef: MSTORE 000014f0: DUP3 000014f1: MLOAD 000014f2: DUP1 000014f3: DUP8 000014f4: SUB 000014f5: SWAP1 000014f6: SWAP2 000014f7: ADD 000014f8: DUP2 000014f9: MSTORE 000014fa: PUSH1 0xe0 000014fc: DUP7 000014fd: ADD 000014fe: DUP4 000014ff: MSTORE 00001500: DUP1 00001501: MLOAD 00001502: SWAP1 00001503: DUP5 00001504: ADD 00001505: KECCAK256 00001506: PUSH2 0x1901 00001509: PUSH1 0xf0 0000150b: SHL 0000150c: PUSH2 0x0100 0000150f: DUP8 00001510: ADD 00001511: MSTORE 00001512: PUSH2 0x0102 00001515: DUP7 00001516: ADD 00001517: SWAP7 00001518: SWAP1 00001519: SWAP7 0000151a: MSTORE 0000151b: PUSH2 0x0122 0000151e: DUP1 0000151f: DUP7 00001520: ADD 00001521: SWAP7 00001522: SWAP1 00001523: SWAP7 00001524: MSTORE 00001525: DUP2 00001526: MLOAD 00001527: DUP1 00001528: DUP7 00001529: SUB 0000152a: SWAP1 0000152b: SWAP7 0000152c: ADD 0000152d: DUP7 0000152e: MSTORE 0000152f: PUSH2 0x0142 00001532: DUP6 00001533: ADD 00001534: DUP1 00001535: DUP4 00001536: MSTORE 00001537: DUP7 00001538: MLOAD 00001539: SWAP7 0000153a: DUP5 0000153b: ADD 0000153c: SWAP7 0000153d: SWAP1 0000153e: SWAP7 0000153f: KECCAK256 00001540: SWAP4 00001541: SWAP1 00001542: SWAP6 00001543: MSTORE 00001544: PUSH2 0x0162 00001547: DUP5 00001548: ADD 00001549: DUP1 0000154a: DUP3 0000154b: MSTORE 0000154c: DUP4 0000154d: SWAP1 0000154e: MSTORE 0000154f: PUSH1 0xff 00001551: DUP9 00001552: AND 00001553: PUSH2 0x0182 00001556: DUP6 00001557: ADD 00001558: MSTORE 00001559: PUSH2 0x01a2 0000155c: DUP5 0000155d: ADD 0000155e: DUP8 0000155f: SWAP1 00001560: MSTORE 00001561: PUSH2 0x01c2 00001564: DUP5 00001565: ADD 00001566: DUP7 00001567: SWAP1 00001568: MSTORE 00001569: MLOAD 0000156a: SWAP2 0000156b: SWAP3 0000156c: PUSH1 0x01 0000156e: SWAP3 0000156f: PUSH2 0x01e2 00001572: DUP1 00001573: DUP4 00001574: ADD 00001575: SWAP4 00001576: SWAP3 00001577: PUSH1 0x1f 00001579: NOT 0000157a: DUP4 0000157b: ADD 0000157c: SWAP3 0000157d: SWAP1 0000157e: DUP2 0000157f: SWAP1 00001580: SUB 00001581: SWAP1 00001582: SWAP2 00001583: ADD 00001584: SWAP1 00001585: DUP6 00001586: GAS 00001587: STATICCALL 00001588: ISZERO 00001589: DUP1 0000158a: ISZERO 0000158b: PUSH2 0x1598 0000158e: JUMPI 0000158f: RETURNDATASIZE 00001590: PUSH1 0x00 00001592: DUP1 00001593: RETURNDATACOPY 00001594: RETURNDATASIZE 00001595: PUSH1 0x00 00001597: REVERT 00001598: JUMPDEST 00001599: POP 0000159a: POP 0000159b: POP 0000159c: PUSH1 0x20 0000159e: PUSH1 0x40 000015a0: MLOAD 000015a1: SUB 000015a2: MLOAD 000015a3: PUSH1 0x01 000015a5: PUSH1 0x01 000015a7: PUSH1 0xa0 000015a9: SHL 000015aa: SUB 000015ab: AND 000015ac: DUP10 000015ad: PUSH1 0x01 000015af: PUSH1 0x01 000015b1: PUSH1 0xa0 000015b3: SHL 000015b4: SUB 000015b5: AND 000015b6: EQ 000015b7: PUSH2 0x15fb 000015ba: JUMPI 000015bb: PUSH1 0x40 000015bd: DUP1 000015be: MLOAD 000015bf: PUSH3 0x461bcd 000015c3: PUSH1 0xe5 000015c5: SHL 000015c6: DUP2 000015c7: MSTORE 000015c8: PUSH1 0x20 000015ca: PUSH1 0x04 000015cc: DUP3 000015cd: ADD 000015ce: MSTORE 000015cf: PUSH1 0x11 000015d1: PUSH1 0x24 000015d3: DUP3 000015d4: ADD 000015d5: MSTORE 000015d6: PUSH17 0x494e56414c49445f5349474e4154555245 000015e8: PUSH1 0x78 000015ea: SHL 000015eb: PUSH1 0x44 000015ed: DUP3 000015ee: ADD 000015ef: MSTORE 000015f0: SWAP1 000015f1: MLOAD 000015f2: SWAP1 000015f3: DUP2 000015f4: SWAP1 000015f5: SUB 000015f6: PUSH1 0x64 000015f8: ADD 000015f9: SWAP1 000015fa: REVERT 000015fb: JUMPDEST 000015fc: PUSH2 0x1606 000015ff: DUP3 00001600: PUSH1 0x01 00001602: PUSH2 0x1dab 00001605: JUMP 00001606: JUMPDEST 00001607: PUSH1 0x01 00001609: PUSH1 0x01 0000160b: PUSH1 0xa0 0000160d: SHL 0000160e: SUB 0000160f: DUP11 00001610: AND 00001611: PUSH1 0x00 00001613: SWAP1 00001614: DUP2 00001615: MSTORE 00001616: PUSH1 0x3a 00001618: PUSH1 0x20 0000161a: MSTORE 0000161b: PUSH1 0x40 0000161d: SWAP1 0000161e: KECCAK256 0000161f: SSTORE 00001620: PUSH2 0x162a 00001623: DUP10 00001624: DUP10 00001625: DUP10 00001626: PUSH2 0x18da 00001629: JUMP 0000162a: JUMPDEST 0000162b: POP 0000162c: POP 0000162d: POP 0000162e: POP 0000162f: POP 00001630: POP 00001631: POP 00001632: POP 00001633: POP 00001634: JUMP 00001635: JUMPDEST 00001636: PUSH1 0x3c 00001638: SLOAD 00001639: PUSH1 0x01 0000163b: PUSH1 0x01 0000163d: PUSH1 0xa0 0000163f: SHL 00001640: SUB 00001641: AND 00001642: PUSH2 0x1649 00001645: PUSH2 0x18d6 00001648: JUMP 00001649: JUMPDEST 0000164a: PUSH1 0x01 0000164c: PUSH1 0x01 0000164e: PUSH1 0xa0 00001650: SHL 00001651: SUB 00001652: AND 00001653: EQ 00001654: PUSH1 0x40 00001656: MLOAD 00001657: DUP1 00001658: PUSH1 0x40 0000165a: ADD 0000165b: PUSH1 0x40 0000165d: MSTORE 0000165e: DUP1 0000165f: PUSH1 0x02 00001661: DUP2 00001662: MSTORE 00001663: PUSH1 0x20 00001665: ADD 00001666: PUSH2 0x3239 00001669: PUSH1 0xf0 0000166b: SHL 0000166c: DUP2 0000166d: MSTORE 0000166e: POP 0000166f: SWAP1 00001670: PUSH2 0x16ba 00001673: JUMPI 00001674: PUSH1 0x40 00001676: MLOAD 00001677: PUSH3 0x461bcd 0000167b: PUSH1 0xe5 0000167d: SHL 0000167e: DUP2 0000167f: MSTORE 00001680: PUSH1 0x20 00001682: PUSH1 0x04 00001684: DUP3 00001685: ADD 00001686: DUP2 00001687: DUP2 00001688: MSTORE 00001689: DUP4 0000168a: MLOAD 0000168b: PUSH1 0x24 0000168d: DUP5 0000168e: ADD 0000168f: MSTORE 00001690: DUP4 00001691: MLOAD 00001692: SWAP1 00001693: SWAP3 00001694: DUP4 00001695: SWAP3 00001696: PUSH1 0x44 00001698: SWAP1 00001699: SWAP2 0000169a: ADD 0000169b: SWAP2 0000169c: SWAP1 0000169d: DUP6 0000169e: ADD 0000169f: SWAP1 000016a0: DUP1 000016a1: DUP4 000016a2: DUP4 000016a3: PUSH1 0x00 000016a5: DUP4 000016a6: ISZERO 000016a7: PUSH2 0x08b6 000016aa: JUMPI 000016ab: DUP2 000016ac: DUP2 000016ad: ADD 000016ae: MLOAD 000016af: DUP4 000016b0: DUP3 000016b1: ADD 000016b2: MSTORE 000016b3: PUSH1 0x20 000016b5: ADD 000016b6: PUSH2 0x089e 000016b9: JUMP 000016ba: JUMPDEST 000016bb: POP 000016bc: PUSH1 0x00 000016be: PUSH2 0x16c7 000016c1: DUP4 000016c2: DUP4 000016c3: PUSH2 0x19e7 000016c6: JUMP 000016c7: JUMPDEST 000016c8: PUSH1 0x40 000016ca: DUP1 000016cb: MLOAD 000016cc: DUP1 000016cd: DUP3 000016ce: ADD 000016cf: SWAP1 000016d0: SWAP2 000016d1: MSTORE 000016d2: PUSH1 0x02 000016d4: DUP2 000016d5: MSTORE 000016d6: PUSH2 0x06a7 000016d9: PUSH1 0xf3 000016db: SHL 000016dc: PUSH1 0x20 000016de: DUP3 000016df: ADD 000016e0: MSTORE 000016e1: SWAP1 000016e2: SWAP2 000016e3: POP 000016e4: DUP2 000016e5: PUSH2 0x172f 000016e8: JUMPI 000016e9: PUSH1 0x40 000016eb: MLOAD 000016ec: PUSH3 0x461bcd 000016f0: PUSH1 0xe5 000016f2: SHL 000016f3: DUP2 000016f4: MSTORE 000016f5: PUSH1 0x20 000016f7: PUSH1 0x04 000016f9: DUP3 000016fa: ADD 000016fb: DUP2 000016fc: DUP2 000016fd: MSTORE 000016fe: DUP4 000016ff: MLOAD 00001700: PUSH1 0x24 00001702: DUP5 00001703: ADD 00001704: MSTORE 00001705: DUP4 00001706: MLOAD 00001707: SWAP1 00001708: SWAP3 00001709: DUP4 0000170a: SWAP3 0000170b: PUSH1 0x44 0000170d: SWAP1 0000170e: SWAP2 0000170f: ADD 00001710: SWAP2 00001711: SWAP1 00001712: DUP6 00001713: ADD 00001714: SWAP1 00001715: DUP1 00001716: DUP4 00001717: DUP4 00001718: PUSH1 0x00 0000171a: DUP4 0000171b: ISZERO 0000171c: PUSH2 0x08b6 0000171f: JUMPI 00001720: DUP2 00001721: DUP2 00001722: ADD 00001723: MLOAD 00001724: DUP4 00001725: DUP3 00001726: ADD 00001727: MSTORE 00001728: PUSH1 0x20 0000172a: ADD 0000172b: PUSH2 0x089e 0000172e: JUMP 0000172f: JUMPDEST 00001730: POP 00001731: PUSH2 0x173a 00001734: DUP6 00001735: DUP3 00001736: PUSH2 0x1e6d 00001739: JUMP 0000173a: JUMPDEST 0000173b: PUSH1 0x3e 0000173d: SLOAD 0000173e: PUSH2 0x1751 00001741: SWAP1 00001742: PUSH1 0x01 00001744: PUSH1 0x01 00001746: PUSH1 0xa0 00001748: SHL 00001749: SUB 0000174a: AND 0000174b: DUP6 0000174c: DUP6 0000174d: PUSH2 0x1e0c 00001750: JUMP 00001751: JUMPDEST 00001752: PUSH1 0x40 00001754: DUP1 00001755: MLOAD 00001756: DUP5 00001757: DUP2 00001758: MSTORE 00001759: SWAP1 0000175a: MLOAD 0000175b: PUSH1 0x00 0000175d: SWAP2 0000175e: PUSH1 0x01 00001760: PUSH1 0x01 00001762: PUSH1 0xa0 00001764: SHL 00001765: SUB 00001766: DUP9 00001767: AND 00001768: SWAP2 00001769: PUSH1 0x00 0000176b: DUP1 0000176c: MLOAD 0000176d: PUSH1 0x20 0000176f: PUSH2 0x26ce 00001772: DUP4 00001773: CODECOPY 00001774: DUP2 00001775: MLOAD 00001776: SWAP2 00001777: MSTORE 00001778: SWAP2 00001779: DUP2 0000177a: SWAP1 0000177b: SUB 0000177c: PUSH1 0x20 0000177e: ADD 0000177f: SWAP1 00001780: LOG3 00001781: DUP4 00001782: PUSH1 0x01 00001784: PUSH1 0x01 00001786: PUSH1 0xa0 00001788: SHL 00001789: SUB 0000178a: AND 0000178b: DUP6 0000178c: PUSH1 0x01 0000178e: PUSH1 0x01 00001790: PUSH1 0xa0 00001792: SHL 00001793: SUB 00001794: AND 00001795: PUSH32 0x5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa2 000017b6: DUP6 000017b7: DUP6 000017b8: PUSH1 0x40 000017ba: MLOAD 000017bb: DUP1 000017bc: DUP4 000017bd: DUP2 000017be: MSTORE 000017bf: PUSH1 0x20 000017c1: ADD 000017c2: DUP3 000017c3: DUP2 000017c4: MSTORE 000017c5: PUSH1 0x20 000017c7: ADD 000017c8: SWAP3 000017c9: POP 000017ca: POP 000017cb: POP 000017cc: PUSH1 0x40 000017ce: MLOAD 000017cf: DUP1 000017d0: SWAP2 000017d1: SUB 000017d2: SWAP1 000017d3: LOG3 000017d4: POP 000017d5: POP 000017d6: POP 000017d7: POP 000017d8: POP 000017d9: JUMP 000017da: JUMPDEST 000017db: PUSH1 0x01 000017dd: PUSH1 0x01 000017df: PUSH1 0xa0 000017e1: SHL 000017e2: SUB 000017e3: SWAP2 000017e4: DUP3 000017e5: AND 000017e6: PUSH1 0x00 000017e8: SWAP1 000017e9: DUP2 000017ea: MSTORE 000017eb: PUSH1 0x35 000017ed: PUSH1 0x20 000017ef: SWAP1 000017f0: DUP2 000017f1: MSTORE 000017f2: PUSH1 0x40 000017f4: DUP1 000017f5: DUP4 000017f6: KECCAK256 000017f7: SWAP4 000017f8: SWAP1 000017f9: SWAP5 000017fa: AND 000017fb: DUP3 000017fc: MSTORE 000017fd: SWAP2 000017fe: SWAP1 000017ff: SWAP2 00001800: MSTORE 00001801: KECCAK256 00001802: SLOAD 00001803: SWAP1 00001804: JUMP 00001805: JUMPDEST 00001806: PUSH1 0x3c 00001808: SLOAD 00001809: PUSH1 0x01 0000180b: PUSH1 0x01 0000180d: PUSH1 0xa0 0000180f: SHL 00001810: SUB 00001811: AND 00001812: PUSH2 0x1819 00001815: PUSH2 0x18d6 00001818: JUMP 00001819: JUMPDEST 0000181a: PUSH1 0x01 0000181c: PUSH1 0x01 0000181e: PUSH1 0xa0 00001820: SHL 00001821: SUB 00001822: AND 00001823: EQ 00001824: PUSH1 0x40 00001826: MLOAD 00001827: DUP1 00001828: PUSH1 0x40 0000182a: ADD 0000182b: PUSH1 0x40 0000182d: MSTORE 0000182e: DUP1 0000182f: PUSH1 0x02 00001831: DUP2 00001832: MSTORE 00001833: PUSH1 0x20 00001835: ADD 00001836: PUSH2 0x3239 00001839: PUSH1 0xf0 0000183b: SHL 0000183c: DUP2 0000183d: MSTORE 0000183e: POP 0000183f: SWAP1 00001840: PUSH2 0x188a 00001843: JUMPI 00001844: PUSH1 0x40 00001846: MLOAD 00001847: PUSH3 0x461bcd 0000184b: PUSH1 0xe5 0000184d: SHL 0000184e: DUP2 0000184f: MSTORE 00001850: PUSH1 0x20 00001852: PUSH1 0x04 00001854: DUP3 00001855: ADD 00001856: DUP2 00001857: DUP2 00001858: MSTORE 00001859: DUP4 0000185a: MLOAD 0000185b: PUSH1 0x24 0000185d: DUP5 0000185e: ADD 0000185f: MSTORE 00001860: DUP4 00001861: MLOAD 00001862: SWAP1 00001863: SWAP3 00001864: DUP4 00001865: SWAP3 00001866: PUSH1 0x44 00001868: SWAP1 00001869: SWAP2 0000186a: ADD 0000186b: SWAP2 0000186c: SWAP1 0000186d: DUP6 0000186e: ADD 0000186f: SWAP1 00001870: DUP1 00001871: DUP4 00001872: DUP4 00001873: PUSH1 0x00 00001875: DUP4 00001876: ISZERO 00001877: PUSH2 0x08b6 0000187a: JUMPI 0000187b: DUP2 0000187c: DUP2 0000187d: ADD 0000187e: MLOAD 0000187f: DUP4 00001880: DUP3 00001881: ADD 00001882: MSTORE 00001883: PUSH1 0x20 00001885: ADD 00001886: PUSH2 0x089e 00001889: JUMP 0000188a: JUMPDEST 0000188b: POP 0000188c: PUSH2 0x1898 0000188f: DUP4 00001890: DUP4 00001891: DUP4 00001892: PUSH1 0x00 00001894: PUSH2 0x1f11 00001897: JUMP 00001898: JUMPDEST 00001899: DUP2 0000189a: PUSH1 0x01 0000189c: PUSH1 0x01 0000189e: PUSH1 0xa0 000018a0: SHL 000018a1: SUB 000018a2: AND 000018a3: DUP4 000018a4: PUSH1 0x01 000018a6: PUSH1 0x01 000018a8: PUSH1 0xa0 000018aa: SHL 000018ab: SUB 000018ac: AND 000018ad: PUSH1 0x00 000018af: DUP1 000018b0: MLOAD 000018b1: PUSH1 0x20 000018b3: PUSH2 0x26ce 000018b6: DUP4 000018b7: CODECOPY 000018b8: DUP2 000018b9: MLOAD 000018ba: SWAP2 000018bb: MSTORE 000018bc: DUP4 000018bd: PUSH1 0x40 000018bf: MLOAD 000018c0: DUP1 000018c1: DUP3 000018c2: DUP2 000018c3: MSTORE 000018c4: PUSH1 0x20 000018c6: ADD 000018c7: SWAP2 000018c8: POP 000018c9: POP 000018ca: PUSH1 0x40 000018cc: MLOAD 000018cd: DUP1 000018ce: SWAP2 000018cf: SUB 000018d0: SWAP1 000018d1: LOG3 000018d2: POP 000018d3: POP 000018d4: POP 000018d5: JUMP 000018d6: JUMPDEST 000018d7: CALLER 000018d8: SWAP1 000018d9: JUMP 000018da: JUMPDEST 000018db: PUSH1 0x01 000018dd: PUSH1 0x01 000018df: PUSH1 0xa0 000018e1: SHL 000018e2: SUB 000018e3: DUP4 000018e4: AND 000018e5: PUSH2 0x191f 000018e8: JUMPI 000018e9: PUSH1 0x40 000018eb: MLOAD 000018ec: PUSH3 0x461bcd 000018f0: PUSH1 0xe5 000018f2: SHL 000018f3: DUP2 000018f4: MSTORE 000018f5: PUSH1 0x04 000018f7: ADD 000018f8: DUP1 000018f9: DUP1 000018fa: PUSH1 0x20 000018fc: ADD 000018fd: DUP3 000018fe: DUP2 000018ff: SUB 00001900: DUP3 00001901: MSTORE 00001902: PUSH1 0x24 00001904: DUP2 00001905: MSTORE 00001906: PUSH1 0x20 00001908: ADD 00001909: DUP1 0000190a: PUSH2 0x2734 0000190d: PUSH1 0x24 0000190f: SWAP2 00001910: CODECOPY 00001911: PUSH1 0x40 00001913: ADD 00001914: SWAP2 00001915: POP 00001916: POP 00001917: PUSH1 0x40 00001919: MLOAD 0000191a: DUP1 0000191b: SWAP2 0000191c: SUB 0000191d: SWAP1 0000191e: REVERT 0000191f: JUMPDEST 00001920: PUSH1 0x01 00001922: PUSH1 0x01 00001924: PUSH1 0xa0 00001926: SHL 00001927: SUB 00001928: DUP3 00001929: AND 0000192a: PUSH2 0x1964 0000192d: JUMPI 0000192e: PUSH1 0x40 00001930: MLOAD 00001931: PUSH3 0x461bcd 00001935: PUSH1 0xe5 00001937: SHL 00001938: DUP2 00001939: MSTORE 0000193a: PUSH1 0x04 0000193c: ADD 0000193d: DUP1 0000193e: DUP1 0000193f: PUSH1 0x20 00001941: ADD 00001942: DUP3 00001943: DUP2 00001944: SUB 00001945: DUP3 00001946: MSTORE 00001947: PUSH1 0x22 00001949: DUP2 0000194a: MSTORE 0000194b: PUSH1 0x20 0000194d: ADD 0000194e: DUP1 0000194f: PUSH2 0x2630 00001952: PUSH1 0x22 00001954: SWAP2 00001955: CODECOPY 00001956: PUSH1 0x40 00001958: ADD 00001959: SWAP2 0000195a: POP 0000195b: POP 0000195c: PUSH1 0x40 0000195e: MLOAD 0000195f: DUP1 00001960: SWAP2 00001961: SUB 00001962: SWAP1 00001963: REVERT 00001964: JUMPDEST 00001965: PUSH1 0x01 00001967: PUSH1 0x01 00001969: PUSH1 0xa0 0000196b: SHL 0000196c: SUB 0000196d: DUP1 0000196e: DUP5 0000196f: AND 00001970: PUSH1 0x00 00001972: DUP2 00001973: DUP2 00001974: MSTORE 00001975: PUSH1 0x35 00001977: PUSH1 0x20 00001979: SWAP1 0000197a: DUP2 0000197b: MSTORE 0000197c: PUSH1 0x40 0000197e: DUP1 0000197f: DUP4 00001980: KECCAK256 00001981: SWAP5 00001982: DUP8 00001983: AND 00001984: DUP1 00001985: DUP5 00001986: MSTORE 00001987: SWAP5 00001988: DUP3 00001989: MSTORE 0000198a: SWAP2 0000198b: DUP3 0000198c: SWAP1 0000198d: KECCAK256 0000198e: DUP6 0000198f: SWAP1 00001990: SSTORE 00001991: DUP2 00001992: MLOAD 00001993: DUP6 00001994: DUP2 00001995: MSTORE 00001996: SWAP2 00001997: MLOAD 00001998: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 000019b9: SWAP3 000019ba: DUP2 000019bb: SWAP1 000019bc: SUB 000019bd: SWAP1 000019be: SWAP2 000019bf: ADD 000019c0: SWAP1 000019c1: LOG3 000019c2: POP 000019c3: POP 000019c4: POP 000019c5: JUMP 000019c6: JUMPDEST 000019c7: PUSH1 0x01 000019c9: PUSH1 0x01 000019cb: PUSH1 0xa0 000019cd: SHL 000019ce: SUB 000019cf: AND 000019d0: PUSH1 0x00 000019d2: SWAP1 000019d3: DUP2 000019d4: MSTORE 000019d5: PUSH1 0x34 000019d7: PUSH1 0x20 000019d9: MSTORE 000019da: PUSH1 0x40 000019dc: SWAP1 000019dd: KECCAK256 000019de: SLOAD 000019df: SWAP1 000019e0: JUMP 000019e1: JUMPDEST 000019e2: PUSH1 0x36 000019e4: SLOAD 000019e5: SWAP1 000019e6: JUMP 000019e7: JUMPDEST 000019e8: PUSH1 0x40 000019ea: DUP1 000019eb: MLOAD 000019ec: DUP1 000019ed: DUP3 000019ee: ADD 000019ef: SWAP1 000019f0: SWAP2 000019f1: MSTORE 000019f2: PUSH1 0x02 000019f4: DUP2 000019f5: MSTORE 000019f6: PUSH2 0x0353 000019f9: PUSH1 0xf4 000019fb: SHL 000019fc: PUSH1 0x20 000019fe: DUP3 000019ff: ADD 00001a00: MSTORE 00001a01: PUSH1 0x00 00001a03: SWAP1 00001a04: DUP3 00001a05: PUSH2 0x1a4f 00001a08: JUMPI 00001a09: PUSH1 0x40 00001a0b: MLOAD 00001a0c: PUSH3 0x461bcd 00001a10: PUSH1 0xe5 00001a12: SHL 00001a13: DUP2 00001a14: MSTORE 00001a15: PUSH1 0x20 00001a17: PUSH1 0x04 00001a19: DUP3 00001a1a: ADD 00001a1b: DUP2 00001a1c: DUP2 00001a1d: MSTORE 00001a1e: DUP4 00001a1f: MLOAD 00001a20: PUSH1 0x24 00001a22: DUP5 00001a23: ADD 00001a24: MSTORE 00001a25: DUP4 00001a26: MLOAD 00001a27: SWAP1 00001a28: SWAP3 00001a29: DUP4 00001a2a: SWAP3 00001a2b: PUSH1 0x44 00001a2d: SWAP1 00001a2e: SWAP2 00001a2f: ADD 00001a30: SWAP2 00001a31: SWAP1 00001a32: DUP6 00001a33: ADD 00001a34: SWAP1 00001a35: DUP1 00001a36: DUP4 00001a37: DUP4 00001a38: PUSH1 0x00 00001a3a: DUP4 00001a3b: ISZERO 00001a3c: PUSH2 0x08b6 00001a3f: JUMPI 00001a40: DUP2 00001a41: DUP2 00001a42: ADD 00001a43: MLOAD 00001a44: DUP4 00001a45: DUP3 00001a46: ADD 00001a47: MSTORE 00001a48: PUSH1 0x20 00001a4a: ADD 00001a4b: PUSH2 0x089e 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: POP 00001a51: PUSH1 0x40 00001a53: DUP1 00001a54: MLOAD 00001a55: DUP1 00001a56: DUP3 00001a57: ADD 00001a58: SWAP1 00001a59: SWAP2 00001a5a: MSTORE 00001a5b: PUSH1 0x02 00001a5d: DUP1 00001a5e: DUP3 00001a5f: MSTORE 00001a60: PUSH2 0x0687 00001a63: PUSH1 0xf3 00001a65: SHL 00001a66: PUSH1 0x20 00001a68: DUP4 00001a69: ADD 00001a6a: MSTORE 00001a6b: DUP4 00001a6c: DIV 00001a6d: SWAP1 00001a6e: PUSH12 0x033b2e3c9fd0803ce8000000 00001a7b: DUP3 00001a7c: NOT 00001a7d: DIV 00001a7e: DUP6 00001a7f: GT 00001a80: ISZERO 00001a81: PUSH2 0x1acb 00001a84: JUMPI 00001a85: PUSH1 0x40 00001a87: MLOAD 00001a88: PUSH3 0x461bcd 00001a8c: PUSH1 0xe5 00001a8e: SHL 00001a8f: DUP2 00001a90: MSTORE 00001a91: PUSH1 0x20 00001a93: PUSH1 0x04 00001a95: DUP3 00001a96: ADD 00001a97: DUP2 00001a98: DUP2 00001a99: MSTORE 00001a9a: DUP4 00001a9b: MLOAD 00001a9c: PUSH1 0x24 00001a9e: DUP5 00001a9f: ADD 00001aa0: MSTORE 00001aa1: DUP4 00001aa2: MLOAD 00001aa3: SWAP1 00001aa4: SWAP3 00001aa5: DUP4 00001aa6: SWAP3 00001aa7: PUSH1 0x44 00001aa9: SWAP1 00001aaa: SWAP2 00001aab: ADD 00001aac: SWAP2 00001aad: SWAP1 00001aae: DUP6 00001aaf: ADD 00001ab0: SWAP1 00001ab1: DUP1 00001ab2: DUP4 00001ab3: DUP4 00001ab4: PUSH1 0x00 00001ab6: DUP4 00001ab7: ISZERO 00001ab8: PUSH2 0x08b6 00001abb: JUMPI 00001abc: DUP2 00001abd: DUP2 00001abe: ADD 00001abf: MLOAD 00001ac0: DUP4 00001ac1: DUP3 00001ac2: ADD 00001ac3: MSTORE 00001ac4: PUSH1 0x20 00001ac6: ADD 00001ac7: PUSH2 0x089e 00001aca: JUMP 00001acb: JUMPDEST 00001acc: POP 00001acd: DUP3 00001ace: DUP2 00001acf: PUSH12 0x033b2e3c9fd0803ce8000000 00001adc: DUP7 00001add: MUL 00001ade: ADD 00001adf: DUP2 00001ae0: PUSH2 0x1ae5 00001ae3: JUMPI 00001ae4: INVALID 00001ae5: JUMPDEST 00001ae6: DIV 00001ae7: SWAP5 00001ae8: SWAP4 00001ae9: POP 00001aea: POP 00001aeb: POP 00001aec: POP 00001aed: JUMP 00001aee: JUMPDEST 00001aef: PUSH1 0x01 00001af1: PUSH1 0x01 00001af3: PUSH1 0xa0 00001af5: SHL 00001af6: SUB 00001af7: DUP3 00001af8: AND 00001af9: PUSH2 0x1b49 00001afc: JUMPI 00001afd: PUSH1 0x40 00001aff: DUP1 00001b00: MLOAD 00001b01: PUSH3 0x461bcd 00001b05: PUSH1 0xe5 00001b07: SHL 00001b08: DUP2 00001b09: MSTORE 00001b0a: PUSH1 0x20 00001b0c: PUSH1 0x04 00001b0e: DUP3 00001b0f: ADD 00001b10: MSTORE 00001b11: PUSH1 0x1f 00001b13: PUSH1 0x24 00001b15: DUP3 00001b16: ADD 00001b17: MSTORE 00001b18: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300 00001b39: PUSH1 0x44 00001b3b: DUP3 00001b3c: ADD 00001b3d: MSTORE 00001b3e: SWAP1 00001b3f: MLOAD 00001b40: SWAP1 00001b41: DUP2 00001b42: SWAP1 00001b43: SUB 00001b44: PUSH1 0x64 00001b46: ADD 00001b47: SWAP1 00001b48: REVERT 00001b49: JUMPDEST 00001b4a: PUSH2 0x1b55 00001b4d: PUSH1 0x00 00001b4f: DUP4 00001b50: DUP4 00001b51: PUSH2 0x1289 00001b54: JUMP 00001b55: JUMPDEST 00001b56: PUSH1 0x36 00001b58: SLOAD 00001b59: PUSH2 0x1b62 00001b5c: DUP2 00001b5d: DUP4 00001b5e: PUSH2 0x1dab 00001b61: JUMP 00001b62: JUMPDEST 00001b63: PUSH1 0x36 00001b65: SSTORE 00001b66: PUSH1 0x01 00001b68: PUSH1 0x01 00001b6a: PUSH1 0xa0 00001b6c: SHL 00001b6d: SUB 00001b6e: DUP4 00001b6f: AND 00001b70: PUSH1 0x00 00001b72: SWAP1 00001b73: DUP2 00001b74: MSTORE 00001b75: PUSH1 0x34 00001b77: PUSH1 0x20 00001b79: MSTORE 00001b7a: PUSH1 0x40 00001b7c: SWAP1 00001b7d: KECCAK256 00001b7e: SLOAD 00001b7f: PUSH2 0x1b88 00001b82: DUP2 00001b83: DUP5 00001b84: PUSH2 0x1dab 00001b87: JUMP 00001b88: JUMPDEST 00001b89: PUSH1 0x01 00001b8b: PUSH1 0x01 00001b8d: PUSH1 0xa0 00001b8f: SHL 00001b90: SUB 00001b91: DUP6 00001b92: AND 00001b93: PUSH1 0x00 00001b95: SWAP1 00001b96: DUP2 00001b97: MSTORE 00001b98: PUSH1 0x34 00001b9a: PUSH1 0x20 00001b9c: MSTORE 00001b9d: PUSH1 0x40 00001b9f: DUP2 00001ba0: KECCAK256 00001ba1: SWAP2 00001ba2: SWAP1 00001ba3: SWAP2 00001ba4: SSTORE 00001ba5: PUSH2 0x1bac 00001ba8: PUSH2 0x1e5e 00001bab: JUMP 00001bac: JUMPDEST 00001bad: PUSH1 0x01 00001baf: PUSH1 0x01 00001bb1: PUSH1 0xa0 00001bb3: SHL 00001bb4: SUB 00001bb5: AND 00001bb6: EQ 00001bb7: PUSH2 0x1c39 00001bba: JUMPI 00001bbb: PUSH2 0x1bc2 00001bbe: PUSH2 0x1e5e 00001bc1: JUMP 00001bc2: JUMPDEST 00001bc3: PUSH1 0x01 00001bc5: PUSH1 0x01 00001bc7: PUSH1 0xa0 00001bc9: SHL 00001bca: SUB 00001bcb: AND 00001bcc: PUSH4 0x31873e2e 00001bd1: DUP6 00001bd2: DUP5 00001bd3: DUP5 00001bd4: PUSH1 0x40 00001bd6: MLOAD 00001bd7: DUP5 00001bd8: PUSH4 0xffffffff 00001bdd: AND 00001bde: PUSH1 0xe0 00001be0: SHL 00001be1: DUP2 00001be2: MSTORE 00001be3: PUSH1 0x04 00001be5: ADD 00001be6: DUP1 00001be7: DUP5 00001be8: PUSH1 0x01 00001bea: PUSH1 0x01 00001bec: PUSH1 0xa0 00001bee: SHL 00001bef: SUB 00001bf0: AND 00001bf1: DUP2 00001bf2: MSTORE 00001bf3: PUSH1 0x20 00001bf5: ADD 00001bf6: DUP4 00001bf7: DUP2 00001bf8: MSTORE 00001bf9: PUSH1 0x20 00001bfb: ADD 00001bfc: DUP3 00001bfd: DUP2 00001bfe: MSTORE 00001bff: PUSH1 0x20 00001c01: ADD 00001c02: SWAP4 00001c03: POP 00001c04: POP 00001c05: POP 00001c06: POP 00001c07: PUSH1 0x00 00001c09: PUSH1 0x40 00001c0b: MLOAD 00001c0c: DUP1 00001c0d: DUP4 00001c0e: SUB 00001c0f: DUP2 00001c10: PUSH1 0x00 00001c12: DUP8 00001c13: DUP1 00001c14: EXTCODESIZE 00001c15: ISZERO 00001c16: DUP1 00001c17: ISZERO 00001c18: PUSH2 0x1c20 00001c1b: JUMPI 00001c1c: PUSH1 0x00 00001c1e: DUP1 00001c1f: REVERT 00001c20: JUMPDEST 00001c21: POP 00001c22: GAS 00001c23: CALL 00001c24: ISZERO 00001c25: DUP1 00001c26: ISZERO 00001c27: PUSH2 0x1c34 00001c2a: JUMPI 00001c2b: RETURNDATASIZE 00001c2c: PUSH1 0x00 00001c2e: DUP1 00001c2f: RETURNDATACOPY 00001c30: RETURNDATASIZE 00001c31: PUSH1 0x00 00001c33: REVERT 00001c34: JUMPDEST 00001c35: POP 00001c36: POP 00001c37: POP 00001c38: POP 00001c39: JUMPDEST 00001c3a: POP 00001c3b: POP 00001c3c: POP 00001c3d: POP 00001c3e: JUMP 00001c3f: JUMPDEST 00001c40: PUSH1 0x00 00001c42: DUP3 00001c43: ISZERO 00001c44: DUP1 00001c45: PUSH2 0x1c4c 00001c48: JUMPI 00001c49: POP 00001c4a: DUP2 00001c4b: ISZERO 00001c4c: JUMPDEST 00001c4d: ISZERO 00001c4e: PUSH2 0x1c59 00001c51: JUMPI 00001c52: POP 00001c53: PUSH1 0x00 00001c55: PUSH2 0x0804 00001c58: JUMP 00001c59: JUMPDEST 00001c5a: DUP2 00001c5b: PUSH12 0x019d971e4fe8401e74000000 00001c68: NOT 00001c69: DUP2 00001c6a: PUSH2 0x1c6f 00001c6d: JUMPI 00001c6e: INVALID 00001c6f: JUMPDEST 00001c70: DIV 00001c71: DUP4 00001c72: GT 00001c73: ISZERO 00001c74: PUSH1 0x40 00001c76: MLOAD 00001c77: DUP1 00001c78: PUSH1 0x40 00001c7a: ADD 00001c7b: PUSH1 0x40 00001c7d: MSTORE 00001c7e: DUP1 00001c7f: PUSH1 0x02 00001c81: DUP2 00001c82: MSTORE 00001c83: PUSH1 0x20 00001c85: ADD 00001c86: PUSH2 0x0687 00001c89: PUSH1 0xf3 00001c8b: SHL 00001c8c: DUP2 00001c8d: MSTORE 00001c8e: POP 00001c8f: SWAP1 00001c90: PUSH2 0x1cda 00001c93: JUMPI 00001c94: PUSH1 0x40 00001c96: MLOAD 00001c97: PUSH3 0x461bcd 00001c9b: PUSH1 0xe5 00001c9d: SHL 00001c9e: DUP2 00001c9f: MSTORE 00001ca0: PUSH1 0x20 00001ca2: PUSH1 0x04 00001ca4: DUP3 00001ca5: ADD 00001ca6: DUP2 00001ca7: DUP2 00001ca8: MSTORE 00001ca9: DUP4 00001caa: MLOAD 00001cab: PUSH1 0x24 00001cad: DUP5 00001cae: ADD 00001caf: MSTORE 00001cb0: DUP4 00001cb1: MLOAD 00001cb2: SWAP1 00001cb3: SWAP3 00001cb4: DUP4 00001cb5: SWAP3 00001cb6: PUSH1 0x44 00001cb8: SWAP1 00001cb9: SWAP2 00001cba: ADD 00001cbb: SWAP2 00001cbc: SWAP1 00001cbd: DUP6 00001cbe: ADD 00001cbf: SWAP1 00001cc0: DUP1 00001cc1: DUP4 00001cc2: DUP4 00001cc3: PUSH1 0x00 00001cc5: DUP4 00001cc6: ISZERO 00001cc7: PUSH2 0x08b6 00001cca: JUMPI 00001ccb: DUP2 00001ccc: DUP2 00001ccd: ADD 00001cce: MLOAD 00001ccf: DUP4 00001cd0: DUP3 00001cd1: ADD 00001cd2: MSTORE 00001cd3: PUSH1 0x20 00001cd5: ADD 00001cd6: PUSH2 0x089e 00001cd9: JUMP 00001cda: JUMPDEST 00001cdb: POP 00001cdc: POP 00001cdd: PUSH12 0x033b2e3c9fd0803ce8000000 00001cea: SWAP2 00001ceb: MUL 00001cec: PUSH12 0x019d971e4fe8401e74000000 00001cf9: ADD 00001cfa: DIV 00001cfb: SWAP1 00001cfc: JUMP 00001cfd: JUMPDEST 00001cfe: PUSH1 0x01 00001d00: SWAP1 00001d01: JUMP 00001d02: JUMPDEST 00001d03: ADDRESS 00001d04: EXTCODESIZE 00001d05: ISZERO 00001d06: SWAP1 00001d07: JUMP 00001d08: JUMPDEST 00001d09: DUP1 00001d0a: MLOAD 00001d0b: PUSH2 0x1200 00001d0e: SWAP1 00001d0f: PUSH1 0x37 00001d11: SWAP1 00001d12: PUSH1 0x20 00001d14: DUP5 00001d15: ADD 00001d16: SWAP1 00001d17: PUSH2 0x2557 00001d1a: JUMP 00001d1b: JUMPDEST 00001d1c: DUP1 00001d1d: MLOAD 00001d1e: PUSH2 0x1200 00001d21: SWAP1 00001d22: PUSH1 0x38 00001d24: SWAP1 00001d25: PUSH1 0x20 00001d27: DUP5 00001d28: ADD 00001d29: SWAP1 00001d2a: PUSH2 0x2557 00001d2d: JUMP 00001d2e: JUMPDEST 00001d2f: PUSH1 0x39 00001d31: DUP1 00001d32: SLOAD 00001d33: PUSH1 0xff 00001d35: NOT 00001d36: AND 00001d37: PUSH1 0xff 00001d39: SWAP3 00001d3a: SWAP1 00001d3b: SWAP3 00001d3c: AND 00001d3d: SWAP2 00001d3e: SWAP1 00001d3f: SWAP2 00001d40: OR 00001d41: SWAP1 00001d42: SSTORE 00001d43: JUMP 00001d44: JUMPDEST 00001d45: PUSH2 0x1289 00001d48: DUP4 00001d49: DUP4 00001d4a: DUP4 00001d4b: PUSH1 0x01 00001d4d: PUSH2 0x1f11 00001d50: JUMP 00001d51: JUMPDEST 00001d52: PUSH1 0x00 00001d54: DUP2 00001d55: DUP5 00001d56: DUP5 00001d57: GT 00001d58: ISZERO 00001d59: PUSH2 0x1da3 00001d5c: JUMPI 00001d5d: PUSH1 0x40 00001d5f: MLOAD 00001d60: PUSH3 0x461bcd 00001d64: PUSH1 0xe5 00001d66: SHL 00001d67: DUP2 00001d68: MSTORE 00001d69: PUSH1 0x20 00001d6b: PUSH1 0x04 00001d6d: DUP3 00001d6e: ADD 00001d6f: DUP2 00001d70: DUP2 00001d71: MSTORE 00001d72: DUP4 00001d73: MLOAD 00001d74: PUSH1 0x24 00001d76: DUP5 00001d77: ADD 00001d78: MSTORE 00001d79: DUP4 00001d7a: MLOAD 00001d7b: SWAP1 00001d7c: SWAP3 00001d7d: DUP4 00001d7e: SWAP3 00001d7f: PUSH1 0x44 00001d81: SWAP1 00001d82: SWAP2 00001d83: ADD 00001d84: SWAP2 00001d85: SWAP1 00001d86: DUP6 00001d87: ADD 00001d88: SWAP1 00001d89: DUP1 00001d8a: DUP4 00001d8b: DUP4 00001d8c: PUSH1 0x00 00001d8e: DUP4 00001d8f: ISZERO 00001d90: PUSH2 0x08b6 00001d93: JUMPI 00001d94: DUP2 00001d95: DUP2 00001d96: ADD 00001d97: MLOAD 00001d98: DUP4 00001d99: DUP3 00001d9a: ADD 00001d9b: MSTORE 00001d9c: PUSH1 0x20 00001d9e: ADD 00001d9f: PUSH2 0x089e 00001da2: JUMP 00001da3: JUMPDEST 00001da4: POP 00001da5: POP 00001da6: POP 00001da7: SWAP1 00001da8: SUB 00001da9: SWAP1 00001daa: JUMP 00001dab: JUMPDEST 00001dac: PUSH1 0x00 00001dae: DUP3 00001daf: DUP3 00001db0: ADD 00001db1: DUP4 00001db2: DUP2 00001db3: LT 00001db4: ISZERO 00001db5: PUSH2 0x1e05 00001db8: JUMPI 00001db9: PUSH1 0x40 00001dbb: DUP1 00001dbc: MLOAD 00001dbd: PUSH3 0x461bcd 00001dc1: PUSH1 0xe5 00001dc3: SHL 00001dc4: DUP2 00001dc5: MSTORE 00001dc6: PUSH1 0x20 00001dc8: PUSH1 0x04 00001dca: DUP3 00001dcb: ADD 00001dcc: MSTORE 00001dcd: PUSH1 0x1b 00001dcf: PUSH1 0x24 00001dd1: DUP3 00001dd2: ADD 00001dd3: MSTORE 00001dd4: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001df5: PUSH1 0x44 00001df7: DUP3 00001df8: ADD 00001df9: MSTORE 00001dfa: SWAP1 00001dfb: MLOAD 00001dfc: SWAP1 00001dfd: DUP2 00001dfe: SWAP1 00001dff: SUB 00001e00: PUSH1 0x64 00001e02: ADD 00001e03: SWAP1 00001e04: REVERT 00001e05: JUMPDEST 00001e06: SWAP4 00001e07: SWAP3 00001e08: POP 00001e09: POP 00001e0a: POP 00001e0b: JUMP 00001e0c: JUMPDEST 00001e0d: PUSH1 0x40 00001e0f: DUP1 00001e10: MLOAD 00001e11: PUSH1 0x01 00001e13: PUSH1 0x01 00001e15: PUSH1 0xa0 00001e17: SHL 00001e18: SUB 00001e19: DUP5 00001e1a: AND 00001e1b: PUSH1 0x24 00001e1d: DUP3 00001e1e: ADD 00001e1f: MSTORE 00001e20: PUSH1 0x44 00001e22: DUP1 00001e23: DUP3 00001e24: ADD 00001e25: DUP5 00001e26: SWAP1 00001e27: MSTORE 00001e28: DUP3 00001e29: MLOAD 00001e2a: DUP1 00001e2b: DUP4 00001e2c: SUB 00001e2d: SWAP1 00001e2e: SWAP2 00001e2f: ADD 00001e30: DUP2 00001e31: MSTORE 00001e32: PUSH1 0x64 00001e34: SWAP1 00001e35: SWAP2 00001e36: ADD 00001e37: SWAP1 00001e38: SWAP2 00001e39: MSTORE 00001e3a: PUSH1 0x20 00001e3c: DUP2 00001e3d: ADD 00001e3e: DUP1 00001e3f: MLOAD 00001e40: PUSH1 0x01 00001e42: PUSH1 0x01 00001e44: PUSH1 0xe0 00001e46: SHL 00001e47: SUB 00001e48: AND 00001e49: PUSH4 0xa9059cbb 00001e4e: PUSH1 0xe0 00001e50: SHL 00001e51: OR 00001e52: SWAP1 00001e53: MSTORE 00001e54: PUSH2 0x1289 00001e57: SWAP1 00001e58: DUP5 00001e59: SWAP1 00001e5a: PUSH2 0x20ba 00001e5d: JUMP 00001e5e: JUMPDEST 00001e5f: PUSH1 0x3f 00001e61: SLOAD 00001e62: PUSH1 0x01 00001e64: PUSH1 0x01 00001e66: PUSH1 0xa0 00001e68: SHL 00001e69: SUB 00001e6a: AND 00001e6b: SWAP1 00001e6c: JUMP 00001e6d: JUMPDEST 00001e6e: PUSH1 0x01 00001e70: PUSH1 0x01 00001e72: PUSH1 0xa0 00001e74: SHL 00001e75: SUB 00001e76: DUP3 00001e77: AND 00001e78: PUSH2 0x1eb2 00001e7b: JUMPI 00001e7c: PUSH1 0x40 00001e7e: MLOAD 00001e7f: PUSH3 0x461bcd 00001e83: PUSH1 0xe5 00001e85: SHL 00001e86: DUP2 00001e87: MSTORE 00001e88: PUSH1 0x04 00001e8a: ADD 00001e8b: DUP1 00001e8c: DUP1 00001e8d: PUSH1 0x20 00001e8f: ADD 00001e90: DUP3 00001e91: DUP2 00001e92: SUB 00001e93: DUP3 00001e94: MSTORE 00001e95: PUSH1 0x21 00001e97: DUP2 00001e98: MSTORE 00001e99: PUSH1 0x20 00001e9b: ADD 00001e9c: DUP1 00001e9d: PUSH2 0x26ee 00001ea0: PUSH1 0x21 00001ea2: SWAP2 00001ea3: CODECOPY 00001ea4: PUSH1 0x40 00001ea6: ADD 00001ea7: SWAP2 00001ea8: POP 00001ea9: POP 00001eaa: PUSH1 0x40 00001eac: MLOAD 00001ead: DUP1 00001eae: SWAP2 00001eaf: SUB 00001eb0: SWAP1 00001eb1: REVERT 00001eb2: JUMPDEST 00001eb3: PUSH2 0x1ebe 00001eb6: DUP3 00001eb7: PUSH1 0x00 00001eb9: DUP4 00001eba: PUSH2 0x1289 00001ebd: JUMP 00001ebe: JUMPDEST 00001ebf: PUSH1 0x36 00001ec1: SLOAD 00001ec2: PUSH2 0x1ecb 00001ec5: DUP2 00001ec6: DUP4 00001ec7: PUSH2 0x2272 00001eca: JUMP 00001ecb: JUMPDEST 00001ecc: PUSH1 0x36 00001ece: SSTORE 00001ecf: PUSH1 0x01 00001ed1: PUSH1 0x01 00001ed3: PUSH1 0xa0 00001ed5: SHL 00001ed6: SUB 00001ed7: DUP4 00001ed8: AND 00001ed9: PUSH1 0x00 00001edb: SWAP1 00001edc: DUP2 00001edd: MSTORE 00001ede: PUSH1 0x34 00001ee0: PUSH1 0x20 00001ee2: SWAP1 00001ee3: DUP2 00001ee4: MSTORE 00001ee5: PUSH1 0x40 00001ee7: SWAP2 00001ee8: DUP3 00001ee9: SWAP1 00001eea: KECCAK256 00001eeb: SLOAD 00001eec: DUP3 00001eed: MLOAD 00001eee: PUSH1 0x60 00001ef0: DUP2 00001ef1: ADD 00001ef2: SWAP1 00001ef3: SWAP4 00001ef4: MSTORE 00001ef5: PUSH1 0x22 00001ef7: DUP1 00001ef8: DUP5 00001ef9: MSTORE 00001efa: SWAP1 00001efb: SWAP3 00001efc: PUSH2 0x1b88 00001eff: SWAP3 00001f00: DUP7 00001f01: SWAP3 00001f02: SWAP1 00001f03: PUSH2 0x260e 00001f06: SWAP1 00001f07: DUP4 00001f08: ADD 00001f09: CODECOPY 00001f0a: DUP4 00001f0b: SWAP2 00001f0c: SWAP1 00001f0d: PUSH2 0x1d51 00001f10: JUMP 00001f11: JUMPDEST 00001f12: PUSH1 0x3e 00001f14: SLOAD 00001f15: PUSH1 0x3c 00001f17: SLOAD 00001f18: PUSH1 0x40 00001f1a: DUP1 00001f1b: MLOAD 00001f1c: PUSH4 0xd15e0053 00001f21: PUSH1 0xe0 00001f23: SHL 00001f24: DUP2 00001f25: MSTORE 00001f26: PUSH1 0x01 00001f28: PUSH1 0x01 00001f2a: PUSH1 0xa0 00001f2c: SHL 00001f2d: SUB 00001f2e: SWAP4 00001f2f: DUP5 00001f30: AND 00001f31: PUSH1 0x04 00001f33: DUP3 00001f34: ADD 00001f35: DUP2 00001f36: SWAP1 00001f37: MSTORE 00001f38: SWAP2 00001f39: MLOAD 00001f3a: SWAP2 00001f3b: SWAP4 00001f3c: SWAP1 00001f3d: SWAP3 00001f3e: AND 00001f3f: SWAP2 00001f40: PUSH1 0x00 00001f42: SWAP2 00001f43: DUP4 00001f44: SWAP2 00001f45: PUSH4 0xd15e0053 00001f4a: SWAP2 00001f4b: PUSH1 0x24 00001f4d: DUP1 00001f4e: DUP4 00001f4f: ADD 00001f50: SWAP3 00001f51: PUSH1 0x20 00001f53: SWAP3 00001f54: SWAP2 00001f55: SWAP1 00001f56: DUP3 00001f57: SWAP1 00001f58: SUB 00001f59: ADD 00001f5a: DUP2 00001f5b: DUP7 00001f5c: DUP1 00001f5d: EXTCODESIZE 00001f5e: ISZERO 00001f5f: DUP1 00001f60: ISZERO 00001f61: PUSH2 0x1f69 00001f64: JUMPI 00001f65: PUSH1 0x00 00001f67: DUP1 00001f68: REVERT 00001f69: JUMPDEST 00001f6a: POP 00001f6b: GAS 00001f6c: STATICCALL 00001f6d: ISZERO 00001f6e: DUP1 00001f6f: ISZERO 00001f70: PUSH2 0x1f7d 00001f73: JUMPI 00001f74: RETURNDATASIZE 00001f75: PUSH1 0x00 00001f77: DUP1 00001f78: RETURNDATACOPY 00001f79: RETURNDATASIZE 00001f7a: PUSH1 0x00 00001f7c: REVERT 00001f7d: JUMPDEST 00001f7e: POP 00001f7f: POP 00001f80: POP 00001f81: POP 00001f82: PUSH1 0x40 00001f84: MLOAD 00001f85: RETURNDATASIZE 00001f86: PUSH1 0x20 00001f88: DUP2 00001f89: LT 00001f8a: ISZERO 00001f8b: PUSH2 0x1f93 00001f8e: JUMPI 00001f8f: PUSH1 0x00 00001f91: DUP1 00001f92: REVERT 00001f93: JUMPDEST 00001f94: POP 00001f95: MLOAD 00001f96: SWAP1 00001f97: POP 00001f98: PUSH1 0x00 00001f9a: PUSH2 0x1fa6 00001f9d: DUP3 00001f9e: PUSH2 0x109c 00001fa1: DUP11 00001fa2: PUSH2 0x19c6 00001fa5: JUMP 00001fa6: JUMPDEST 00001fa7: SWAP1 00001fa8: POP 00001fa9: PUSH1 0x00 00001fab: PUSH2 0x1fb7 00001fae: DUP4 00001faf: PUSH2 0x109c 00001fb2: DUP11 00001fb3: PUSH2 0x19c6 00001fb6: JUMP 00001fb7: JUMPDEST 00001fb8: SWAP1 00001fb9: POP 00001fba: PUSH2 0x1fcd 00001fbd: DUP10 00001fbe: DUP10 00001fbf: PUSH2 0x1fc8 00001fc2: DUP11 00001fc3: DUP8 00001fc4: PUSH2 0x19e7 00001fc7: JUMP 00001fc8: JUMPDEST 00001fc9: PUSH2 0x22b4 00001fcc: JUMP 00001fcd: JUMPDEST 00001fce: DUP6 00001fcf: ISZERO 00001fd0: PUSH2 0x205c 00001fd3: JUMPI 00001fd4: PUSH1 0x40 00001fd6: DUP1 00001fd7: MLOAD 00001fd8: PUSH4 0xd5ed3933 00001fdd: PUSH1 0xe0 00001fdf: SHL 00001fe0: DUP2 00001fe1: MSTORE 00001fe2: PUSH1 0x01 00001fe4: PUSH1 0x01 00001fe6: PUSH1 0xa0 00001fe8: SHL 00001fe9: SUB 00001fea: DUP8 00001feb: DUP2 00001fec: AND 00001fed: PUSH1 0x04 00001fef: DUP4 00001ff0: ADD 00001ff1: MSTORE 00001ff2: DUP12 00001ff3: DUP2 00001ff4: AND 00001ff5: PUSH1 0x24 00001ff7: DUP4 00001ff8: ADD 00001ff9: MSTORE 00001ffa: DUP11 00001ffb: DUP2 00001ffc: AND 00001ffd: PUSH1 0x44 00001fff: DUP4 00002000: ADD 00002001: MSTORE 00002002: PUSH1 0x64 00002004: DUP3 00002005: ADD 00002006: DUP11 00002007: SWAP1 00002008: MSTORE 00002009: PUSH1 0x84 0000200b: DUP3 0000200c: ADD 0000200d: DUP6 0000200e: SWAP1 0000200f: MSTORE 00002010: PUSH1 0xa4 00002012: DUP3 00002013: ADD 00002014: DUP5 00002015: SWAP1 00002016: MSTORE 00002017: SWAP2 00002018: MLOAD 00002019: SWAP2 0000201a: DUP7 0000201b: AND 0000201c: SWAP2 0000201d: PUSH4 0xd5ed3933 00002022: SWAP2 00002023: PUSH1 0xc4 00002025: DUP1 00002026: DUP3 00002027: ADD 00002028: SWAP3 00002029: PUSH1 0x00 0000202b: SWAP3 0000202c: SWAP1 0000202d: SWAP2 0000202e: SWAP1 0000202f: DUP3 00002030: SWAP1 00002031: SUB 00002032: ADD 00002033: DUP2 00002034: DUP4 00002035: DUP8 00002036: DUP1 00002037: EXTCODESIZE 00002038: ISZERO 00002039: DUP1 0000203a: ISZERO 0000203b: PUSH2 0x2043 0000203e: JUMPI 0000203f: PUSH1 0x00 00002041: DUP1 00002042: REVERT 00002043: JUMPDEST 00002044: POP 00002045: GAS 00002046: CALL 00002047: ISZERO 00002048: DUP1 00002049: ISZERO 0000204a: PUSH2 0x2057 0000204d: JUMPI 0000204e: RETURNDATASIZE 0000204f: PUSH1 0x00 00002051: DUP1 00002052: RETURNDATACOPY 00002053: RETURNDATASIZE 00002054: PUSH1 0x00 00002056: REVERT 00002057: JUMPDEST 00002058: POP 00002059: POP 0000205a: POP 0000205b: POP 0000205c: JUMPDEST 0000205d: DUP8 0000205e: PUSH1 0x01 00002060: PUSH1 0x01 00002062: PUSH1 0xa0 00002064: SHL 00002065: SUB 00002066: AND 00002067: DUP10 00002068: PUSH1 0x01 0000206a: PUSH1 0x01 0000206c: PUSH1 0xa0 0000206e: SHL 0000206f: SUB 00002070: AND 00002071: PUSH32 0x4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda8666 00002092: DUP10 00002093: DUP7 00002094: PUSH1 0x40 00002096: MLOAD 00002097: DUP1 00002098: DUP4 00002099: DUP2 0000209a: MSTORE 0000209b: PUSH1 0x20 0000209d: ADD 0000209e: DUP3 0000209f: DUP2 000020a0: MSTORE 000020a1: PUSH1 0x20 000020a3: ADD 000020a4: SWAP3 000020a5: POP 000020a6: POP 000020a7: POP 000020a8: PUSH1 0x40 000020aa: MLOAD 000020ab: DUP1 000020ac: SWAP2 000020ad: SUB 000020ae: SWAP1 000020af: LOG3 000020b0: POP 000020b1: POP 000020b2: POP 000020b3: POP 000020b4: POP 000020b5: POP 000020b6: POP 000020b7: POP 000020b8: POP 000020b9: JUMP 000020ba: JUMPDEST 000020bb: PUSH2 0x20cc 000020be: DUP3 000020bf: PUSH1 0x01 000020c1: PUSH1 0x01 000020c3: PUSH1 0xa0 000020c5: SHL 000020c6: SUB 000020c7: AND 000020c8: PUSH2 0x251b 000020cb: JUMP 000020cc: JUMPDEST 000020cd: PUSH2 0x211d 000020d0: JUMPI 000020d1: PUSH1 0x40 000020d3: DUP1 000020d4: MLOAD 000020d5: PUSH3 0x461bcd 000020d9: PUSH1 0xe5 000020db: SHL 000020dc: DUP2 000020dd: MSTORE 000020de: PUSH1 0x20 000020e0: PUSH1 0x04 000020e2: DUP3 000020e3: ADD 000020e4: MSTORE 000020e5: PUSH1 0x1f 000020e7: PUSH1 0x24 000020e9: DUP3 000020ea: ADD 000020eb: MSTORE 000020ec: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400 0000210d: PUSH1 0x44 0000210f: DUP3 00002110: ADD 00002111: MSTORE 00002112: SWAP1 00002113: MLOAD 00002114: SWAP1 00002115: DUP2 00002116: SWAP1 00002117: SUB 00002118: PUSH1 0x64 0000211a: ADD 0000211b: SWAP1 0000211c: REVERT 0000211d: JUMPDEST 0000211e: PUSH1 0x00 00002120: PUSH1 0x60 00002122: DUP4 00002123: PUSH1 0x01 00002125: PUSH1 0x01 00002127: PUSH1 0xa0 00002129: SHL 0000212a: SUB 0000212b: AND 0000212c: DUP4 0000212d: PUSH1 0x40 0000212f: MLOAD 00002130: DUP1 00002131: DUP3 00002132: DUP1 00002133: MLOAD 00002134: SWAP1 00002135: PUSH1 0x20 00002137: ADD 00002138: SWAP1 00002139: DUP1 0000213a: DUP4 0000213b: DUP4 0000213c: JUMPDEST 0000213d: PUSH1 0x20 0000213f: DUP4 00002140: LT 00002141: PUSH2 0x215b 00002144: JUMPI 00002145: DUP1 00002146: MLOAD 00002147: DUP3 00002148: MSTORE 00002149: PUSH1 0x1f 0000214b: NOT 0000214c: SWAP1 0000214d: SWAP3 0000214e: ADD 0000214f: SWAP2 00002150: PUSH1 0x20 00002152: SWAP2 00002153: DUP3 00002154: ADD 00002155: SWAP2 00002156: ADD 00002157: PUSH2 0x213c 0000215a: JUMP 0000215b: JUMPDEST 0000215c: PUSH1 0x01 0000215e: DUP4 0000215f: PUSH1 0x20 00002161: SUB 00002162: PUSH2 0x0100 00002165: EXP 00002166: SUB 00002167: DUP1 00002168: NOT 00002169: DUP3 0000216a: MLOAD 0000216b: AND 0000216c: DUP2 0000216d: DUP5 0000216e: MLOAD 0000216f: AND 00002170: DUP1 00002171: DUP3 00002172: OR 00002173: DUP6 00002174: MSTORE 00002175: POP 00002176: POP 00002177: POP 00002178: POP 00002179: POP 0000217a: POP 0000217b: SWAP1 0000217c: POP 0000217d: ADD 0000217e: SWAP2 0000217f: POP 00002180: POP 00002181: PUSH1 0x00 00002183: PUSH1 0x40 00002185: MLOAD 00002186: DUP1 00002187: DUP4 00002188: SUB 00002189: DUP2 0000218a: PUSH1 0x00 0000218c: DUP7 0000218d: GAS 0000218e: CALL 0000218f: SWAP2 00002190: POP 00002191: POP 00002192: RETURNDATASIZE 00002193: DUP1 00002194: PUSH1 0x00 00002196: DUP2 00002197: EQ 00002198: PUSH2 0x21bd 0000219b: JUMPI 0000219c: PUSH1 0x40 0000219e: MLOAD 0000219f: SWAP2 000021a0: POP 000021a1: PUSH1 0x1f 000021a3: NOT 000021a4: PUSH1 0x3f 000021a6: RETURNDATASIZE 000021a7: ADD 000021a8: AND 000021a9: DUP3 000021aa: ADD 000021ab: PUSH1 0x40 000021ad: MSTORE 000021ae: RETURNDATASIZE 000021af: DUP3 000021b0: MSTORE 000021b1: RETURNDATASIZE 000021b2: PUSH1 0x00 000021b4: PUSH1 0x20 000021b6: DUP5 000021b7: ADD 000021b8: RETURNDATACOPY 000021b9: PUSH2 0x21c2 000021bc: JUMP 000021bd: JUMPDEST 000021be: PUSH1 0x60 000021c0: SWAP2 000021c1: POP 000021c2: JUMPDEST 000021c3: POP 000021c4: SWAP2 000021c5: POP 000021c6: SWAP2 000021c7: POP 000021c8: DUP2 000021c9: PUSH2 0x2219 000021cc: JUMPI 000021cd: PUSH1 0x40 000021cf: DUP1 000021d0: MLOAD 000021d1: PUSH3 0x461bcd 000021d5: PUSH1 0xe5 000021d7: SHL 000021d8: DUP2 000021d9: MSTORE 000021da: PUSH1 0x20 000021dc: PUSH1 0x04 000021de: DUP3 000021df: ADD 000021e0: DUP2 000021e1: SWAP1 000021e2: MSTORE 000021e3: PUSH1 0x24 000021e5: DUP3 000021e6: ADD 000021e7: MSTORE 000021e8: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00002209: PUSH1 0x44 0000220b: DUP3 0000220c: ADD 0000220d: MSTORE 0000220e: SWAP1 0000220f: MLOAD 00002210: SWAP1 00002211: DUP2 00002212: SWAP1 00002213: SUB 00002214: PUSH1 0x64 00002216: ADD 00002217: SWAP1 00002218: REVERT 00002219: JUMPDEST 0000221a: DUP1 0000221b: MLOAD 0000221c: ISZERO 0000221d: PUSH2 0x1c39 00002220: JUMPI 00002221: DUP1 00002222: DUP1 00002223: PUSH1 0x20 00002225: ADD 00002226: SWAP1 00002227: MLOAD 00002228: PUSH1 0x20 0000222a: DUP2 0000222b: LT 0000222c: ISZERO 0000222d: PUSH2 0x2235 00002230: JUMPI 00002231: PUSH1 0x00 00002233: DUP1 00002234: REVERT 00002235: JUMPDEST 00002236: POP 00002237: MLOAD 00002238: PUSH2 0x1c39 0000223b: JUMPI 0000223c: PUSH1 0x40 0000223e: MLOAD 0000223f: PUSH3 0x461bcd 00002243: PUSH1 0xe5 00002245: SHL 00002246: DUP2 00002247: MSTORE 00002248: PUSH1 0x04 0000224a: ADD 0000224b: DUP1 0000224c: DUP1 0000224d: PUSH1 0x20 0000224f: ADD 00002250: DUP3 00002251: DUP2 00002252: SUB 00002253: DUP3 00002254: MSTORE 00002255: PUSH1 0x2a 00002257: DUP2 00002258: MSTORE 00002259: PUSH1 0x20 0000225b: ADD 0000225c: DUP1 0000225d: PUSH2 0x2758 00002260: PUSH1 0x2a 00002262: SWAP2 00002263: CODECOPY 00002264: PUSH1 0x40 00002266: ADD 00002267: SWAP2 00002268: POP 00002269: POP 0000226a: PUSH1 0x40 0000226c: MLOAD 0000226d: DUP1 0000226e: SWAP2 0000226f: SUB 00002270: SWAP1 00002271: REVERT 00002272: JUMPDEST 00002273: PUSH1 0x00 00002275: PUSH2 0x1e05 00002278: DUP4 00002279: DUP4 0000227a: PUSH1 0x40 0000227c: MLOAD 0000227d: DUP1 0000227e: PUSH1 0x40 00002280: ADD 00002281: PUSH1 0x40 00002283: MSTORE 00002284: DUP1 00002285: PUSH1 0x1e 00002287: DUP2 00002288: MSTORE 00002289: PUSH1 0x20 0000228b: ADD 0000228c: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 000022ad: DUP2 000022ae: MSTORE 000022af: POP 000022b0: PUSH2 0x1d51 000022b3: JUMP 000022b4: JUMPDEST 000022b5: PUSH1 0x01 000022b7: PUSH1 0x01 000022b9: PUSH1 0xa0 000022bb: SHL 000022bc: SUB 000022bd: DUP4 000022be: AND 000022bf: PUSH2 0x22f9 000022c2: JUMPI 000022c3: PUSH1 0x40 000022c5: MLOAD 000022c6: PUSH3 0x461bcd 000022ca: PUSH1 0xe5 000022cc: SHL 000022cd: DUP2 000022ce: MSTORE 000022cf: PUSH1 0x04 000022d1: ADD 000022d2: DUP1 000022d3: DUP1 000022d4: PUSH1 0x20 000022d6: ADD 000022d7: DUP3 000022d8: DUP2 000022d9: SUB 000022da: DUP3 000022db: MSTORE 000022dc: PUSH1 0x25 000022de: DUP2 000022df: MSTORE 000022e0: PUSH1 0x20 000022e2: ADD 000022e3: DUP1 000022e4: PUSH2 0x270f 000022e7: PUSH1 0x25 000022e9: SWAP2 000022ea: CODECOPY 000022eb: PUSH1 0x40 000022ed: ADD 000022ee: SWAP2 000022ef: POP 000022f0: POP 000022f1: PUSH1 0x40 000022f3: MLOAD 000022f4: DUP1 000022f5: SWAP2 000022f6: SUB 000022f7: SWAP1 000022f8: REVERT 000022f9: JUMPDEST 000022fa: PUSH1 0x01 000022fc: PUSH1 0x01 000022fe: PUSH1 0xa0 00002300: SHL 00002301: SUB 00002302: DUP3 00002303: AND 00002304: PUSH2 0x233e 00002307: JUMPI 00002308: PUSH1 0x40 0000230a: MLOAD 0000230b: PUSH3 0x461bcd 0000230f: PUSH1 0xe5 00002311: SHL 00002312: DUP2 00002313: MSTORE 00002314: PUSH1 0x04 00002316: ADD 00002317: DUP1 00002318: DUP1 00002319: PUSH1 0x20 0000231b: ADD 0000231c: DUP3 0000231d: DUP2 0000231e: SUB 0000231f: DUP3 00002320: MSTORE 00002321: PUSH1 0x23 00002323: DUP2 00002324: MSTORE 00002325: PUSH1 0x20 00002327: ADD 00002328: DUP1 00002329: PUSH2 0x25eb 0000232c: PUSH1 0x23 0000232e: SWAP2 0000232f: CODECOPY 00002330: PUSH1 0x40 00002332: ADD 00002333: SWAP2 00002334: POP 00002335: POP 00002336: PUSH1 0x40 00002338: MLOAD 00002339: DUP1 0000233a: SWAP2 0000233b: SUB 0000233c: SWAP1 0000233d: REVERT 0000233e: JUMPDEST 0000233f: PUSH2 0x2349 00002342: DUP4 00002343: DUP4 00002344: DUP4 00002345: PUSH2 0x1289 00002348: JUMP 00002349: JUMPDEST 0000234a: PUSH1 0x00 0000234c: PUSH1 0x34 0000234e: PUSH1 0x00 00002350: DUP6 00002351: PUSH1 0x01 00002353: PUSH1 0x01 00002355: PUSH1 0xa0 00002357: SHL 00002358: SUB 00002359: AND 0000235a: PUSH1 0x01 0000235c: PUSH1 0x01 0000235e: PUSH1 0xa0 00002360: SHL 00002361: SUB 00002362: AND 00002363: DUP2 00002364: MSTORE 00002365: PUSH1 0x20 00002367: ADD 00002368: SWAP1 00002369: DUP2 0000236a: MSTORE 0000236b: PUSH1 0x20 0000236d: ADD 0000236e: PUSH1 0x00 00002370: KECCAK256 00002371: SLOAD 00002372: SWAP1 00002373: POP 00002374: PUSH2 0x2398 00002377: DUP3 00002378: PUSH1 0x40 0000237a: MLOAD 0000237b: DUP1 0000237c: PUSH1 0x60 0000237e: ADD 0000237f: PUSH1 0x40 00002381: MSTORE 00002382: DUP1 00002383: PUSH1 0x26 00002385: DUP2 00002386: MSTORE 00002387: PUSH1 0x20 00002389: ADD 0000238a: PUSH2 0x2652 0000238d: PUSH1 0x26 0000238f: SWAP2 00002390: CODECOPY 00002391: DUP4 00002392: SWAP2 00002393: SWAP1 00002394: PUSH2 0x1d51 00002397: JUMP 00002398: JUMPDEST 00002399: PUSH1 0x01 0000239b: PUSH1 0x01 0000239d: PUSH1 0xa0 0000239f: SHL 000023a0: SUB 000023a1: DUP1 000023a2: DUP7 000023a3: AND 000023a4: PUSH1 0x00 000023a6: SWAP1 000023a7: DUP2 000023a8: MSTORE 000023a9: PUSH1 0x34 000023ab: PUSH1 0x20 000023ad: MSTORE 000023ae: PUSH1 0x40 000023b0: DUP1 000023b1: DUP3 000023b2: KECCAK256 000023b3: SWAP4 000023b4: SWAP1 000023b5: SWAP4 000023b6: SSTORE 000023b7: SWAP1 000023b8: DUP6 000023b9: AND 000023ba: DUP2 000023bb: MSTORE 000023bc: KECCAK256 000023bd: SLOAD 000023be: PUSH2 0x23c7 000023c1: DUP2 000023c2: DUP5 000023c3: PUSH2 0x1dab 000023c6: JUMP 000023c7: JUMPDEST 000023c8: PUSH1 0x01 000023ca: PUSH1 0x01 000023cc: PUSH1 0xa0 000023ce: SHL 000023cf: SUB 000023d0: DUP6 000023d1: AND 000023d2: PUSH1 0x00 000023d4: SWAP1 000023d5: DUP2 000023d6: MSTORE 000023d7: PUSH1 0x34 000023d9: PUSH1 0x20 000023db: MSTORE 000023dc: PUSH1 0x40 000023de: DUP2 000023df: KECCAK256 000023e0: SWAP2 000023e1: SWAP1 000023e2: SWAP2 000023e3: SSTORE 000023e4: PUSH2 0x23eb 000023e7: PUSH2 0x1e5e 000023ea: JUMP 000023eb: JUMPDEST 000023ec: PUSH1 0x01 000023ee: PUSH1 0x01 000023f0: PUSH1 0xa0 000023f2: SHL 000023f3: SUB 000023f4: AND 000023f5: EQ 000023f6: PUSH2 0x2514 000023f9: JUMPI 000023fa: PUSH1 0x36 000023fc: SLOAD 000023fd: PUSH2 0x2404 00002400: PUSH2 0x1e5e 00002403: JUMP 00002404: JUMPDEST 00002405: PUSH1 0x01 00002407: PUSH1 0x01 00002409: PUSH1 0xa0 0000240b: SHL 0000240c: SUB 0000240d: AND 0000240e: PUSH4 0x31873e2e 00002413: DUP8 00002414: DUP4 00002415: DUP7 00002416: PUSH1 0x40 00002418: MLOAD 00002419: DUP5 0000241a: PUSH4 0xffffffff 0000241f: AND 00002420: PUSH1 0xe0 00002422: SHL 00002423: DUP2 00002424: MSTORE 00002425: PUSH1 0x04 00002427: ADD 00002428: DUP1 00002429: DUP5 0000242a: PUSH1 0x01 0000242c: PUSH1 0x01 0000242e: PUSH1 0xa0 00002430: SHL 00002431: SUB 00002432: AND 00002433: DUP2 00002434: MSTORE 00002435: PUSH1 0x20 00002437: ADD 00002438: DUP4 00002439: DUP2 0000243a: MSTORE 0000243b: PUSH1 0x20 0000243d: ADD 0000243e: DUP3 0000243f: DUP2 00002440: MSTORE 00002441: PUSH1 0x20 00002443: ADD 00002444: SWAP4 00002445: POP 00002446: POP 00002447: POP 00002448: POP 00002449: PUSH1 0x00 0000244b: PUSH1 0x40 0000244d: MLOAD 0000244e: DUP1 0000244f: DUP4 00002450: SUB 00002451: DUP2 00002452: PUSH1 0x00 00002454: DUP8 00002455: DUP1 00002456: EXTCODESIZE 00002457: ISZERO 00002458: DUP1 00002459: ISZERO 0000245a: PUSH2 0x2462 0000245d: JUMPI 0000245e: PUSH1 0x00 00002460: DUP1 00002461: REVERT 00002462: JUMPDEST 00002463: POP 00002464: GAS 00002465: CALL 00002466: ISZERO 00002467: DUP1 00002468: ISZERO 00002469: PUSH2 0x2476 0000246c: JUMPI 0000246d: RETURNDATASIZE 0000246e: PUSH1 0x00 00002470: DUP1 00002471: RETURNDATACOPY 00002472: RETURNDATASIZE 00002473: PUSH1 0x00 00002475: REVERT 00002476: JUMPDEST 00002477: POP 00002478: POP 00002479: POP 0000247a: POP 0000247b: DUP5 0000247c: PUSH1 0x01 0000247e: PUSH1 0x01 00002480: PUSH1 0xa0 00002482: SHL 00002483: SUB 00002484: AND 00002485: DUP7 00002486: PUSH1 0x01 00002488: PUSH1 0x01 0000248a: PUSH1 0xa0 0000248c: SHL 0000248d: SUB 0000248e: AND 0000248f: EQ 00002490: PUSH2 0x2512 00002493: JUMPI 00002494: PUSH2 0x249b 00002497: PUSH2 0x1e5e 0000249a: JUMP 0000249b: JUMPDEST 0000249c: PUSH1 0x01 0000249e: PUSH1 0x01 000024a0: PUSH1 0xa0 000024a2: SHL 000024a3: SUB 000024a4: AND 000024a5: PUSH4 0x31873e2e 000024aa: DUP7 000024ab: DUP4 000024ac: DUP6 000024ad: PUSH1 0x40 000024af: MLOAD 000024b0: DUP5 000024b1: PUSH4 0xffffffff 000024b6: AND 000024b7: PUSH1 0xe0 000024b9: SHL 000024ba: DUP2 000024bb: MSTORE 000024bc: PUSH1 0x04 000024be: ADD 000024bf: DUP1 000024c0: DUP5 000024c1: PUSH1 0x01 000024c3: PUSH1 0x01 000024c5: PUSH1 0xa0 000024c7: SHL 000024c8: SUB 000024c9: AND 000024ca: DUP2 000024cb: MSTORE 000024cc: PUSH1 0x20 000024ce: ADD 000024cf: DUP4 000024d0: DUP2 000024d1: MSTORE 000024d2: PUSH1 0x20 000024d4: ADD 000024d5: DUP3 000024d6: DUP2 000024d7: MSTORE 000024d8: PUSH1 0x20 000024da: ADD 000024db: SWAP4 000024dc: POP 000024dd: POP 000024de: POP 000024df: POP 000024e0: PUSH1 0x00 000024e2: PUSH1 0x40 000024e4: MLOAD 000024e5: DUP1 000024e6: DUP4 000024e7: SUB 000024e8: DUP2 000024e9: PUSH1 0x00 000024eb: DUP8 000024ec: DUP1 000024ed: EXTCODESIZE 000024ee: ISZERO 000024ef: DUP1 000024f0: ISZERO 000024f1: PUSH2 0x24f9 000024f4: JUMPI 000024f5: PUSH1 0x00 000024f7: DUP1 000024f8: REVERT 000024f9: JUMPDEST 000024fa: POP 000024fb: GAS 000024fc: CALL 000024fd: ISZERO 000024fe: DUP1 000024ff: ISZERO 00002500: PUSH2 0x250d 00002503: JUMPI 00002504: RETURNDATASIZE 00002505: PUSH1 0x00 00002507: DUP1 00002508: RETURNDATACOPY 00002509: RETURNDATASIZE 0000250a: PUSH1 0x00 0000250c: REVERT 0000250d: JUMPDEST 0000250e: POP 0000250f: POP 00002510: POP 00002511: POP 00002512: JUMPDEST 00002513: POP 00002514: JUMPDEST 00002515: POP 00002516: POP 00002517: POP 00002518: POP 00002519: POP 0000251a: JUMP 0000251b: JUMPDEST 0000251c: PUSH1 0x00 0000251e: DUP2 0000251f: EXTCODEHASH 00002520: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 00002541: DUP2 00002542: DUP2 00002543: EQ 00002544: DUP1 00002545: ISZERO 00002546: SWAP1 00002547: PUSH2 0x254f 0000254a: JUMPI 0000254b: POP 0000254c: DUP2 0000254d: ISZERO 0000254e: ISZERO 0000254f: JUMPDEST 00002550: SWAP5 00002551: SWAP4 00002552: POP 00002553: POP 00002554: POP 00002555: POP 00002556: JUMP 00002557: JUMPDEST 00002558: DUP3 00002559: DUP1 0000255a: SLOAD 0000255b: PUSH1 0x01 0000255d: DUP2 0000255e: PUSH1 0x01 00002560: AND 00002561: ISZERO 00002562: PUSH2 0x0100 00002565: MUL 00002566: SUB 00002567: AND 00002568: PUSH1 0x02 0000256a: SWAP1 0000256b: DIV 0000256c: SWAP1 0000256d: PUSH1 0x00 0000256f: MSTORE 00002570: PUSH1 0x20 00002572: PUSH1 0x00 00002574: KECCAK256 00002575: SWAP1 00002576: PUSH1 0x1f 00002578: ADD 00002579: PUSH1 0x20 0000257b: SWAP1 0000257c: DIV 0000257d: DUP2 0000257e: ADD 0000257f: SWAP3 00002580: DUP3 00002581: PUSH1 0x1f 00002583: LT 00002584: PUSH2 0x2598 00002587: JUMPI 00002588: DUP1 00002589: MLOAD 0000258a: PUSH1 0xff 0000258c: NOT 0000258d: AND 0000258e: DUP4 0000258f: DUP1 00002590: ADD 00002591: OR 00002592: DUP6 00002593: SSTORE 00002594: PUSH2 0x25c5 00002597: JUMP 00002598: JUMPDEST 00002599: DUP3 0000259a: DUP1 0000259b: ADD 0000259c: PUSH1 0x01 0000259e: ADD 0000259f: DUP6 000025a0: SSTORE 000025a1: DUP3 000025a2: ISZERO 000025a3: PUSH2 0x25c5 000025a6: JUMPI 000025a7: SWAP2 000025a8: DUP3 000025a9: ADD 000025aa: JUMPDEST 000025ab: DUP3 000025ac: DUP2 000025ad: GT 000025ae: ISZERO 000025af: PUSH2 0x25c5 000025b2: JUMPI 000025b3: DUP3 000025b4: MLOAD 000025b5: DUP3 000025b6: SSTORE 000025b7: SWAP2 000025b8: PUSH1 0x20 000025ba: ADD 000025bb: SWAP2 000025bc: SWAP1 000025bd: PUSH1 0x01 000025bf: ADD 000025c0: SWAP1 000025c1: PUSH2 0x25aa 000025c4: JUMP 000025c5: JUMPDEST 000025c6: POP 000025c7: PUSH2 0x25d1 000025ca: SWAP3 000025cb: SWAP2 000025cc: POP 000025cd: PUSH2 0x25d5 000025d0: JUMP 000025d1: JUMPDEST 000025d2: POP 000025d3: SWAP1 000025d4: JUMP 000025d5: JUMPDEST 000025d6: JUMPDEST 000025d7: DUP1 000025d8: DUP3 000025d9: GT 000025da: ISZERO 000025db: PUSH2 0x25d1 000025de: JUMPI 000025df: PUSH1 0x00 000025e1: DUP2 000025e2: SSTORE 000025e3: PUSH1 0x01 000025e5: ADD 000025e6: PUSH2 0x25d6 000025e9: JUMP 000025ea: INVALID 000025eb: GASLIMIT 000025ec: MSTORE 000025ed: NUMBER 000025ee: ORIGIN 000025ef: ADDRESS 000025f0: GASPRICE 000025f1: KECCAK256 000025f2: PUSH21 0x72616e7366657220746f20746865207a65726f2061 00002608: PUSH5 0x6472657373 0000260e: GASLIMIT 0000260f: MSTORE 00002610: NUMBER 00002611: ORIGIN 00002612: ADDRESS 00002613: GASPRICE 00002614: KECCAK256 00002615: PUSH3 0x75726e 00002619: KECCAK256 0000261a: PUSH2 0x6d6f 0000261d: PUSH22 0x6e7420657863656564732062616c616e636545524332 00002634: ADDRESS 00002635: GASPRICE 00002636: KECCAK256 00002637: PUSH2 0x7070 0000263a: PUSH19 0x6f766520746f20746865207a65726f20616464 0000264e: PUSH19 0x65737345524332303a207472616e7366657220 00002662: PUSH2 0x6d6f 00002665: PUSH22 0x6e7420657863656564732062616c616e636545524332 0000267c: ADDRESS 0000267d: GASPRICE 0000267e: KECCAK256 0000267f: PUSH21 0x72616e7366657220616d6f756e7420657863656564 00002695: PUSH20 0x20616c6c6f77616e6365436f6e74726163742069 000026aa: PUSH15 0x7374616e63652068617320616c7265 000026ba: PUSH2 0x6479 000026bd: KECCAK256 000026be: PUSH3 0x65656e 000026c2: KECCAK256 000026c3: PUSH10 0x6e697469616c697a6564 000026ce: UNKNOWN(0xDD) 000026cf: CALLCODE 000026d0: MSTORE 000026d1: UNKNOWN(0xAD) 000026d2: SHL 000026d3: UNKNOWN(0xE2) 000026d4: UNKNOWN(0xC8) 000026d5: SWAP12 000026d6: PUSH10 0xc2b068fc378daa952ba7 000026e1: CALL 000026e2: PUSH4 0xc4a11628 000026e7: CREATE2 000026e8: GAS 000026e9: UNKNOWN(0x4D) 000026ea: CREATE2 000026eb: UNKNOWN(0x23) 000026ec: UNKNOWN(0xB3) 000026ed: UNKNOWN(0xEF) 000026ee: GASLIMIT 000026ef: MSTORE 000026f0: NUMBER 000026f1: ORIGIN 000026f2: ADDRESS 000026f3: GASPRICE 000026f4: KECCAK256 000026f5: PUSH3 0x75726e 000026f9: KECCAK256 000026fa: PUSH7 0x726f6d20746865 00002702: KECCAK256 00002703: PUSH27 0x65726f206164647265737345524332303a207472616e7366657220 0000271f: PUSH7 0x726f6d20746865 00002727: KECCAK256 00002728: PUSH27 0x65726f206164647265737345524332303a20617070726f76652066 00002744: PUSH19 0x6f6d20746865207a65726f2061646472657373 00002758: MSTORE8 00002759: PUSH2 0x6665 0000275c: GASLIMIT 0000275d: MSTORE 0000275e: NUMBER 0000275f: ORIGIN 00002760: ADDRESS 00002761: GASPRICE 00002762: KECCAK256 00002763: GASLIMIT 00002764: MSTORE 00002765: NUMBER 00002766: ORIGIN 00002767: ADDRESS 00002768: KECCAK256 00002769: PUSH16 0x7065726174696f6e20646964206e6f74 0000277a: KECCAK256 0000277b: PUSH20 0x75636365656445524332303a2064656372656173 00002790: PUSH6 0x6420616c6c6f 00002797: PUSH24 0x616e63652062656c6f77207a65726fa26469706673582212 000027b0: KECCAK256 000027b1: MCOPY 000027b2: PUSH27 0xd620e358939d62f35d1dc44c8774d95bcacb31160b78050b8271e3 000027ce: UNKNOWN(0xFB) 000027cf: UNKNOWN(0xB0) 000027d0: TLOAD 000027d1: PUSH5 0x736f6c6343 000027d7: STOP 000027d8: MOD 000027d9: UNKNOWN(0x0C) 000027da: STOP 000027db: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | codex | Unrestricted initializer allows takeover of uninitialized AToken instance/proxy | 85 | no | — |
viewevidence_json{
"evidence": "`initialize` is `external` and only protected by `initializer`, with no caller restriction.",
"locations": [
"contracts/protocol/tokenization/AToken.sol:64"
],
"recommendation": "Ensure initialization happens atomically at deployment (constructor-based or factory call), or restrict `initialize` to a trusted deployer (e.g., addresses provider/admin). Consider locking the implementation with a constructor that sets `lastInitializedRevision` or a dedicated `_disableInitializers` pattern.",
"exploit_scenario": "If a new AToken proxy/instance is deployed and `initialize` is not called atomically, an attacker can call `initialize` first, set `_pool` to their address and `_underlyingAsset` to the real reserve asset, then use `transferUnderlyingTo`/`mint`/`burn` as the LendingPool to drain assets or mint arbitrary balances."
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xae167335",
"selector": "0xae167335",
"calldata_variants": [
"0xae167335",
"0xae1673350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb16a19de",
"selector": "0xb16a19de",
"calldata_variants": [
"0xb16a19de",
"0xb16a19de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1bf962d",
"selector": "0xb1bf962d",
"calldata_variants": [
"0xb1bf962d",
"0xb1bf962d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb9844d8d",
"selector": "0xb9844d8d",
"calldata_variants": [
"0xb9844d8d",
"0xb9844d8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd505accf",
"selector": "0xd505accf",
"calldata_variants": [
"0xd505accf",
"0xd505accf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7020d0a",
"selector": "0xd7020d0a",
"calldata_variants": [
"0xd7020d0a",
"0xd7020d0a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf866c319",
"selector": "0xf866c319",
"calldata_variants": [
"0xf866c319",
"0xf866c3190000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 9710,
"type": "tx_origin_used"
},
{
"pc": 9745,
"type": "tx_origin_used"
},
{
"pc": 9969,
"type": "tx_origin_used"
},
{
"pc": 10079,
"type": "tx_origin_used"
},
{
"pc": 10086,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x3ccc0c7ff039c01d295661b2e108b95c16add208df26416d4855e7228765ca91
call_targets:
0x6faee7aac498326660ac2b7207b9f67666073111
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3ccc0c7ff039c01d295661b2e108b95c16add208df26416d4855e7228765ca91",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6faee7aac498326660ac2b7207b9f67666073111"
],
"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": "0xae167335",
"selector": "0xae167335",
"calldata_variants": [
"0xae167335",
"0xae1673350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb16a19de",
"selector": "0xb16a19de",
"calldata_variants": [
"0xb16a19de",
"0xb16a19de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1bf962d",
"selector": "0xb1bf962d",
"calldata_variants": [
"0xb1bf962d",
"0xb1bf962d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb9844d8d",
"selector": "0xb9844d8d",
"calldata_variants": [
"0xb9844d8d",
"0xb9844d8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd505accf",
"selector": "0xd505accf",
"calldata_variants": [
"0xd505accf",
"0xd505accf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7020d0a",
"selector": "0xd7020d0a",
"calldata_variants": [
"0xd7020d0a",
"0xd7020d0a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf866c319",
"selector": "0xf866c319",
"calldata_variants": [
"0xf866c319",
"0xf866c3190000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7203,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8262,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8590,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 9710,
"type": "tx_origin_used"
},
{
"pc": 9745,
"type": "tx_origin_used"
},
{
"pc": 9969,
"type": "tx_origin_used"
},
{
"pc": 10079,
"type": "tx_origin_used"
},
{
"pc": 10086,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x7ff8b93a37bafc28ae2fcbdf4cc2c52efcf6d7f43d57f2f40ab90a6d16839578
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x7ff8b93a37bafc28ae2fcbdf4cc2c52efcf6d7f43d57f2f40ab90a6d16839578",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xae167335",
"selector": "0xae167335",
"calldata_variants": [
"0xae167335",
"0xae1673350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb16a19de",
"selector": "0xb16a19de",
"calldata_variants": [
"0xb16a19de",
"0xb16a19de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1bf962d",
"selector": "0xb1bf962d",
"calldata_variants": [
"0xb1bf962d",
"0xb1bf962d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb9844d8d",
"selector": "0xb9844d8d",
"calldata_variants": [
"0xb9844d8d",
"0xb9844d8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd505accf",
"selector": "0xd505accf",
"calldata_variants": [
"0xd505accf",
"0xd505accf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7020d0a",
"selector": "0xd7020d0a",
"calldata_variants": [
"0xd7020d0a",
"0xd7020d0a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf866c319",
"selector": "0xf866c319",
"calldata_variants": [
"0xf866c319",
"0xf866c3190000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x3ccc0c7ff039c01d295661b2e108b95c16add208df26416d4855e7228765ca91
call_targets:
0x6faee7aac498326660ac2b7207b9f67666073111
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3ccc0c7ff039c01d295661b2e108b95c16add208df26416d4855e7228765ca91",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6faee7aac498326660ac2b7207b9f67666073111"
],
"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": "0xae167335",
"selector": "0xae167335",
"calldata_variants": [
"0xae167335",
"0xae1673350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb16a19de",
"selector": "0xb16a19de",
"calldata_variants": [
"0xb16a19de",
"0xb16a19de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1bf962d",
"selector": "0xb1bf962d",
"calldata_variants": [
"0xb1bf962d",
"0xb1bf962d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb9844d8d",
"selector": "0xb9844d8d",
"calldata_variants": [
"0xb9844d8d",
"0xb9844d8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd505accf",
"selector": "0xd505accf",
"calldata_variants": [
"0xd505accf",
"0xd505accf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7020d0a",
"selector": "0xd7020d0a",
"calldata_variants": [
"0xd7020d0a",
"0xd7020d0a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf866c319",
"selector": "0xf866c319",
"calldata_variants": [
"0xf866c319",
"0xf866c3190000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7203,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8262,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8590,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [
{
"pc": 9710,
"type": "tx_origin_used"
},
{
"pc": 9745,
"type": "tx_origin_used"
},
{
"pc": 9969,
"type": "tx_origin_used"
},
{
"pc": 10079,
"type": "tx_origin_used"
},
{
"pc": 10086,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 7
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|
| 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": 9
}
|