|
|
PGP 2.6.3i
#if defined(USE_WIN32_ASSEMBLER)
#include "mpilib.h"
#if defined(SMITH)
extern unit reciph,recipl;
extern int mshift;
#if !defined(_MSC_VER)
#error "This code needs a Microsoft compiler"
#endif
#if defined(_M_IX86)
#pragma warning(disable:4035)
unit P_QUO_DIGIT (unitptr dividend)
{
__asm{
mov esi,DWORD PTR [dividend]
push ebp
mov eax, DWORD PTR [esi-8]
not eax
mul DWORD PTR [reciph]
add eax,DWORD PTR [reciph]
adc edx,0
mov ebx,eax
mov edi,edx
mov eax,DWORD PTR [esi-4]
not eax
mul DWORD PTR [recipl]
inc edx
mov ebp,edx
and ebp,edi
and ebp,1
add eax,ebx
adc edi,edx
rcr edi,1
mov eax,DWORD PTR [esi-4]
not eax
mul DWORD PTR [reciph]
mov ebx,eax
mov ecx,edx
mov eax, DWORD PTR [esi]
not eax
mul DWORD PTR [recipl]
xor eax,ebx
and ebp,eax
xor eax,ebx
add eax,ebx
adc edx,ecx
rcr edx,1
rcr eax,1
add eax,edi
adc edx,0
add eax,ebp
adc edx,0
shl eax,1
rcl edx,1
rcl eax,1
rcl edx,1
rcl eax,1
and eax,3
mov ecx,eax
mov ebx,edx
mov eax,DWORD PTR [esi]
not eax
mul DWORD PTR [reciph]
shl eax,1
rcl edx,1
add eax,ebx
adc edx,ecx
mov ecx, DWORD PTR [mshift]
cmp DWORD PTR [mshift],32
je L2
shrd eax,edx,cl
shr edx,cl
or edx,edx
je L1
mov eax,-1
jmp L1
L2:
xchg eax,edx
L1:
pop ebp
}
}
#pragma warning(default:4035)
#endif /* X86 */
#if defined(_M_PPC)
#error "We've not written the PowerPC Code Yet!"
#endif /* _M_PPC */
#if defined(_M_ALPHA)
#error "We've not written the Alpha Code Yet!"
#endif /* _M_ALPHA */
#if defined(_M_MRX000)
#error "We've not written the MIPS Code Yet!"
#endif /* _M_MRX000 */
#endif /*#defined(SMITH) */
#endif /* USE_WIN32_ASSEMBLER */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.