PnprRecopyMappingReserve
INT64 __fastcall PnprRecopyMappingReserve(INT64 a1){
UINT64 v1;
int v3;
UINT64 ContainingPageTable;
INT64 v5;
UINT64 v6;
int v7;
UINT64 v9;
int v10;
int v11;
INT64 v12;
v1 = 0i64;
v3 = 0;
while( 1 )
{
ContainingPageTable = MiGetContainingPageTable(
(UINT64)MmGetPteBase()
+ (((*(_QWORD *)(a1 + 8) + (unsigned __int64)(unsigned int)(v3 << 12)) >> 9) & 0x7FFFFFFFF8i64));
if( ContainingPageTable != v1 )
{
v1 = ContainingPageTable;
v7 = PnprMarkOrMirrorPages((_LARGE_INTEGER)(ContainingPageTable << 12), (_LARGE_INTEGER)4096i64, 1u);
if( v7 < 0 )
break;
}
if( (unsigned int)++v3 >= 0x10 )
{
PnprRecopyAddress(*(_QWORD *)a1, 0x30ui64, v5, v6, v12);
return 0i64;
}
}
v9 = PnprContext;
v10 = *(_DWORD *)(PnprContext + 20984);
if( !v10 )
v10 = 5721;
*(_DWORD *)(PnprContext + 20984) = v10;
v11 = *(_DWORD *)(v9 + 20988);
if( !v11 )
v11 = 1;
*(_DWORD *)(v9 + 20988) = v11;
return(unsigned int)v7;
}Referenced by:
PnprRecopyMirrorPages