EtwpCoverageSamplerPageFault

VOID __stdcall EtwpCoverageSamplerPageFault(INT64 SystemArgument1, UINT64 a2, CHAR a3){
  INT64 v3; 
  _ETHREAD *CurrentThread; 
  unsigned __int64 v6; 
  __int64 v7; 
  unsigned int v8; 
  __int64 v9; 
  int v10; 
  unsigned int LowPart; 
  int v12; 
  int v13; 
  int v14; 
  unsigned int v15; 
  unsigned int v16; 
  unsigned int v17; 
  int v18; 
  int v19; 
  if( a3 )
  {
    v3 = StartContext;
    if( (unsigned __int64)(SystemArgument1 - 1) <= 0xFFFF7FFFFFFFFFFEui64 && a2 < 0xFFFF800000000000ui64 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --*((_WORD *)CurrentThread + 243);
      v6 = *(_QWORD *)(v3 + 8);
      LODWORD(CurrentThread) = v6;
      v7 = (v6 >> 4) & 0x1FF;
      LODWORD(CurrentThread) = ((unsigned int)CurrentThread >> 13) & 0x3FFFF;
      _BitScanReverse(&v8, (unsigned int)CurrentThread);
      v9 = *(_QWORD *)(*(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb() + 4198) + 8i64 * (v8 - 2))
                     + 8i64 * ((unsigned int)CurrentThread ^ (1 << v8))
                     + 8);
      if( *(_DWORD *)(v9 + 8 * v7 + 264) )
      {
        LowPart = KUSER_SHARED_DATA.TickCount.LowPart;
        if( KUSER_SHARED_DATA.TickCount.LowPart - *(_DWORD *)(v9 + 8 * v7 + 268) > *(_DWORD *)(v9 + 8 * v7 + 272) )
        {
          v12 = *(_DWORD *)(v9 + 8 * v7 + 264);
          *(_DWORD *)(v9 + 8 * v7 + 284) += v12;
          v13 = *(_DWORD *)(v9 + 8 * v7 + 284);
          v14 = *(_DWORD *)(v9 + 8 * v7 + 280);
          if( v13 > *(_DWORD *)(v9 + 8 * v7 + 276) )
            v13 = *(_DWORD *)(v9 + 8 * v7 + 276);
          *(_DWORD *)(v9 + 8 * v7 + 268) = LowPart;
          v15 = *(_DWORD *)(v9 + 8 * v7 + 292) + v14;
          *(_DWORD *)(v9 + 8 * v7 + 280) = 0;
          v16 = v15 >> 1;
          *(_DWORD *)(v9 + 8 * v7 + 284) = v13;
          *(_DWORD *)(v9 + 8 * v7 + 292) = v16;
          if( v16 >= 2 * v12 )
          {
            v17 = v16 / (v12 + 1);
            v18 = LowPart ^ *(_DWORD *)(v9 + 8 * v7 + 300);
            *(_DWORD *)(v9 + 8 * v7 + 296) = v17;
            *(_DWORD *)(v9 + 8 * v7 + 300) = 16777619 * v18;
            *(_DWORD *)(v9 + 8 * v7 + 288) = (16777619 * v18) & (2 * v17);
          }
          else
          {
            *(_DWORD *)(v9 + 8 * v7 + 296) = 1;
            *(_DWORD *)(v9 + 8 * v7 + 288) = 1;
          }
        }
        ++*(_DWORD *)(v9 + 8 * v7 + 280);
        v19 = *(_DWORD *)(v9 + 8 * v7 + 284);
        if( v19 <= 0 || (--*(_DWORD *)(v9 + 8 * v7 + 288), *(int *)(v9 + 8 * v7 + 288) > 0) )
        {
          v10 = 0;
LABEL_16:
          KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
          if( v10 )
          {
            _InterlockedAdd((volatile signed __int32 *)(v9 + 8 * v7 + 332), 1u);
            EtwpCovSampCaptureSample((PVOID)SystemArgument1, 0x50000010ui64);
          }
          return;
        }
        *(_DWORD *)(v9 + 8 * v7 + 284) = v19 - 1;
        *(_DWORD *)(v9 + 8 * v7 + 288) = *(_DWORD *)(v9 + 8 * v7 + 296);
      }
      v10 = 1;
      goto LABEL_16;
    }
  }
}

Referenced by:

EtwTracePageFault