SymCryptMarvin32Append
VOID __stdcall SymCryptMarvin32Append(PSYMCRYPT_MARVIN32_STATE pState, PCBYTE pbData, _SIZE_T cbData){
int v3;
unsigned __int64 v4;
const unsigned __int8 *v5;
__int64 v6;
unsigned int v7;
unsigned __int64 v8;
v3 = *(_DWORD *)(*(_QWORD *)&pState + 40i64);
v4 = *(_QWORD *)&cbData;
v5 = pbData;
v6 = *(_QWORD *)&pState;
*(_DWORD *)(*(_QWORD *)&pState + 40i64) = v3 + cbData;
v7 = v3 & 3;
if( v7 )
{
v8 = 4 - v7;
if( *(_QWORD *)&cbData >= v8 )
{
memmove((VOID *)(*(_QWORD *)&pState + v7), pbData, v8);
v5 += v8;
v4 -= v8;
SymCryptMarvin32AppendBlocks((PSYMCRYPT_MARVIN32_CHAINING_STATE)(v6 + 16), (PCBYTE)v6, 4);
v7 = 0;
}
}
if( v4 >= 4 )
{
SymCryptMarvin32AppendBlocks((PSYMCRYPT_MARVIN32_CHAINING_STATE)(v6 + 16), v5, v4 & 0xFFFFFFFC);
v5 += v4 & 0xFFFFFFFFFFFFFFFCui64;
v4 -= v4 & 0xFFFFFFFFFFFFFFFCui64;
}
if( v4 )
memmove((VOID *)(v6 + v7), v5, v4);
}Referenced by:
HvpGenerateLogEntryChecksums