int __fastcall VgaAttrProgram(_DWORD *a1, _BYTE *a2)
{
unsigned __int8 v3; // al
int v4; // ecx
int v5; // ecx
int v6; // ecx
int v7; // ecx
int v8; // ecx
int v9; // ecx
int n4000; // ecx
_BYTE *v11; // eax
unsigned __int8 v12; // al
int v14; // [esp-4h] [ebp-30h]
int v15; // [esp-4h] [ebp-30h]
_DWORD v16[6]; // [esp+8h] [ebp-24h] BYREF
int n965; // [esp+20h] [ebp-Ch]
char v18; // [esp+24h] [ebp-8h]
if ( !VgaGcProgramMode(a2, v16) )
return 0;
__outbyte(0x3C4u, 1u);
n965 = 965;
v3 = __inbyte(0x3C5u);
v18 = v3 | 0x20;
__outbyte(n965, v3 | 0x20);
if ( v16[2] == 1 )
{
VgaModeSetPalette();
VgaModeSetPaletteRange(v8, (int)v16);
v15 = v9;
VgaSeqProgram((int)a1, (int)v16);
VgaSeqProgramChain(v15, (int)v16);
VgaGcProgram(a1);
n4000 = 4000;
v11 = (_BYTE *)(a1[18] + 0x8000);
do
{
*v11++ = 0;
--n4000;
}
while ( n4000 );
}
else
{
VgaModeSetPalette();
VgaModeSetPaletteRange(v4, (int)v16);
VgaModeProgramAllExt(v5, (int)v16);
VgaSeqUnlock(v6, v16);
VgaSeqSetClocking((int)a1, (int)v16);
v14 = v7;
VgaSeqProgram((int)a1, (int)v16);
VgaSeqProgramChain(v14, (int)v16);
VgaGcProgramMisc(a1, v16);
}
__outbyte(0x3C4u, 1u);
n965 = 965;
v12 = __inbyte(0x3C5u);
v18 = v12 & 0xDF;
__outbyte(n965, v12 & 0xDF);
return 1;
}