MiConvertLockedSmallPageToLarge
CHAR __fastcall MiConvertLockedSmallPageToLarge(INT64 a1, INT64 a2, CHAR a3, INT64 a4){
__int64 v7;
unsigned __int64 v8;
char v9;
CHAR result;
if( (_DWORD)a4 )
{
MiSetPfnTbFlushStamp((_MMPFN *)a1, 0i64, 1ui64);
MiSetPfnNodeBlinkHigh((_MMPFN *)a1, 0i64, 1ui64);
*(_QWORD *)(a1 + 24) = *(_QWORD *)(a1 + 24) & 0xC000000000000000ui64 | 1;
*(_WORD *)(a1 + 32) = 2;
if( a1 != a2 )
*(_BYTE *)(a1 + 34) = *(_BYTE *)(a1 + 34) & 0xF8 | 6;
}
v7 = *(_QWORD *)(a1 + 40);
if( v7 < 0 )
v7 &= ~0x8000000000000000ui64;
*(_BYTE *)(a1 + 35) &= 0xF8u;
*(_QWORD *)a1 = 0i64;
*(_QWORD *)(a1 + 16) = 0i64;
v8 = v7 & 0x8FFFFFF000000000ui64;
*(_QWORD *)(a1 + 8) = 0i64;
*(_QWORD *)(a1 + 24) &= ~0x4000000000000000ui64;
*(_QWORD *)(a1 + 40) = v8;
*(_QWORD *)(a1 + 40) = v8 | 0x1000000000i64;
if( a1 == a2 )
v9 = *(_BYTE *)(a1 + 39) & 0xFC | ~a3 & 3;
else
v9 = *(_BYTE *)(a1 + 39) & 0xFC;
result = *(_BYTE *)(a1 + 34) & 0xEF;
*(_BYTE *)(a1 + 39) = v9;
*(_BYTE *)(a1 + 34) = result;
return result;
}Referenced by:
MiConvertSmallPageRangeToLarge
MiDeleteClusterPage