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.