EtwpCoverageSamplerStart

NTSTATUS __stdcall EtwpCoverageSamplerStart(PVOID Object){
  INT64 v2; 
  unsigned __int64 v3; 
  unsigned int v4; 
  CHAR *Table; 
  NTSTATUS ImageNotifyRoutine; 
  PVOID *v7; 
  unsigned int v8; 
  unsigned int v9; 
  int v10; 
  __int64 v11; 
  _EPROCESS *v12; 
  VOID *v13; 
  INT64 v14; 
  int v15; 
  int v16; 
  VOID *v18; 
  VOID *v19; 
  _KPROFILE_SOURCE v20; 
  __int128 v21; 
  __int64 v22; 
  int v23; 

  v23 = 0;
  v2 = *((unsigned int *)Object + 9);
  LODWORD(v3) = 0;
  v21 = 0i64;
  v22 = 0i64;
  v4 = 0;
  Table = EtwpCoverageSamplerAllocateTable(v2);
  *((_QWORD *)Object + 144) = Table;
  if( !Table )
  {
    ImageNotifyRoutine = -1073741670;
    goto LABEL_28;
  }
  ++*((_DWORD *)Object + 296);
  v7 = (PVOID *)*((_QWORD *)Object + 147);
  if( *v7 != (char *)Object + 1168 )
    __fastfail(3u);
  *(_QWORD *)Table = (char *)Object + 1168;
  *((_QWORD *)Table + 1) = v7;
  *v7 = Table;
  *((_QWORD *)Object + 147) = Table;
  v8 = *((_DWORD *)Object + 17);
  v9 = *((_DWORD *)Object + 16);
  if( v8 )
    v9 /= v8;
  v10 = *((_DWORD *)Object + 6);
  if( (v10 & 4) != 0 )
    goto LABEL_15;
  if( (v10 & 2) == 0 )
  {
    LODWORD(v21) = 2;
    if( ((int(__fastcall *)(__int64, __int64, __int128 *, int *))off_140C00A68[0])(1i64, 24i64, &v21, &v23) >= 0
      && BYTE4(v21) )
    {
      v4 = 2;
      v3 = v9 * (unsigned __int64)*(&ExBootDevicesRemovedEvent + 381) / 5;
      goto LABEL_15;
    }
    if( (*((_DWORD *)Object + 6) & 1) != 0 )
    {
      ImageNotifyRoutine = -1073741637;
      goto LABEL_28;
    }
  }
  LODWORD(v3) = 10 * v9;
LABEL_15:
  KeEnterCriticalRegion();
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 148, 0i64);
  *(&ExBootDevicesRemovedEvent + 149) = KeGetCurrentThread();
  if( *(&ExBootDevicesRemovedEvent + 151) )
  {
    ImageNotifyRoutine = -1073740008;
  }
  else
  {
    ImageNotifyRoutine = EtwpCovSampCaptureContextStart((_DWORD *)Object + 6);
    if( ImageNotifyRoutine >= 0 )
    {
      v11 = *(&ExBootDevicesRemovedEvent + 153);
      ObfReferenceObject(Object);
      *(&ExBootDevicesRemovedEvent + 151) = Object;
      ExReInitializeRundownProtection((INT64 *)&ExBootDevicesRemovedEvent + 152);
      *((_DWORD *)Object + 287) |= 1u;
      ImageNotifyRoutine = PsSetLoadImageNotifyRoutine(EtwpCovSampImageNotify);
      if( ImageNotifyRoutine >= 0 )
      {
        *((_DWORD *)Object + 287) |= 2u;
        PsEnumProcesses((INT64)EtwpCovSampEnumerateProcess, (INT64 *)Object + 2, v12, v13, v18);
        MmEnumerateSystemImages(
          (__int64(__fastcall *)(INT64 *, __int64))EtwpCovSampEnumerateDriver,
          (__int64)Object + 16);
        v14 = EtwpHostSiloState;
        v15 = *(_DWORD *)(EtwpHostSiloState + 4548) | 4;
        *(_DWORD *)(EtwpHostSiloState + 4548) = v15;
        v16 = *((_DWORD *)Object + 6);
        if( (v16 & 8) == 0 )
        {
          *(_DWORD *)(v14 + 4552) |= 4u;
          v16 = *((_DWORD *)Object + 6);
        }
        if( (v16 & 0x10) == 0 )
        {
          *(_DWORD *)(v14 + 4552) |= 0x200u;
          v16 = *((_DWORD *)Object + 6);
        }
        if( (v16 & 0x20) == 0 )
          *(_DWORD *)(v14 + 4548) = v15 | 0x1000;
        EtwpUpdateGlobalGroupMasks(v14, 0i64, 9ui64);
        *((_DWORD *)Object + 287) |= 4u;
        if( (*((_DWORD *)Object + 6) & 4) == 0 )
        {
          KeInitializeProfileCallback(
            (_KPROFILE *)(v11 + 16),
            EtwpCovSampProfileInterrupt,
            (_KTRAP_FRAME *)v11,
            (VOID *)v4,
            v19,
            v20);
          KeSetIntervalProfile((unsigned int)v3, (_KPROFILE_SOURCE)*(__int16 *)(v11 + 256));
          KeStartProfile((_KPROFILE *)(v11 + 16));
          *((_DWORD *)Object + 287) |= 8u;
        }
        ImageNotifyRoutine = 0;
      }
    }
  }
LABEL_28:
  if( (struct _KTHREAD *)*(&ExBootDevicesRemovedEvent + 149) == KeGetCurrentThread() )
  {
    *(&ExBootDevicesRemovedEvent + 149) = 0i64;
    if( (_InterlockedExchangeAdd64((_QWORD *)&ExBootDevicesRemovedEvent + 148, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 148);
    KeAbPostRelease((char *)&ExBootDevicesRemovedEvent + 1184);
    KeLeaveCriticalRegion();
  }
  return ImageNotifyRoutine;
}

Referenced by:

EtwpSetCoverageSamplerInformation