WdipSemCaptureState

NTSTATUS __stdcall WdipSemCaptureState(_GUID *ProviderGuid, CHAR a2){
  char v3; 
  int v4; 
  unsigned __int16 v5; 
  unsigned int Data1; 
  unsigned int v8; 
  __int64 v9; 
  UINT8 v10; 
  UINT64 EnableProperty; 
  UINT64 ControlCode; 

  v3 = 0;
  v4 = 0;
  if( !a2 )
  {
    if( !ProviderGuid )
      return -1073741811;
    v5 = _InterlockedExchange(&WdipContextLoggerId, WdipContextLoggerId);
    Data1 = ProviderGuid[2].Data1;
    if( Data1 )
    {
      v8 = Data1 - 1;
      if( v8 )
      {
        if( v8 != 1 )
          return v4;
        LODWORD(ControlCode) = 2;
        LODWORD(EnableProperty) = 0;
      }
      else
      {
        v9 = *(_QWORD *)ProviderGuid[2].Data4;
        if( !*(_BYTE *)(v9 + 69) )
        {
          v3 = 1;
          v10 = BYTE2(ProviderGuid[1].Data1);
          LODWORD(ControlCode) = 1;
          if( v10 <= *(_BYTE *)(v9 + 48) )
            v10 = *(_BYTE *)(v9 + 48);
          LODWORD(EnableProperty) = *(_DWORD *)&ProviderGuid[2].Data2 | *(_DWORD *)(v9 + 64);
          v4 = WdipSemEnableDisableTrace(
                 v5,
                 ProviderGuid,
                 v10,
                 *(_QWORD *)ProviderGuid[1].Data4 | *(_QWORD *)(v9 + 56),
                 EnableProperty,
                 ControlCode);
          if( v4 < 0 )
            return v4;
        }
        LODWORD(ControlCode) = 2;
        LODWORD(EnableProperty) = 0;
        v4 = WdipSemEnableDisableTrace(v5, ProviderGuid, 0, 0i64, EnableProperty, ControlCode);
        if( !v3 )
          return v4;
        LODWORD(ControlCode) = 0;
        LODWORD(EnableProperty) = 0;
      }
      return WdipSemEnableDisableTrace(v5, ProviderGuid, 0, 0i64, EnableProperty, ControlCode);
    }
  }
  return v4;
}

Referenced by:

WdipSemDisableContextProvider