SmProcessStoreMemoryPriorityRequest

NTSTATUS __stdcall SmProcessStoreMemoryPriorityRequest(VOID *UserData, UINT64 UserDataLength, INT8 RequestorMode){
  _OWORD *v3; 
  int v4; 
  int v5; 
  __int64 v7; 
  _EPROCESS *Process; 
  int v9; 
  INT64 a2; 
  VOID *ProcessHandle[2]; 
  _KAPC_STATE ApcState; 

  v3 = UserData;
  memset(&ApcState, 0, sizeof(ApcState));
  a2 = 0i64;
  Process = 0i64;
  v4 = 0;
  v9 = 0;
  *(_OWORD *)ProcessHandle = 0i64;
  if( (_DWORD)UserDataLength == 16 )
  {
    if( RequestorMode )
    {
      if( ((unsigned __int8)UserData & 7) != 0 )
        ExRaiseDatatypeMisalignment();
      if( (unsigned __int64)UserData >= 0x7FFFFFFF0000i64 )
        UserData = (VOID *)0x7FFFFFFF0000i64;
      *(_BYTE *)UserData = *(_BYTE *)UserData;
      *((_BYTE *)UserData + 15) = *((_BYTE *)UserData + 15);
    }
    *(_OWORD *)ProcessHandle = *v3;
    if( LOBYTE(ProcessHandle[0]) == 1 )
    {
      if( ((__int64)ProcessHandle[0] & 0xFFFFFC00) != 0 )
      {
        v5 = -1073741811;
      }
      else if( ((__int64)ProcessHandle[0] & 0x100) != 0 )
      {
        v5 = SmRereferenceProcessObject(ProcessHandle[1], UserDataLength, RequestorMode, &Process);
        if( v5 >= 0 )
        {
          _InterlockedOr((volatile signed __int32 *)&Process->2172, 0x40000u);
          if( ((__int64)ProcessHandle[0] & 0x200) != 0 )
          {
            if( KeGetCurrentThread()->ApcState.Process != Process )
            {
              v4 = 1;
              KiStackAttachProcess(Process, 0i64, &ApcState);
            }
            a2 = (INT64)Process;
            LODWORD(v7) = SmpKeyedStoreEntryGet((UINT64)&KeyedStoreCtx, &a2, 0i64, 0i64);
            if( v7 )
              *(_BYTE *)(*(_QWORD *)SmKmStoreRefFromStoreIndex((__int64)SmGlobals, *(_WORD *)(v7 + 16) & 0x3FF) + 6023i64) = 1;
            else
              v5 = -1073741632;
          }
          else
          {
            v5 = 0;
          }
        }
      }
      else
      {
        v5 = -1073741637;
      }
    }
    else
    {
      v5 = -1073741735;
    }
  }
  else
  {
    v5 = -1073741306;
  }
  if( v4 )
    KiUnstackDetachProcess(&ApcState, 0i64);
  if( Process )
    HalPutDmaAdapter((PADAPTER_OBJECT)Process);
  return v5;
}

Referenced by:

SmSetStoreInformation