HalpPmemErrorDeferredHandler
VOID *__fastcall HalpPmemErrorDeferredHandler(_DWORD **a1, _DEVICE_OBJECT *a2, _UNICODE_STRING *a3){
_DWORD *v3;
__int64 i;
unsigned __int64 v6;
unsigned int v7;
UINT64 v8;
char v9;
_LARGE_INTEGER DataBlockObject;
v3 = *a1;
for( i = 0i64; (unsigned int)i < v3[21]; i = (unsigned int)(i + 1) )
{
v6 = *(_QWORD *)&v3[6 * i + 24];
if( v6 > 0x32 )
{
*(_QWORD *)&v3[6 * i + 24] = 50i64;
v6 = 50i64;
}
*(_QWORD *)&v3[6 * i + 26] = 0i64;
v7 = 0;
v8 = *(_QWORD *)&v3[6 * i + 22];
if( v6 )
{
v9 = 0;
do
{
DataBlockObject.QuadPart = v8 << 12;
if( MmGetPageBadStatus(&DataBlockObject) || !WheaAttemptPhysicalPageOffline(v8, 0, 1u) )
*(_QWORD *)&v3[6 * i + 26] |= 1i64 << v9;
++v7;
++v8;
v9 = v7;
}
while( (unsigned __int64)v7 < *(_QWORD *)&v3[6 * i + 24] );
}
}
if( byte_140C4A110 && qword_140C4A1D8 )
{
LOBYTE(a3) = 1;
qword_140C4A1D8(a1, 0i64, a3);
}
return ExFreePoolWithTag(v3, 0x206C6148u);
}Referenced by:
HalpErrorDeferredHandler