PiHotSwapGetDefaultBusRemovalPolicy

char __fastcall PiHotSwapGetDefaultBusRemovalPolicy(__int64 a1, int *a2){
  __int64 v4; 
  int v5; 
  __int64 v6; 
  if( *(_WORD *)(a1 + 40) <= 8u || (LODWORD(v4) = wcsnicmp(*(const wchar_t **)(a1 + 48), L"USB\\", 4ui64), (_DWORD)v4) )
  {
    v5 = 5;
    if( *(_WORD *)(a1 + 40) <= 0xAu
      || (LODWORD(v4) = wcsnicmp(*(const wchar_t **)(a1 + 48), L"1394\\", 5ui64), (_DWORD)v4)
      && (*(_WORD *)(a1 + 40) <= 0xAu
       || (LODWORD(v4) = wcsnicmp(*(const wchar_t **)(a1 + 48), L"SBP2\\", 5ui64), (_DWORD)v4)) )
    {
      if( *(_WORD *)(a1 + 40) <= 0xEu
        || (LODWORD(v4) = wcsnicmp(*(const wchar_t **)(a1 + 48), L"PCMCIA\\", 7ui64), (_DWORD)v4) )
      {
        if( *(_WORD *)(a1 + 40) <= 8u
          || wcsnicmp(*(const wchar_t **)(a1 + 48), L"PCI\\", 4ui64)
          || (v6 = *(_QWORD *)(a1 + 16), *(_WORD *)(v6 + 56) != 12)
          || (LODWORD(v4) = wcsicmp(*(const wchar_t **)(v6 + 64), L"PCMCIA"), (_DWORD)v4) )
        {
          v4 = *(_QWORD *)(a1 + 720);
          if( !v4 || (LOBYTE(v4) = *(_BYTE *)(v4 + 16), (v4 & 4) == 0) )
          {
            LODWORD(v4) = -(*(_BYTE *)(*(_QWORD *)(a1 + 16) + 466i64) != 5);
            v5 = 5 - (*(_BYTE *)(*(_QWORD *)(a1 + 16) + 466i64) != 5);
          }
        }
      }
    }
  }
  else
  {
    v5 = 5;
  }
  *a2 = v5;
  return v4;
}

Referenced by:

PpHotSwapUpdateRemovalPolicy