HalpDmaReturnPageToOwner
void __fastcall HalpDmaReturnPageToOwner(__int64 a1, __int64 a2, unsigned __int64 a3){
unsigned __int64 v4;
__int64 v5;
__int64 v6;
bool v7;
*(_QWORD *)(a3 + 56) = a3;
if( a1 )
{
v5 = *(_QWORD *)(a3 + 48);
v6 = v5 & 4;
if( *(_BYTE *)(a1 + 434) )
{
if( (v5 & 4) == 0 )
{
v4 = a3;
LABEL_9:
HalpDmaReturnToScatterPool(a1, v4, 0);
return;
}
v7 = (v5 & 8) == 0;
a1 = a2;
v4 = a3;
if( !v7 )
goto LABEL_9;
}
else
{
v4 = a3;
if( v6 )
a1 = a2;
}
}
else
{
v4 = a3;
a1 = a2;
if( (*(_BYTE *)(a3 + 48) & 8) != 0 )
goto LABEL_9;
}
HalpDmaReturnToContiguousPool(a1, v4, 0);
}Referenced by:
HalpDmaAllocateMapRegisters
HalpDmaAllocateNewTranslationBuffer
HalpDmaFreeMapRegisters