IopAddPageDumpRange
NTSTATUS __stdcall IopAddPageDumpRange(_KBUGCHECK_ADD_PAGES *AddPages, UINT8 *ContinueProcessing){
unsigned int Flags;
UINT64 v5;
signed int v6;
NTSTATUS result;
UINT8 v8;
unsigned __int64 Count;
bool v10;
__int64 v11;
__int64 v12[2];
_MM_KERNEL_DUMP_CONTEXT Context[2];
__int64 v14;
__int64 *v15;
__int64 v16;
__int128 v17;
*(_QWORD *)Context = 0i64;
v14 = 0i64;
v17 = 0i64;
if( ContinueProcessing )
*ContinueProcessing = 0;
Flags = AddPages->Flags;
v5 = Flags & 0xFF0;
v6 = v5 ^ Flags;
AddPages->Flags = v6;
if( (v6 & 0x7FFFFFFC) != 0 )
return -1073741582;
if( v6 >= 0 )
{
v8 = 0;
}
else
{
v6 &= ~0x80000000;
v8 = 1;
AddPages->Flags = v6;
}
if( ((v6 - 1) & v6) != 0 )
return -1073741811;
Count = AddPages->Count;
if( !Count )
return 0;
v10 = (v6 & 1) == 0;
v11 = *(_QWORD *)(qword_140C50960 + 8i64);
if( v10 )
v5 = (unsigned int)v5 | 2;
v16 = *(_QWORD *)(qword_140C50960 + 8i64);
v12[0] = *(_QWORD *)(v11 + 48);
v12[1] = v11 + 56;
v15 = v12;
if( (*(_DWORD *)(qword_140C50960 + 1368i64) & 4) != 0 )
{
DWORD2(v17) |= 3u;
*(_QWORD *)&v17 = &AvailablePagesForPartialDump;
}
IoSetDumpRange(Context, (VOID *)AddPages->Address, Count, v5);
if( result >= 0 )
{
if( ContinueProcessing )
*ContinueProcessing = v8;
}
return result;
}Referenced by:
IopDumpCallAddPagesCallbacks