fincon09.sol

//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.26;
contract fincon
{
    address constant control_address = 0x3e7dE2106399A97337739d36f998822AaF675133;

    uint constant daily = 0.005 ether;
    uint constant windows = 10;

    uint constant secs_per_month = 2629651;

    uint constant secs_per_window = secs_per_month / windows + 1;
    uint constant g = daily * secs_per_window / 86400;

    uint last_tx = 0;

    receive() external payable {}

    function withdraw(address payable dst_address, uint amount) public
    {
        require(msg.sender == control_address);
        require(block.timestamp >= secs_per_window + last_tx);

        uint l = block.timestamp / secs_per_month * secs_per_month; //1719791754
        uint m = (block.timestamp - l) / secs_per_window; //0
        uint n = windows - m; //5
        uint o = m + m + 1; //1
        uint p = (windows + m) * n; //25
        uint q = (address(this).balance - g * n) * o / p + g; //

        require(amount <= q);

        dst_address.transfer(amount);

        last_tx = block.timestamp;
    }
}