function withdraw() notOnPause public {

        if (address(this).balance < 100000000000000000) {
            nextWave();
            return;
        }

        uint _payout = block.timestamp.sub(x.c(msg.sender)).div(1 days).mul(x.d(msg.sender).mul(x.getInterest(msg.sender)).div(10000));
        x.updateCheckpoint(msg.sender);

        if (_payout > 0) {
            msg.sender.transfer(_payout);
            emit LogPayment(msg.sender, _payout);
        }
    }