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