WheapGetErrorSourceFunction

NTSTATUS __stdcall WheapGetErrorSourceFunction(INT64 a1, INT64 a2, CHAR a3){
  __int64 v3; 
  signed __int32 i; 
  __int64 v5; 
  int v7; 
  __int64 v8; 
  int v9; 
  int v10; 
  __int64 v11; 

  LODWORD(v3) = 0;
  if( a1 && *(_DWORD *)(a1 + 40) <= 0x10u )
  {
    if( a3 )
    {
LABEL_8:
      if( (_DWORD)a2 )
      {
        v7 = a2 - 1;
        if( v7 )
        {
          v9 = v7 - 1;
          if( v9 )
          {
            v10 = v9 - 1;
            if( v10 )
            {
              if( v10 == 1 )
              {
                v11 = *(int *)(a1 + 40);
                if( (_DWORD)v11 == 16 )
                  return *(_QWORD *)(a1 + 184);
                else
                  return *((_QWORD *)&stru_140CF2E80 + 8 * v11 + 670);
              }
            }
            else
            {
              return *((_QWORD *)&stru_140CF2E80 + 8 * (__int64)*(int *)(a1 + 40) + 669);
            }
          }
          else
          {
            return *((_QWORD *)&stru_140CF2E80 + 8 * (__int64)*(int *)(a1 + 40) + 668);
          }
        }
        else
        {
          v8 = *(int *)(a1 + 40);
          if( (_DWORD)v8 == 16 )
            return *(_QWORD *)(a1 + 176);
          else
            return *((_QWORD *)&stru_140CF2E80 + 8 * v8 + 667);
        }
      }
      else
      {
        v5 = *(int *)(a1 + 40);
        if( (_DWORD)v5 == 16 )
          return *(_QWORD *)(a1 + 192);
        else
          return *((_QWORD *)&stru_140CF2E80 + 8 * v5 + 666);
      }
    }
    else if( *(_DWORD *)(a1 + 108) != 3 )
    {
      for( i = *(_DWORD *)(a1 + 92); i >= 0; i = *(_DWORD *)(a1 + 92) )
      {
        if( i == _InterlockedCompareExchange((volatile signed __int32 *)(a1 + 92), i + 1, i) )
          goto LABEL_8;
      }
    }
  }
  return v3;
}

Referenced by:

WheapAttemptArchitecturalErrorRecovery
WheapCallErrorSourceCorrect
WheapCallErrorSourceInitialize
WheapCallErrorSourceUninitialize
WheapFillOutErrorRecord
WheapReportBootError