CmUpdateFeatureConfiguration

__int64 __fastcall CmUpdateFeatureConfiguration(VOID *Src, size_t Size, _KPROCESSOR_MODE AccessMode){
  char v3; 
  UINT64 v4; 
  __int64 *v6; 
  unsigned __int8 v7; 
  INT64 v8; 
  unsigned int updated; 
  __int64 *TransientPoolWithQuotaTag; 
  unsigned __int64 v11; 
  __int64 v12; 
  _KPROCESSOR_MODE AccessModea; 
  int GrantedAccess[3]; 
  __int64 *v16; 
  _SECURITY_SUBJECT_CONTEXT SubjectSecurityContext; 
  int AccessStatus; 

  v3 = AccessMode;
  v4 = Size;
  AccessStatus = 0;
  GrantedAccess[0] = 0;
  memset(&SubjectSecurityContext, 0, sizeof(SubjectSecurityContext));
  v6 = 0i64;
  SeCaptureSubjectContext((INT64)&SubjectSecurityContext);
  LOBYTE(AccessModea) = v3;
  v7 = (unsigned __int8)SeAccessCheck(
                          *(&CmpDummyThreadEvent + 245),
                          &SubjectSecurityContext,
                          0,
                          1,
                          0,
                          0i64,
                          &CmFcFeatureConfigMapping,
                          AccessModea,
                          (PACCESS_MASK)GrantedAccess,
                          &AccessStatus);
  SeReleaseSubjectContext(&SubjectSecurityContext);
  if( !v7 )
  {
    updated = AccessStatus;
    goto LABEL_13;
  }
  if( (unsigned int)v4 < 0x10 )
    goto LABEL_4;
  TransientPoolWithQuotaTag = (__int64 *)CmpAllocateTransientPoolWithQuotaTag(v8, v4, 0x63466D43ui64);
  v6 = TransientPoolWithQuotaTag;
  v16 = TransientPoolWithQuotaTag;
  if( TransientPoolWithQuotaTag )
  {
    memmove(TransientPoolWithQuotaTag, Src, v4);
    v11 = 32i64 * *((unsigned int *)v6 + 3);
    if( v11 > 0xFFFFFFFF )
      goto LABEL_12;
    v12 = (unsigned int)(v11 + 16);
    if( (unsigned int)v12 < (unsigned int)v11 )
      goto LABEL_12;
    if( (_DWORD)v12 != (_DWORD)v4 )
    {
LABEL_4:
      updated = -1073741820;
      goto LABEL_13;
    }
    if( *((_DWORD *)v6 + 2) == 1 )
      updated = CmFcManagerUpdateFeatureConfigurations(v12, *v6, 1, (__int64)(v6 + 2));
    else
LABEL_12:
      updated = -1073741811;
  }
  else
  {
    updated = -1073741670;
  }
LABEL_13:
  if( v6 )
    CmSiFreeMemory((PPRIVILEGE_SET)v6);
  return updated;
}

Referenced by:

NtSetSystemInformation