WheapApplyThresholdChecks
CHAR __fastcall WheapApplyThresholdChecks(INT64 a1){
int v2;
__int64 v3;
INT64 v4;
unsigned int v5;
unsigned __int64 v6;
volatile unsigned __int64 TickCountQuad;
++*(_DWORD *)(a1 + 84);
v2 = *(_DWORD *)(a1 + 104);
if( v2 == 1 )
{
v3 = 144i64;
}
else
{
if( v2 == 2 || v2 == 4 || v2 != 5 && v2 != 8 && (v2 <= 11 || v2 > 13) )
return 0;
v3 = 160i64;
}
v4 = a1 + v3;
if( !(a1 + v3)
|| *(_BYTE *)v4 != 1
&& *(_BYTE *)v4 != 2
&& *(_BYTE *)v4 != 3
&& *(_BYTE *)v4 != 4
&& *(_BYTE *)v4 != 8
&& *(_BYTE *)v4 != 9
&& *(_BYTE *)v4 != 10 )
{
return 0;
}
v5 = *(_DWORD *)(v4 + 20);
v6 = *(unsigned int *)(v4 + 24);
if( v5 <= 1 )
return 0;
TickCountQuad = KUSER_SHARED_DATA.TickCountQuad;
if( (_DWORD)v6
&& (signed __int64)(KeMaximumIncrement * (KUSER_SHARED_DATA.TickCountQuad - *(_QWORD *)(a1 + 72))) / 10000000 > v6 )
{
*(_DWORD *)(a1 + 80) = 1;
*(_QWORD *)(a1 + 72) = TickCountQuad;
return 0;
}
if( ++*(_DWORD *)(a1 + 80) < v5 )
return 0;
*(_DWORD *)(a1 + 80) = 0;
return 1;
}Referenced by:
WheaReportHwError