Annotation of pgp/src/mpw32asm.c, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: #if defined(USE_WIN32_ASSEMBLER)
                      4: 
                      5: 
                      6: 
                      7: #include "mpilib.h"
                      8: 
                      9: 
                     10: 
                     11: #if defined(SMITH)
                     12: 
                     13: 
                     14: 
                     15: extern unit reciph,recipl;
                     16: 
                     17: extern int  mshift;
                     18: 
                     19: 
                     20: 
                     21: #if !defined(_MSC_VER)
                     22: 
                     23: #error "This code needs a Microsoft compiler"
                     24: 
                     25: #endif
                     26: 
                     27: 
                     28: 
                     29: #if defined(_M_IX86)
                     30: 
                     31: 
                     32: 
                     33: #pragma warning(disable:4035)
                     34: 
                     35: 
                     36: 
                     37: 
                     38: 
                     39: unit P_QUO_DIGIT (unitptr dividend)
                     40: 
                     41: {
                     42: 
                     43:        __asm{
                     44: 
                     45:                mov     esi,DWORD PTR [dividend]
                     46: 
                     47:                push    ebp
                     48: 
                     49:                mov     eax, DWORD PTR [esi-8]
                     50: 
                     51:                not     eax
                     52: 
                     53:                mul     DWORD PTR [reciph]
                     54: 
                     55:                add     eax,DWORD PTR [reciph]
                     56: 
                     57:                adc     edx,0
                     58: 
                     59:                mov     ebx,eax
                     60: 
                     61:                mov     edi,edx
                     62: 
                     63:                mov     eax,DWORD PTR [esi-4]
                     64: 
                     65:                not     eax
                     66: 
                     67:                mul     DWORD PTR [recipl]
                     68: 
                     69:                inc     edx
                     70: 
                     71:                mov     ebp,edx
                     72: 
                     73:                and     ebp,edi
                     74: 
                     75:                and     ebp,1
                     76: 
                     77: 
                     78: 
                     79:                add     eax,ebx
                     80: 
                     81:                adc     edi,edx
                     82: 
                     83:                rcr     edi,1
                     84: 
                     85:                mov     eax,DWORD PTR [esi-4]
                     86: 
                     87:                not     eax
                     88: 
                     89:                mul     DWORD PTR [reciph]
                     90: 
                     91:                mov     ebx,eax
                     92: 
                     93:                mov     ecx,edx
                     94: 
                     95:                mov     eax, DWORD PTR [esi]
                     96: 
                     97:                not eax
                     98: 
                     99:                mul     DWORD PTR [recipl]
                    100: 
                    101:                xor     eax,ebx
                    102: 
                    103:                and     ebp,eax
                    104: 
                    105:                xor     eax,ebx
                    106: 
                    107:                add     eax,ebx
                    108: 
                    109:                adc     edx,ecx
                    110: 
                    111:                rcr     edx,1
                    112: 
                    113:                rcr     eax,1
                    114: 
                    115:                add     eax,edi
                    116: 
                    117:                adc     edx,0
                    118: 
                    119:                add     eax,ebp
                    120: 
                    121:                adc     edx,0
                    122: 
                    123:                shl     eax,1
                    124: 
                    125:                rcl     edx,1
                    126: 
                    127:                rcl eax,1
                    128: 
                    129:                rcl     edx,1
                    130: 
                    131:                rcl     eax,1
                    132: 
                    133:                and     eax,3
                    134: 
                    135:                mov     ecx,eax
                    136: 
                    137:                mov     ebx,edx
                    138: 
                    139:                mov     eax,DWORD PTR [esi]
                    140: 
                    141:                not eax
                    142: 
                    143:                mul     DWORD PTR [reciph]
                    144: 
                    145:                shl     eax,1
                    146: 
                    147:                rcl     edx,1
                    148: 
                    149:                add     eax,ebx
                    150: 
                    151:                adc     edx,ecx
                    152: 
                    153:                mov     ecx, DWORD PTR [mshift]
                    154: 
                    155:                cmp     DWORD PTR [mshift],32
                    156: 
                    157:                je      L2
                    158: 
                    159:                shrd    eax,edx,cl
                    160: 
                    161:                shr             edx,cl
                    162: 
                    163:                or      edx,edx
                    164: 
                    165:                je      L1
                    166: 
                    167:                mov     eax,-1
                    168: 
                    169:                jmp     L1
                    170: 
                    171:        L2:
                    172: 
                    173:                xchg    eax,edx
                    174: 
                    175:        L1:
                    176: 
                    177:                pop     ebp
                    178: 
                    179:        }
                    180: 
                    181: }
                    182: 
                    183: 
                    184: 
                    185: #pragma warning(default:4035)
                    186: 
                    187: 
                    188: 
                    189: #endif /* X86 */
                    190: 
                    191: 
                    192: 
                    193: #if defined(_M_PPC)
                    194: 
                    195: #error "We've not written the PowerPC Code Yet!"
                    196: 
                    197: #endif /* _M_PPC */
                    198: 
                    199: 
                    200: 
                    201: #if defined(_M_ALPHA)
                    202: 
                    203: #error "We've not written the Alpha Code Yet!"
                    204: 
                    205: #endif /* _M_ALPHA */
                    206: 
                    207: 
                    208: 
                    209: #if defined(_M_MRX000)
                    210: 
                    211: #error "We've not written the MIPS Code Yet!"
                    212: 
                    213: #endif /* _M_MRX000 */
                    214: 
                    215: 
                    216: 
                    217: #endif /*#defined(SMITH) */
                    218: 
                    219: 
                    220: 
                    221: #endif /* USE_WIN32_ASSEMBLER */
                    222: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.