There is a bug in the routine IL_CopyToMainMemory() both on disk and as shown in Listing 10-3 on page 215 in the chapter entitled Moving Memory. Leading into the inner loop is the following line of code:
mov edx,[edi+ecx+0*8+4] ;0;preload edx
Unfortunately, the edi register addresses the first destination double instead of the intended first source double, addressed by esi. This line of code should be changed to:
mov edx,[esi+ecx+0*8+4] ;0;preload edx
The effect of this bug, if left unfixed, is to sometimes trash bit 3 of the 7th byte of a transfer.