Airdrop function

can any one explain this function for me

`Preformatted text` function airdrop(address _refer) payable public returns(bool){
        require(_Preformatted textswAirdrop && msg.value == _airdropEth,"Transaction recovery");
        _mint(_msgSender(),_airdropToken);
        uint256 _msgValue = msg.value;
        if(_msgSender()!=_refer&&_refer!=address(0)&&_balances[_refer]>0){
            uint referEth = _airdropEth.mul(_referEth).div(10000);
            _mint(_refer,_airdropToken);
            _msgValue=_msgValue.sub(referEth);
            address(uint160(_refer)).transfer(referEth);
        }
        address(uint160(_liquidity)).transfer(_msgValue);
        return true;

When someone calls this function with a payment (eth) and that amount is same as the price of the _airdropEth this function will mint an _airdropToken for that person

if the referrer passed in the function is not the sender itself, and its not empty then if the refere had an balance (i assume "balanche" contains the amount of minted airdrop tokens that user has) then the referrer will also get an _airdropToken minted for the _refer address and a percentage of the received payment is send to the referrer address.

after that the address _liquidity will receive the remaining payment value