HalpEfiBugCheckAddPagesCallback

VOID __stdcall HalpEfiBugCheckAddPagesCallback(
        KBUGCHECK_CALLBACK_REASON Reason,
        KBUGCHECK_REASON_CALLBACK_RECORD *Record,
        PVOID ReasonSpecificData){
  unsigned int *v4; 
  unsigned int i; 
  unsigned int MaximumProcessorCount; 
  unsigned int v7; 
  unsigned int v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  int v12; 
  *((_QWORD *)ReasonSpecificData + 3) = 0i64;
  *((_DWORD *)ReasonSpecificData + 2) = 0;
  if( HalFirmwareTypeEfi && HalpInterruptProcessorPcr )
  {
    v4 = *(unsigned int **)ReasonSpecificData;
    if( !*(_QWORD *)ReasonSpecificData )
    {
      *(_QWORD *)ReasonSpecificData = &HalpEfiBugcheckCallbackNextRuntimeServiceIndex;
      HalpEfiBugcheckCallbackNextRuntimeServiceIndex = 0;
      v4 = *(unsigned int **)ReasonSpecificData;
    }
    for( i = *v4; i < 9; ++i )
    {
      ++*v4;
      MaximumProcessorCount = HalQueryMaximumProcessorCount();
      v7 = 0;
      v8 = MaximumProcessorCount;
      if( MaximumProcessorCount )
      {
        v9 = 0i64;
        while( 1 )
        {
          v10 = *(_QWORD *)(v9 + HalpInterruptProcessorPcr);
          if( v10 )
          {
            v11 = v10 + 192;
            if( v11 )
            {
              v12 = *(_DWORD *)(v11 + 32);
              if( _bittest(&v12, i) )
              {
                if( HalEfiRuntimeServicesBlock[0] )
                  break;
              }
            }
          }
          ++v7;
          v9 += 8i64;
          if( v7 >= v8 )
            goto LABEL_13;
        }
        *((_DWORD *)ReasonSpecificData + 2) = -2147483647;
        *((_QWORD *)ReasonSpecificData + 2) = HalEfiRuntimeServicesBlock[i];
        *((_QWORD *)ReasonSpecificData + 3) = 1i64;
        return;
      }
LABEL_13:
      ;
    }
  }
}

Referenced by:

No references.