HvpGenerateLogEntryChecksums
VOID __stdcall HvpGenerateLogEntryChecksums(UINT8 *LogEntry, UINT64 EntrySize){
char v2;
unsigned int v3;
char v4;
__int64 v6;
_SIZE_T v7;
UINT8 *v8;
__int64 v9;
char pState[64];
v3 = EntrySize;
v4 = v2;
memset(pState, 0i64, sizeof(pState));
v6 = *((_QWORD *)LogEntry + 1) + 512i64;
if( !v4 )
v6 = *((_QWORD *)LogEntry + 1);
SymCryptMarvin32Init(
(PSYMCRYPT_MARVIN32_STATE)pState,
(PCSYMCRYPT_MARVIN32_EXPANDED_SEED)&WheapErrorSourceTable + 1544);
v7 = *((_DWORD *)LogEntry + 4) - 552;
if( !v4 )
v7 = *((_DWORD *)LogEntry + 4) - 40;
SymCryptMarvin32Append((PSYMCRYPT_MARVIN32_STATE)pState, (PCBYTE)(v6 + 40), v7);
if( v3 > 1 )
{
v8 = LogEntry + 32;
v9 = v3 - 1;
do
{
SymCryptMarvin32Append((PSYMCRYPT_MARVIN32_STATE)pState, *(PCBYTE *)v8, *((_DWORD *)v8 + 2));
v8 += 24;
--v9;
}
while( v9 );
}
SymCryptMarvin32Result((PSYMCRYPT_MARVIN32_STATE)pState, (PBYTE)(v6 + 24));
SymCryptMarvin32(
(PCSYMCRYPT_MARVIN32_EXPANDED_SEED)&WheapErrorSourceTable + 1544,
(PCBYTE)v6,
32,
(PBYTE)(v6 + 32),
pState[0]);
}Referenced by:
HvpGenerateLogEntry