EtwpUpdateLastBranchTracingConfiguration

NTSTATUS __stdcall EtwpUpdateLastBranchTracingConfiguration(INT64 a1, INT64 a2){
  int LbrData; 
  unsigned int v4; 

  if( !EtwpLastBranchSupportedOptions )
    return -1073741637;
  v4 = *(_DWORD *)(a2 + 16);
  if( (~EtwpLastBranchSupportedOptions & v4) != 0 || (v4 & 3) == 3 )
    return -1073741811;
  if( (*(_DWORD *)(a1 + 832) & 0x8000) != 0 )
    return -1073741053;
  if( *(_QWORD *)(a1 + 1008) || (LbrData = EtwpAllocateLbrData(a1), LbrData >= 0) )
  {
    if( **(_DWORD **)(a1 + 1008) )
    {
      return -1073741053;
    }
    else
    {
      LbrData = ((__int64(__fastcall *)(_QWORD))off_140C009B0[0])(v4);
      if( LbrData >= 0 )
      {
        EtwpReferenceLastBranchLookasideList();
        *(_DWORD *)(*(_QWORD *)(a1 + 1008) + 4i64) = v4;
        _InterlockedOr((volatile signed __int32 *)(a1 + 832), 0x8000u);
      }
    }
  }
  return LbrData;
}

Referenced by:

EtwSetPerformanceTraceInformation