HvpGenerateLogEntryChecksums

VOID __stdcall HvpGenerateLogEntryChecksums(UINT8 *LogEntry, UINT64 EntrySize){
  char v2; 
  unsigned int v3; 
  char v4; 
  __int64 v6; 
  UINT64 v7; 
  UINT8 *v8; 
  __int64 v9; 
  __int64 a1[8]; 
  v3 = EntrySize;
  v4 = v2;
  memset((INT64)a1, 0i64);
  v6 = *((_QWORD *)LogEntry + 1) + 512i64;
  if( !v4 )
    v6 = *((_QWORD *)LogEntry + 1);
  SymCryptMarvin32Init((__int64)a1, &HvSymcryptSeed);
  v7 = (unsigned int)(*((_DWORD *)LogEntry + 4) - 552);
  if( !v4 )
    v7 = (unsigned int)(*((_DWORD *)LogEntry + 4) - 40);
  SymCryptMarvin32Append((INT64)a1, (UINT8 *)(v6 + 40), v7);
  if( v3 > 1 )
  {
    v8 = LogEntry + 32;
    v9 = v3 - 1;
    do
    {
      SymCryptMarvin32Append((INT64)a1, *(UINT8 **)v8, *((unsigned int *)v8 + 2));
      v8 += 24;
      --v9;
    }
    while( v9 );
  }
  SymCryptMarvin32Result((INT64)a1, (_DWORD *)(v6 + 24));
  SymCryptMarvin32((int *)&HvSymcryptSeed, (unsigned __int16 *)v6, 0x20ui64, (_DWORD *)(v6 + 32));
}

Referenced by:

HvpGenerateLogEntry