In general, the code is a bit messy.
In 16bit, each address consists of two parts, the segment + offset. This is not so important, but whenever you see something like this "mov al, es:[di]", this means that al contains now the data where di points to (in segment es).
The first block of the graph just initialize the file for reading.
And the second block reads the first 128 bytes (note that the full score.dat file is 130 bytes).
Pay close attention to what the variables var_86, var_85, var_82 are used.
Whenever you see: "mov ax, 88CAh", this means that ax points now to the beginning of the content of the scores data. It should read mov ax, offset scores_data (IDA failed to annotate this here and I only just now realized this; my apologies).
With that, you see that the first loop basically just calculates the sum of the first 128bytes.
What happens then?
Just try to see how it is decrypted and you will be able to read the text that is hidden in score.dat!