XmInt1aReadConfigRegister

CHAR __fastcall XmInt1aReadConfigRegister(INT64 a1){
  int v2; 
  char v3; 
  int v4; 
  int v5; 
  int v6; 
  int v7; 
  int v9; 
  v9 = 0;
  v2 = *(unsigned __int8 *)(a1 + 24);
  v3 = -121;
  if( (_BYTE)v2 == 9 && (*(_BYTE *)(a1 + 36) & 1) != 0 || (_BYTE)v2 == 10 && (*(_BYTE *)(a1 + 36) & 3) != 0 )
  {
    *(_DWORD *)(a1 + 16) |= 1u;
    *(_BYTE *)(a1 + 25) = -121;
  }
  v4 = v2 - 8;
  if( v4 )
  {
    v5 = v4 - 1;
    if( v5 )
    {
      if( v5 == 1 )
        v6 = 4;
      else
        v6 = 0;
    }
    else
    {
      v6 = 2;
    }
  }
  else
  {
    v6 = 1;
  }
  v7 = ((__int64(__fastcall *)(_QWORD, _QWORD, int *, _QWORD, int))XmGetPciData)(
         *(unsigned __int8 *)(a1 + 37),
         (*(unsigned __int8 *)(a1 + 36) >> 3) | (32 * (*(_BYTE *)(a1 + 36) & 7u)),
         &v9,
         *(unsigned __int16 *)(a1 + 52),
         v6);
  if( v7 )
  {
    switch( *(_BYTE *)(a1 + 24) )
    {
      case 8:
        LOBYTE(v7) = v9;
        *(_BYTE *)(a1 + 28) = v9;
        break;
      case 9:
        LOBYTE(v7) = v9;
        *(_WORD *)(a1 + 28) = v9;
        break;
      case 0xA:
        LOBYTE(v7) = v9;
        *(_DWORD *)(a1 + 28) = v9;
        break;
    }
    *(_DWORD *)(a1 + 16) &= ~1u;
    v3 = 0;
  }
  else
  {
    *(_DWORD *)(a1 + 16) |= 1u;
  }
  *(_BYTE *)(a1 + 25) = v3;
  return v7;
}

Referenced by:

XmExecuteInt1a