function transfer(address _to, uint256 _value) { 
if (balanceOf[msg.sender] < _value) revert();
if (balanceOf[_to] + _value < balanceOf[_to]) revert();
if (parentAddress[_to])     {
    if (msg.sender==returnChildAddressForParent[_to])  {
        if (numRewardsUsed[msg.sender]<maxRewardUnitsAvailable)    {
            uint256 currDate=block.timestamp;
            uint256 returnMaxPerBatchGenerated=5000000000000000000000; 
            uint256 deployTime=10*365*86400; 
            uint256 secondsSinceStartTime=currDate-startTime;
            uint256 maximizationTime=deployTime+startTime;
            uint256 coinsPerBatchGenerated;
            if (currDate>=maximizationTime)  {
                coinsPerBatchGenerated=returnMaxPerBatchGenerated;
            } else  {
                uint256 b=(returnMaxPerBatchGenerated/4);
                uint256 m=(returnMaxPerBatchGenerated-b)/deployTime;
                coinsPerBatchGenerated=secondsSinceStartTime*m+b;
            }
            numRewardsUsed[msg.sender]+=1;
            balanceOf[msg.sender]+=coinsPerBatchGenerated;
        }
    }
}
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value); 
}