HvpGenerateLogEntryHeader

INT64 __fastcall HvpGenerateLogEntryHeader(
        INT64 a1,
        INT64 a2,
        INT64 a3,
        UINT64 *a4,
        UINT64 *a5,
        INT64 a6,
        INT64 a7,
        CHAR a8){
  int v8; 
  INT64 v11; 
  int v12; 
  bool v13; 
  INT64 result; 
  _DWORD *v15; 
  __int64 v16; 
  _OWORD *v17; 
  _OWORD *v18; 
  __int128 v19; 
  int v20; 
  UINT64 v21; 
  int v22; 
  int v23; 
  int v24; 
  int v25; 
  int v26; 
  int v27; 
  __int128 v28; 
  v8 = 0;
  v11 = a1;
  v12 = *(_DWORD *)a5;
  LODWORD(v21) = *(_DWORD *)a5;
  if( a8 )
  {
    v15 = *(_DWORD **)(a2 + 8);
    v16 = 4i64;
    v17 = *(_OWORD **)(a1 + 64);
    v18 = v15;
    do
    {
      *v18 = *v17;
      v18[1] = v17[1];
      v18[2] = v17[2];
      v18[3] = v17[3];
      v18[4] = v17[4];
      v18[5] = v17[5];
      v18[6] = v17[6];
      v18 += 8;
      v19 = v17[7];
      v17 += 8;
      *(v18 - 1) = v19;
      --v16;
    }
    while( v16 );
    v15[1] = *(_DWORD *)(v11 + 168);
    v15[2] = *(_DWORD *)(v11 + 168);
    v15[7] = 6;
    v15[10] = *(_DWORD *)(v11 + 272);
    v15[11] = 1;
    v20 = HvpHeaderCheckSum(v15);
    *((_DWORD *)a4 + 127) = v20;
    LODWORD(v21) = v12 + 512;
  }
  v28 = 0i64;
  v22 = 1162638920;
  v23 = a6;
  if( a8 != (_BYTE)v8 )
    v23 = a6 - 512;
  v25 = *(_DWORD *)(v11 + 168);
  v13 = (*(_BYTE *)(*(_QWORD *)(v11 + 64) + 144i64) & 1) == 0;
  v26 = *(_DWORD *)(v11 + 272);
  if( !v13 )
    v8 = 1;
  v27 = a7;
  v24 = v8;
  HvpCopyDataToOffsetArray((INT64)&v22, 0x28ui64, a2, (INT64)a4, a4, &v21);
  result = (unsigned int)v21;
  *(_DWORD *)a5 = v21;
  return result;
}

Referenced by:

HvpGenerateLogEntry