IopLiveDumpGetCapturePagesNoLock
VOID __fastcall IopLiveDumpGetCapturePagesNoLock(UINT64 *a1, INT64 a2, INT64 a3, UINT64 a4, INT64 a5, INT64 a6){
__int64 v6;
UINT64 v7;
unsigned int v8;
int v12;
char v13;
UINT64 SetBits;
__int64 v15;
__int64 v16;
v6 = -1i64;
v7 = *(_QWORD *)(a2 + 48);
v8 = a4;
*(_DWORD *)a5 = 0;
if( v7 != -1i64 )
{
v12 = 0;
v13 = 1;
if( (_DWORD)a4 )
{
while( 1 )
{
SetBits = RtlFindSetBitsEx(a1, 1ui64, v7);
if( SetBits < v7 || SetBits == -1i64 )
break;
v15 = *(unsigned int *)a5;
v7 = SetBits + 1;
*(_QWORD *)(a3 + 8 * v15) = SetBits;
v12 = v15 + 1;
*(_DWORD *)a5 = v15 + 1;
if( (int)v15 + 1 >= v8 )
goto LABEL_8;
}
v12 = *(_DWORD *)a5;
v13 = 0;
}
LABEL_8:
if( v13 )
v6 = *(_QWORD *)(a3 + 8i64 * (unsigned int)(v12 - 1)) + 1i64;
}
*(_QWORD *)(a2 + 48) = v6;
if( *(_DWORD *)a5 )
{
v16 = *(_QWORD *)(a2 + 56);
*(_DWORD *)(a2 + 40) = *(_DWORD *)a5;
*(_QWORD *)a6 = v16;
*(_QWORD *)(a2 + 56) = v16 + 1;
}
}Referenced by:
IopLiveDumpBufferDumpData
IopLiveDumpGetNtMergePages