XmInt1aFindPciClassCode

UINT64 __fastcall XmInt1aFindPciClassCode(INT64 a1){
  UINT64 result; 
  char v2; 
  unsigned int v4; 
  unsigned int v5; 
  unsigned __int8 i; 
  unsigned int v7; 
  unsigned int v8; 
  unsigned int j; 
  int v10; 
  unsigned int v11; 
  void *retaddr; 
  unsigned int v13; 
  result = (UINT64)&retaddr;
  v2 = 0;
  v4 = 0;
  v13 = 0;
  v5 = 0;
  for( i = 0; i < (unsigned __int8)XmNumberPciBusses; ++i )
  {
    v7 = 0;
    v8 = i;
    while( 2 )
    {
      for( j = 0; j < 8; ++j )
      {
        v5 = v7 & 0x1F | v5 & 0xFFFFFF00 | (32 * (j & 7));
        v10 = ((__int64(__fastcall *)(_QWORD, _QWORD, unsigned int *, __int64, int))XmGetPciData)(
                v8,
                v5,
                &v13,
                8i64,
                4);
        v11 = v13;
        if( v10 != 4 )
          v11 = -1;
        result = *(_DWORD *)(a1 + 28) & 0xFFFFFF;
        v13 = v11 >> 8;
        if( v11 >> 8 == (_DWORD)result )
        {
          result = v4++;
          if( (_DWORD)result == *(unsigned __int16 *)(a1 + 48) )
          {
            *(_BYTE *)(a1 + 37) = i;
            *(_DWORD *)(a1 + 16) &= ~1u;
            *(_BYTE *)(a1 + 36) = j | (8 * v7);
            goto LABEL_12;
          }
        }
        v8 = i;
      }
      ++v7;
      v8 = i;
      if( v7 < 0x20 )
        continue;
      break;
    }
  }
  *(_DWORD *)(a1 + 16) |= 1u;
  v2 = -122;
LABEL_12:
  *(_BYTE *)(a1 + 25) = v2;
  return result;
}

Referenced by:

XmExecuteInt1a