WheapReportDeferredLiveDumps
NTSTATUS __stdcall WheapReportDeferredLiveDumps(){
void *v0;
__int64 v1;
bool v2;
NTSTATUS v3;
__int64 v4;
v0 = 0i64;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&SbiVmbusArrivalEvent + 2976));
if( (_UNKNOWN *)*(&SbiVmbusArrivalEvent + 368) != (_UNKNOWN *)((char *)&SbiVmbusArrivalEvent + 2944) )
{
v0 = (void *)*(&SbiVmbusArrivalEvent + 368);
v1 = **(&SbiVmbusArrivalEvent + 368);
if( *(_UNKNOWN **)(*(&SbiVmbusArrivalEvent + 368) + 8i64) != (_UNKNOWN *)((char *)&SbiVmbusArrivalEvent + 2944)
|| *(_QWORD *)(v1 + 8) != *(&SbiVmbusArrivalEvent + 368) )
{
LABEL_18:
__fastfail(3u);
}
*(&SbiVmbusArrivalEvent + 368) = **(&SbiVmbusArrivalEvent + 368);
*(_QWORD *)(v1 + 8) = (char *)&SbiVmbusArrivalEvent + 2944;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&SbiVmbusArrivalEvent + 2976));
v2 = 0;
v3 = 0;
while( v0 )
{
if( !v2 )
v3 = WheapReportLiveDump((INT64)v0);
ExFreePoolWithTag(v0, 0x61656857u);
if( !v2 )
v2 = v3 != 0;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&SbiVmbusArrivalEvent + 2976));
v0 = (void *)*(&SbiVmbusArrivalEvent + 368);
if( (_UNKNOWN *)*(&SbiVmbusArrivalEvent + 368) == (_UNKNOWN *)((char *)&SbiVmbusArrivalEvent + 2944) )
{
v0 = 0i64;
}
else
{
if( *(_UNKNOWN **)(*(&SbiVmbusArrivalEvent + 368) + 8i64) != (_UNKNOWN *)((char *)&SbiVmbusArrivalEvent + 2944) )
goto LABEL_18;
v4 = **(&SbiVmbusArrivalEvent + 368);
if( *(_QWORD *)(**(&SbiVmbusArrivalEvent + 368) + 8i64) != *(&SbiVmbusArrivalEvent + 368) )
goto LABEL_18;
*(&SbiVmbusArrivalEvent + 368) = **(&SbiVmbusArrivalEvent + 368);
*(_QWORD *)(v4 + 8) = (char *)&SbiVmbusArrivalEvent + 2944;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&SbiVmbusArrivalEvent + 2976));
}
return v3;
}Referenced by:
WheaCrashDumpInitializationComplete