HvpGenerateLogEntryHeader

NTSTATUS __stdcall 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; 
  NTSTATUS result; 
  _HBASE_BLOCK *v15; 
  __int64 v16; 
  _OWORD *v17; 
  _HBASE_BLOCK *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 = *(_HBASE_BLOCK **)(a2 + 8);
    v16 = 4i64;
    v17 = *(_OWORD **)(a1 + 64);
    v18 = v15;
    do
    {
      *(_OWORD *)&v18->Signature = *v17;
      *(_OWORD *)((char *)&v18->TimeStamp.QuadPart + 4) = v17[1];
      *(_OWORD *)&v18->Format = v17[2];
      *(_OWORD *)v18->FileName = v17[3];
      *(_OWORD *)&v18->FileName[16] = v17[4];
      *(_OWORD *)&v18->FileName[32] = v17[5];
      *(_OWORD *)&v18->FileName[48] = v17[6];
      v18 = (_HBASE_BLOCK *)((char *)v18 + 128);
      v19 = v17[7];
      v17 += 8;
      *(_OWORD *)v18[-1].ThawLogId.Data4 = v19;
      --v16;
    }
    while( v16 );
    v15->Sequence1 = *(_DWORD *)(v11 + 168);
    v15->Sequence2 = *(_DWORD *)(v11 + 168);
    v15->Type = 6;
    v15->Length = *(_DWORD *)(v11 + 272);
    v15->Cluster = 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 = v21;
  *(_DWORD *)a5 = v21;
  return result;
}

Referenced by:

HvpGenerateLogEntry