HalpDmaAllocateContiguousPagesFromContiguousPoolAtHighLevelV3
__int64 __fastcall HalpDmaAllocateContiguousPagesFromContiguousPoolAtHighLevelV3(__int64 a1, __int64 a2, ULONG a3){
int v3;
ULONG v5;
unsigned int ClearBitsAndSet;
unsigned int v8;
__int64 result;
__int64 v10;
__int64 v11;
ULONG i;
v3 = -1;
v5 = 0;
LABEL_2:
ClearBitsAndSet = RtlFindClearBitsAndSet(*(PRTL_BITMAP *)(a2 + 16), a3, v5);
v8 = ClearBitsAndSet;
if( ClearBitsAndSet == -1 || ClearBitsAndSet == v3 )
return 0i64;
if( v3 == -1 )
v3 = ClearBitsAndSet;
result = HalpDmaLinkContiguousTranslations(a2, ClearBitsAndSet, a3);
v10 = 0i64;
v11 = result;
for( i = 0; i < a3; ++i )
{
if( (*(_QWORD *)(v11 + 48) & 0xFFFFFFFFFFFFF000ui64) == 0 )
{
v5 = v8 + i + 1;
goto LABEL_2;
}
v10 = v11;
v11 = *(_QWORD *)(v11 + 8);
}
*(_QWORD *)(v10 + 8) = 0i64;
return result;
}Referenced by:
HalpDmaAllocateContiguousPagesFromContiguousPoolAtHighLevel