int __fastcall VgaModeConfigPll(int *this, __int16 a2)
{
int v2; // ebp
unsigned int n15_4; // edi
unsigned int n5; // ebx
unsigned int n15; // esi
int v6; // ecx
int n15_3; // eax
int v8; // ecx
int v9; // edx
int v10; // ecx
int v11; // ecx
int v12; // edx
int v13; // ecx
int v14; // edx
int v15; // ecx
int v16; // eax
unsigned int n15_2; // eax
unsigned int n15_5; // ecx
unsigned int n255_1; // ecx
int v20; // esi
int v21; // edx
int v22; // ecx
int v23; // ecx
unsigned int n15_7; // edx
unsigned int v25; // ecx
unsigned int n15_8; // ecx
int v27; // ecx
int v28; // edx
int v29; // ebx
int v30; // ecx
int v31; // ecx
unsigned int n15_6; // [esp+18h] [ebp-14h]
unsigned int n15_1; // [esp+1Ch] [ebp-10h]
int v36; // [esp+20h] [ebp-Ch]
unsigned int n255; // [esp+24h] [ebp-8h]
unsigned int n2; // [esp+28h] [ebp-4h]
v2 = *this;
n15_4 = (unsigned __int8)PciRegRead(*this, 510525540);
n5 = 0;
while ( 2 )
{
n255 = 255;
n15 = 0;
n15_1 = 0;
v36 = 0;
n2 = 0;
n15_6 = n15_4;
if ( !n15_4 )
goto LABEL_13;
while ( 1 )
{
PciRegWrite(v2, 510525464, 33072);
n15_3 = n15;
if ( n15 >= n15_4 )
n15_3 = n15 - n15_4;
PciRegWrite(v6, 510525544, n15_3);
PciRegRead(v8, 510525440);
PciRegWrite(v10, v9 + 24, 304);
PciRegRead(v11, 510525440);
PciRegRead(v13, v12);
v16 = PciRegRead(v15, v14 + 28);
if ( (BYTE2(v16) & 0x96) == 0x96 )
break;
n15_2 = n15_1;
if ( n15_1 )
{
if ( (unsigned int)++v36 >= 2 )
{
n15_5 = n15;
n15_6 = n15;
goto LABEL_10;
}
}
LABEL_9:
n15_5 = n15_6;
LABEL_10:
if ( ++n15 >= n15_5 )
{
n255_1 = n255;
goto LABEL_12;
}
}
if ( !n15 )
{
n15_6 += 16;
n15 = 15;
LABEL_8:
n15_2 = n15_1;
goto LABEL_9;
}
if ( BYTE2(v16) != 150 )
{
LABEL_17:
if ( n255 > n15 )
n255 = n15;
if ( n15_1 < n15 )
n15_1 = n15;
v36 = 0;
goto LABEL_8;
}
if ( n2 < 2 )
{
++n2;
goto LABEL_17;
}
n255_1 = n15;
n15_2 = n15;
LABEL_12:
if ( !n15_2 )
{
LABEL_13:
v20 = PciRegRead(v2, 510525540) & 0x3FFFF;
PciRegWrite(v22, v21, v20);
PciRegWrite(v23, 510525544, 0);
MicroSecondDelay(10);
PciRegWrite(v2, 510525540, v20 | 0xC0000);
MicroSecondDelay(10);
continue;
}
break;
}
n15_7 = (n15_2 + n255_1) >> 1;
if ( n15_7 >= n15_4 )
n15_7 -= n15_4;
v25 = n15_4 >> 2;
if ( a2 == 1 )
{
n15_8 = n15_7 + v25 + 5;
if ( n15_8 >= n15_4 )
n15_8 -= n15_4;
}
else
{
n15_8 = n15_7 + v25;
if ( n15_8 >= n15_4 )
n15_8 -= n15_4;
if ( (n15_8 & 8) != 0 )
{
while ( (n15_8 & 8) != 0 || n5 < 5 )
{
++n5;
if ( ++n15_8 >= n15_4 )
n15_8 -= n15_4;
}
}
else
{
while ( (n15_8 & 7) != 7 && n5 < 5 )
{
++n5;
if ( ++n15_8 >= n15_4 )
n15_8 -= n15_4;
}
}
}
PciRegWrite(v2, 510525544, n15_7 | (n15_8 << 8));
PciRegRead(v27, 510525440);
v29 = v28 + 24;
PciRegWrite(v30, v28 + 24, 33072);
return PciRegWrite(v31, v29, 304);
}