019c0ea9-0755-7161-aaea-8a07609dc9c1
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 |
|---|---|---|---|---|
| 41571 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41572 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41573 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41574 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41575 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41576 | detector.run | complete | 1 / 3 | 2 months ago |
| 41577 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42210 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 42211 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-r57yfv0u)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-r57yfv0u)
GROK.sendETHToFee(uint256) (contracts/Contract.sol#278-282) sends eth to arbitrary user
Dangerous calls:
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Reentrancy in GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251):
External calls:
- swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))) (contracts/Contract.sol#238-240)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#272-275)
External calls sending eth:
- sendETHToFee(address(this).balance) (contracts/Contract.sol#241-242)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
State variables written after the call(s):
- _balances[address(this)] = _balances[address(this)].add(taxAmount) (contracts/Contract.sol#243-244)
GROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:
- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)
- GROK.balanceOf(address) (contracts/Contract.sol#174-178)
- GROK.constructor() (contracts/Contract.sol#147-160)
- _balances[from] = _balances[from].sub(amount) (contracts/Contract.sol#245-246)
GROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:
- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)
- GROK.balanceOf(address) (contracts/Contract.sol#174-178)
- GROK.constructor() (contracts/Contract.sol#147-160)
- _balances[to] = _balances[to].add(amount.sub(taxAmount)) (contracts/Contract.sol#247-251)
GROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:
- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)
- GROK.balanceOf(address) (contracts/Contract.sol#174-178)
- GROK.constructor() (contracts/Contract.sol#147-160)
Reentrancy in GROK.openTrading() (contracts/Contract.sol#298-317):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (contracts/Contract.sol#308-313)
- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)
- IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max) (contracts/Contract.sol#315-316)
External calls sending eth:
- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)
State variables written after the call(s):
- tradingOpen = true (contracts/Contract.sol#316)
GROK.tradingOpen (contracts/Contract.sol#140) can be used in cross function reentrancies:
- GROK.openTrading() (contracts/Contract.sol#298-317)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
GROK.openTrading() (contracts/Contract.sol#298-317) ignores return value by uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)
GROK.openTrading() (contracts/Contract.sol#298-317) ignores return value by IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max) (contracts/Contract.sol#315-316)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
GROK.allowance(address,address).owner (contracts/Contract.sol#186) shadows:
- Ownable.owner() (contracts/Contract.sol#71-75) (function)
GROK._approve(address,address,uint256).owner (contracts/Contract.sol#201) shadows:
- Ownable.owner() (contracts/Contract.sol#71-75) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
Reentrancy in GROK.openTrading() (contracts/Contract.sol#298-317):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (contracts/Contract.sol#308-313)
- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)
- IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max) (contracts/Contract.sol#315-316)
External calls sending eth:
- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)
State variables written after the call(s):
- firstBlock = block.number (contracts/Contract.sol#316)
- swapEnabled = true (contracts/Contract.sol#316)
Reentrancy in GROK.transferFrom(address,address,uint256) (contracts/Contract.sol#192-201):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#196)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#272-275)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#196)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#196-200)
- _allowances[owner][spender] = amount (contracts/Contract.sol#206)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251):
External calls:
- swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))) (contracts/Contract.sol#238-240)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#272-275)
External calls sending eth:
- sendETHToFee(address(this).balance) (contracts/Contract.sol#241-242)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
Event emitted after the call(s):
- Transfer(from,address(this),taxAmount) (contracts/Contract.sol#244-245)
- Transfer(from,to,amount.sub(taxAmount)) (contracts/Contract.sol#251)
Reentrancy in GROK.transferFrom(address,address,uint256) (contracts/Contract.sol#192-201):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#196)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#272-275)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#196)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Contract.sol#207)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#196-200)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
GROK.isContract(address) (contracts/Contract.sol#254-260) uses assembly
- INLINE ASM (contracts/Contract.sol#256-260)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
Version constraint 0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- 0.8.20 (contracts/Contract.sol#6-8)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Function IUniswapV2Router02.WETH() (contracts/Contract.sol#100-103) is not in mixedCase
Constant GROK._decimals (contracts/Contract.sol#128-129) is not in UPPER_CASE_WITH_UNDERSCORES
Constant GROK._tTotal (contracts/Contract.sol#129-131) is not in UPPER_CASE_WITH_UNDERSCORES
Constant GROK._name (contracts/Contract.sol#131-133) is not in UPPER_CASE_WITH_UNDERSCORES
Constant GROK._symbol (contracts/Contract.sol#133-134) is not in UPPER_CASE_WITH_UNDERSCORES
Variable GROK._maxTxAmount (contracts/Contract.sol#134-135) is not in mixedCase
Variable GROK._maxWalletSize (contracts/Contract.sol#135-136) is not in mixedCase
Variable GROK._taxSwapThreshold (contracts/Contract.sol#136-137) is not in mixedCase
Variable GROK._maxTaxSwap (contracts/Contract.sol#137-138) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Reentrancy in GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251):
External calls:
- sendETHToFee(address(this).balance) (contracts/Contract.sol#241-242)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
State variables written after the call(s):
- _balances[address(this)] = _balances[address(this)].add(taxAmount) (contracts/Contract.sol#243-244)
- _balances[from] = _balances[from].sub(amount) (contracts/Contract.sol#245-246)
- _balances[to] = _balances[to].add(amount.sub(taxAmount)) (contracts/Contract.sol#247-251)
Event emitted after the call(s):
- Transfer(from,address(this),taxAmount) (contracts/Contract.sol#244-245)
- Transfer(from,to,amount.sub(taxAmount)) (contracts/Contract.sol#251)
Reentrancy in GROK.transferFrom(address,address,uint256) (contracts/Contract.sol#192-201):
External calls:
- _transfer(sender,recipient,amount) (contracts/Contract.sol#196)
- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#196-200)
- _allowances[owner][spender] = amount (contracts/Contract.sol#206)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Contract.sol#207)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/Contract.sol#196-200)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4
GROK.slitherConstructorVariables() (contracts/Contract.sol#110-317) uses literals with too many digits:
- _maxTxAmount = 138000000 * 10 ** _decimals (contracts/Contract.sol#134-135)
GROK.slitherConstructorVariables() (contracts/Contract.sol#110-317) uses literals with too many digits:
- _maxWalletSize = 138000000 * 10 ** _decimals (contracts/Contract.sol#135-136)
GROK.slitherConstructorVariables() (contracts/Contract.sol#110-317) uses literals with too many digits:
- _taxSwapThreshold = 69000000 * 10 ** _decimals (contracts/Contract.sol#136-137)
GROK.slitherConstructorVariables() (contracts/Contract.sol#110-317) uses literals with too many digits:
- _maxTaxSwap = 69000000 * 10 ** _decimals (contracts/Contract.sol#137-138)
GROK.slitherConstructorConstantVariables() (contracts/Contract.sol#110-317) uses literals with too many digits:
- _tTotal = 6900000000 * 10 ** _decimals (contracts/Contract.sol#129-131)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits
GROK._finalBuyTax (contracts/Contract.sol#121-122) should be constant
GROK._finalSellTax (contracts/Contract.sol#122-124) should be constant
GROK._initialBuyTax (contracts/Contract.sol#119-120) should be constant
GROK._initialSellTax (contracts/Contract.sol#120-121) should be constant
GROK._maxTaxSwap (contracts/Contract.sol#137-138) should be constant
GROK._preventSwapBefore (contracts/Contract.sol#126-127) should be constant
GROK._reduceBuyTaxAt (contracts/Contract.sol#124-125) should be constant
GROK._reduceSellTaxAt (contracts/Contract.sol#125-126) should be constant
GROK._taxSwapThreshold (contracts/Contract.sol#136-137) should be constant
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
GROK._taxWallet (contracts/Contract.sol#118-119) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (7 contracts with 100 detectors), 39 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.20",
"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.20",
"install_stderr": null,
"install_stdout": "Version '0.8.20' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-r57yfv0u --allow-paths /tmp/slither-r57yfv0u,/tmp/slither-r57yfv0u/lib,/tmp/slither-r57yfv0u/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 39,
"workspace_hash": "0abc2e8d5aea78c9c59921faa710597951232cc7ea212551e45ca1476fd78ee7",
"duration_seconds": 0.7604248523712158,
"solc_version_requested": "0.8.20"
}
{"no_findings":false,"summary":"Owner can arbitrarily freeze transfers via a blacklist, and tax swaps accept any output amount which can be MEV-sandwiched to extract value from contract swaps.","findings":[{"severity":"medium","category":"access_control","title":"Owner-controlled blacklist can freeze user funds and halt trading","exploit_scenario":"The owner can add any holder or even the AMM pair to the `bots` list. Because `_transfer` hard-reverts when either sender or recipient is flagged, this lets the owner freeze arbitrary accounts or disable trading after users buy, trapping funds or liquidity.","recommendation":"Remove the blacklist or strictly scope it (e.g., only during an initial launch window). If retained, gate it behind a timelock/multisig and exclude the AMM pair from being blacklisted.","evidence":"`_transfer` blocks any transfer where `bots[from]` or `bots[to]` is true, and `addBots`/`delBots` are owner-only.","locations":["contracts/Contract.sol:213","contracts/Contract.sol:218","contracts/Contract.sol:296","contracts/Contract.sol:302"]},{"severity":"low","category":"oracle","title":"Tax swap uses amountOutMin=0 enabling MEV sandwiching","exploit_scenario":"When the contract swaps collected taxes, it accepts any output amount. An attacker can front‑run the swap to push price down, causing the swap to execute at a worse rate, then back‑run to restore price, extracting value from the contract’s tax swap (reducing ETH sent to the tax wallet).","recommendation":"Set a minimum output based on an on-chain quote and a configurable slippage tolerance, or use a TWAP/oracle-based guard before swapping.","evidence":"`swapExactTokensForETHSupportingFeeOnTransferTokens` is called with `amountOutMin` set to 0.","locations":["contracts/Contract.sol:272","contracts/Contract.sol:277"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-ew5ft5bq
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0ec9-bb88-7513-a5fb-f1db6010658e
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-ew5ft5bq succeeded in 11ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-ew5ft5bq succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
/*
https://t.me/GROKERC20
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
exec
/bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-ew5ft5bq succeeded in 6ms:
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-ew5ft5bq succeeded in 5ms:
1 /*
2
3 https://t.me/GROKERC20
4
5 */
6 // SPDX-License-Identifier: MIT
7
8 pragma solidity 0.8.20;
9
10 abstract contract Context {
11 function _msgSender() internal view virtual returns (address) {
12 return msg.sender;
13 }
14 }
15
16 interface IERC20 {
17 function totalSupply() external view returns (uint256);
18 function balanceOf(address account) external view returns (uint256);
19 function transfer(address recipient, uint256 amount) external returns (bool);
20 function allowance(address owner, address spender) external view returns (uint256);
codex
{"no_findings":false,"summary":"Owner can arbitrarily freeze transfers via a blacklist, and tax swaps accept any output amount which can be MEV-sandwiched to extract value from contract swaps.","findings":[{"severity":"medium","category":"access_control","title":"Owner-controlled blacklist can freeze user funds and halt trading","exploit_scenario":"The owner can add any holder or even the AMM pair to the `bots` list. Because `_transfer` hard-reverts when either sender or recipient is flagged, this lets the owner freeze arbitrary accounts or disable trading after users buy, trapping funds or liquidity.","recommendation":"Remove the blacklist or strictly scope it (e.g., only during an initial launch window). If retained, gate it behind a timelock/multisig and exclude the AMM pair from being blacklisted.","evidence":"`_transfer` blocks any transfer where `bots[from]` or `bots[to]` is true, and `addBots`/`delBots` are owner-only.","locations":["contracts/Contract.sol:213","contracts/Contract.sol:218","contracts/Contract.sol:296","contracts/Contract.sol:302"]},{"severity":"low","category":"oracle","title":"Tax swap uses amountOutMin=0 enabling MEV sandwiching","exploit_scenario":"When the contract swaps collected taxes, it accepts any output amount. An attacker can front‑run the swap to push price down, causing the swap to execute at a worse rate, then back‑run to restore price, extracting value from the contract’s tax swap (reducing ETH sent to the tax wallet).","recommendation":"Set a minimum output based on an on-chain quote and a configurable slippage tolerance, or use a TWAP/oracle-based guard before swapping.","evidence":"`swapExactTokensForETHSupportingFeeOnTransferTokens` is called with `amountOutMin` set to 0.","locations":["contracts/Contract.sol:272","contracts/Contract.sol:277"]}]}
tokens used
15,583
{
"codex": {
"ran_at": "2026-01-30T12:05:07.346569+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Owner can arbitrarily freeze transfers via a blacklist, and tax swaps accept any output amount which can be MEV-sandwiched to extract value from contract swaps.",
"raw_final": {
"summary": "Owner can arbitrarily freeze transfers via a blacklist, and tax swaps accept any output amount which can be MEV-sandwiched to extract value from contract swaps.",
"findings": [
{
"title": "Owner-controlled blacklist can freeze user funds and halt trading",
"category": "access_control",
"evidence": "`_transfer` blocks any transfer where `bots[from]` or `bots[to]` is true, and `addBots`/`delBots` are owner-only.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:213",
"contracts/Contract.sol:218",
"contracts/Contract.sol:296",
"contracts/Contract.sol:302"
],
"recommendation": "Remove the blacklist or strictly scope it (e.g., only during an initial launch window). If retained, gate it behind a timelock/multisig and exclude the AMM pair from being blacklisted.",
"exploit_scenario": "The owner can add any holder or even the AMM pair to the `bots` list. Because `_transfer` hard-reverts when either sender or recipient is flagged, this lets the owner freeze arbitrary accounts or disable trading after users buy, trapping funds or liquidity."
},
{
"title": "Tax swap uses amountOutMin=0 enabling MEV sandwiching",
"category": "oracle",
"evidence": "`swapExactTokensForETHSupportingFeeOnTransferTokens` is called with `amountOutMin` set to 0.",
"severity": "low",
"locations": [
"contracts/Contract.sol:272",
"contracts/Contract.sol:277"
],
"recommendation": "Set a minimum output based on an on-chain quote and a configurable slippage tolerance, or use a TWAP/oracle-based guard before swapping.",
"exploit_scenario": "When the contract swaps collected taxes, it accepts any output amount. An attacker can front\u2011run the swap to push price down, causing the swap to execute at a worse rate, then back\u2011run to restore price, extracting value from the contract\u2019s tax swap (reducing ETH sent to the tax wallet)."
}
],
"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 0x011e 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x751039fc 00000018: GT 00000019: PUSH2 0x009d 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0xa9059cbb 00000023: GT 00000024: PUSH2 0x0062 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xa9059cbb 0000002e: EQ 0000002f: PUSH2 0x0308 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xbf474bed 00000039: EQ 0000003a: PUSH2 0x0327 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xc9567bf9 00000044: EQ 00000045: PUSH2 0x033c 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xd34628cc 0000004f: EQ 00000050: PUSH2 0x0350 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0xdd62ed3e 0000005a: EQ 0000005b: PUSH2 0x036f 0000005e: JUMPI 0000005f: PUSH0 00000060: DUP1 00000061: REVERT 00000062: JUMPDEST 00000063: DUP1 00000064: PUSH4 0x751039fc 00000069: EQ 0000006a: PUSH2 0x02a4 0000006d: JUMPI 0000006e: DUP1 0000006f: PUSH4 0x7d1db4a5 00000074: EQ 00000075: PUSH2 0x02b8 00000078: JUMPI 00000079: DUP1 0000007a: PUSH4 0x8da5cb5b 0000007f: EQ 00000080: PUSH2 0x02cd 00000083: JUMPI 00000084: DUP1 00000085: PUSH4 0x8f9a55c0 0000008a: EQ 0000008b: PUSH2 0x02f3 0000008e: JUMPI 0000008f: DUP1 00000090: PUSH4 0x95d89b41 00000095: EQ 00000096: PUSH2 0x0129 00000099: JUMPI 0000009a: PUSH0 0000009b: DUP1 0000009c: REVERT 0000009d: JUMPDEST 0000009e: DUP1 0000009f: PUSH4 0x313ce567 000000a4: GT 000000a5: PUSH2 0x00e3 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x313ce567 000000af: EQ 000000b0: PUSH2 0x01e9 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x31c2d847 000000ba: EQ 000000bb: PUSH2 0x0204 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x3bbac579 000000c5: EQ 000000c6: PUSH2 0x0225 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x70a08231 000000d0: EQ 000000d1: PUSH2 0x025c 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0x715018a6 000000db: EQ 000000dc: PUSH2 0x0290 000000df: JUMPI 000000e0: PUSH0 000000e1: DUP1 000000e2: REVERT 000000e3: JUMPDEST 000000e4: DUP1 000000e5: PUSH4 0x06fdde03 000000ea: EQ 000000eb: PUSH2 0x0129 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x095ea7b3 000000f5: EQ 000000f6: PUSH2 0x0164 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x0faee56f 00000100: EQ 00000101: PUSH2 0x0193 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x18160ddd 0000010b: EQ 0000010c: PUSH2 0x01b6 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x23b872dd 00000116: EQ 00000117: PUSH2 0x01ca 0000011a: JUMPI 0000011b: PUSH0 0000011c: DUP1 0000011d: REVERT 0000011e: JUMPDEST 0000011f: CALLDATASIZE 00000120: PUSH2 0x0125 00000123: JUMPI 00000124: STOP 00000125: JUMPDEST 00000126: PUSH0 00000127: DUP1 00000128: REVERT 00000129: JUMPDEST 0000012a: CALLVALUE 0000012b: DUP1 0000012c: ISZERO 0000012d: PUSH2 0x0134 00000130: JUMPI 00000131: PUSH0 00000132: DUP1 00000133: REVERT 00000134: JUMPDEST 00000135: POP 00000136: PUSH1 0x40 00000138: DUP1 00000139: MLOAD 0000013a: DUP1 0000013b: DUP3 0000013c: ADD 0000013d: DUP3 0000013e: MSTORE 0000013f: PUSH1 0x04 00000141: DUP2 00000142: MSTORE 00000143: PUSH4 0x47524f4b 00000148: PUSH1 0xe0 0000014a: SHL 0000014b: PUSH1 0x20 0000014d: DUP3 0000014e: ADD 0000014f: MSTORE 00000150: SWAP1 00000151: MLOAD 00000152: PUSH2 0x015b 00000155: SWAP2 00000156: SWAP1 00000157: PUSH2 0x1505 0000015a: JUMP 0000015b: JUMPDEST 0000015c: PUSH1 0x40 0000015e: MLOAD 0000015f: DUP1 00000160: SWAP2 00000161: SUB 00000162: SWAP1 00000163: RETURN 00000164: JUMPDEST 00000165: CALLVALUE 00000166: DUP1 00000167: ISZERO 00000168: PUSH2 0x016f 0000016b: JUMPI 0000016c: PUSH0 0000016d: DUP1 0000016e: REVERT 0000016f: JUMPDEST 00000170: POP 00000171: PUSH2 0x0183 00000174: PUSH2 0x017e 00000177: CALLDATASIZE 00000178: PUSH1 0x04 0000017a: PUSH2 0x1577 0000017d: JUMP 0000017e: JUMPDEST 0000017f: PUSH2 0x03b3 00000182: JUMP 00000183: JUMPDEST 00000184: PUSH1 0x40 00000186: MLOAD 00000187: SWAP1 00000188: ISZERO 00000189: ISZERO 0000018a: DUP2 0000018b: MSTORE 0000018c: PUSH1 0x20 0000018e: ADD 0000018f: PUSH2 0x015b 00000192: JUMP 00000193: JUMPDEST 00000194: CALLVALUE 00000195: DUP1 00000196: ISZERO 00000197: PUSH2 0x019e 0000019a: JUMPI 0000019b: PUSH0 0000019c: DUP1 0000019d: REVERT 0000019e: JUMPDEST 0000019f: POP 000001a0: PUSH2 0x01a8 000001a3: PUSH1 0x12 000001a5: SLOAD 000001a6: DUP2 000001a7: JUMP 000001a8: JUMPDEST 000001a9: PUSH1 0x40 000001ab: MLOAD 000001ac: SWAP1 000001ad: DUP2 000001ae: MSTORE 000001af: PUSH1 0x20 000001b1: ADD 000001b2: PUSH2 0x015b 000001b5: JUMP 000001b6: JUMPDEST 000001b7: CALLVALUE 000001b8: DUP1 000001b9: ISZERO 000001ba: PUSH2 0x01c1 000001bd: JUMPI 000001be: PUSH0 000001bf: DUP1 000001c0: REVERT 000001c1: JUMPDEST 000001c2: POP 000001c3: PUSH2 0x01a8 000001c6: PUSH2 0x03c9 000001c9: JUMP 000001ca: JUMPDEST 000001cb: CALLVALUE 000001cc: DUP1 000001cd: ISZERO 000001ce: PUSH2 0x01d5 000001d1: JUMPI 000001d2: PUSH0 000001d3: DUP1 000001d4: REVERT 000001d5: JUMPDEST 000001d6: POP 000001d7: PUSH2 0x0183 000001da: PUSH2 0x01e4 000001dd: CALLDATASIZE 000001de: PUSH1 0x04 000001e0: PUSH2 0x15a1 000001e3: JUMP 000001e4: JUMPDEST 000001e5: PUSH2 0x03ea 000001e8: JUMP 000001e9: JUMPDEST 000001ea: CALLVALUE 000001eb: DUP1 000001ec: ISZERO 000001ed: PUSH2 0x01f4 000001f0: JUMPI 000001f1: PUSH0 000001f2: DUP1 000001f3: REVERT 000001f4: JUMPDEST 000001f5: POP 000001f6: PUSH1 0x40 000001f8: MLOAD 000001f9: PUSH1 0x09 000001fb: DUP2 000001fc: MSTORE 000001fd: PUSH1 0x20 000001ff: ADD 00000200: PUSH2 0x015b 00000203: JUMP 00000204: JUMPDEST 00000205: CALLVALUE 00000206: DUP1 00000207: ISZERO 00000208: PUSH2 0x020f 0000020b: JUMPI 0000020c: PUSH0 0000020d: DUP1 0000020e: REVERT 0000020f: JUMPDEST 00000210: POP 00000211: PUSH2 0x0223 00000214: PUSH2 0x021e 00000217: CALLDATASIZE 00000218: PUSH1 0x04 0000021a: PUSH2 0x15f3 0000021d: JUMP 0000021e: JUMPDEST 0000021f: PUSH2 0x0451 00000222: JUMP 00000223: JUMPDEST 00000224: STOP 00000225: JUMPDEST 00000226: CALLVALUE 00000227: DUP1 00000228: ISZERO 00000229: PUSH2 0x0230 0000022c: JUMPI 0000022d: PUSH0 0000022e: DUP1 0000022f: REVERT 00000230: JUMPDEST 00000231: POP 00000232: PUSH2 0x0183 00000235: PUSH2 0x023f 00000238: CALLDATASIZE 00000239: PUSH1 0x04 0000023b: PUSH2 0x16b3 0000023e: JUMP 0000023f: JUMPDEST 00000240: PUSH1 0x01 00000242: PUSH1 0x01 00000244: PUSH1 0xa0 00000246: SHL 00000247: SUB 00000248: AND 00000249: PUSH0 0000024a: SWAP1 0000024b: DUP2 0000024c: MSTORE 0000024d: PUSH1 0x04 0000024f: PUSH1 0x20 00000251: MSTORE 00000252: PUSH1 0x40 00000254: SWAP1 00000255: KECCAK256 00000256: SLOAD 00000257: PUSH1 0xff 00000259: AND 0000025a: SWAP1 0000025b: JUMP 0000025c: JUMPDEST 0000025d: CALLVALUE 0000025e: DUP1 0000025f: ISZERO 00000260: PUSH2 0x0267 00000263: JUMPI 00000264: PUSH0 00000265: DUP1 00000266: REVERT 00000267: JUMPDEST 00000268: POP 00000269: PUSH2 0x01a8 0000026c: PUSH2 0x0276 0000026f: CALLDATASIZE 00000270: PUSH1 0x04 00000272: PUSH2 0x16b3 00000275: JUMP 00000276: JUMPDEST 00000277: PUSH1 0x01 00000279: PUSH1 0x01 0000027b: PUSH1 0xa0 0000027d: SHL 0000027e: SUB 0000027f: AND 00000280: PUSH0 00000281: SWAP1 00000282: DUP2 00000283: MSTORE 00000284: PUSH1 0x01 00000286: PUSH1 0x20 00000288: MSTORE 00000289: PUSH1 0x40 0000028b: SWAP1 0000028c: KECCAK256 0000028d: SLOAD 0000028e: SWAP1 0000028f: JUMP 00000290: JUMPDEST 00000291: CALLVALUE 00000292: DUP1 00000293: ISZERO 00000294: PUSH2 0x029b 00000297: JUMPI 00000298: PUSH0 00000299: DUP1 0000029a: REVERT 0000029b: JUMPDEST 0000029c: POP 0000029d: PUSH2 0x0223 000002a0: PUSH2 0x04eb 000002a3: JUMP 000002a4: JUMPDEST 000002a5: CALLVALUE 000002a6: DUP1 000002a7: ISZERO 000002a8: PUSH2 0x02af 000002ab: JUMPI 000002ac: PUSH0 000002ad: DUP1 000002ae: REVERT 000002af: JUMPDEST 000002b0: POP 000002b1: PUSH2 0x0223 000002b4: PUSH2 0x055c 000002b7: JUMP 000002b8: JUMPDEST 000002b9: CALLVALUE 000002ba: DUP1 000002bb: ISZERO 000002bc: PUSH2 0x02c3 000002bf: JUMPI 000002c0: PUSH0 000002c1: DUP1 000002c2: REVERT 000002c3: JUMPDEST 000002c4: POP 000002c5: PUSH2 0x01a8 000002c8: PUSH1 0x0f 000002ca: SLOAD 000002cb: DUP2 000002cc: JUMP 000002cd: JUMPDEST 000002ce: CALLVALUE 000002cf: DUP1 000002d0: ISZERO 000002d1: PUSH2 0x02d8 000002d4: JUMPI 000002d5: PUSH0 000002d6: DUP1 000002d7: REVERT 000002d8: JUMPDEST 000002d9: POP 000002da: PUSH0 000002db: SLOAD 000002dc: PUSH1 0x40 000002de: MLOAD 000002df: PUSH1 0x01 000002e1: PUSH1 0x01 000002e3: PUSH1 0xa0 000002e5: SHL 000002e6: SUB 000002e7: SWAP1 000002e8: SWAP2 000002e9: AND 000002ea: DUP2 000002eb: MSTORE 000002ec: PUSH1 0x20 000002ee: ADD 000002ef: PUSH2 0x015b 000002f2: JUMP 000002f3: JUMPDEST 000002f4: CALLVALUE 000002f5: DUP1 000002f6: ISZERO 000002f7: PUSH2 0x02fe 000002fa: JUMPI 000002fb: PUSH0 000002fc: DUP1 000002fd: REVERT 000002fe: JUMPDEST 000002ff: POP 00000300: PUSH2 0x01a8 00000303: PUSH1 0x10 00000305: SLOAD 00000306: DUP2 00000307: JUMP 00000308: JUMPDEST 00000309: CALLVALUE 0000030a: DUP1 0000030b: ISZERO 0000030c: PUSH2 0x0313 0000030f: JUMPI 00000310: PUSH0 00000311: DUP1 00000312: REVERT 00000313: JUMPDEST 00000314: POP 00000315: PUSH2 0x0183 00000318: PUSH2 0x0322 0000031b: CALLDATASIZE 0000031c: PUSH1 0x04 0000031e: PUSH2 0x1577 00000321: JUMP 00000322: JUMPDEST 00000323: PUSH2 0x0610 00000326: JUMP 00000327: JUMPDEST 00000328: CALLVALUE 00000329: DUP1 0000032a: ISZERO 0000032b: PUSH2 0x0332 0000032e: JUMPI 0000032f: PUSH0 00000330: DUP1 00000331: REVERT 00000332: JUMPDEST 00000333: POP 00000334: PUSH2 0x01a8 00000337: PUSH1 0x11 00000339: SLOAD 0000033a: DUP2 0000033b: JUMP 0000033c: JUMPDEST 0000033d: CALLVALUE 0000033e: DUP1 0000033f: ISZERO 00000340: PUSH2 0x0347 00000343: JUMPI 00000344: PUSH0 00000345: DUP1 00000346: REVERT 00000347: JUMPDEST 00000348: POP 00000349: PUSH2 0x0223 0000034c: PUSH2 0x061c 0000034f: JUMP 00000350: JUMPDEST 00000351: CALLVALUE 00000352: DUP1 00000353: ISZERO 00000354: PUSH2 0x035b 00000357: JUMPI 00000358: PUSH0 00000359: DUP1 0000035a: REVERT 0000035b: JUMPDEST 0000035c: POP 0000035d: PUSH2 0x0223 00000360: PUSH2 0x036a 00000363: CALLDATASIZE 00000364: PUSH1 0x04 00000366: PUSH2 0x15f3 00000369: JUMP 0000036a: JUMPDEST 0000036b: PUSH2 0x09ca 0000036e: JUMP 0000036f: JUMPDEST 00000370: CALLVALUE 00000371: DUP1 00000372: ISZERO 00000373: PUSH2 0x037a 00000376: JUMPI 00000377: PUSH0 00000378: DUP1 00000379: REVERT 0000037a: JUMPDEST 0000037b: POP 0000037c: PUSH2 0x01a8 0000037f: PUSH2 0x0389 00000382: CALLDATASIZE 00000383: PUSH1 0x04 00000385: PUSH2 0x16ce 00000388: JUMP 00000389: JUMPDEST 0000038a: PUSH1 0x01 0000038c: PUSH1 0x01 0000038e: PUSH1 0xa0 00000390: SHL 00000391: SUB 00000392: SWAP2 00000393: DUP3 00000394: AND 00000395: PUSH0 00000396: SWAP1 00000397: DUP2 00000398: MSTORE 00000399: PUSH1 0x02 0000039b: PUSH1 0x20 0000039d: SWAP1 0000039e: DUP2 0000039f: MSTORE 000003a0: PUSH1 0x40 000003a2: DUP1 000003a3: DUP4 000003a4: KECCAK256 000003a5: SWAP4 000003a6: SWAP1 000003a7: SWAP5 000003a8: AND 000003a9: DUP3 000003aa: MSTORE 000003ab: SWAP2 000003ac: SWAP1 000003ad: SWAP2 000003ae: MSTORE 000003af: KECCAK256 000003b0: SLOAD 000003b1: SWAP1 000003b2: JUMP 000003b3: JUMPDEST 000003b4: PUSH0 000003b5: PUSH2 0x03bf 000003b8: CALLER 000003b9: DUP5 000003ba: DUP5 000003bb: PUSH2 0x0a58 000003be: JUMP 000003bf: JUMPDEST 000003c0: POP 000003c1: PUSH1 0x01 000003c3: JUMPDEST 000003c4: SWAP3 000003c5: SWAP2 000003c6: POP 000003c7: POP 000003c8: JUMP 000003c9: JUMPDEST 000003ca: PUSH0 000003cb: PUSH2 0x03d6 000003ce: PUSH1 0x09 000003d0: PUSH1 0x0a 000003d2: PUSH2 0x17f9 000003d5: JUMP 000003d6: JUMPDEST 000003d7: PUSH2 0x03e5 000003da: SWAP1 000003db: PUSH5 0x019b45a500 000003e1: PUSH2 0x1807 000003e4: JUMP 000003e5: JUMPDEST 000003e6: SWAP1 000003e7: POP 000003e8: SWAP1 000003e9: JUMP 000003ea: JUMPDEST 000003eb: PUSH0 000003ec: PUSH2 0x03f6 000003ef: DUP5 000003f0: DUP5 000003f1: DUP5 000003f2: PUSH2 0x0b7b 000003f5: JUMP 000003f6: JUMPDEST 000003f7: PUSH2 0x0447 000003fa: DUP5 000003fb: CALLER 000003fc: PUSH2 0x0442 000003ff: DUP6 00000400: PUSH1 0x40 00000402: MLOAD 00000403: DUP1 00000404: PUSH1 0x60 00000406: ADD 00000407: PUSH1 0x40 00000409: MSTORE 0000040a: DUP1 0000040b: PUSH1 0x28 0000040d: DUP2 0000040e: MSTORE 0000040f: PUSH1 0x20 00000411: ADD 00000412: PUSH2 0x1999 00000415: PUSH1 0x28 00000417: SWAP2 00000418: CODECOPY 00000419: PUSH1 0x01 0000041b: PUSH1 0x01 0000041d: PUSH1 0xa0 0000041f: SHL 00000420: SUB 00000421: DUP11 00000422: AND 00000423: PUSH0 00000424: SWAP1 00000425: DUP2 00000426: MSTORE 00000427: PUSH1 0x02 00000429: PUSH1 0x20 0000042b: SWAP1 0000042c: DUP2 0000042d: MSTORE 0000042e: PUSH1 0x40 00000430: DUP1 00000431: DUP4 00000432: KECCAK256 00000433: CALLER 00000434: DUP5 00000435: MSTORE 00000436: SWAP1 00000437: SWAP2 00000438: MSTORE 00000439: SWAP1 0000043a: KECCAK256 0000043b: SLOAD 0000043c: SWAP2 0000043d: SWAP1 0000043e: PUSH2 0x1181 00000441: JUMP 00000442: JUMPDEST 00000443: PUSH2 0x0a58 00000446: JUMP 00000447: JUMPDEST 00000448: POP 00000449: PUSH1 0x01 0000044b: SWAP4 0000044c: SWAP3 0000044d: POP 0000044e: POP 0000044f: POP 00000450: JUMP 00000451: JUMPDEST 00000452: PUSH0 00000453: SLOAD 00000454: PUSH1 0x01 00000456: PUSH1 0x01 00000458: PUSH1 0xa0 0000045a: SHL 0000045b: SUB 0000045c: AND 0000045d: CALLER 0000045e: EQ 0000045f: PUSH2 0x0483 00000462: JUMPI 00000463: PUSH1 0x40 00000465: MLOAD 00000466: PUSH3 0x461bcd 0000046a: PUSH1 0xe5 0000046c: SHL 0000046d: DUP2 0000046e: MSTORE 0000046f: PUSH1 0x04 00000471: ADD 00000472: PUSH2 0x047a 00000475: SWAP1 00000476: PUSH2 0x181e 00000479: JUMP 0000047a: JUMPDEST 0000047b: PUSH1 0x40 0000047d: MLOAD 0000047e: DUP1 0000047f: SWAP2 00000480: SUB 00000481: SWAP1 00000482: REVERT 00000483: JUMPDEST 00000484: PUSH0 00000485: JUMPDEST 00000486: DUP2 00000487: MLOAD 00000488: DUP2 00000489: LT 0000048a: ISZERO 0000048b: PUSH2 0x04e7 0000048e: JUMPI 0000048f: PUSH0 00000490: PUSH1 0x04 00000492: PUSH0 00000493: DUP5 00000494: DUP5 00000495: DUP2 00000496: MLOAD 00000497: DUP2 00000498: LT 00000499: PUSH2 0x04a4 0000049c: JUMPI 0000049d: PUSH2 0x04a4 000004a0: PUSH2 0x1853 000004a3: JUMP 000004a4: JUMPDEST 000004a5: PUSH1 0x20 000004a7: SWAP1 000004a8: DUP2 000004a9: MUL 000004aa: SWAP2 000004ab: SWAP1 000004ac: SWAP2 000004ad: ADD 000004ae: DUP2 000004af: ADD 000004b0: MLOAD 000004b1: PUSH1 0x01 000004b3: PUSH1 0x01 000004b5: PUSH1 0xa0 000004b7: SHL 000004b8: SUB 000004b9: AND 000004ba: DUP3 000004bb: MSTORE 000004bc: DUP2 000004bd: ADD 000004be: SWAP2 000004bf: SWAP1 000004c0: SWAP2 000004c1: MSTORE 000004c2: PUSH1 0x40 000004c4: ADD 000004c5: PUSH0 000004c6: KECCAK256 000004c7: DUP1 000004c8: SLOAD 000004c9: PUSH1 0xff 000004cb: NOT 000004cc: AND 000004cd: SWAP2 000004ce: ISZERO 000004cf: ISZERO 000004d0: SWAP2 000004d1: SWAP1 000004d2: SWAP2 000004d3: OR 000004d4: SWAP1 000004d5: SSTORE 000004d6: DUP1 000004d7: PUSH2 0x04df 000004da: DUP2 000004db: PUSH2 0x1867 000004de: JUMP 000004df: JUMPDEST 000004e0: SWAP2 000004e1: POP 000004e2: POP 000004e3: PUSH2 0x0485 000004e6: JUMP 000004e7: JUMPDEST 000004e8: POP 000004e9: POP 000004ea: JUMP 000004eb: JUMPDEST 000004ec: PUSH0 000004ed: SLOAD 000004ee: PUSH1 0x01 000004f0: PUSH1 0x01 000004f2: PUSH1 0xa0 000004f4: SHL 000004f5: SUB 000004f6: AND 000004f7: CALLER 000004f8: EQ 000004f9: PUSH2 0x0514 000004fc: JUMPI 000004fd: PUSH1 0x40 000004ff: MLOAD 00000500: PUSH3 0x461bcd 00000504: PUSH1 0xe5 00000506: SHL 00000507: DUP2 00000508: MSTORE 00000509: PUSH1 0x04 0000050b: ADD 0000050c: PUSH2 0x047a 0000050f: SWAP1 00000510: PUSH2 0x181e 00000513: JUMP 00000514: JUMPDEST 00000515: PUSH0 00000516: DUP1 00000517: SLOAD 00000518: PUSH1 0x40 0000051a: MLOAD 0000051b: PUSH1 0x01 0000051d: PUSH1 0x01 0000051f: PUSH1 0xa0 00000521: SHL 00000522: SUB 00000523: SWAP1 00000524: SWAP2 00000525: AND 00000526: SWAP1 00000527: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000548: SWAP1 00000549: DUP4 0000054a: SWAP1 0000054b: LOG3 0000054c: PUSH0 0000054d: DUP1 0000054e: SLOAD 0000054f: PUSH1 0x01 00000551: PUSH1 0x01 00000553: PUSH1 0xa0 00000555: SHL 00000556: SUB 00000557: NOT 00000558: AND 00000559: SWAP1 0000055a: SSTORE 0000055b: JUMP 0000055c: JUMPDEST 0000055d: PUSH0 0000055e: SLOAD 0000055f: PUSH1 0x01 00000561: PUSH1 0x01 00000563: PUSH1 0xa0 00000565: SHL 00000566: SUB 00000567: AND 00000568: CALLER 00000569: EQ 0000056a: PUSH2 0x0585 0000056d: JUMPI 0000056e: PUSH1 0x40 00000570: MLOAD 00000571: PUSH3 0x461bcd 00000575: PUSH1 0xe5 00000577: SHL 00000578: DUP2 00000579: MSTORE 0000057a: PUSH1 0x04 0000057c: ADD 0000057d: PUSH2 0x047a 00000580: SWAP1 00000581: PUSH2 0x181e 00000584: JUMP 00000585: JUMPDEST 00000586: PUSH2 0x0591 00000589: PUSH1 0x09 0000058b: PUSH1 0x0a 0000058d: PUSH2 0x17f9 00000590: JUMP 00000591: JUMPDEST 00000592: PUSH2 0x05a0 00000595: SWAP1 00000596: PUSH5 0x019b45a500 0000059c: PUSH2 0x1807 0000059f: JUMP 000005a0: JUMPDEST 000005a1: PUSH1 0x0f 000005a3: SSTORE 000005a4: PUSH2 0x05af 000005a7: PUSH1 0x09 000005a9: PUSH1 0x0a 000005ab: PUSH2 0x17f9 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH2 0x05be 000005b3: SWAP1 000005b4: PUSH5 0x019b45a500 000005ba: PUSH2 0x1807 000005bd: JUMP 000005be: JUMPDEST 000005bf: PUSH1 0x10 000005c1: SSTORE 000005c2: PUSH32 0x947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf 000005e3: PUSH2 0x05ee 000005e6: PUSH1 0x09 000005e8: PUSH1 0x0a 000005ea: PUSH2 0x17f9 000005ed: JUMP 000005ee: JUMPDEST 000005ef: PUSH2 0x05fd 000005f2: SWAP1 000005f3: PUSH5 0x019b45a500 000005f9: PUSH2 0x1807 000005fc: JUMP 000005fd: JUMPDEST 000005fe: PUSH1 0x40 00000600: MLOAD 00000601: SWAP1 00000602: DUP2 00000603: MSTORE 00000604: PUSH1 0x20 00000606: ADD 00000607: PUSH1 0x40 00000609: MLOAD 0000060a: DUP1 0000060b: SWAP2 0000060c: SUB 0000060d: SWAP1 0000060e: LOG1 0000060f: JUMP 00000610: JUMPDEST 00000611: PUSH0 00000612: PUSH2 0x03bf 00000615: CALLER 00000616: DUP5 00000617: DUP5 00000618: PUSH2 0x0b7b 0000061b: JUMP 0000061c: JUMPDEST 0000061d: PUSH0 0000061e: SLOAD 0000061f: PUSH1 0x01 00000621: PUSH1 0x01 00000623: PUSH1 0xa0 00000625: SHL 00000626: SUB 00000627: AND 00000628: CALLER 00000629: EQ 0000062a: PUSH2 0x0645 0000062d: JUMPI 0000062e: PUSH1 0x40 00000630: MLOAD 00000631: PUSH3 0x461bcd 00000635: PUSH1 0xe5 00000637: SHL 00000638: DUP2 00000639: MSTORE 0000063a: PUSH1 0x04 0000063c: ADD 0000063d: PUSH2 0x047a 00000640: SWAP1 00000641: PUSH2 0x181e 00000644: JUMP 00000645: JUMPDEST 00000646: PUSH1 0x14 00000648: SLOAD 00000649: PUSH1 0x01 0000064b: PUSH1 0xa0 0000064d: SHL 0000064e: SWAP1 0000064f: DIV 00000650: PUSH1 0xff 00000652: AND 00000653: ISZERO 00000654: PUSH2 0x069f 00000657: JUMPI 00000658: PUSH1 0x40 0000065a: MLOAD 0000065b: PUSH3 0x461bcd 0000065f: PUSH1 0xe5 00000661: SHL 00000662: DUP2 00000663: MSTORE 00000664: PUSH1 0x20 00000666: PUSH1 0x04 00000668: DUP3 00000669: ADD 0000066a: MSTORE 0000066b: PUSH1 0x17 0000066d: PUSH1 0x24 0000066f: DUP3 00000670: ADD 00000671: MSTORE 00000672: PUSH32 0x74726164696e6720697320616c7265616479206f70656e000000000000000000 00000693: PUSH1 0x44 00000695: DUP3 00000696: ADD 00000697: MSTORE 00000698: PUSH1 0x64 0000069a: ADD 0000069b: PUSH2 0x047a 0000069e: JUMP 0000069f: JUMPDEST 000006a0: PUSH1 0x13 000006a2: DUP1 000006a3: SLOAD 000006a4: PUSH1 0x01 000006a6: PUSH1 0x01 000006a8: PUSH1 0xa0 000006aa: SHL 000006ab: SUB 000006ac: NOT 000006ad: AND 000006ae: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 000006c3: SWAP1 000006c4: DUP2 000006c5: OR 000006c6: SWAP1 000006c7: SWAP2 000006c8: SSTORE 000006c9: PUSH2 0x06e9 000006cc: SWAP1 000006cd: ADDRESS 000006ce: SWAP1 000006cf: PUSH2 0x06da 000006d2: PUSH1 0x09 000006d4: PUSH1 0x0a 000006d6: PUSH2 0x17f9 000006d9: JUMP 000006da: JUMPDEST 000006db: PUSH2 0x0442 000006de: SWAP1 000006df: PUSH5 0x019b45a500 000006e5: PUSH2 0x1807 000006e8: JUMP 000006e9: JUMPDEST 000006ea: PUSH1 0x13 000006ec: PUSH0 000006ed: SWAP1 000006ee: SLOAD 000006ef: SWAP1 000006f0: PUSH2 0x0100 000006f3: EXP 000006f4: SWAP1 000006f5: DIV 000006f6: PUSH1 0x01 000006f8: PUSH1 0x01 000006fa: PUSH1 0xa0 000006fc: SHL 000006fd: SUB 000006fe: AND 000006ff: PUSH1 0x01 00000701: PUSH1 0x01 00000703: PUSH1 0xa0 00000705: SHL 00000706: SUB 00000707: AND 00000708: PUSH4 0xc45a0155 0000070d: PUSH1 0x40 0000070f: MLOAD 00000710: DUP2 00000711: PUSH4 0xffffffff 00000716: AND 00000717: PUSH1 0xe0 00000719: SHL 0000071a: DUP2 0000071b: MSTORE 0000071c: PUSH1 0x04 0000071e: ADD 0000071f: PUSH1 0x20 00000721: PUSH1 0x40 00000723: MLOAD 00000724: DUP1 00000725: DUP4 00000726: SUB 00000727: DUP2 00000728: DUP7 00000729: GAS 0000072a: STATICCALL 0000072b: ISZERO 0000072c: DUP1 0000072d: ISZERO 0000072e: PUSH2 0x0739 00000731: JUMPI 00000732: RETURNDATASIZE 00000733: PUSH0 00000734: DUP1 00000735: RETURNDATACOPY 00000736: RETURNDATASIZE 00000737: PUSH0 00000738: REVERT 00000739: JUMPDEST 0000073a: POP 0000073b: POP 0000073c: POP 0000073d: POP 0000073e: PUSH1 0x40 00000740: MLOAD 00000741: RETURNDATASIZE 00000742: PUSH1 0x1f 00000744: NOT 00000745: PUSH1 0x1f 00000747: DUP3 00000748: ADD 00000749: AND 0000074a: DUP3 0000074b: ADD 0000074c: DUP1 0000074d: PUSH1 0x40 0000074f: MSTORE 00000750: POP 00000751: DUP2 00000752: ADD 00000753: SWAP1 00000754: PUSH2 0x075d 00000757: SWAP2 00000758: SWAP1 00000759: PUSH2 0x187f 0000075c: JUMP 0000075d: JUMPDEST 0000075e: PUSH1 0x01 00000760: PUSH1 0x01 00000762: PUSH1 0xa0 00000764: SHL 00000765: SUB 00000766: AND 00000767: PUSH4 0xc9c65396 0000076c: ADDRESS 0000076d: PUSH1 0x13 0000076f: PUSH0 00000770: SWAP1 00000771: SLOAD 00000772: SWAP1 00000773: PUSH2 0x0100 00000776: EXP 00000777: SWAP1 00000778: DIV 00000779: PUSH1 0x01 0000077b: PUSH1 0x01 0000077d: PUSH1 0xa0 0000077f: SHL 00000780: SUB 00000781: AND 00000782: PUSH1 0x01 00000784: PUSH1 0x01 00000786: PUSH1 0xa0 00000788: SHL 00000789: SUB 0000078a: AND 0000078b: PUSH4 0xad5c4648 00000790: PUSH1 0x40 00000792: MLOAD 00000793: DUP2 00000794: PUSH4 0xffffffff 00000799: AND 0000079a: PUSH1 0xe0 0000079c: SHL 0000079d: DUP2 0000079e: MSTORE 0000079f: PUSH1 0x04 000007a1: ADD 000007a2: PUSH1 0x20 000007a4: PUSH1 0x40 000007a6: MLOAD 000007a7: DUP1 000007a8: DUP4 000007a9: SUB 000007aa: DUP2 000007ab: DUP7 000007ac: GAS 000007ad: STATICCALL 000007ae: ISZERO 000007af: DUP1 000007b0: ISZERO 000007b1: PUSH2 0x07bc 000007b4: JUMPI 000007b5: RETURNDATASIZE 000007b6: PUSH0 000007b7: DUP1 000007b8: RETURNDATACOPY 000007b9: RETURNDATASIZE 000007ba: PUSH0 000007bb: REVERT 000007bc: JUMPDEST 000007bd: POP 000007be: POP 000007bf: POP 000007c0: POP 000007c1: PUSH1 0x40 000007c3: MLOAD 000007c4: RETURNDATASIZE 000007c5: PUSH1 0x1f 000007c7: NOT 000007c8: PUSH1 0x1f 000007ca: DUP3 000007cb: ADD 000007cc: AND 000007cd: DUP3 000007ce: ADD 000007cf: DUP1 000007d0: PUSH1 0x40 000007d2: MSTORE 000007d3: POP 000007d4: DUP2 000007d5: ADD 000007d6: SWAP1 000007d7: PUSH2 0x07e0 000007da: SWAP2 000007db: SWAP1 000007dc: PUSH2 0x187f 000007df: JUMP 000007e0: JUMPDEST 000007e1: PUSH1 0x40 000007e3: MLOAD 000007e4: PUSH1 0x01 000007e6: PUSH1 0x01 000007e8: PUSH1 0xe0 000007ea: SHL 000007eb: SUB 000007ec: NOT 000007ed: PUSH1 0xe0 000007ef: DUP6 000007f0: SWAP1 000007f1: SHL 000007f2: AND 000007f3: DUP2 000007f4: MSTORE 000007f5: PUSH1 0x01 000007f7: PUSH1 0x01 000007f9: PUSH1 0xa0 000007fb: SHL 000007fc: SUB 000007fd: SWAP3 000007fe: DUP4 000007ff: AND 00000800: PUSH1 0x04 00000802: DUP3 00000803: ADD 00000804: MSTORE 00000805: SWAP2 00000806: AND 00000807: PUSH1 0x24 00000809: DUP3 0000080a: ADD 0000080b: MSTORE 0000080c: PUSH1 0x44 0000080e: ADD 0000080f: PUSH1 0x20 00000811: PUSH1 0x40 00000813: MLOAD 00000814: DUP1 00000815: DUP4 00000816: SUB 00000817: DUP2 00000818: PUSH0 00000819: DUP8 0000081a: GAS 0000081b: CALL 0000081c: ISZERO 0000081d: DUP1 0000081e: ISZERO 0000081f: PUSH2 0x082a 00000822: JUMPI 00000823: RETURNDATASIZE 00000824: PUSH0 00000825: DUP1 00000826: RETURNDATACOPY 00000827: RETURNDATASIZE 00000828: PUSH0 00000829: REVERT 0000082a: JUMPDEST 0000082b: POP 0000082c: POP 0000082d: POP 0000082e: POP 0000082f: PUSH1 0x40 00000831: MLOAD 00000832: RETURNDATASIZE 00000833: PUSH1 0x1f 00000835: NOT 00000836: PUSH1 0x1f 00000838: DUP3 00000839: ADD 0000083a: AND 0000083b: DUP3 0000083c: ADD 0000083d: DUP1 0000083e: PUSH1 0x40 00000840: MSTORE 00000841: POP 00000842: DUP2 00000843: ADD 00000844: SWAP1 00000845: PUSH2 0x084e 00000848: SWAP2 00000849: SWAP1 0000084a: PUSH2 0x187f 0000084d: JUMP 0000084e: JUMPDEST 0000084f: PUSH1 0x14 00000851: DUP1 00000852: SLOAD 00000853: PUSH1 0x01 00000855: PUSH1 0x01 00000857: PUSH1 0xa0 00000859: SHL 0000085a: SUB 0000085b: SWAP3 0000085c: DUP4 0000085d: AND 0000085e: PUSH1 0x01 00000860: PUSH1 0x01 00000862: PUSH1 0xa0 00000864: SHL 00000865: SUB 00000866: NOT 00000867: SWAP1 00000868: SWAP2 00000869: AND 0000086a: OR 0000086b: SWAP1 0000086c: SSTORE 0000086d: PUSH1 0x13 0000086f: SLOAD 00000870: AND 00000871: PUSH4 0xf305d719 00000876: SELFBALANCE 00000877: ADDRESS 00000878: PUSH2 0x0895 0000087b: DUP2 0000087c: PUSH1 0x01 0000087e: PUSH1 0x01 00000880: PUSH1 0xa0 00000882: SHL 00000883: SUB 00000884: AND 00000885: PUSH0 00000886: SWAP1 00000887: DUP2 00000888: MSTORE 00000889: PUSH1 0x01 0000088b: PUSH1 0x20 0000088d: MSTORE 0000088e: PUSH1 0x40 00000890: SWAP1 00000891: KECCAK256 00000892: SLOAD 00000893: SWAP1 00000894: JUMP 00000895: JUMPDEST 00000896: PUSH0 00000897: DUP1 00000898: PUSH2 0x08a8 0000089b: PUSH0 0000089c: SLOAD 0000089d: PUSH1 0x01 0000089f: PUSH1 0x01 000008a1: PUSH1 0xa0 000008a3: SHL 000008a4: SUB 000008a5: AND 000008a6: SWAP1 000008a7: JUMP 000008a8: JUMPDEST 000008a9: PUSH1 0x40 000008ab: MLOAD 000008ac: PUSH1 0xe0 000008ae: DUP9 000008af: SWAP1 000008b0: SHL 000008b1: PUSH1 0x01 000008b3: PUSH1 0x01 000008b5: PUSH1 0xe0 000008b7: SHL 000008b8: SUB 000008b9: NOT 000008ba: AND 000008bb: DUP2 000008bc: MSTORE 000008bd: PUSH1 0x01 000008bf: PUSH1 0x01 000008c1: PUSH1 0xa0 000008c3: SHL 000008c4: SUB 000008c5: SWAP6 000008c6: DUP7 000008c7: AND 000008c8: PUSH1 0x04 000008ca: DUP3 000008cb: ADD 000008cc: MSTORE 000008cd: PUSH1 0x24 000008cf: DUP2 000008d0: ADD 000008d1: SWAP5 000008d2: SWAP1 000008d3: SWAP5 000008d4: MSTORE 000008d5: PUSH1 0x44 000008d7: DUP5 000008d8: ADD 000008d9: SWAP3 000008da: SWAP1 000008db: SWAP3 000008dc: MSTORE 000008dd: PUSH1 0x64 000008df: DUP4 000008e0: ADD 000008e1: MSTORE 000008e2: SWAP1 000008e3: SWAP2 000008e4: AND 000008e5: PUSH1 0x84 000008e7: DUP3 000008e8: ADD 000008e9: MSTORE 000008ea: TIMESTAMP 000008eb: PUSH1 0xa4 000008ed: DUP3 000008ee: ADD 000008ef: MSTORE 000008f0: PUSH1 0xc4 000008f2: ADD 000008f3: PUSH1 0x60 000008f5: PUSH1 0x40 000008f7: MLOAD 000008f8: DUP1 000008f9: DUP4 000008fa: SUB 000008fb: DUP2 000008fc: DUP6 000008fd: DUP9 000008fe: GAS 000008ff: CALL 00000900: ISZERO 00000901: DUP1 00000902: ISZERO 00000903: PUSH2 0x090e 00000906: JUMPI 00000907: RETURNDATASIZE 00000908: PUSH0 00000909: DUP1 0000090a: RETURNDATACOPY 0000090b: RETURNDATASIZE 0000090c: PUSH0 0000090d: REVERT 0000090e: JUMPDEST 0000090f: POP 00000910: POP 00000911: POP 00000912: POP 00000913: POP 00000914: PUSH1 0x40 00000916: MLOAD 00000917: RETURNDATASIZE 00000918: PUSH1 0x1f 0000091a: NOT 0000091b: PUSH1 0x1f 0000091d: DUP3 0000091e: ADD 0000091f: AND 00000920: DUP3 00000921: ADD 00000922: DUP1 00000923: PUSH1 0x40 00000925: MSTORE 00000926: POP 00000927: DUP2 00000928: ADD 00000929: SWAP1 0000092a: PUSH2 0x0933 0000092d: SWAP2 0000092e: SWAP1 0000092f: PUSH2 0x189a 00000932: JUMP 00000933: JUMPDEST 00000934: POP 00000935: POP 00000936: PUSH1 0x14 00000938: SLOAD 00000939: PUSH1 0x13 0000093b: SLOAD 0000093c: PUSH1 0x40 0000093e: MLOAD 0000093f: PUSH4 0x095ea7b3 00000944: PUSH1 0xe0 00000946: SHL 00000947: DUP2 00000948: MSTORE 00000949: PUSH1 0x01 0000094b: PUSH1 0x01 0000094d: PUSH1 0xa0 0000094f: SHL 00000950: SUB 00000951: SWAP2 00000952: DUP3 00000953: AND 00000954: PUSH1 0x04 00000956: DUP3 00000957: ADD 00000958: MSTORE 00000959: PUSH0 0000095a: NOT 0000095b: PUSH1 0x24 0000095d: DUP3 0000095e: ADD 0000095f: MSTORE 00000960: SWAP2 00000961: AND 00000962: SWAP2 00000963: POP 00000964: PUSH4 0x095ea7b3 00000969: SWAP1 0000096a: PUSH1 0x44 0000096c: ADD 0000096d: PUSH1 0x20 0000096f: PUSH1 0x40 00000971: MLOAD 00000972: DUP1 00000973: DUP4 00000974: SUB 00000975: DUP2 00000976: PUSH0 00000977: DUP8 00000978: GAS 00000979: CALL 0000097a: ISZERO 0000097b: DUP1 0000097c: ISZERO 0000097d: PUSH2 0x0988 00000980: JUMPI 00000981: RETURNDATASIZE 00000982: PUSH0 00000983: DUP1 00000984: RETURNDATACOPY 00000985: RETURNDATASIZE 00000986: PUSH0 00000987: REVERT 00000988: JUMPDEST 00000989: POP 0000098a: POP 0000098b: POP 0000098c: POP 0000098d: PUSH1 0x40 0000098f: MLOAD 00000990: RETURNDATASIZE 00000991: PUSH1 0x1f 00000993: NOT 00000994: PUSH1 0x1f 00000996: DUP3 00000997: ADD 00000998: AND 00000999: DUP3 0000099a: ADD 0000099b: DUP1 0000099c: PUSH1 0x40 0000099e: MSTORE 0000099f: POP 000009a0: DUP2 000009a1: ADD 000009a2: SWAP1 000009a3: PUSH2 0x09ac 000009a6: SWAP2 000009a7: SWAP1 000009a8: PUSH2 0x18c5 000009ab: JUMP 000009ac: JUMPDEST 000009ad: POP 000009ae: PUSH1 0x14 000009b0: DUP1 000009b1: SLOAD 000009b2: PUSH3 0xff00ff 000009b6: PUSH1 0xa0 000009b8: SHL 000009b9: NOT 000009ba: AND 000009bb: PUSH3 0x010001 000009bf: PUSH1 0xa0 000009c1: SHL 000009c2: OR 000009c3: SWAP1 000009c4: SSTORE 000009c5: NUMBER 000009c6: PUSH1 0x06 000009c8: SSTORE 000009c9: JUMP 000009ca: JUMPDEST 000009cb: PUSH0 000009cc: SLOAD 000009cd: PUSH1 0x01 000009cf: PUSH1 0x01 000009d1: PUSH1 0xa0 000009d3: SHL 000009d4: SUB 000009d5: AND 000009d6: CALLER 000009d7: EQ 000009d8: PUSH2 0x09f3 000009db: JUMPI 000009dc: PUSH1 0x40 000009de: MLOAD 000009df: PUSH3 0x461bcd 000009e3: PUSH1 0xe5 000009e5: SHL 000009e6: DUP2 000009e7: MSTORE 000009e8: PUSH1 0x04 000009ea: ADD 000009eb: PUSH2 0x047a 000009ee: SWAP1 000009ef: PUSH2 0x181e 000009f2: JUMP 000009f3: JUMPDEST 000009f4: PUSH0 000009f5: JUMPDEST 000009f6: DUP2 000009f7: MLOAD 000009f8: DUP2 000009f9: LT 000009fa: ISZERO 000009fb: PUSH2 0x04e7 000009fe: JUMPI 000009ff: PUSH1 0x01 00000a01: PUSH1 0x04 00000a03: PUSH0 00000a04: DUP5 00000a05: DUP5 00000a06: DUP2 00000a07: MLOAD 00000a08: DUP2 00000a09: LT 00000a0a: PUSH2 0x0a15 00000a0d: JUMPI 00000a0e: PUSH2 0x0a15 00000a11: PUSH2 0x1853 00000a14: JUMP 00000a15: JUMPDEST 00000a16: PUSH1 0x20 00000a18: SWAP1 00000a19: DUP2 00000a1a: MUL 00000a1b: SWAP2 00000a1c: SWAP1 00000a1d: SWAP2 00000a1e: ADD 00000a1f: DUP2 00000a20: ADD 00000a21: MLOAD 00000a22: PUSH1 0x01 00000a24: PUSH1 0x01 00000a26: PUSH1 0xa0 00000a28: SHL 00000a29: SUB 00000a2a: AND 00000a2b: DUP3 00000a2c: MSTORE 00000a2d: DUP2 00000a2e: ADD 00000a2f: SWAP2 00000a30: SWAP1 00000a31: SWAP2 00000a32: MSTORE 00000a33: PUSH1 0x40 00000a35: ADD 00000a36: PUSH0 00000a37: KECCAK256 00000a38: DUP1 00000a39: SLOAD 00000a3a: PUSH1 0xff 00000a3c: NOT 00000a3d: AND 00000a3e: SWAP2 00000a3f: ISZERO 00000a40: ISZERO 00000a41: SWAP2 00000a42: SWAP1 00000a43: SWAP2 00000a44: OR 00000a45: SWAP1 00000a46: SSTORE 00000a47: DUP1 00000a48: PUSH2 0x0a50 00000a4b: DUP2 00000a4c: PUSH2 0x1867 00000a4f: JUMP 00000a50: JUMPDEST 00000a51: SWAP2 00000a52: POP 00000a53: POP 00000a54: PUSH2 0x09f5 00000a57: JUMP 00000a58: JUMPDEST 00000a59: PUSH1 0x01 00000a5b: PUSH1 0x01 00000a5d: PUSH1 0xa0 00000a5f: SHL 00000a60: SUB 00000a61: DUP4 00000a62: AND 00000a63: PUSH2 0x0aba 00000a66: JUMPI 00000a67: PUSH1 0x40 00000a69: MLOAD 00000a6a: PUSH3 0x461bcd 00000a6e: PUSH1 0xe5 00000a70: SHL 00000a71: DUP2 00000a72: MSTORE 00000a73: PUSH1 0x20 00000a75: PUSH1 0x04 00000a77: DUP3 00000a78: ADD 00000a79: MSTORE 00000a7a: PUSH1 0x24 00000a7c: DUP1 00000a7d: DUP3 00000a7e: ADD 00000a7f: MSTORE 00000a80: PUSH32 0x45524332303a20617070726f76652066726f6d20746865207a65726f20616464 00000aa1: PUSH1 0x44 00000aa3: DUP3 00000aa4: ADD 00000aa5: MSTORE 00000aa6: PUSH4 0x72657373 00000aab: PUSH1 0xe0 00000aad: SHL 00000aae: PUSH1 0x64 00000ab0: DUP3 00000ab1: ADD 00000ab2: MSTORE 00000ab3: PUSH1 0x84 00000ab5: ADD 00000ab6: PUSH2 0x047a 00000ab9: JUMP 00000aba: JUMPDEST 00000abb: PUSH1 0x01 00000abd: PUSH1 0x01 00000abf: PUSH1 0xa0 00000ac1: SHL 00000ac2: SUB 00000ac3: DUP3 00000ac4: AND 00000ac5: PUSH2 0x0b1b 00000ac8: JUMPI 00000ac9: PUSH1 0x40 00000acb: MLOAD 00000acc: PUSH3 0x461bcd 00000ad0: PUSH1 0xe5 00000ad2: SHL 00000ad3: DUP2 00000ad4: MSTORE 00000ad5: PUSH1 0x20 00000ad7: PUSH1 0x04 00000ad9: DUP3 00000ada: ADD 00000adb: MSTORE 00000adc: PUSH1 0x22 00000ade: PUSH1 0x24 00000ae0: DUP3 00000ae1: ADD 00000ae2: MSTORE 00000ae3: PUSH32 0x45524332303a20617070726f766520746f20746865207a65726f206164647265 00000b04: PUSH1 0x44 00000b06: DUP3 00000b07: ADD 00000b08: MSTORE 00000b09: PUSH2 0x7373 00000b0c: PUSH1 0xf0 00000b0e: SHL 00000b0f: PUSH1 0x64 00000b11: DUP3 00000b12: ADD 00000b13: MSTORE 00000b14: PUSH1 0x84 00000b16: ADD 00000b17: PUSH2 0x047a 00000b1a: JUMP 00000b1b: JUMPDEST 00000b1c: PUSH1 0x01 00000b1e: PUSH1 0x01 00000b20: PUSH1 0xa0 00000b22: SHL 00000b23: SUB 00000b24: DUP4 00000b25: DUP2 00000b26: AND 00000b27: PUSH0 00000b28: DUP2 00000b29: DUP2 00000b2a: MSTORE 00000b2b: PUSH1 0x02 00000b2d: PUSH1 0x20 00000b2f: SWAP1 00000b30: DUP2 00000b31: MSTORE 00000b32: PUSH1 0x40 00000b34: DUP1 00000b35: DUP4 00000b36: KECCAK256 00000b37: SWAP5 00000b38: DUP8 00000b39: AND 00000b3a: DUP1 00000b3b: DUP5 00000b3c: MSTORE 00000b3d: SWAP5 00000b3e: DUP3 00000b3f: MSTORE 00000b40: SWAP2 00000b41: DUP3 00000b42: SWAP1 00000b43: KECCAK256 00000b44: DUP6 00000b45: SWAP1 00000b46: SSTORE 00000b47: SWAP1 00000b48: MLOAD 00000b49: DUP5 00000b4a: DUP2 00000b4b: MSTORE 00000b4c: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000b6d: SWAP2 00000b6e: ADD 00000b6f: PUSH1 0x40 00000b71: MLOAD 00000b72: DUP1 00000b73: SWAP2 00000b74: SUB 00000b75: SWAP1 00000b76: LOG3 00000b77: POP 00000b78: POP 00000b79: POP 00000b7a: JUMP 00000b7b: JUMPDEST 00000b7c: PUSH1 0x01 00000b7e: PUSH1 0x01 00000b80: PUSH1 0xa0 00000b82: SHL 00000b83: SUB 00000b84: DUP4 00000b85: AND 00000b86: PUSH2 0x0bdf 00000b89: JUMPI 00000b8a: PUSH1 0x40 00000b8c: MLOAD 00000b8d: PUSH3 0x461bcd 00000b91: PUSH1 0xe5 00000b93: SHL 00000b94: DUP2 00000b95: MSTORE 00000b96: PUSH1 0x20 00000b98: PUSH1 0x04 00000b9a: DUP3 00000b9b: ADD 00000b9c: MSTORE 00000b9d: PUSH1 0x25 00000b9f: PUSH1 0x24 00000ba1: DUP3 00000ba2: ADD 00000ba3: MSTORE 00000ba4: PUSH32 0x45524332303a207472616e736665722066726f6d20746865207a65726f206164 00000bc5: PUSH1 0x44 00000bc7: DUP3 00000bc8: ADD 00000bc9: MSTORE 00000bca: PUSH5 0x6472657373 00000bd0: PUSH1 0xd8 00000bd2: SHL 00000bd3: PUSH1 0x64 00000bd5: DUP3 00000bd6: ADD 00000bd7: MSTORE 00000bd8: PUSH1 0x84 00000bda: ADD 00000bdb: PUSH2 0x047a 00000bde: JUMP 00000bdf: JUMPDEST 00000be0: PUSH1 0x01 00000be2: PUSH1 0x01 00000be4: PUSH1 0xa0 00000be6: SHL 00000be7: SUB 00000be8: DUP3 00000be9: AND 00000bea: PUSH2 0x0c41 00000bed: JUMPI 00000bee: PUSH1 0x40 00000bf0: MLOAD 00000bf1: PUSH3 0x461bcd 00000bf5: PUSH1 0xe5 00000bf7: SHL 00000bf8: DUP2 00000bf9: MSTORE 00000bfa: PUSH1 0x20 00000bfc: PUSH1 0x04 00000bfe: DUP3 00000bff: ADD 00000c00: MSTORE 00000c01: PUSH1 0x23 00000c03: PUSH1 0x24 00000c05: DUP3 00000c06: ADD 00000c07: MSTORE 00000c08: PUSH32 0x45524332303a207472616e7366657220746f20746865207a65726f2061646472 00000c29: PUSH1 0x44 00000c2b: DUP3 00000c2c: ADD 00000c2d: MSTORE 00000c2e: PUSH3 0x657373 00000c32: PUSH1 0xe8 00000c34: SHL 00000c35: PUSH1 0x64 00000c37: DUP3 00000c38: ADD 00000c39: MSTORE 00000c3a: PUSH1 0x84 00000c3c: ADD 00000c3d: PUSH2 0x047a 00000c40: JUMP 00000c41: JUMPDEST 00000c42: PUSH0 00000c43: DUP2 00000c44: GT 00000c45: PUSH2 0x0ca2 00000c48: JUMPI 00000c49: PUSH1 0x40 00000c4b: MLOAD 00000c4c: PUSH3 0x461bcd 00000c50: PUSH1 0xe5 00000c52: SHL 00000c53: DUP2 00000c54: MSTORE 00000c55: PUSH1 0x20 00000c57: PUSH1 0x04 00000c59: DUP3 00000c5a: ADD 00000c5b: MSTORE 00000c5c: PUSH1 0x29 00000c5e: PUSH1 0x24 00000c60: DUP3 00000c61: ADD 00000c62: MSTORE 00000c63: PUSH32 0x5472616e7366657220616d6f756e74206d757374206265206772656174657220 00000c84: PUSH1 0x44 00000c86: DUP3 00000c87: ADD 00000c88: MSTORE 00000c89: PUSH9 0x7468616e207a65726f 00000c93: PUSH1 0xb8 00000c95: SHL 00000c96: PUSH1 0x64 00000c98: DUP3 00000c99: ADD 00000c9a: MSTORE 00000c9b: PUSH1 0x84 00000c9d: ADD 00000c9e: PUSH2 0x047a 00000ca1: JUMP 00000ca2: JUMPDEST 00000ca3: PUSH0 00000ca4: DUP1 00000ca5: SLOAD 00000ca6: PUSH1 0x01 00000ca8: PUSH1 0x01 00000caa: PUSH1 0xa0 00000cac: SHL 00000cad: SUB 00000cae: DUP6 00000caf: DUP2 00000cb0: AND 00000cb1: SWAP2 00000cb2: AND 00000cb3: EQ 00000cb4: DUP1 00000cb5: ISZERO 00000cb6: SWAP1 00000cb7: PUSH2 0x0ccd 00000cba: JUMPI 00000cbb: POP 00000cbc: PUSH0 00000cbd: SLOAD 00000cbe: PUSH1 0x01 00000cc0: PUSH1 0x01 00000cc2: PUSH1 0xa0 00000cc4: SHL 00000cc5: SUB 00000cc6: DUP5 00000cc7: DUP2 00000cc8: AND 00000cc9: SWAP2 00000cca: AND 00000ccb: EQ 00000ccc: ISZERO 00000ccd: JUMPDEST 00000cce: ISZERO 00000ccf: PUSH2 0x1044 00000cd2: JUMPI 00000cd3: PUSH1 0x01 00000cd5: PUSH1 0x01 00000cd7: PUSH1 0xa0 00000cd9: SHL 00000cda: SUB 00000cdb: DUP5 00000cdc: AND 00000cdd: PUSH0 00000cde: SWAP1 00000cdf: DUP2 00000ce0: MSTORE 00000ce1: PUSH1 0x04 00000ce3: PUSH1 0x20 00000ce5: MSTORE 00000ce6: PUSH1 0x40 00000ce8: SWAP1 00000ce9: KECCAK256 00000cea: SLOAD 00000ceb: PUSH1 0xff 00000ced: AND 00000cee: ISZERO 00000cef: DUP1 00000cf0: ISZERO 00000cf1: PUSH2 0x0d12 00000cf4: JUMPI 00000cf5: POP 00000cf6: PUSH1 0x01 00000cf8: PUSH1 0x01 00000cfa: PUSH1 0xa0 00000cfc: SHL 00000cfd: SUB 00000cfe: DUP4 00000cff: AND 00000d00: PUSH0 00000d01: SWAP1 00000d02: DUP2 00000d03: MSTORE 00000d04: PUSH1 0x04 00000d06: PUSH1 0x20 00000d08: MSTORE 00000d09: PUSH1 0x40 00000d0b: SWAP1 00000d0c: KECCAK256 00000d0d: SLOAD 00000d0e: PUSH1 0xff 00000d10: AND 00000d11: ISZERO 00000d12: JUMPDEST 00000d13: PUSH2 0x0d1a 00000d16: JUMPI 00000d17: PUSH0 00000d18: DUP1 00000d19: REVERT 00000d1a: JUMPDEST 00000d1b: PUSH2 0x0d46 00000d1e: PUSH1 0x64 00000d20: PUSH2 0x0d40 00000d23: PUSH1 0x0b 00000d25: SLOAD 00000d26: PUSH1 0x0e 00000d28: SLOAD 00000d29: GT 00000d2a: PUSH2 0x0d35 00000d2d: JUMPI 00000d2e: PUSH1 0x07 00000d30: SLOAD 00000d31: PUSH2 0x0d39 00000d34: JUMP 00000d35: JUMPDEST 00000d36: PUSH1 0x09 00000d38: SLOAD 00000d39: JUMPDEST 00000d3a: DUP6 00000d3b: SWAP1 00000d3c: PUSH2 0x11b9 00000d3f: JUMP 00000d40: JUMPDEST 00000d41: SWAP1 00000d42: PUSH2 0x123e 00000d45: JUMP 00000d46: JUMPDEST 00000d47: PUSH1 0x14 00000d49: SLOAD 00000d4a: SWAP1 00000d4b: SWAP2 00000d4c: POP 00000d4d: PUSH1 0x01 00000d4f: PUSH1 0x01 00000d51: PUSH1 0xa0 00000d53: SHL 00000d54: SUB 00000d55: DUP6 00000d56: DUP2 00000d57: AND 00000d58: SWAP2 00000d59: AND 00000d5a: EQ 00000d5b: DUP1 00000d5c: ISZERO 00000d5d: PUSH2 0x0d74 00000d60: JUMPI 00000d61: POP 00000d62: PUSH1 0x13 00000d64: SLOAD 00000d65: PUSH1 0x01 00000d67: PUSH1 0x01 00000d69: PUSH1 0xa0 00000d6b: SHL 00000d6c: SUB 00000d6d: DUP5 00000d6e: DUP2 00000d6f: AND 00000d70: SWAP2 00000d71: AND 00000d72: EQ 00000d73: ISZERO 00000d74: JUMPDEST 00000d75: DUP1 00000d76: ISZERO 00000d77: PUSH2 0x0d98 00000d7a: JUMPI 00000d7b: POP 00000d7c: PUSH1 0x01 00000d7e: PUSH1 0x01 00000d80: PUSH1 0xa0 00000d82: SHL 00000d83: SUB 00000d84: DUP4 00000d85: AND 00000d86: PUSH0 00000d87: SWAP1 00000d88: DUP2 00000d89: MSTORE 00000d8a: PUSH1 0x03 00000d8c: PUSH1 0x20 00000d8e: MSTORE 00000d8f: PUSH1 0x40 00000d91: SWAP1 00000d92: KECCAK256 00000d93: SLOAD 00000d94: PUSH1 0xff 00000d96: AND 00000d97: ISZERO 00000d98: JUMPDEST 00000d99: ISZERO 00000d9a: PUSH2 0x0e9f 00000d9d: JUMPI 00000d9e: PUSH1 0x0f 00000da0: SLOAD 00000da1: DUP3 00000da2: GT 00000da3: ISZERO 00000da4: PUSH2 0x0def 00000da7: JUMPI 00000da8: PUSH1 0x40 00000daa: MLOAD 00000dab: PUSH3 0x461bcd 00000daf: PUSH1 0xe5 00000db1: SHL 00000db2: DUP2 00000db3: MSTORE 00000db4: PUSH1 0x20 00000db6: PUSH1 0x04 00000db8: DUP3 00000db9: ADD 00000dba: MSTORE 00000dbb: PUSH1 0x19 00000dbd: PUSH1 0x24 00000dbf: DUP3 00000dc0: ADD 00000dc1: MSTORE 00000dc2: PUSH32 0x4578636565647320746865205f6d61785478416d6f756e742e00000000000000 00000de3: PUSH1 0x44 00000de5: DUP3 00000de6: ADD 00000de7: MSTORE 00000de8: PUSH1 0x64 00000dea: ADD 00000deb: PUSH2 0x047a 00000dee: JUMP 00000def: JUMPDEST 00000df0: PUSH1 0x10 00000df2: SLOAD 00000df3: DUP3 00000df4: PUSH2 0x0e11 00000df7: DUP6 00000df8: PUSH1 0x01 00000dfa: PUSH1 0x01 00000dfc: PUSH1 0xa0 00000dfe: SHL 00000dff: SUB 00000e00: AND 00000e01: PUSH0 00000e02: SWAP1 00000e03: DUP2 00000e04: MSTORE 00000e05: PUSH1 0x01 00000e07: PUSH1 0x20 00000e09: MSTORE 00000e0a: PUSH1 0x40 00000e0c: SWAP1 00000e0d: KECCAK256 00000e0e: SLOAD 00000e0f: SWAP1 00000e10: JUMP 00000e11: JUMPDEST 00000e12: PUSH2 0x0e1b 00000e15: SWAP2 00000e16: SWAP1 00000e17: PUSH2 0x18e4 00000e1a: JUMP 00000e1b: JUMPDEST 00000e1c: GT 00000e1d: ISZERO 00000e1e: PUSH2 0x0e69 00000e21: JUMPI 00000e22: PUSH1 0x40 00000e24: MLOAD 00000e25: PUSH3 0x461bcd 00000e29: PUSH1 0xe5 00000e2b: SHL 00000e2c: DUP2 00000e2d: MSTORE 00000e2e: PUSH1 0x20 00000e30: PUSH1 0x04 00000e32: DUP3 00000e33: ADD 00000e34: MSTORE 00000e35: PUSH1 0x1a 00000e37: PUSH1 0x24 00000e39: DUP3 00000e3a: ADD 00000e3b: MSTORE 00000e3c: PUSH32 0x4578636565647320746865206d617857616c6c657453697a652e000000000000 00000e5d: PUSH1 0x44 00000e5f: DUP3 00000e60: ADD 00000e61: MSTORE 00000e62: PUSH1 0x64 00000e64: ADD 00000e65: PUSH2 0x047a 00000e68: JUMP 00000e69: JUMPDEST 00000e6a: NUMBER 00000e6b: PUSH1 0x06 00000e6d: SLOAD 00000e6e: PUSH1 0x03 00000e70: PUSH2 0x0e79 00000e73: SWAP2 00000e74: SWAP1 00000e75: PUSH2 0x18e4 00000e78: JUMP 00000e79: JUMPDEST 00000e7a: GT 00000e7b: ISZERO 00000e7c: PUSH2 0x0e8a 00000e7f: JUMPI 00000e80: DUP3 00000e81: EXTCODESIZE 00000e82: ISZERO 00000e83: PUSH2 0x0e8a 00000e86: JUMPI 00000e87: PUSH0 00000e88: DUP1 00000e89: REVERT 00000e8a: JUMPDEST 00000e8b: PUSH1 0x0e 00000e8d: DUP1 00000e8e: SLOAD 00000e8f: SWAP1 00000e90: PUSH0 00000e91: PUSH2 0x0e99 00000e94: DUP4 00000e95: PUSH2 0x1867 00000e98: JUMP 00000e99: JUMPDEST 00000e9a: SWAP2 00000e9b: SWAP1 00000e9c: POP 00000e9d: SSTORE 00000e9e: POP 00000e9f: JUMPDEST 00000ea0: PUSH1 0x14 00000ea2: SLOAD 00000ea3: PUSH1 0x01 00000ea5: PUSH1 0x01 00000ea7: PUSH1 0xa0 00000ea9: SHL 00000eaa: SUB 00000eab: DUP5 00000eac: DUP2 00000ead: AND 00000eae: SWAP2 00000eaf: AND 00000eb0: EQ 00000eb1: DUP1 00000eb2: ISZERO 00000eb3: SWAP1 00000eb4: PUSH2 0x0ed5 00000eb7: JUMPI 00000eb8: POP 00000eb9: PUSH1 0x01 00000ebb: PUSH1 0x01 00000ebd: PUSH1 0xa0 00000ebf: SHL 00000ec0: SUB 00000ec1: DUP4 00000ec2: AND 00000ec3: PUSH0 00000ec4: SWAP1 00000ec5: DUP2 00000ec6: MSTORE 00000ec7: PUSH1 0x03 00000ec9: PUSH1 0x20 00000ecb: MSTORE 00000ecc: PUSH1 0x40 00000ece: SWAP1 00000ecf: KECCAK256 00000ed0: SLOAD 00000ed1: PUSH1 0xff 00000ed3: AND 00000ed4: ISZERO 00000ed5: JUMPDEST 00000ed6: ISZERO 00000ed7: PUSH2 0x0f54 00000eda: JUMPI 00000edb: PUSH1 0x10 00000edd: SLOAD 00000ede: DUP3 00000edf: PUSH2 0x0efc 00000ee2: DUP6 00000ee3: PUSH1 0x01 00000ee5: PUSH1 0x01 00000ee7: PUSH1 0xa0 00000ee9: SHL 00000eea: SUB 00000eeb: AND 00000eec: PUSH0 00000eed: SWAP1 00000eee: DUP2 00000eef: MSTORE 00000ef0: PUSH1 0x01 00000ef2: PUSH1 0x20 00000ef4: MSTORE 00000ef5: PUSH1 0x40 00000ef7: SWAP1 00000ef8: KECCAK256 00000ef9: SLOAD 00000efa: SWAP1 00000efb: JUMP 00000efc: JUMPDEST 00000efd: PUSH2 0x0f06 00000f00: SWAP2 00000f01: SWAP1 00000f02: PUSH2 0x18e4 00000f05: JUMP 00000f06: JUMPDEST 00000f07: GT 00000f08: ISZERO 00000f09: PUSH2 0x0f54 00000f0c: JUMPI 00000f0d: PUSH1 0x40 00000f0f: MLOAD 00000f10: PUSH3 0x461bcd 00000f14: PUSH1 0xe5 00000f16: SHL 00000f17: DUP2 00000f18: MSTORE 00000f19: PUSH1 0x20 00000f1b: PUSH1 0x04 00000f1d: DUP3 00000f1e: ADD 00000f1f: MSTORE 00000f20: PUSH1 0x1a 00000f22: PUSH1 0x24 00000f24: DUP3 00000f25: ADD 00000f26: MSTORE 00000f27: PUSH32 0x4578636565647320746865206d617857616c6c657453697a652e000000000000 00000f48: PUSH1 0x44 00000f4a: DUP3 00000f4b: ADD 00000f4c: MSTORE 00000f4d: PUSH1 0x64 00000f4f: ADD 00000f50: PUSH2 0x047a 00000f53: JUMP 00000f54: JUMPDEST 00000f55: PUSH1 0x14 00000f57: SLOAD 00000f58: PUSH1 0x01 00000f5a: PUSH1 0x01 00000f5c: PUSH1 0xa0 00000f5e: SHL 00000f5f: SUB 00000f60: DUP5 00000f61: DUP2 00000f62: AND 00000f63: SWAP2 00000f64: AND 00000f65: EQ 00000f66: DUP1 00000f67: ISZERO 00000f68: PUSH2 0x0f7a 00000f6b: JUMPI 00000f6c: POP 00000f6d: PUSH1 0x01 00000f6f: PUSH1 0x01 00000f71: PUSH1 0xa0 00000f73: SHL 00000f74: SUB 00000f75: DUP5 00000f76: AND 00000f77: ADDRESS 00000f78: EQ 00000f79: ISZERO 00000f7a: JUMPDEST 00000f7b: ISZERO 00000f7c: PUSH2 0x0fa7 00000f7f: JUMPI 00000f80: PUSH2 0x0fa4 00000f83: PUSH1 0x64 00000f85: PUSH2 0x0d40 00000f88: PUSH1 0x0c 00000f8a: SLOAD 00000f8b: PUSH1 0x0e 00000f8d: SLOAD 00000f8e: GT 00000f8f: PUSH2 0x0f9a 00000f92: JUMPI 00000f93: PUSH1 0x08 00000f95: SLOAD 00000f96: PUSH2 0x0d39 00000f99: JUMP 00000f9a: JUMPDEST 00000f9b: PUSH1 0x0a 00000f9d: SLOAD 00000f9e: DUP6 00000f9f: SWAP1 00000fa0: PUSH2 0x11b9 00000fa3: JUMP 00000fa4: JUMPDEST 00000fa5: SWAP1 00000fa6: POP 00000fa7: JUMPDEST 00000fa8: ADDRESS 00000fa9: PUSH0 00000faa: SWAP1 00000fab: DUP2 00000fac: MSTORE 00000fad: PUSH1 0x01 00000faf: PUSH1 0x20 00000fb1: MSTORE 00000fb2: PUSH1 0x40 00000fb4: SWAP1 00000fb5: KECCAK256 00000fb6: SLOAD 00000fb7: PUSH1 0x14 00000fb9: SLOAD 00000fba: PUSH1 0x01 00000fbc: PUSH1 0xa8 00000fbe: SHL 00000fbf: SWAP1 00000fc0: DIV 00000fc1: PUSH1 0xff 00000fc3: AND 00000fc4: ISZERO 00000fc5: DUP1 00000fc6: ISZERO 00000fc7: PUSH2 0x0fdd 00000fca: JUMPI 00000fcb: POP 00000fcc: PUSH1 0x14 00000fce: SLOAD 00000fcf: PUSH1 0x01 00000fd1: PUSH1 0x01 00000fd3: PUSH1 0xa0 00000fd5: SHL 00000fd6: SUB 00000fd7: DUP6 00000fd8: DUP2 00000fd9: AND 00000fda: SWAP2 00000fdb: AND 00000fdc: EQ 00000fdd: JUMPDEST 00000fde: DUP1 00000fdf: ISZERO 00000fe0: PUSH2 0x0ff2 00000fe3: JUMPI 00000fe4: POP 00000fe5: PUSH1 0x14 00000fe7: SLOAD 00000fe8: PUSH1 0x01 00000fea: PUSH1 0xb0 00000fec: SHL 00000fed: SWAP1 00000fee: DIV 00000fef: PUSH1 0xff 00000ff1: AND 00000ff2: JUMPDEST 00000ff3: DUP1 00000ff4: ISZERO 00000ff5: PUSH2 0x0fff 00000ff8: JUMPI 00000ff9: POP 00000ffa: PUSH1 0x11 00000ffc: SLOAD 00000ffd: DUP2 00000ffe: GT 00000fff: JUMPDEST 00001000: DUP1 00001001: ISZERO 00001002: PUSH2 0x100e 00001005: JUMPI 00001006: POP 00001007: PUSH1 0x0d 00001009: SLOAD 0000100a: PUSH1 0x0e 0000100c: SLOAD 0000100d: GT 0000100e: JUMPDEST 0000100f: ISZERO 00001010: PUSH2 0x1042 00001013: JUMPI 00001014: PUSH2 0x1030 00001017: PUSH2 0x102b 0000101a: DUP5 0000101b: PUSH2 0x1026 0000101e: DUP5 0000101f: PUSH1 0x12 00001021: SLOAD 00001022: PUSH2 0x127f 00001025: JUMP 00001026: JUMPDEST 00001027: PUSH2 0x127f 0000102a: JUMP 0000102b: JUMPDEST 0000102c: PUSH2 0x1293 0000102f: JUMP 00001030: JUMPDEST 00001031: SELFBALANCE 00001032: DUP1 00001033: ISZERO 00001034: PUSH2 0x1040 00001037: JUMPI 00001038: PUSH2 0x1040 0000103b: SELFBALANCE 0000103c: PUSH2 0x1403 0000103f: JUMP 00001040: JUMPDEST 00001041: POP 00001042: JUMPDEST 00001043: POP 00001044: JUMPDEST 00001045: DUP1 00001046: ISZERO 00001047: PUSH2 0x10bc 0000104a: JUMPI 0000104b: ADDRESS 0000104c: PUSH0 0000104d: SWAP1 0000104e: DUP2 0000104f: MSTORE 00001050: PUSH1 0x01 00001052: PUSH1 0x20 00001054: MSTORE 00001055: PUSH1 0x40 00001057: SWAP1 00001058: KECCAK256 00001059: SLOAD 0000105a: PUSH2 0x1063 0000105d: SWAP1 0000105e: DUP3 0000105f: PUSH2 0x143a 00001062: JUMP 00001063: JUMPDEST 00001064: ADDRESS 00001065: PUSH0 00001066: DUP2 00001067: DUP2 00001068: MSTORE 00001069: PUSH1 0x01 0000106b: PUSH1 0x20 0000106d: MSTORE 0000106e: PUSH1 0x40 00001070: SWAP1 00001071: DUP2 00001072: SWAP1 00001073: KECCAK256 00001074: SWAP3 00001075: SWAP1 00001076: SWAP3 00001077: SSTORE 00001078: SWAP1 00001079: MLOAD 0000107a: PUSH1 0x01 0000107c: PUSH1 0x01 0000107e: PUSH1 0xa0 00001080: SHL 00001081: SUB 00001082: DUP7 00001083: AND 00001084: SWAP1 00001085: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000010a6: SWAP1 000010a7: PUSH2 0x10b3 000010aa: SWAP1 000010ab: DUP6 000010ac: DUP2 000010ad: MSTORE 000010ae: PUSH1 0x20 000010b0: ADD 000010b1: SWAP1 000010b2: JUMP 000010b3: JUMPDEST 000010b4: PUSH1 0x40 000010b6: MLOAD 000010b7: DUP1 000010b8: SWAP2 000010b9: SUB 000010ba: SWAP1 000010bb: LOG3 000010bc: JUMPDEST 000010bd: PUSH1 0x01 000010bf: PUSH1 0x01 000010c1: PUSH1 0xa0 000010c3: SHL 000010c4: SUB 000010c5: DUP5 000010c6: AND 000010c7: PUSH0 000010c8: SWAP1 000010c9: DUP2 000010ca: MSTORE 000010cb: PUSH1 0x01 000010cd: PUSH1 0x20 000010cf: MSTORE 000010d0: PUSH1 0x40 000010d2: SWAP1 000010d3: KECCAK256 000010d4: SLOAD 000010d5: PUSH2 0x10de 000010d8: SWAP1 000010d9: DUP4 000010da: PUSH2 0x1498 000010dd: JUMP 000010de: JUMPDEST 000010df: PUSH1 0x01 000010e1: PUSH1 0x01 000010e3: PUSH1 0xa0 000010e5: SHL 000010e6: SUB 000010e7: DUP6 000010e8: AND 000010e9: PUSH0 000010ea: SWAP1 000010eb: DUP2 000010ec: MSTORE 000010ed: PUSH1 0x01 000010ef: PUSH1 0x20 000010f1: MSTORE 000010f2: PUSH1 0x40 000010f4: SWAP1 000010f5: KECCAK256 000010f6: SSTORE 000010f7: PUSH2 0x1121 000010fa: PUSH2 0x1103 000010fd: DUP4 000010fe: DUP4 000010ff: PUSH2 0x1498 00001102: JUMP 00001103: JUMPDEST 00001104: PUSH1 0x01 00001106: PUSH1 0x01 00001108: PUSH1 0xa0 0000110a: SHL 0000110b: SUB 0000110c: DUP6 0000110d: AND 0000110e: PUSH0 0000110f: SWAP1 00001110: DUP2 00001111: MSTORE 00001112: PUSH1 0x01 00001114: PUSH1 0x20 00001116: MSTORE 00001117: PUSH1 0x40 00001119: SWAP1 0000111a: KECCAK256 0000111b: SLOAD 0000111c: SWAP1 0000111d: PUSH2 0x143a 00001120: JUMP 00001121: JUMPDEST 00001122: PUSH1 0x01 00001124: PUSH1 0x01 00001126: PUSH1 0xa0 00001128: SHL 00001129: SUB 0000112a: DUP1 0000112b: DUP6 0000112c: AND 0000112d: PUSH0 0000112e: DUP2 0000112f: DUP2 00001130: MSTORE 00001131: PUSH1 0x01 00001133: PUSH1 0x20 00001135: MSTORE 00001136: PUSH1 0x40 00001138: SWAP1 00001139: KECCAK256 0000113a: SWAP3 0000113b: SWAP1 0000113c: SWAP3 0000113d: SSTORE 0000113e: DUP6 0000113f: AND 00001140: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001161: PUSH2 0x116a 00001164: DUP6 00001165: DUP6 00001166: PUSH2 0x1498 00001169: JUMP 0000116a: JUMPDEST 0000116b: PUSH1 0x40 0000116d: MLOAD 0000116e: SWAP1 0000116f: DUP2 00001170: MSTORE 00001171: PUSH1 0x20 00001173: ADD 00001174: PUSH1 0x40 00001176: MLOAD 00001177: DUP1 00001178: SWAP2 00001179: SUB 0000117a: SWAP1 0000117b: LOG3 0000117c: POP 0000117d: POP 0000117e: POP 0000117f: POP 00001180: JUMP 00001181: JUMPDEST 00001182: PUSH0 00001183: DUP2 00001184: DUP5 00001185: DUP5 00001186: GT 00001187: ISZERO 00001188: PUSH2 0x11a4 0000118b: JUMPI 0000118c: PUSH1 0x40 0000118e: MLOAD 0000118f: PUSH3 0x461bcd 00001193: PUSH1 0xe5 00001195: SHL 00001196: DUP2 00001197: MSTORE 00001198: PUSH1 0x04 0000119a: ADD 0000119b: PUSH2 0x047a 0000119e: SWAP2 0000119f: SWAP1 000011a0: PUSH2 0x1505 000011a3: JUMP 000011a4: JUMPDEST 000011a5: POP 000011a6: PUSH0 000011a7: PUSH2 0x11b0 000011aa: DUP5 000011ab: DUP7 000011ac: PUSH2 0x18f7 000011af: JUMP 000011b0: JUMPDEST 000011b1: SWAP6 000011b2: SWAP5 000011b3: POP 000011b4: POP 000011b5: POP 000011b6: POP 000011b7: POP 000011b8: JUMP 000011b9: JUMPDEST 000011ba: PUSH0 000011bb: DUP3 000011bc: PUSH0 000011bd: SUB 000011be: PUSH2 0x11c8 000011c1: JUMPI 000011c2: POP 000011c3: PUSH0 000011c4: PUSH2 0x03c3 000011c7: JUMP 000011c8: JUMPDEST 000011c9: PUSH0 000011ca: PUSH2 0x11d3 000011cd: DUP4 000011ce: DUP6 000011cf: PUSH2 0x1807 000011d2: JUMP 000011d3: JUMPDEST 000011d4: SWAP1 000011d5: POP 000011d6: DUP3 000011d7: PUSH2 0x11e0 000011da: DUP6 000011db: DUP4 000011dc: PUSH2 0x190a 000011df: JUMP 000011e0: JUMPDEST 000011e1: EQ 000011e2: PUSH2 0x1237 000011e5: JUMPI 000011e6: PUSH1 0x40 000011e8: MLOAD 000011e9: PUSH3 0x461bcd 000011ed: PUSH1 0xe5 000011ef: SHL 000011f0: DUP2 000011f1: MSTORE 000011f2: PUSH1 0x20 000011f4: PUSH1 0x04 000011f6: DUP3 000011f7: ADD 000011f8: MSTORE 000011f9: PUSH1 0x21 000011fb: PUSH1 0x24 000011fd: DUP3 000011fe: ADD 000011ff: MSTORE 00001200: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f 00001221: PUSH1 0x44 00001223: DUP3 00001224: ADD 00001225: MSTORE 00001226: PUSH1 0x77 00001228: PUSH1 0xf8 0000122a: SHL 0000122b: PUSH1 0x64 0000122d: DUP3 0000122e: ADD 0000122f: MSTORE 00001230: PUSH1 0x84 00001232: ADD 00001233: PUSH2 0x047a 00001236: JUMP 00001237: JUMPDEST 00001238: SWAP4 00001239: SWAP3 0000123a: POP 0000123b: POP 0000123c: POP 0000123d: JUMP 0000123e: JUMPDEST 0000123f: PUSH0 00001240: PUSH2 0x1237 00001243: DUP4 00001244: DUP4 00001245: PUSH1 0x40 00001247: MLOAD 00001248: DUP1 00001249: PUSH1 0x40 0000124b: ADD 0000124c: PUSH1 0x40 0000124e: MSTORE 0000124f: DUP1 00001250: PUSH1 0x1a 00001252: DUP2 00001253: MSTORE 00001254: PUSH1 0x20 00001256: ADD 00001257: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00001278: DUP2 00001279: MSTORE 0000127a: POP 0000127b: PUSH2 0x14d9 0000127e: JUMP 0000127f: JUMPDEST 00001280: PUSH0 00001281: DUP2 00001282: DUP4 00001283: GT 00001284: PUSH2 0x128d 00001287: JUMPI 00001288: DUP3 00001289: PUSH2 0x1237 0000128c: JUMP 0000128d: JUMPDEST 0000128e: POP 0000128f: SWAP2 00001290: SWAP1 00001291: POP 00001292: JUMP 00001293: JUMPDEST 00001294: PUSH1 0x14 00001296: DUP1 00001297: SLOAD 00001298: PUSH1 0xff 0000129a: PUSH1 0xa8 0000129c: SHL 0000129d: NOT 0000129e: AND 0000129f: PUSH1 0x01 000012a1: PUSH1 0xa8 000012a3: SHL 000012a4: OR 000012a5: SWAP1 000012a6: SSTORE 000012a7: PUSH1 0x40 000012a9: DUP1 000012aa: MLOAD 000012ab: PUSH1 0x02 000012ad: DUP1 000012ae: DUP3 000012af: MSTORE 000012b0: PUSH1 0x60 000012b2: DUP3 000012b3: ADD 000012b4: DUP4 000012b5: MSTORE 000012b6: PUSH0 000012b7: SWAP3 000012b8: PUSH1 0x20 000012ba: DUP4 000012bb: ADD 000012bc: SWAP1 000012bd: DUP1 000012be: CALLDATASIZE 000012bf: DUP4 000012c0: CALLDATACOPY 000012c1: ADD 000012c2: SWAP1 000012c3: POP 000012c4: POP 000012c5: SWAP1 000012c6: POP 000012c7: ADDRESS 000012c8: DUP2 000012c9: PUSH0 000012ca: DUP2 000012cb: MLOAD 000012cc: DUP2 000012cd: LT 000012ce: PUSH2 0x12d9 000012d1: JUMPI 000012d2: PUSH2 0x12d9 000012d5: PUSH2 0x1853 000012d8: JUMP 000012d9: JUMPDEST 000012da: PUSH1 0x01 000012dc: PUSH1 0x01 000012de: PUSH1 0xa0 000012e0: SHL 000012e1: SUB 000012e2: SWAP3 000012e3: DUP4 000012e4: AND 000012e5: PUSH1 0x20 000012e7: SWAP2 000012e8: DUP3 000012e9: MUL 000012ea: SWAP3 000012eb: SWAP1 000012ec: SWAP3 000012ed: ADD 000012ee: DUP2 000012ef: ADD 000012f0: SWAP2 000012f1: SWAP1 000012f2: SWAP2 000012f3: MSTORE 000012f4: PUSH1 0x13 000012f6: SLOAD 000012f7: PUSH1 0x40 000012f9: DUP1 000012fa: MLOAD 000012fb: PUSH4 0x15ab88c9 00001300: PUSH1 0xe3 00001302: SHL 00001303: DUP2 00001304: MSTORE 00001305: SWAP1 00001306: MLOAD 00001307: SWAP2 00001308: SWAP1 00001309: SWAP4 0000130a: AND 0000130b: SWAP3 0000130c: PUSH4 0xad5c4648 00001311: SWAP3 00001312: PUSH1 0x04 00001314: DUP1 00001315: DUP4 00001316: ADD 00001317: SWAP4 00001318: SWAP2 00001319: SWAP3 0000131a: DUP3 0000131b: SWAP1 0000131c: SUB 0000131d: ADD 0000131e: DUP2 0000131f: DUP7 00001320: GAS 00001321: STATICCALL 00001322: ISZERO 00001323: DUP1 00001324: ISZERO 00001325: PUSH2 0x1330 00001328: JUMPI 00001329: RETURNDATASIZE 0000132a: PUSH0 0000132b: DUP1 0000132c: RETURNDATACOPY 0000132d: RETURNDATASIZE 0000132e: PUSH0 0000132f: REVERT 00001330: JUMPDEST 00001331: POP 00001332: POP 00001333: POP 00001334: POP 00001335: PUSH1 0x40 00001337: MLOAD 00001338: RETURNDATASIZE 00001339: PUSH1 0x1f 0000133b: NOT 0000133c: PUSH1 0x1f 0000133e: DUP3 0000133f: ADD 00001340: AND 00001341: DUP3 00001342: ADD 00001343: DUP1 00001344: PUSH1 0x40 00001346: MSTORE 00001347: POP 00001348: DUP2 00001349: ADD 0000134a: SWAP1 0000134b: PUSH2 0x1354 0000134e: SWAP2 0000134f: SWAP1 00001350: PUSH2 0x187f 00001353: JUMP 00001354: JUMPDEST 00001355: DUP2 00001356: PUSH1 0x01 00001358: DUP2 00001359: MLOAD 0000135a: DUP2 0000135b: LT 0000135c: PUSH2 0x1367 0000135f: JUMPI 00001360: PUSH2 0x1367 00001363: PUSH2 0x1853 00001366: JUMP 00001367: JUMPDEST 00001368: PUSH1 0x01 0000136a: PUSH1 0x01 0000136c: PUSH1 0xa0 0000136e: SHL 0000136f: SUB 00001370: SWAP3 00001371: DUP4 00001372: AND 00001373: PUSH1 0x20 00001375: SWAP2 00001376: DUP3 00001377: MUL 00001378: SWAP3 00001379: SWAP1 0000137a: SWAP3 0000137b: ADD 0000137c: ADD 0000137d: MSTORE 0000137e: PUSH1 0x13 00001380: SLOAD 00001381: PUSH2 0x138d 00001384: SWAP2 00001385: ADDRESS 00001386: SWAP2 00001387: AND 00001388: DUP5 00001389: PUSH2 0x0a58 0000138c: JUMP 0000138d: JUMPDEST 0000138e: PUSH1 0x13 00001390: SLOAD 00001391: PUSH1 0x40 00001393: MLOAD 00001394: PUSH4 0x791ac947 00001399: PUSH1 0xe0 0000139b: SHL 0000139c: DUP2 0000139d: MSTORE 0000139e: PUSH1 0x01 000013a0: PUSH1 0x01 000013a2: PUSH1 0xa0 000013a4: SHL 000013a5: SUB 000013a6: SWAP1 000013a7: SWAP2 000013a8: AND 000013a9: SWAP1 000013aa: PUSH4 0x791ac947 000013af: SWAP1 000013b0: PUSH2 0x13c5 000013b3: SWAP1 000013b4: DUP6 000013b5: SWAP1 000013b6: PUSH0 000013b7: SWAP1 000013b8: DUP7 000013b9: SWAP1 000013ba: ADDRESS 000013bb: SWAP1 000013bc: TIMESTAMP 000013bd: SWAP1 000013be: PUSH1 0x04 000013c0: ADD 000013c1: PUSH2 0x1929 000013c4: JUMP 000013c5: JUMPDEST 000013c6: PUSH0 000013c7: PUSH1 0x40 000013c9: MLOAD 000013ca: DUP1 000013cb: DUP4 000013cc: SUB 000013cd: DUP2 000013ce: PUSH0 000013cf: DUP8 000013d0: DUP1 000013d1: EXTCODESIZE 000013d2: ISZERO 000013d3: DUP1 000013d4: ISZERO 000013d5: PUSH2 0x13dc 000013d8: JUMPI 000013d9: PUSH0 000013da: DUP1 000013db: REVERT 000013dc: JUMPDEST 000013dd: POP 000013de: GAS 000013df: CALL 000013e0: ISZERO 000013e1: DUP1 000013e2: ISZERO 000013e3: PUSH2 0x13ee 000013e6: JUMPI 000013e7: RETURNDATASIZE 000013e8: PUSH0 000013e9: DUP1 000013ea: RETURNDATACOPY 000013eb: RETURNDATASIZE 000013ec: PUSH0 000013ed: REVERT 000013ee: JUMPDEST 000013ef: POP 000013f0: POP 000013f1: PUSH1 0x14 000013f3: DUP1 000013f4: SLOAD 000013f5: PUSH1 0xff 000013f7: PUSH1 0xa8 000013f9: SHL 000013fa: NOT 000013fb: AND 000013fc: SWAP1 000013fd: SSTORE 000013fe: POP 000013ff: POP 00001400: POP 00001401: POP 00001402: JUMP 00001403: JUMPDEST 00001404: PUSH1 0x05 00001406: SLOAD 00001407: PUSH1 0x40 00001409: MLOAD 0000140a: PUSH1 0x01 0000140c: PUSH1 0x01 0000140e: PUSH1 0xa0 00001410: SHL 00001411: SUB 00001412: SWAP1 00001413: SWAP2 00001414: AND 00001415: SWAP1 00001416: DUP3 00001417: ISZERO 00001418: PUSH2 0x08fc 0000141b: MUL 0000141c: SWAP1 0000141d: DUP4 0000141e: SWAP1 0000141f: PUSH0 00001420: DUP2 00001421: DUP2 00001422: DUP2 00001423: DUP6 00001424: DUP9 00001425: DUP9 00001426: CALL 00001427: SWAP4 00001428: POP 00001429: POP 0000142a: POP 0000142b: POP 0000142c: ISZERO 0000142d: DUP1 0000142e: ISZERO 0000142f: PUSH2 0x04e7 00001432: JUMPI 00001433: RETURNDATASIZE 00001434: PUSH0 00001435: DUP1 00001436: RETURNDATACOPY 00001437: RETURNDATASIZE 00001438: PUSH0 00001439: REVERT 0000143a: JUMPDEST 0000143b: PUSH0 0000143c: DUP1 0000143d: PUSH2 0x1446 00001440: DUP4 00001441: DUP6 00001442: PUSH2 0x18e4 00001445: JUMP 00001446: JUMPDEST 00001447: SWAP1 00001448: POP 00001449: DUP4 0000144a: DUP2 0000144b: LT 0000144c: ISZERO 0000144d: PUSH2 0x1237 00001450: JUMPI 00001451: PUSH1 0x40 00001453: MLOAD 00001454: PUSH3 0x461bcd 00001458: PUSH1 0xe5 0000145a: SHL 0000145b: DUP2 0000145c: MSTORE 0000145d: PUSH1 0x20 0000145f: PUSH1 0x04 00001461: DUP3 00001462: ADD 00001463: MSTORE 00001464: PUSH1 0x1b 00001466: PUSH1 0x24 00001468: DUP3 00001469: ADD 0000146a: MSTORE 0000146b: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 0000148c: PUSH1 0x44 0000148e: DUP3 0000148f: ADD 00001490: MSTORE 00001491: PUSH1 0x64 00001493: ADD 00001494: PUSH2 0x047a 00001497: JUMP 00001498: JUMPDEST 00001499: PUSH0 0000149a: PUSH2 0x1237 0000149d: DUP4 0000149e: DUP4 0000149f: PUSH1 0x40 000014a1: MLOAD 000014a2: DUP1 000014a3: PUSH1 0x40 000014a5: ADD 000014a6: PUSH1 0x40 000014a8: MSTORE 000014a9: DUP1 000014aa: PUSH1 0x1e 000014ac: DUP2 000014ad: MSTORE 000014ae: PUSH1 0x20 000014b0: ADD 000014b1: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 000014d2: DUP2 000014d3: MSTORE 000014d4: POP 000014d5: PUSH2 0x1181 000014d8: JUMP 000014d9: JUMPDEST 000014da: PUSH0 000014db: DUP2 000014dc: DUP4 000014dd: PUSH2 0x14f9 000014e0: JUMPI 000014e1: PUSH1 0x40 000014e3: MLOAD 000014e4: PUSH3 0x461bcd 000014e8: PUSH1 0xe5 000014ea: SHL 000014eb: DUP2 000014ec: MSTORE 000014ed: PUSH1 0x04 000014ef: ADD 000014f0: PUSH2 0x047a 000014f3: SWAP2 000014f4: SWAP1 000014f5: PUSH2 0x1505 000014f8: JUMP 000014f9: JUMPDEST 000014fa: POP 000014fb: PUSH0 000014fc: PUSH2 0x11b0 000014ff: DUP5 00001500: DUP7 00001501: PUSH2 0x190a 00001504: JUMP 00001505: JUMPDEST 00001506: PUSH0 00001507: PUSH1 0x20 00001509: DUP1 0000150a: DUP4 0000150b: MSTORE 0000150c: DUP4 0000150d: MLOAD 0000150e: DUP1 0000150f: DUP3 00001510: DUP6 00001511: ADD 00001512: MSTORE 00001513: PUSH0 00001514: JUMPDEST 00001515: DUP2 00001516: DUP2 00001517: LT 00001518: ISZERO 00001519: PUSH2 0x1530 0000151c: JUMPI 0000151d: DUP6 0000151e: DUP2 0000151f: ADD 00001520: DUP4 00001521: ADD 00001522: MLOAD 00001523: DUP6 00001524: DUP3 00001525: ADD 00001526: PUSH1 0x40 00001528: ADD 00001529: MSTORE 0000152a: DUP3 0000152b: ADD 0000152c: PUSH2 0x1514 0000152f: JUMP 00001530: JUMPDEST 00001531: POP 00001532: PUSH0 00001533: PUSH1 0x40 00001535: DUP3 00001536: DUP7 00001537: ADD 00001538: ADD 00001539: MSTORE 0000153a: PUSH1 0x40 0000153c: PUSH1 0x1f 0000153e: NOT 0000153f: PUSH1 0x1f 00001541: DUP4 00001542: ADD 00001543: AND 00001544: DUP6 00001545: ADD 00001546: ADD 00001547: SWAP3 00001548: POP 00001549: POP 0000154a: POP 0000154b: SWAP3 0000154c: SWAP2 0000154d: POP 0000154e: POP 0000154f: JUMP 00001550: JUMPDEST 00001551: PUSH1 0x01 00001553: PUSH1 0x01 00001555: PUSH1 0xa0 00001557: SHL 00001558: SUB 00001559: DUP2 0000155a: AND 0000155b: DUP2 0000155c: EQ 0000155d: PUSH2 0x1564 00001560: JUMPI 00001561: PUSH0 00001562: DUP1 00001563: REVERT 00001564: JUMPDEST 00001565: POP 00001566: JUMP 00001567: JUMPDEST 00001568: DUP1 00001569: CALLDATALOAD 0000156a: PUSH2 0x1572 0000156d: DUP2 0000156e: PUSH2 0x1550 00001571: JUMP 00001572: JUMPDEST 00001573: SWAP2 00001574: SWAP1 00001575: POP 00001576: JUMP 00001577: JUMPDEST 00001578: PUSH0 00001579: DUP1 0000157a: PUSH1 0x40 0000157c: DUP4 0000157d: DUP6 0000157e: SUB 0000157f: SLT 00001580: ISZERO 00001581: PUSH2 0x1588 00001584: JUMPI 00001585: PUSH0 00001586: DUP1 00001587: REVERT 00001588: JUMPDEST 00001589: DUP3 0000158a: CALLDATALOAD 0000158b: PUSH2 0x1593 0000158e: DUP2 0000158f: PUSH2 0x1550 00001592: JUMP 00001593: JUMPDEST 00001594: SWAP5 00001595: PUSH1 0x20 00001597: SWAP4 00001598: SWAP1 00001599: SWAP4 0000159a: ADD 0000159b: CALLDATALOAD 0000159c: SWAP4 0000159d: POP 0000159e: POP 0000159f: POP 000015a0: JUMP 000015a1: JUMPDEST 000015a2: PUSH0 000015a3: DUP1 000015a4: PUSH0 000015a5: PUSH1 0x60 000015a7: DUP5 000015a8: DUP7 000015a9: SUB 000015aa: SLT 000015ab: ISZERO 000015ac: PUSH2 0x15b3 000015af: JUMPI 000015b0: PUSH0 000015b1: DUP1 000015b2: REVERT 000015b3: JUMPDEST 000015b4: DUP4 000015b5: CALLDATALOAD 000015b6: PUSH2 0x15be 000015b9: DUP2 000015ba: PUSH2 0x1550 000015bd: JUMP 000015be: JUMPDEST 000015bf: SWAP3 000015c0: POP 000015c1: PUSH1 0x20 000015c3: DUP5 000015c4: ADD 000015c5: CALLDATALOAD 000015c6: PUSH2 0x15ce 000015c9: DUP2 000015ca: PUSH2 0x1550 000015cd: JUMP 000015ce: JUMPDEST 000015cf: SWAP3 000015d0: SWAP6 000015d1: SWAP3 000015d2: SWAP5 000015d3: POP 000015d4: POP 000015d5: POP 000015d6: PUSH1 0x40 000015d8: SWAP2 000015d9: SWAP1 000015da: SWAP2 000015db: ADD 000015dc: CALLDATALOAD 000015dd: SWAP1 000015de: JUMP 000015df: JUMPDEST 000015e0: PUSH4 0x4e487b71 000015e5: PUSH1 0xe0 000015e7: SHL 000015e8: PUSH0 000015e9: MSTORE 000015ea: PUSH1 0x41 000015ec: PUSH1 0x04 000015ee: MSTORE 000015ef: PUSH1 0x24 000015f1: PUSH0 000015f2: REVERT 000015f3: JUMPDEST 000015f4: PUSH0 000015f5: PUSH1 0x20 000015f7: DUP1 000015f8: DUP4 000015f9: DUP6 000015fa: SUB 000015fb: SLT 000015fc: ISZERO 000015fd: PUSH2 0x1604 00001600: JUMPI 00001601: PUSH0 00001602: DUP1 00001603: REVERT 00001604: JUMPDEST 00001605: DUP3 00001606: CALLDATALOAD 00001607: PUSH8 0xffffffffffffffff 00001610: DUP1 00001611: DUP3 00001612: GT 00001613: ISZERO 00001614: PUSH2 0x161b 00001617: JUMPI 00001618: PUSH0 00001619: DUP1 0000161a: REVERT 0000161b: JUMPDEST 0000161c: DUP2 0000161d: DUP6 0000161e: ADD 0000161f: SWAP2 00001620: POP 00001621: DUP6 00001622: PUSH1 0x1f 00001624: DUP4 00001625: ADD 00001626: SLT 00001627: PUSH2 0x162e 0000162a: JUMPI 0000162b: PUSH0 0000162c: DUP1 0000162d: REVERT 0000162e: JUMPDEST 0000162f: DUP2 00001630: CALLDATALOAD 00001631: DUP2 00001632: DUP2 00001633: GT 00001634: ISZERO 00001635: PUSH2 0x1640 00001638: JUMPI 00001639: PUSH2 0x1640 0000163c: PUSH2 0x15df 0000163f: JUMP 00001640: JUMPDEST 00001641: DUP1 00001642: PUSH1 0x05 00001644: SHL 00001645: PUSH1 0x40 00001647: MLOAD 00001648: PUSH1 0x1f 0000164a: NOT 0000164b: PUSH1 0x3f 0000164d: DUP4 0000164e: ADD 0000164f: AND 00001650: DUP2 00001651: ADD 00001652: DUP2 00001653: DUP2 00001654: LT 00001655: DUP6 00001656: DUP3 00001657: GT 00001658: OR 00001659: ISZERO 0000165a: PUSH2 0x1665 0000165d: JUMPI 0000165e: PUSH2 0x1665 00001661: PUSH2 0x15df 00001664: JUMP 00001665: JUMPDEST 00001666: PUSH1 0x40 00001668: MSTORE 00001669: SWAP2 0000166a: DUP3 0000166b: MSTORE 0000166c: DUP5 0000166d: DUP3 0000166e: ADD 0000166f: SWAP3 00001670: POP 00001671: DUP4 00001672: DUP2 00001673: ADD 00001674: DUP6 00001675: ADD 00001676: SWAP2 00001677: DUP9 00001678: DUP4 00001679: GT 0000167a: ISZERO 0000167b: PUSH2 0x1682 0000167e: JUMPI 0000167f: PUSH0 00001680: DUP1 00001681: REVERT 00001682: JUMPDEST 00001683: SWAP4 00001684: DUP6 00001685: ADD 00001686: SWAP4 00001687: JUMPDEST 00001688: DUP3 00001689: DUP6 0000168a: LT 0000168b: ISZERO 0000168c: PUSH2 0x16a7 0000168f: JUMPI 00001690: PUSH2 0x1698 00001693: DUP6 00001694: PUSH2 0x1567 00001697: JUMP 00001698: JUMPDEST 00001699: DUP5 0000169a: MSTORE 0000169b: SWAP4 0000169c: DUP6 0000169d: ADD 0000169e: SWAP4 0000169f: SWAP3 000016a0: DUP6 000016a1: ADD 000016a2: SWAP3 000016a3: PUSH2 0x1687 000016a6: JUMP 000016a7: JUMPDEST 000016a8: SWAP9 000016a9: SWAP8 000016aa: POP 000016ab: POP 000016ac: POP 000016ad: POP 000016ae: POP 000016af: POP 000016b0: POP 000016b1: POP 000016b2: JUMP 000016b3: JUMPDEST 000016b4: PUSH0 000016b5: PUSH1 0x20 000016b7: DUP3 000016b8: DUP5 000016b9: SUB 000016ba: SLT 000016bb: ISZERO 000016bc: PUSH2 0x16c3 000016bf: JUMPI 000016c0: PUSH0 000016c1: DUP1 000016c2: REVERT 000016c3: JUMPDEST 000016c4: DUP2 000016c5: CALLDATALOAD 000016c6: PUSH2 0x1237 000016c9: DUP2 000016ca: PUSH2 0x1550 000016cd: JUMP 000016ce: JUMPDEST 000016cf: PUSH0 000016d0: DUP1 000016d1: PUSH1 0x40 000016d3: DUP4 000016d4: DUP6 000016d5: SUB 000016d6: SLT 000016d7: ISZERO 000016d8: PUSH2 0x16df 000016db: JUMPI 000016dc: PUSH0 000016dd: DUP1 000016de: REVERT 000016df: JUMPDEST 000016e0: DUP3 000016e1: CALLDATALOAD 000016e2: PUSH2 0x16ea 000016e5: DUP2 000016e6: PUSH2 0x1550 000016e9: JUMP 000016ea: JUMPDEST 000016eb: SWAP2 000016ec: POP 000016ed: PUSH1 0x20 000016ef: DUP4 000016f0: ADD 000016f1: CALLDATALOAD 000016f2: PUSH2 0x16fa 000016f5: DUP2 000016f6: PUSH2 0x1550 000016f9: JUMP 000016fa: JUMPDEST 000016fb: DUP1 000016fc: SWAP2 000016fd: POP 000016fe: POP 000016ff: SWAP3 00001700: POP 00001701: SWAP3 00001702: SWAP1 00001703: POP 00001704: JUMP 00001705: JUMPDEST 00001706: PUSH4 0x4e487b71 0000170b: PUSH1 0xe0 0000170d: SHL 0000170e: PUSH0 0000170f: MSTORE 00001710: PUSH1 0x11 00001712: PUSH1 0x04 00001714: MSTORE 00001715: PUSH1 0x24 00001717: PUSH0 00001718: REVERT 00001719: JUMPDEST 0000171a: PUSH1 0x01 0000171c: DUP2 0000171d: DUP2 0000171e: JUMPDEST 0000171f: DUP1 00001720: DUP6 00001721: GT 00001722: ISZERO 00001723: PUSH2 0x1753 00001726: JUMPI 00001727: DUP2 00001728: PUSH0 00001729: NOT 0000172a: DIV 0000172b: DUP3 0000172c: GT 0000172d: ISZERO 0000172e: PUSH2 0x1739 00001731: JUMPI 00001732: PUSH2 0x1739 00001735: PUSH2 0x1705 00001738: JUMP 00001739: JUMPDEST 0000173a: DUP1 0000173b: DUP6 0000173c: AND 0000173d: ISZERO 0000173e: PUSH2 0x1746 00001741: JUMPI 00001742: SWAP2 00001743: DUP2 00001744: MUL 00001745: SWAP2 00001746: JUMPDEST 00001747: SWAP4 00001748: DUP5 00001749: SHR 0000174a: SWAP4 0000174b: SWAP1 0000174c: DUP1 0000174d: MUL 0000174e: SWAP1 0000174f: PUSH2 0x171e 00001752: JUMP 00001753: JUMPDEST 00001754: POP 00001755: SWAP3 00001756: POP 00001757: SWAP3 00001758: SWAP1 00001759: POP 0000175a: JUMP 0000175b: JUMPDEST 0000175c: PUSH0 0000175d: DUP3 0000175e: PUSH2 0x1769 00001761: JUMPI 00001762: POP 00001763: PUSH1 0x01 00001765: PUSH2 0x03c3 00001768: JUMP 00001769: JUMPDEST 0000176a: DUP2 0000176b: PUSH2 0x1775 0000176e: JUMPI 0000176f: POP 00001770: PUSH0 00001771: PUSH2 0x03c3 00001774: JUMP 00001775: JUMPDEST 00001776: DUP2 00001777: PUSH1 0x01 00001779: DUP2 0000177a: EQ 0000177b: PUSH2 0x178b 0000177e: JUMPI 0000177f: PUSH1 0x02 00001781: DUP2 00001782: EQ 00001783: PUSH2 0x1795 00001786: JUMPI 00001787: PUSH2 0x17b1 0000178a: JUMP 0000178b: JUMPDEST 0000178c: PUSH1 0x01 0000178e: SWAP2 0000178f: POP 00001790: POP 00001791: PUSH2 0x03c3 00001794: JUMP 00001795: JUMPDEST 00001796: PUSH1 0xff 00001798: DUP5 00001799: GT 0000179a: ISZERO 0000179b: PUSH2 0x17a6 0000179e: JUMPI 0000179f: PUSH2 0x17a6 000017a2: PUSH2 0x1705 000017a5: JUMP 000017a6: JUMPDEST 000017a7: POP 000017a8: POP 000017a9: PUSH1 0x01 000017ab: DUP3 000017ac: SHL 000017ad: PUSH2 0x03c3 000017b0: JUMP 000017b1: JUMPDEST 000017b2: POP 000017b3: PUSH1 0x20 000017b5: DUP4 000017b6: LT 000017b7: PUSH2 0x0133 000017ba: DUP4 000017bb: LT 000017bc: AND 000017bd: PUSH1 0x4e 000017bf: DUP5 000017c0: LT 000017c1: PUSH1 0x0b 000017c3: DUP5 000017c4: LT 000017c5: AND 000017c6: OR 000017c7: ISZERO 000017c8: PUSH2 0x17d4 000017cb: JUMPI 000017cc: POP 000017cd: DUP2 000017ce: DUP2 000017cf: EXP 000017d0: PUSH2 0x03c3 000017d3: JUMP 000017d4: JUMPDEST 000017d5: PUSH2 0x17de 000017d8: DUP4 000017d9: DUP4 000017da: PUSH2 0x1719 000017dd: JUMP 000017de: JUMPDEST 000017df: DUP1 000017e0: PUSH0 000017e1: NOT 000017e2: DIV 000017e3: DUP3 000017e4: GT 000017e5: ISZERO 000017e6: PUSH2 0x17f1 000017e9: JUMPI 000017ea: PUSH2 0x17f1 000017ed: PUSH2 0x1705 000017f0: JUMP 000017f1: JUMPDEST 000017f2: MUL 000017f3: SWAP4 000017f4: SWAP3 000017f5: POP 000017f6: POP 000017f7: POP 000017f8: JUMP 000017f9: JUMPDEST 000017fa: PUSH0 000017fb: PUSH2 0x1237 000017fe: PUSH1 0xff 00001800: DUP5 00001801: AND 00001802: DUP4 00001803: PUSH2 0x175b 00001806: JUMP 00001807: JUMPDEST 00001808: DUP1 00001809: DUP3 0000180a: MUL 0000180b: DUP2 0000180c: ISZERO 0000180d: DUP3 0000180e: DUP3 0000180f: DIV 00001810: DUP5 00001811: EQ 00001812: OR 00001813: PUSH2 0x03c3 00001816: JUMPI 00001817: PUSH2 0x03c3 0000181a: PUSH2 0x1705 0000181d: JUMP 0000181e: JUMPDEST 0000181f: PUSH1 0x20 00001821: DUP1 00001822: DUP3 00001823: MSTORE 00001824: DUP2 00001825: DUP2 00001826: ADD 00001827: MSTORE 00001828: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001849: PUSH1 0x40 0000184b: DUP3 0000184c: ADD 0000184d: MSTORE 0000184e: PUSH1 0x60 00001850: ADD 00001851: SWAP1 00001852: JUMP 00001853: JUMPDEST 00001854: PUSH4 0x4e487b71 00001859: PUSH1 0xe0 0000185b: SHL 0000185c: PUSH0 0000185d: MSTORE 0000185e: PUSH1 0x32 00001860: PUSH1 0x04 00001862: MSTORE 00001863: PUSH1 0x24 00001865: PUSH0 00001866: REVERT 00001867: JUMPDEST 00001868: PUSH0 00001869: PUSH1 0x01 0000186b: DUP3 0000186c: ADD 0000186d: PUSH2 0x1878 00001870: JUMPI 00001871: PUSH2 0x1878 00001874: PUSH2 0x1705 00001877: JUMP 00001878: JUMPDEST 00001879: POP 0000187a: PUSH1 0x01 0000187c: ADD 0000187d: SWAP1 0000187e: JUMP 0000187f: JUMPDEST 00001880: PUSH0 00001881: PUSH1 0x20 00001883: DUP3 00001884: DUP5 00001885: SUB 00001886: SLT 00001887: ISZERO 00001888: PUSH2 0x188f 0000188b: JUMPI 0000188c: PUSH0 0000188d: DUP1 0000188e: REVERT 0000188f: JUMPDEST 00001890: DUP2 00001891: MLOAD 00001892: PUSH2 0x1237 00001895: DUP2 00001896: PUSH2 0x1550 00001899: JUMP 0000189a: JUMPDEST 0000189b: PUSH0 0000189c: DUP1 0000189d: PUSH0 0000189e: PUSH1 0x60 000018a0: DUP5 000018a1: DUP7 000018a2: SUB 000018a3: SLT 000018a4: ISZERO 000018a5: PUSH2 0x18ac 000018a8: JUMPI 000018a9: PUSH0 000018aa: DUP1 000018ab: REVERT 000018ac: JUMPDEST 000018ad: DUP4 000018ae: MLOAD 000018af: SWAP3 000018b0: POP 000018b1: PUSH1 0x20 000018b3: DUP5 000018b4: ADD 000018b5: MLOAD 000018b6: SWAP2 000018b7: POP 000018b8: PUSH1 0x40 000018ba: DUP5 000018bb: ADD 000018bc: MLOAD 000018bd: SWAP1 000018be: POP 000018bf: SWAP3 000018c0: POP 000018c1: SWAP3 000018c2: POP 000018c3: SWAP3 000018c4: JUMP 000018c5: JUMPDEST 000018c6: PUSH0 000018c7: PUSH1 0x20 000018c9: DUP3 000018ca: DUP5 000018cb: SUB 000018cc: SLT 000018cd: ISZERO 000018ce: PUSH2 0x18d5 000018d1: JUMPI 000018d2: PUSH0 000018d3: DUP1 000018d4: REVERT 000018d5: JUMPDEST 000018d6: DUP2 000018d7: MLOAD 000018d8: DUP1 000018d9: ISZERO 000018da: ISZERO 000018db: DUP2 000018dc: EQ 000018dd: PUSH2 0x1237 000018e0: JUMPI 000018e1: PUSH0 000018e2: DUP1 000018e3: REVERT 000018e4: JUMPDEST 000018e5: DUP1 000018e6: DUP3 000018e7: ADD 000018e8: DUP1 000018e9: DUP3 000018ea: GT 000018eb: ISZERO 000018ec: PUSH2 0x03c3 000018ef: JUMPI 000018f0: PUSH2 0x03c3 000018f3: PUSH2 0x1705 000018f6: JUMP 000018f7: JUMPDEST 000018f8: DUP2 000018f9: DUP2 000018fa: SUB 000018fb: DUP2 000018fc: DUP2 000018fd: GT 000018fe: ISZERO 000018ff: PUSH2 0x03c3 00001902: JUMPI 00001903: PUSH2 0x03c3 00001906: PUSH2 0x1705 00001909: JUMP 0000190a: JUMPDEST 0000190b: PUSH0 0000190c: DUP3 0000190d: PUSH2 0x1924 00001910: JUMPI 00001911: PUSH4 0x4e487b71 00001916: PUSH1 0xe0 00001918: SHL 00001919: PUSH0 0000191a: MSTORE 0000191b: PUSH1 0x12 0000191d: PUSH1 0x04 0000191f: MSTORE 00001920: PUSH1 0x24 00001922: PUSH0 00001923: REVERT 00001924: JUMPDEST 00001925: POP 00001926: DIV 00001927: SWAP1 00001928: JUMP 00001929: JUMPDEST 0000192a: PUSH0 0000192b: PUSH1 0xa0 0000192d: DUP3 0000192e: ADD 0000192f: DUP8 00001930: DUP4 00001931: MSTORE 00001932: PUSH1 0x20 00001934: DUP8 00001935: DUP2 00001936: DUP6 00001937: ADD 00001938: MSTORE 00001939: PUSH1 0xa0 0000193b: PUSH1 0x40 0000193d: DUP6 0000193e: ADD 0000193f: MSTORE 00001940: DUP2 00001941: DUP8 00001942: MLOAD 00001943: DUP1 00001944: DUP5 00001945: MSTORE 00001946: PUSH1 0xc0 00001948: DUP7 00001949: ADD 0000194a: SWAP2 0000194b: POP 0000194c: DUP3 0000194d: DUP10 0000194e: ADD 0000194f: SWAP4 00001950: POP 00001951: PUSH0 00001952: JUMPDEST 00001953: DUP2 00001954: DUP2 00001955: LT 00001956: ISZERO 00001957: PUSH2 0x1977 0000195a: JUMPI 0000195b: DUP5 0000195c: MLOAD 0000195d: PUSH1 0x01 0000195f: PUSH1 0x01 00001961: PUSH1 0xa0 00001963: SHL 00001964: SUB 00001965: AND 00001966: DUP4 00001967: MSTORE 00001968: SWAP4 00001969: DUP4 0000196a: ADD 0000196b: SWAP4 0000196c: SWAP2 0000196d: DUP4 0000196e: ADD 0000196f: SWAP2 00001970: PUSH1 0x01 00001972: ADD 00001973: PUSH2 0x1952 00001976: JUMP 00001977: JUMPDEST 00001978: POP 00001979: POP 0000197a: PUSH1 0x01 0000197c: PUSH1 0x01 0000197e: PUSH1 0xa0 00001980: SHL 00001981: SUB 00001982: SWAP7 00001983: SWAP1 00001984: SWAP7 00001985: AND 00001986: PUSH1 0x60 00001988: DUP6 00001989: ADD 0000198a: MSTORE 0000198b: POP 0000198c: POP 0000198d: POP 0000198e: PUSH1 0x80 00001990: ADD 00001991: MSTORE 00001992: SWAP4 00001993: SWAP3 00001994: POP 00001995: POP 00001996: POP 00001997: JUMP 00001998: INVALID 00001999: GASLIMIT 0000199a: MSTORE 0000199b: NUMBER 0000199c: ORIGIN 0000199d: ADDRESS 0000199e: GASPRICE 0000199f: KECCAK256 000019a0: PUSH21 0x72616e7366657220616d6f756e7420657863656564 000019b6: PUSH20 0x20616c6c6f77616e6365a2646970667358221220 000019cb: LOG4 000019cc: UNKNOWN(0xC8) 000019cd: UNKNOWN(0xD9) 000019ce: UNKNOWN(0xF7) 000019cf: UNKNOWN(0xEE) 000019d0: JUMPDEST 000019d1: UNKNOWN(0xE3) 000019d2: SIGNEXTEND 000019d3: DUP14 000019d4: PUSH15 0xd2203b61163cd1dba807c2e7913f39 000019e4: PUSH30
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| 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": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf474bed",
"selector": "0xbf474bed",
"calldata_variants": [
"0xbf474bed",
"0xbf474bed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9567bf9",
"selector": "0xc9567bf9",
"calldata_variants": [
"0xc9567bf9",
"0xc9567bf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd34628cc",
"selector": "0xd34628cc",
"calldata_variants": [
"0xd34628cc",
"0xd34628cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x751039fc",
"selector": "0x751039fc",
"calldata_variants": [
"0x751039fc",
"0x751039fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7d1db4a5",
"selector": "0x7d1db4a5",
"calldata_variants": [
"0x7d1db4a5",
"0x7d1db4a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 6556,
"type": "tx_origin_used"
}
]
}
|
| high | other | slither | GROK.sendETHToFee(uint256) (contracts/Contract.sol#278-282) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "sendETHToFee",
"type": "function",
"source_mapping": {
"lines": [
278,
279,
280,
281,
282
],
"start": 9927,
"length": 90,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "sendETHToFee(uint256)"
}
},
{
"name": "_taxWallet.transfer(amount)",
"type": "node",
"source_mapping": {
"lines": [
281,
282
],
"start": 9983,
"length": 27,
"ending_column": 14,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 15,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "sendETHToFee",
"type": "function",
"source_mapping": {
"lines": [
278,
279,
280,
281,
282
],
"start": 9927,
"length": 90,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "sendETHToFee(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "sendETHToFee",
"type": "function",
"lines": [
278,
279,
280,
281,
282
]
},
{
"file": "contracts/Contract.sol",
"name": "_taxWallet.transfer(amount)",
"type": "node",
"lines": [
281,
282
]
}
],
"description": "GROK.sendETHToFee(uint256) (contracts/Contract.sol#278-282) sends eth to arbitrary user\n\tDangerous calls:\n\t- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)"
}
|
| high | reentrancy | slither | Reentrancy in GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "_transfer",
"type": "function",
"source_mapping": {
"lines": [
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251
],
"start": 6801,
"length": 2184,
"ending_column": 71,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 55,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_transfer(address,address,uint256)"
}
},
{
"name": "swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)))",
"type": "node",
"source_mapping": {
"lines": [
238,
239,
240
],
"start": 8358,
"length": 67,
"ending_column": 55,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-r57yfv0u/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": [
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251
],
"start": 6801,
"length": 2184,
"ending_column": 71,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 55,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/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": [
272,
273,
274,
275
],
"start": 9563,
"length": 190,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-r57yfv0u/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": [
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276
],
"start": 9289,
"length": 471,
"ending_column": 3,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 43,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "swapTokensForEth(uint256)"
}
}
}
},
{
"name": "sendETHToFee(address(this).balance)",
"type": "node",
"source_mapping": {
"lines": [
241,
242
],
"start": 8560,
"length": 35,
"ending_column": 13,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 120,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_transfer",
"type": "function",
"source_mapping": {
"lines": [
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251
],
"start": 6801,
"length": 2184,
"ending_column": 71,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 55,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_transfer(address,address,uint256)"
}
}
}
},
{
"name": "_taxWallet.transfer(amount)",
"type": "node",
"source_mapping": {
"lines": [
281,
282
],
"start": 9983,
"length": 27,
"ending_column": 14,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 15,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "sendETHToFee",
"type": "function",
"source_mapping": {
"lines": [
278,
279,
280,
281,
282
],
"start": 9927,
"length": 90,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "sendETHToFee(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_transfer",
"type": "function",
"lines": [
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251
]
},
{
"file": "contracts/Contract.sol",
"name": "swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)))",
"type": "node",
"lines": [
238,
239,
240
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp)",
"type": "node",
"lines": [
272,
273,
274,
275
]
},
{
"file": "contracts/Contract.sol",
"name": "sendETHToFee(address(this).balance)",
"type": "node",
"lines": [
241,
242
]
},
{
"file": "contracts/Contract.sol",
"name": "_taxWallet.transfer(amount)",
"type": "node",
"lines": [
281,
282
]
},
{
"file": "contracts/Contract.sol",
"name": "_balances[address(this)] = _balances[address(this)].add(taxAmount)",
"type": "node",
"lines": [
243,
244
]
},
{
"file": "contracts/Contract.sol",
"name": "_balances[from] = _balances[from].sub(amount)",
"type": "node",
"lines": [
245,
246
]
},
{
"file": "contracts/Contract.sol",
"name": "_balances[to] = _balances[to].add(amount.sub(taxAmount))",
"type": "node",
"lines": [
247,
248,
249,
250,
251
]
}
],
"description": "Reentrancy in GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251):\n\tExternal calls:\n\t- swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))) (contracts/Contract.sol#238-240)\n\t\t- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Contract.sol#272-275)\n\tExternal calls sending eth:\n\t- sendETHToFee(address(this).balance) (contracts/Contract.sol#241-242)\n\t\t- _taxWallet.transfer(amount) (contracts/Contract.sol#281-282)\n\tState variables written after the call(s):\n\t- _balances[address(this)] = _balances[address(this)].add(taxAmount) (contracts/Contract.sol#243-244)\n\tGROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:\n\t- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)\n\t- GROK.balanceOf(address) (contracts/Contract.sol#174-178)\n\t- GROK.constructor() (contracts/Contract.sol#147-160)\n\t- _balances[from] = _balances[from].sub(amount) (contracts/Contract.sol#245-246)\n\tGROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:\n\t- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)\n\t- GROK.balanceOf(address) (contracts/Contract.sol#174-178)\n\t- GROK.constructor() (contracts/Contract.sol#147-160)\n\t- _balances[to] = _balances[to].add(amount.sub(taxAmount)) (contracts/Contract.sol#247-251)\n\tGROK._balances (contracts/Contract.sol#112-115) can be used in cross function reentrancies:\n\t- GROK._transfer(address,address,uint256) (contracts/Contract.sol#207-251)\n\t- GROK.balanceOf(address) (contracts/Contract.sol#174-178)\n\t- GROK.constructor() (contracts/Contract.sol#147-160)"
}
|
| high | reentrancy | slither | Reentrancy in GROK.openTrading() (contracts/Contract.sol#298-317): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "openTrading",
"type": "function",
"source_mapping": {
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 10440,
"length": 697,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "openTrading()"
}
},
{
"name": "uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH())",
"type": "node",
"source_mapping": {
"lines": [
308,
309,
310,
311,
312,
313
],
"start": 10709,
"length": 110,
"ending_column": 22,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 54,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "openTrading",
"type": "function",
"source_mapping": {
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 10440,
"length": 697,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "openTrading()"
}
}
}
},
{
"name": "uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp)",
"type": "node",
"source_mapping": {
"lines": [
313,
314,
315
],
"start": 10829,
"length": 129,
"ending_column": 12,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 32,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "openTrading",
"type": "function",
"source_mapping": {
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 10440,
"length": 697,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "openTrading()"
}
}
}
},
{
"name": "IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max)",
"type": "node",
"source_mapping": {
"lines": [
315,
316
],
"start": 10968,
"length": 71,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "openTrading",
"type": "function",
"source_mapping": {
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 10440,
"length": 697,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "openTrading()"
}
}
}
},
{
"name": "uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp)",
"type": "node",
"source_mapping": {
"lines": [
313,
314,
315
],
"start": 10829,
"length": 129,
"ending_column": 12,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 32,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "openTrading",
"type": "function",
"source_mapping": {
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 10440,
"length": 697,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GROK",
"type": "contract",
"source_mapping": {
"lines": [
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
],
"start": 3396,
"length": 7779,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-r57yfv0u/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "openTrading()"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "openTrading",
"type": "function",
"lines": [
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH())",
"type": "node",
"lines": [
308,
309,
310,
311,
312,
313
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp)",
"type": "node",
"lines": [
313,
314,
315
]
},
{
"file": "contracts/Contract.sol",
"name": "IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max)",
"type": "node",
"lines": [
315,
316
]
},
{
"file": "contracts/Contract.sol",
"name": "uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp)",
"type": "node",
"lines": [
313,
314,
315
]
},
{
"file": "contracts/Contract.sol",
"name": "tradingOpen = true",
"type": "node",
"lines": [
316
]
}
],
"description": "Reentrancy in GROK.openTrading() (contracts/Contract.sol#298-317):\n\tExternal calls:\n\t- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (contracts/Contract.sol#308-313)\n\t- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)\n\t- IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type()(uint256).max) (contracts/Contract.sol#315-316)\n\tExternal calls sending eth:\n\t- uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp) (contracts/Contract.sol#313-315)\n\tState variables written after the call(s):\n\t- tradingOpen = true (contracts/Contract.sol#316)\n\tGROK.tradingOpen (contracts/Contract.sol#140) can be used in cross function reentrancies:\n\t- GROK.openTrading() (contracts/Contract.sol#298-317)"
}
|
| medium | access_control | codex | Owner-controlled blacklist can freeze user funds and halt trading | 75 | no | — |
viewevidence_json{
"evidence": "`_transfer` blocks any transfer where `bots[from]` or `bots[to]` is true, and `addBots`/`delBots` are owner-only.",
"locations": [
"contracts/Contract.sol:213",
"contracts/Contract.sol:218",
"contracts/Contract.sol:296",
"contracts/Contract.sol:302"
],
"recommendation": "Remove the blacklist or strictly scope it (e.g., only during an initial launch window). If retained, gate it behind a timelock/multisig and exclude the AMM pair from being blacklisted.",
"exploit_scenario": "The owner can add any holder or even the AMM pair to the `bots` list. Because `_transfer` hard-reverts when either sender or recipient is flagged, this lets the owner freeze arbitrary accounts or disable trading after users buy, trapping funds or liquidity."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x6e4f73d9824bb3bf93b8e9f619de3175c852bbb793553897d6aeb5a518468b9c
call_targets:
0x8390a1da07e376ef7add4be859ba74fb83aa02d5
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6e4f73d9824bb3bf93b8e9f619de3175c852bbb793553897d6aeb5a518468b9c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8390a1da07e376ef7add4be859ba74fb83aa02d5"
],
"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": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf474bed",
"selector": "0xbf474bed",
"calldata_variants": [
"0xbf474bed",
"0xbf474bed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9567bf9",
"selector": "0xc9567bf9",
"calldata_variants": [
"0xc9567bf9",
"0xc9567bf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd34628cc",
"selector": "0xd34628cc",
"calldata_variants": [
"0xd34628cc",
"0xd34628cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x751039fc",
"selector": "0x751039fc",
"calldata_variants": [
"0x751039fc",
"0x751039fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7d1db4a5",
"selector": "0x7d1db4a5",
"calldata_variants": [
"0x7d1db4a5",
"0x7d1db4a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2075,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2303,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [
{
"pc": 6556,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 5
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x6e4f73d9824bb3bf93b8e9f619de3175c852bbb793553897d6aeb5a518468b9c
call_targets:
0x8390a1da07e376ef7add4be859ba74fb83aa02d5
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6e4f73d9824bb3bf93b8e9f619de3175c852bbb793553897d6aeb5a518468b9c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8390a1da07e376ef7add4be859ba74fb83aa02d5"
],
"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": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf474bed",
"selector": "0xbf474bed",
"calldata_variants": [
"0xbf474bed",
"0xbf474bed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9567bf9",
"selector": "0xc9567bf9",
"calldata_variants": [
"0xc9567bf9",
"0xc9567bf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd34628cc",
"selector": "0xd34628cc",
"calldata_variants": [
"0xd34628cc",
"0xd34628cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x751039fc",
"selector": "0x751039fc",
"calldata_variants": [
"0x751039fc",
"0x751039fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7d1db4a5",
"selector": "0x7d1db4a5",
"calldata_variants": [
"0x7d1db4a5",
"0x7d1db4a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2075,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2303,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": [
{
"pc": 6556,
"type": "tx_origin_used"
}
]
}
|
| low | oracle | codex | Tax swap uses amountOutMin=0 enabling MEV sandwiching | 65 | no | — |
viewevidence_json{
"evidence": "`swapExactTokensForETHSupportingFeeOnTransferTokens` is called with `amountOutMin` set to 0.",
"locations": [
"contracts/Contract.sol:272",
"contracts/Contract.sol:277"
],
"recommendation": "Set a minimum output based on an on-chain quote and a configurable slippage tolerance, or use a TWAP/oracle-based guard before swapping.",
"exploit_scenario": "When the contract swaps collected taxes, it accepts any output amount. An attacker can front\u2011run the swap to push price down, causing the swap to execute at a worse rate, then back\u2011run to restore price, extracting value from the contract\u2019s tax swap (reducing ETH sent to the tax wallet)."
}
|