019bab3b-aacf-703b-9022-3246f6b562b2
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 |
|---|---|---|---|---|
| 38401 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38402 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38403 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38404 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38405 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38406 | detector.run | complete | 1 / 3 | 3 months ago |
| 38407 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38982 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 38983 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-xcq08l_2)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-xcq08l_2)
Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671):
External calls:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
External calls sending eth:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _liquidityFee = _previousLiquidityFee (contracts/Contract.sol#871)
- _liquidityFee = 0 (contracts/Contract.sol#868)
CoinToken._liquidityFee (contracts/Contract.sol#420) can be used in cross function reentrancies:
- CoinToken.calculateLiquidityFee(uint256) (contracts/Contract.sol#858-860)
- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)
- CoinToken.removeAllFee() (contracts/Contract.sol#860-869)
- CoinToken.restoreAllFee() (contracts/Contract.sol#869-874)
- CoinToken.setBuybackFee(uint256) (contracts/Contract.sol#890-896)
- CoinToken.setMarketingFee(uint256) (contracts/Contract.sol#901-907)
- CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (contracts/Contract.sol#849-850)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#769)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#780-783)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#802-803)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#792-793)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#770-771)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#783-784)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#793)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#803-804)
CoinToken._rOwned (contracts/Contract.sol#403-404) can be used in cross function reentrancies:
- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)
- CoinToken._takeLiquidity(uint256) (contracts/Contract.sol#845-854)
- CoinToken._transferBothExcluded(address,address,uint256) (contracts/Contract.sol#795-806)
- CoinToken._transferFromExcluded(address,address,uint256) (contracts/Contract.sol#786-795)
- CoinToken._transferStandard(address,address,uint256) (contracts/Contract.sol#760-773)
- CoinToken._transferToExcluded(address,address,uint256) (contracts/Contract.sol#773-785)
- CoinToken.balanceOf(address) (contracts/Contract.sol#522-528)
- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)
- CoinToken.deliver(uint256) (contracts/Contract.sol#575-587)
- CoinToken.excludeFromReward(address) (contracts/Contract.sol#605-612)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _rTotal = _rTotal.sub(rFee) (contracts/Contract.sol#807-808)
CoinToken._rTotal (contracts/Contract.sol#415-416) can be used in cross function reentrancies:
- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)
- CoinToken._reflectFee(uint256,uint256) (contracts/Contract.sol#806-809)
- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)
- CoinToken.deliver(uint256) (contracts/Contract.sol#575-587)
- CoinToken.tokenFromReflection(uint256) (contracts/Contract.sol#598-605)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (contracts/Contract.sol#852-854)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#802)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#792)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#783)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#803)
CoinToken._tOwned (contracts/Contract.sol#405-409) can be used in cross function reentrancies:
- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)
- CoinToken._takeLiquidity(uint256) (contracts/Contract.sol#845-854)
- CoinToken._transferBothExcluded(address,address,uint256) (contracts/Contract.sol#795-806)
- CoinToken._transferFromExcluded(address,address,uint256) (contracts/Contract.sol#786-795)
- CoinToken._transferToExcluded(address,address,uint256) (contracts/Contract.sol#773-785)
- CoinToken.balanceOf(address) (contracts/Contract.sol#522-528)
- CoinToken.excludeFromReward(address) (contracts/Contract.sol#605-612)
- CoinToken.includeInReward(address) (contracts/Contract.sol#612-626)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- inSwapAndLiquify = true (contracts/Contract.sol#461-462)
- inSwapAndLiquify = false (contracts/Contract.sol#462-463)
CoinToken.inSwapAndLiquify (contracts/Contract.sol#439-441) can be used in cross function reentrancies:
- CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671)
- CoinToken.lockTheSwap() (contracts/Contract.sol#461-463)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- marketingFee = previousMarketingFee (contracts/Contract.sol#874)
- marketingFee = 0 (contracts/Contract.sol#869)
CoinToken.marketingFee (contracts/Contract.sol#425-426) can be used in cross function reentrancies:
- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)
- CoinToken.marketingFee (contracts/Contract.sol#425-426)
- CoinToken.removeAllFee() (contracts/Contract.sol#860-869)
- CoinToken.restoreAllFee() (contracts/Contract.sol#869-874)
- CoinToken.setBuybackFee(uint256) (contracts/Contract.sol#890-896)
- CoinToken.setMarketingFee(uint256) (contracts/Contract.sol#901-907)
- CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512) performs a multiplication on the result of a division:
- _maxTxAmount = _tTotal.div(1000).mul(3) (contracts/Contract.sol#491-492)
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512) performs a multiplication on the result of a division:
- minimumTokensBeforeSwap = _tTotal.div(10000).mul(2) (contracts/Contract.sol#493-495)
CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686) performs a multiplication on the result of a division:
- transferToAddressETH(lp_poolAddress,transferredBalance.div(_liquidityFee).mul(25)) (contracts/Contract.sol#679-683)
CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686) performs a multiplication on the result of a division:
- transferToAddressETH(marketingAddress,transferredBalance.div(_liquidityFee).mul(marketingFee.sub(25))) (contracts/Contract.sol#683-686)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
CoinToken.addLiquidity(uint256,uint256) (contracts/Contract.sol#726-740) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Contract.sol#734-740)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
CoinToken.allowance(address,address).owner (contracts/Contract.sol#536-537) shadows:
- Ownable.owner() (contracts/Contract.sol#149-151) (function)
CoinToken._approve(address,address,uint256).owner (contracts/Contract.sol#626) shadows:
- Ownable.owner() (contracts/Contract.sol#149-151) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
CoinToken.setTaxFee(uint256) (contracts/Contract.sol#887-890) should emit an event for:
- _taxFee = taxFee (contracts/Contract.sol#890)
CoinToken.setBuybackFee(uint256) (contracts/Contract.sol#890-896) should emit an event for:
- buybackFee = _buybackFee (contracts/Contract.sol#892-894)
- _liquidityFee = buybackFee.add(marketingFee) (contracts/Contract.sol#894-896)
CoinToken.setMaxTxAmount(uint256) (contracts/Contract.sol#896-901) should emit an event for:
- _maxTxAmount = maxTxAmount (contracts/Contract.sol#900-901)
CoinToken.setMarketingFee(uint256) (contracts/Contract.sol#901-907) should emit an event for:
- marketingFee = _marketingFee (contracts/Contract.sol#903-904)
- _liquidityFee = buybackFee.add(marketingFee) (contracts/Contract.sol#904-907)
CoinToken.setNumTokensSellToAddToLiquidity(uint256) (contracts/Contract.sol#907-911) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (contracts/Contract.sol#911)
CoinToken.setBuybackUpperLimit(uint256) (contracts/Contract.sol#912-916) should emit an event for:
- buyBackUpperLimit = buyBackLimit (contracts/Contract.sol#915)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address)._ma (contracts/Contract.sol#466) lacks a zero-check on :
- marketingAddress = address(_ma) (contracts/Contract.sol#477-480)
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address)._lp (contracts/Contract.sol#467) lacks a zero-check on :
- lp_poolAddress = address(_lp) (contracts/Contract.sol#480-481)
- address(_lp).transfer(msg.value) (contracts/Contract.sol#508)
CoinToken.setMarketingAddress(address)._marketingAddress (contracts/Contract.sol#916-919) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (contracts/Contract.sol#919-920)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671):
External calls:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
External calls sending eth:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _previousLiquidityFee = _liquidityFee (contracts/Contract.sol#863-866)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _previousTaxFee = _taxFee (contracts/Contract.sol#862-863)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _tFeeTotal = _tFeeTotal.add(tFee) (contracts/Contract.sol#809)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _taxFee = _previousTaxFee (contracts/Contract.sol#870-871)
- _taxFee = 0 (contracts/Contract.sol#868)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- buybackFee = previousBuybackFee (contracts/Contract.sol#871-874)
- buybackFee = 0 (contracts/Contract.sol#868-869)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- previousBuybackFee = buybackFee (contracts/Contract.sol#866)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- previousMarketingFee = marketingFee (contracts/Contract.sol#867)
Reentrancy in CoinToken.transferFrom(address,address,uint256) (contracts/Contract.sol#546-554):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#550-554)
- _allowances[owner][spender] = amount (contracts/Contract.sol#633)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671):
External calls:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
External calls sending eth:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (contracts/Contract.sol#724-725)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#772-773)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#785)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#794-795)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#805-806)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
Reentrancy in CoinToken.swapETHForTokens(uint256) (contracts/Contract.sol#709-725):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (contracts/Contract.sol#724-725)
Reentrancy in CoinToken.swapTokensForEth(uint256) (contracts/Contract.sol#691-708):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (contracts/Contract.sol#707-708)
Reentrancy in CoinToken.transferFrom(address,address,uint256) (contracts/Contract.sol#546-554):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Contract.sol#633-634)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#550-554)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
Ownable.unlock() (contracts/Contract.sol#183-191) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (contracts/Contract.sol#187-190)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Address.isContract(address) (contracts/Contract.sol#78-92) uses assembly
- INLINE ASM (contracts/Contract.sol#90-91)
Address._functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#118-133) uses assembly
- INLINE ASM (contracts/Contract.sol#126-132)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
CoinToken.includeInReward(address) (contracts/Contract.sol#612-626) has costly operations inside a loop:
- _excluded.pop() (contracts/Contract.sol#624)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
CoinToken.addLiquidity(uint256,uint256) (contracts/Contract.sol#726-740) is never used and should be removed
Context._msgData() (contracts/Contract.sol#6-10) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables.
It is used by:
- ^0.8.5 (contracts/Contract.sol#1)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#92-100):
- (success,None) = recipient.call{value: amount}() (contracts/Contract.sol#97-99)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#118-133):
- (success,returndata) = target.call{value: weiValue}(data) (contracts/Contract.sol#122-123)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/Contract.sol#230) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/Contract.sol#231) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/Contract.sol#240-243) is not in mixedCase
Function IUniswapV2Router01.WETH() (contracts/Contract.sol#261-262) is not in mixedCase
Parameter CoinToken.calculateTaxFee(uint256)._amount (contracts/Contract.sol#855-856) is not in mixedCase
Parameter CoinToken.calculateLiquidityFee(uint256)._amount (contracts/Contract.sol#858) is not in mixedCase
Parameter CoinToken.setBuybackFee(uint256)._buybackFee (contracts/Contract.sol#891) is not in mixedCase
Parameter CoinToken.setMarketingFee(uint256)._marketingFee (contracts/Contract.sol#902) is not in mixedCase
Parameter CoinToken.setNumTokensSellToAddToLiquidity(uint256)._minimumTokensBeforeSwap (contracts/Contract.sol#907-908) is not in mixedCase
Parameter CoinToken.setMarketingAddress(address)._marketingAddress (contracts/Contract.sol#916-919) is not in mixedCase
Parameter CoinToken.setSwapAndLiquifyEnabled(bool)._enabled (contracts/Contract.sol#923) is not in mixedCase
Parameter CoinToken.setBuyBackEnabled(bool)._enabled (contracts/Contract.sol#928) is not in mixedCase
Parameter CoinToken.presale(bool)._presale (contracts/Contract.sol#932) is not in mixedCase
Variable CoinToken.lp_poolAddress (contracts/Contract.sol#397-398) is not in mixedCase
Variable CoinToken._taxFee (contracts/Contract.sol#418) is not in mixedCase
Variable CoinToken._maxTxAmount (contracts/Contract.sol#428-430) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Redundant expression "this (contracts/Contract.sol#9)" inContext (contracts/Contract.sol#2-10)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671):
External calls:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- recipient.transfer(amount) (contracts/Contract.sol#945)
External calls sending eth:
- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _liquidityFee = _previousLiquidityFee (contracts/Contract.sol#871)
- _liquidityFee = 0 (contracts/Contract.sol#868)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _previousLiquidityFee = _liquidityFee (contracts/Contract.sol#863-866)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _previousTaxFee = _taxFee (contracts/Contract.sol#862-863)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (contracts/Contract.sol#849-850)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#769)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#780-783)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#802-803)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#792-793)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#770-771)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#783-784)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#793)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#803-804)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _rTotal = _rTotal.sub(rFee) (contracts/Contract.sol#807-808)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _tFeeTotal = _tFeeTotal.add(tFee) (contracts/Contract.sol#809)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (contracts/Contract.sol#852-854)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#802)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#792)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#783)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#803)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- _taxFee = _previousTaxFee (contracts/Contract.sol#870-871)
- _taxFee = 0 (contracts/Contract.sol#868)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- buybackFee = previousBuybackFee (contracts/Contract.sol#871-874)
- buybackFee = 0 (contracts/Contract.sol#868-869)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- inSwapAndLiquify = true (contracts/Contract.sol#461-462)
- inSwapAndLiquify = false (contracts/Contract.sol#462-463)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- marketingFee = previousMarketingFee (contracts/Contract.sol#874)
- marketingFee = 0 (contracts/Contract.sol#869)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- previousBuybackFee = buybackFee (contracts/Contract.sol#866)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- previousMarketingFee = marketingFee (contracts/Contract.sol#867)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (contracts/Contract.sol#724-725)
- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#772-773)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#785)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#794-795)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
- Transfer(sender,recipient,tTransferAmount) (contracts/Contract.sol#805-806)
- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)
Reentrancy in CoinToken.transferFrom(address,address,uint256) (contracts/Contract.sol#546-554):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- recipient.transfer(amount) (contracts/Contract.sol#945)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#549)
- recipient.transfer(amount) (contracts/Contract.sol#945)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#550-554)
- _allowances[owner][spender] = amount (contracts/Contract.sol#633)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Contract.sol#633-634)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#550-554)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4
Loop condition i < _excluded.length (contracts/Contract.sol#837-838) should use cached array length instead of referencing `length` member of the storage array.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
CoinToken._decimals (contracts/Contract.sol#418) should be immutable
CoinToken._tTotal (contracts/Contract.sol#415) should be immutable
CoinToken.lp_poolAddress (contracts/Contract.sol#397-398) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (10 contracts with 100 detectors), 55 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.5",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.5",
"install_stderr": null,
"install_stdout": "Installing solc '0.8.5'...\nVersion '0.8.5' installed."
},
"solc_args": "--base-path /tmp/slither-xcq08l_2 --allow-paths /tmp/slither-xcq08l_2,/tmp/slither-xcq08l_2/lib,/tmp/slither-xcq08l_2/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 55,
"workspace_hash": "496fadcdb1479d5036c0cf0630f68b18bcba3a59c167c0e2cda8a100a857b3d2",
"duration_seconds": 2.0130879878997803,
"solc_version_requested": "0.8.5"
}
{"no_findings":false,"summary":"Found 3 issues: sell-side swaps can be bricked by fee parameter settings, owner has full control over fees/limits (honeypot risk), and ETH payouts via .transfer can revert if recipient is a contract.","findings":[{"severity":"medium","category":"math","title":"Fee parameter underflow/division by zero can brick sell-side swaps","exploit_scenario":"If the owner (or a compromised owner) sets `marketingFee < 25` or sets both `buybackFee` and `marketingFee` to 0, then `_liquidityFee` becomes 0 or `marketingFee.sub(25)` underflows. When any user sells to the pair and the contract balance exceeds `minimumTokensBeforeSwap`, `swapTokens` executes and reverts, blocking sells and effectively freezing trading.","recommendation":"Add bounds checks in setters (e.g., require `marketingFee >= 25` and `buybackFee + marketingFee > 0`), or refactor `swapTokens` to avoid hardcoded `25` and skip swaps when `_liquidityFee == 0`.","evidence":"`swapTokens` divides by `_liquidityFee` and subtracts 25 from `marketingFee` without validation.","locations":["contracts/Contract.sol:693","contracts/Contract.sol:701","contracts/Contract.sol:702","contracts/Contract.sol:923","contracts/Contract.sol:932"]},{"severity":"high","category":"access_control","title":"Owner can arbitrarily change fees and limits, enabling honeypot behavior","exploit_scenario":"The owner can set `_taxFee` to near 100%, lower `_maxTxAmount` to a tiny value, or toggle `swapAndLiquifyEnabled`/`presale` to change fee behavior. This allows the owner (or a compromised owner) to make sells revert or make transfers effectively confiscatory after users buy.","recommendation":"Add upper bounds for fees and transaction limits, use a timelock for parameter changes, and/or renounce ownership after configuration to reduce centralized control risk.","evidence":"Fee and limit setters are onlyOwner with no bounds or timelock.","locations":["contracts/Contract.sol:919","contracts/Contract.sol:923","contracts/Contract.sol:928","contracts/Contract.sol:932","contracts/Contract.sol:949","contracts/Contract.sol:959"]},{"severity":"low","category":"other","title":"ETH payouts use .transfer and can revert if recipient is a contract","exploit_scenario":"`swapTokens` sends ETH to `lp_poolAddress` and `marketingAddress` via `.transfer`. If either address is a contract with a fallback requiring more than 2300 gas or reverting (e.g., a multisig), swaps revert and sells can fail once `swapTokens` is triggered.","recommendation":"Use `call{value: amount}('')` with success checks or a pull-payment pattern; ensure recipient addresses are EOAs if keeping `.transfer`.","evidence":"`transferToAddressETH` uses `.transfer` and is called from `swapTokens`.","locations":["contracts/Contract.sol:701","contracts/Contract.sol:702","contracts/Contract.sol:973","contracts/Contract.sol:974"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-61o301v4
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bab77-aae0-7792-a53b-f7028af6fc65
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Auditing with AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-61o301v4 succeeded in 7ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-61o301v4 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.8.5;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
}
thinking
**Analyzing potential vulnerabilities in Contract.sol**
thinking
**Summarizing audit findings and risk assessment**
I've collected key issues related to possible reverts from fee misconfigurations, owner-controlled parameters that can lock or degrade trading, and transfer methods that risk DoS if certain addresses are contracts. While no external exploits stand out, the reliance on owner actions for these risks is significant enough to highlight as potential vulnerabilities.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '300,520p'" in /tmp/codex-61o301v4 succeeded in 7ms:
300 ) external returns (uint amountA, uint amountB);
301 function removeLiquidityETH(
302 address token,
303 uint liquidity,
304 uint amountTokenMin,
305 uint amountETHMin,
306 address to,
307 uint deadline
308 ) external returns (uint amountToken, uint amountETH);
309 function removeLiquidityWithPermit(
310 address tokenA,
311 address tokenB,
312 uint liquidity,
313 uint amountAMin,
314 uint amountBMin,
315 address to,
316 uint deadline,
317 bool approveMax, uint8 v, bytes32 r, bytes32 s
318 ) external returns (uint amountA, uint amountB);
319 function removeLiquidityETHWithPermit(
thinking
**Identifying line numbers for swapTokens**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '560,760p'" in /tmp/codex-61o301v4 succeeded in 33ms:
560 return true;
561 }
562
563 function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
564 _transfer(sender, recipient, amount);
565 _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
566 return true;
567 }
568
569 function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
570 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
571 return true;
572 }
573
574 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
575 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
576 return true;
577 }
578
579 function isExcludedFromReward(address account) public view returns (bool) {
thinking
**Adding setter lines for access control**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '760,960p'" in /tmp/codex-61o301v4 succeeded in 12ms:
760 owner(),
761 block.timestamp
762 );
763 }
764
765 function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
766 if(!takeFee)
767 removeAllFee();
768
769 if (_isExcluded[sender] && !_isExcluded[recipient]) {
770 _transferFromExcluded(sender, recipient, amount);
771 } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
772 _transferToExcluded(sender, recipient, amount);
773 } else if (_isExcluded[sender] && _isExcluded[recipient]) {
774 _transferBothExcluded(sender, recipient, amount);
775 } else {
776 _transferStandard(sender, recipient, amount);
777 }
778
779 if(!takeFee)
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '960,1140p'" in /tmp/codex-61o301v4 succeeded in 6ms:
960 if (_presale) {
961 setSwapAndLiquifyEnabled(false);
962 removeAllFee();
963 _previousMaxTxAmount = _maxTxAmount;
964 _maxTxAmount = totalSupply();
965 } else {
966 setSwapAndLiquifyEnabled(true);
967 restoreAllFee();
968 _maxTxAmount = _previousMaxTxAmount;
969 }
970 }
971
972
973 function transferToAddressETH(address payable recipient, uint256 amount) private {
974 recipient.transfer(amount);
975 }
976
977 //to recieve ETH from uniswapV2Router when swaping
978 receive() external payable {}
979 }
thinking
**Summarizing audit findings for JSON report**
I'll organize the key issues discovered into a clear JSON format with severity, categories, titles, exploit scenarios, recommendations, evidence, and line references for each finding about fee underflows, owner controls enabling honeypots, and DoS potential via ETH transfers using .transfer. This will meet the schema and instructions perfectly.
codex
{"no_findings":false,"summary":"Found 3 issues: sell-side swaps can be bricked by fee parameter settings, owner has full control over fees/limits (honeypot risk), and ETH payouts via .transfer can revert if recipient is a contract.","findings":[{"severity":"medium","category":"math","title":"Fee parameter underflow/division by zero can brick sell-side swaps","exploit_scenario":"If the owner (or a compromised owner) sets `marketingFee < 25` or sets both `buybackFee` and `marketingFee` to 0, then `_liquidityFee` becomes 0 or `marketingFee.sub(25)` underflows. When any user sells to the pair and the contract balance exceeds `minimumTokensBeforeSwap`, `swapTokens` executes and reverts, blocking sells and effectively freezing trading.","recommendation":"Add bounds checks in setters (e.g., require `marketingFee >= 25` and `buybackFee + marketingFee > 0`), or refactor `swapTokens` to avoid hardcoded `25` and skip swaps when `_liquidityFee == 0`.","evidence":"`swapTokens` divides by `_liquidityFee` and subtracts 25 from `marketingFee` without validation.","locations":["contracts/Contract.sol:693","contracts/Contract.sol:701","contracts/Contract.sol:702","contracts/Contract.sol:923","contracts/Contract.sol:932"]},{"severity":"high","category":"access_control","title":"Owner can arbitrarily change fees and limits, enabling honeypot behavior","exploit_scenario":"The owner can set `_taxFee` to near 100%, lower `_maxTxAmount` to a tiny value, or toggle `swapAndLiquifyEnabled`/`presale` to change fee behavior. This allows the owner (or a compromised owner) to make sells revert or make transfers effectively confiscatory after users buy.","recommendation":"Add upper bounds for fees and transaction limits, use a timelock for parameter changes, and/or renounce ownership after configuration to reduce centralized control risk.","evidence":"Fee and limit setters are onlyOwner with no bounds or timelock.","locations":["contracts/Contract.sol:919","contracts/Contract.sol:923","contracts/Contract.sol:928","contracts/Contract.sol:932","contracts/Contract.sol:949","contracts/Contract.sol:959"]},{"severity":"low","category":"other","title":"ETH payouts use .transfer and can revert if recipient is a contract","exploit_scenario":"`swapTokens` sends ETH to `lp_poolAddress` and `marketingAddress` via `.transfer`. If either address is a contract with a fallback requiring more than 2300 gas or reverting (e.g., a multisig), swaps revert and sells can fail once `swapTokens` is triggered.","recommendation":"Use `call{value: amount}('')` with success checks or a pull-payment pattern; ensure recipient addresses are EOAs if keeping `.transfer`.","evidence":"`transferToAddressETH` uses `.transfer` and is called from `swapTokens`.","locations":["contracts/Contract.sol:701","contracts/Contract.sol:702","contracts/Contract.sol:973","contracts/Contract.sol:974"]}]}
tokens used
34,116
{
"codex": {
"ran_at": "2026-01-11T05:14:19.107199+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 3 issues: sell-side swaps can be bricked by fee parameter settings, owner has full control over fees/limits (honeypot risk), and ETH payouts via .transfer can revert if recipient is a contract.",
"raw_final": {
"summary": "Found 3 issues: sell-side swaps can be bricked by fee parameter settings, owner has full control over fees/limits (honeypot risk), and ETH payouts via .transfer can revert if recipient is a contract.",
"findings": [
{
"title": "Fee parameter underflow/division by zero can brick sell-side swaps",
"category": "math",
"evidence": "`swapTokens` divides by `_liquidityFee` and subtracts 25 from `marketingFee` without validation.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:693",
"contracts/Contract.sol:701",
"contracts/Contract.sol:702",
"contracts/Contract.sol:923",
"contracts/Contract.sol:932"
],
"recommendation": "Add bounds checks in setters (e.g., require `marketingFee >= 25` and `buybackFee + marketingFee > 0`), or refactor `swapTokens` to avoid hardcoded `25` and skip swaps when `_liquidityFee == 0`.",
"exploit_scenario": "If the owner (or a compromised owner) sets `marketingFee < 25` or sets both `buybackFee` and `marketingFee` to 0, then `_liquidityFee` becomes 0 or `marketingFee.sub(25)` underflows. When any user sells to the pair and the contract balance exceeds `minimumTokensBeforeSwap`, `swapTokens` executes and reverts, blocking sells and effectively freezing trading."
},
{
"title": "Owner can arbitrarily change fees and limits, enabling honeypot behavior",
"category": "access_control",
"evidence": "Fee and limit setters are onlyOwner with no bounds or timelock.",
"severity": "high",
"locations": [
"contracts/Contract.sol:919",
"contracts/Contract.sol:923",
"contracts/Contract.sol:928",
"contracts/Contract.sol:932",
"contracts/Contract.sol:949",
"contracts/Contract.sol:959"
],
"recommendation": "Add upper bounds for fees and transaction limits, use a timelock for parameter changes, and/or renounce ownership after configuration to reduce centralized control risk.",
"exploit_scenario": "The owner can set `_taxFee` to near 100%, lower `_maxTxAmount` to a tiny value, or toggle `swapAndLiquifyEnabled`/`presale` to change fee behavior. This allows the owner (or a compromised owner) to make sells revert or make transfers effectively confiscatory after users buy."
},
{
"title": "ETH payouts use .transfer and can revert if recipient is a contract",
"category": "other",
"evidence": "`transferToAddressETH` uses `.transfer` and is called from `swapTokens`.",
"severity": "low",
"locations": [
"contracts/Contract.sol:701",
"contracts/Contract.sol:702",
"contracts/Contract.sol:973",
"contracts/Contract.sol:974"
],
"recommendation": "Use `call{value: amount}('')` with success checks or a pull-payment pattern; ensure recipient addresses are EOAs if keeping `.transfer`.",
"exploit_scenario": "`swapTokens` sends ETH to `lp_poolAddress` and `marketingAddress` via `.transfer`. If either address is a contract with a fallback requiring more than 2300 gas or reverting (e.g., a multisig), swaps revert and sells can fail once `swapTokens` is triggered."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x02cd 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x625e764c 00000019: GT 0000001a: PUSH2 0x0175 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xa5ece941 00000024: GT 00000025: PUSH2 0x00dc 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xdd467064 0000002f: GT 00000030: PUSH2 0x0095 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xec28438a 0000003a: GT 0000003b: PUSH2 0x006f 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xec28438a 00000045: EQ 00000046: PUSH2 0x08de 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xedc2fcfb 00000050: EQ 00000051: PUSH2 0x08fe 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf0f165af 0000005b: EQ 0000005c: PUSH2 0x091e 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xf2fde38b 00000066: EQ 00000067: PUSH2 0x093e 0000006a: JUMPI 0000006b: PUSH1 0x00 0000006d: DUP1 0000006e: REVERT 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0xdd467064 00000076: EQ 00000077: PUSH2 0x0858 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xdd62ed3e 00000081: EQ 00000082: PUSH2 0x0878 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xea2f0b37 0000008c: EQ 0000008d: PUSH2 0x08be 00000090: JUMPI 00000091: PUSH1 0x00 00000093: DUP1 00000094: REVERT 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0xa5ece941 0000009c: EQ 0000009d: PUSH2 0x07ae 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xa69df4b5 000000a7: EQ 000000a8: PUSH2 0x07ce 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xa9059cbb 000000b2: EQ 000000b3: PUSH2 0x07e3 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xbdc653ef 000000bd: EQ 000000be: PUSH2 0x0803 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xc4081a4c 000000c8: EQ 000000c9: PUSH2 0x0818 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xc49b9a80 000000d3: EQ 000000d4: PUSH2 0x0838 000000d7: JUMPI 000000d8: PUSH1 0x00 000000da: DUP1 000000db: REVERT 000000dc: JUMPDEST 000000dd: DUP1 000000de: PUSH4 0x88f82020 000000e3: GT 000000e4: PUSH2 0x012e 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x88f82020 000000ee: EQ 000000ef: PUSH2 0x06ed 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x8da5cb5b 000000f9: EQ 000000fa: PUSH2 0x0726 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x906e9dd0 00000104: EQ 00000105: PUSH2 0x0744 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x95d89b41 0000010f: EQ 00000110: PUSH2 0x0764 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0xa073d37f 0000011a: EQ 0000011b: PUSH2 0x0779 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0xa457c2d7 00000125: EQ 00000126: PUSH2 0x078e 00000129: JUMPI 0000012a: PUSH1 0x00 0000012c: DUP1 0000012d: REVERT 0000012e: JUMPDEST 0000012f: DUP1 00000130: PUSH4 0x625e764c 00000135: EQ 00000136: PUSH2 0x064c 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x6b67c4df 00000140: EQ 00000141: PUSH2 0x066c 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x70a08231 0000014b: EQ 0000014c: PUSH2 0x0682 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x715018a6 00000156: EQ 00000157: PUSH2 0x06a2 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x7d1db4a5 00000161: EQ 00000162: PUSH2 0x06b7 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x82d2a4bb 0000016c: EQ 0000016d: PUSH2 0x06cd 00000170: JUMPI 00000171: PUSH1 0x00 00000173: DUP1 00000174: REVERT 00000175: JUMPDEST 00000176: DUP1 00000177: PUSH4 0x3b124fe7 0000017c: GT 0000017d: PUSH2 0x0234 00000180: JUMPI 00000181: DUP1 00000182: PUSH4 0x49bd5a5e 00000187: GT 00000188: PUSH2 0x01ed 0000018b: JUMPI 0000018c: DUP1 0000018d: PUSH4 0x5342acb4 00000192: GT 00000193: PUSH2 0x01c7 00000196: JUMPI 00000197: DUP1 00000198: PUSH4 0x5342acb4 0000019d: EQ 0000019e: PUSH2 0x05cb 000001a1: JUMPI 000001a2: DUP1 000001a3: PUSH4 0x557ed1ba 000001a8: EQ 000001a9: PUSH2 0x0604 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x602bc62b 000001b3: EQ 000001b4: PUSH2 0x0617 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x6053a0e3 000001be: EQ 000001bf: PUSH2 0x062c 000001c2: JUMPI 000001c3: PUSH1 0x00 000001c5: DUP1 000001c6: REVERT 000001c7: JUMPDEST 000001c8: DUP1 000001c9: PUSH4 0x49bd5a5e 000001ce: EQ 000001cf: PUSH2 0x0558 000001d2: JUMPI 000001d3: DUP1 000001d4: PUSH4 0x4a74bb02 000001d9: EQ 000001da: PUSH2 0x058c 000001dd: JUMPI 000001de: DUP1 000001df: PUSH4 0x52390c02 000001e4: EQ 000001e5: PUSH2 0x05ab 000001e8: JUMPI 000001e9: PUSH1 0x00 000001eb: DUP1 000001ec: REVERT 000001ed: JUMPDEST 000001ee: DUP1 000001ef: PUSH4 0x3b124fe7 000001f4: EQ 000001f5: PUSH2 0x04ac 000001f8: JUMPI 000001f9: DUP1 000001fa: PUSH4 0x3b2d081c 000001ff: EQ 00000200: PUSH2 0x04c2 00000203: JUMPI 00000204: DUP1 00000205: PUSH4 0x3bd5d173 0000020a: EQ 0000020b: PUSH2 0x04d8 0000020e: JUMPI 0000020f: DUP1 00000210: PUSH4 0x437823ec 00000215: EQ 00000216: PUSH2 0x04f8 00000219: JUMPI 0000021a: DUP1 0000021b: PUSH4 0x4549b039 00000220: EQ 00000221: PUSH2 0x0518 00000224: JUMPI 00000225: DUP1 00000226: PUSH4 0x4567bfba 0000022b: EQ 0000022c: PUSH2 0x0538 0000022f: JUMPI 00000230: PUSH1 0x00 00000232: DUP1 00000233: REVERT 00000234: JUMPDEST 00000235: DUP1 00000236: PUSH4 0x27c8f835 0000023b: GT 0000023c: PUSH2 0x0286 0000023f: JUMPI 00000240: DUP1 00000241: PUSH4 0x27c8f835 00000246: EQ 00000247: PUSH2 0x03d4 0000024a: JUMPI 0000024b: DUP1 0000024c: PUSH4 0x29370cc6 00000251: EQ 00000252: PUSH2 0x0408 00000255: JUMPI 00000256: DUP1 00000257: PUSH4 0x2d838119 0000025c: EQ 0000025d: PUSH2 0x042a 00000260: JUMPI 00000261: DUP1 00000262: PUSH4 0x313ce567 00000267: EQ 00000268: PUSH2 0x044a 0000026b: JUMPI 0000026c: DUP1 0000026d: PUSH4 0x3685d419 00000272: EQ 00000273: PUSH2 0x046c 00000276: JUMPI 00000277: DUP1 00000278: PUSH4 0x39509351 0000027d: EQ 0000027e: PUSH2 0x048c 00000281: JUMPI 00000282: PUSH1 0x00 00000284: DUP1 00000285: REVERT 00000286: JUMPDEST 00000287: DUP1 00000288: PUSH4 0x06fdde03 0000028d: EQ 0000028e: PUSH2 0x02d9 00000291: JUMPI 00000292: DUP1 00000293: PUSH4 0x095ea7b3 00000298: EQ 00000299: PUSH2 0x0304 0000029c: JUMPI 0000029d: DUP1 0000029e: PUSH4 0x13114a9d 000002a3: EQ 000002a4: PUSH2 0x0334 000002a7: JUMPI 000002a8: DUP1 000002a9: PUSH4 0x1694505e 000002ae: EQ 000002af: PUSH2 0x0353 000002b2: JUMPI 000002b3: DUP1 000002b4: PUSH4 0x18160ddd 000002b9: EQ 000002ba: PUSH2 0x039f 000002bd: JUMPI 000002be: DUP1 000002bf: PUSH4 0x23b872dd 000002c4: EQ 000002c5: PUSH2 0x03b4 000002c8: JUMPI 000002c9: PUSH1 0x00 000002cb: DUP1 000002cc: REVERT 000002cd: JUMPDEST 000002ce: CALLDATASIZE 000002cf: PUSH2 0x02d4 000002d2: JUMPI 000002d3: STOP 000002d4: JUMPDEST 000002d5: PUSH1 0x00 000002d7: DUP1 000002d8: REVERT 000002d9: JUMPDEST 000002da: CALLVALUE 000002db: DUP1 000002dc: ISZERO 000002dd: PUSH2 0x02e5 000002e0: JUMPI 000002e1: PUSH1 0x00 000002e3: DUP1 000002e4: REVERT 000002e5: JUMPDEST 000002e6: POP 000002e7: PUSH2 0x02ee 000002ea: PUSH2 0x095e 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH1 0x40 000002f1: MLOAD 000002f2: PUSH2 0x02fb 000002f5: SWAP2 000002f6: SWAP1 000002f7: PUSH2 0x2ade 000002fa: JUMP 000002fb: JUMPDEST 000002fc: PUSH1 0x40 000002fe: MLOAD 000002ff: DUP1 00000300: SWAP2 00000301: SUB 00000302: SWAP1 00000303: RETURN 00000304: JUMPDEST 00000305: CALLVALUE 00000306: DUP1 00000307: ISZERO 00000308: PUSH2 0x0310 0000030b: JUMPI 0000030c: PUSH1 0x00 0000030e: DUP1 0000030f: REVERT 00000310: JUMPDEST 00000311: POP 00000312: PUSH2 0x0324 00000315: PUSH2 0x031f 00000318: CALLDATASIZE 00000319: PUSH1 0x04 0000031b: PUSH2 0x29d9 0000031e: JUMP 0000031f: JUMPDEST 00000320: PUSH2 0x09f0 00000323: JUMP 00000324: JUMPDEST 00000325: PUSH1 0x40 00000327: MLOAD 00000328: SWAP1 00000329: ISZERO 0000032a: ISZERO 0000032b: DUP2 0000032c: MSTORE 0000032d: PUSH1 0x20 0000032f: ADD 00000330: PUSH2 0x02fb 00000333: JUMP 00000334: JUMPDEST 00000335: CALLVALUE 00000336: DUP1 00000337: ISZERO 00000338: PUSH2 0x0340 0000033b: JUMPI 0000033c: PUSH1 0x00 0000033e: DUP1 0000033f: REVERT 00000340: JUMPDEST 00000341: POP 00000342: PUSH1 0x0d 00000344: SLOAD 00000345: JUMPDEST 00000346: PUSH1 0x40 00000348: MLOAD 00000349: SWAP1 0000034a: DUP2 0000034b: MSTORE 0000034c: PUSH1 0x20 0000034e: ADD 0000034f: PUSH2 0x02fb 00000352: JUMP 00000353: JUMPDEST 00000354: CALLVALUE 00000355: DUP1 00000356: ISZERO 00000357: PUSH2 0x035f 0000035a: JUMPI 0000035b: PUSH1 0x00 0000035d: DUP1 0000035e: REVERT 0000035f: JUMPDEST 00000360: POP 00000361: PUSH2 0x0387 00000364: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 00000385: DUP2 00000386: JUMP 00000387: JUMPDEST 00000388: PUSH1 0x40 0000038a: MLOAD 0000038b: PUSH1 0x01 0000038d: PUSH1 0x01 0000038f: PUSH1 0xa0 00000391: SHL 00000392: SUB 00000393: SWAP1 00000394: SWAP2 00000395: AND 00000396: DUP2 00000397: MSTORE 00000398: PUSH1 0x20 0000039a: ADD 0000039b: PUSH2 0x02fb 0000039e: JUMP 0000039f: JUMPDEST 000003a0: CALLVALUE 000003a1: DUP1 000003a2: ISZERO 000003a3: PUSH2 0x03ab 000003a6: JUMPI 000003a7: PUSH1 0x00 000003a9: DUP1 000003aa: REVERT 000003ab: JUMPDEST 000003ac: POP 000003ad: PUSH1 0x0b 000003af: SLOAD 000003b0: PUSH2 0x0345 000003b3: JUMP 000003b4: JUMPDEST 000003b5: CALLVALUE 000003b6: DUP1 000003b7: ISZERO 000003b8: PUSH2 0x03c0 000003bb: JUMPI 000003bc: PUSH1 0x00 000003be: DUP1 000003bf: REVERT 000003c0: JUMPDEST 000003c1: POP 000003c2: PUSH2 0x0324 000003c5: PUSH2 0x03cf 000003c8: CALLDATASIZE 000003c9: PUSH1 0x04 000003cb: PUSH2 0x2998 000003ce: JUMP 000003cf: JUMPDEST 000003d0: PUSH2 0x0a07 000003d3: JUMP 000003d4: JUMPDEST 000003d5: CALLVALUE 000003d6: DUP1 000003d7: ISZERO 000003d8: PUSH2 0x03e0 000003db: JUMPI 000003dc: PUSH1 0x00 000003de: DUP1 000003df: REVERT 000003e0: JUMPDEST 000003e1: POP 000003e2: PUSH2 0x0387 000003e5: PUSH32 0x000000000000000000000000000000000000000000000000000000000000dead 00000406: DUP2 00000407: JUMP 00000408: JUMPDEST 00000409: CALLVALUE 0000040a: DUP1 0000040b: ISZERO 0000040c: PUSH2 0x0414 0000040f: JUMPI 00000410: PUSH1 0x00 00000412: DUP1 00000413: REVERT 00000414: JUMPDEST 00000415: POP 00000416: PUSH2 0x0428 00000419: PUSH2 0x0423 0000041c: CALLDATASIZE 0000041d: PUSH1 0x04 0000041f: PUSH2 0x2a05 00000422: JUMP 00000423: JUMPDEST 00000424: PUSH2 0x0a70 00000427: JUMP 00000428: JUMPDEST 00000429: STOP 0000042a: JUMPDEST 0000042b: CALLVALUE 0000042c: DUP1 0000042d: ISZERO 0000042e: PUSH2 0x0436 00000431: JUMPI 00000432: PUSH1 0x00 00000434: DUP1 00000435: REVERT 00000436: JUMPDEST 00000437: POP 00000438: PUSH2 0x0345 0000043b: PUSH2 0x0445 0000043e: CALLDATASIZE 0000043f: PUSH1 0x04 00000441: PUSH2 0x2a20 00000444: JUMP 00000445: JUMPDEST 00000446: PUSH2 0x0af9 00000449: JUMP 0000044a: JUMPDEST 0000044b: CALLVALUE 0000044c: DUP1 0000044d: ISZERO 0000044e: PUSH2 0x0456 00000451: JUMPI 00000452: PUSH1 0x00 00000454: DUP1 00000455: REVERT 00000456: JUMPDEST 00000457: POP 00000458: PUSH1 0x10 0000045a: SLOAD 0000045b: PUSH1 0x40 0000045d: MLOAD 0000045e: PUSH1 0xff 00000460: SWAP1 00000461: SWAP2 00000462: AND 00000463: DUP2 00000464: MSTORE 00000465: PUSH1 0x20 00000467: ADD 00000468: PUSH2 0x02fb 0000046b: JUMP 0000046c: JUMPDEST 0000046d: CALLVALUE 0000046e: DUP1 0000046f: ISZERO 00000470: PUSH2 0x0478 00000473: JUMPI 00000474: PUSH1 0x00 00000476: DUP1 00000477: REVERT 00000478: JUMPDEST 00000479: POP 0000047a: PUSH2 0x0428 0000047d: PUSH2 0x0487 00000480: CALLDATASIZE 00000481: PUSH1 0x04 00000483: PUSH2 0x2925 00000486: JUMP 00000487: JUMPDEST 00000488: PUSH2 0x0b7d 0000048b: JUMP 0000048c: JUMPDEST 0000048d: CALLVALUE 0000048e: DUP1 0000048f: ISZERO 00000490: PUSH2 0x0498 00000493: JUMPI 00000494: PUSH1 0x00 00000496: DUP1 00000497: REVERT 00000498: JUMPDEST 00000499: POP 0000049a: PUSH2 0x0324 0000049d: PUSH2 0x04a7 000004a0: CALLDATASIZE 000004a1: PUSH1 0x04 000004a3: PUSH2 0x29d9 000004a6: JUMP 000004a7: JUMPDEST 000004a8: PUSH2 0x0d34 000004ab: JUMP 000004ac: JUMPDEST 000004ad: CALLVALUE 000004ae: DUP1 000004af: ISZERO 000004b0: PUSH2 0x04b8 000004b3: JUMPI 000004b4: PUSH1 0x00 000004b6: DUP1 000004b7: REVERT 000004b8: JUMPDEST 000004b9: POP 000004ba: PUSH2 0x0345 000004bd: PUSH1 0x11 000004bf: SLOAD 000004c0: DUP2 000004c1: JUMP 000004c2: JUMPDEST 000004c3: CALLVALUE 000004c4: DUP1 000004c5: ISZERO 000004c6: PUSH2 0x04ce 000004c9: JUMPI 000004ca: PUSH1 0x00 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: POP 000004d0: PUSH2 0x0345 000004d3: PUSH1 0x15 000004d5: SLOAD 000004d6: DUP2 000004d7: JUMP 000004d8: JUMPDEST 000004d9: CALLVALUE 000004da: DUP1 000004db: ISZERO 000004dc: PUSH2 0x04e4 000004df: JUMPI 000004e0: PUSH1 0x00 000004e2: DUP1 000004e3: REVERT 000004e4: JUMPDEST 000004e5: POP 000004e6: PUSH2 0x0428 000004e9: PUSH2 0x04f3 000004ec: CALLDATASIZE 000004ed: PUSH1 0x04 000004ef: PUSH2 0x2a20 000004f2: JUMP 000004f3: JUMPDEST 000004f4: PUSH2 0x0d6a 000004f7: JUMP 000004f8: JUMPDEST 000004f9: CALLVALUE 000004fa: DUP1 000004fb: ISZERO 000004fc: PUSH2 0x0504 000004ff: JUMPI 00000500: PUSH1 0x00 00000502: DUP1 00000503: REVERT 00000504: JUMPDEST 00000505: POP 00000506: PUSH2 0x0428 00000509: PUSH2 0x0513 0000050c: CALLDATASIZE 0000050d: PUSH1 0x04 0000050f: PUSH2 0x2925 00000512: JUMP 00000513: JUMPDEST 00000514: PUSH2 0x0e54 00000517: JUMP 00000518: JUMPDEST 00000519: CALLVALUE 0000051a: DUP1 0000051b: ISZERO 0000051c: PUSH2 0x0524 0000051f: JUMPI 00000520: PUSH1 0x00 00000522: DUP1 00000523: REVERT 00000524: JUMPDEST 00000525: POP 00000526: PUSH2 0x0345 00000529: PUSH2 0x0533 0000052c: CALLDATASIZE 0000052d: PUSH1 0x04 0000052f: PUSH2 0x2a39 00000532: JUMP 00000533: JUMPDEST 00000534: PUSH2 0x0ea2 00000537: JUMP 00000538: JUMPDEST 00000539: CALLVALUE 0000053a: DUP1 0000053b: ISZERO 0000053c: PUSH2 0x0544 0000053f: JUMPI 00000540: PUSH1 0x00 00000542: DUP1 00000543: REVERT 00000544: JUMPDEST 00000545: POP 00000546: PUSH2 0x0428 00000549: PUSH2 0x0553 0000054c: CALLDATASIZE 0000054d: PUSH1 0x04 0000054f: PUSH2 0x2a20 00000552: JUMP 00000553: JUMPDEST 00000554: PUSH2 0x0f2f 00000557: JUMP 00000558: JUMPDEST 00000559: CALLVALUE 0000055a: DUP1 0000055b: ISZERO 0000055c: PUSH2 0x0564 0000055f: JUMPI 00000560: PUSH1 0x00 00000562: DUP1 00000563: REVERT 00000564: JUMPDEST 00000565: POP 00000566: PUSH2 0x0387 00000569: PUSH32 0x00000000000000000000000045770059777f0f6ed0178147d32d27d845d386b9 0000058a: DUP2 0000058b: JUMP 0000058c: JUMPDEST 0000058d: CALLVALUE 0000058e: DUP1 0000058f: ISZERO 00000590: PUSH2 0x0598 00000593: JUMPI 00000594: PUSH1 0x00 00000596: DUP1 00000597: REVERT 00000598: JUMPDEST 00000599: POP 0000059a: PUSH1 0x1d 0000059c: SLOAD 0000059d: PUSH2 0x0324 000005a0: SWAP1 000005a1: PUSH2 0x0100 000005a4: SWAP1 000005a5: DIV 000005a6: PUSH1 0xff 000005a8: AND 000005a9: DUP2 000005aa: JUMP 000005ab: JUMPDEST 000005ac: CALLVALUE 000005ad: DUP1 000005ae: ISZERO 000005af: PUSH2 0x05b7 000005b2: JUMPI 000005b3: PUSH1 0x00 000005b5: DUP1 000005b6: REVERT 000005b7: JUMPDEST 000005b8: POP 000005b9: PUSH2 0x0428 000005bc: PUSH2 0x05c6 000005bf: CALLDATASIZE 000005c0: PUSH1 0x04 000005c2: PUSH2 0x2925 000005c5: JUMP 000005c6: JUMPDEST 000005c7: PUSH2 0x0f72 000005ca: JUMP 000005cb: JUMPDEST 000005cc: CALLVALUE 000005cd: DUP1 000005ce: ISZERO 000005cf: PUSH2 0x05d7 000005d2: JUMPI 000005d3: PUSH1 0x00 000005d5: DUP1 000005d6: REVERT 000005d7: JUMPDEST 000005d8: POP 000005d9: PUSH2 0x0324 000005dc: PUSH2 0x05e6 000005df: CALLDATASIZE 000005e0: PUSH1 0x04 000005e2: PUSH2 0x2925 000005e5: JUMP 000005e6: JUMPDEST 000005e7: PUSH1 0x01 000005e9: PUSH1 0x01 000005eb: PUSH1 0xa0 000005ed: SHL 000005ee: SUB 000005ef: AND 000005f0: PUSH1 0x00 000005f2: SWAP1 000005f3: DUP2 000005f4: MSTORE 000005f5: PUSH1 0x08 000005f7: PUSH1 0x20 000005f9: MSTORE 000005fa: PUSH1 0x40 000005fc: SWAP1 000005fd: KECCAK256 000005fe: SLOAD 000005ff: PUSH1 0xff 00000601: AND 00000602: SWAP1 00000603: JUMP 00000604: JUMPDEST 00000605: CALLVALUE 00000606: DUP1 00000607: ISZERO 00000608: PUSH2 0x0610 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: REVERT 00000610: JUMPDEST 00000611: POP 00000612: TIMESTAMP 00000613: PUSH2 0x0345 00000616: JUMP 00000617: JUMPDEST 00000618: CALLVALUE 00000619: DUP1 0000061a: ISZERO 0000061b: PUSH2 0x0623 0000061e: JUMPI 0000061f: PUSH1 0x00 00000621: DUP1 00000622: REVERT 00000623: JUMPDEST 00000624: POP 00000625: PUSH1 0x02 00000627: SLOAD 00000628: PUSH2 0x0345 0000062b: JUMP 0000062c: JUMPDEST 0000062d: CALLVALUE 0000062e: DUP1 0000062f: ISZERO 00000630: PUSH2 0x0638 00000633: JUMPI 00000634: PUSH1 0x00 00000636: DUP1 00000637: REVERT 00000638: JUMPDEST 00000639: POP 0000063a: PUSH1 0x1d 0000063c: SLOAD 0000063d: PUSH2 0x0324 00000640: SWAP1 00000641: PUSH3 0x010000 00000645: SWAP1 00000646: DIV 00000647: PUSH1 0xff 00000649: AND 0000064a: DUP2 0000064b: JUMP 0000064c: JUMPDEST 0000064d: CALLVALUE 0000064e: DUP1 0000064f: ISZERO 00000650: PUSH2 0x0658 00000653: JUMPI 00000654: PUSH1 0x00 00000656: DUP1 00000657: REVERT 00000658: JUMPDEST 00000659: POP 0000065a: PUSH2 0x0428 0000065d: PUSH2 0x0667 00000660: CALLDATASIZE 00000661: PUSH1 0x04 00000663: PUSH2 0x2a20 00000666: JUMP 00000667: JUMPDEST 00000668: PUSH2 0x10c5 0000066b: JUMP 0000066c: JUMPDEST 0000066d: CALLVALUE 0000066e: DUP1 0000066f: ISZERO 00000670: PUSH2 0x0678 00000673: JUMPI 00000674: PUSH1 0x00 00000676: DUP1 00000677: REVERT 00000678: JUMPDEST 00000679: POP 0000067a: PUSH2 0x0345 0000067d: PUSH1 0x17 0000067f: SLOAD 00000680: DUP2 00000681: JUMP 00000682: JUMPDEST 00000683: CALLVALUE 00000684: DUP1 00000685: ISZERO 00000686: PUSH2 0x068e 00000689: JUMPI 0000068a: PUSH1 0x00 0000068c: DUP1 0000068d: REVERT 0000068e: JUMPDEST 0000068f: POP 00000690: PUSH2 0x0345 00000693: PUSH2 0x069d 00000696: CALLDATASIZE 00000697: PUSH1 0x04 00000699: PUSH2 0x2925 0000069c: JUMP 0000069d: JUMPDEST 0000069e: PUSH2 0x1101 000006a1: JUMP 000006a2: JUMPDEST 000006a3: CALLVALUE 000006a4: DUP1 000006a5: ISZERO 000006a6: PUSH2 0x06ae 000006a9: JUMPI 000006aa: PUSH1 0x00 000006ac: DUP1 000006ad: REVERT 000006ae: JUMPDEST 000006af: POP 000006b0: PUSH2 0x0428 000006b3: PUSH2 0x1160 000006b6: JUMP 000006b7: JUMPDEST 000006b8: CALLVALUE 000006b9: DUP1 000006ba: ISZERO 000006bb: PUSH2 0x06c3 000006be: JUMPI 000006bf: PUSH1 0x00 000006c1: DUP1 000006c2: REVERT 000006c3: JUMPDEST 000006c4: POP 000006c5: PUSH2 0x0345 000006c8: PUSH1 0x19 000006ca: SLOAD 000006cb: DUP2 000006cc: JUMP 000006cd: JUMPDEST 000006ce: CALLVALUE 000006cf: DUP1 000006d0: ISZERO 000006d1: PUSH2 0x06d9 000006d4: JUMPI 000006d5: PUSH1 0x00 000006d7: DUP1 000006d8: REVERT 000006d9: JUMPDEST 000006da: POP 000006db: PUSH2 0x0428 000006de: PUSH2 0x06e8 000006e1: CALLDATASIZE 000006e2: PUSH1 0x04 000006e4: PUSH2 0x2a20 000006e7: JUMP 000006e8: JUMPDEST 000006e9: PUSH2 0x11c2 000006ec: JUMP 000006ed: JUMPDEST 000006ee: CALLVALUE 000006ef: DUP1 000006f0: ISZERO 000006f1: PUSH2 0x06f9 000006f4: JUMPI 000006f5: PUSH1 0x00 000006f7: DUP1 000006f8: REVERT 000006f9: JUMPDEST 000006fa: POP 000006fb: PUSH2 0x0324 000006fe: PUSH2 0x0708 00000701: CALLDATASIZE 00000702: PUSH1 0x04 00000704: PUSH2 0x2925 00000707: JUMP 00000708: JUMPDEST 00000709: PUSH1 0x01 0000070b: PUSH1 0x01 0000070d: PUSH1 0xa0 0000070f: SHL 00000710: SUB 00000711: AND 00000712: PUSH1 0x00 00000714: SWAP1 00000715: DUP2 00000716: MSTORE 00000717: PUSH1 0x09 00000719: PUSH1 0x20 0000071b: MSTORE 0000071c: PUSH1 0x40 0000071e: SWAP1 0000071f: KECCAK256 00000720: SLOAD 00000721: PUSH1 0xff 00000723: AND 00000724: SWAP1 00000725: JUMP 00000726: JUMPDEST 00000727: CALLVALUE 00000728: DUP1 00000729: ISZERO 0000072a: PUSH2 0x0732 0000072d: JUMPI 0000072e: PUSH1 0x00 00000730: DUP1 00000731: REVERT 00000732: JUMPDEST 00000733: POP 00000734: PUSH1 0x00 00000736: SLOAD 00000737: PUSH1 0x01 00000739: PUSH1 0x01 0000073b: PUSH1 0xa0 0000073d: SHL 0000073e: SUB 0000073f: AND 00000740: PUSH2 0x0387 00000743: JUMP 00000744: JUMPDEST 00000745: CALLVALUE 00000746: DUP1 00000747: ISZERO 00000748: PUSH2 0x0750 0000074b: JUMPI 0000074c: PUSH1 0x00 0000074e: DUP1 0000074f: REVERT 00000750: JUMPDEST 00000751: POP 00000752: PUSH2 0x0428 00000755: PUSH2 0x075f 00000758: CALLDATASIZE 00000759: PUSH1 0x04 0000075b: PUSH2 0x2925 0000075e: JUMP 0000075f: JUMPDEST 00000760: PUSH2 0x11f1 00000763: JUMP 00000764: JUMPDEST 00000765: CALLVALUE 00000766: DUP1 00000767: ISZERO 00000768: PUSH2 0x0770 0000076b: JUMPI 0000076c: PUSH1 0x00 0000076e: DUP1 0000076f: REVERT 00000770: JUMPDEST 00000771: POP 00000772: PUSH2 0x02ee 00000775: PUSH2 0x123d 00000778: JUMP 00000779: JUMPDEST 0000077a: CALLVALUE 0000077b: DUP1 0000077c: ISZERO 0000077d: PUSH2 0x0785 00000780: JUMPI 00000781: PUSH1 0x00 00000783: DUP1 00000784: REVERT 00000785: JUMPDEST 00000786: POP 00000787: PUSH1 0x1b 00000789: SLOAD 0000078a: PUSH2 0x0345 0000078d: JUMP 0000078e: JUMPDEST 0000078f: CALLVALUE 00000790: DUP1 00000791: ISZERO 00000792: PUSH2 0x079a 00000795: JUMPI 00000796: PUSH1 0x00 00000798: DUP1 00000799: REVERT 0000079a: JUMPDEST 0000079b: POP 0000079c: PUSH2 0x0324 0000079f: PUSH2 0x07a9 000007a2: CALLDATASIZE 000007a3: PUSH1 0x04 000007a5: PUSH2 0x29d9 000007a8: JUMP 000007a9: JUMPDEST 000007aa: PUSH2 0x124c 000007ad: JUMP 000007ae: JUMPDEST 000007af: CALLVALUE 000007b0: DUP1 000007b1: ISZERO 000007b2: PUSH2 0x07ba 000007b5: JUMPI 000007b6: PUSH1 0x00 000007b8: DUP1 000007b9: REVERT 000007ba: JUMPDEST 000007bb: POP 000007bc: PUSH1 0x04 000007be: SLOAD 000007bf: PUSH2 0x0387 000007c2: SWAP1 000007c3: PUSH1 0x01 000007c5: PUSH1 0x01 000007c7: PUSH1 0xa0 000007c9: SHL 000007ca: SUB 000007cb: AND 000007cc: DUP2 000007cd: JUMP 000007ce: JUMPDEST 000007cf: CALLVALUE 000007d0: DUP1 000007d1: ISZERO 000007d2: PUSH2 0x07da 000007d5: JUMPI 000007d6: PUSH1 0x00 000007d8: DUP1 000007d9: REVERT 000007da: JUMPDEST 000007db: POP 000007dc: PUSH2 0x0428 000007df: PUSH2 0x129b 000007e2: JUMP 000007e3: JUMPDEST 000007e4: CALLVALUE 000007e5: DUP1 000007e6: ISZERO 000007e7: PUSH2 0x07ef 000007ea: JUMPI 000007eb: PUSH1 0x00 000007ed: DUP1 000007ee: REVERT 000007ef: JUMPDEST 000007f0: POP 000007f1: PUSH2 0x0324 000007f4: PUSH2 0x07fe 000007f7: CALLDATASIZE 000007f8: PUSH1 0x04 000007fa: PUSH2 0x29d9 000007fd: JUMP 000007fe: JUMPDEST 000007ff: PUSH2 0x13a1 00000802: JUMP 00000803: JUMPDEST 00000804: CALLVALUE 00000805: DUP1 00000806: ISZERO 00000807: PUSH2 0x080f 0000080a: JUMPI 0000080b: PUSH1 0x00 0000080d: DUP1 0000080e: REVERT 0000080f: JUMPDEST 00000810: POP 00000811: PUSH1 0x1c 00000813: SLOAD 00000814: PUSH2 0x0345 00000817: JUMP 00000818: JUMPDEST 00000819: CALLVALUE 0000081a: DUP1 0000081b: ISZERO 0000081c: PUSH2 0x0824 0000081f: JUMPI 00000820: PUSH1 0x00 00000822: DUP1 00000823: REVERT 00000824: JUMPDEST 00000825: POP 00000826: PUSH2 0x0428 00000829: PUSH2 0x0833 0000082c: CALLDATASIZE 0000082d: PUSH1 0x04 0000082f: PUSH2 0x2a20 00000832: JUMP 00000833: JUMPDEST 00000834: PUSH2 0x13ae 00000837: JUMP 00000838: JUMPDEST 00000839: CALLVALUE 0000083a: DUP1 0000083b: ISZERO 0000083c: PUSH2 0x0844 0000083f: JUMPI 00000840: PUSH1 0x00 00000842: DUP1 00000843: REVERT 00000844: JUMPDEST 00000845: POP 00000846: PUSH2 0x0428 00000849: PUSH2 0x0853 0000084c: CALLDATASIZE 0000084d: PUSH1 0x04 0000084f: PUSH2 0x2a05 00000852: JUMP 00000853: JUMPDEST 00000854: PUSH2 0x13dd 00000857: JUMP 00000858: JUMPDEST 00000859: CALLVALUE 0000085a: DUP1 0000085b: ISZERO 0000085c: PUSH2 0x0864 0000085f: JUMPI 00000860: PUSH1 0x00 00000862: DUP1 00000863: REVERT 00000864: JUMPDEST 00000865: POP 00000866: PUSH2 0x0428 00000869: PUSH2 0x0873 0000086c: CALLDATASIZE 0000086d: PUSH1 0x04 0000086f: PUSH2 0x2a20 00000872: JUMP 00000873: JUMPDEST 00000874: PUSH2 0x1450 00000877: JUMP 00000878: JUMPDEST 00000879: CALLVALUE 0000087a: DUP1 0000087b: ISZERO 0000087c: PUSH2 0x0884 0000087f: JUMPI 00000880: PUSH1 0x00 00000882: DUP1 00000883: REVERT 00000884: JUMPDEST 00000885: POP 00000886: PUSH2 0x0345 00000889: PUSH2 0x0893 0000088c: CALLDATASIZE 0000088d: PUSH1 0x04 0000088f: PUSH2 0x295f 00000892: JUMP 00000893: JUMPDEST 00000894: PUSH1 0x01 00000896: PUSH1 0x01 00000898: PUSH1 0xa0 0000089a: SHL 0000089b: SUB 0000089c: SWAP2 0000089d: DUP3 0000089e: AND 0000089f: PUSH1 0x00 000008a1: SWAP1 000008a2: DUP2 000008a3: MSTORE 000008a4: PUSH1 0x07 000008a6: PUSH1 0x20 000008a8: SWAP1 000008a9: DUP2 000008aa: MSTORE 000008ab: PUSH1 0x40 000008ad: DUP1 000008ae: DUP4 000008af: KECCAK256 000008b0: SWAP4 000008b1: SWAP1 000008b2: SWAP5 000008b3: AND 000008b4: DUP3 000008b5: MSTORE 000008b6: SWAP2 000008b7: SWAP1 000008b8: SWAP2 000008b9: MSTORE 000008ba: KECCAK256 000008bb: SLOAD 000008bc: SWAP1 000008bd: JUMP 000008be: JUMPDEST 000008bf: CALLVALUE 000008c0: DUP1 000008c1: ISZERO 000008c2: PUSH2 0x08ca 000008c5: JUMPI 000008c6: PUSH1 0x00 000008c8: DUP1 000008c9: REVERT 000008ca: JUMPDEST 000008cb: POP 000008cc: PUSH2 0x0428 000008cf: PUSH2 0x08d9 000008d2: CALLDATASIZE 000008d3: PUSH1 0x04 000008d5: PUSH2 0x2925 000008d8: JUMP 000008d9: JUMPDEST 000008da: PUSH2 0x14d5 000008dd: JUMP 000008de: JUMPDEST 000008df: CALLVALUE 000008e0: DUP1 000008e1: ISZERO 000008e2: PUSH2 0x08ea 000008e5: JUMPI 000008e6: PUSH1 0x00 000008e8: DUP1 000008e9: REVERT 000008ea: JUMPDEST 000008eb: POP 000008ec: PUSH2 0x0428 000008ef: PUSH2 0x08f9 000008f2: CALLDATASIZE 000008f3: PUSH1 0x04 000008f5: PUSH2 0x2a20 000008f8: JUMP 000008f9: JUMPDEST 000008fa: PUSH2 0x1520 000008fd: JUMP 000008fe: JUMPDEST 000008ff: CALLVALUE 00000900: DUP1 00000901: ISZERO 00000902: PUSH2 0x090a 00000905: JUMPI 00000906: PUSH1 0x00 00000908: DUP1 00000909: REVERT 0000090a: JUMPDEST 0000090b: POP 0000090c: PUSH2 0x0428 0000090f: PUSH2 0x0919 00000912: CALLDATASIZE 00000913: PUSH1 0x04 00000915: PUSH2 0x2a05 00000918: JUMP 00000919: JUMPDEST 0000091a: PUSH2 0x154f 0000091d: JUMP 0000091e: JUMPDEST 0000091f: CALLVALUE 00000920: DUP1 00000921: ISZERO 00000922: PUSH2 0x092a 00000925: JUMPI 00000926: PUSH1 0x00 00000928: DUP1 00000929: REVERT 0000092a: JUMPDEST 0000092b: POP 0000092c: PUSH2 0x0428 0000092f: PUSH2 0x0939 00000932: CALLDATASIZE 00000933: PUSH1 0x04 00000935: PUSH2 0x2a20 00000938: JUMP 00000939: JUMPDEST 0000093a: PUSH2 0x15d1 0000093d: JUMP 0000093e: JUMPDEST 0000093f: CALLVALUE 00000940: DUP1 00000941: ISZERO 00000942: PUSH2 0x094a 00000945: JUMPI 00000946: PUSH1 0x00 00000948: DUP1 00000949: REVERT 0000094a: JUMPDEST 0000094b: POP 0000094c: PUSH2 0x0428 0000094f: PUSH2 0x0959 00000952: CALLDATASIZE 00000953: PUSH1 0x04 00000955: PUSH2 0x2925 00000958: JUMP 00000959: JUMPDEST 0000095a: PUSH2 0x1600 0000095d: JUMP 0000095e: JUMPDEST 0000095f: PUSH1 0x60 00000961: PUSH1 0x0e 00000963: DUP1 00000964: SLOAD 00000965: PUSH2 0x096d 00000968: SWAP1 00000969: PUSH2 0x2c35 0000096c: JUMP 0000096d: JUMPDEST 0000096e: DUP1 0000096f: PUSH1 0x1f 00000971: ADD 00000972: PUSH1 0x20 00000974: DUP1 00000975: SWAP2 00000976: DIV 00000977: MUL 00000978: PUSH1 0x20 0000097a: ADD 0000097b: PUSH1 0x40 0000097d: MLOAD 0000097e: SWAP1 0000097f: DUP2 00000980: ADD 00000981: PUSH1 0x40 00000983: MSTORE 00000984: DUP1 00000985: SWAP3 00000986: SWAP2 00000987: SWAP1 00000988: DUP2 00000989: DUP2 0000098a: MSTORE 0000098b: PUSH1 0x20 0000098d: ADD 0000098e: DUP3 0000098f: DUP1 00000990: SLOAD 00000991: PUSH2 0x0999 00000994: SWAP1 00000995: PUSH2 0x2c35 00000998: JUMP 00000999: JUMPDEST 0000099a: DUP1 0000099b: ISZERO 0000099c: PUSH2 0x09e6 0000099f: JUMPI 000009a0: DUP1 000009a1: PUSH1 0x1f 000009a3: LT 000009a4: PUSH2 0x09bb 000009a7: JUMPI 000009a8: PUSH2 0x0100 000009ab: DUP1 000009ac: DUP4 000009ad: SLOAD 000009ae: DIV 000009af: MUL 000009b0: DUP4 000009b1: MSTORE 000009b2: SWAP2 000009b3: PUSH1 0x20 000009b5: ADD 000009b6: SWAP2 000009b7: PUSH2 0x09e6 000009ba: JUMP 000009bb: JUMPDEST 000009bc: DUP3 000009bd: ADD 000009be: SWAP2 000009bf: SWAP1 000009c0: PUSH1 0x00 000009c2: MSTORE 000009c3: PUSH1 0x20 000009c5: PUSH1 0x00 000009c7: KECCAK256 000009c8: SWAP1 000009c9: JUMPDEST 000009ca: DUP2 000009cb: SLOAD 000009cc: DUP2 000009cd: MSTORE 000009ce: SWAP1 000009cf: PUSH1 0x01 000009d1: ADD 000009d2: SWAP1 000009d3: PUSH1 0x20 000009d5: ADD 000009d6: DUP1 000009d7: DUP4 000009d8: GT 000009d9: PUSH2 0x09c9 000009dc: JUMPI 000009dd: DUP3 000009de: SWAP1 000009df: SUB 000009e0: PUSH1 0x1f 000009e2: AND 000009e3: DUP3 000009e4: ADD 000009e5: SWAP2 000009e6: JUMPDEST 000009e7: POP 000009e8: POP 000009e9: POP 000009ea: POP 000009eb: POP 000009ec: SWAP1 000009ed: POP 000009ee: SWAP1 000009ef: JUMP 000009f0: JUMPDEST 000009f1: PUSH1 0x00 000009f3: PUSH2 0x09fd 000009f6: CALLER 000009f7: DUP5 000009f8: DUP5 000009f9: PUSH2 0x1799 000009fc: JUMP 000009fd: JUMPDEST 000009fe: POP 000009ff: PUSH1 0x01 00000a01: JUMPDEST 00000a02: SWAP3 00000a03: SWAP2 00000a04: POP 00000a05: POP 00000a06: JUMP 00000a07: JUMPDEST 00000a08: PUSH1 0x00 00000a0a: PUSH2 0x0a14 00000a0d: DUP5 00000a0e: DUP5 00000a0f: DUP5 00000a10: PUSH2 0x18bd 00000a13: JUMP 00000a14: JUMPDEST 00000a15: PUSH2 0x0a66 00000a18: DUP5 00000a19: CALLER 00000a1a: PUSH2 0x0a61 00000a1d: DUP6 00000a1e: PUSH1 0x40 00000a20: MLOAD 00000a21: DUP1 00000a22: PUSH1 0x60 00000a24: ADD 00000a25: PUSH1 0x40 00000a27: MSTORE 00000a28: DUP1 00000a29: PUSH1 0x28 00000a2b: DUP2 00000a2c: MSTORE 00000a2d: PUSH1 0x20 00000a2f: ADD 00000a30: PUSH2 0x2ce3 00000a33: PUSH1 0x28 00000a35: SWAP2 00000a36: CODECOPY 00000a37: PUSH1 0x01 00000a39: PUSH1 0x01 00000a3b: PUSH1 0xa0 00000a3d: SHL 00000a3e: SUB 00000a3f: DUP11 00000a40: AND 00000a41: PUSH1 0x00 00000a43: SWAP1 00000a44: DUP2 00000a45: MSTORE 00000a46: PUSH1 0x07 00000a48: PUSH1 0x20 00000a4a: SWAP1 00000a4b: DUP2 00000a4c: MSTORE 00000a4d: PUSH1 0x40 00000a4f: DUP1 00000a50: DUP4 00000a51: KECCAK256 00000a52: CALLER 00000a53: DUP5 00000a54: MSTORE 00000a55: SWAP1 00000a56: SWAP2 00000a57: MSTORE 00000a58: SWAP1 00000a59: KECCAK256 00000a5a: SLOAD 00000a5b: SWAP2 00000a5c: SWAP1 00000a5d: PUSH2 0x1ba7 00000a60: JUMP 00000a61: JUMPDEST 00000a62: PUSH2 0x1799 00000a65: JUMP 00000a66: JUMPDEST 00000a67: POP 00000a68: PUSH1 0x01 00000a6a: SWAP4 00000a6b: SWAP3 00000a6c: POP 00000a6d: POP 00000a6e: POP 00000a6f: JUMP 00000a70: JUMPDEST 00000a71: PUSH1 0x00 00000a73: SLOAD 00000a74: PUSH1 0x01 00000a76: PUSH1 0x01 00000a78: PUSH1 0xa0 00000a7a: SHL 00000a7b: SUB 00000a7c: AND 00000a7d: CALLER 00000a7e: EQ 00000a7f: PUSH2 0x0aa3 00000a82: JUMPI 00000a83: PUSH1 0x40 00000a85: MLOAD 00000a86: PUSH3 0x461bcd 00000a8a: PUSH1 0xe5 00000a8c: SHL 00000a8d: DUP2 00000a8e: MSTORE 00000a8f: PUSH1 0x04 00000a91: ADD 00000a92: PUSH2 0x0a9a 00000a95: SWAP1 00000a96: PUSH2 0x2b33 00000a99: JUMP 00000a9a: JUMPDEST 00000a9b: PUSH1 0x40 00000a9d: MLOAD 00000a9e: DUP1 00000a9f: SWAP2 00000aa0: SUB 00000aa1: SWAP1 00000aa2: REVERT 00000aa3: JUMPDEST 00000aa4: PUSH1 0x1d 00000aa6: DUP1 00000aa7: SLOAD 00000aa8: DUP3 00000aa9: ISZERO 00000aaa: ISZERO 00000aab: PUSH3 0x010000 00000aaf: MUL 00000ab0: PUSH3 0xff0000 00000ab4: NOT 00000ab5: SWAP1 00000ab6: SWAP2 00000ab7: AND 00000ab8: OR 00000ab9: SWAP1 00000aba: SSTORE 00000abb: PUSH1 0x40 00000abd: MLOAD 00000abe: PUSH32 0x3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0 00000adf: SWAP1 00000ae0: PUSH2 0x0aee 00000ae3: SWAP1 00000ae4: DUP4 00000ae5: ISZERO 00000ae6: ISZERO 00000ae7: DUP2 00000ae8: MSTORE 00000ae9: PUSH1 0x20 00000aeb: ADD 00000aec: SWAP1 00000aed: JUMP 00000aee: JUMPDEST 00000aef: PUSH1 0x40 00000af1: MLOAD 00000af2: DUP1 00000af3: SWAP2 00000af4: SUB 00000af5: SWAP1 00000af6: LOG1 00000af7: POP 00000af8: JUMP 00000af9: JUMPDEST 00000afa: PUSH1 0x00 00000afc: PUSH1 0x0c 00000afe: SLOAD 00000aff: DUP3 00000b00: GT 00000b01: ISZERO 00000b02: PUSH2 0x0b60 00000b05: JUMPI 00000b06: PUSH1 0x40 00000b08: MLOAD 00000b09: PUSH3 0x461bcd 00000b0d: PUSH1 0xe5 00000b0f: SHL 00000b10: DUP2 00000b11: MSTORE 00000b12: PUSH1 0x20 00000b14: PUSH1 0x04 00000b16: DUP3 00000b17: ADD 00000b18: MSTORE 00000b19: PUSH1 0x2a 00000b1b: PUSH1 0x24 00000b1d: DUP3 00000b1e: ADD 00000b1f: MSTORE 00000b20: PUSH32 0x416d6f756e74206d757374206265206c657373207468616e20746f74616c2072 00000b41: PUSH1 0x44 00000b43: DUP3 00000b44: ADD 00000b45: MSTORE 00000b46: PUSH10 0x65666c656374696f6e73 00000b51: PUSH1 0xb0 00000b53: SHL 00000b54: PUSH1 0x64 00000b56: DUP3 00000b57: ADD 00000b58: MSTORE 00000b59: PUSH1 0x84 00000b5b: ADD 00000b5c: PUSH2 0x0a9a 00000b5f: JUMP 00000b60: JUMPDEST 00000b61: PUSH1 0x00 00000b63: PUSH2 0x0b6a 00000b66: PUSH2 0x1be1 00000b69: JUMP 00000b6a: JUMPDEST 00000b6b: SWAP1 00000b6c: POP 00000b6d: PUSH2 0x0b76 00000b70: DUP4 00000b71: DUP3 00000b72: PUSH2 0x16d8 00000b75: JUMP 00000b76: JUMPDEST 00000b77: SWAP4 00000b78: SWAP3 00000b79: POP 00000b7a: POP 00000b7b: POP 00000b7c: JUMP 00000b7d: JUMPDEST 00000b7e: PUSH1 0x00 00000b80: SLOAD 00000b81: PUSH1 0x01 00000b83: PUSH1 0x01 00000b85: PUSH1 0xa0 00000b87: SHL 00000b88: SUB 00000b89: AND 00000b8a: CALLER 00000b8b: EQ 00000b8c: PUSH2 0x0ba7 00000b8f: JUMPI 00000b90: PUSH1 0x40 00000b92: MLOAD 00000b93: PUSH3 0x461bcd 00000b97: PUSH1 0xe5 00000b99: SHL 00000b9a: DUP2 00000b9b: MSTORE 00000b9c: PUSH1 0x04 00000b9e: ADD 00000b9f: PUSH2 0x0a9a 00000ba2: SWAP1 00000ba3: PUSH2 0x2b33 00000ba6: JUMP 00000ba7: JUMPDEST 00000ba8: PUSH1 0x01 00000baa: PUSH1 0x01 00000bac: PUSH1 0xa0 00000bae: SHL 00000baf: SUB 00000bb0: DUP2 00000bb1: AND 00000bb2: PUSH1 0x00 00000bb4: SWAP1 00000bb5: DUP2 00000bb6: MSTORE 00000bb7: PUSH1 0x09 00000bb9: PUSH1 0x20 00000bbb: MSTORE 00000bbc: PUSH1 0x40 00000bbe: SWAP1 00000bbf: KECCAK256 00000bc0: SLOAD 00000bc1: PUSH1 0xff 00000bc3: AND 00000bc4: PUSH2 0x0c0f 00000bc7: JUMPI 00000bc8: PUSH1 0x40 00000bca: MLOAD 00000bcb: PUSH3 0x461bcd 00000bcf: PUSH1 0xe5 00000bd1: SHL 00000bd2: DUP2 00000bd3: MSTORE 00000bd4: PUSH1 0x20 00000bd6: PUSH1 0x04 00000bd8: DUP3 00000bd9: ADD 00000bda: MSTORE 00000bdb: PUSH1 0x1b 00000bdd: PUSH1 0x24 00000bdf: DUP3 00000be0: ADD 00000be1: MSTORE 00000be2: PUSH32 0x4163636f756e7420697320616c7265616479206578636c756465640000000000 00000c03: PUSH1 0x44 00000c05: DUP3 00000c06: ADD 00000c07: MSTORE 00000c08: PUSH1 0x64 00000c0a: ADD 00000c0b: PUSH2 0x0a9a 00000c0e: JUMP 00000c0f: JUMPDEST 00000c10: PUSH1 0x00 00000c12: JUMPDEST 00000c13: PUSH1 0x0a 00000c15: SLOAD 00000c16: DUP2 00000c17: LT 00000c18: ISZERO 00000c19: PUSH2 0x0d30 00000c1c: JUMPI 00000c1d: DUP2 00000c1e: PUSH1 0x01 00000c20: PUSH1 0x01 00000c22: PUSH1 0xa0 00000c24: SHL 00000c25: SUB 00000c26: AND 00000c27: PUSH1 0x0a 00000c29: DUP3 00000c2a: DUP2 00000c2b: SLOAD 00000c2c: DUP2 00000c2d: LT 00000c2e: PUSH2 0x0c39 00000c31: JUMPI 00000c32: PUSH2 0x0c39 00000c35: PUSH2 0x2cb7 00000c38: JUMP 00000c39: JUMPDEST 00000c3a: PUSH1 0x00 00000c3c: SWAP2 00000c3d: DUP3 00000c3e: MSTORE 00000c3f: PUSH1 0x20 00000c41: SWAP1 00000c42: SWAP2 00000c43: KECCAK256 00000c44: ADD 00000c45: SLOAD 00000c46: PUSH1 0x01 00000c48: PUSH1 0x01 00000c4a: PUSH1 0xa0 00000c4c: SHL 00000c4d: SUB 00000c4e: AND 00000c4f: EQ 00000c50: ISZERO 00000c51: PUSH2 0x0d1e 00000c54: JUMPI 00000c55: PUSH1 0x0a 00000c57: DUP1 00000c58: SLOAD 00000c59: PUSH2 0x0c64 00000c5c: SWAP1 00000c5d: PUSH1 0x01 00000c5f: SWAP1 00000c60: PUSH2 0x2c1e 00000c63: JUMP 00000c64: JUMPDEST 00000c65: DUP2 00000c66: SLOAD 00000c67: DUP2 00000c68: LT 00000c69: PUSH2 0x0c74 00000c6c: JUMPI 00000c6d: PUSH2 0x0c74 00000c70: PUSH2 0x2cb7 00000c73: JUMP 00000c74: JUMPDEST 00000c75: PUSH1 0x00 00000c77: SWAP2 00000c78: DUP3 00000c79: MSTORE 00000c7a: PUSH1 0x20 00000c7c: SWAP1 00000c7d: SWAP2 00000c7e: KECCAK256 00000c7f: ADD 00000c80: SLOAD 00000c81: PUSH1 0x0a 00000c83: DUP1 00000c84: SLOAD 00000c85: PUSH1 0x01 00000c87: PUSH1 0x01 00000c89: PUSH1 0xa0 00000c8b: SHL 00000c8c: SUB 00000c8d: SWAP1 00000c8e: SWAP3 00000c8f: AND 00000c90: SWAP2 00000c91: DUP4 00000c92: SWAP1 00000c93: DUP2 00000c94: LT 00000c95: PUSH2 0x0ca0 00000c98: JUMPI 00000c99: PUSH2 0x0ca0 00000c9c: PUSH2 0x2cb7 00000c9f: JUMP 00000ca0: JUMPDEST 00000ca1: PUSH1 0x00 00000ca3: SWAP2 00000ca4: DUP3 00000ca5: MSTORE 00000ca6: PUSH1 0x20 00000ca8: DUP1 00000ca9: DUP4 00000caa: KECCAK256 00000cab: SWAP2 00000cac: SWAP1 00000cad: SWAP2 00000cae: ADD 00000caf: DUP1 00000cb0: SLOAD 00000cb1: PUSH1 0x01 00000cb3: PUSH1 0x01 00000cb5: PUSH1 0xa0 00000cb7: SHL 00000cb8: SUB 00000cb9: NOT 00000cba: AND 00000cbb: PUSH1 0x01 00000cbd: PUSH1 0x01 00000cbf: PUSH1 0xa0 00000cc1: SHL 00000cc2: SUB 00000cc3: SWAP5 00000cc4: DUP6 00000cc5: AND 00000cc6: OR 00000cc7: SWAP1 00000cc8: SSTORE 00000cc9: SWAP2 00000cca: DUP5 00000ccb: AND 00000ccc: DUP2 00000ccd: MSTORE 00000cce: PUSH1 0x06 00000cd0: DUP3 00000cd1: MSTORE 00000cd2: PUSH1 0x40 00000cd4: DUP1 00000cd5: DUP3 00000cd6: KECCAK256 00000cd7: DUP3 00000cd8: SWAP1 00000cd9: SSTORE 00000cda: PUSH1 0x09 00000cdc: SWAP1 00000cdd: SWAP3 00000cde: MSTORE 00000cdf: KECCAK256 00000ce0: DUP1 00000ce1: SLOAD 00000ce2: PUSH1 0xff 00000ce4: NOT 00000ce5: AND 00000ce6: SWAP1 00000ce7: SSTORE 00000ce8: PUSH1 0x0a 00000cea: DUP1 00000ceb: SLOAD 00000cec: DUP1 00000ced: PUSH2 0x0cf8 00000cf0: JUMPI 00000cf1: PUSH2 0x0cf8 00000cf4: PUSH2 0x2ca1 00000cf7: JUMP 00000cf8: JUMPDEST 00000cf9: PUSH1 0x00 00000cfb: DUP3 00000cfc: DUP2 00000cfd: MSTORE 00000cfe: PUSH1 0x20 00000d00: SWAP1 00000d01: KECCAK256 00000d02: DUP2 00000d03: ADD 00000d04: PUSH1 0x00 00000d06: NOT 00000d07: SWAP1 00000d08: DUP2 00000d09: ADD 00000d0a: DUP1 00000d0b: SLOAD 00000d0c: PUSH1 0x01 00000d0e: PUSH1 0x01 00000d10: PUSH1 0xa0 00000d12: SHL 00000d13: SUB 00000d14: NOT 00000d15: AND 00000d16: SWAP1 00000d17: SSTORE 00000d18: ADD 00000d19: SWAP1 00000d1a: SSTORE 00000d1b: POP 00000d1c: POP 00000d1d: JUMP 00000d1e: JUMPDEST 00000d1f: DUP1 00000d20: PUSH2 0x0d28 00000d23: DUP2 00000d24: PUSH2 0x2c70 00000d27: JUMP 00000d28: JUMPDEST 00000d29: SWAP2 00000d2a: POP 00000d2b: POP 00000d2c: PUSH2 0x0c12 00000d2f: JUMP 00000d30: JUMPDEST 00000d31: POP 00000d32: POP 00000d33: JUMP 00000d34: JUMPDEST 00000d35: CALLER 00000d36: PUSH1 0x00 00000d38: DUP2 00000d39: DUP2 00000d3a: MSTORE 00000d3b: PUSH1 0x07 00000d3d: PUSH1 0x20 00000d3f: SWAP1 00000d40: DUP2 00000d41: MSTORE 00000d42: PUSH1 0x40 00000d44: DUP1 00000d45: DUP4 00000d46: KECCAK256 00000d47: PUSH1 0x01 00000d49: PUSH1 0x01 00000d4b: PUSH1 0xa0 00000d4d: SHL 00000d4e: SUB 00000d4f: DUP8 00000d50: AND 00000d51: DUP5 00000d52: MSTORE 00000d53: SWAP1 00000d54: SWAP2 00000d55: MSTORE 00000d56: DUP2 00000d57: KECCAK256 00000d58: SLOAD 00000d59: SWAP1 00000d5a: SWAP2 00000d5b: PUSH2 0x09fd 00000d5e: SWAP2 00000d5f: DUP6 00000d60: SWAP1 00000d61: PUSH2 0x0a61 00000d64: SWAP1 00000d65: DUP7 00000d66: PUSH2 0x1c04 00000d69: JUMP 00000d6a: JUMPDEST 00000d6b: CALLER 00000d6c: PUSH1 0x00 00000d6e: DUP2 00000d6f: DUP2 00000d70: MSTORE 00000d71: PUSH1 0x09 00000d73: PUSH1 0x20 00000d75: MSTORE 00000d76: PUSH1 0x40 00000d78: SWAP1 00000d79: KECCAK256 00000d7a: SLOAD 00000d7b: PUSH1 0xff 00000d7d: AND 00000d7e: ISZERO 00000d7f: PUSH2 0x0ddf 00000d82: JUMPI 00000d83: PUSH1 0x40 00000d85: MLOAD 00000d86: PUSH3 0x461bcd 00000d8a: PUSH1 0xe5 00000d8c: SHL 00000d8d: DUP2 00000d8e: MSTORE 00000d8f: PUSH1 0x20 00000d91: PUSH1 0x04 00000d93: DUP3 00000d94: ADD 00000d95: MSTORE 00000d96: PUSH1 0x2c 00000d98: PUSH1 0x24 00000d9a: DUP3 00000d9b: ADD 00000d9c: MSTORE 00000d9d: PUSH32 0x4578636c75646564206164647265737365732063616e6e6f742063616c6c2074 00000dbe: PUSH1 0x44 00000dc0: DUP3 00000dc1: ADD 00000dc2: MSTORE 00000dc3: PUSH12 0x3434b990333ab731ba34b7b7 00000dd0: PUSH1 0xa1 00000dd2: SHL 00000dd3: PUSH1 0x64 00000dd5: DUP3 00000dd6: ADD 00000dd7: MSTORE 00000dd8: PUSH1 0x84 00000dda: ADD 00000ddb: PUSH2 0x0a9a 00000dde: JUMP 00000ddf: JUMPDEST 00000de0: PUSH1 0x00 00000de2: PUSH2 0x0dea 00000de5: DUP4 00000de6: PUSH2 0x1c63 00000de9: JUMP 00000dea: JUMPDEST 00000deb: POP 00000dec: POP 00000ded: POP 00000dee: POP 00000def: PUSH1 0x01 00000df1: PUSH1 0x01 00000df3: PUSH1 0xa0 00000df5: SHL 00000df6: SUB 00000df7: DUP5 00000df8: AND 00000df9: PUSH1 0x00 00000dfb: SWAP1 00000dfc: DUP2 00000dfd: MSTORE 00000dfe: PUSH1 0x05 00000e00: PUSH1 0x20 00000e02: MSTORE 00000e03: PUSH1 0x40 00000e05: SWAP1 00000e06: KECCAK256 00000e07: SLOAD 00000e08: SWAP2 00000e09: SWAP3 00000e0a: POP 00000e0b: PUSH2 0x0e16 00000e0e: SWAP2 00000e0f: SWAP1 00000e10: POP 00000e11: DUP3 00000e12: PUSH2 0x1cb2 00000e15: JUMP 00000e16: JUMPDEST 00000e17: PUSH1 0x01 00000e19: PUSH1 0x01 00000e1b: PUSH1 0xa0 00000e1d: SHL 00000e1e: SUB 00000e1f: DUP4 00000e20: AND 00000e21: PUSH1 0x00 00000e23: SWAP1 00000e24: DUP2 00000e25: MSTORE 00000e26: PUSH1 0x05 00000e28: PUSH1 0x20 00000e2a: MSTORE 00000e2b: PUSH1 0x40 00000e2d: SWAP1 00000e2e: KECCAK256 00000e2f: SSTORE 00000e30: PUSH1 0x0c 00000e32: SLOAD 00000e33: PUSH2 0x0e3c 00000e36: SWAP1 00000e37: DUP3 00000e38: PUSH2 0x1cb2 00000e3b: JUMP 00000e3c: JUMPDEST 00000e3d: PUSH1 0x0c 00000e3f: SSTORE 00000e40: PUSH1 0x0d 00000e42: SLOAD 00000e43: PUSH2 0x0e4c 00000e46: SWAP1 00000e47: DUP5 00000e48: PUSH2 0x1c04 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: PUSH1 0x0d 00000e4f: SSTORE 00000e50: POP 00000e51: POP 00000e52: POP 00000e53: JUMP 00000e54: JUMPDEST 00000e55: PUSH1 0x00 00000e57: SLOAD 00000e58: PUSH1 0x01 00000e5a: PUSH1 0x01 00000e5c: PUSH1 0xa0 00000e5e: SHL 00000e5f: SUB 00000e60: AND 00000e61: CALLER 00000e62: EQ 00000e63: PUSH2 0x0e7e 00000e66: JUMPI 00000e67: PUSH1 0x40 00000e69: MLOAD 00000e6a: PUSH3 0x461bcd 00000e6e: PUSH1 0xe5 00000e70: SHL 00000e71: DUP2 00000e72: MSTORE 00000e73: PUSH1 0x04 00000e75: ADD 00000e76: PUSH2 0x0a9a 00000e79: SWAP1 00000e7a: PUSH2 0x2b33 00000e7d: JUMP 00000e7e: JUMPDEST 00000e7f: PUSH1 0x01 00000e81: PUSH1 0x01 00000e83: PUSH1 0xa0 00000e85: SHL 00000e86: SUB 00000e87: AND 00000e88: PUSH1 0x00 00000e8a: SWAP1 00000e8b: DUP2 00000e8c: MSTORE 00000e8d: PUSH1 0x08 00000e8f: PUSH1 0x20 00000e91: MSTORE 00000e92: PUSH1 0x40 00000e94: SWAP1 00000e95: KECCAK256 00000e96: DUP1 00000e97: SLOAD 00000e98: PUSH1 0xff 00000e9a: NOT 00000e9b: AND 00000e9c: PUSH1 0x01 00000e9e: OR 00000e9f: SWAP1 00000ea0: SSTORE 00000ea1: JUMP 00000ea2: JUMPDEST 00000ea3: PUSH1 0x00 00000ea5: PUSH1 0x0b 00000ea7: SLOAD 00000ea8: DUP4 00000ea9: GT 00000eaa: ISZERO 00000eab: PUSH2 0x0ef6 00000eae: JUMPI 00000eaf: PUSH1 0x40 00000eb1: MLOAD 00000eb2: PUSH3 0x461bcd 00000eb6: PUSH1 0xe5 00000eb8: SHL 00000eb9: DUP2 00000eba: MSTORE 00000ebb: PUSH1 0x20 00000ebd: PUSH1 0x04 00000ebf: DUP3 00000ec0: ADD 00000ec1: MSTORE 00000ec2: PUSH1 0x1f 00000ec4: PUSH1 0x24 00000ec6: DUP3 00000ec7: ADD 00000ec8: MSTORE 00000ec9: PUSH32 0x416d6f756e74206d757374206265206c657373207468616e20737570706c7900 00000eea: PUSH1 0x44 00000eec: DUP3 00000eed: ADD 00000eee: MSTORE 00000eef: PUSH1 0x64 00000ef1: ADD 00000ef2: PUSH2 0x0a9a 00000ef5: JUMP 00000ef6: JUMPDEST 00000ef7: DUP2 00000ef8: PUSH2 0x0f15 00000efb: JUMPI 00000efc: PUSH1 0x00 00000efe: PUSH2 0x0f06 00000f01: DUP5 00000f02: PUSH2 0x1c63 00000f05: JUMP 00000f06: JUMPDEST 00000f07: POP 00000f08: SWAP4 00000f09: SWAP6 00000f0a: POP 00000f0b: PUSH2 0x0a01 00000f0e: SWAP5 00000f0f: POP 00000f10: POP 00000f11: POP 00000f12: POP 00000f13: POP 00000f14: JUMP 00000f15: JUMPDEST 00000f16: PUSH1 0x00 00000f18: PUSH2 0x0f20 00000f1b: DUP5 00000f1c: PUSH2 0x1c63 00000f1f: JUMP 00000f20: JUMPDEST 00000f21: POP 00000f22: SWAP3 00000f23: SWAP6 00000f24: POP 00000f25: PUSH2 0x0a01 00000f28: SWAP5 00000f29: POP 00000f2a: POP 00000f2b: POP 00000f2c: POP 00000f2d: POP 00000f2e: JUMP 00000f2f: JUMPDEST 00000f30: PUSH1 0x00 00000f32: SLOAD 00000f33: PUSH1 0x01 00000f35: PUSH1 0x01 00000f37: PUSH1 0xa0 00000f39: SHL 00000f3a: SUB 00000f3b: AND 00000f3c: CALLER 00000f3d: EQ 00000f3e: PUSH2 0x0f59 00000f41: JUMPI 00000f42: PUSH1 0x40 00000f44: MLOAD 00000f45: PUSH3 0x461bcd 00000f49: PUSH1 0xe5 00000f4b: SHL 00000f4c: DUP2 00000f4d: MSTORE 00000f4e: PUSH1 0x04 00000f50: ADD 00000f51: PUSH2 0x0a9a 00000f54: SWAP1 00000f55: PUSH2 0x2b33 00000f58: JUMP 00000f59: JUMPDEST 00000f5a: PUSH1 0x15 00000f5c: DUP2 00000f5d: SWAP1 00000f5e: SSTORE 00000f5f: PUSH1 0x17 00000f61: SLOAD 00000f62: PUSH2 0x0f6c 00000f65: SWAP1 00000f66: DUP3 00000f67: SWAP1 00000f68: PUSH2 0x1c04 00000f6b: JUMP 00000f6c: JUMPDEST 00000f6d: PUSH1 0x13 00000f6f: SSTORE 00000f70: POP 00000f71: JUMP 00000f72: JUMPDEST 00000f73: PUSH1 0x00 00000f75: SLOAD 00000f76: PUSH1 0x01 00000f78: PUSH1 0x01 00000f7a: PUSH1 0xa0 00000f7c: SHL 00000f7d: SUB 00000f7e: AND 00000f7f: CALLER 00000f80: EQ 00000f81: PUSH2 0x0f9c 00000f84: JUMPI 00000f85: PUSH1 0x40 00000f87: MLOAD 00000f88: PUSH3 0x461bcd 00000f8c: PUSH1 0xe5 00000f8e: SHL 00000f8f: DUP2 00000f90: MSTORE 00000f91: PUSH1 0x04 00000f93: ADD 00000f94: PUSH2 0x0a9a 00000f97: SWAP1 00000f98: PUSH2 0x2b33 00000f9b: JUMP 00000f9c: JUMPDEST 00000f9d: PUSH1 0x01 00000f9f: PUSH1 0x01 00000fa1: PUSH1 0xa0 00000fa3: SHL 00000fa4: SUB 00000fa5: DUP2 00000fa6: AND 00000fa7: PUSH1 0x00 00000fa9: SWAP1 00000faa: DUP2 00000fab: MSTORE 00000fac: PUSH1 0x09 00000fae: PUSH1 0x20 00000fb0: MSTORE 00000fb1: PUSH1 0x40 00000fb3: SWAP1 00000fb4: KECCAK256 00000fb5: SLOAD 00000fb6: PUSH1 0xff 00000fb8: AND 00000fb9: ISZERO 00000fba: PUSH2 0x1005 00000fbd: JUMPI 00000fbe: PUSH1 0x40 00000fc0: MLOAD 00000fc1: PUSH3 0x461bcd 00000fc5: PUSH1 0xe5 00000fc7: SHL 00000fc8: DUP2 00000fc9: MSTORE 00000fca: PUSH1 0x20 00000fcc: PUSH1 0x04 00000fce: DUP3 00000fcf: ADD 00000fd0: MSTORE 00000fd1: PUSH1 0x1b 00000fd3: PUSH1 0x24 00000fd5: DUP3 00000fd6: ADD 00000fd7: MSTORE 00000fd8: PUSH32 0x4163636f756e7420697320616c7265616479206578636c756465640000000000 00000ff9: PUSH1 0x44 00000ffb: DUP3 00000ffc: ADD 00000ffd: MSTORE 00000ffe: PUSH1 0x64 00001000: ADD 00001001: PUSH2 0x0a9a 00001004: JUMP 00001005: JUMPDEST 00001006: PUSH1 0x01 00001008: PUSH1 0x01 0000100a: PUSH1 0xa0 0000100c: SHL 0000100d: SUB 0000100e: DUP2 0000100f: AND 00001010: PUSH1 0x00 00001012: SWAP1 00001013: DUP2 00001014: MSTORE 00001015: PUSH1 0x05 00001017: PUSH1 0x20 00001019: MSTORE 0000101a: PUSH1 0x40 0000101c: SWAP1 0000101d: KECCAK256 0000101e: SLOAD 0000101f: ISZERO 00001020: PUSH2 0x105f 00001023: JUMPI 00001024: PUSH1 0x01 00001026: PUSH1 0x01 00001028: PUSH1 0xa0 0000102a: SHL 0000102b: SUB 0000102c: DUP2 0000102d: AND 0000102e: PUSH1 0x00 00001030: SWAP1 00001031: DUP2 00001032: MSTORE 00001033: PUSH1 0x05 00001035: PUSH1 0x20 00001037: MSTORE 00001038: PUSH1 0x40 0000103a: SWAP1 0000103b: KECCAK256 0000103c: SLOAD 0000103d: PUSH2 0x1045 00001040: SWAP1 00001041: PUSH2 0x0af9 00001044: JUMP 00001045: JUMPDEST 00001046: PUSH1 0x01 00001048: PUSH1 0x01 0000104a: PUSH1 0xa0 0000104c: SHL 0000104d: SUB 0000104e: DUP3 0000104f: AND 00001050: PUSH1 0x00 00001052: SWAP1 00001053: DUP2 00001054: MSTORE 00001055: PUSH1 0x06 00001057: PUSH1 0x20 00001059: MSTORE 0000105a: PUSH1 0x40 0000105c: SWAP1 0000105d: KECCAK256 0000105e: SSTORE 0000105f: JUMPDEST 00001060: PUSH1 0x01 00001062: PUSH1 0x01 00001064: PUSH1 0xa0 00001066: SHL 00001067: SUB 00001068: AND 00001069: PUSH1 0x00 0000106b: DUP2 0000106c: DUP2 0000106d: MSTORE 0000106e: PUSH1 0x09 00001070: PUSH1 0x20 00001072: MSTORE 00001073: PUSH1 0x40 00001075: DUP2 00001076: KECCAK256 00001077: DUP1 00001078: SLOAD 00001079: PUSH1 0xff 0000107b: NOT 0000107c: AND 0000107d: PUSH1 0x01 0000107f: SWAP1 00001080: DUP2 00001081: OR 00001082: SWAP1 00001083: SWAP2 00001084: SSTORE 00001085: PUSH1 0x0a 00001087: DUP1 00001088: SLOAD 00001089: SWAP2 0000108a: DUP3 0000108b: ADD 0000108c: DUP2 0000108d: SSTORE 0000108e: SWAP1 0000108f: SWAP2 00001090: MSTORE 00001091: PUSH32 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8 000010b2: ADD 000010b3: DUP1 000010b4: SLOAD 000010b5: PUSH1 0x01 000010b7: PUSH1 0x01 000010b9: PUSH1 0xa0 000010bb: SHL 000010bc: SUB 000010bd: NOT 000010be: AND 000010bf: SWAP1 000010c0: SWAP2 000010c1: OR 000010c2: SWAP1 000010c3: SSTORE 000010c4: JUMP 000010c5: JUMPDEST 000010c6: PUSH1 0x00 000010c8: SLOAD 000010c9: PUSH1 0x01 000010cb: PUSH1 0x01 000010cd: PUSH1 0xa0 000010cf: SHL 000010d0: SUB 000010d1: AND 000010d2: CALLER 000010d3: EQ 000010d4: PUSH2 0x10ef 000010d7: JUMPI 000010d8: PUSH1 0x40 000010da: MLOAD 000010db: PUSH3 0x461bcd 000010df: PUSH1 0xe5 000010e1: SHL 000010e2: DUP2 000010e3: MSTORE 000010e4: PUSH1 0x04 000010e6: ADD 000010e7: PUSH2 0x0a9a 000010ea: SWAP1 000010eb: PUSH2 0x2b33 000010ee: JUMP 000010ef: JUMPDEST 000010f0: PUSH1 0x17 000010f2: DUP2 000010f3: SWAP1 000010f4: SSTORE 000010f5: PUSH1 0x15 000010f7: SLOAD 000010f8: PUSH2 0x0f6c 000010fb: SWAP1 000010fc: DUP3 000010fd: PUSH2 0x1c04 00001100: JUMP 00001101: JUMPDEST 00001102: PUSH1 0x01 00001104: PUSH1 0x01 00001106: PUSH1 0xa0 00001108: SHL 00001109: SUB 0000110a: DUP2 0000110b: AND 0000110c: PUSH1 0x00 0000110e: SWAP1 0000110f: DUP2 00001110: MSTORE 00001111: PUSH1 0x09 00001113: PUSH1 0x20 00001115: MSTORE 00001116: PUSH1 0x40 00001118: DUP2 00001119: KECCAK256 0000111a: SLOAD 0000111b: PUSH1 0xff 0000111d: AND 0000111e: ISZERO 0000111f: PUSH2 0x113e 00001122: JUMPI 00001123: POP 00001124: PUSH1 0x01 00001126: PUSH1 0x01 00001128: PUSH1 0xa0 0000112a: SHL 0000112b: SUB 0000112c: AND 0000112d: PUSH1 0x00 0000112f: SWAP1 00001130: DUP2 00001131: MSTORE 00001132: PUSH1 0x06 00001134: PUSH1 0x20 00001136: MSTORE 00001137: PUSH1 0x40 00001139: SWAP1 0000113a: KECCAK256 0000113b: SLOAD 0000113c: SWAP1 0000113d: JUMP 0000113e: JUMPDEST 0000113f: PUSH1 0x01 00001141: PUSH1 0x01 00001143: PUSH1 0xa0 00001145: SHL 00001146: SUB 00001147: DUP3 00001148: AND 00001149: PUSH1 0x00 0000114b: SWAP1 0000114c: DUP2 0000114d: MSTORE 0000114e: PUSH1 0x05 00001150: PUSH1 0x20 00001152: MSTORE 00001153: PUSH1 0x40 00001155: SWAP1 00001156: KECCAK256 00001157: SLOAD 00001158: PUSH2 0x0a01 0000115b: SWAP1 0000115c: PUSH2 0x0af9 0000115f: JUMP 00001160: JUMPDEST 00001161: PUSH1 0x00 00001163: SLOAD 00001164: PUSH1 0x01 00001166: PUSH1 0x01 00001168: PUSH1 0xa0 0000116a: SHL 0000116b: SUB 0000116c: AND 0000116d: CALLER 0000116e: EQ 0000116f: PUSH2 0x118a 00001172: JUMPI 00001173: PUSH1 0x40 00001175: MLOAD 00001176: PUSH3 0x461bcd 0000117a: PUSH1 0xe5 0000117c: SHL 0000117d: DUP2 0000117e: MSTORE 0000117f: PUSH1 0x04 00001181: ADD 00001182: PUSH2 0x0a9a 00001185: SWAP1 00001186: PUSH2 0x2b33 00001189: JUMP 0000118a: JUMPDEST 0000118b: PUSH1 0x00 0000118d: DUP1 0000118e: SLOAD 0000118f: PUSH1 0x40 00001191: MLOAD 00001192: PUSH1 0x01 00001194: PUSH1 0x01 00001196: PUSH1 0xa0 00001198: SHL 00001199: SUB 0000119a: SWAP1 0000119b: SWAP2 0000119c: AND 0000119d: SWAP1 0000119e: PUSH1 0x00 000011a0: DUP1 000011a1: MLOAD 000011a2: PUSH1 0x20 000011a4: PUSH2 0x2d0b 000011a7: DUP4 000011a8: CODECOPY 000011a9: DUP2 000011aa: MLOAD 000011ab: SWAP2 000011ac: MSTORE 000011ad: SWAP1 000011ae: DUP4 000011af: SWAP1 000011b0: LOG3 000011b1: PUSH1 0x00 000011b3: DUP1 000011b4: SLOAD 000011b5: PUSH1 0x01 000011b7: PUSH1 0x01 000011b9: PUSH1 0xa0 000011bb: SHL 000011bc: SUB 000011bd: NOT 000011be: AND 000011bf: SWAP1 000011c0: SSTORE 000011c1: JUMP 000011c2: JUMPDEST 000011c3: PUSH1 0x00 000011c5: SLOAD 000011c6: PUSH1 0x01 000011c8: PUSH1 0x01 000011ca: PUSH1 0xa0 000011cc: SHL 000011cd: SUB 000011ce: AND 000011cf: CALLER 000011d0: EQ 000011d1: PUSH2 0x11ec 000011d4: JUMPI 000011d5: PUSH1 0x40 000011d7: MLOAD 000011d8: PUSH3 0x461bcd 000011dc: PUSH1 0xe5 000011de: SHL 000011df: DUP2 000011e0: MSTORE 000011e1: PUSH1 0x04 000011e3: ADD 000011e4: PUSH2 0x0a9a 000011e7: SWAP1 000011e8: PUSH2 0x2b33 000011eb: JUMP 000011ec: JUMPDEST 000011ed: PUSH1 0x1c 000011ef: SSTORE 000011f0: JUMP 000011f1: JUMPDEST 000011f2: PUSH1 0x00 000011f4: SLOAD 000011f5: PUSH1 0x01 000011f7: PUSH1 0x01 000011f9: PUSH1 0xa0 000011fb: SHL 000011fc: SUB 000011fd: AND 000011fe: CALLER 000011ff: EQ 00001200: PUSH2 0x121b 00001203: JUMPI 00001204: PUSH1 0x40 00001206: MLOAD 00001207: PUSH3 0x461bcd 0000120b: PUSH1 0xe5 0000120d: SHL 0000120e: DUP2 0000120f: MSTORE 00001210: PUSH1 0x04 00001212: ADD 00001213: PUSH2 0x0a9a 00001216: SWAP1 00001217: PUSH2 0x2b33 0000121a: JUMP 0000121b: JUMPDEST 0000121c: PUSH1 0x04 0000121e: DUP1 0000121f: SLOAD 00001220: PUSH1 0x01 00001222: PUSH1 0x01 00001224: PUSH1 0xa0 00001226: SHL 00001227: SUB 00001228: NOT 00001229: AND 0000122a: PUSH1 0x01 0000122c: PUSH1 0x01 0000122e: PUSH1 0xa0 00001230: SHL 00001231: SUB 00001232: SWAP3 00001233: SWAP1 00001234: SWAP3 00001235: AND 00001236: SWAP2 00001237: SWAP1 00001238: SWAP2 00001239: OR 0000123a: SWAP1 0000123b: SSTORE 0000123c: JUMP 0000123d: JUMPDEST 0000123e: PUSH1 0x60 00001240: PUSH1 0x0f 00001242: DUP1 00001243: SLOAD 00001244: PUSH2 0x096d 00001247: SWAP1 00001248: PUSH2 0x2c35 0000124b: JUMP 0000124c: JUMPDEST 0000124d: PUSH1 0x00 0000124f: PUSH2 0x09fd 00001252: CALLER 00001253: DUP5 00001254: PUSH2 0x0a61 00001257: DUP6 00001258: PUSH1 0x40 0000125a: MLOAD 0000125b: DUP1 0000125c: PUSH1 0x60 0000125e: ADD 0000125f: PUSH1 0x40 00001261: MSTORE 00001262: DUP1 00001263: PUSH1 0x25 00001265: DUP2 00001266: MSTORE 00001267: PUSH1 0x20 00001269: ADD 0000126a: PUSH2 0x2d2b 0000126d: PUSH1 0x25 0000126f: SWAP2 00001270: CODECOPY 00001271: CALLER 00001272: PUSH1 0x00 00001274: SWAP1 00001275: DUP2 00001276: MSTORE 00001277: PUSH1 0x07 00001279: PUSH1 0x20 0000127b: SWAP1 0000127c: DUP2 0000127d: MSTORE 0000127e: PUSH1 0x40 00001280: DUP1 00001281: DUP4 00001282: KECCAK256 00001283: PUSH1 0x01 00001285: PUSH1 0x01 00001287: PUSH1 0xa0 00001289: SHL 0000128a: SUB 0000128b: DUP14 0000128c: AND 0000128d: DUP5 0000128e: MSTORE 0000128f: SWAP1 00001290: SWAP2 00001291: MSTORE 00001292: SWAP1 00001293: KECCAK256 00001294: SLOAD 00001295: SWAP2 00001296: SWAP1 00001297: PUSH2 0x1ba7 0000129a: JUMP 0000129b: JUMPDEST 0000129c: PUSH1 0x01 0000129e: SLOAD 0000129f: PUSH1 0x01 000012a1: PUSH1 0x01 000012a3: PUSH1 0xa0 000012a5: SHL 000012a6: SUB 000012a7: AND 000012a8: CALLER 000012a9: EQ 000012aa: PUSH2 0x1301 000012ad: JUMPI 000012ae: PUSH1 0x40 000012b0: MLOAD 000012b1: PUSH3 0x461bcd 000012b5: PUSH1 0xe5 000012b7: SHL 000012b8: DUP2 000012b9: MSTORE 000012ba: PUSH1 0x20 000012bc: PUSH1 0x04 000012be: DUP3 000012bf: ADD 000012c0: MSTORE 000012c1: PUSH1 0x23 000012c3: PUSH1 0x24 000012c5: DUP3 000012c6: ADD 000012c7: MSTORE 000012c8: PUSH32 0x596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c 000012e9: PUSH1 0x44 000012eb: DUP3 000012ec: ADD 000012ed: MSTORE 000012ee: PUSH3 0x6f636b 000012f2: PUSH1 0xe8 000012f4: SHL 000012f5: PUSH1 0x64 000012f7: DUP3 000012f8: ADD 000012f9: MSTORE 000012fa: PUSH1 0x84 000012fc: ADD 000012fd: PUSH2 0x0a9a 00001300: JUMP 00001301: JUMPDEST 00001302: PUSH1 0x02 00001304: SLOAD 00001305: TIMESTAMP 00001306: GT 00001307: PUSH2 0x1352 0000130a: JUMPI 0000130b: PUSH1 0x40 0000130d: MLOAD 0000130e: PUSH3 0x461bcd 00001312: PUSH1 0xe5 00001314: SHL 00001315: DUP2 00001316: MSTORE 00001317: PUSH1 0x20 00001319: PUSH1 0x04 0000131b: DUP3 0000131c: ADD 0000131d: MSTORE 0000131e: PUSH1 0x1f 00001320: PUSH1 0x24 00001322: DUP3 00001323: ADD 00001324: MSTORE 00001325: PUSH32 0x436f6e7472616374206973206c6f636b656420756e74696c2037206461797300 00001346: PUSH1 0x44 00001348: DUP3 00001349: ADD 0000134a: MSTORE 0000134b: PUSH1 0x64 0000134d: ADD 0000134e: PUSH2 0x0a9a 00001351: JUMP 00001352: JUMPDEST 00001353: PUSH1 0x01 00001355: SLOAD 00001356: PUSH1 0x00 00001358: DUP1 00001359: SLOAD 0000135a: PUSH1 0x40 0000135c: MLOAD 0000135d: PUSH1 0x01 0000135f: PUSH1 0x01 00001361: PUSH1 0xa0 00001363: SHL 00001364: SUB 00001365: SWAP4 00001366: DUP5 00001367: AND 00001368: SWAP4 00001369: SWAP1 0000136a: SWAP2 0000136b: AND 0000136c: SWAP2 0000136d: PUSH1 0x00 0000136f: DUP1 00001370: MLOAD 00001371: PUSH1 0x20 00001373: PUSH2 0x2d0b 00001376: DUP4 00001377: CODECOPY 00001378: DUP2 00001379: MLOAD 0000137a: SWAP2 0000137b: MSTORE 0000137c: SWAP2 0000137d: LOG3 0000137e: PUSH1 0x01 00001380: SLOAD 00001381: PUSH1 0x00 00001383: DUP1 00001384: SLOAD 00001385: PUSH1 0x01 00001387: PUSH1 0x01 00001389: PUSH1 0xa0 0000138b: SHL 0000138c: SUB 0000138d: NOT 0000138e: AND 0000138f: PUSH1 0x01 00001391: PUSH1 0x01 00001393: PUSH1 0xa0 00001395: SHL 00001396: SUB 00001397: SWAP1 00001398: SWAP3 00001399: AND 0000139a: SWAP2 0000139b: SWAP1 0000139c: SWAP2 0000139d: OR 0000139e: SWAP1 0000139f: SSTORE 000013a0: JUMP 000013a1: JUMPDEST 000013a2: PUSH1 0x00 000013a4: PUSH2 0x09fd 000013a7: CALLER 000013a8: DUP5 000013a9: DUP5 000013aa: PUSH2 0x18bd 000013ad: JUMP 000013ae: JUMPDEST 000013af: PUSH1 0x00 000013b1: SLOAD 000013b2: PUSH1 0x01 000013b4: PUSH1 0x01 000013b6: PUSH1 0xa0 000013b8: SHL 000013b9: SUB 000013ba: AND 000013bb: CALLER 000013bc: EQ 000013bd: PUSH2 0x13d8 000013c0: JUMPI 000013c1: PUSH1 0x40 000013c3: MLOAD 000013c4: PUSH3 0x461bcd 000013c8: PUSH1 0xe5 000013ca: SHL 000013cb: DUP2 000013cc: MSTORE 000013cd: PUSH1 0x04 000013cf: ADD 000013d0: PUSH2 0x0a9a 000013d3: SWAP1 000013d4: PUSH2 0x2b33 000013d7: JUMP 000013d8: JUMPDEST 000013d9: PUSH1 0x11 000013db: SSTORE 000013dc: JUMP 000013dd: JUMPDEST 000013de: PUSH1 0x00 000013e0: SLOAD 000013e1: PUSH1 0x01 000013e3: PUSH1 0x01 000013e5: PUSH1 0xa0 000013e7: SHL 000013e8: SUB 000013e9: AND 000013ea: CALLER 000013eb: EQ 000013ec: PUSH2 0x1407 000013ef: JUMPI 000013f0: PUSH1 0x40 000013f2: MLOAD 000013f3: PUSH3 0x461bcd 000013f7: PUSH1 0xe5 000013f9: SHL 000013fa: DUP2 000013fb: MSTORE 000013fc: PUSH1 0x04 000013fe: ADD 000013ff: PUSH2 0x0a9a 00001402: SWAP1 00001403: PUSH2 0x2b33 00001406: JUMP 00001407: JUMPDEST 00001408: PUSH1 0x1d 0000140a: DUP1 0000140b: SLOAD 0000140c: DUP3 0000140d: ISZERO 0000140e: ISZERO 0000140f: PUSH2 0x0100 00001412: MUL 00001413: PUSH2 0xff00 00001416: NOT 00001417: SWAP1 00001418: SWAP2 00001419: AND 0000141a: OR 0000141b: SWAP1 0000141c: SSTORE 0000141d: PUSH1 0x40 0000141f: MLOAD 00001420: PUSH32 0x53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159 00001441: SWAP1 00001442: PUSH2 0x0aee 00001445: SWAP1 00001446: DUP4 00001447: ISZERO 00001448: ISZERO 00001449: DUP2 0000144a: MSTORE 0000144b: PUSH1 0x20 0000144d: ADD 0000144e: SWAP1 0000144f: JUMP 00001450: JUMPDEST 00001451: PUSH1 0x00 00001453: SLOAD 00001454: PUSH1 0x01 00001456: PUSH1 0x01 00001458: PUSH1 0xa0 0000145a: SHL 0000145b: SUB 0000145c: AND 0000145d: CALLER 0000145e: EQ 0000145f: PUSH2 0x147a 00001462: JUMPI 00001463: PUSH1 0x40 00001465: MLOAD 00001466: PUSH3 0x461bcd 0000146a: PUSH1 0xe5 0000146c: SHL 0000146d: DUP2 0000146e: MSTORE 0000146f: PUSH1 0x04 00001471: ADD 00001472: PUSH2 0x0a9a 00001475: SWAP1 00001476: PUSH2 0x2b33 00001479: JUMP 0000147a: JUMPDEST 0000147b: PUSH1 0x00 0000147d: DUP1 0000147e: SLOAD 0000147f: PUSH1 0x01 00001481: DUP1 00001482: SLOAD 00001483: PUSH1 0x01 00001485: PUSH1 0x01 00001487: PUSH1 0xa0 00001489: SHL 0000148a: SUB 0000148b: NOT 0000148c: SWAP1 0000148d: DUP2 0000148e: AND 0000148f: PUSH1 0x01 00001491: PUSH1 0x01 00001493: PUSH1 0xa0 00001495: SHL 00001496: SUB 00001497: DUP5 00001498: AND 00001499: OR 0000149a: SWAP1 0000149b: SWAP2 0000149c: SSTORE 0000149d: AND 0000149e: SWAP1 0000149f: SSTORE 000014a0: PUSH2 0x14a9 000014a3: DUP2 000014a4: TIMESTAMP 000014a5: PUSH2 0x2bc5 000014a8: JUMP 000014a9: JUMPDEST 000014aa: PUSH1 0x02 000014ac: SSTORE 000014ad: PUSH1 0x00 000014af: DUP1 000014b0: SLOAD 000014b1: PUSH1 0x40 000014b3: MLOAD 000014b4: PUSH1 0x01 000014b6: PUSH1 0x01 000014b8: PUSH1 0xa0 000014ba: SHL 000014bb: SUB 000014bc: SWAP1 000014bd: SWAP2 000014be: AND 000014bf: SWAP1 000014c0: PUSH1 0x00 000014c2: DUP1 000014c3: MLOAD 000014c4: PUSH1 0x20 000014c6: PUSH2 0x2d0b 000014c9: DUP4 000014ca: CODECOPY 000014cb: DUP2 000014cc: MLOAD 000014cd: SWAP2 000014ce: MSTORE 000014cf: SWAP1 000014d0: DUP4 000014d1: SWAP1 000014d2: LOG3 000014d3: POP 000014d4: JUMP 000014d5: JUMPDEST 000014d6: PUSH1 0x00 000014d8: SLOAD 000014d9: PUSH1 0x01 000014db: PUSH1 0x01 000014dd: PUSH1 0xa0 000014df: SHL 000014e0: SUB 000014e1: AND 000014e2: CALLER 000014e3: EQ 000014e4: PUSH2 0x14ff 000014e7: JUMPI 000014e8: PUSH1 0x40 000014ea: MLOAD 000014eb: PUSH3 0x461bcd 000014ef: PUSH1 0xe5 000014f1: SHL 000014f2: DUP2 000014f3: MSTORE 000014f4: PUSH1 0x04 000014f6: ADD 000014f7: PUSH2 0x0a9a 000014fa: SWAP1 000014fb: PUSH2 0x2b33 000014fe: JUMP 000014ff: JUMPDEST 00001500: PUSH1 0x01 00001502: PUSH1 0x01 00001504: PUSH1 0xa0 00001506: SHL 00001507: SUB 00001508: AND 00001509: PUSH1 0x00 0000150b: SWAP1 0000150c: DUP2 0000150d: MSTORE 0000150e: PUSH1 0x08 00001510: PUSH1 0x20 00001512: MSTORE 00001513: PUSH1 0x40 00001515: SWAP1 00001516: KECCAK256 00001517: DUP1 00001518: SLOAD 00001519: PUSH1 0xff 0000151b: NOT 0000151c: AND 0000151d: SWAP1 0000151e: SSTORE 0000151f: JUMP 00001520: JUMPDEST 00001521: PUSH1 0x00 00001523: SLOAD 00001524: PUSH1 0x01 00001526: PUSH1 0x01 00001528: PUSH1 0xa0 0000152a: SHL 0000152b: SUB 0000152c: AND 0000152d: CALLER 0000152e: EQ 0000152f: PUSH2 0x154a 00001532: JUMPI 00001533: PUSH1 0x40 00001535: MLOAD 00001536: PUSH3 0x461bcd 0000153a: PUSH1 0xe5 0000153c: SHL 0000153d: DUP2 0000153e: MSTORE 0000153f: PUSH1 0x04 00001541: ADD 00001542: PUSH2 0x0a9a 00001545: SWAP1 00001546: PUSH2 0x2b33 00001549: JUMP 0000154a: JUMPDEST 0000154b: PUSH1 0x19 0000154d: SSTORE 0000154e: JUMP 0000154f: JUMPDEST 00001550: PUSH1 0x00 00001552: SLOAD 00001553: PUSH1 0x01 00001555: PUSH1 0x01 00001557: PUSH1 0xa0 00001559: SHL 0000155a: SUB 0000155b: AND 0000155c: CALLER 0000155d: EQ 0000155e: PUSH2 0x1579 00001561: JUMPI 00001562: PUSH1 0x40 00001564: MLOAD 00001565: PUSH3 0x461bcd 00001569: PUSH1 0xe5 0000156b: SHL 0000156c: DUP2 0000156d: MSTORE 0000156e: PUSH1 0x04 00001570: ADD 00001571: PUSH2 0x0a9a 00001574: SWAP1 00001575: PUSH2 0x2b33 00001578: JUMP 00001579: JUMPDEST 0000157a: DUP1 0000157b: ISZERO 0000157c: PUSH2 0x15a0 0000157f: JUMPI 00001580: PUSH2 0x1589 00001583: PUSH1 0x00 00001585: PUSH2 0x13dd 00001588: JUMP 00001589: JUMPDEST 0000158a: PUSH2 0x1591 0000158d: PUSH2 0x1cf4 00001590: JUMP 00001591: JUMPDEST 00001592: PUSH1 0x19 00001594: SLOAD 00001595: PUSH1 0x1a 00001597: SSTORE 00001598: PUSH1 0x0b 0000159a: SLOAD 0000159b: PUSH1 0x19 0000159d: SSTORE 0000159e: POP 0000159f: JUMP 000015a0: JUMPDEST 000015a1: PUSH2 0x15aa 000015a4: PUSH1 0x01 000015a6: PUSH2 0x13dd 000015a9: JUMP 000015aa: JUMPDEST 000015ab: PUSH2 0x15c7 000015ae: PUSH1 0x12 000015b0: SLOAD 000015b1: PUSH1 0x11 000015b3: SSTORE 000015b4: PUSH1 0x14 000015b6: SLOAD 000015b7: PUSH1 0x13 000015b9: SSTORE 000015ba: PUSH1 0x16 000015bc: SLOAD 000015bd: PUSH1 0x15 000015bf: SSTORE 000015c0: PUSH1 0x18 000015c2: SLOAD 000015c3: PUSH1 0x17 000015c5: SSTORE 000015c6: JUMP 000015c7: JUMPDEST 000015c8: PUSH1 0x1a 000015ca: SLOAD 000015cb: PUSH1 0x19 000015cd: SSTORE 000015ce: JUMPDEST 000015cf: POP 000015d0: JUMP 000015d1: JUMPDEST 000015d2: PUSH1 0x00 000015d4: SLOAD 000015d5: PUSH1 0x01 000015d7: PUSH1 0x01 000015d9: PUSH1 0xa0 000015db: SHL 000015dc: SUB 000015dd: AND 000015de: CALLER 000015df: EQ 000015e0: PUSH2 0x15fb 000015e3: JUMPI 000015e4: PUSH1 0x40 000015e6: MLOAD 000015e7: PUSH3 0x461bcd 000015eb: PUSH1 0xe5 000015ed: SHL 000015ee: DUP2 000015ef: MSTORE 000015f0: PUSH1 0x04 000015f2: ADD 000015f3: PUSH2 0x0a9a 000015f6: SWAP1 000015f7: PUSH2 0x2b33 000015fa: JUMP 000015fb: JUMPDEST 000015fc: PUSH1 0x1b 000015fe: SSTORE 000015ff: JUMP 00001600: JUMPDEST 00001601: PUSH1 0x00 00001603: SLOAD 00001604: PUSH1 0x01 00001606: PUSH1 0x01 00001608: PUSH1 0xa0 0000160a: SHL 0000160b: SUB 0000160c: AND 0000160d: CALLER 0000160e: EQ 0000160f: PUSH2 0x162a 00001612: JUMPI 00001613: PUSH1 0x40 00001615: MLOAD 00001616: PUSH3 0x461bcd 0000161a: PUSH1 0xe5 0000161c: SHL 0000161d: DUP2 0000161e: MSTORE 0000161f: PUSH1 0x04 00001621: ADD 00001622: PUSH2 0x0a9a 00001625: SWAP1 00001626: PUSH2 0x2b33 00001629: JUMP 0000162a: JUMPDEST 0000162b: PUSH1 0x01 0000162d: PUSH1 0x01 0000162f: PUSH1 0xa0 00001631: SHL 00001632: SUB 00001633: DUP2 00001634: AND 00001635: PUSH2 0x168f 00001638: JUMPI 00001639: PUSH1 0x40 0000163b: MLOAD 0000163c: PUSH3 0x461bcd 00001640: PUSH1 0xe5 00001642: SHL 00001643: DUP2 00001644: MSTORE 00001645: PUSH1 0x20 00001647: PUSH1 0x04 00001649: DUP3 0000164a: ADD 0000164b: MSTORE 0000164c: PUSH1 0x26 0000164e: PUSH1 0x24 00001650: DUP3 00001651: ADD 00001652: MSTORE 00001653: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00001674: PUSH1 0x44 00001676: DUP3 00001677: ADD 00001678: MSTORE 00001679: PUSH6 0x646472657373 00001680: PUSH1 0xd0 00001682: SHL 00001683: PUSH1 0x64 00001685: DUP3 00001686: ADD 00001687: MSTORE 00001688: PUSH1 0x84 0000168a: ADD 0000168b: PUSH2 0x0a9a 0000168e: JUMP 0000168f: JUMPDEST 00001690: PUSH1 0x00 00001692: DUP1 00001693: SLOAD 00001694: PUSH1 0x40 00001696: MLOAD 00001697: PUSH1 0x01 00001699: PUSH1 0x01 0000169b: PUSH1 0xa0 0000169d: SHL 0000169e: SUB 0000169f: DUP1 000016a0: DUP6 000016a1: AND 000016a2: SWAP4 000016a3: SWAP3 000016a4: AND 000016a5: SWAP2 000016a6: PUSH1 0x00 000016a8: DUP1 000016a9: MLOAD 000016aa: PUSH1 0x20 000016ac: PUSH2 0x2d0b 000016af: DUP4 000016b0: CODECOPY 000016b1: DUP2 000016b2: MLOAD 000016b3: SWAP2 000016b4: MSTORE 000016b5: SWAP2 000016b6: LOG3 000016b7: PUSH1 0x00 000016b9: DUP1 000016ba: SLOAD 000016bb: PUSH1 0x01 000016bd: PUSH1 0x01 000016bf: PUSH1 0xa0 000016c1: SHL 000016c2: SUB 000016c3: NOT 000016c4: AND 000016c5: PUSH1 0x01 000016c7: PUSH1 0x01 000016c9: PUSH1 0xa0 000016cb: SHL 000016cc: SUB 000016cd: SWAP3 000016ce: SWAP1 000016cf: SWAP3 000016d0: AND 000016d1: SWAP2 000016d2: SWAP1 000016d3: SWAP2 000016d4: OR 000016d5: SWAP1 000016d6: SSTORE 000016d7: JUMP 000016d8: JUMPDEST 000016d9: PUSH1 0x00 000016db: PUSH2 0x0b76 000016de: DUP4 000016df: DUP4 000016e0: PUSH1 0x40 000016e2: MLOAD 000016e3: DUP1 000016e4: PUSH1 0x40 000016e6: ADD 000016e7: PUSH1 0x40 000016e9: MSTORE 000016ea: DUP1 000016eb: PUSH1 0x1a 000016ed: DUP2 000016ee: MSTORE 000016ef: PUSH1 0x20 000016f1: ADD 000016f2: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00001713: DUP2 00001714: MSTORE 00001715: POP 00001716: PUSH2 0x1d37 00001719: JUMP 0000171a: JUMPDEST 0000171b: PUSH1 0x00 0000171d: DUP3 0000171e: PUSH2 0x1729 00001721: JUMPI 00001722: POP 00001723: PUSH1 0x00 00001725: PUSH2 0x0a01 00001728: JUMP 00001729: JUMPDEST 0000172a: PUSH1 0x00 0000172c: PUSH2 0x1735 0000172f: DUP4 00001730: DUP6 00001731: PUSH2 0x2bff 00001734: JUMP 00001735: JUMPDEST 00001736: SWAP1 00001737: POP 00001738: DUP3 00001739: PUSH2 0x1742 0000173c: DUP6 0000173d: DUP4 0000173e: PUSH2 0x2bdd 00001741: JUMP 00001742: JUMPDEST 00001743: EQ 00001744: PUSH2 0x0b76 00001747: JUMPI 00001748: PUSH1 0x40 0000174a: MLOAD 0000174b: PUSH3 0x461bcd 0000174f: PUSH1 0xe5 00001751: SHL 00001752: DUP2 00001753: MSTORE 00001754: PUSH1 0x20 00001756: PUSH1 0x04 00001758: DUP3 00001759: ADD 0000175a: MSTORE 0000175b: PUSH1 0x21 0000175d: PUSH1 0x24 0000175f: DUP3 00001760: ADD 00001761: MSTORE 00001762: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f 00001783: PUSH1 0x44 00001785: DUP3 00001786: ADD 00001787: MSTORE 00001788: PUSH1 0x77 0000178a: PUSH1 0xf8 0000178c: SHL 0000178d: PUSH1 0x64 0000178f: DUP3 00001790: ADD 00001791: MSTORE 00001792: PUSH1 0x84 00001794: ADD 00001795: PUSH2 0x0a9a 00001798: JUMP 00001799: JUMPDEST 0000179a: PUSH1 0x01 0000179c: PUSH1 0x01 0000179e: PUSH1 0xa0 000017a0: SHL 000017a1: SUB 000017a2: DUP4 000017a3: AND 000017a4: PUSH2 0x17fb 000017a7: JUMPI 000017a8: PUSH1 0x40 000017aa: MLOAD 000017ab: PUSH3 0x461bcd 000017af: PUSH1 0xe5 000017b1: SHL 000017b2: DUP2 000017b3: MSTORE 000017b4: PUSH1 0x20 000017b6: PUSH1 0x04 000017b8: DUP3 000017b9: ADD 000017ba: MSTORE 000017bb: PUSH1 0x24 000017bd: DUP1 000017be: DUP3 000017bf: ADD 000017c0: MSTORE 000017c1: PUSH32 0x45524332303a20617070726f76652066726f6d20746865207a65726f20616464 000017e2: PUSH1 0x44 000017e4: DUP3 000017e5: ADD 000017e6: MSTORE 000017e7: PUSH4 0x72657373 000017ec: PUSH1 0xe0 000017ee: SHL 000017ef: PUSH1 0x64 000017f1: DUP3 000017f2: ADD 000017f3: MSTORE 000017f4: PUSH1 0x84 000017f6: ADD 000017f7: PUSH2 0x0a9a 000017fa: JUMP 000017fb: JUMPDEST 000017fc: PUSH1 0x01 000017fe: PUSH1 0x01 00001800: PUSH1 0xa0 00001802: SHL 00001803: SUB 00001804: DUP3 00001805: AND 00001806: PUSH2 0x185c 00001809: JUMPI 0000180a: PUSH1 0x40 0000180c: MLOAD 0000180d: PUSH3 0x461bcd 00001811: PUSH1 0xe5 00001813: SHL 00001814: DUP2 00001815: MSTORE 00001816: PUSH1 0x20 00001818: PUSH1 0x04 0000181a: DUP3 0000181b: ADD 0000181c: MSTORE 0000181d: PUSH1 0x22 0000181f: PUSH1 0x24 00001821: DUP3 00001822: ADD 00001823: MSTORE 00001824: PUSH32 0x45524332303a20617070726f766520746f20746865207a65726f206164647265 00001845: PUSH1 0x44 00001847: DUP3 00001848: ADD 00001849: MSTORE 0000184a: PUSH2 0x7373 0000184d: PUSH1 0xf0 0000184f: SHL 00001850: PUSH1 0x64 00001852: DUP3 00001853: ADD 00001854: MSTORE 00001855: PUSH1 0x84 00001857: ADD 00001858: PUSH2 0x0a9a 0000185b: JUMP 0000185c: JUMPDEST 0000185d: PUSH1 0x01 0000185f: PUSH1 0x01 00001861: PUSH1 0xa0 00001863: SHL 00001864: SUB 00001865: DUP4 00001866: DUP2 00001867: AND 00001868: PUSH1 0x00 0000186a: DUP2 0000186b: DUP2 0000186c: MSTORE 0000186d: PUSH1 0x07 0000186f: PUSH1 0x20 00001871: SWAP1 00001872: DUP2 00001873: MSTORE 00001874: PUSH1 0x40 00001876: DUP1 00001877: DUP4 00001878: KECCAK256 00001879: SWAP5 0000187a: DUP8 0000187b: AND 0000187c: DUP1 0000187d: DUP5 0000187e: MSTORE 0000187f: SWAP5 00001880: DUP3 00001881: MSTORE 00001882: SWAP2 00001883: DUP3 00001884: SWAP1 00001885: KECCAK256 00001886: DUP6 00001887: SWAP1 00001888: SSTORE 00001889: SWAP1 0000188a: MLOAD 0000188b: DUP5 0000188c: DUP2 0000188d: MSTORE 0000188e: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 000018af: SWAP2 000018b0: ADD 000018b1: PUSH1 0x40 000018b3: MLOAD 000018b4: DUP1 000018b5: SWAP2 000018b6: SUB 000018b7: SWAP1 000018b8: LOG3 000018b9: POP 000018ba: POP 000018bb: POP 000018bc: JUMP 000018bd: JUMPDEST 000018be: PUSH1 0x01 000018c0: PUSH1 0x01 000018c2: PUSH1 0xa0 000018c4: SHL 000018c5: SUB 000018c6: DUP4 000018c7: AND 000018c8: PUSH2 0x1921 000018cb: JUMPI 000018cc: PUSH1 0x40 000018ce: MLOAD 000018cf: PUSH3 0x461bcd 000018d3: PUSH1 0xe5 000018d5: SHL 000018d6: DUP2 000018d7: MSTORE 000018d8: PUSH1 0x20 000018da: PUSH1 0x04 000018dc: DUP3 000018dd: ADD 000018de: MSTORE 000018df: PUSH1 0x25 000018e1: PUSH1 0x24 000018e3: DUP3 000018e4: ADD 000018e5: MSTORE 000018e6: PUSH32 0x45524332303a207472616e736665722066726f6d20746865207a65726f206164 00001907: PUSH1 0x44 00001909: DUP3 0000190a: ADD 0000190b: MSTORE 0000190c: PUSH5 0x6472657373 00001912: PUSH1 0xd8 00001914: SHL 00001915: PUSH1 0x64 00001917: DUP3 00001918: ADD 00001919: MSTORE 0000191a: PUSH1 0x84 0000191c: ADD 0000191d: PUSH2 0x0a9a 00001920: JUMP 00001921: JUMPDEST 00001922: PUSH1 0x01 00001924: PUSH1 0x01 00001926: PUSH1 0xa0 00001928: SHL 00001929: SUB 0000192a: DUP3 0000192b: AND 0000192c: PUSH2 0x1983 0000192f: JUMPI 00001930: PUSH1 0x40 00001932: MLOAD 00001933: PUSH3 0x461bcd 00001937: PUSH1 0xe5 00001939: SHL 0000193a: DUP2 0000193b: MSTORE 0000193c: PUSH1 0x20 0000193e: PUSH1 0x04 00001940: DUP3 00001941: ADD 00001942: MSTORE 00001943: PUSH1 0x23 00001945: PUSH1 0x24 00001947: DUP3 00001948: ADD 00001949: MSTORE 0000194a: PUSH32 0x45524332303a207472616e7366657220746f20746865207a65726f2061646472 0000196b: PUSH1 0x44 0000196d: DUP3 0000196e: ADD 0000196f: MSTORE 00001970: PUSH3 0x657373 00001974: PUSH1 0xe8 00001976: SHL 00001977: PUSH1 0x64 00001979: DUP3 0000197a: ADD 0000197b: MSTORE 0000197c: PUSH1 0x84 0000197e: ADD 0000197f: PUSH2 0x0a9a 00001982: JUMP 00001983: JUMPDEST 00001984: PUSH1 0x00 00001986: DUP2 00001987: GT 00001988: PUSH2 0x19e5 0000198b: JUMPI 0000198c: PUSH1 0x40 0000198e: MLOAD 0000198f: PUSH3 0x461bcd 00001993: PUSH1 0xe5 00001995: SHL 00001996: DUP2 00001997: MSTORE 00001998: PUSH1 0x20 0000199a: PUSH1 0x04 0000199c: DUP3 0000199d: ADD 0000199e: MSTORE 0000199f: PUSH1 0x29 000019a1: PUSH1 0x24 000019a3: DUP3 000019a4: ADD 000019a5: MSTORE 000019a6: PUSH32 0x5472616e7366657220616d6f756e74206d757374206265206772656174657220 000019c7: PUSH1 0x44 000019c9: DUP3 000019ca: ADD 000019cb: MSTORE 000019cc: PUSH9 0x7468616e207a65726f 000019d6: PUSH1 0xb8 000019d8: SHL 000019d9: PUSH1 0x64 000019db: DUP3 000019dc: ADD 000019dd: MSTORE 000019de: PUSH1 0x84 000019e0: ADD 000019e1: PUSH2 0x0a9a 000019e4: JUMP 000019e5: JUMPDEST 000019e6: PUSH1 0x00 000019e8: SLOAD 000019e9: PUSH1 0x01 000019eb: PUSH1 0x01 000019ed: PUSH1 0xa0 000019ef: SHL 000019f0: SUB 000019f1: DUP5 000019f2: DUP2 000019f3: AND 000019f4: SWAP2 000019f5: AND 000019f6: EQ 000019f7: DUP1 000019f8: ISZERO 000019f9: SWAP1 000019fa: PUSH2 0x1a11 000019fd: JUMPI 000019fe: POP 000019ff: PUSH1 0x00 00001a01: SLOAD 00001a02: PUSH1 0x01 00001a04: PUSH1 0x01 00001a06: PUSH1 0xa0 00001a08: SHL 00001a09: SUB 00001a0a: DUP4 00001a0b: DUP2 00001a0c: AND 00001a0d: SWAP2 00001a0e: AND 00001a0f: EQ 00001a10: ISZERO 00001a11: JUMPDEST 00001a12: ISZERO 00001a13: PUSH2 0x1a79 00001a16: JUMPI 00001a17: PUSH1 0x19 00001a19: SLOAD 00001a1a: DUP2 00001a1b: GT 00001a1c: ISZERO 00001a1d: PUSH2 0x1a79 00001a20: JUMPI 00001a21: PUSH1 0x40 00001a23: MLOAD 00001a24: PUSH3 0x461bcd 00001a28: PUSH1 0xe5 00001a2a: SHL 00001a2b: DUP2 00001a2c: MSTORE 00001a2d: PUSH1 0x20 00001a2f: PUSH1 0x04 00001a31: DUP3 00001a32: ADD 00001a33: MSTORE 00001a34: PUSH1 0x28 00001a36: PUSH1 0x24 00001a38: DUP3 00001a39: ADD 00001a3a: MSTORE 00001a3b: PUSH32 0x5472616e7366657220616d6f756e74206578636565647320746865206d617854 00001a5c: PUSH1 0x44 00001a5e: DUP3 00001a5f: ADD 00001a60: MSTORE 00001a61: PUSH8 0x3c20b6b7bab73a17 00001a6a: PUSH1 0xc1 00001a6c: SHL 00001a6d: PUSH1 0x64 00001a6f: DUP3 00001a70: ADD 00001a71: MSTORE 00001a72: PUSH1 0x84 00001a74: ADD 00001a75: PUSH2 0x0a9a 00001a78: JUMP 00001a79: JUMPDEST 00001a7a: PUSH1 0x00 00001a7c: PUSH2 0x1a84 00001a7f: ADDRESS 00001a80: PUSH2 0x1101 00001a83: JUMP 00001a84: JUMPDEST 00001a85: PUSH1 0x1b 00001a87: SLOAD 00001a88: PUSH1 0x1d 00001a8a: SLOAD 00001a8b: SWAP2 00001a8c: SWAP3 00001a8d: POP 00001a8e: DUP3 00001a8f: LT 00001a90: ISZERO 00001a91: SWAP1 00001a92: PUSH1 0xff 00001a94: AND 00001a95: ISZERO 00001a96: DUP1 00001a97: ISZERO 00001a98: PUSH2 0x1aa8 00001a9b: JUMPI 00001a9c: POP 00001a9d: PUSH1 0x1d 00001a9f: SLOAD 00001aa0: PUSH2 0x0100 00001aa3: SWAP1 00001aa4: DIV 00001aa5: PUSH1 0xff 00001aa7: AND 00001aa8: JUMPDEST 00001aa9: DUP1 00001aaa: ISZERO 00001aab: PUSH2 0x1ae5 00001aae: JUMPI 00001aaf: POP 00001ab0: PUSH32 0x00000000000000000000000045770059777f0f6ed0178147d32d27d845d386b9 00001ad1: PUSH1 0x01 00001ad3: PUSH1 0x01 00001ad5: PUSH1 0xa0 00001ad7: SHL 00001ad8: SUB 00001ad9: AND 00001ada: DUP5 00001adb: PUSH1 0x01 00001add: PUSH1 0x01 00001adf: PUSH1 0xa0 00001ae1: SHL 00001ae2: SUB 00001ae3: AND 00001ae4: EQ 00001ae5: JUMPDEST 00001ae6: ISZERO 00001ae7: PUSH2 0x1b48 00001aea: JUMPI 00001aeb: DUP1 00001aec: ISZERO 00001aed: PUSH2 0x1afe 00001af0: JUMPI 00001af1: PUSH1 0x1b 00001af3: SLOAD 00001af4: SWAP2 00001af5: POP 00001af6: PUSH2 0x1afe 00001af9: DUP3 00001afa: PUSH2 0x1d65 00001afd: JUMP 00001afe: JUMPDEST 00001aff: PUSH1 0x1d 00001b01: SLOAD 00001b02: SELFBALANCE 00001b03: SWAP1 00001b04: PUSH3 0x010000 00001b08: SWAP1 00001b09: DIV 00001b0a: PUSH1 0xff 00001b0c: AND 00001b0d: DUP1 00001b0e: ISZERO 00001b0f: PUSH2 0x1b1f 00001b12: JUMPI 00001b13: POP 00001b14: PUSH8 0x0de0b6b3a7640000 00001b1d: DUP2 00001b1e: GT 00001b1f: JUMPDEST 00001b20: ISZERO 00001b21: PUSH2 0x1b46 00001b24: JUMPI 00001b25: PUSH1 0x1c 00001b27: SLOAD 00001b28: DUP2 00001b29: GT 00001b2a: ISZERO 00001b2b: PUSH2 0x1b33 00001b2e: JUMPI 00001b2f: POP 00001b30: PUSH1 0x1c 00001b32: SLOAD 00001b33: JUMPDEST 00001b34: PUSH2 0x1b46 00001b37: PUSH2 0x1b41 00001b3a: DUP3 00001b3b: PUSH1 0x64 00001b3d: PUSH2 0x16d8 00001b40: JUMP 00001b41: JUMPDEST 00001b42: PUSH2 0x1dfe 00001b45: JUMP 00001b46: JUMPDEST 00001b47: POP 00001b48: JUMPDEST 00001b49: PUSH1 0x01 00001b4b: PUSH1 0x01 00001b4d: PUSH1 0xa0 00001b4f: SHL 00001b50: SUB 00001b51: DUP6 00001b52: AND 00001b53: PUSH1 0x00 00001b55: SWAP1 00001b56: DUP2 00001b57: MSTORE 00001b58: PUSH1 0x08 00001b5a: PUSH1 0x20 00001b5c: MSTORE 00001b5d: PUSH1 0x40 00001b5f: SWAP1 00001b60: KECCAK256 00001b61: SLOAD 00001b62: PUSH1 0x01 00001b64: SWAP1 00001b65: PUSH1 0xff 00001b67: AND 00001b68: DUP1 00001b69: PUSH2 0x1b8a 00001b6c: JUMPI 00001b6d: POP 00001b6e: PUSH1 0x01 00001b70: PUSH1 0x01 00001b72: PUSH1 0xa0 00001b74: SHL 00001b75: SUB 00001b76: DUP6 00001b77: AND 00001b78: PUSH1 0x00 00001b7a: SWAP1 00001b7b: DUP2 00001b7c: MSTORE 00001b7d: PUSH1 0x08 00001b7f: PUSH1 0x20 00001b81: MSTORE 00001b82: PUSH1 0x40 00001b84: SWAP1 00001b85: KECCAK256 00001b86: SLOAD 00001b87: PUSH1 0xff 00001b89: AND 00001b8a: JUMPDEST 00001b8b: ISZERO 00001b8c: PUSH2 0x1b93 00001b8f: JUMPI 00001b90: POP 00001b91: PUSH1 0x00 00001b93: JUMPDEST 00001b94: PUSH2 0x1b9f 00001b97: DUP7 00001b98: DUP7 00001b99: DUP7 00001b9a: DUP5 00001b9b: PUSH2 0x1e27 00001b9e: JUMP 00001b9f: JUMPDEST 00001ba0: POP 00001ba1: POP 00001ba2: POP 00001ba3: POP 00001ba4: POP 00001ba5: POP 00001ba6: JUMP 00001ba7: JUMPDEST 00001ba8: PUSH1 0x00 00001baa: DUP2 00001bab: DUP5 00001bac: DUP5 00001bad: GT 00001bae: ISZERO 00001baf: PUSH2 0x1bcb 00001bb2: JUMPI 00001bb3: PUSH1 0x40 00001bb5: MLOAD 00001bb6: PUSH3 0x461bcd 00001bba: PUSH1 0xe5 00001bbc: SHL 00001bbd: DUP2 00001bbe: MSTORE 00001bbf: PUSH1 0x04 00001bc1: ADD 00001bc2: PUSH2 0x0a9a 00001bc5: SWAP2 00001bc6: SWAP1 00001bc7: PUSH2 0x2ade 00001bca: JUMP 00001bcb: JUMPDEST 00001bcc: POP 00001bcd: PUSH1 0x00 00001bcf: PUSH2 0x1bd8 00001bd2: DUP5 00001bd3: DUP7 00001bd4: PUSH2 0x2c1e 00001bd7: JUMP 00001bd8: JUMPDEST 00001bd9: SWAP6 00001bda: SWAP5 00001bdb: POP 00001bdc: POP 00001bdd: POP 00001bde: POP 00001bdf: POP 00001be0: JUMP 00001be1: JUMPDEST 00001be2: PUSH1 0x00 00001be4: DUP1 00001be5: PUSH1 0x00 00001be7: PUSH2 0x1bee 00001bea: PUSH2 0x1f5e 00001bed: JUMP 00001bee: JUMPDEST 00001bef: SWAP1 00001bf0: SWAP3 00001bf1: POP 00001bf2: SWAP1 00001bf3: POP 00001bf4: PUSH2 0x1bfd 00001bf7: DUP3 00001bf8: DUP3 00001bf9: PUSH2 0x16d8 00001bfc: JUMP 00001bfd: JUMPDEST 00001bfe: SWAP3 00001bff: POP 00001c00: POP 00001c01: POP 00001c02: SWAP1 00001c03: JUMP 00001c04: JUMPDEST 00001c05: PUSH1 0x00 00001c07: DUP1 00001c08: PUSH2 0x1c11 00001c0b: DUP4 00001c0c: DUP6 00001c0d: PUSH2 0x2bc5 00001c10: JUMP 00001c11: JUMPDEST 00001c12: SWAP1 00001c13: POP 00001c14: DUP4 00001c15: DUP2 00001c16: LT 00001c17: ISZERO 00001c18: PUSH2 0x0b76 00001c1b: JUMPI 00001c1c: PUSH1 0x40 00001c1e: MLOAD 00001c1f: PUSH3 0x461bcd 00001c23: PUSH1 0xe5 00001c25: SHL 00001c26: DUP2 00001c27: MSTORE 00001c28: PUSH1 0x20 00001c2a: PUSH1 0x04 00001c2c: DUP3 00001c2d: ADD 00001c2e: MSTORE 00001c2f: PUSH1 0x1b 00001c31: PUSH1 0x24 00001c33: DUP3 00001c34: ADD 00001c35: MSTORE 00001c36: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001c57: PUSH1 0x44 00001c59: DUP3 00001c5a: ADD 00001c5b: MSTORE 00001c5c: PUSH1 0x64 00001c5e: ADD 00001c5f: PUSH2 0x0a9a 00001c62: JUMP 00001c63: JUMPDEST 00001c64: PUSH1 0x00 00001c66: DUP1 00001c67: PUSH1 0x00 00001c69: DUP1 00001c6a: PUSH1 0x00 00001c6c: DUP1 00001c6d: PUSH1 0x00 00001c6f: DUP1 00001c70: PUSH1 0x00 00001c72: PUSH2 0x1c7a 00001c75: DUP11 00001c76: PUSH2 0x20e0 00001c79: JUMP 00001c7a: JUMPDEST 00001c7b: SWAP3 00001c7c: POP 00001c7d: SWAP3 00001c7e: POP 00001c7f: SWAP3 00001c80: POP 00001c81: PUSH1 0x00 00001c83: DUP1 00001c84: PUSH1 0x00 00001c86: PUSH2 0x1c98 00001c89: DUP14 00001c8a: DUP7 00001c8b: DUP7 00001c8c: PUSH2 0x1c93 00001c8f: PUSH2 0x1be1 00001c92: JUMP 00001c93: JUMPDEST 00001c94: PUSH2 0x2122 00001c97: JUMP 00001c98: JUMPDEST 00001c99: SWAP2 00001c9a: SWAP16 00001c9b: SWAP1 00001c9c: SWAP15 00001c9d: POP 00001c9e: SWAP1 00001c9f: SWAP13 00001ca0: POP 00001ca1: SWAP6 00001ca2: SWAP11 00001ca3: POP 00001ca4: SWAP4 00001ca5: SWAP9 00001ca6: POP 00001ca7: SWAP2 00001ca8: SWAP7 00001ca9: POP 00001caa: SWAP3 00001cab: SWAP5 00001cac: POP 00001cad: POP 00001cae: POP 00001caf: POP 00001cb0: POP 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: PUSH1 0x00 00001cb5: PUSH2 0x0b76 00001cb8: DUP4 00001cb9: DUP4 00001cba: PUSH1 0x40 00001cbc: MLOAD 00001cbd: DUP1 00001cbe: PUSH1 0x40 00001cc0: ADD 00001cc1: PUSH1 0x40 00001cc3: MSTORE 00001cc4: DUP1 00001cc5: PUSH1 0x1e 00001cc7: DUP2 00001cc8: MSTORE 00001cc9: PUSH1 0x20 00001ccb: ADD 00001ccc: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00001ced: DUP2 00001cee: MSTORE 00001cef: POP 00001cf0: PUSH2 0x1ba7 00001cf3: JUMP 00001cf4: JUMPDEST 00001cf5: PUSH1 0x11 00001cf7: SLOAD 00001cf8: ISZERO 00001cf9: DUP1 00001cfa: ISZERO 00001cfb: PUSH2 0x1d04 00001cfe: JUMPI 00001cff: POP 00001d00: PUSH1 0x13 00001d02: SLOAD 00001d03: ISZERO 00001d04: JUMPDEST 00001d05: ISZERO 00001d06: PUSH2 0x1d0b 00001d09: JUMPI 00001d0a: JUMP 00001d0b: JUMPDEST 00001d0c: PUSH1 0x11 00001d0e: DUP1 00001d0f: SLOAD 00001d10: PUSH1 0x12 00001d12: SSTORE 00001d13: PUSH1 0x13 00001d15: DUP1 00001d16: SLOAD 00001d17: PUSH1 0x14 00001d19: SSTORE 00001d1a: PUSH1 0x15 00001d1c: DUP1 00001d1d: SLOAD 00001d1e: PUSH1 0x16 00001d20: SSTORE 00001d21: PUSH1 0x17 00001d23: DUP1 00001d24: SLOAD 00001d25: PUSH1 0x18 00001d27: SSTORE 00001d28: PUSH1 0x00 00001d2a: SWAP4 00001d2b: DUP5 00001d2c: SWAP1 00001d2d: SSTORE 00001d2e: SWAP2 00001d2f: DUP4 00001d30: SWAP1 00001d31: SSTORE 00001d32: DUP3 00001d33: SWAP1 00001d34: SSTORE 00001d35: SSTORE 00001d36: JUMP 00001d37: JUMPDEST 00001d38: PUSH1 0x00 00001d3a: DUP2 00001d3b: DUP4 00001d3c: PUSH2 0x1d58 00001d3f: JUMPI 00001d40: PUSH1 0x40 00001d42: MLOAD 00001d43: PUSH3 0x461bcd 00001d47: PUSH1 0xe5 00001d49: SHL 00001d4a: DUP2 00001d4b: MSTORE 00001d4c: PUSH1 0x04 00001d4e: ADD 00001d4f: PUSH2 0x0a9a 00001d52: SWAP2 00001d53: SWAP1 00001d54: PUSH2 0x2ade 00001d57: JUMP 00001d58: JUMPDEST 00001d59: POP 00001d5a: PUSH1 0x00 00001d5c: PUSH2 0x1bd8 00001d5f: DUP5 00001d60: DUP7 00001d61: PUSH2 0x2bdd 00001d64: JUMP 00001d65: JUMPDEST 00001d66: PUSH1 0x1d 00001d68: DUP1 00001d69: SLOAD 00001d6a: PUSH1 0xff 00001d6c: NOT 00001d6d: AND 00001d6e: PUSH1 0x01 00001d70: OR 00001d71: SWAP1 00001d72: SSTORE 00001d73: SELFBALANCE 00001d74: PUSH2 0x1d7c 00001d77: DUP3 00001d78: PUSH2 0x2172 00001d7b: JUMP 00001d7c: JUMPDEST 00001d7d: PUSH1 0x00 00001d7f: PUSH2 0x1d88 00001d82: SELFBALANCE 00001d83: DUP4 00001d84: PUSH2 0x1cb2 00001d87: JUMP 00001d88: JUMPDEST 00001d89: PUSH1 0x03 00001d8b: SLOAD 00001d8c: PUSH1 0x13 00001d8e: SLOAD 00001d8f: SWAP2 00001d90: SWAP3 00001d91: POP 00001d92: PUSH2 0x1dbe 00001d95: SWAP2 00001d96: PUSH1 0x01 00001d98: PUSH1 0x01 00001d9a: PUSH1 0xa0 00001d9c: SHL 00001d9d: SUB 00001d9e: SWAP1 00001d9f: SWAP2 00001da0: AND 00001da1: SWAP1 00001da2: PUSH2 0x1db9 00001da5: SWAP1 00001da6: PUSH1 0x19 00001da8: SWAP1 00001da9: PUSH2 0x1db3 00001dac: SWAP1 00001dad: DUP7 00001dae: SWAP1 00001daf: PUSH2 0x16d8 00001db2: JUMP 00001db3: JUMPDEST 00001db4: SWAP1 00001db5: PUSH2 0x171a 00001db8: JUMP 00001db9: JUMPDEST 00001dba: PUSH2 0x237a 00001dbd: JUMP 00001dbe: JUMPDEST 00001dbf: PUSH1 0x04 00001dc1: SLOAD 00001dc2: PUSH1 0x17 00001dc4: SLOAD 00001dc5: PUSH2 0x1def 00001dc8: SWAP2 00001dc9: PUSH1 0x01 00001dcb: PUSH1 0x01 00001dcd: PUSH1 0xa0 00001dcf: SHL 00001dd0: SUB 00001dd1: AND 00001dd2: SWAP1 00001dd3: PUSH2 0x1db9 00001dd6: SWAP1 00001dd7: PUSH2 0x1de1 00001dda: SWAP1 00001ddb: PUSH1 0x19 00001ddd: PUSH2 0x1cb2 00001de0: JUMP 00001de1: JUMPDEST 00001de2: PUSH1 0x13 00001de4: SLOAD 00001de5: PUSH2 0x1db3 00001de8: SWAP1 00001de9: DUP7 00001dea: SWAP1 00001deb: PUSH2 0x16d8 00001dee: JUMP 00001def: JUMPDEST 00001df0: POP 00001df1: POP 00001df2: PUSH1 0x1d 00001df4: DUP1 00001df5: SLOAD 00001df6: PUSH1 0xff 00001df8: NOT 00001df9: AND 00001dfa: SWAP1 00001dfb: SSTORE 00001dfc: POP 00001dfd: JUMP 00001dfe: JUMPDEST 00001dff: PUSH1 0x1d 00001e01: DUP1 00001e02: SLOAD 00001e03: PUSH1 0xff 00001e05: NOT 00001e06: AND 00001e07: PUSH1 0x01 00001e09: OR 00001e0a: SWAP1 00001e0b: SSTORE 00001e0c: DUP1 00001e0d: ISZERO 00001e0e: PUSH2 0x1e1a 00001e11: JUMPI 00001e12: PUSH2 0x1e1a 00001e15: DUP2 00001e16: PUSH2 0x23b5 00001e19: JUMP 00001e1a: JUMPDEST 00001e1b: POP 00001e1c: PUSH1 0x1d 00001e1e: DUP1 00001e1f: SLOAD 00001e20: PUSH1 0xff 00001e22: NOT 00001e23: AND 00001e24: SWAP1 00001e25: SSTORE 00001e26: JUMP 00001e27: JUMPDEST 00001e28: DUP1 00001e29: PUSH2 0x1e34 00001e2c: JUMPI 00001e2d: PUSH2 0x1e34 00001e30: PUSH2 0x1cf4 00001e33: JUMP 00001e34: JUMPDEST 00001e35: PUSH1 0x01 00001e37: PUSH1 0x01 00001e39: PUSH1 0xa0 00001e3b: SHL 00001e3c: SUB 00001e3d: DUP5 00001e3e: AND 00001e3f: PUSH1 0x00 00001e41: SWAP1 00001e42: DUP2 00001e43: MSTORE 00001e44: PUSH1 0x09 00001e46: PUSH1 0x20 00001e48: MSTORE 00001e49: PUSH1 0x40 00001e4b: SWAP1 00001e4c: KECCAK256 00001e4d: SLOAD 00001e4e: PUSH1 0xff 00001e50: AND 00001e51: DUP1 00001e52: ISZERO 00001e53: PUSH2 0x1e75 00001e56: JUMPI 00001e57: POP 00001e58: PUSH1 0x01 00001e5a: PUSH1 0x01 00001e5c: PUSH1 0xa0 00001e5e: SHL 00001e5f: SUB 00001e60: DUP4 00001e61: AND 00001e62: PUSH1 0x00 00001e64: SWAP1 00001e65: DUP2 00001e66: MSTORE 00001e67: PUSH1 0x09 00001e69: PUSH1 0x20 00001e6b: MSTORE 00001e6c: PUSH1 0x40 00001e6e: SWAP1 00001e6f: KECCAK256 00001e70: SLOAD 00001e71: PUSH1 0xff 00001e73: AND 00001e74: ISZERO 00001e75: JUMPDEST 00001e76: ISZERO 00001e77: PUSH2 0x1e8a 00001e7a: JUMPI 00001e7b: PUSH2 0x1e85 00001e7e: DUP5 00001e7f: DUP5 00001e80: DUP5 00001e81: PUSH2 0x259e 00001e84: JUMP 00001e85: JUMPDEST 00001e86: PUSH2 0x1f36 00001e89: JUMP 00001e8a: JUMPDEST 00001e8b: PUSH1 0x01 00001e8d: PUSH1 0x01 00001e8f: PUSH1 0xa0 00001e91: SHL 00001e92: SUB 00001e93: DUP5 00001e94: AND 00001e95: PUSH1 0x00 00001e97: SWAP1 00001e98: DUP2 00001e99: MSTORE 00001e9a: PUSH1 0x09 00001e9c: PUSH1 0x20 00001e9e: MSTORE 00001e9f: PUSH1 0x40 00001ea1: SWAP1 00001ea2: KECCAK256 00001ea3: SLOAD 00001ea4: PUSH1 0xff 00001ea6: AND 00001ea7: ISZERO 00001ea8: DUP1 00001ea9: ISZERO 00001eaa: PUSH2 0x1ecb 00001ead: JUMPI 00001eae: POP 00001eaf: PUSH1 0x01 00001eb1: PUSH1 0x01 00001eb3: PUSH1 0xa0 00001eb5: SHL 00001eb6: SUB 00001eb7: DUP4 00001eb8: AND 00001eb9: PUSH1 0x00 00001ebb: SWAP1 00001ebc: DUP2 00001ebd: MSTORE 00001ebe: PUSH1 0x09 00001ec0: PUSH1 0x20 00001ec2: MSTORE 00001ec3: PUSH1 0x40 00001ec5: SWAP1 00001ec6: KECCAK256 00001ec7: SLOAD 00001ec8: PUSH1 0xff 00001eca: AND 00001ecb: JUMPDEST 00001ecc: ISZERO 00001ecd: PUSH2 0x1edb 00001ed0: JUMPI 00001ed1: PUSH2 0x1e85 00001ed4: DUP5 00001ed5: DUP5 00001ed6: DUP5 00001ed7: PUSH2 0x26c4 00001eda: JUMP 00001edb: JUMPDEST 00001edc: PUSH1 0x01 00001ede: PUSH1 0x01 00001ee0: PUSH1 0xa0 00001ee2: SHL 00001ee3: SUB 00001ee4: DUP5 00001ee5: AND 00001ee6: PUSH1 0x00 00001ee8: SWAP1 00001ee9: DUP2 00001eea: MSTORE 00001eeb: PUSH1 0x09 00001eed: PUSH1 0x20 00001eef: MSTORE 00001ef0: PUSH1 0x40 00001ef2: SWAP1 00001ef3: KECCAK256 00001ef4: SLOAD 00001ef5: PUSH1 0xff 00001ef7: AND 00001ef8: DUP1 00001ef9: ISZERO 00001efa: PUSH2 0x1f1b 00001efd: JUMPI 00001efe: POP 00001eff: PUSH1 0x01 00001f01: PUSH1 0x01 00001f03: PUSH1 0xa0 00001f05: SHL 00001f06: SUB 00001f07: DUP4 00001f08: AND 00001f09: PUSH1 0x00 00001f0b: SWAP1 00001f0c: DUP2 00001f0d: MSTORE 00001f0e: PUSH1 0x09 00001f10: PUSH1 0x20 00001f12: MSTORE 00001f13: PUSH1 0x40 00001f15: SWAP1 00001f16: KECCAK256 00001f17: SLOAD 00001f18: PUSH1 0xff 00001f1a: AND 00001f1b: JUMPDEST 00001f1c: ISZERO 00001f1d: PUSH2 0x1f2b 00001f20: JUMPI 00001f21: PUSH2 0x1e85 00001f24: DUP5 00001f25: DUP5 00001f26: DUP5 00001f27: PUSH2 0x276d 00001f2a: JUMP 00001f2b: JUMPDEST 00001f2c: PUSH2 0x1f36 00001f2f: DUP5 00001f30: DUP5 00001f31: DUP5 00001f32: PUSH2 0x27e0 00001f35: JUMP 00001f36: JUMPDEST 00001f37: DUP1 00001f38: PUSH2 0x1f58 00001f3b: JUMPI 00001f3c: PUSH2 0x1f58 00001f3f: PUSH1 0x12 00001f41: SLOAD 00001f42: PUSH1 0x11 00001f44: SSTORE 00001f45: PUSH1 0x14 00001f47: SLOAD 00001f48: PUSH1 0x13 00001f4a: SSTORE 00001f4b: PUSH1 0x16 00001f4d: SLOAD 00001f4e: PUSH1 0x15 00001f50: SSTORE 00001f51: PUSH1 0x18 00001f53: SLOAD 00001f54: PUSH1 0x17 00001f56: SSTORE 00001f57: JUMP 00001f58: JUMPDEST 00001f59: POP 00001f5a: POP 00001f5b: POP 00001f5c: POP 00001f5d: JUMP 00001f5e: JUMPDEST 00001f5f: PUSH1 0x0c 00001f61: SLOAD 00001f62: PUSH1 0x0b 00001f64: SLOAD 00001f65: PUSH1 0x00 00001f67: SWAP2 00001f68: DUP3 00001f69: SWAP2 00001f6a: DUP3 00001f6b: JUMPDEST 00001f6c: PUSH1 0x0a 00001f6e: SLOAD 00001f6f: DUP2 00001f70: LT 00001f71: ISZERO 00001f72: PUSH2 0x20b0 00001f75: JUMPI 00001f76: DUP3 00001f77: PUSH1 0x05 00001f79: PUSH1 0x00 00001f7b: PUSH1 0x0a 00001f7d: DUP5 00001f7e: DUP2 00001f7f: SLOAD 00001f80: DUP2 00001f81: LT 00001f82: PUSH2 0x1f8d 00001f85: JUMPI 00001f86: PUSH2 0x1f8d 00001f89: PUSH2 0x2cb7 00001f8c: JUMP 00001f8d: JUMPDEST 00001f8e: PUSH1 0x00 00001f90: SWAP2 00001f91: DUP3 00001f92: MSTORE 00001f93: PUSH1 0x20 00001f95: DUP1 00001f96: DUP4 00001f97: KECCAK256 00001f98: SWAP1 00001f99: SWAP2 00001f9a: ADD 00001f9b: SLOAD 00001f9c: PUSH1 0x01 00001f9e: PUSH1 0x01 00001fa0: PUSH1 0xa0 00001fa2: SHL 00001fa3: SUB 00001fa4: AND 00001fa5: DUP4 00001fa6: MSTORE 00001fa7: DUP3 00001fa8: ADD 00001fa9: SWAP3 00001faa: SWAP1 00001fab: SWAP3 00001fac: MSTORE 00001fad: PUSH1 0x40 00001faf: ADD 00001fb0: SWAP1 00001fb1: KECCAK256 00001fb2: SLOAD 00001fb3: GT 00001fb4: DUP1 00001fb5: PUSH2 0x1ff8 00001fb8: JUMPI 00001fb9: POP 00001fba: DUP2 00001fbb: PUSH1 0x06 00001fbd: PUSH1 0x00 00001fbf: PUSH1 0x0a 00001fc1: DUP5 00001fc2: DUP2 00001fc3: SLOAD 00001fc4: DUP2 00001fc5: LT 00001fc6: PUSH2 0x1fd1 00001fc9: JUMPI 00001fca: PUSH2 0x1fd1 00001fcd: PUSH2 0x2cb7 00001fd0: JUMP 00001fd1: JUMPDEST 00001fd2: PUSH1 0x00 00001fd4: SWAP2 00001fd5: DUP3 00001fd6: MSTORE 00001fd7: PUSH1 0x20 00001fd9: DUP1 00001fda: DUP4 00001fdb: KECCAK256 00001fdc: SWAP1 00001fdd: SWAP2 00001fde: ADD 00001fdf: SLOAD 00001fe0: PUSH1 0x01 00001fe2: PUSH1 0x01 00001fe4: PUSH1 0xa0 00001fe6: SHL 00001fe7: SUB 00001fe8: AND 00001fe9: DUP4 00001fea: MSTORE 00001feb: DUP3 00001fec: ADD 00001fed: SWAP3 00001fee: SWAP1 00001fef: SWAP3 00001ff0: MSTORE 00001ff1: PUSH1 0x40 00001ff3: ADD 00001ff4: SWAP1 00001ff5: KECCAK256 00001ff6: SLOAD 00001ff7: GT 00001ff8: JUMPDEST 00001ff9: ISZERO 00001ffa: PUSH2 0x200e 00001ffd: JUMPI 00001ffe: PUSH1 0x0c 00002000: SLOAD 00002001: PUSH1 0x0b 00002003: SLOAD 00002004: SWAP5 00002005: POP 00002006: SWAP5 00002007: POP 00002008: POP 00002009: POP 0000200a: POP 0000200b: SWAP1 0000200c: SWAP2 0000200d: JUMP 0000200e: JUMPDEST 0000200f: PUSH2 0x2054 00002012: PUSH1 0x05 00002014: PUSH1 0x00 00002016: PUSH1 0x0a 00002018: DUP5 00002019: DUP2 0000201a: SLOAD 0000201b: DUP2 0000201c: LT 0000201d: PUSH2 0x2028 00002020: JUMPI 00002021: PUSH2 0x2028 00002024: PUSH2 0x2cb7 00002027: JUMP 00002028: JUMPDEST 00002029: PUSH1 0x00 0000202b: SWAP2 0000202c: DUP3 0000202d: MSTORE 0000202e: PUSH1 0x20 00002030: DUP1 00002031: DUP4 00002032: KECCAK256 00002033: SWAP1 00002034: SWAP2 00002035: ADD 00002036: SLOAD 00002037: PUSH1 0x01 00002039: PUSH1 0x01 0000203b: PUSH1 0xa0 0000203d: SHL 0000203e: SUB 0000203f: AND 00002040: DUP4 00002041: MSTORE 00002042: DUP3 00002043: ADD 00002044: SWAP3 00002045: SWAP1 00002046: SWAP3 00002047: MSTORE 00002048: PUSH1 0x40 0000204a: ADD 0000204b: SWAP1 0000204c: KECCAK256 0000204d: SLOAD 0000204e: DUP5 0000204f: SWAP1 00002050: PUSH2 0x1cb2 00002053: JUMP 00002054: JUMPDEST 00002055: SWAP3 00002056: POP 00002057: PUSH2 0x209c 0000205a: PUSH1 0x06 0000205c: PUSH1 0x00 0000205e: PUSH1 0x0a 00002060: DUP5 00002061: DUP2 00002062: SLOAD 00002063: DUP2 00002064: LT 00002065: PUSH2 0x2070 00002068: JUMPI 00002069: PUSH2 0x2070 0000206c: PUSH2 0x2cb7 0000206f: JUMP 00002070: JUMPDEST 00002071: PUSH1 0x00 00002073: SWAP2 00002074: DUP3 00002075: MSTORE 00002076: PUSH1 0x20 00002078: DUP1 00002079: DUP4 0000207a: KECCAK256 0000207b: SWAP1 0000207c: SWAP2 0000207d: ADD 0000207e: SLOAD 0000207f: PUSH1 0x01 00002081: PUSH1 0x01 00002083: PUSH1 0xa0 00002085: SHL 00002086: SUB 00002087: AND 00002088: DUP4 00002089: MSTORE 0000208a: DUP3 0000208b: ADD 0000208c: SWAP3 0000208d: SWAP1 0000208e: SWAP3 0000208f: MSTORE 00002090: PUSH1 0x40 00002092: ADD 00002093: SWAP1 00002094: KECCAK256 00002095: SLOAD 00002096: DUP4 00002097: SWAP1 00002098: PUSH2 0x1cb2 0000209b: JUMP 0000209c: JUMPDEST 0000209d: SWAP2 0000209e: POP 0000209f: DUP1 000020a0: PUSH2 0x20a8 000020a3: DUP2 000020a4: PUSH2 0x2c70 000020a7: JUMP 000020a8: JUMPDEST 000020a9: SWAP2 000020aa: POP 000020ab: POP 000020ac: PUSH2 0x1f6b 000020af: JUMP 000020b0: JUMPDEST 000020b1: POP 000020b2: PUSH1 0x0b 000020b4: SLOAD 000020b5: PUSH1 0x0c 000020b7: SLOAD 000020b8: PUSH2 0x20c0 000020bb: SWAP2 000020bc: PUSH2 0x16d8 000020bf: JUMP 000020c0: JUMPDEST 000020c1: DUP3 000020c2: LT 000020c3: ISZERO 000020c4: PUSH2 0x20d7 000020c7: JUMPI 000020c8: PUSH1 0x0c 000020ca: SLOAD 000020cb: PUSH1 0x0b 000020cd: SLOAD 000020ce: SWAP4 000020cf: POP 000020d0: SWAP4 000020d1: POP 000020d2: POP 000020d3: POP 000020d4: SWAP1 000020d5: SWAP2 000020d6: JUMP 000020d7: JUMPDEST 000020d8: SWAP1 000020d9: SWAP4 000020da: SWAP1 000020db: SWAP3 000020dc: POP 000020dd: SWAP1 000020de: POP 000020df: JUMP 000020e0: JUMPDEST 000020e1: PUSH1 0x00 000020e3: DUP1 000020e4: PUSH1 0x00 000020e6: DUP1 000020e7: PUSH2 0x20ef 000020ea: DUP6 000020eb: PUSH2 0x2824 000020ee: JUMP 000020ef: JUMPDEST 000020f0: SWAP1 000020f1: POP 000020f2: PUSH1 0x00 000020f4: PUSH2 0x20fc 000020f7: DUP7 000020f8: PUSH2 0x2847 000020fb: JUMP 000020fc: JUMPDEST 000020fd: SWAP1 000020fe: POP 000020ff: PUSH1 0x00 00002101: PUSH2 0x2114 00002104: DUP3 00002105: PUSH2 0x210e 00002108: DUP10 00002109: DUP7 0000210a: PUSH2 0x1cb2 0000210d: JUMP 0000210e: JUMPDEST 0000210f: SWAP1 00002110: PUSH2 0x1cb2 00002113: JUMP 00002114: JUMPDEST 00002115: SWAP8 00002116: SWAP3 00002117: SWAP7 00002118: POP 00002119: SWAP1 0000211a: SWAP5 0000211b: POP 0000211c: SWAP1 0000211d: SWAP3 0000211e: POP 0000211f: POP 00002120: POP 00002121: JUMP 00002122: JUMPDEST 00002123: PUSH1 0x00 00002125: DUP1 00002126: DUP1 00002127: DUP1 00002128: PUSH2 0x2131 0000212b: DUP9 0000212c: DUP7 0000212d: PUSH2 0x171a 00002130: JUMP 00002131: JUMPDEST 00002132: SWAP1 00002133: POP 00002134: PUSH1 0x00 00002136: PUSH2 0x213f 00002139: DUP9 0000213a: DUP8 0000213b: PUSH2 0x171a 0000213e: JUMP 0000213f: JUMPDEST 00002140: SWAP1 00002141: POP 00002142: PUSH1 0x00 00002144: PUSH2 0x214d 00002147: DUP9 00002148: DUP9 00002149: PUSH2 0x171a 0000214c: JUMP 0000214d: JUMPDEST 0000214e: SWAP1 0000214f: POP 00002150: PUSH1 0x00 00002152: PUSH2 0x215f 00002155: DUP3 00002156: PUSH2 0x210e 00002159: DUP7 0000215a: DUP7 0000215b: PUSH2 0x1cb2 0000215e: JUMP 0000215f: JUMPDEST 00002160: SWAP4 00002161: SWAP12 00002162: SWAP4 00002163: SWAP11 00002164: POP 00002165: SWAP2 00002166: SWAP9 00002167: POP 00002168: SWAP2 00002169: SWAP7 0000216a: POP 0000216b: POP 0000216c: POP 0000216d: POP 0000216e: POP 0000216f: POP 00002170: POP 00002171: JUMP 00002172: JUMPDEST 00002173: PUSH1 0x40 00002175: DUP1 00002176: MLOAD 00002177: PUSH1 0x02 00002179: DUP1 0000217a: DUP3 0000217b: MSTORE 0000217c: PUSH1 0x60 0000217e: DUP3 0000217f: ADD 00002180: DUP4 00002181: MSTORE 00002182: PUSH1 0x00 00002184: SWAP3 00002185: PUSH1 0x20 00002187: DUP4 00002188: ADD 00002189: SWAP1 0000218a: DUP1 0000218b: CALLDATASIZE 0000218c: DUP4 0000218d: CALLDATACOPY 0000218e: ADD 0000218f: SWAP1 00002190: POP 00002191: POP 00002192: SWAP1 00002193: POP 00002194: ADDRESS 00002195: DUP2 00002196: PUSH1 0x00 00002198: DUP2 00002199: MLOAD 0000219a: DUP2 0000219b: LT 0000219c: PUSH2 0x21a7 0000219f: JUMPI 000021a0: PUSH2 0x21a7 000021a3: PUSH2 0x2cb7 000021a6: JUMP 000021a7: JUMPDEST 000021a8: PUSH1 0x20 000021aa: MUL 000021ab: PUSH1 0x20 000021ad: ADD 000021ae: ADD 000021af: SWAP1 000021b0: PUSH1 0x01 000021b2: PUSH1 0x01 000021b4: PUSH1 0xa0 000021b6: SHL 000021b7: SUB 000021b8: AND 000021b9: SWAP1 000021ba: DUP2 000021bb: PUSH1 0x01 000021bd: PUSH1 0x01 000021bf: PUSH1 0xa0 000021c1: SHL 000021c2: SUB 000021c3: AND 000021c4: DUP2 000021c5: MSTORE 000021c6: POP 000021c7: POP 000021c8: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 000021e9: PUSH1 0x01 000021eb: PUSH1 0x01 000021ed: PUSH1 0xa0 000021ef: SHL 000021f0: SUB 000021f1: AND 000021f2: PUSH4 0xad5c4648 000021f7: PUSH1 0x40 000021f9: MLOAD 000021fa: DUP2 000021fb: PUSH4 0xffffffff 00002200: AND 00002201: PUSH1 0xe0 00002203: SHL 00002204: DUP2 00002205: MSTORE 00002206: PUSH1 0x04 00002208: ADD 00002209: PUSH1 0x20 0000220b: PUSH1 0x40 0000220d: MLOAD 0000220e: DUP1 0000220f: DUP4 00002210: SUB 00002211: DUP2 00002212: DUP7 00002213: DUP1 00002214: EXTCODESIZE 00002215: ISZERO 00002216: DUP1 00002217: ISZERO 00002218: PUSH2 0x2220 0000221b: JUMPI 0000221c: PUSH1 0x00 0000221e: DUP1 0000221f: REVERT 00002220: JUMPDEST 00002221: POP 00002222: GAS 00002223: STATICCALL 00002224: ISZERO 00002225: DUP1 00002226: ISZERO 00002227: PUSH2 0x2234 0000222a: JUMPI 0000222b: RETURNDATASIZE 0000222c: PUSH1 0x00 0000222e: DUP1 0000222f: RETURNDATACOPY 00002230: RETURNDATASIZE 00002231: PUSH1 0x00 00002233: REVERT 00002234: JUMPDEST 00002235: POP 00002236: POP 00002237: POP 00002238: POP 00002239: PUSH1 0x40 0000223b: MLOAD 0000223c: RETURNDATASIZE 0000223d: PUSH1 0x1f 0000223f: NOT 00002240: PUSH1 0x1f 00002242: DUP3 00002243: ADD 00002244: AND 00002245: DUP3 00002246: ADD 00002247: DUP1 00002248: PUSH1 0x40 0000224a: MSTORE 0000224b: POP 0000224c: DUP2 0000224d: ADD 0000224e: SWAP1 0000224f: PUSH2 0x2258 00002252: SWAP2 00002253: SWAP1 00002254: PUSH2 0x2942 00002257: JUMP 00002258: JUMPDEST 00002259: DUP2 0000225a: PUSH1 0x01 0000225c: DUP2 0000225d: MLOAD 0000225e: DUP2 0000225f: LT 00002260: PUSH2 0x226b 00002263: JUMPI 00002264: PUSH2 0x226b 00002267: PUSH2 0x2cb7 0000226a: JUMP 0000226b: JUMPDEST 0000226c: PUSH1 0x20 0000226e: MUL 0000226f: PUSH1 0x20 00002271: ADD 00002272: ADD 00002273: SWAP1 00002274: PUSH1 0x01 00002276: PUSH1 0x01 00002278: PUSH1 0xa0 0000227a: SHL 0000227b: SUB 0000227c: AND 0000227d: SWAP1 0000227e: DUP2 0000227f: PUSH1 0x01 00002281: PUSH1 0x01 00002283: PUSH1 0xa0 00002285: SHL 00002286: SUB 00002287: AND 00002288: DUP2 00002289: MSTORE 0000228a: POP 0000228b: POP 0000228c: PUSH2 0x22b6 0000228f: ADDRESS 00002290: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 000022b1: DUP5 000022b2: PUSH2 0x1799 000022b5: JUMP 000022b6: JUMPDEST 000022b7: PUSH1 0x40 000022b9: MLOAD 000022ba: PUSH4 0x791ac947 000022bf: PUSH1 0xe0 000022c1: SHL 000022c2: DUP2 000022c3: MSTORE 000022c4: PUSH1 0x01 000022c6: PUSH1 0x01 000022c8: PUSH1 0xa0 000022ca: SHL 000022cb: SUB 000022cc: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 000022ed: AND 000022ee: SWAP1 000022ef: PUSH4 0x791ac947 000022f4: SWAP1 000022f5: PUSH2 0x230b 000022f8: SWAP1 000022f9: DUP6 000022fa: SWAP1 000022fb: PUSH1 0x00 000022fd: SWAP1 000022fe: DUP7 000022ff: SWAP1 00002300: ADDRESS 00002301: SWAP1 00002302: TIMESTAMP 00002303: SWAP1 00002304: PUSH1 0x04 00002306: ADD 00002307: PUSH2 0x2b89 0000230a: JUMP 0000230b: JUMPDEST 0000230c: PUSH1 0x00 0000230e: PUSH1 0x40 00002310: MLOAD 00002311: DUP1 00002312: DUP4 00002313: SUB 00002314: DUP2 00002315: PUSH1 0x00 00002317: DUP8 00002318: DUP1 00002319: EXTCODESIZE 0000231a: ISZERO 0000231b: DUP1 0000231c: ISZERO 0000231d: PUSH2 0x2325 00002320: JUMPI 00002321: PUSH1 0x00 00002323: DUP1 00002324: REVERT 00002325: JUMPDEST 00002326: POP 00002327: GAS 00002328: CALL 00002329: ISZERO 0000232a: DUP1 0000232b: ISZERO 0000232c: PUSH2 0x2339 0000232f: JUMPI 00002330: RETURNDATASIZE 00002331: PUSH1 0x00 00002333: DUP1 00002334: RETURNDATACOPY 00002335: RETURNDATASIZE 00002336: PUSH1 0x00 00002338: REVERT 00002339: JUMPDEST 0000233a: POP 0000233b: POP 0000233c: POP 0000233d: POP 0000233e: PUSH32 0x32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7 0000235f: DUP3 00002360: DUP3 00002361: PUSH1 0x40 00002363: MLOAD 00002364: PUSH2 0x236e 00002367: SWAP3 00002368: SWAP2 00002369: SWAP1 0000236a: PUSH2 0x2b68 0000236d: JUMP 0000236e: JUMPDEST 0000236f: PUSH1 0x40 00002371: MLOAD 00002372: DUP1 00002373: SWAP2 00002374: SUB 00002375: SWAP1 00002376: LOG1 00002377: POP 00002378: POP 00002379: JUMP 0000237a: JUMPDEST 0000237b: PUSH1 0x40 0000237d: MLOAD 0000237e: PUSH1 0x01 00002380: PUSH1 0x01 00002382: PUSH1 0xa0 00002384: SHL 00002385: SUB 00002386: DUP4 00002387: AND 00002388: SWAP1 00002389: DUP3 0000238a: ISZERO 0000238b: PUSH2 0x08fc 0000238e: MUL 0000238f: SWAP1 00002390: DUP4 00002391: SWAP1 00002392: PUSH1 0x00 00002394: DUP2 00002395: DUP2 00002396: DUP2 00002397: DUP6 00002398: DUP9 00002399: DUP9 0000239a: CALL 0000239b: SWAP4 0000239c: POP 0000239d: POP 0000239e: POP 0000239f: POP 000023a0: ISZERO 000023a1: DUP1 000023a2: ISZERO 000023a3: PUSH2 0x23b0 000023a6: JUMPI 000023a7: RETURNDATASIZE 000023a8: PUSH1 0x00 000023aa: DUP1 000023ab: RETURNDATACOPY 000023ac: RETURNDATASIZE 000023ad: PUSH1 0x00 000023af: REVERT 000023b0: JUMPDEST 000023b1: POP 000023b2: POP 000023b3: POP 000023b4: JUMP 000023b5: JUMPDEST 000023b6: PUSH1 0x40 000023b8: DUP1 000023b9: MLOAD 000023ba: PUSH1 0x02 000023bc: DUP1 000023bd: DUP3 000023be: MSTORE 000023bf: PUSH1 0x60 000023c1: DUP3 000023c2: ADD 000023c3: DUP4 000023c4: MSTORE 000023c5: PUSH1 0x00 000023c7: SWAP3 000023c8: PUSH1 0x20 000023ca: DUP4 000023cb: ADD 000023cc: SWAP1 000023cd: DUP1 000023ce: CALLDATASIZE 000023cf: DUP4 000023d0: CALLDATACOPY 000023d1: ADD 000023d2: SWAP1 000023d3: POP 000023d4: POP 000023d5: SWAP1 000023d6: POP 000023d7: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 000023f8: PUSH1 0x01 000023fa: PUSH1 0x01 000023fc: PUSH1 0xa0 000023fe: SHL 000023ff: SUB 00002400: AND 00002401: PUSH4 0xad5c4648 00002406: PUSH1 0x40 00002408: MLOAD 00002409: DUP2 0000240a: PUSH4 0xffffffff 0000240f: AND 00002410: PUSH1 0xe0 00002412: SHL 00002413: DUP2 00002414: MSTORE 00002415: PUSH1 0x04 00002417: ADD 00002418: PUSH1 0x20 0000241a: PUSH1 0x40 0000241c: MLOAD 0000241d: DUP1 0000241e: DUP4 0000241f: SUB 00002420: DUP2 00002421: DUP7 00002422: DUP1 00002423: EXTCODESIZE 00002424: ISZERO 00002425: DUP1 00002426: ISZERO 00002427: PUSH2 0x242f 0000242a: JUMPI 0000242b: PUSH1 0x00 0000242d: DUP1 0000242e: REVERT 0000242f: JUMPDEST 00002430: POP 00002431: GAS 00002432: STATICCALL 00002433: ISZERO 00002434: DUP1 00002435: ISZERO 00002436: PUSH2 0x2443 00002439: JUMPI 0000243a: RETURNDATASIZE 0000243b: PUSH1 0x00 0000243d: DUP1 0000243e: RETURNDATACOPY 0000243f: RETURNDATASIZE 00002440: PUSH1 0x00 00002442: REVERT 00002443: JUMPDEST 00002444: POP 00002445: POP 00002446: POP 00002447: POP 00002448: PUSH1 0x40 0000244a: MLOAD 0000244b: RETURNDATASIZE 0000244c: PUSH1 0x1f 0000244e: NOT 0000244f: PUSH1 0x1f 00002451: DUP3 00002452: ADD 00002453: AND 00002454: DUP3 00002455: ADD 00002456: DUP1 00002457: PUSH1 0x40 00002459: MSTORE 0000245a: POP 0000245b: DUP2 0000245c: ADD 0000245d: SWAP1 0000245e: PUSH2 0x2467 00002461: SWAP2 00002462: SWAP1 00002463: PUSH2 0x2942 00002466: JUMP 00002467: JUMPDEST 00002468: DUP2 00002469: PUSH1 0x00 0000246b: DUP2 0000246c: MLOAD 0000246d: DUP2 0000246e: LT 0000246f: PUSH2 0x247a 00002472: JUMPI 00002473: PUSH2 0x247a 00002476: PUSH2 0x2cb7 00002479: JUMP 0000247a: JUMPDEST 0000247b: PUSH1 0x20 0000247d: MUL 0000247e: PUSH1 0x20 00002480: ADD 00002481: ADD 00002482: SWAP1 00002483: PUSH1 0x01 00002485: PUSH1 0x01 00002487: PUSH1 0xa0 00002489: SHL 0000248a: SUB 0000248b: AND 0000248c: SWAP1 0000248d: DUP2 0000248e: PUSH1 0x01 00002490: PUSH1 0x01 00002492: PUSH1 0xa0 00002494: SHL 00002495: SUB 00002496: AND 00002497: DUP2 00002498: MSTORE 00002499: POP 0000249a: POP 0000249b: ADDRESS 0000249c: DUP2 0000249d: PUSH1 0x01 0000249f: DUP2 000024a0: MLOAD 000024a1: DUP2 000024a2: LT 000024a3: PUSH2 0x24ae 000024a6: JUMPI 000024a7: PUSH2 0x24ae 000024aa: PUSH2 0x2cb7 000024ad: JUMP 000024ae: JUMPDEST 000024af: PUSH1 0x01 000024b1: PUSH1 0x01 000024b3: PUSH1 0xa0 000024b5: SHL 000024b6: SUB 000024b7: SWAP3 000024b8: DUP4 000024b9: AND 000024ba: PUSH1 0x20 000024bc: SWAP2 000024bd: DUP3 000024be: MUL 000024bf: SWAP3 000024c0: SWAP1 000024c1: SWAP3 000024c2: ADD 000024c3: ADD 000024c4: MSTORE 000024c5: PUSH32 0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d 000024e6: AND 000024e7: PUSH4 0xb6f9de95 000024ec: DUP4 000024ed: PUSH1 0x00 000024ef: DUP5 000024f0: PUSH32 0x000000000000000000000000000000000000000000000000000000000000dead 00002511: PUSH2 0x251c 00002514: TIMESTAMP 00002515: PUSH2 0x012c 00002518: PUSH2 0x1c04 0000251b: JUMP 0000251c: JUMPDEST 0000251d: PUSH1 0x40 0000251f: MLOAD 00002520: DUP7 00002521: PUSH4 0xffffffff 00002526: AND 00002527: PUSH1 0xe0 00002529: SHL 0000252a: DUP2 0000252b: MSTORE 0000252c: PUSH1 0x04 0000252e: ADD 0000252f: PUSH2 0x253b 00002532: SWAP5 00002533: SWAP4 00002534: SWAP3 00002535: SWAP2 00002536: SWAP1 00002537: PUSH2 0x2aa9 0000253a: JUMP 0000253b: JUMPDEST 0000253c: PUSH1 0x00 0000253e: PUSH1 0x40 00002540: MLOAD 00002541: DUP1 00002542: DUP4 00002543: SUB 00002544: DUP2 00002545: DUP6 00002546: DUP9 00002547: DUP1 00002548: EXTCODESIZE 00002549: ISZERO 0000254a: DUP1 0000254b: ISZERO 0000254c: PUSH2 0x2554 0000254f: JUMPI 00002550: PUSH1 0x00 00002552: DUP1 00002553: REVERT 00002554: JUMPDEST 00002555: POP 00002556: GAS 00002557: CALL 00002558: ISZERO 00002559: DUP1 0000255a: ISZERO 0000255b: PUSH2 0x2568 0000255e: JUMPI 0000255f: RETURNDATASIZE 00002560: PUSH1 0x00 00002562: DUP1 00002563: RETURNDATACOPY 00002564: RETURNDATASIZE 00002565: PUSH1 0x00 00002567: REVERT 00002568: JUMPDEST 00002569: POP 0000256a: POP 0000256b: POP 0000256c: POP 0000256d: POP 0000256e: PUSH32 0x6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a9624 0000258f: DUP3 00002590: DUP3 00002591: PUSH1 0x40 00002593: MLOAD 00002594: PUSH2 0x236e 00002597: SWAP3 00002598: SWAP2 00002599: SWAP1 0000259a: PUSH2 0x2b68 0000259d: JUMP 0000259e: JUMPDEST 0000259f: PUSH1 0x00 000025a1: DUP1 000025a2: PUSH1 0x00 000025a4: DUP1 000025a5: PUSH1 0x00 000025a7: DUP1 000025a8: PUSH2 0x25b0 000025ab: DUP8 000025ac: PUSH2 0x1c63 000025af: JUMP 000025b0: JUMPDEST 000025b1: PUSH1 0x01 000025b3: PUSH1 0x01 000025b5: PUSH1 0xa0 000025b7: SHL 000025b8: SUB 000025b9: DUP16 000025ba: AND 000025bb: PUSH1 0x00 000025bd: SWAP1 000025be: DUP2 000025bf: MSTORE 000025c0: PUSH1 0x06 000025c2: PUSH1 0x20 000025c4: MSTORE 000025c5: PUSH1 0x40 000025c7: SWAP1 000025c8: KECCAK256 000025c9: SLOAD 000025ca: SWAP6 000025cb: SWAP12 000025cc: POP 000025cd: SWAP4 000025ce: SWAP10 000025cf: POP 000025d0: SWAP2 000025d1: SWAP8 000025d2: POP 000025d3: SWAP6 000025d4: POP 000025d5: SWAP4 000025d6: POP 000025d7: SWAP2 000025d8: POP 000025d9: PUSH2 0x25e2 000025dc: SWAP1 000025dd: DUP9 000025de: PUSH2 0x1cb2 000025e1: JUMP 000025e2: JUMPDEST 000025e3: PUSH1 0x01 000025e5: PUSH1 0x01 000025e7: PUSH1 0xa0 000025e9: SHL 000025ea: SUB 000025eb: DUP11 000025ec: AND 000025ed: PUSH1 0x00 000025ef: SWAP1 000025f0: DUP2 000025f1: MSTORE 000025f2: PUSH1 0x06 000025f4: PUSH1 0x20 000025f6: SWAP1 000025f7: DUP2 000025f8: MSTORE 000025f9: PUSH1 0x40 000025fb: DUP1 000025fc: DUP4 000025fd: KECCAK256 000025fe: SWAP4 000025ff: SWAP1 00002600: SWAP4 00002601: SSTORE 00002602: PUSH1 0x05 00002604: SWAP1 00002605: MSTORE 00002606: KECCAK256 00002607: SLOAD 00002608: PUSH2 0x2611 0000260b: SWAP1 0000260c: DUP8 0000260d: PUSH2 0x1cb2 00002610: JUMP 00002611: JUMPDEST 00002612: PUSH1 0x01 00002614: PUSH1 0x01 00002616: PUSH1 0xa0 00002618: SHL 00002619: SUB 0000261a: DUP1 0000261b: DUP12 0000261c: AND 0000261d: PUSH1 0x00 0000261f: SWAP1 00002620: DUP2 00002621: MSTORE 00002622: PUSH1 0x05 00002624: PUSH1 0x20 00002626: MSTORE 00002627: PUSH1 0x40 00002629: DUP1 0000262a: DUP3 0000262b: KECCAK256 0000262c: SWAP4 0000262d: SWAP1 0000262e: SWAP4 0000262f: SSTORE 00002630: SWAP1 00002631: DUP11 00002632: AND 00002633: DUP2 00002634: MSTORE 00002635: KECCAK256 00002636: SLOAD 00002637: PUSH2 0x2640 0000263a: SWAP1 0000263b: DUP7 0000263c: PUSH2 0x1c04 0000263f: JUMP 00002640: JUMPDEST 00002641: PUSH1 0x01 00002643: PUSH1 0x01 00002645: PUSH1 0xa0 00002647: SHL 00002648: SUB 00002649: DUP10 0000264a: AND 0000264b: PUSH1 0x00 0000264d: SWAP1 0000264e: DUP2 0000264f: MSTORE 00002650: PUSH1 0x05 00002652: PUSH1 0x20 00002654: MSTORE 00002655: PUSH1 0x40 00002657: SWAP1 00002658: KECCAK256 00002659: SSTORE 0000265a: PUSH2 0x2662 0000265d: DUP2 0000265e: PUSH2 0x2864 00002661: JUMP 00002662: JUMPDEST 00002663: PUSH2 0x266c 00002666: DUP5 00002667: DUP4 00002668: PUSH2 0x28ec 0000266b: JUMP 0000266c: JUMPDEST 0000266d: DUP8 0000266e: PUSH1 0x01 00002670: PUSH1 0x01 00002672: PUSH1 0xa0 00002674: SHL 00002675: SUB 00002676: AND 00002677: DUP10 00002678: PUSH1 0x01 0000267a: PUSH1 0x01 0000267c: PUSH1 0xa0 0000267e: SHL 0000267f: SUB 00002680: AND 00002681: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000026a2: DUP6 000026a3: PUSH1 0x40 000026a5: MLOAD 000026a6: PUSH2 0x26b1 000026a9: SWAP2 000026aa: DUP2 000026ab: MSTORE 000026ac: PUSH1 0x20 000026ae: ADD 000026af: SWAP1 000026b0: JUMP 000026b1: JUMPDEST 000026b2: PUSH1 0x40 000026b4: MLOAD 000026b5: DUP1 000026b6: SWAP2 000026b7: SUB 000026b8: SWAP1 000026b9: LOG3 000026ba: POP 000026bb: POP 000026bc: POP 000026bd: POP 000026be: POP 000026bf: POP 000026c0: POP 000026c1: POP 000026c2: POP 000026c3: JUMP 000026c4: JUMPDEST 000026c5: PUSH1 0x00 000026c7: DUP1 000026c8: PUSH1 0x00 000026ca: DUP1 000026cb: PUSH1 0x00 000026cd: DUP1 000026ce: PUSH2 0x26d6 000026d1: DUP8 000026d2: PUSH2 0x1c63 000026d5: JUMP 000026d6: JUMPDEST 000026d7: PUSH1 0x01 000026d9: PUSH1 0x01 000026db: PUSH1 0xa0 000026dd: SHL 000026de: SUB 000026df: DUP16 000026e0: AND 000026e1: PUSH1 0x00 000026e3: SWAP1 000026e4: DUP2 000026e5: MSTORE 000026e6: PUSH1 0x05 000026e8: PUSH1 0x20 000026ea: MSTORE 000026eb: PUSH1 0x40 000026ed: SWAP1 000026ee: KECCAK256 000026ef: SLOAD 000026f0: SWAP6 000026f1: SWAP12 000026f2: POP 000026f3: SWAP4 000026f4: SWAP10 000026f5: POP 000026f6: SWAP2 000026f7: SWAP8 000026f8: POP 000026f9: SWAP6 000026fa: POP 000026fb: SWAP4 000026fc: POP 000026fd: SWAP2 000026fe: POP 000026ff: PUSH2 0x2708 00002702: SWAP1 00002703: DUP8 00002704: PUSH2 0x1cb2 00002707: JUMP 00002708: JUMPDEST 00002709: PUSH1 0x01 0000270b: PUSH1 0x01 0000270d: PUSH1 0xa0 0000270f: SHL 00002710: SUB 00002711: DUP1 00002712: DUP12 00002713: AND 00002714: PUSH1 0x00 00002716: SWAP1 00002717: DUP2 00002718: MSTORE 00002719: PUSH1 0x05 0000271b: PUSH1 0x20 0000271d: SWAP1 0000271e: DUP2 0000271f: MSTORE 00002720: PUSH1 0x40 00002722: DUP1 00002723: DUP4 00002724: KECCAK256 00002725: SWAP5 00002726: SWAP1 00002727: SWAP5 00002728: SSTORE 00002729: SWAP2 0000272a: DUP12 0000272b: AND 0000272c: DUP2 0000272d: MSTORE 0000272e: PUSH1 0x06 00002730: SWAP1 00002731: SWAP2 00002732: MSTORE 00002733: KECCAK256 00002734: SLOAD 00002735: PUSH2 0x273e 00002738: SWAP1 00002739: DUP5 0000273a: PUSH2 0x1c04 0000273d: JUMP 0000273e: JUMPDEST 0000273f: PUSH1 0x01 00002741: PUSH1 0x01 00002743: PUSH1 0xa0 00002745: SHL 00002746: SUB 00002747: DUP10 00002748: AND 00002749: PUSH1 0x00 0000274b: SWAP1 0000274c: DUP2 0000274d: MSTORE 0000274e: PUSH1 0x06 00002750: PUSH1 0x20 00002752: SWAP1 00002753: DUP2 00002754: MSTORE 00002755: PUSH1 0x40 00002757: DUP1 00002758: DUP4 00002759: KECCAK256 0000275a: SWAP4 0000275b: SWAP1 0000275c: SWAP4 0000275d: SSTORE 0000275e: PUSH1 0x05 00002760: SWAP1 00002761: MSTORE 00002762: KECCAK256 00002763: SLOAD 00002764: PUSH2 0x2640 00002767: SWAP1 00002768: DUP7 00002769: PUSH2 0x1c04 0000276c: JUMP 0000276d: JUMPDEST 0000276e: PUSH1 0x00 00002770: DUP1 00002771: PUSH1 0x00 00002773: DUP1 00002774: PUSH1 0x00 00002776: DUP1 00002777: PUSH2 0x277f 0000277a: DUP8 0000277b: PUSH2 0x1c63 0000277e: JUMP 0000277f: JUMPDEST 00002780: PUSH1 0x01 00002782: PUSH1 0x01 00002784: PUSH1 0xa0 00002786: SHL 00002787: SUB 00002788: DUP16 00002789: AND 0000278a: PUSH1 0x00 0000278c: SWAP1 0000278d: DUP2 0000278e: MSTORE 0000278f: PUSH1 0x06 00002791: PUSH1 0x20 00002793: MSTORE 00002794: PUSH1 0x40 00002796: SWAP1 00002797: KECCAK256 00002798: SLOAD 00002799: SWAP6 0000279a: SWAP12 0000279b: POP 0000279c: SWAP4 0000279d: SWAP10 0000279e: POP 0000279f: SWAP2 000027a0: SWAP8 000027a1: POP 000027a2: SWAP6 000027a3: POP 000027a4: SWAP4 000027a5: POP 000027a6: SWAP2 000027a7: POP 000027a8: PUSH2 0x27b1 000027ab: SWAP1 000027ac: DUP9 000027ad: PUSH2 0x1cb2 000027b0: JUMP 000027b1: JUMPDEST 000027b2: PUSH1 0x01 000027b4: PUSH1 0x01 000027b6: PUSH1 0xa0 000027b8: SHL 000027b9: SUB 000027ba: DUP11 000027bb: AND 000027bc: PUSH1 0x00 000027be: SWAP1 000027bf: DUP2 000027c0: MSTORE 000027c1: PUSH1 0x06 000027c3: PUSH1 0x20 000027c5: SWAP1 000027c6: DUP2 000027c7: MSTORE 000027c8: PUSH1 0x40 000027ca: DUP1 000027cb: DUP4 000027cc: KECCAK256 000027cd: SWAP4 000027ce: SWAP1 000027cf: SWAP4 000027d0: SSTORE 000027d1: PUSH1 0x05 000027d3: SWAP1 000027d4: MSTORE 000027d5: KECCAK256 000027d6: SLOAD 000027d7: PUSH2 0x2708 000027da: SWAP1 000027db: DUP8 000027dc: PUSH2 0x1cb2 000027df: JUMP 000027e0: JUMPDEST 000027e1: PUSH1 0x00 000027e3: DUP1 000027e4: PUSH1 0x00 000027e6: DUP1 000027e7: PUSH1 0x00 000027e9: DUP1 000027ea: PUSH2 0x27f2 000027ed: DUP8 000027ee: PUSH2 0x1c63 000027f1: JUMP 000027f2: JUMPDEST 000027f3: PUSH1 0x01 000027f5: PUSH1 0x01 000027f7: PUSH1 0xa0 000027f9: SHL 000027fa: SUB 000027fb: DUP16 000027fc: AND 000027fd: PUSH1 0x00 000027ff: SWAP1 00002800: DUP2 00002801: MSTORE 00002802: PUSH1 0x05 00002804: PUSH1 0x20 00002806: MSTORE 00002807: PUSH1 0x40 00002809: SWAP1 0000280a: KECCAK256 0000280b: SLOAD 0000280c: SWAP6 0000280d: SWAP12 0000280e: POP 0000280f: SWAP4 00002810: SWAP10 00002811: POP 00002812: SWAP2 00002813: SWAP8 00002814: POP 00002815: SWAP6 00002816: POP 00002817: SWAP4 00002818: POP 00002819: SWAP2 0000281a: POP 0000281b: PUSH2 0x2611 0000281e: SWAP1 0000281f: DUP8 00002820: PUSH2 0x1cb2 00002823: JUMP 00002824: JUMPDEST 00002825: PUSH1 0x00 00002827: PUSH2 0x0a01 0000282a: PUSH2 0x03e8 0000282d: PUSH2 0x2841 00002830: PUSH1 0x11 00002832: SLOAD 00002833: DUP6 00002834: PUSH2 0x171a 00002837: SWAP1 00002838: SWAP2 00002839: SWAP1 0000283a: PUSH4 0xffffffff 0000283f: AND 00002840: JUMP 00002841: JUMPDEST 00002842: SWAP1 00002843: PUSH2 0x16d8 00002846: JUMP 00002847: JUMPDEST 00002848: PUSH1 0x00 0000284a: PUSH2 0x0a01 0000284d: PUSH2 0x03e8 00002850: PUSH2 0x2841 00002853: PUSH1 0x13 00002855: SLOAD 00002856: DUP6 00002857: PUSH2 0x171a 0000285a: SWAP1 0000285b: SWAP2 0000285c: SWAP1 0000285d: PUSH4 0xffffffff 00002862: AND 00002863: JUMP 00002864: JUMPDEST 00002865: PUSH1 0x00 00002867: PUSH2 0x286e 0000286a: PUSH2 0x1be1 0000286d: JUMP 0000286e: JUMPDEST 0000286f: SWAP1 00002870: POP 00002871: PUSH1 0x00 00002873: PUSH2 0x287c 00002876: DUP4 00002877: DUP4 00002878: PUSH2 0x171a 0000287b: JUMP 0000287c: JUMPDEST 0000287d: ADDRESS 0000287e: PUSH1 0x00 00002880: SWAP1 00002881: DUP2 00002882: MSTORE 00002883: PUSH1 0x05 00002885: PUSH1 0x20 00002887: MSTORE 00002888: PUSH1 0x40 0000288a: SWAP1 0000288b: KECCAK256 0000288c: SLOAD 0000288d: SWAP1 0000288e: SWAP2 0000288f: POP 00002890: PUSH2 0x2899 00002893: SWAP1 00002894: DUP3 00002895: PUSH2 0x1c04 00002898: JUMP 00002899: JUMPDEST 0000289a: ADDRESS 0000289b: PUSH1 0x00 0000289d: SWAP1 0000289e: DUP2 0000289f: MSTORE 000028a0: PUSH1 0x05 000028a2: PUSH1 0x20 000028a4: SWAP1 000028a5: DUP2 000028a6: MSTORE 000028a7: PUSH1 0x40 000028a9: DUP1 000028aa: DUP4 000028ab: KECCAK256 000028ac: SWAP4 000028ad: SWAP1 000028ae: SWAP4 000028af: SSTORE 000028b0: PUSH1 0x09 000028b2: SWAP1 000028b3: MSTORE 000028b4: KECCAK256 000028b5: SLOAD 000028b6: PUSH1 0xff 000028b8: AND 000028b9: ISZERO 000028ba: PUSH2 0x23b0 000028bd: JUMPI 000028be: ADDRESS 000028bf: PUSH1 0x00 000028c1: SWAP1 000028c2: DUP2 000028c3: MSTORE 000028c4: PUSH1 0x06 000028c6: PUSH1 0x20 000028c8: MSTORE 000028c9: PUSH1 0x40 000028cb: SWAP1 000028cc: KECCAK256 000028cd: SLOAD 000028ce: PUSH2 0x28d7 000028d1: SWAP1 000028d2: DUP5 000028d3: PUSH2 0x1c04 000028d6: JUMP 000028d7: JUMPDEST 000028d8: ADDRESS 000028d9: PUSH1 0x00 000028db: SWAP1 000028dc: DUP2 000028dd: MSTORE 000028de: PUSH1 0x06 000028e0: PUSH1 0x20 000028e2: MSTORE 000028e3: PUSH1 0x40 000028e5: SWAP1 000028e6: KECCAK256 000028e7: SSTORE 000028e8: POP 000028e9: POP 000028ea: POP 000028eb: JUMP 000028ec: JUMPDEST 000028ed: PUSH1 0x0c 000028ef: SLOAD 000028f0: PUSH2 0x28f9 000028f3: SWAP1 000028f4: DUP4 000028f5: PUSH2 0x1cb2 000028f8: JUMP 000028f9: JUMPDEST 000028fa: PUSH1 0x0c 000028fc: SSTORE 000028fd: PUSH1 0x0d 000028ff: SLOAD 00002900: PUSH2 0x2909 00002903: SWAP1 00002904: DUP3 00002905: PUSH2 0x1c04 00002908: JUMP 00002909: JUMPDEST 0000290a: PUSH1 0x0d 0000290c: SSTORE 0000290d: POP 0000290e: POP 0000290f: JUMP 00002910: JUMPDEST 00002911: DUP1 00002912: CALLDATALOAD 00002913: DUP1 00002914: ISZERO 00002915: ISZERO 00002916: DUP2 00002917: EQ 00002918: PUSH2 0x2920 0000291b: JUMPI 0000291c: PUSH1 0x00 0000291e: DUP1 0000291f: REVERT 00002920: JUMPDEST 00002921: SWAP2 00002922: SWAP1 00002923: POP 00002924: JUMP 00002925: JUMPDEST 00002926: PUSH1 0x00 00002928: PUSH1 0x20 0000292a: DUP3 0000292b: DUP5 0000292c: SUB 0000292d: SLT 0000292e: ISZERO 0000292f: PUSH2 0x2937 00002932: JUMPI 00002933: PUSH1 0x00 00002935: DUP1 00002936: REVERT 00002937: JUMPDEST 00002938: DUP2 00002939: CALLDATALOAD 0000293a: PUSH2 0x0b76 0000293d: DUP2 0000293e: PUSH2 0x2ccd 00002941: JUMP 00002942: JUMPDEST 00002943: PUSH1 0x00 00002945: PUSH1 0x20 00002947: DUP3 00002948: DUP5 00002949: SUB 0000294a: SLT 0000294b: ISZERO 0000294c: PUSH2 0x2954 0000294f: JUMPI 00002950: PUSH1 0x00 00002952: DUP1 00002953: REVERT 00002954: JUMPDEST 00002955: DUP2 00002956: MLOAD 00002957: PUSH2 0x0b76 0000295a: DUP2 0000295b: PUSH2 0x2ccd 0000295e: JUMP 0000295f: JUMPDEST 00002960: PUSH1 0x00 00002962: DUP1 00002963: PUSH1 0x40 00002965: DUP4 00002966: DUP6 00002967: SUB 00002968: SLT 00002969: ISZERO 0000296a: PUSH2 0x2972 0000296d: JUMPI 0000296e: PUSH1 0x00 00002970: DUP1 00002971: REVERT 00002972: JUMPDEST 00002973: DUP3 00002974: CALLDATALOAD 00002975: PUSH2 0x297d 00002978: DUP2 00002979: PUSH2 0x2ccd 0000297c: JUMP 0000297d: JUMPDEST 0000297e: SWAP2 0000297f: POP 00002980: PUSH1 0x20 00002982: DUP4 00002983: ADD 00002984: CALLDATALOAD 00002985: PUSH2 0x298d 00002988: DUP2 00002989: PUSH2 0x2ccd 0000298c: JUMP 0000298d: JUMPDEST 0000298e: DUP1 0000298f: SWAP2 00002990: POP 00002991: POP 00002992: SWAP3 00002993: POP 00002994: SWAP3 00002995: SWAP1 00002996: POP 00002997: JUMP 00002998: JUMPDEST 00002999: PUSH1 0x00 0000299b: DUP1 0000299c: PUSH1 0x00 0000299e: PUSH1 0x60 000029a0: DUP5 000029a1: DUP7 000029a2: SUB 000029a3: SLT 000029a4: ISZERO 000029a5: PUSH2 0x29ad 000029a8: JUMPI 000029a9: PUSH1 0x00 000029ab: DUP1 000029ac: REVERT 000029ad: JUMPDEST 000029ae: DUP4 000029af: CALLDATALOAD 000029b0: PUSH2 0x29b8 000029b3: DUP2 000029b4: PUSH2 0x2ccd 000029b7: JUMP 000029b8: JUMPDEST 000029b9: SWAP3 000029ba: POP 000029bb: PUSH1 0x20 000029bd: DUP5 000029be: ADD 000029bf: CALLDATALOAD 000029c0: PUSH2 0x29c8 000029c3: DUP2 000029c4: PUSH2 0x2ccd 000029c7: JUMP 000029c8: JUMPDEST 000029c9: SWAP3 000029ca: SWAP6 000029cb: SWAP3 000029cc: SWAP5 000029cd: POP 000029ce: POP 000029cf: POP 000029d0: PUSH1 0x40 000029d2: SWAP2 000029d3: SWAP1 000029d4: SWAP2 000029d5: ADD 000029d6: CALLDATALOAD 000029d7: SWAP1 000029d8: JUMP 000029d9: JUMPDEST 000029da: PUSH1 0x00 000029dc: DUP1 000029dd: PUSH1 0x40 000029df: DUP4 000029e0: DUP6 000029e1: SUB 000029e2: SLT 000029e3: ISZERO 000029e4: PUSH2 0x29ec 000029e7: JUMPI 000029e8: PUSH1 0x00 000029ea: DUP1 000029eb: REVERT 000029ec: JUMPDEST 000029ed: DUP3 000029ee: CALLDATALOAD 000029ef: PUSH2 0x29f7 000029f2: DUP2 000029f3: PUSH2 0x2ccd 000029f6: JUMP 000029f7: JUMPDEST 000029f8: SWAP5 000029f9: PUSH1 0x20 000029fb: SWAP4 000029fc: SWAP1 000029fd: SWAP4 000029fe: ADD 000029ff: CALLDATALOAD 00002a00: SWAP4 00002a01: POP 00002a02: POP 00002a03: POP 00002a04: JUMP 00002a05: JUMPDEST 00002a06: PUSH1 0x00 00002a08: PUSH1 0x20 00002a0a: DUP3 00002a0b: DUP5 00002a0c: SUB 00002a0d: SLT 00002a0e: ISZERO 00002a0f: PUSH2 0x2a17 00002a12: JUMPI 00002a13: PUSH1 0x00 00002a15: DUP1 00002a16: REVERT 00002a17: JUMPDEST 00002a18: PUSH2 0x0b76 00002a1b: DUP3 00002a1c: PUSH2 0x2910 00002a1f: JUMP 00002a20: JUMPDEST 00002a21: PUSH1 0x00 00002a23: PUSH1 0x20 00002a25: DUP3 00002a26: DUP5 00002a27: SUB 00002a28: SLT 00002a29: ISZERO 00002a2a: PUSH2 0x2a32 00002a2d: JUMPI 00002a2e: PUSH1 0x00 00002a30: DUP1 00002a31: REVERT 00002a32: JUMPDEST 00002a33: POP 00002a34: CALLDATALOAD 00002a35: SWAP2 00002a36: SWAP1 00002a37: POP 00002a38: JUMP 00002a39: JUMPDEST 00002a3a: PUSH1 0x00 00002a3c: DUP1 00002a3d: PUSH1 0x40 00002a3f: DUP4 00002a40: DUP6 00002a41: SUB 00002a42: SLT 00002a43: ISZERO 00002a44: PUSH2 0x2a4c 00002a47: JUMPI 00002a48: PUSH1 0x00 00002a4a: DUP1 00002a4b: REVERT 00002a4c: JUMPDEST 00002a4d: DUP3 00002a4e: CALLDATALOAD 00002a4f: SWAP2 00002a50: POP 00002a51: PUSH2 0x2a5c 00002a54: PUSH1 0x20 00002a56: DUP5 00002a57: ADD 00002a58: PUSH2 0x2910 00002a5b: JUMP 00002a5c: JUMPDEST 00002a5d: SWAP1 00002a5e: POP 00002a5f: SWAP3 00002a60: POP 00002a61: SWAP3 00002a62: SWAP1 00002a63: POP 00002a64: JUMP 00002a65: JUMPDEST 00002a66: PUSH1 0x00 00002a68: DUP2 00002a69: MLOAD 00002a6a: DUP1 00002a6b: DUP5 00002a6c: MSTORE 00002a6d: PUSH1 0x20 00002a6f: DUP1 00002a70: DUP6 00002a71: ADD 00002a72: SWAP5 00002a73: POP 00002a74: DUP1 00002a75: DUP5 00002a76: ADD 00002a77: PUSH1 0x00 00002a79: JUMPDEST 00002a7a: DUP4 00002a7b: DUP2 00002a7c: LT 00002a7d: ISZERO 00002a7e: PUSH2 0x2a9e 00002a81: JUMPI 00002a82: DUP2 00002a83: MLOAD 00002a84: PUSH1 0x01 00002a86: PUSH1 0x01 00002a88: PUSH1 0xa0 00002a8a: SHL 00002a8b: SUB 00002a8c: AND 00002a8d: DUP8 00002a8e: MSTORE 00002a8f: SWAP6 00002a90: DUP3 00002a91: ADD 00002a92: SWAP6 00002a93: SWAP1 00002a94: DUP3 00002a95: ADD 00002a96: SWAP1 00002a97: PUSH1 0x01 00002a99: ADD 00002a9a: PUSH2 0x2a79 00002a9d: JUMP 00002a9e: JUMPDEST 00002a9f: POP 00002aa0: SWAP5 00002aa1: SWAP6 00002aa2: SWAP5 00002aa3: POP 00002aa4: POP 00002aa5: POP 00002aa6: POP 00002aa7: POP 00002aa8: JUMP 00002aa9: JUMPDEST 00002aaa: DUP5 00002aab: DUP2 00002aac: MSTORE 00002aad: PUSH1 0x80 00002aaf: PUSH1 0x20 00002ab1: DUP3 00002ab2: ADD 00002ab3: MSTORE 00002ab4: PUSH1 0x00 00002ab6: PUSH2 0x2ac2 00002ab9: PUSH1 0x80 00002abb: DUP4 00002abc: ADD 00002abd: DUP7 00002abe: PUSH2 0x2a65 00002ac1: JUMP 00002ac2: JUMPDEST 00002ac3: PUSH1 0x01 00002ac5: PUSH1 0x01 00002ac7: PUSH1 0xa0 00002ac9: SHL 00002aca: SUB 00002acb: SWAP5 00002acc: SWAP1 00002acd: SWAP5 00002ace: AND 00002acf: PUSH1 0x40 00002ad1: DUP4 00002ad2: ADD 00002ad3: MSTORE 00002ad4: POP 00002ad5: PUSH1 0x60 00002ad7: ADD 00002ad8: MSTORE 00002ad9: SWAP3 00002ada: SWAP2 00002adb: POP 00002adc: POP 00002add: JUMP 00002ade: JUMPDEST 00002adf: PUSH1 0x00 00002ae1: PUSH1 0x20 00002ae3: DUP1 00002ae4: DUP4 00002ae5: MSTORE 00002ae6: DUP4 00002ae7: MLOAD 00002ae8: DUP1 00002ae9: DUP3 00002aea: DUP6 00002aeb: ADD 00002aec: MSTORE 00002aed: PUSH1 0x00 00002aef: JUMPDEST 00002af0: DUP2 00002af1: DUP2 00002af2: LT 00002af3: ISZERO 00002af4: PUSH2 0x2b0b 00002af7: JUMPI 00002af8: DUP6 00002af9: DUP2 00002afa: ADD 00002afb: DUP4 00002afc: ADD 00002afd: MLOAD 00002afe: DUP6 00002aff: DUP3 00002b00: ADD 00002b01: PUSH1 0x40 00002b03: ADD 00002b04: MSTORE 00002b05: DUP3 00002b06: ADD 00002b07: PUSH2 0x2aef 00002b0a: JUMP 00002b0b: JUMPDEST 00002b0c: DUP2 00002b0d: DUP2 00002b0e: GT 00002b0f: ISZERO 00002b10: PUSH2 0x2b1d 00002b13: JUMPI 00002b14: PUSH1 0x00 00002b16: PUSH1 0x40 00002b18: DUP4 00002b19: DUP8 00002b1a: ADD 00002b1b: ADD 00002b1c: MSTORE 00002b1d: JUMPDEST 00002b1e: POP 00002b1f: PUSH1 0x1f 00002b21: ADD 00002b22: PUSH1 0x1f 00002b24: NOT 00002b25: AND 00002b26: SWAP3 00002b27: SWAP1 00002b28: SWAP3 00002b29: ADD 00002b2a: PUSH1 0x40 00002b2c: ADD 00002b2d: SWAP4 00002b2e: SWAP3 00002b2f: POP 00002b30: POP 00002b31: POP 00002b32: JUMP 00002b33: JUMPDEST 00002b34: PUSH1 0x20 00002b36: DUP1 00002b37: DUP3 00002b38: MSTORE 00002b39: DUP2 00002b3a: DUP2 00002b3b: ADD 00002b3c: MSTORE 00002b3d: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00002b5e: PUSH1 0x40 00002b60: DUP3 00002b61: ADD 00002b62: MSTORE 00002b63: PUSH1 0x60 00002b65: ADD 00002b66: SWAP1 00002b67: JUMP 00002b68: JUMPDEST 00002b69: DUP3 00002b6a: DUP2 00002b6b: MSTORE 00002b6c: PUSH1 0x40 00002b6e: PUSH1 0x20 00002b70: DUP3 00002b71: ADD 00002b72: MSTORE 00002b73: PUSH1 0x00 00002b75: PUSH2 0x2b81 00002b78: PUSH1 0x40 00002b7a: DUP4 00002b7b: ADD 00002b7c: DUP5 00002b7d: PUSH2 0x2a65 00002b80: JUMP 00002b81: JUMPDEST 00002b82: SWAP5 00002b83: SWAP4 00002b84: POP 00002b85: POP 00002b86: POP 00002b87: POP 00002b88: JUMP 00002b89: JUMPDEST 00002b8a: DUP6 00002b8b: DUP2 00002b8c: MSTORE 00002b8d: DUP5 00002b8e: PUSH1 0x20 00002b90: DUP3 00002b91: ADD 00002b92: MSTORE 00002b93: PUSH1 0xa0 00002b95: PUSH1 0x40 00002b97: DUP3 00002b98: ADD 00002b99: MSTORE 00002b9a: PUSH1 0x00 00002b9c: PUSH2 0x2ba8 00002b9f: PUSH1 0xa0 00002ba1: DUP4 00002ba2: ADD 00002ba3: DUP7 00002ba4: PUSH2 0x2a65 00002ba7: JUMP 00002ba8: JUMPDEST 00002ba9: PUSH1 0x01 00002bab: PUSH1 0x01 00002bad: PUSH1 0xa0 00002baf: SHL 00002bb0: SUB 00002bb1: SWAP5 00002bb2: SWAP1 00002bb3: SWAP5 00002bb4: AND 00002bb5: PUSH1 0x60 00002bb7: DUP4 00002bb8: ADD 00002bb9: MSTORE 00002bba: POP 00002bbb: PUSH1 0x80 00002bbd: ADD 00002bbe: MSTORE 00002bbf: SWAP4 00002bc0: SWAP3 00002bc1: POP 00002bc2: POP 00002bc3: POP 00002bc4: JUMP 00002bc5: JUMPDEST 00002bc6: PUSH1 0x00 00002bc8: DUP3 00002bc9: NOT 00002bca: DUP3 00002bcb: GT 00002bcc: ISZERO 00002bcd: PUSH2 0x2bd8 00002bd0: JUMPI 00002bd1: PUSH2 0x2bd8 00002bd4: PUSH2 0x2c8b 00002bd7: JUMP 00002bd8: JUMPDEST 00002bd9: POP 00002bda: ADD 00002bdb: SWAP1 00002bdc: JUMP 00002bdd: JUMPDEST 00002bde: PUSH1 0x00 00002be0: DUP3 00002be1: PUSH2 0x2bfa 00002be4: JUMPI 00002be5: PUSH4 0x4e487b71 00002bea: PUSH1 0xe0 00002bec: SHL 00002bed: PUSH1 0x00 00002bef: MSTORE 00002bf0: PUSH1 0x12 00002bf2: PUSH1 0x04 00002bf4: MSTORE 00002bf5: PUSH1 0x24 00002bf7: PUSH1 0x00 00002bf9: REVERT 00002bfa: JUMPDEST 00002bfb: POP 00002bfc: DIV 00002bfd: SWAP1 00002bfe: JUMP 00002bff: JUMPDEST 00002c00: PUSH1 0x00 00002c02: DUP2 00002c03: PUSH1 0x00 00002c05: NOT 00002c06: DIV 00002c07: DUP4 00002c08: GT 00002c09: DUP3 00002c0a: ISZERO 00002c0b: ISZERO 00002c0c: AND 00002c0d: ISZERO 00002c0e: PUSH2 0x2c19 00002c11: JUMPI 00002c12: PUSH2 0x2c19 00002c15: PUSH2 0x2c8b 00002c18: JUMP 00002c19: JUMPDEST 00002c1a: POP 00002c1b: MUL 00002c1c: SWAP1 00002c1d: JUMP 00002c1e: JUMPDEST 00002c1f: PUSH1 0x00 00002c21: DUP3 00002c22: DUP3 00002c23: LT 00002c24: ISZERO 00002c25: PUSH2 0x2c30 00002c28: JUMPI 00002c29: PUSH2 0x2c30 00002c2c: PUSH2 0x2c8b 00002c2f: JUMP 00002c30: JUMPDEST 00002c31: POP 00002c32: SUB 00002c33: SWAP1 00002c34: JUMP 00002c35: JUMPDEST 00002c36: PUSH1 0x01 00002c38: DUP2 00002c39: DUP2 00002c3a: SHR 00002c3b: SWAP1 00002c3c: DUP3 00002c3d: AND 00002c3e: DUP1 00002c3f: PUSH2 0x2c49 00002c42: JUMPI 00002c43: PUSH1 0x7f 00002c45: DUP3 00002c46: AND 00002c47: SWAP2 00002c48: POP 00002c49: JUMPDEST 00002c4a: PUSH1 0x20 00002c4c: DUP3 00002c4d: LT 00002c4e: DUP2 00002c4f: EQ 00002c50: ISZERO 00002c51: PUSH2 0x2c6a 00002c54: JUMPI 00002c55: PUSH4 0x4e487b71 00002c5a: PUSH1 0xe0 00002c5c: SHL 00002c5d: PUSH1 0x00 00002c5f: MSTORE 00002c60: PUSH1 0x22 00002c62: PUSH1 0x04 00002c64: MSTORE 00002c65: PUSH1 0x24 00002c67: PUSH1 0x00 00002c69: REVERT 00002c6a: JUMPDEST 00002c6b: POP 00002c6c: SWAP2 00002c6d: SWAP1 00002c6e: POP 00002c6f: JUMP 00002c70: JUMPDEST 00002c71: PUSH1 0x00 00002c73: PUSH1 0x00 00002c75: NOT 00002c76: DUP3 00002c77: EQ 00002c78: ISZERO 00002c79: PUSH2 0x2c84 00002c7c: JUMPI 00002c7d: PUSH2 0x2c84 00002c80: PUSH2 0x2c8b 00002c83: JUMP 00002c84: JUMPDEST 00002c85: POP 00002c86: PUSH1 0x01 00002c88: ADD 00002c89: SWAP1 00002c8a: JUMP 00002c8b: JUMPDEST 00002c8c: PUSH4 0x4e487b71 00002c91: PUSH1 0xe0 00002c93: SHL 00002c94: PUSH1 0x00 00002c96: MSTORE 00002c97: PUSH1 0x11 00002c99: PUSH1 0x04 00002c9b: MSTORE 00002c9c: PUSH1 0x24 00002c9e: PUSH1 0x00 00002ca0: REVERT 00002ca1: JUMPDEST 00002ca2: PUSH4 0x4e487b71 00002ca7: PUSH1 0xe0 00002ca9: SHL 00002caa: PUSH1 0x00 00002cac: MSTORE 00002cad: PUSH1 0x31 00002caf: PUSH1 0x04 00002cb1: MSTORE 00002cb2: PUSH1 0x24 00002cb4: PUSH1 0x00 00002cb6: REVERT 00002cb7: JUMPDEST 00002cb8: PUSH4 0x4e487b71 00002cbd: PUSH1 0xe0 00002cbf: SHL 00002cc0: PUSH1 0x00 00002cc2: MSTORE 00002cc3: PUSH1 0x32 00002cc5: PUSH1 0x04 00002cc7: MSTORE 00002cc8: PUSH1 0x24 00002cca: PUSH1 0x00 00002ccc: REVERT 00002ccd: JUMPDEST 00002cce: PUSH1 0x01 00002cd0: PUSH1 0x01 00002cd2: PUSH1 0xa0 00002cd4: SHL 00002cd5: SUB 00002cd6: DUP2 00002cd7: AND 00002cd8: DUP2 00002cd9: EQ 00002cda: PUSH2 0x15ce 00002cdd: JUMPI 00002cde: PUSH1 0x00 00002ce0: DUP1 00002ce1: REVERT 00002ce2: INVALID 00002ce3: GASLIMIT 00002ce4: MSTORE 00002ce5: NUMBER 00002ce6: ORIGIN 00002ce7: ADDRESS 00002ce8: GASPRICE 00002ce9: KECCAK256 00002cea: PUSH21 0x72616e7366657220616d6f756e7420657863656564 00002d00: PUSH20 0x20616c6c6f77616e63658be0079c531659141344 00002d15: UNKNOWN(0xCD) 00002d16: UNKNOWN(0x1F) 00002d17: UNKNOWN(0xD0) 00002d18: LOG4 00002d19: CALLCODE 00002d1a: DUP5 00002d1b: NOT 00002d1c: BLOBHASH 00002d1d: PUSH32 0x9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c 00002d3e: PUSH13 0x6f77616e63652062656c6f7720 00002d4c: PUSH27 0x65726fa2646970667358221220288274657faf7f261844682fdb9e 00002d68: JUMPDEST 00002d69: DUP11 00002d6a: UNKNOWN(0xAB) 00002d6b: UNKNOWN(0xB0) 00002d6c: CALLER 00002d6d: UNKNOWN(0x29) 00002d6e: COINBASE 00002d6f: UNKNOWN(0xAE) 00002d70: UNKNOWN(0xAA) 00002d71: RETURNDATASIZE 00002d72: PUSH7 0xc112823b11e4f9 00002d7a: PUSH5 0x736f6c6343 00002d80: STOP 00002d81: ADDMOD 00002d82: SDIV 00002d83: STOP 00002d84: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | reentrancy | slither | Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "_transfer",
"type": "function",
"source_mapping": {
"lines": [
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671
],
"start": 22702,
"length": 1509,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 44,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "CoinToken",
"type": "contract",
"source_mapping": {
"lines": [
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949
],
"start": 14590,
"length": 20710,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_transfer(address,address,uint256)"
}
},
{
"name": "swapTokens(contractTokenBalance)",
"type": "node",
"source_mapping": {
"lines": [
659
],
"start": 23542,
"length": 32,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_transfer",
"type": "function",
"source_mapping": {
"lines": [
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671
],
"start": 22702,
"length": 1509,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 44,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "CoinToken",
"type": "contract",
"source_mapping": {
"lines": [
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949
],
"start": 14590,
"length": 20710,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_transfer(address,address,uint256)"
}
}
}
},
{
"name": "uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp)",
"type": "node",
"source_mapping": {
"lines": [
701,
702,
703,
704,
705,
706,
707
],
"start": 25247,
"length": 234,
"ending_column": 22,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 21,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "swapTokensForEth",
"type": "function",
"source_mapping": {
"lines": [
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708
],
"start": 24899,
"length": 648,
"ending_column": 22,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "CoinToken",
"type": "contract",
"source_mapping": {
"lines": [
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949
],
"start": 14590,
"length": 20710,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "swapTokensForEth(uint256)"
}
}
}
},
{
"name": "buyBackTokens(balance.div(100))",
"type": "node",
"source_mapping": {
"lines": [
665
],
"start": 23859,
"length": 31,
"ending_column": 51,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_transfer",
"type": "function",
"source_mapping": {
"lines": [
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671
],
"start": 22702,
"length": 1509,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 44,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "CoinToken",
"type": "contract",
"source_mapping": {
"lines": [
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949
],
"start": 14590,
"length": 20710,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_transfer(address,address,uint256)"
}
}
}
},
{
"name": "uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300))",
"type": "node",
"source_mapping": {
"lines": [
717,
718,
719,
720,
721,
722,
723
],
"start": 25825,
"length": 234,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 12,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "swapETHForTokens",
"type": "function",
"source_mapping": {
"lines": [
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725
],
"start": 25557,
"length": 563,
"ending_column": 14,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "CoinToken",
"type": "contract",
"source_mapping": {
"lines": [
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949
],
"start": 14590,
"length": 20710,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-xcq08l_2/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "swapETHForTokens(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_transfer",
"type": "function",
"lines": [
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "swapTokens(contractTokenBalance)",
"type": "node",
"lines": [
659
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp)",
"type": "node",
"lines": [
701,
702,
703,
704,
705,
706,
707
]
},
{
"file": "contracts/Contract.sol",
"name": "buyBackTokens(balance.div(100))",
"type": "node",
"lines": [
665
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300))",
"type": "node",
"lines": [
717,
718,
719,
720,
721,
722,
723
]
},
{
"file": "contracts/Contract.sol",
"name": "swapTokens(contractTokenBalance)",
"type": "node",
"lines": [
659
]
},
{
"file": "contracts/Contract.sol",
"name": "recipient.transfer(amount)",
"type": "node",
"lines": [
945
]
},
{
"file": "contracts/Contract.sol",
"name": "buyBackTokens(balance.div(100))",
"type": "node",
"lines": [
665
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300))",
"type": "node",
"lines": [
717,
718,
719,
720,
721,
722,
723
]
},
{
"file": "contracts/Contract.sol",
"name": "_tokenTransfer(from,to,amount,takeFee)",
"type": "node",
"lines": [
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "_liquidityFee = _previousLiquidityFee",
"type": "node",
"lines": [
871
]
},
{
"file": "contracts/Contract.sol",
"name": "_liquidityFee = 0",
"type": "node",
"lines": [
868
]
},
{
"file": "contracts/Contract.sol",
"name": "_tokenTransfer(from,to,amount,takeFee)",
"type": "node",
"lines": [
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity)",
"type": "node",
"lines": [
849,
850
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[sender] = _rOwned[sender].sub(rAmount)",
"type": "node",
"lines": [
769
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[sender] = _rOwned[sender].sub(rAmount)",
"type": "node",
"lines": [
780,
781,
782,
783
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[sender] = _rOwned[sender].sub(rAmount)",
"type": "node",
"lines": [
802,
803
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[sender] = _rOwned[sender].sub(rAmount)",
"type": "node",
"lines": [
792,
793
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount)",
"type": "node",
"lines": [
770,
771
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount)",
"type": "node",
"lines": [
783,
784
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount)",
"type": "node",
"lines": [
793
]
},
{
"file": "contracts/Contract.sol",
"name": "_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount)",
"type": "node",
"lines": [
803,
804
]
},
{
"file": "contracts/Contract.sol",
"name": "_tokenTransfer(from,to,amount,takeFee)",
"type": "node",
"lines": [
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "_rTotal = _rTotal.sub(rFee)",
"type": "node",
"lines": [
807,
808
]
},
{
"file": "contracts/Contract.sol",
"name": "_tokenTransfer(from,to,amount,takeFee)",
"type": "node",
"lines": [
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity)",
"type": "node",
"lines": [
852,
853,
854
]
},
{
"file": "contracts/Contract.sol",
"name": "_tOwned[sender] = _tOwned[sender].sub(tAmount)",
"type": "node",
"lines": [
802
]
},
{
"file": "contracts/Contract.sol",
"name": "_tOwned[sender] = _tOwned[sender].sub(tAmount)",
"type": "node",
"lines": [
792
]
},
{
"file": "contracts/Contract.sol",
"name": "_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount)",
"type": "node",
"lines": [
783
]
},
{
"file": "contracts/Contract.sol",
"name": "_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount)",
"type": "node",
"lines": [
803
]
},
{
"file": "contracts/Contract.sol",
"name": "buyBackTokens(balance.div(100))",
"type": "node",
"lines": [
665
]
},
{
"file": "contracts/Contract.sol",
"name": "inSwapAndLiquify = true",
"type": "node",
"lines": [
461,
462
]
},
{
"file": "contracts/Contract.sol",
"name": "inSwapAndLiquify = false",
"type": "node",
"lines": [
462,
463
]
},
{
"file": "contracts/Contract.sol",
"name": "_tokenTransfer(from,to,amount,takeFee)",
"type": "node",
"lines": [
670,
671
]
},
{
"file": "contracts/Contract.sol",
"name": "marketingFee = previousMarketingFee",
"type": "node",
"lines": [
874
]
},
{
"file": "contracts/Contract.sol",
"name": "marketingFee = 0",
"type": "node",
"lines": [
869
]
}
],
"description": "Reentrancy in CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671):\n\tExternal calls:\n\t- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)\n\t\t- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#701-707)\n\t- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)\n\t\t- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)\n\tExternal calls sending eth:\n\t- swapTokens(contractTokenBalance) (contracts/Contract.sol#659)\n\t\t- recipient.transfer(amount) (contracts/Contract.sol#945)\n\t- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)\n\t\t- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (contracts/Contract.sol#717-723)\n\tState variables written after the call(s):\n\t- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)\n\t\t- _liquidityFee = _previousLiquidityFee (contracts/Contract.sol#871)\n\t\t- _liquidityFee = 0 (contracts/Contract.sol#868)\n\tCoinToken._liquidityFee (contracts/Contract.sol#420) can be used in cross function reentrancies:\n\t- CoinToken.calculateLiquidityFee(uint256) (contracts/Contract.sol#858-860)\n\t- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)\n\t- CoinToken.removeAllFee() (contracts/Contract.sol#860-869)\n\t- CoinToken.restoreAllFee() (contracts/Contract.sol#869-874)\n\t- CoinToken.setBuybackFee(uint256) (contracts/Contract.sol#890-896)\n\t- CoinToken.setMarketingFee(uint256) (contracts/Contract.sol#901-907)\n\t- CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686)\n\t- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)\n\t\t- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (contracts/Contract.sol#849-850)\n\t\t- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#769)\n\t\t- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#780-783)\n\t\t- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#802-803)\n\t\t- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/Contract.sol#792-793)\n\t\t- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#770-771)\n\t\t- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#783-784)\n\t\t- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#793)\n\t\t- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/Contract.sol#803-804)\n\tCoinToken._rOwned (contracts/Contract.sol#403-404) can be used in cross function reentrancies:\n\t- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)\n\t- CoinToken._takeLiquidity(uint256) (contracts/Contract.sol#845-854)\n\t- CoinToken._transferBothExcluded(address,address,uint256) (contracts/Contract.sol#795-806)\n\t- CoinToken._transferFromExcluded(address,address,uint256) (contracts/Contract.sol#786-795)\n\t- CoinToken._transferStandard(address,address,uint256) (contracts/Contract.sol#760-773)\n\t- CoinToken._transferToExcluded(address,address,uint256) (contracts/Contract.sol#773-785)\n\t- CoinToken.balanceOf(address) (contracts/Contract.sol#522-528)\n\t- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)\n\t- CoinToken.deliver(uint256) (contracts/Contract.sol#575-587)\n\t- CoinToken.excludeFromReward(address) (contracts/Contract.sol#605-612)\n\t- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)\n\t\t- _rTotal = _rTotal.sub(rFee) (contracts/Contract.sol#807-808)\n\tCoinToken._rTotal (contracts/Contract.sol#415-416) can be used in cross function reentrancies:\n\t- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)\n\t- CoinToken._reflectFee(uint256,uint256) (contracts/Contract.sol#806-809)\n\t- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)\n\t- CoinToken.deliver(uint256) (contracts/Contract.sol#575-587)\n\t- CoinToken.tokenFromReflection(uint256) (contracts/Contract.sol#598-605)\n\t- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)\n\t\t- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (contracts/Contract.sol#852-854)\n\t\t- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#802)\n\t\t- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/Contract.sol#792)\n\t\t- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#783)\n\t\t- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/Contract.sol#803)\n\tCoinToken._tOwned (contracts/Contract.sol#405-409) can be used in cross function reentrancies:\n\t- CoinToken._getCurrentSupply() (contracts/Contract.sol#835-845)\n\t- CoinToken._takeLiquidity(uint256) (contracts/Contract.sol#845-854)\n\t- CoinToken._transferBothExcluded(address,address,uint256) (contracts/Contract.sol#795-806)\n\t- CoinToken._transferFromExcluded(address,address,uint256) (contracts/Contract.sol#786-795)\n\t- CoinToken._transferToExcluded(address,address,uint256) (contracts/Contract.sol#773-785)\n\t- CoinToken.balanceOf(address) (contracts/Contract.sol#522-528)\n\t- CoinToken.excludeFromReward(address) (contracts/Contract.sol#605-612)\n\t- CoinToken.includeInReward(address) (contracts/Contract.sol#612-626)\n\t- buyBackTokens(balance.div(100)) (contracts/Contract.sol#665)\n\t\t- inSwapAndLiquify = true (contracts/Contract.sol#461-462)\n\t\t- inSwapAndLiquify = false (contracts/Contract.sol#462-463)\n\tCoinToken.inSwapAndLiquify (contracts/Contract.sol#439-441) can be used in cross function reentrancies:\n\t- CoinToken._transfer(address,address,uint256) (contracts/Contract.sol#634-671)\n\t- CoinToken.lockTheSwap() (contracts/Contract.sol#461-463)\n\t- _tokenTransfer(from,to,amount,takeFee) (contracts/Contract.sol#670-671)\n\t\t- marketingFee = previousMarketingFee (contracts/Contract.sol#874)\n\t\t- marketingFee = 0 (contracts/Contract.sol#869)\n\tCoinToken.marketingFee (contracts/Contract.sol#425-426) can be used in cross function reentrancies:\n\t- CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,address,address,address) (contracts/Contract.sol#463-512)\n\t- CoinToken.marketingFee (contracts/Contract.sol#425-426)\n\t- CoinToken.removeAllFee() (contracts/Contract.sol#860-869)\n\t- CoinToken.restoreAllFee() (contracts/Contract.sol#869-874)\n\t- CoinToken.setBuybackFee(uint256) (contracts/Contract.sol#890-896)\n\t- CoinToken.setMarketingFee(uint256) (contracts/Contract.sol#901-907)\n\t- CoinToken.swapTokens(uint256) (contracts/Contract.sol#671-686)"
}
|
| 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": "0xec28438a",
"selector": "0xec28438a",
"calldata_variants": [
"0xec28438a",
"0xec28438a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedc2fcfb",
"selector": "0xedc2fcfb",
"calldata_variants": [
"0xedc2fcfb",
"0xedc2fcfb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf0f165af",
"selector": "0xf0f165af",
"calldata_variants": [
"0xf0f165af",
"0xf0f165af0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea2f0b37",
"selector": "0xea2f0b37",
"calldata_variants": [
"0xea2f0b37",
"0xea2f0b370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa5ece941",
"selector": "0xa5ece941",
"calldata_variants": [
"0xa5ece941",
"0xa5ece9410000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 11494,
"type": "tx_origin_used"
}
]
}
|
| high | access_control | codex | Owner can arbitrarily change fees and limits, enabling honeypot behavior | 85 | no | — |
viewevidence_json{
"evidence": "Fee and limit setters are onlyOwner with no bounds or timelock.",
"locations": [
"contracts/Contract.sol:919",
"contracts/Contract.sol:923",
"contracts/Contract.sol:928",
"contracts/Contract.sol:932",
"contracts/Contract.sol:949",
"contracts/Contract.sol:959"
],
"recommendation": "Add upper bounds for fees and transaction limits, use a timelock for parameter changes, and/or renounce ownership after configuration to reduce centralized control risk.",
"exploit_scenario": "The owner can set `_taxFee` to near 100%, lower `_maxTxAmount` to a tiny value, or toggle `swapAndLiquifyEnabled`/`presale` to change fee behavior. This allows the owner (or a compromised owner) to make sells revert or make transfers effectively confiscatory after users buy."
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x10f06757889ba9d26186b702c965f7d1e8e2a744620ed6f3f0d47894bc6ce846
call_targets:
0xf20bc3b10b95cde1368a2f4219a63ed3fd8b9089
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x10f06757889ba9d26186b702c965f7d1e8e2a744620ed6f3f0d47894bc6ce846",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf20bc3b10b95cde1368a2f4219a63ed3fd8b9089"
],
"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": "0xec28438a",
"selector": "0xec28438a",
"calldata_variants": [
"0xec28438a",
"0xec28438a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedc2fcfb",
"selector": "0xedc2fcfb",
"calldata_variants": [
"0xedc2fcfb",
"0xedc2fcfb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf0f165af",
"selector": "0xf0f165af",
"calldata_variants": [
"0xf0f165af",
"0xf0f165af0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea2f0b37",
"selector": "0xea2f0b37",
"calldata_variants": [
"0xea2f0b37",
"0xea2f0b370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa5ece941",
"selector": "0xa5ece941",
"calldata_variants": [
"0xa5ece941",
"0xa5ece9410000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 9000,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9114,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9559,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": [
{
"pc": 11494,
"type": "tx_origin_used"
}
]
}
|
| medium | math | codex | Fee parameter underflow/division by zero can brick sell-side swaps | 75 | no | — |
viewevidence_json{
"evidence": "`swapTokens` divides by `_liquidityFee` and subtracts 25 from `marketingFee` without validation.",
"locations": [
"contracts/Contract.sol:693",
"contracts/Contract.sol:701",
"contracts/Contract.sol:702",
"contracts/Contract.sol:923",
"contracts/Contract.sol:932"
],
"recommendation": "Add bounds checks in setters (e.g., require `marketingFee >= 25` and `buybackFee + marketingFee > 0`), or refactor `swapTokens` to avoid hardcoded `25` and skip swaps when `_liquidityFee == 0`.",
"exploit_scenario": "If the owner (or a compromised owner) sets `marketingFee < 25` or sets both `buybackFee` and `marketingFee` to 0, then `_liquidityFee` becomes 0 or `marketingFee.sub(25)` underflows. When any user sells to the pair and the contract balance exceeds `minimumTokensBeforeSwap`, `swapTokens` executes and reverts, blocking sells and effectively freezing trading."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x10f06757889ba9d26186b702c965f7d1e8e2a744620ed6f3f0d47894bc6ce846
call_targets:
0xf20bc3b10b95cde1368a2f4219a63ed3fd8b9089
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x10f06757889ba9d26186b702c965f7d1e8e2a744620ed6f3f0d47894bc6ce846",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf20bc3b10b95cde1368a2f4219a63ed3fd8b9089"
],
"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": "0xec28438a",
"selector": "0xec28438a",
"calldata_variants": [
"0xec28438a",
"0xec28438a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedc2fcfb",
"selector": "0xedc2fcfb",
"calldata_variants": [
"0xedc2fcfb",
"0xedc2fcfb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf0f165af",
"selector": "0xf0f165af",
"calldata_variants": [
"0xf0f165af",
"0xf0f165af0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea2f0b37",
"selector": "0xea2f0b37",
"calldata_variants": [
"0xea2f0b37",
"0xea2f0b370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa5ece941",
"selector": "0xa5ece941",
"calldata_variants": [
"0xa5ece941",
"0xa5ece9410000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 9000,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9114,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9559,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [
{
"pc": 11494,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 4
}
|
| low | other | codex | ETH payouts use .transfer and can revert if recipient is a contract | 65 | no | — |
viewevidence_json{
"evidence": "`transferToAddressETH` uses `.transfer` and is called from `swapTokens`.",
"locations": [
"contracts/Contract.sol:701",
"contracts/Contract.sol:702",
"contracts/Contract.sol:973",
"contracts/Contract.sol:974"
],
"recommendation": "Use `call{value: amount}('')` with success checks or a pull-payment pattern; ensure recipient addresses are EOAs if keeping `.transfer`.",
"exploit_scenario": "`swapTokens` sends ETH to `lp_poolAddress` and `marketingAddress` via `.transfer`. If either address is a contract with a fallback requiring more than 2300 gas or reverting (e.g., a multisig), swaps revert and sells can fail once `swapTokens` is triggered."
}
|