win32k.sys

File version: C-code: Assembler-code:  

5.00.2195.7034: FS_PUBLIC ErrorCode fsg_RunPreProgram(
sfac_ClientRec    *ClientInfo,
LocalMaxProfile   *pMaxProfile, /* Max Profile Table */
fsg_TransformRec  *TransformInfo,
void              *pvGlobalGS,
fsg_WorkSpaceAddr *pWorkSpaceAddr,
void              *pvTwilightElement,
FntTraceFunc       traceFunc
){
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
/*
Runs the pre-program and scales
the control value table
*/
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
- no c code -
// save some registers
00040BC0|push ebx
00040BC1|push esi
00040BC8|push edi

// ebx = address(ClientInfo)
00040BC6|mov ebx, ecx

// edi = address(pMaxProfile)
00040BC9|mov edi, edx
 
5.00.2195.7610: // save some registers
000417D0|push ebx
000417D1|push esi
000417D8|push edi

// ebx = address(ClientInfo)
000417D6|mov ebx, ecx

// edi = address(pMaxProfile)
000417D9|mov edi, edx
5.00.2195.7640: // save some registers
00041B30|push ebx
00041B31|push esi
00041B38|push edi

// ebx = address(ClientInfo)
00041B36|mov ebx, ecx

// edi = address(pMaxProfile)
00041B39|mov edi, edx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
ErrorCode        result;
F26Dot6         *pfxCVT;
// The variable "result" will
// be stored in the register "eax".

// The variable "pfxCVT" will be
// stored where currently the
// input parameter "pvGlobalGS"
// is stored.
 
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
fnt_ElementType *pTwilightElement;

pTwilightElement = (fnt_ElementType *)pvTwilightElement;
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
itrp_ResetMaxInstructionCounter(
pvGlobalGS
);
// esi = address(pvGlobalGS)
00040BC2|mov esi, [esp + 10h]

// ecx = address(pvGlobalGS)
00040BCB|mov ecx, esi

// call(itrp_ResetMaxInstructionCounter)
00040BCD|call 0015D490
 
5.00.2195.7610: // esi = address(pvGlobalGS)
000417D2|mov esi, [esp + 10h]

// ecx = address(pvGlobalGS)
000417DB|mov ecx, esi

// call(itrp_ResetMaxInstructionCounter)
000417DD|call 00167710
5.00.2195.7640: // esi = address(pvGlobalGS)
00041B32|mov esi, [esp + 10h]

// ecx = address(pvGlobalGS)
00041B3B|mov ecx, esi

// call(itrp_ResetMaxInstructionCounter)
00041B3D|call 00167C40
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
result = itrp_SetDefaults(
pvGlobalGS,
TransformInfo->fxPixelDiameter
);
// ecx = address(pvGlobalGS)
00040BD6|mov ecx, esi

// edx = TransformInfo->fxPixelDiameter [start]
// eax = address(TransformInfo)
00040BD2|mov eax, [esp + 10h]

// edx = TransformInfo->fxPixelDiameter
00040BD8|mov edx, [eax + 34h]
// edx = TransformInfo->fxPixelDiameter [end]

// call(itrp_SetDefaults)
00040BDB|call 00040CE0
 
5.00.2195.7610: // ecx = address(pvGlobalGS)
000417E6|mov ecx, esi

// edx = TransformInfo->fxPixelDiameter [start]
// eax = address(TransformInfo)
000417E2|mov eax, [esp + 10h]

// edx = TransformInfo->fxPixelDiameter
000417E8|mov edx, [eax + 34h]
// edx = TransformInfo->fxPixelDiameter [end]

// call(itrp_SetDefaults)
000417EB|call 000418F0
5.00.2195.7640: // ecx = address(pvGlobalGS)
00041B46|mov ecx, esi

// edx = TransformInfo->fxPixelDiameter [start]
// eax = address(TransformInfo)
00041B42|mov eax, [esp + 10h]

// edx = TransformInfo->fxPixelDiameter
00041B48|mov edx, [eax + 34h]br>
// edx = TransformInfo->fxPixelDiameter [end]

// call(itrp_SetDefaults)
00041B4B|call 00041C50
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
if(result != NO_ERR){
return result;
}
// if: result
// then: jump to:
restore and return
00040BE0|test eax, eax
00040BE2|jnz 00040C3B
 
5.00.2195.7610: // if: result
// then: jump to:
restore and return
000417F0|test eax, eax
000417F2|jnz 0004184B
5.00.2195.7640: // if: result
// then: jump to:
restore and return
00041B50|test eax, eax
00041B52|jnz 00041BAB
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
scl_GetCVTPtr(
pvGlobalGS,
&pfxCVT
);
// ecx = address(pvGlobalGS)
00040BE8|mov ecx, esi

// edx = address(pfxCVT)
00040BE4|lea edx, [esp + 14h]

// call(scl_GetCVTPtr)
00040BEA|call 00040D70
 
5.00.2195.7610: // ecx = address(pvGlobalGS)
000417F8|mov ecx, esi

// edx = address(pfxCVT)
000417F4|lea edx, [esp + 14h]

// call(scl_GetCVTPtr)
000417FA|call 00041980
5.00.2195.7640: // ecx = address(pvGlobalGS)
00041B58|mov ecx, esi

// edx = address(pfxCVT)
00041B54|lea edx, [esp + 14h]

// call(scl_GetCVTPtr)
00041B5A|call 00041CE0
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
result = sfac_CopyCVT(
ClientInfo,
pfxCVT
);
// ecx = address(ClientInfo)
00040BF3|mov ecx, ebx

// edx = address(pfxCVT)
00040BEF|mov edx, [esp + 14h]

// call(sfac_CopyCVT)
00040BF5|call 00041170
 
5.00.2195.7610: // ecx = address(ClientInfo)
00041803|mov ecx, ebx

// edx = address(pfxCVT)
000417FF|mov edx, [esp + 14h]

// call(sfac_CopyCVT)
00041805|call 00041D80
5.00.2195.7640: // ecx = address(ClientInfo)
00041B63|mov ecx, ebx

// edx = address(pfxCVT)
00041B5F|mov edx, [esp + 14h]

// call(sfac_CopyCVT)
00041B65|call fn_000420E0
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
if(result != NO_ERR){
return result;
}
// if: result
// then: jump to:
restore and return
00040BFA|test eax, eax
00040BFC|jnz 00040C3B
 
5.00.2195.7610: // if: result
// then: jump to:
restore and return
0004180A|test eax, eax
0004180C|jnz 0004184B
5.00.2195.7640: // if: result
// then: jump to:
restore and return
00041B6A|test eax, eax
00041B6C|jnz 00041BAB
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
scl_ScaleCVT(
pvGlobalGS,
pfxCVT
);
// ecx = address(pvGlobalGS)
00040C02|mov ecx, esi

// edx = address(pfxCVT)
00040BFE|mov edx, [esp + 14h]

// call(scl_ScaleCVT)
00040C04|call 00041200
 
5.00.2195.7610: // ecx = address(pvGlobalGS)
00041812|mov ecx, esi

// edx = address(pfxCVT)
0004180E|mov edx, [esp + 14h]

// call(scl_ScaleCVT)
00041814|call 00041E10
5.00.2195.7640: // ecx = address(pvGlobalGS)
00041B72|mov ecx, esi

// edx = address(pfxCVT)
00041B6E|mov edx, [esp + 14h]

// call(scl_ScaleCVT)
00041B74|call 00042170
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
00040C0D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00040C15|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00040C09|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00040C13|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00040C11|push 1

// call(scl_InitializeTwilightContours)
00040C17|call 00027640
 
5.00.2195.7610:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
0004181D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00041825|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00041819|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041823|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00041821|push 1

// call(scl_ZeroOutlineData)
00041827|call 00041990
 
5.00.2195.7640:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
00041B7D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00041B85|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00041B79|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B83|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00041B81|push 1

// call(scl_InitializeTwilightContours)
00041B87|call 00027EE0
 
5.00.2195.7641:
5.00.2195.7642:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
00041B7D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00041B85|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00041B79|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B83|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00041B81|push 1

// call(scl_ZeroOutlineData)
00041B87|call 00041CF0
 
5.00.2196.0001-V8:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
00041B7D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00041B85|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00041B79|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B83|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00041B81|push 1

// call(scl_InitializeTwilightContours)
00041B87|call 00027EE0
 
5.00.2196.0002-V1:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
(int16)pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement) [start]
// ebx = address(pvTwilightElement)
00041B7D|mov ebx, [esp + 1Ch]

// ecx = address(pvTwilightElement)
00041B85|mov ecx, ebx
// ecx = address(pvTwilightElement) [end]

// edx = pMaxProfile->maxTwilightPoints + xx xx [start]
// di = pMaxProfile->maxTwilightPoints
00041B79|mov di, [edi + 10h]

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B83|mov edx, edi
// edx = pMaxProfile->maxTwilightPoints + xx xx [end]

// push(MAX_TWILIGHT_CONTOURS)
00041B81|push 1

// call(scl_ZeroOutlineData)
00041B87|call 00041CF0
 

5.00.2195.7034:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
00040C1E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
00040C1C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00040C20|push 1

// call(scl_ZeroOutlineData)
00040C22|call 00040D80
 
5.00.2195.7610:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
0004182E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
0004182C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00041830|push 1

// call(scl_InitializeTwilightContours)
00041832|call 00027D90
 
5.00.2195.7640:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
00041B8E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B8C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00041B90|push 1

// call(scl_ZeroOutlineData)
00041B92|call 00041CF0
 
5.00.2195.7641:
5.00.2195.7642:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
00041B8E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B8C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00041B90|push 1

// call(scl_InitializeTwilightContours)
00041B92|call 00027EE0
 
5.00.2196.0001-V8:
// bug related note:
//    
scl_ZeroOutlineData will set
//    pTwilightElement->ep to 0


scl_ZeroOutlineData(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
00041B8E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B8C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00041B90|push 1

// call(scl_ZeroOutlineData)
00041B92|call 00041CF0
 
5.00.2196.0002-V1:
// bug related note:
//    
scl_InitializeTwilightContours will
//    set pTwilightElement->ep[0] to
//    pMaxProfile->maxTwilightPoints - 1


scl_InitializeTwilightContours(
pTwilightElement,
pMaxProfile->maxTwilightPoints,
MAX_TWILIGHT_CONTOURS
);
// ecx = address(pvTwilightElement)
00041B8E|mov ecx, ebx

// edx = pMaxProfile->maxTwilightPoints + xx xx
00041B8C|mov edx, edi

// push(MAX_TWILIGHT_CONTOURS)
00041B90|push 1

// call(scl_InitializeTwilightContours)
00041B92|call 00027EE0
 

5.00.2195.7034:
result = itrp_ExecutePrePgm(
pTwilightElement,
pWorkSpaceAddr->pGlyphElement,
pvGlobalGS,
traceFunc
);
// edx = pWorkSpaceAddr->pGlyphElement [start]
// edx = address(pWorkSpaceAddr)
00040C2B|mov edx, [esp + 18h]

// edx = pWorkSpaceAddr->pGlyphElement
00040C31|mov edx, [edx + 8]
// edx = pWorkSpaceAddr->pGlyphElement [end]

// push(traceFunc) [start]
// ecx = traceFunc
00040C27|mov ecx, [esp + 20h]

// push(traceFunc)
00040C2F|push ecx
// push(traceFunc) [end]

// push(address(pvGlobalGS))
00040C30|push esi

// ecx = address(pvTwilightElement)
00040C34|mov ecx, ebx

// call(itrp_ExecutePrePgm)
00040C36|call 00041840
 
5.00.2195.7610: // edx = pWorkSpaceAddr->pGlyphElement [start]
// edx = address(pWorkSpaceAddr)
0004183B|mov edx, [esp + 18h]

// edx = pWorkSpaceAddr->pGlyphElement
00041841|mov edx, [edx + 8]
// edx = pWorkSpaceAddr->pGlyphElement [end]

// push(traceFunc) [start]
// ecx = traceFunc
00041837|mov ecx, [esp + 20h]

// push(traceFunc)
0004183F|push ecx
// push(traceFunc) [end]

// push(address(pvGlobalGS))
00041840|push esi

// ecx = address(pvTwilightElement)
00041844|mov ecx, ebx

// call(itrp_ExecutePrePgm)
00041846|call 000424B0
5.00.2195.7640: // edx = pWorkSpaceAddr->pGlyphElement [start]
// edx = address(pWorkSpaceAddr)
00041B9B|mov edx, [esp + 18h]

// edx = pWorkSpaceAddr->pGlyphElement
00041BA1|mov edx, [edx + 8]
// edx = pWorkSpaceAddr->pGlyphElement [end]

// push(traceFunc) [start]
// ecx = traceFunc
00041B97|mov ecx, [esp + 20h]

// push(traceFunc)
00041B9F|push ecx
// push(traceFunc) [end]

// push(address(pvGlobalGS))
00041BA0|push esi

// ecx = address(pvTwilightElement)
00041BA4|mov ecx, ebx

// call(itrp_ExecutePrePgm)
00041BA6|call 00042810
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
return result;
}
// 00040C3B|- restore and return -

// restore some registers
00040C3B|pop edi
00040C3C|pop esi
00040C3D|pop ebx

// return and throw 5 input parameters from the stack
00040C3E|ret 14h

00040C41|nop
00040C42|nop
00040C43|nop
00040C44|nop
00040C45|nop
00040C46|nop
00040C47|nop
00040C48|nop
00040C49|nop
00040C4A|nop
00040C4B|nop
00040C4C|nop
00040C4D|nop
00040C4E|nop
00040C4F|nop
 
5.00.2195.7610: // 0004184B|- restore and return -

// restore some registers
0004184B|pop edi
0004184C|pop esi
0004184D|pop ebx

// return and throw 5 input parameters from the stack
0004184E|ret 14h

00041851|nop
00041852|nop
00041853|nop
00041854|nop
00041855|nop
00041856|nop
00041857|nop
00041858|nop
00041859|nop
0004185A|nop
0004185B|nop
0004185C|nop
0004185D|nop
0004185E|nop
0004185F|nop
5.00.2195.7640: // 00041BAB|- restore and return -

// restore some registers
00041BAB|pop edi
00041BAC|pop esi
00041BAD|pop ebx

// return and throw 5 input parameters from the stack
00041BAE|ret 14h

00041BB1|nop
00041BB2|nop
00041BB3|nop
00041BB4|nop
00041BB5|nop
00041BB6|nop
00041BB7|nop
00041BB8|nop
00041BB9|nop
00041BBA|nop
00041BBB|nop
00041BBC|nop
00041BBD|nop
00041BBE|nop
00041BBF|nop
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034: FS_PUBLIC void scl_InitializeTwilightContours(
fnt_ElementType *pElement, /* Element */
int16            sMaxPoints,
int16            sMaxContours
){
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
/*
writes some payload to the twilight element
*/
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
pElement->sp[0] = 0;
// eax = address(pElement->sp[0])
00027641|mov eax, [ecx + 1Ch]

// pElement->sp[0] = 0
0002764D|mov word ptr [eax], 0
 
5.00.2195.7610: // eax = address(pElement->sp[0])
00027D91|mov eax, [ecx + 1Ch]

// pElement->sp[0] = 0
00027D9D|mov word ptr [eax], 0
5.00.2195.7640: // eax = address(pElement->sp[0])
00027EE1|mov eax, [ecx + 1Ch]

// pElement->sp[0] = 0
00027EED|mov word ptr [eax], 0
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
pElement->ep[0] = sMaxPoints - 1;
// dx = pMaxProfile->maxTwilightPoints - 1 [start]
// The following code results from the problem
// the compile has with a "2 byte"-sized
// variable.
//
// The clean-up of the stack happens further
// down in the code at the offset "00027662".


// make some space on the stack
00027640|push ecx

// RAM[esp] = pMaxProfile->maxTwilightPoints
00027644|mov [esp],dx

// edx = RAM[esp]
00027649|mov edx, [esp]

// edx--
00027655|dec edx
// dx = pMaxProfile->maxTwilightPoints - 1 [end]

// eax = address(pElement->ep[0])
00027652|mov eax, [ecx + 20h]

// pElement->ep[0] = pMaxProfile->maxTwilightPoints - 1
00027656|mov [eax], dx
 
5.00.2195.7610: // dx = pMaxProfile->maxTwilightPoints - 1 [start]
// The following code results from the problem
// the compile has with a "2 byte"-sized
// variable.
//
// The clean-up of the stack happens further
// down in the code at the offset "00027DB2".


// make some space on the stack
00027D90|push ecx

// RAM[esp] = pMaxProfile->maxTwilightPoints
00027D94|mov [esp], dx

// edx = RAM[esp]
00027D99|mov edx, [esp]

// edx--
00027DA5|dec edx
// dx = pMaxProfile->maxTwilightPoints - 1 [end]

// eax = address(pElement->ep[0])
00027DA2|mov eax, [ecx + 20h]

// pElement->ep[0] = pMaxProfile->maxTwilightPoints - 1
00027DA6|mov [eax], dx
5.00.2195.7640: // dx = pMaxProfile->maxTwilightPoints - 1 [start]
// The following code results from the problem
// the compile has with a "2 byte"-sized
// variable.
//
// The clean-up of the stack happens further
// down in the code at the offset "00027F02".


// make some space on the stack
00027EE0|push ecx

// RAM[esp] = pMaxProfile->maxTwilightPoints
00027EE4|mov [esp], dx

// edx = RAM[esp]
00027EE9|mov edx, [esp]

// edx--
00027EF5|dec edx
// dx = pMaxProfile->maxTwilightPoints - 1 [end]

// eax = address(pElement->ep[0])
00027EF2|mov eax, [ecx + 20h]

// pElement->ep[0] = pMaxProfile->maxTwilightPoints - 1
00027EF6|mov [eax], dx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
pElement->nc    = sMaxContours;
// dx = sMaxContours
00027659|mov dx, [esp + 8]

// pElement->nc = sMaxContours
0002765E|mov [ecx + 28h], dx
 
5.00.2195.7610: // dx = sMaxContours
00027DA9|mov dx, [esp + 8]

// pElement->nc = sMaxContours
00027DAE|mov [ecx + 28h], dx
5.00.2195.7640: // dx = sMaxContours
00027EF9|mov dx, [esp + 8]

// pElement->nc = sMaxContours
00027EFE|mov [ecx + 28h], dx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
- no c code -
// clean up the stack
00027662|pop ecx
 
5.00.2195.7610: // clean up the stack
00027DB2|pop ecx
5.00.2195.7640: // clean up the stack
00027F02|pop ecx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034: } // return and throw 1 input parameter from the stack
00027663|ret 4

00027666|nop
00027667|nop
00027668|nop
00027669|nop
0002766A|nop
0002766B|nop
0002766C|nop
0002766D|nop
0002766E|nop
0002766F|nop
 
5.00.2195.7610: // return and throw 1 input parameter from the stack
00027DB3|ret 4

00027DB6|nop
00027DB7|nop
00027DB8|nop
00027DB9|nop
00027DBA|nop
00027DBB|nop
00027DBC|nop
00027DBD|nop
00027DBE|nop
00027DBF|nop
5.00.2195.7640: // return and throw 1 input parameter from the stack
00027F03|ret 4

00027F06|nop
00027F07|nop
00027F08|nop
00027F09|nop
00027F0A|nop
00027F0B|nop
00027F0C|nop
00027F0D|nop
00027F0E|nop
00027F0F|nop
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034: FS_PUBLIC void scl_ZeroOutlineData(
fnt_ElementType *pElement, /* Element pointer */
uint16           usNumberOfPoints,
uint16           usNumberOfContours
){
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
/*
writes some default values to the twilight element
*/
- no assembler code -  
5.00.2195.7610:
5.00.2195.7640:
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
- no c code -
// save some registers
00040D86|push ebx
00040D8B|push ebp
00040D92|push esi
00040D95|push edi
 
5.00.2195.7610: // save some registers
00041996|push ebx
0004199B|push ebp
000419A2|push esi
000419A5|push edi
5.00.2195.7640: // save some registers
00041CF6|push ebx
00041CFB|push ebp
00041D02|push esi
00041D05|push edi
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->x[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// make some space on the stack
00040D80|push ecx

// RAM[esp] = usNumberOfPoints
00040D81|mov [esp], dx

// ebx = usNumberOfPoints
00040D87|mov ebx, [esp + 4]

// ebx =& FF FF|h
00040D8C|and ebx, FFFFh

// edx = address(pElement)
00040D93|mov edx, ecx

// esi = usNumberOfPoints * 4|d
00040D96|lea esi, [ebx * 4]

// eax = 0
00040D9D|xor eax, eax

// edi = address(pElement->x)
00040D9F|mov edi, [edx]

// ecx = usNumberOfPoints * 4|d
00040DA1|mov ecx, esi

// ebp = usNumberOfPoints * 4|d
00040DA3|mov ebp, ecx

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040DA5|shr ecx, 2

// pElement->x = 0
00040DA8|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040DAA|mov ecx, ebp

// ecx =& 11|b
00040DAC|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040DAF|rep stosb
 
5.00.2195.7610: // make some space on the stack
00041990|push ecx

// RAM[esp] = usNumberOfPoints
00041991|mov [esp], dx

// ebx = usNumberOfPoints
00041997|mov ebx, [esp + 4]

// ebx =& FF FF|h
0004199C|and ebx, FFFFh

// edx = address(pElement)
000419A3|mov edx, ecx

// esi = usNumberOfPoints * 4|d
000419A6|lea esi, [ebx * 4]

// eax = 0
000419AD|xor eax, eax

// edi = address(pElement->x)
000419AF|mov edi, [edx]

// ecx = usNumberOfPoints * 4|d
000419B1|mov ecx, esi

// ebp = usNumberOfPoints * 4|d
000419B3|mov ebp, ecx

// ecx = (usNumberOfPoints * 4|d) / 4|d
000419B5|shr ecx, 2

// pElement->x = 0
000419B8|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
000419BA|mov ecx, ebp

// ecx =& 11|b
000419BC|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
000419BF|rep stosb
5.00.2195.7640: // make some space on the stack
00041CF0|push ecx

// RAM[esp] = usNumberOfPoints
00041CF1|mov [esp], dx

// ebx = usNumberOfPoints
00041CF7|mov ebx, [esp + 4]

// ebx =& FF FF|h
00041CFC|and ebx, FFFFh

// edx = address(pElement)
00041D03|mov edx, ecx

// esi = usNumberOfPoints * 4|d
00041D06|lea esi, [ebx * 4]

// eax = 0
00041D0D|xor eax, eax

// edi = address(pElement->x)
00041D0F|mov edi, [edx]

// ecx = usNumberOfPoints * 4|d
00041D11|mov ecx, esi

// ebp = usNumberOfPoints * 4|d
00041D13|mov ebp, ecx

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D15|shr ecx, 2

// pElement->x = 0
00041D18|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D1A|mov ecx, ebp

// ecx =& 11|b
00041D1C|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D1F|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->ox[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// edi = address(pElement->ox)
00040DB1|mov edi, [edx + 8]

// ecx = usNumberOfPoints * 4|d
00040DB4|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040DB6|shr ecx, 2

// eax = 0
00040DB9|xor eax, eax

// pElement->ox = 0
00040DBB|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040DBD|mov ecx, ebp

// ecx =& 11|b
00040DBF|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040DC2|rep stosb
 
5.00.2195.7610: // edi = address(pElement->ox)
000419C1|mov edi, [edx + 8]

// ecx = usNumberOfPoints * 4|d
000419C4|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
000419C6|shr ecx, 2

// eax = 0
000419C9|xor eax, eax

// pElement->ox = 0
000419CB|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
000419CD|mov ecx, ebp

// ecx =& 11|b
000419CF|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
000419D2|rep stosb
5.00.2195.7640: // edi = address(pElement->ox)
00041D21|mov edi, [edx + 8]

// ecx = usNumberOfPoints * 4|d
00041D24|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D26|shr ecx, 2

// eax = 0
00041D29|xor eax, eax

// pElement->ox = 0
00041D2B|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D2D|mov ecx, ebp

// ecx =& 11|b
00041D2F|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D32|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->oox[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// edi = address(pElement->oox)
00040DC4|mov edi, [edx + 10h]

// ecx = usNumberOfPoints * 4|d
00040DC7|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040DC9|shr ecx, 2

// eax = 0
00040DCC|xor eax, eax

// pElement->oox = 0
00040DCE|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040DD0|mov ecx, ebp

// ecx =& 11|b
00040DD2|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040DD5|rep stosb
 
5.00.2195.7610: // edi = address(pElement->oox)
000419D4|mov edi, [edx + 10h]

// ecx = usNumberOfPoints * 4|d
000419D7|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
000419D9|shr ecx, 2

// eax = 0
000419DC|xor eax, eax

// pElement->oox = 0
000419DE|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
000419E0|mov ecx, ebp

// ecx =& 11|b
000419E2|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
000419E5|rep stosb
5.00.2195.7640: // edi = address(pElement->oox)
00041D34|mov edi, [edx + 10h]

// ecx = usNumberOfPoints * 4|d
00041D37|mov ecx, esi

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D39|shr ecx, 2

// eax = 0
00041D3C|xor eax, eax

// pElement->oox = 0
00041D3E|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D40|mov ecx, ebp

// ecx =& 11|b
00041D42|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D45|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->y[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// edi = address(pElement->y)
00040DD7|mov edi, [edx + 4h]

// ecx = usNumberOfPoints * 4|d
00040DDA|mov ecx, esi

// eax = 0
00040DDC|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040DDE|shr ecx, 2

// pElement->y = 0
00040DE1|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040DE3|mov ecx, ebp

// ecx =& 11|b
00040DE5|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040DE8|rep stosb
 
5.00.2195.7610: // edi = address(pElement->y)
000419E7|mov edi, [edx + 4]

// ecx = usNumberOfPoints * 4|d
000419EA|mov ecx, esi

// eax = 0
000419EC|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
000419EE|shr ecx, 2

// pElement->y = 0
000419F1|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
000419F3|mov ecx, ebp

// ecx =& 11|b
000419F5|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
000419F8|rep stosb
5.00.2195.7640: // edi = address(pElement->y)
00041D47|mov edi, [edx + 4]

// ecx = usNumberOfPoints * 4|d
00041D4A|mov ecx, esi

// eax = 0
00041D4C|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D4E|shr ecx, 2

// pElement->y = 0
00041D51|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D53|mov ecx, ebp

// ecx =& 11|b
00041D55|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D58|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->oy[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// edi = address(pElement->oy)
00040DEA|mov edi, [edx + Ch]

// ecx = usNumberOfPoints * 4|d
00040DED|mov ecx, esi

// eax = 0
00040DEF|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040DF1|shr ecx, 2

// pElement->oy = 0
00040DF4|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040DF6|mov ecx, ebp

// ecx =& 11|b
00040DF8|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040DFB|rep stosb
 
5.00.2195.7610: // edi = address(pElement->oy)
000419FA|mov edi, [edx + Ch]

// ecx = usNumberOfPoints * 4|d
000419FD|mov ecx, esi

// eax = 0
000419FF|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041A01|shr ecx, 2

// pElement->oy = 0
00041A04|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041A06|mov ecx, ebp

// ecx =& 11|b
00041A08|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041A0B|rep stosb
5.00.2195.7640: // edi = address(pElement->oy)
00041D5A|mov edi, [edx + Ch]

// ecx = usNumberOfPoints * 4|d
00041D5D|mov ecx, esi

// eax = 0
00041D5F|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D61|shr ecx, 2

// pElement->oy = 0
00041D64|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D66|mov ecx, ebp

// ecx =& 11|b
00041D68|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D6B|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->ooy[0],
0,
(size_t)usNumberOfPoints * sizeof(F26Dot6)
);
// edi = address(pElement->ooy)
00040DFD|mov edi, [edx + 14h]

// ecx = usNumberOfPoints * 4|d
00040E00|mov ecx, esi

// eax = 0
00040E02|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00040E04|shr ecx, 2

// pElement->ooy = 0
00040E07|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00040E09|mov ecx, esi

// ecx =& 11|b
00040E0B|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00040E0E|rep stosb
 
5.00.2195.7610: // edi = address(pElement->ooy)
00041A0D|mov edi, [edx + 14h]

// ecx = usNumberOfPoints * 4|d
00041A10|mov ecx, esi

// eax = 0
00041A12|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041A14|shr ecx, 2

// pElement->ooy = 0
00041A17|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041A19|mov ecx, esi

// ecx =& 11|b
00041A1B|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041A1E|rep stosb
5.00.2195.7640: // edi = address(pElement->ooy)
00041D6D|mov edi, [edx + 14h]

// ecx = usNumberOfPoints * 4|d
00041D70|mov ecx, esi

// eax = 0
00041D72|xor eax, eax

// ecx = (usNumberOfPoints * 4|d) / 4|d
00041D74|shr ecx, 2

// pElement->ooy = 0
00041D77|rep stosd

// ecx = (usNumberOfPoints * 4|d) & 11|b [start]
// ecx = usNumberOfPoints * 4|d
00041D79|mov ecx, esi

// ecx =& 11|b
00041D7B|and ecx, 3

// ecx is now 0
// ecx = (usNumberOfPoints * 4|d) & 11|b [end]

// waste time while doing nothing
00041D7E|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->onCurve[0],
0,
(size_t)usNumberOfPoints * sizeof(uint8)
);
// edi = address(pElement->onCurve)
00040E10|mov edi, [edx + 18h]

// ecx = usNumberOfPoints
00040E13|mov ecx, ebx

// esi = usNumberOfPoints
00040E15|mov esi, ecx

// eax = 0
00040E17|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00040E19|shr ecx, 2

// pElement->onCurve[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00040E1C|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00040E1E|mov ecx, esi

// ecx =& 11|b
00040E20|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->onCurve[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00040E0E|rep stosb
 
5.00.2195.7610: // edi = address(pElement->onCurve)
00041A20|mov edi, [edx + 18h]

// ecx = usNumberOfPoints
00041A23|mov ecx, ebx

// esi = usNumberOfPoints
00041A25|mov esi, ecx

// eax = 0
00041A27|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00041A29|shr ecx, 2

// pElement->onCurve[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00041A2C|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00041A2E|mov ecx, esi

// ecx =& 11|b
00041A30|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->onCurve[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00041A33|rep stosb
5.00.2195.7640: // edi = address(pElement->onCurve)
00041D80|mov edi, [edx + 18h]

// ecx = usNumberOfPoints
00041D83|mov ecx, ebx

// esi = usNumberOfPoints
00041D85|mov esi, ecx

// eax = 0
00041D87|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00041D89|shr ecx, 2

// pElement->onCurve[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00041D8C|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00041D8E|mov ecx, esi

// ecx =& 11|b
00041D90|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->onCurve[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00041D93|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->f[0],
0,
(size_t)usNumberOfPoints * sizeof(uint8)
);
// edi = address(pElement->f)
00040E25|mov edi, [edx + 24h]

// ecx = usNumberOfPoints
00040E28|mov ecx, ebx

// eax = 0
00040E2A|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00040E2C|shr ecx, 2

// pElement->f[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00040E2F|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00040E31|mov ecx, esi

// ecx =& 11|b
00040E37|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->f[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00040E40|rep stosb
 
5.00.2195.7610: // edi = address(pElement->f)
00041A35|mov edi, [edx + 24h]

// ecx = usNumberOfPoints
00041A38|mov ecx, ebx

// eax = 0
00041A3A|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00041A3C|shr ecx, 2

// pElement->f[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00041A3F|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00041A41|mov ecx, esi

// ecx =& 11|b
00041A47|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->f[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00041A50|rep stosb
5.00.2195.7640: // edi = address(pElement->f)
00041D95|mov edi, [edx + 24h]

// ecx = usNumberOfPoints
00041D98|mov ecx, ebx

// eax = 0
00041D9A|xor eax, eax

// ecx = usNumberOfPoints / 4|d
00041D9C|shr ecx, 2

// pElement->f[ : (usNumberOfPoints / 4|d) * 4|d] = 0
00041D9F|rep stosd

// ecx = usNumberOfPoints & 11|b [start]
// ecx = usNumberOfPoints
00041DA1|mov ecx, esi

// ecx =& 11|b
00041DA7|and ecx, 3
// ecx = usNumberOfPoints & 11|b [end]

// pElement->f[(usNumberOfPoints / 4|d) * 4|d : ] = 0
00041DB0|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->sp[0],
0,
(size_t)usNumberOfContours * sizeof(int16)
);
// esi = usNumberOfContours * 2|d [start]
// esi = usNumberOfContours
00040E33|mov esi, [esp + 18h]

// esi =& FF FF|h
00040E3A|and esi, FFFFh

// esi =* 2|d
00040E45|shl esi, 1
// esi = usNumberOfContours * 2|d [end]

// edi = address(pElement->sp)
00040E42|mov edi, [edx + 1Ch]

// ecx = usNumberOfContours * 2|d
00040E47|mov ecx, esi

// eax = 0
00040E49|xor eax, eax

// ebx = usNumberOfContours * 2|d
00040E4B|mov ebx, ecx

// ecx = (usNumberOfContours * 2|d) / 4|d
00040E4D|shr ecx, 2

// pElement->sp[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00040E50|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00040E52|mov ecx, ebx

// ecx =& 11|b
00040E54|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->sp[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00040E57|rep stosb
 
5.00.2195.7610: // esi = usNumberOfContours * 2|d [start]
// esi = usNumberOfContours
00041A43|mov esi, [esp + 18h]

// esi =& FF FF|h
00041A4A|and esi, FFFFh

// esi =* 2|d
00041A55|shl esi, 1
// esi = usNumberOfContours * 2|d [end]

// edi = address(pElement->sp)
00041A52|mov edi, [edx + 1Ch]

// ecx = usNumberOfContours * 2|d
00041A57|mov ecx, esi

// eax = 0
00041A59|xor eax, eax

// ebx = usNumberOfContours * 2|d
00041A5B|mov ebx, ecx

// ecx = (usNumberOfContours * 2|d) / 4|d
00041A5D|shr ecx, 2

// pElement->sp[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00041A60|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00041A62|mov ecx, ebx

// ecx =& 11|b
00041A64|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->sp[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00041A67|rep stosb
5.00.2195.7640: // esi = usNumberOfContours * 2|d [start]
// esi = usNumberOfContours
00041DA3|mov esi, [esp + 18h]

// esi =& FF FF|h
00041DAA|and esi, FFFFh

// esi =* 2|d
00041DB5|shl esi, 1
// esi = usNumberOfContours * 2|d [end]

// edi = address(pElement->sp)
00041DB2|mov edi, [edx + 1Ch]

// ecx = usNumberOfContours * 2|d
00041DB7|mov ecx, esi

// eax = 0
00041DB9|xor eax, eax

// ebx = usNumberOfContours * 2|d
00041DBB|mov ebx, ecx

// ecx = (usNumberOfContours * 2|d) / 4|d
00041DBD|shr ecx, 2

// pElement->sp[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00041DC0|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00041DC2|mov ecx, ebx

// ecx =& 11|b
00041DC4|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->sp[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00041DC7|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
MEMSET(
&pElement->ep[0],
0,
(size_t)usNumberOfContours * sizeof(int16)
);
// edi = address(pElement->ep)
00040E59|mov edi, [edx + 20h]

// ecx = usNumberOfContours * 2|d
00040E5C|mov ecx, esi

// edx = usNumberOfContours * 2|d
00040E5E|mov edx, ecx

// eax = 0
00040E60|xor eax, eax

// ecx = (usNumberOfContours * 2|d) / 4|d
00040E62|shr ecx, 2

// pElement->ep[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00040E65|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00040E67|mov ecx, edx

// ecx =& 11|b
00040E69|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->ep[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00040E6C|rep stosb
 
5.00.2195.7610: // edi = address(pElement->ep)
00041A69|mov edi, [edx + 20h]

// ecx = usNumberOfContours * 2|d
00041A6C|mov ecx, esi

// edx = usNumberOfContours * 2|d
00041A6E|mov edx, ecx

// eax = 0
00041A70|xor eax, eax

// ecx = (usNumberOfContours * 2|d) / 4|d
00041A72|shr ecx, 2

// pElement->ep[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00041A75|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00041A77|mov ecx, edx

// ecx =& 11|b
00041A79|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->ep[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00041A7C|rep stosb
5.00.2195.7640: // edi = address(pElement->ep)
00041DC9|mov edi, [edx + 20h]

// ecx = usNumberOfContours * 2|d
00041DCC|mov ecx, esi

// edx = usNumberOfContours * 2|d
00041DCE|mov edx, ecx

// eax = 0
00041DD0|xor eax, eax

// ecx = (usNumberOfContours * 2|d) / 4|d
00041DD2|shr ecx, 2

// pElement->ep[ : ((usNumberOfContours * 2|d) / 4|d) * 4|d] = 0
00041DD5|rep stosd

// ecx = (usNumberOfContours * 2|d) & 11|b [start]
// ecx = usNumberOfContours * 2|d
00041DD7|mov ecx, edx

// ecx =& 11|b
00041DD9|and ecx, 3
// ecx = (usNumberOfContours * 2|d) & 11|b [end]

// pElement->ep[(usNumberOfContours * 2|d / 4|d) * 4|d : ] = 0
00041DDC|rep stosb
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
- no c code -
// restore some registers
00040E6E|pop edi
00040E6F|pop esi
00040E70|pop ebp
00040E71|pop ebx
 
5.00.2195.7610: // restore some registers
00041A7E|pop edi
00041A7F|pop esi
00041A80|pop ebp
00041A81|pop ebx
5.00.2195.7640: // restore some registers
00041DDE|pop edi
00041DDF|pop esi
00041DE0|pop ebp
00041DE1|pop ebx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034:
- no c code -
// clean up the stack
00040E72|pop ecx
 
5.00.2195.7610: // clean up the stack
00041A82|pop ecx
5.00.2195.7640: // clean up the stack
00041DE2|pop ecx
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1:

5.00.2195.7034: } // return and throw 1 input parameter from the stack
00040E73|ret 4

00040E76|nop
00040E77|nop
00040E78|nop
00040E79|nop
00040E7A|nop
00040E7B|nop
00040E7C|nop
00040E7D|nop
00040E7E|nop
00040E7F|nop
 
5.00.2195.7610: // return and throw 1 input parameter from the stack
00041A83|ret 4

00041A86|nop
00041A87|nop
00041A88|nop
00041A89|nop
00041A8A|nop
00041A8B|nop
00041A8C|nop
00041A8D|nop
00041A8E|nop
00041A8F|nop
5.00.2195.7640: // return and throw 1 input parameter from the stack
00041DE3|ret 4

00041DE6|nop
00041DE7|nop
00041DE8|nop
00041DE9|nop
00041DEA|nop
00041DEB|nop
00041DEC|nop
00041DED|nop
00041DEE|nop
00041DEF|nop
5.00.2195.7641:
5.00.2195.7642:
5.00.2196.0001-V8:
5.00.2196.0002-V1: