Specs don't make sense, halving every 250 blocks starting with 25 coins/block will give a much lower total, something like 12,500 coins before the rewards drop to 0. Is there an unadvertised POS component as well?
Nothing obvious.
int64_t GetProofOfStakeReward(int64_t nCoinAge, int64_t nFees)
{
int64_t nSubsidy = nCoinAge * (COIN_YEAR_REWARD) * 33 (365 * 33 + 8);
if (fDebug && GetBoolArg("-printcreation"))
printf("GetProofOfStakeReward(): create=%s nCoinAge=%"PRId64"\n", FormatMoney(nSubsidy).c_str(), nCoinAge);
return nSubsidy + nFees;
}