Reverse engineering and optimisation of the BLASTP program