WheapEtwEnableCallback

void __fastcall WheapEtwEnableCallback(const _GUID *a1, int a2){
  __int64 v2; 
  __int64 v3; 
  __int64 *v4; 
  __int64 v5; 

  *(&WheapDeferredInternalLogsEventLock + 6) = a2;
  if( a2 == 1 )
  {
    while( 1 )
    {
      KeWaitForSingleObject((UINT64)&WheapDeferredInternalLogsEventLock + 64, 0, 0, 0, 0i64);
      v2 = *(&WheapDeferredInternalLogsEventLock + 4);
      if( *(_UNKNOWN **)(*(&WheapDeferredInternalLogsEventLock + 4) + 8i64) != (_UNKNOWN *)((char *)&WheapDeferredInternalLogsEventLock
                                                                                           + 32) )
        goto LABEL_9;
      v3 = **(&WheapDeferredInternalLogsEventLock + 4);
      if( *(_QWORD *)(**(&WheapDeferredInternalLogsEventLock + 4) + 8i64) != *(&WheapDeferredInternalLogsEventLock + 4) )
        goto LABEL_9;
      *(&WheapDeferredInternalLogsEventLock + 4) = **(&WheapDeferredInternalLogsEventLock + 4);
      *(_QWORD *)(v3 + 8) = (char *)&WheapDeferredInternalLogsEventLock + 32;
      KeSetEvent((PRKEVENT)((char *)&WheapDeferredInternalLogsEventLock + 64), 0, 0);
      if( (_UNKNOWN *)v2 == (_UNKNOWN *)((char *)&WheapDeferredInternalLogsEventLock + 32) )
        break;
      WheapGenerateETWEvents((_WHEA_ERROR_RECORD *)(v2 + 40));
      WheapFreeErrorRecord((_WHEAP_ERROR_RECORD_WRAPPER *)v2);
    }
    while( 1 )
    {
      KeWaitForSingleObject((UINT64)&WheapDeferredInternalLogsEventLock, 0, 0, 0, 0i64);
      v4 = (__int64 *)WheapDeferredInternalLogs;
      if( *(__int64 **)(WheapDeferredInternalLogs + 8) != &WheapDeferredInternalLogs )
        break;
      v5 = *(_QWORD *)WheapDeferredInternalLogs;
      if( *(_QWORD *)(*(_QWORD *)WheapDeferredInternalLogs + 8i64) != WheapDeferredInternalLogs )
        break;
      WheapDeferredInternalLogs = *(_QWORD *)WheapDeferredInternalLogs;
      *(_QWORD *)(v5 + 8) = &WheapDeferredInternalLogs;
      KeSetEvent((PRKEVENT)&WheapDeferredInternalLogsEventLock, 0, 0);
      if( v4 == &WheapDeferredInternalLogs )
        return;
      WheaLogInternalEvent(v4 + 2);
    }
LABEL_9:
    __fastfail(3u);
  }
}

Referenced by:

No references.