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