EtwpCovSampCaptureSample

INT8 __stdcall EtwpCovSampCaptureSample(VOID *SystemArgument1, UINT64 a2){
  _ETHREAD *CurrentThread; 
  INT64 v4; 
  INT64 v5; 
  unsigned int v6; 
  INT64 v7; 
  unsigned int v8; 
  unsigned int v9; 
  __int64 v10; 
  INT64 v11; 
  int v13; 
  unsigned int v14; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v4 = 0i64;
  v5 = *(&ExBootDevicesRemovedEvent + 153);
  v6 = a2;
  v13 = 0;
  v7 = (*(_QWORD *)(*(&ExBootDevicesRemovedEvent + 153) + 8i64) >> 4) & 0x1FFi64;
  v8 = ((unsigned int)*(_QWORD *)(*(&ExBootDevicesRemovedEvent + 153) + 8i64) >> 13) & 0x3FFFF;
  _BitScanReverse(&v9, v8);
  v14 = v9;
  v10 = *(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb()->ExSaPageArray + v9 - 2) + 8i64 * ((1 << v9) ^ v8) + 8);
  if( *(_DWORD *)(v10 + 8 * v7 + 60) )
  {
    _InterlockedIncrement((volatile signed __int32 *)(v10 + 8 * v7 + 304));
  }
  else
  {
    LOBYTE(v7) = (_BYTE)SystemArgument1 - 1;
    if( (char *)SystemArgument1 - 1 > (char *)0xFFFF7FFFFFFFFFFEi64 )
    {
      v7 = (INT64)EtwpCovSampCaptureBufferGet(*(&ExBootDevicesRemovedEvent + 153));
      v4 = v7;
      if( v7 )
      {
        EtwpCovSampCaptureBufferAddIP(v7, (UINT64)SystemArgument1);
        if( !*(_DWORD *)(v5 + 924) )
          EtwpCovSampCaptureKernelStack(v11, v6);
        LOBYTE(v7) = EtwpCovSampCaptureBufferQueue(v5, v4);
        v4 = 0i64;
      }
      SystemArgument1 = 0i64;
    }
    if( (CurrentThread->Tcb._bf_0 & 0x400) == 0 )
    {
      LODWORD(v7) = CurrentThread->CrossThreadFlags;
      if( (v7 & 1) == 0 && (CurrentThread->Tcb._bf_0 & 0x4000) != 0 )
      {
        if( CurrentThread->Tcb.Teb )
        {
          LODWORD(v7) = CurrentThread->Tcb.Process->Pcb.FreezeCount
                      + (((unsigned __int32)CurrentThread->Tcb.Process->Pcb._bf_0 >> 3) & 1);
          if( !(_DWORD)v7 && !CurrentThread->Tcb.SuspendCount )
          {
            LODWORD(v7) = EtwpCovSampSafeForUserAddressCapture(0i64, (BOOL *)&v13);
            if( (int)v7 >= 0 )
            {
              if( !_interlockedbittestandset((volatile signed __int32 *)&CurrentThread->1296, 0x17u) )
              {
                LOBYTE(v7) = EtwpCovSampCaptureUserAddresses((INT64 *)v5, (UINT64)SystemArgument1);
                _InterlockedAnd((volatile signed __int32 *)&CurrentThread->1296, 0xFF7FFFFF);
              }
            }
            else if( !v13 )
            {
              LOBYTE(v7) = EtwpCovSampCaptureQueueApc(SystemArgument1);
            }
          }
        }
      }
    }
    if( v4 )
      LOBYTE(v7) = EtwpCovSampCaptureBufferRelease(v5, v4);
  }
  return v7;
}

Referenced by:

EtwpCovSampProfileInterrupt
EtwpCoverageSamplerContextSwap
EtwpCoverageSamplerPageFault
EtwpCoverageSamplerReadyThread