WheapCallErrorSourceInitialize

NTSTATUS __stdcall WheapCallErrorSourceInitialize(INT64 a1, UINT64 a2){
  unsigned int v2; 
  __int64(__fastcall *v4)(_QWORD, INT64, _QWORD); 
  NTSTATUS result; 
  __int64(__fastcall *v6)(_QWORD, _QWORD); 
  __int64(__fastcall *v7)(_QWORD, _QWORD); 

  v2 = a2;
  if( *(_DWORD *)(a1 + 40) == 16 )
  {
    LODWORD(v6) = WheapGetErrorSourceFunction(a1, 1i64, 0);
    v7 = v6;
    result = 0;
    if( v7 )
      result = v7(*(_QWORD *)(a1 + 56), *(unsigned int *)(a1 + 124));
  }
  else
  {
    LODWORD(v4) = WheapGetErrorSourceFunction(a1, 1i64, 0);
    if( v4 )
      result = v4(v2, a1 + 96, *(_QWORD *)(a1 + 56));
    else
      result = -1073741822;
  }
  _InterlockedDecrement((volatile signed __int32 *)(a1 + 92));
  return result;
}

Referenced by:

WheaAddErrorSource
WheaInitialize
WheaInitializeProcessor
WheapInitializeDeferredErrorSources