HalpDmaAllocateReservedMappingArray
NTSTATUS __stdcall HalpDmaAllocateReservedMappingArray(UINT64 TotalMappings, UINT64 MappingsToAllocate){
unsigned int v2;
__int64 v3;
__int64 v4;
unsigned int v5;
__int64 v6;
struct _SLIST_ENTRY *ReservedMapping;
__int64 v8;
v2 = MappingsToAllocate;
if( ((unsigned __int8)&xmmword_140CF6260 & 0xF) != 0 )
RtlRaiseStatus(-2147483646);
qword_140CF6270 = 0i64;
xmmword_140CF6260 = 0i64;
qword_140C53C68 = HalpMmAllocCtxAlloc(TotalMappings, 8i64 * (unsigned int)TotalMappings);
v4 = qword_140C53C68;
if( qword_140C53C68 )
{
v5 = 0;
if( v2 )
{
v6 = 0i64;
do
{
ReservedMapping = (struct _SLIST_ENTRY *)HalpDmaAllocateReservedMapping(v3);
v4 = qword_140C53C68;
*(_QWORD *)(v6 + qword_140C53C68) = ReservedMapping;
if( !ReservedMapping )
break;
RtlpInterlockedPushEntrySList((PSLIST_HEADER)&xmmword_140CF6260, ReservedMapping);
v4 = qword_140C53C68;
++v5;
v8 = *(_QWORD *)(v6 + qword_140C53C68);
v6 += 8i64;
*(_DWORD *)(v8 + 28) = 1;
}
while( v5 < v2 );
if( v5 )
{
dword_140CF6278 = v5;
return 0;
}
}
HalpMmAllocCtxFree(v3, v4);
}
return -1073741670;
}Referenced by:
HalpDmaAllocateMappingResources