SmProcessConfigRequest

NTSTATUS __stdcall SmProcessConfigRequest(VOID *UserData, UINT64 UserDataLength, INT8 RequestorMode){
  NTSTATUS v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  unsigned int v7; 
  unsigned __int64 v8; 
  unsigned int v9; 
  unsigned int v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 

  v4 = 0;
  if( (_DWORD)UserDataLength != 8 )
    return -1073741306;
  if( RequestorMode )
  {
    if( ((unsigned __int8)UserData & 3) != 0 )
      ExRaiseDatatypeMisalignment();
    v5 = 0x7FFFFFFF0000i64;
    if( (unsigned __int64)UserData < 0x7FFFFFFF0000i64 )
      v5 = (__int64)UserData;
    *(_BYTE *)v5 = *(_BYTE *)v5;
    *(_BYTE *)(v5 + 7) = *(_BYTE *)(v5 + 7);
  }
  v6 = *(_QWORD *)UserData;
  if( (_BYTE)v6 != 4 )
    return -1073741735;
  if( (v6 & 0xFFFF00) != 0 )
    return -1073741811;
  v7 = BYTE3(v6);
  if( BYTE3(v6) >= 3u )
    return -1073741811;
  if( v7 )
  {
    v11 = v7 - 1;
    if( v11 )
    {
      if( v11 != 1 )
        return v4;
      v12 = HIDWORD(v6);
      if( (unsigned int)(v12 - 4) <= 0x1C && (((_DWORD)v12 - 1) & (unsigned int)v12) == 0 )
      {
        *(&stru_140C4DB30 + 947) = v12;
        return v4;
      }
    }
    else
    {
      v13 = HIDWORD(v6);
      if( (unsigned int)v13 <= 1 )
      {
        *(&stru_140CF2E80 + 1817) = v13;
        return v4;
      }
    }
    return -1073741811;
  }
  v8 = HIDWORD(v6);
  if( (unsigned int)v8 >= 0x100 )
    return -1073741811;
  if( (((unsigned int)v8 >> 2) & 3) == 3 )
    return -1073741811;
  v9 = v8 & 0x30;
  if( v9 >= 0x30 )
    return -1073741811;
  if( ((((unsigned int)v8 >> 2) & 3) == 2 || v9 == 32)
    && !SeSinglePrivilegeCheck(*(_QWORD *)&SeLockMemoryPrivilege, RequestorMode) )
  {
    return -1073741790;
  }
  dword_140D23180 = v8 & 0xC0 | dword_140D23180 & 0xFFFFFF00 | ((unsigned int)v8 >> 2) & 0xF | (16 * (v8 & 3));
  if( (dword_140D23180 & 3) != 0 )
    SmpSystemStoreCreate();
  return v4;
}

Referenced by:

SmSetStoreInformation