bool __fastcall GetPciEndpointInfo(int a1, unsigned __int8 a2, unsigned __int16 *a3)
{
char v5; // bl
unsigned int v7; // ebp
unsigned __int8 v8; // al
unsigned __int16 *v9; // ecx
unsigned int *v11; // [esp+1Ch] [ebp+4h]
v5 = 0; /*0xffd82f40*/
*(_DWORD *)(a3 + 1) = 0xFFFF; /*0xffd82f42*/
*a3 = -1; /*0xffd82f49*/
if ( (sub_FFD8CCA5((unsigned __int16 *)(a1 + 90)) & 0x40) == 0 ) /*0xffd82f56*/
return 0; /*0xffd82f58*/
*(_DWORD *)(a1 + 24) = *(_DWORD *)(a1 + 24) & 0xFF0000FF | ((a2 | (a2 << 8)) << 8); /*0xffd82f7c*/
v11 = (unsigned int *)sub_FFD8CBBA(a2, 0, 0); /*0xffd82f8b*/
sub_FFD8CCD3(v11, 0); /*0xffd82f8f*/
v7 = *v11; /*0xffd82f94*/
*(_DWORD *)a3 = *v11; /*0xffd82f9c*/
if ( v7 != -1 ) /*0xffd82fa6*/
{
v8 = sub_FFD90A71(0, HIWORD(v7)); /*0xffd82fb0*/
if ( v8 ) /*0xffd82fb9*/
{
v9 = (unsigned __int16 *)((char *)v11 + v8 + 12); /*0xffd82fc5*/
v5 = *(_BYTE *)v9 & 0xF; /*0xffd82fc9*/
*((_BYTE *)a3 + 5) = ((unsigned __int16)sub_FFD8CCA5(v9) >> 4) & 0x3F; /*0xffd82fd7*/
}
*((_BYTE *)a3 + 4) = v5; /*0xffd82fda*/
}
*(_DWORD *)(a1 + 24) &= 0xFF0000FF; /*0xffd82fe5*/
DebugPrint(
64,
(int)"VID: %04X DID: %04X MLS: %d MLW: %d\
",
*a3,
a3[1],
*((unsigned __int8 *)a3 + 4),
*((unsigned __int8 *)a3 + 5));
return v7 != -1; /*0xffd83012*/
}