IopAddPageRangeToPageMaps
void __fastcall IopAddPageRangeToPageMaps(__int64 a1, _RTL_BITMAP_EX *a2, UINT64 a3, UINT64 a4, unsigned int a5){
_RTL_BITMAP_EX v9;
unsigned int v10;
unsigned int v11;
int v12;
_RTL_BITMAP_EX BitMapHeader;
RtlSetBitsEx(a2, a3, a4);
if( a1 )
{
if( (a5 & 0xFF0) != 0 )
{
v9 = *a2;
v10 = 56;
v11 = (unsigned __int8)(a5 >> 4);
v12 = (((unsigned __int64)(*(_QWORD *)(a1 + 48) + 7i64) >> 3) + 7) & 0xFFFFFFF8;
for( BitMapHeader = v9; v11; v11 >>= 1 )
{
v10 += v12;
if( v10 + v12 > (unsigned __int64)(*(_QWORD *)(a1 + 32) - 0x2000i64) )
break;
BitMapHeader.Buffer = (unsigned __int64 *)(a1 + v10);
if( (v11 & 1) != 0 )
{
RtlSetBitsEx(&BitMapHeader, a3, a4);
}
else if( (v11 & 0x10) != 0 )
{
RtlClearBitsEx(&BitMapHeader, a3, a4);
v11 &= ~0x10u;
}
}
}
}
}Referenced by:
IopAddPageToPageMap