HalpNumaAddRangeProximity

NTSTATUS __stdcall HalpNumaAddRangeProximity(UINT64 PhysicalPageNumber, UINT64 PageLength, UINT64 ProximityId){
  NTSTATUS v4; 
  int v5; 
  NTSTATUS result; 
  _HALP_ALLOC_CONTEXT *v7; 
  unsigned __int64 v8; 
  unsigned int v9; 
  int v10; 
  UINT8 *v11; 
  UINT8 *v12; 
  _HALP_ALLOC_CONTEXT *v13; 
  __int64 v14; 
  int v15; 
  INT64 *v16; 
  UINT64 v17; 
  UINT64 v18; 
  UINT16 v19; 

  v4 = 0;
  v19 = 0;
  v5 = ProximityId;
  result = HalpNumaQueryProximityNode((unsigned int)ProximityId, &v19);
  if( result < 0 )
    return result;
  v8 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)&CmpDummyThreadEvent + 868);
  v9 = 0;
  if( !*(&CmpDummyThreadEvent + 1741) )
  {
LABEL_6:
    v10 = *(&CmpDummyThreadEvent + 1748);
    if( *(&CmpDummyThreadEvent + 1741) >= *(&CmpDummyThreadEvent + 1748) )
    {
      *(&CmpDummyThreadEvent + 1748) += 5;
      v11 = HalpMmAllocCtxAlloc(v7, (unsigned int)(16 * (v10 + 6)));
      v12 = v11;
      if( !v11 )
      {
        *(&CmpDummyThreadEvent + 1748) -= 5;
        ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&CmpDummyThreadEvent + 868);
        v4 = -1073741670;
LABEL_14:
        __writecr8(v8);
        return v4;
      }
      memmove(v11, *(&CmpDummyThreadEvent + 866), 16 * *(&CmpDummyThreadEvent + 1741));
      if( *(&CmpDummyThreadEvent + 6960) )
        HalpMmAllocCtxFree(v13, *(&CmpDummyThreadEvent + 866));
      *(&CmpDummyThreadEvent + 6960) = 1;
      *(&CmpDummyThreadEvent + 866) = v12;
    }
    v14 = 2i64 * *(&CmpDummyThreadEvent + 1741);
    v15 = v19;
    *(_QWORD *)(*(&CmpDummyThreadEvent + 866) + 8 * v14) = PhysicalPageNumber;
    *(_DWORD *)(*(&CmpDummyThreadEvent + 866) + 8 * v14 + 8) = v15;
    ++*(&CmpDummyThreadEvent + 1741);
    qsort(
      *(&CmpDummyThreadEvent + 866),
      *(&CmpDummyThreadEvent + 1741),
      0x10ui64,
      (INT64)HalpNodeCostSort,
      v16,
      v17,
      v18);
    *(_QWORD *)(*(&CmpDummyThreadEvent + 866) + 16i64 * *(&CmpDummyThreadEvent + 1741)) = -1i64;
    *(_DWORD *)(*(&CmpDummyThreadEvent + 866) + 16i64 * *(&CmpDummyThreadEvent + 1741) + 8) = 0;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&CmpDummyThreadEvent + 868);
    goto LABEL_14;
  }
  v7 = (_HALP_ALLOC_CONTEXT *)*(&CmpDummyThreadEvent + 866);
  while( v7->BufferList.Flink != (_LIST_ENTRY *)PhysicalPageNumber )
  {
    ++v9;
    v7 = (_HALP_ALLOC_CONTEXT *)((char *)v7 + 16);
    if( v9 >= *(&CmpDummyThreadEvent + 1741) )
      goto LABEL_6;
  }
  v19 = *(_WORD *)(*(&CmpDummyThreadEvent + 866) + 16i64 * v9 + 8);
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&CmpDummyThreadEvent + 868);
  __writecr8(v8);
  return v5 != *(_DWORD *)(*(_QWORD *)(*(&CmpDummyThreadEvent + 876) + 24i64) + 4i64 * v19) ? 0xC0000018 : 0;
}

Referenced by:

No references.