13#if SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_ARM64
15#define SYMCRYPT_TRIALDIVISION_DIGIT_REDUCTION_CYCLES (16)
16#define SYMCRYPT_TRIALDIVISION_DIVIDE_TEST_CYCLES (2)
17#define SYMCRYPT_RABINMILLER_DIGIT_CYCLES (43000)
19#elif SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_ARM
21#define SYMCRYPT_TRIALDIVISION_DIGIT_REDUCTION_CYCLES (18)
22#define SYMCRYPT_TRIALDIVISION_DIVIDE_TEST_CYCLES (16)
23#define SYMCRYPT_RABINMILLER_DIGIT_CYCLES (25300)
27#define SYMCRYPT_TRIALDIVISION_DIGIT_REDUCTION_CYCLES (18)
28#define SYMCRYPT_TRIALDIVISION_DIVIDE_TEST_CYCLES (16)
29#define SYMCRYPT_RABINMILLER_DIGIT_CYCLES (25300)
34#define SYMCRYPT_TRIALDIVISION_MAX_SMALL_PRIME (1<<22)
67 pDst[
i ] = (pSrc[
i ] & m64) | (pDst[
i ] & ~m64 );
68 pDst[
i+1] = (pSrc[
i+1] & m64) | (pDst[
i+1] & ~m64 );
80#if SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_ARM64 | SYMCRYPT_CPU_ARM
112 tmp1 = (pSrc1[
i ] ^ pSrc2[
i ]) & m64;
113 tmp2 = (pSrc1[
i+1] ^ pSrc2[
i+1]) & m64;
115 pSrc1[
i ] ^= tmp1; pSrc2[
i ] ^= tmp1;
116 pSrc1[
i+1] ^= tmp2; pSrc2[
i+1] ^= tmp2;
231 pInt->type =
'gI' << 16;
232 pInt->nDigits = nDigits;
339 return piSrc->nDigits;
365 if( piDst->nDigits >
n )
370 if( piSrc->nDigits >
n )
387 scError = SYMCRYPT_BUFFER_TOO_SMALL;
413 vUpper =
v & 0xffff0000;
416 v = ((
v & 0xffff) & ~
mask) | ((vUpper >> 16) &
mask);
419 mask = (0 - vUpper) >> 16;
424 mask = (0 - vUpper) >> 16;
429 mask = (0 - vUpper) >> 16;
436 vBit1 = (
v >> 1) & 1;
444 res += (
v | vBit1) & 1;
481 foundMask = dIsNonzeroMask & searchingMask;
482 res |= nUint32 & foundMask;
483 msNonzeroWord |=
d & foundMask;
484 searchingMask &= ~foundMask;
557 scError = SYMCRYPT_INVALID_ARGUMENT;
561 for( windex = 0; windex < nWords; windex++ )
589 scError = SYMCRYPT_BUFFER_TOO_SMALL;
593 scError = SYMCRYPT_NO_ERROR;
651 scError = SYMCRYPT_INVALID_ARGUMENT;
655 for( windex = 0; windex < nWords; windex++ )
672 scError = SYMCRYPT_BUFFER_TOO_SMALL;
687 scError = SYMCRYPT_NO_ERROR;
725 return ((
UINT64)(
p[1]) << 32) |
p[0];
738 d = pSrc1[0] ^ u32Src2;
772 for(
i=0;
i <
n ;
i++ )
774 d |= pSrc1[
i] ^ pSrc2[
i];
860 pdDiv->type =
'gD' << 16;
861 pdDiv->nDigits = nDigits;
903 memcpy( pdDst, pdSrc, pdDst->cbSize );
928 return pContext->maxTrialPrime;
976 inv32 =
m32 ^ (((
m32 - 1) * 0x6) & 0x8);
979 inv32 = inv32 * (2 - inv32 *
m32 );
982 inv32 = inv32 * (2 - inv32 *
m32 );
985 inv32 = inv32 * (2 - inv32 *
m32 );
1004 pPrime->compareLimit = ((
UINT64) -1) / prime;
1031 for(
i=1;
i<9;
i++ )
1033 r = (
UINT32) (SYMCRYPT_MUL32x32TO64(
r,
f ) % primeProd);
1060 nSieve = (maxPrime - 1) / 2 + 1;
1063 if( pSieve ==
NULL )
1080 while(
si < nSieve )
1088 }
while( pSieve[
pi] != 0 );
1097 for(
i=1;
i<nSieve;
i++ )
1112 for(
i=1;
i<nSieve;
i++ )
1114 if( pSieve[
i] == 0 )
1123 if( pSieve !=
NULL )
1173 if( nDigits <= 1000 )
1192 if( nGroups == 0 || maxPrime * cPerPrimeCost >= cRabinMillerCost)
1197 minPrime = maxPrime;
1201 tmp64 = cRabinMillerCost / cPerPrimeCost;
1203 maxPrime = (
UINT32) tmp64;
1223 if(
n <
nPrimes * nGroups || nGroups == 0 )
1246 + (nP + 1) *
sizeof(
UINT32 );
1249 if( pAlloc ==
NULL )
1255 pAlloc +=
sizeof( *pRes );
1266 pAlloc += (nP + 1) *
sizeof(
UINT32 );
1321 for( iPrime = 0; iPrime < nP; iPrime++ )
1332#pragma warning( suppress: 4127 )
1340 while( iPrime < nP )
1349 nGroups = nG - iGroup;
1357 SYMCRYPT_ASSERT( M <= SYMCRYPT_MAX_SMALL_PRIME_GROUP_PRODUCT / pRes->pPrimes[iPrime] );
1372 if( pSmallPrimeList !=
NULL )
1376 pSmallPrimeList =
NULL;
1401 UINT32 nDigits = piSrc->nDigits;
1410 if( (*pSrc & 1) == 0 )
1421#if SYMCRYPT_FDEF_DIGIT_SIZE == 16
1422 Acc = Acc +
p[0] +
p[1] +
p[2] +
p[3];
1424#elif (SYMCRYPT_FDEF_DIGIT_SIZE % 32) == 0
1425 Acc = Acc +
p[0] +
p[1] +
p[2] +
p[3] +
p[4] +
p[5] +
p[6] +
p[7];
1431 }
while(
p < pSrc + nUint32 );
1451 pGroup = pContext->pGroupList;
1452 pPrime = pContext->pPrimeList;
1459#if SYMCRYPT_FDEF_DIGIT_SIZE == 16
1460 if( (nUint32 & 4) != 0 )
1466 SYMCRYPT_MUL32x32TO64(
p[1], pGroup->
factor[0] ) +
1467 SYMCRYPT_MUL32x32TO64(
p[2], pGroup->
factor[1] ) +
1468 SYMCRYPT_MUL32x32TO64(
p[3], pGroup->
factor[2] );
1474 SYMCRYPT_MUL32x32TO64(
p[1], pGroup->
factor[0] ) +
1475 SYMCRYPT_MUL32x32TO64(
p[2], pGroup->
factor[1] ) +
1476 SYMCRYPT_MUL32x32TO64(
p[3], pGroup->
factor[2] ) +
1477 SYMCRYPT_MUL32x32TO64(
p[4], pGroup->
factor[3] ) +
1478 SYMCRYPT_MUL32x32TO64(
p[5], pGroup->
factor[4] ) +
1479 SYMCRYPT_MUL32x32TO64(
p[6], pGroup->
factor[5] ) +
1480 SYMCRYPT_MUL32x32TO64(
p[7], pGroup->
factor[6] );
1482#elif (SYMCRYPT_FDEF_DIGIT_SIZE % 32) == 0
1487 SYMCRYPT_MUL32x32TO64(
p[1], pGroup->
factor[0] ) +
1488 SYMCRYPT_MUL32x32TO64(
p[2], pGroup->
factor[1] ) +
1489 SYMCRYPT_MUL32x32TO64(
p[3], pGroup->
factor[2] ) +
1490 SYMCRYPT_MUL32x32TO64(
p[4], pGroup->
factor[3] ) +
1491 SYMCRYPT_MUL32x32TO64(
p[5], pGroup->
factor[4] ) +
1492 SYMCRYPT_MUL32x32TO64(
p[6], pGroup->
factor[5] ) +
1493 SYMCRYPT_MUL32x32TO64(
p[7], pGroup->
factor[6] );
1503 SYMCRYPT_MUL32x32TO64(
p[1], pGroup->
factor[0] ) +
1504 SYMCRYPT_MUL32x32TO64(
p[2], pGroup->
factor[1] ) +
1505 SYMCRYPT_MUL32x32TO64(
p[3], pGroup->
factor[2] ) +
1506 SYMCRYPT_MUL32x32TO64(
p[4], pGroup->
factor[3] ) +
1507 SYMCRYPT_MUL32x32TO64(
p[5], pGroup->
factor[4] ) +
1508 SYMCRYPT_MUL32x32TO64(
p[6], pGroup->
factor[5] ) +
1509 SYMCRYPT_MUL32x32TO64(
p[7], pGroup->
factor[6] ) +
1510 SYMCRYPT_MUL32x32TO64( (
UINT32) Acc , pGroup->
factor[7] ) +
1511 SYMCRYPT_MUL32x32TO64( (
UINT32)(Acc >> 32), pGroup->
factor[8] );
1519 res = pContext->pPrimes[ (pPrime - pContext->pPrimeList) ];
COMPILER_DEPENDENT_UINT64 UINT64
unsigned __int64 * PUINT64
static void cleanup(void)
#define SYMCRYPT_RABINMILLER_DIGIT_CYCLES
UINT32 SYMCRYPT_CALL SymCryptFdefIntGetValueLsbits32(_In_ PCSYMCRYPT_INT piSrc)
VOID SymCryptFdefIntMaskedCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 mask)
UINT32 SYMCRYPT_CALL SymCryptFdefRawIsEqualUint32(_In_reads_(nDigits *SYMCRYPT_FDEF_DIGIT_NUINT32) PCUINT32 pSrc1, UINT32 nDigits, _In_ UINT32 u32Src2)
VOID SYMCRYPT_CALL SymCryptFdefConditionalSwapC(_Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbSrc1, _Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbSrc2, UINT32 nDigits, UINT32 cond)
VOID SYMCRYPT_CALL SymCryptFdefMaskedCopyC(_In_reads_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PCBYTE pbSrc, _Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbDst, UINT32 nDigits, UINT32 mask)
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptFdefDivisorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
VOID SYMCRYPT_CALL SymCryptFdefIntConditionalSwap(_Inout_ PSYMCRYPT_INT piSrc1, _Inout_ PSYMCRYPT_INT piSrc2, UINT32 cond)
VOID SYMCRYPT_CALL SymCryptFdefFreeTrialDivisionContext(PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
VOID SYMCRYPT_CALL SymCryptFdefMaskedCopy(_In_reads_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PCBYTE pbSrc, _Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbDst, UINT32 nDigits, UINT32 mask)
UINT32 SYMCRYPT_CALL SymCryptFdefIntFindSmallDivisor(_In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext, _In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT32 SYMCRYPT_CALL SymCryptGenerateSmallPrimes(UINT32 maxPrime, PUINT32 *ppList)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefRawSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _Out_writes_(nDigits *SYMCRYPT_FDEF_DIGIT_NUINT32) PUINT32 pDst, UINT32 nDigits)
UINT32 SYMCRYPT_CALL SymCryptFdefIntBitsizeOfValue(_In_ PCSYMCRYPT_INT piSrc)
VOID SymCryptFdefDivisorCopy(_In_ PCSYMCRYPT_DIVISOR pdSrc, _Out_ PSYMCRYPT_DIVISOR pdDst)
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntAllocate(UINT32 nDigits)
UINT32 SymCryptFdefDigitsFromBits(UINT32 nBits)
UINT32 SYMCRYPT_CALL SymCryptFdefIntIsEqualUint32(_In_ PCSYMCRYPT_INT piSrc1, _In_ UINT32 u32Src2)
PCSYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_CALL SymCryptFdefCreateTrialDivisionContext(UINT32 nDigits)
VOID SYMCRYPT_CALL SymCryptFdefConditionalSwap(_Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbSrc1, _Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbSrc2, UINT32 nDigits, UINT32 cond)
VOID SymCryptFdefDivisorCopyFixup(_In_ PCSYMCRYPT_DIVISOR pdSrc, _Out_ PSYMCRYPT_DIVISOR pdDst)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefIntSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _Out_ PSYMCRYPT_INT piDst)
UINT32 SYMCRYPT_CALL SymCryptFdefIntBitsizeOfObject(_In_ PCSYMCRYPT_INT piSrc)
UINT32 SYMCRYPT_CALL SymCryptFdefIntIsEqual(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
VOID SYMCRYPT_CALL SymCryptFdefInitTrialdivisionPrime(UINT32 prime, _Out_ PSYMCRYPT_TRIALDIVISION_PRIME pPrime)
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofDivisorFromDigits(UINT32 nDigits)
VOID SymCryptFdefIntCopyFixup(_In_ PCSYMCRYPT_INT pSrc, _Out_ PSYMCRYPT_INT pDst)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefIntGetValue(_In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format)
#define SYMCRYPT_TRIALDIVISION_DIGIT_REDUCTION_CYCLES
UINT32 SYMCRYPT_CALL SymCryptFdefNumberofDigitsFromInt(_In_ PCSYMCRYPT_INT piSrc)
UINT32 SYMCRYPT_CALL SymCryptFdefBitsizeOfUint32(UINT32 v)
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
UINT64 SymCryptInverseMod2e64(UINT64 m)
VOID SYMCRYPT_CALL SymCryptFdefIntConditionalCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 cond)
C_ASSERT(SYMCRYPT_INT_MAX_BITS<(1<< 30))
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptFdefDivisorAllocate(UINT32 nDigits)
SYMCRYPT_ERROR SymCryptFdefIntCopyMixedSize(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
VOID SYMCRYPT_CALL SymCryptFdefClaimScratch(PBYTE pbScratch, SIZE_T cbScratch, SIZE_T cbMin)
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofIntFromDigits(UINT32 nDigits)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefRawGetValue(_In_reads_(nDigits *SYMCRYPT_FDEF_DIGIT_NUINT32) PCUINT32 pSrc, UINT32 nDigits, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format)
VOID SYMCRYPT_CALL SymCryptFdefIntSetValueUint32(UINT32 u32Src, _Out_ PSYMCRYPT_INT piDst)
VOID SymCryptFdefIntCopy(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
UINT32 SymCryptTestTrialdivisionMaxSmallPrime(_In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
VOID SYMCRYPT_CALL SymCryptFdefIntSetValueUint64(UINT64 u64Src, _Out_ PSYMCRYPT_INT piDst)
#define SYMCRYPT_TRIALDIVISION_DIVIDE_TEST_CYCLES
VOID SYMCRYPT_CALL SymCryptFdefInitTrialDivisionGroup(PSYMCRYPT_TRIALDIVISION_GROUP pGroup, UINT32 nPrimes, UINT32 primeProd)
#define SYMCRYPT_TRIALDIVISION_MAX_SMALL_PRIME
FORCEINLINE UINT32 SymCryptIsMultipleOfSmallPrime(UINT64 value, PCSYMCRYPT_TRIALDIVISION_PRIME pPrime)
UINT64 SYMCRYPT_CALL SymCryptFdefIntGetValueLsbits64(_In_ PCSYMCRYPT_INT piSrc)
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLubyte GLubyte GLubyte GLubyte w
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
void SYMCRYPT_CALL SymCryptCallbackFree(void *ptr)
void *SYMCRYPT_CALL SymCryptCallbackAlloc(SIZE_T size)
#define memcpy(s1, s2, n)
static PROCESS_INFORMATION pi
#define _In_reads_bytes_(s)
#define _Inout_updates_bytes_(s)
#define _Out_writes_bytes_(s)
#define UNREFERENCED_PARAMETER(P)
#define SYMCRYPT_ASSERT_ASYM_ALIGNED(_p)
#define SYMCRYPT_OBJ_NUINT32(_p)
#define SYMCRYPT_OBJ_NBYTES(_p)
VOID SYMCRYPT_CALL SymCryptFdefMaskedCopyAsm(_In_reads_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PCBYTE pbSrc, _Inout_updates_bytes_(nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PBYTE pbDst, UINT32 nDigits, UINT32 mask)
#define SYMCRYPT_FDEF_DIGIT_NUINT32
UINT32 UINT32 UINT32 UINT32 cbScratch
const SYMCRYPT_SMALL_PRIME_GROUPS_SPEC g_SymCryptSmallPrimeGroupsSpec[]
#define SYMCRYPT_MAX_SMALL_PRIME_GROUP_PRODUCT
SYMCRYPT_TRIALDIVISION_PRIME Primes3_5_17[3]
PSYMCRYPT_TRIALDIVISION_PRIME pPrimeList
PSYMCRYPT_TRIALDIVISION_GROUP pGroupList
#define SYMCRYPT_ASSERT(_x)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
enum _SYMCRYPT_NUMBER_FORMAT SYMCRYPT_NUMBER_FORMAT
@ SYMCRYPT_NUMBER_FORMAT_MSB_FIRST
@ SYMCRYPT_NUMBER_FORMAT_LSB_FIRST
#define SYMCRYPT_MASK32_NONZERO(_v)
struct _SYMCRYPT_TRIALDIVISION_PRIME SYMCRYPT_TRIALDIVISION_PRIME
#define SYMCRYPT_FDEF_DIGIT_SIZE
struct _SYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_TRIALDIVISION_CONTEXT
#define SYMCRYPT_FDEF_UPB_DIGITS
#define SYMCRYPT_FDEF_DIGIT_BITS
struct _SYMCRYPT_TRIALDIVISION_GROUP * PSYMCRYPT_TRIALDIVISION_GROUP
const SYMCRYPT_DIVISOR * PCSYMCRYPT_DIVISOR
struct _SYMCRYPT_TRIALDIVISION_PRIME * PSYMCRYPT_TRIALDIVISION_PRIME
struct _SYMCRYPT_INT SYMCRYPT_INT
#define SYMCRYPT_MIN(_a, _b)
#define SYMCRYPT_MAX(_a, _b)
struct _SYMCRYPT_TRIALDIVISION_GROUP SYMCRYPT_TRIALDIVISION_GROUP
#define SYMCRYPT_SET_MAGIC(p)
#define SYMCRYPT_INT_MAX_BITS
#define SYMCRYPT_FIELD_OFFSET(type, field)
const SYMCRYPT_INT * PCSYMCRYPT_INT
struct _SYMCRYPT_TRIALDIVISION_CONTEXT * PSYMCRYPT_TRIALDIVISION_CONTEXT
SYMCRYPT_MAGIC_FIELD SYMCRYPT_ASYM_ALIGN union @5237 ti
struct _SYMCRYPT_DIVISOR SYMCRYPT_DIVISOR
#define SYMCRYPT_FDEF_DIGITS_FROM_BITS(_bits)
SYMCRYPT_DIVISOR * PSYMCRYPT_DIVISOR
#define SYMCRYPT_MASK32_ZERO(_v)
#define SYMCRYPT_FDEF_INT_PUINT32(p)
#define SYMCRYPT_MASK32_SET
SYMCRYPT_INT * PSYMCRYPT_INT
#define SYMCRYPT_CHECK_MAGIC(p)
UINT32 SYMCRYPT_CALL SymCryptSizeofDivisorFromDigits(UINT32 nDigits)
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)