int __thiscall PciCfgReadBuf(int this)
{
int v2; // ecx
int v3; // eax
int v4; // edi
unsigned __int8 v5; // bl
char v6; // bh
char v7; // bp
int v8; // ecx
int v9; // eax
char v10; // bl
unsigned __int8 v11; // bh
int v12; // ecx
char v14; // [esp+12h] [ebp-Eh] BYREF
unsigned __int8 v15; // [esp+13h] [ebp-Dh]
int v16; // [esp+14h] [ebp-Ch]
int v17; // [esp+18h] [ebp-8h]
unsigned __int32 v18; // [esp+1Ch] [ebp-4h] BYREF
v15 = 0;
if ( *(unsigned __int8 *)(this + 8) - 1 <= 0 )
{
LABEL_5:
v8 = 3 * *(unsigned __int8 *)(this + 8);
v9 = *(_DWORD *)(this + 4);
v10 = *(_BYTE *)(v8 + v9 - 2);
v11 = *(_BYTE *)(v8 + v9 - 3);
LOBYTE(v16) = *(_BYTE *)(v8 + v9 - 1);
PciCfgReadModifyWrite(v11, v10, v16, 0, &v18);
PciCfgRead32(v11, v10, v16, v12, &v14);
if ( (v14 & 0x7F) == 0 )
{
*(_BYTE *)(this + 9) = v11;
return 0;
}
}
else
{
v2 = 0;
while ( 1 )
{
v3 = *(_DWORD *)(this + 4);
v4 = 3 * v2;
v5 = *(_BYTE *)(v3 + 3 * v2);
v6 = *(_BYTE *)(v3 + 3 * v2 + 1);
LOBYTE(v16) = *(_BYTE *)(v3 + 3 * v2 + 2);
v7 = v16;
LOBYTE(v17) = v5;
PciCfgRead32(v5, v6, v16, v2, &v14);
if ( (v14 & 0x7F) != 1 )
break;
VgaCrtcRegReadModifyWrite(v5, v6, v7, 24, v17);
VgaCrtcRegReadModifyWrite(v5, v6, v7, 25, *(_BYTE *)(*(_DWORD *)(this + 4) + v4 + 3));
VgaCrtcRegReadModifyWrite(
v5,
v6,
v7,
26,
*(_BYTE *)(3 * *(unsigned __int8 *)(this + 8) + *(_DWORD *)(this + 4) - 3));
PciCfgReadModifyWrite(v5, v6, v7, 0, &v18);
v2 = ++v15;
if ( v15 >= *(unsigned __int8 *)(this + 8) - 1 )
goto LABEL_5;
}
}
return -2147483641;
}