PopDirectedDripsDiagTraceMarkDevice

VOID __fastcall PopDirectedDripsDiagTraceMarkDevice(INT64 a1){
  EVENT_DESCRIPTOR *v1; 
  CHAR *DeviceDiagnostic; 
  UINT64 v3; 
  INT64 v4; 
  EVENT_DATA_DESCRIPTOR UserData; 
  INT64 *v6; 
  int v7; 
  int v8; 
  v4 = a1;
  ExAcquirePushLockExclusiveEx((UINT64)&PopDirectedDripsDiagLock, 0i64);
  DeviceDiagnostic = *(CHAR **)(v4 + 776);
  if( DeviceDiagnostic || (DeviceDiagnostic = PopDirectedDripsDiagCreateDeviceDiagnostic(v4)) != 0i64 )
    ++*((_DWORD *)DeviceDiagnostic + 36);
  if( PopDiagHandleRegistered )
  {
    v3 = PopDiagHandle;
    if( EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE, v1) )
    {
      UserData.Reserved = 0;
      v8 = 0;
      UserData.Ptr = (unsigned __int64)&PopWnfCsEnterScenarioId;
      UserData.Size = 1;
      v6 = &v4;
      v7 = 8;
      EtwWrite(v3, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE, 0i64, 2ui64, &UserData);
    }
  }
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&PopDirectedDripsDiagLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&PopDirectedDripsDiagLock);
  KeAbPostRelease(&PopDirectedDripsDiagLock);
}

Referenced by:

PopDirectedDripsMarkCandidateDevice