HvAnalyzeLogFiles
__int64 __fastcall HvAnalyzeLogFiles(
INT64 a1,
int a2,
char a3,
unsigned int a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
unsigned int v8;
unsigned int v9;
INT64 v10;
unsigned int v11;
INT64 *v12;
_QWORD *v13;
int v14;
INT64 v15;
INT64 v16;
INT64 v17;
unsigned int v18;
char v19;
int v20;
unsigned int v21;
_HBASE_BLOCK **v22;
_LARGE_INTEGER *v23;
unsigned int *v24;
__int64 v25;
_HBASE_BLOCK *v26;
unsigned int Type;
unsigned int Length;
int v29;
unsigned int v30;
INT64 v31;
INT64 v32;
int v33;
__int64 v34;
_OWORD *v35;
_OWORD *v36;
__int128 v37;
INT64 *v38;
unsigned int v39;
INT64 v40;
unsigned int v41;
unsigned int v42;
_DWORD *v43;
bool v44;
unsigned int *v45;
unsigned int *v46;
unsigned int v47;
__int64 v48;
__int64(__fastcall *v49)(__int64, _QWORD, __int64, _OWORD **);
unsigned int v50;
unsigned int v51;
unsigned int v52;
_DWORD *v53;
__int128 v54;
__int64 v55;
int v56;
INT64 *v57;
INT64 *v58;
_DWORD *v59;
INT64 v60;
_DWORD *v61;
INT64 v62;
__int128 v63;
INT64 v64;
unsigned int v65;
__int64 v66;
__int64 v67;
__int128 v68;
__int64 v69;
__int128 v70;
__int64 v71;
INT64 v73;
INT64 v74;
INT64 v75;
INT64 v76;
INT64 v77;
INT64 v78;
INT64 v79;
INT64 v80[2];
INT64 v81;
INT64 v82;
INT64 v83[2];
__int128 v84;
__int128 v85;
_EVENT_DATA_DESCRIPTOR v86;
INT64 v87;
INT64 v88;
INT64 *v89;
INT64 v90;
INT64 v91;
_EVENT_DATA_DESCRIPTOR v92;
INT64 v93;
INT64 v94;
INT64 *v95;
INT64 v96;
INT64 v97;
INT64 v98;
INT64 v99;
INT64 v100;
INT64 *v101;
INT64 v102;
INT64 v103;
INT64 v104;
VOID *v105;
v8 = 0;
LODWORD(v76) = a2;
v9 = a4;
v10 = a5;
v77 = a1;
v11 = 0;
v81 = a5;
v78 = a6;
HIDWORD(v75) = a4;
BYTE3(v75) = a3;
v82 = a7;
v79 = a8;
*(_OWORD *)v80 = 0i64;
*(_OWORD *)v83 = 0i64;
v84 = 0i64;
v85 = 0i64;
if( a4 )
{
v12 = v80;
v13 = (_QWORD *)(a5 + 16);
do
{
v14 = ((__int64(__fastcall *)(_QWORD, _QWORD, __int64, INT64 *))*(v13 - 1))(*v13, 0i64, 512i64, &v80[v11]);
v18 = v14;
if( v14 < 0 )
{
HvpIsReadErrorTransient(
(unsigned int)v14,
v15,
v16,
v17,
v73,
v74,
v75,
v76,
v77,
v78,
v79,
v80[0],
v80[1],
v81,
v82,
v83[0],
v83[1],
v84,
*((INT64 *)&v84 + 1),
v85,
*((INT64 *)&v85 + 1),
v86.Ptr,
*(INT64 *)&v86.Size,
v87,
v88,
(INT64)v89,
v90,
v91,
v92.Ptr,
*(INT64 *)&v92.Size,
v93,
v94,
(INT64)v95,
v96,
v97,
v98,
v99,
v100,
(INT64)v101,
v102,
v103,
v104,
v105);
if( v19 )
return(unsigned int)-1073741491;
HvpLogUnreadableLog(*((unsigned int *)v13 - 4), v18);
*v12 = 0i64;
}
v9 = HIDWORD(v75);
++v11;
v13 += 3;
++v12;
}
while( v11 < HIDWORD(v75) );
v10 = v81;
}
v20 = 0;
if( !v9 )
goto LABEL_61;
v21 = v76;
v22 = (_HBASE_BLOCK **)v80;
v23 = (_LARGE_INTEGER *)v77;
v24 = (unsigned int *)v10;
v25 = v9;
do
{
v26 = *v22;
if( !*v22 )
goto LABEL_25;
if( v26->Signature == 1718052210
&& v26->Sequence1 == v26->Sequence2
&& v26->TimeStamp.QuadPart == v23->QuadPart
&& ((Type = v26->Type, Type == 6) || Type == 1)
&& (Length = v26->Length, Length - 1 <= 0x7FFFDFFF)
&& (Length & 0xFFF) == 0
&& (v29 = HvpHeaderCheckSum(*v22), v26->CheckSum == v29) )
{
if( v30 >= v21 )
{
++v20;
goto LABEL_25;
}
HvpLogIneligibleLogHeader(*v24, v21, v30, (UINT64)v26);
}
else
{
HvpLogInvalidLogHeader(v23, *v24, v26, v26);
}
*v22 = 0i64;
LABEL_25:
v24 += 6;
++v22;
--v25;
}
while( v25 );
v31 = v82;
v32 = v79;
if( !v20 )
{
LABEL_61:
if( *(&stru_140C00F40 + 1148) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 0x400000000008i64) )
{
v79 = 0x1000000i64;
v89 = &v79;
v90 = 8i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4592,
(unsigned __int8 *)byte_140022F8F,
0i64,
0i64,
3u,
&v86);
}
return(unsigned int)-1073741492;
}
if( v79 )
{
if( v20 == 1 )
{
v33 = v80[0] == 0;
}
else
{
LODWORD(v77) = *(_DWORD *)(v80[0] + 4);
HIDWORD(v77) = *(_DWORD *)(v80[1] + 8);
v33 = HvpDetermineLatestLogFile((UINT64 *)&v77);
}
v34 = 4i64;
v35 = (_OWORD *)v80[v33];
v36 = (_OWORD *)v32;
do
{
*v36 = *v35;
v36[1] = v35[1];
v36[2] = v35[2];
v36[3] = v35[3];
v36[4] = v35[4];
v36[5] = v35[5];
v36[6] = v35[6];
v36 += 8;
v37 = v35[7];
v35 += 8;
*(v36 - 1) = v37;
--v34;
}
while( v34 );
memset((VOID *)(v32 + 512), 0i64, 0xE00u);
*(_DWORD *)(v32 + 28) = 0;
}
v38 = v80;
v39 = HIDWORD(v75);
v40 = v81 + 8;
v41 = 0;
v42 = 0;
do
{
v43 = (_DWORD *)*v38;
if( *v38 )
{
v44 = v43[7] == 6;
v45 = (unsigned int *)&v83[3 * v41 + 1] + 1;
v46 = (unsigned int *)&v84 + 6 * v41;
HIDWORD(v83[3 * v41]) = *(_DWORD *)(v40 - 8);
v47 = v43[1];
LODWORD(v83[3 * v41 + 1]) = v47;
LODWORD(v83[3 * v41]) = v42;
if( v44 )
{
v48 = *(_QWORD *)(v40 + 8);
*((_BYTE *)&v84 + 24 * v41 + 4) = 0;
v49 = *(__int64(__fastcall **)(__int64, _QWORD, __int64, _OWORD **))v40;
*v38 = 0i64;
if( (int)HvpDetermineIncrementalLogFileMaximums(v49, v48, v45, v46) < 0 )
return(unsigned int)-1073741491;
}
else
{
*v45 = v47;
*v46 = v43[10];
*((_BYTE *)&v84 + 24 * v41 + 4) = 1;
}
++v41;
}
++v42;
v40 += 24i64;
++v38;
}
while( v42 < v39 );
v50 = *(&stru_140C00F40 + 1148);
v51 = v85;
v52 = v83[1];
if( *(&stru_140C00F40 + 1148) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 8i64) )
{
LOBYTE(v75) = v41;
v95 = &v75;
BYTE1(v75) = BYTE4(v83[0]);
v96 = 1i64;
v97 = (INT64)&v75 + 1;
BYTE2(v75) = BYTE12(v84);
v99 = (INT64)&v75 + 2;
v101 = &v76;
v103 = (INT64)&v75 + 4;
v98 = 1i64;
v100 = 1i64;
LODWORD(v76) = v52;
v102 = 4i64;
HIDWORD(v75) = v51;
v104 = 4i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4592,
(unsigned __int8 *)byte_140022EAB,
0i64,
0i64,
7u,
&v92);
v50 = *(&stru_140C00F40 + 1148);
}
if( v41 == 1 )
{
v53 = (_DWORD *)v78;
v54 = *(_OWORD *)v83;
v55 = v84;
goto LABEL_47;
}
if( BYTE3(v75) )
{
v77 = __PAIR64__(v51, v52);
v65 = HvpDetermineLatestLogFile((UINT64 *)&v77);
v66 = v65 == 0 ? 0x18 : 0;
v67 = 3i64 * v65;
v44 = *(_DWORD *)((char *)&v83[1] + v66 + 4) + 1 == LODWORD(v83[3 * v65 + 1]);
v53 = (_DWORD *)v78;
if( v44 )
{
v68 = *(_OWORD *)((char *)v83 + v66);
*(_DWORD *)v78 = 2;
v69 = *(_QWORD *)((char *)&v84 + v66);
*(_OWORD *)v31 = v68;
v70 = *(_OWORD *)&v83[v67];
*(_QWORD *)(v31 + 16) = v69;
v71 = *((_QWORD *)&v84 + v67);
*(_OWORD *)(v31 + 24) = v70;
*(_QWORD *)(v31 + 40) = v71;
}
else
{
v54 = *(_OWORD *)&v83[v67];
v55 = *((_QWORD *)&v84 + v67);
LABEL_47:
*v53 = 1;
*(_OWORD *)v31 = v54;
*(_QWORD *)(v31 + 16) = v55;
}
}
else
{
if( v52 >= v51 )
{
v56 = DWORD1(v85);
v58 = (INT64 *)&v84 + 1;
v51 = v52;
v57 = v83;
}
else
{
v56 = HIDWORD(v83[1]);
v57 = (INT64 *)&v84 + 1;
v58 = v83;
}
if( v56 + 1 == v51 )
{
v61 = (_DWORD *)v78;
v62 = v58[2];
*(_OWORD *)v31 = *(_OWORD *)v58;
v63 = *(_OWORD *)v57;
*(_QWORD *)(v31 + 16) = v62;
v64 = v57[2];
*(_OWORD *)(v31 + 24) = v63;
*(_QWORD *)(v31 + 40) = v64;
*v61 = 2;
}
else
{
if( v50 > 5 && tlgKeywordOn((__int64)&stru_140C00F40 + 4592, 0x400000000000i64) )
{
v79 = 0x1000000i64;
v89 = &v79;
v90 = 8i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4592,
(unsigned __int8 *)byte_140022F08,
0i64,
0i64,
3u,
&v86);
}
v59 = (_DWORD *)v78;
v60 = v57[2];
*(_OWORD *)v31 = *(_OWORD *)v57;
*(_QWORD *)(v31 + 16) = v60;
*v59 = 1;
}
}
return v8;
}Referenced by:
No references.