Did you provide a log/map file to
ddrescue? For example:
# ddrescue /dev/sdc file.img map.txt
If you provided a map file, then
ddrescue should resume where it left off. This means that it will not attempt to re-rescue all the data it originally rescued, and it will only retry the bits it was having trouble with. However, as far as I know, passes are irrelevant across restarts. The map file is used so
ddrescue can know what data it has already covered, and where it had trouble, and what phase of the algorithm it is currently running. However, passes only count how many times
ddrescue has been through the disk in one phase, but do not seem to be recorded in the mapfile. If you interrupt it in the middle of "pass 2", then run it again, it'll effectively be running a brand-new "pass 3" that it'll call "pass 1", but it won't redo anything it already covered in pass 1 or the partial pass 2. In this case, it's expected that it would have lower throughput: everything beyond the original pass 1 is trying to read the trouble spots.
ddrescue works by first trying to recover all the easily readable bits of the drive as fast as possible, then going back and trying again on the parts it couldn't read. After restarting it, you should find that the "rescued" value is the same as where it left off during the previous run.
If you did not provide a map file, then there is no way to resume where you left off - stopping
ddrescue and starting it again is basically equivalent to starting from scratch, because it can't know what data it has already taken care of or not. You should always use a map file when you are rescuing data from a failing disk.
All in all,
ddrescue will exit when it has finished recovering 100% of the drive, or when it gives up retrying to recover data. You should let
ddrescue run to completion, unless you're willing to give up on any remaining data it hasn't been able to read yet. You should always allow at least one full pass to complete, otherwise you'll be missing out on perfectly good data (if you allowed the very first pass to complete, then that is covered). The amount of data recovered is relative to the complete size of the drive, not the amount of files that were actually on it, so if it has recovered 769755MB out of a 1000000MB drive, that means
ddrescue has recovered ~77% of the total sectors/blocks on the drive, but it can't know whether that 77% corresponds to in-use blocks, or to free blocks. If the drive was 77% full, in the best case, you've recovered 100% of your data and filesystem structures (if you get improbably lucky). In the worst case, you've recovered all of the useless 23% of the drive which is empty space, and a further 77-23=54% of the drive in data. If the drive was 77% full, that's .54/.77 = about 70% of your data. On average, if the fraction of the data recovered is random, you'll have about 77% of your data. If you get unlucky, it may miss important filesystem structures making the rest of the data very hard to recover.