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