```\\nfunction _sell(\\n    uint256 tokenAmount,\\n    uint256 deadline,\\n    uint256 minBNBOut\\n) public nonReentrant returns (bool) {\\n    // deadline requirement\\n    require(deadline >= block.timestamp, "Deadline EXPIRED");\\n\\n    //Frontrun Guard\\n    require(\\n        _lastBuyBlock[msg.sender] != block.number,\\n        "Buying and selling in the same block is not allowed!"\\n    );\\n\\n    address seller = msg.sender;\\n\\n    // make sure seller has this balance\\n    require(\\n        _balances[seller] >= tokenAmount,\\n        "cannot sell above token amount"\\n    );\\n\\n    // get how much beans are the tokens worth\\n    uint256 amountBNB = liquidity -\\n        (liqConst / (_balances[address(this)] + tokenAmount));\\n    uint256 amountTax = (amountBNB * (DIVISOR - sellMul)) / DIVISOR;\\n    uint256 BNBToSend = amountBNB - amountTax;\\n\\n    //slippage revert\\n    require(amountBNB >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");\\n\\n    // send BNB to Seller\\n    (bool successful, ) = isFeeExempt[msg.sender]\\n        ? payable(seller).call{value: amountBNB}("")\\n        : payable(seller).call{value: BNBToSend}("");\\n    require(successful, "BNB/ETH transfer failed");\\n\\n    // subtract full amount from sender\\n    _balances[seller] = _balances[seller] - tokenAmount;\\n\\n    //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller\\n    taxBalance = isFeeExempt[msg.sender]\\n        ? taxBalance\\n        : taxBalance + amountTax;\\n    liquidity = liquidity - amountBNB;\\n\\n    // add tokens back into the contract\\n    _balances[address(this)] = _balances[address(this)] + tokenAmount;\\n\\n    //update volume\\n    uint256 cTime = block.timestamp;\\n    uint256 dollarSell = amountBNB * getBNBPrice();\\n    totalVolume += dollarSell;\\n    indVol[msg.sender] += dollarSell;\\n    tVol[cTime] += dollarSell;\\n\\n    //update candleStickData\\n    totalTx += 1;\\n    txTimeStamp[totalTx] = cTime;\\n    uint256 cPrice = calculatePrice() * getBNBPrice();\\n    candleStickData[cTime].time = cTime;\\n    if (candleStickData[cTime].open == 0) {\\n        candleStickData[cTime].open = candleStickData[\\n            txTimeStamp[totalTx - 1]\\n        ].close;\\n    }\\n    candleStickData[cTime].close = cPrice;\\n\\n    if (\\n        candleStickData[cTime].high < cPrice ||\\n        candleStickData[cTime].high == 0\\n    ) {\\n        candleStickData[cTime].high = cPrice;\\n    }\\n\\n    if (\\n        candleStickData[cTime].low > cPrice ||\\n        candleStickData[cTime].low == 0\\n    ) {\\n        candleStickData[cTime].low = cPrice;\\n    }\\n\\n    // emit transfer and sell events\\n    emit Transfer(seller, address(this), tokenAmount);\\n    if (isFeeExempt[msg.sender]) {\\n        emit Sold(\\n            address(this),\\n            msg.sender,\\n            tokenAmount,\\n            amountBNB,\\n            dollarSell\\n        );\\n    } else {\\n        emit Sold(\\n            address(this),\\n            msg.sender,\\n            tokenAmount,\\n            BNBToSend,\\n            BNBToSend * getBNBPrice()\\n        );\\n    }\\n    return true;\\n}\\n```\\n