リスト5●VIsual C++ .NET 2003がリスト3から生成したアセンブリ・コード(Releaseモード)
10で割る処理の部分

; 105  :             data[y*nMaxX + x].Result = (data[y*nMaxX + x].R*3
; 106  :                                         + data[y*nMaxX + x].G*6
; 107  :                                         + data[y*nMaxX + x].B)/10;

    mov    edx, DWORD PTR [ecx-4]
    mov    eax, DWORD PTR [ecx-8]
    lea    eax, DWORD PTR [eax+edx*2]
    lea    edx, DWORD PTR [eax+eax*2]
    add    edx, DWORD PTR [ecx]
    mov    eax, 1717986919            ; 66666667H
    imul    edx
    sar    edx, 2
    mov    eax, edx
    shr    eax, 31                    ; 0000001fH
    add    eax, edx
    mov    DWORD PTR [ecx+4], eax
    add    ecx, 16                    ; 00000010H
    dec    edi
    jne    SHORT $L115165