int __thiscall sub_FFD87B03(int this)
{
int v2; // edi
int v3; // ebx
int v5; // ebp
unsigned int n0x3E8; // esi
unsigned int i; // ebp
int n2; // esi
int n35; // edi
unsigned int v10; // [esp+10h] [ebp-4h] BYREF
v2 = *(_DWORD *)(this + 3510); /*0xffd87b11*/
v3 = sub_FFD8CBBA(0, 20, 1); /*0xffd87b1d*/
if ( (unsigned __int16)sub_FFD8CCA5((unsigned __int16 *)v3) == 0xFFFF )
{
DebugPrint(64, (int)"xDCI: Pci device NOT found\n");
return -2147483634; /*0xffd87b3e*/
}
else
{
v5 = sub_FFD8CBBA(0, 20, 0); /*0xffd87b63*/
sub_FFD8C578(-1, 63); /*0xffd87b65*/
sub_FFD8C5B5(); /*0xffd87b6a*/
if ( (*(_BYTE *)(this + 2683) & 1) != 0 )
{
*(_DWORD *)(v5 + 16) = v2; /*0xffd87cfb*/
sub_FFD8CC4F(v5 + 4, 2); /*0xffd87cfe*/
*(_DWORD *)(v2 + 32984) &= 0xFFCFFFFF; /*0xffd87d11*/
sub_FFD8CC6A(v5 + 4, 65533); /*0xffd87d1e*/
*(_DWORD *)(v5 + 16) = 0; /*0xffd87d2b*/
sub_FFD8CC85(4); /*0xffd87d34*/
}
else
{
DebugPrint(64, (int)"xDCI: Device disabled\n");
*(_DWORD *)(v5 + 16) = v2; /*0xffd87b91*/
sub_FFD8CC4F(v5 + 4, 2); /*0xffd87b95*/
*(_DWORD *)(v2 + 32984) |= 0x200000u; /*0xffd87ba5*/
n0x3E8 = 0; /*0xffd87bb6*/
*(_DWORD *)(v2 + 32984) &= ~0x100000u; /*0xffd87bb8*/
while ( (*(_DWORD *)(v2 + 32988) & 0x20000000) == 0 && n0x3E8 < 0x3E8 ) /*0xffd87bc6*/
{
sub_FFD7FA46(0x64u); /*0xffd87bcb*/
++n0x3E8; /*0xffd87bd0*/
}
*(_DWORD *)(v2 + 32984) = *(_DWORD *)(v2 + 32984) & 0xFFFFFFFC | 1; /*0xffd87bf4*/
sub_FFD8CC6A(v5 + 4, 65533); /*0xffd87bfa*/
*(_DWORD *)(v5 + 16) = 0; /*0xffd87c01*/
*(_DWORD *)(v3 + 16) = v2; /*0xffd87c0c*/
sub_FFD8CC4F(v3 + 4, 2); /*0xffd87c0f*/
*(_DWORD *)(v2 + 49424) |= 2u; /*0xffd87c23*/
*(_DWORD *)(v2 + 49664) |= 0x40u; /*0xffd87c32*/
*(_DWORD *)(v2 + 49856) |= 0x8000000u; /*0xffd87c46*/
sub_FFD8CC4F(v2 + 1112088, 3); /*0xffd87c4c*/
for ( i = 0; (sub_FFD8CCA5((unsigned __int16 *)(v2 + 1112080)) & 0xF00) == 0 && i < 0x3E8; ++i ) /*0xffd87c51*/
sub_FFD7FA46(0x64u); /*0xffd87c60*/
sub_FFD8CC6A(v3 + 4, 65533); /*0xffd87c80*/
*(_DWORD *)(v3 + 16) = 0; /*0xffd87c85*/
*(_DWORD *)(v3 + 132) |= 3u; /*0xffd87c95*/
n2 = sub_FFD8BE68(); /*0xffd87ca0*/
n35 = sub_FFD8BB3A(); /*0xffd87ca7*/
sub_FFD8C578(-1, 256); /*0xffd87cc4*/
sub_FFD8C909(&v10); /*0xffd87ccf*/
if ( n2 == 2 && n35 >= 35 ) /*0xffd87cdc*/
*(_DWORD *)(v10 + 1576) |= 0x1000000u; /*0xffd87ced*/
}
return 0; /*0xffd87d3a*/
}
}