int __fastcall sub_FFD821B8(int a1, char a2, int a3, unsigned __int8 n2)
{
unsigned __int8 n2_1; // bh
char v5; // bl
int v7; // edi
int v8; // eax
__int16 v9; // si
int v10; // edx
unsigned __int8 v11; // bl
char v12; // al
char v13; // al
char n2_2; // [esp+11h] [ebp-3h] BYREF
char v16; // [esp+12h] [ebp-2h]
char v17; // [esp+13h] [ebp-1h] BYREF
n2_1 = n2; /*0xffd821ba*/
v5 = 0; /*0xffd821be*/
v16 = a2; /*0xffd821c0*/
if ( n2 == 1 )
{
DebugPrint(64, (int)"EarlyConfigurePchHSata() - First Controller - Start\
"); /*0xffd821d5*/
v7 = sub_FFD8CBBA(0, 23, 0); /*0xffd821e9*/
sub_FFD8C019(); /*0xffd821eb*/
}
else
{
if ( n2 != 2 )
{
DebugPrint(0x80000000, (int)"Error: Invalid SATA controller!\
");
return -2147483646; /*0xffd8244e*/
}
DebugPrint(64, (int)"EarlyConfigurePchHSata() - Second Controller - Start\
"); /*0xffd82202*/
v7 = sub_FFD8CBBA(0, 17, 5); /*0xffd82216*/
}
v8 = sub_FFD8CBBA(0, 31, 0); /*0xffd8221f*/
v9 = sub_FFD8CCA5((unsigned __int16 *)(v8 + 2)); /*0xffd8222d*/
if ( !(unsigned __int8)sub_FFD8D58A() ) /*0xffd82230*/
{
if ( n2_1 == 1 ) /*0xffd8223c*/
v5 = sub_FFD81814(); /*0xffd82243*/
if ( n2_1 != 2 ) /*0xffd82248*/
goto LABEL_14; /*0xffd82248*/
v11 = 0; /*0xffd8224a*/
while ( 1 ) /*0xffd82253*/
{
sub_FFD8E7BA(v11, &n2); /*0xffd82253*/
sub_FFD8E062(n2, &v17, &n2_2); /*0xffd82266*/
if ( n2_2 == 2 ) /*0xffd82271*/
break; /*0xffd82271*/
if ( ++v11 >= 6u ) /*0xffd82278*/
{
v5 = 0; /*0xffd8227a*/
goto LABEL_14; /*0xffd8227c*/
}
}
}
v5 = 1; /*0xffd8227e*/
LABEL_14:
if ( (*(_BYTE *)a1 & 1) != 0 && (v5 || *(_DWORD *)(a1 + 4)) ) /*0xffd8228e*/
{
*(_BYTE *)(v7 + 160) = -104; /*0xffd82298*/
*(_DWORD *)(v7 + 164) = *(_DWORD *)(v7 + 164) & 0xFFFFFE00 | 0x183; /*0xffd822ad*/
*(_BYTE *)(v7 + 160) = -104; /*0xffd822b3*/
*(_DWORD *)(v7 + 164) |= 0x8000u; /*0xffd822c5*/
*(_BYTE *)(v7 + 160) = -92; /*0xffd822cb*/
*(_DWORD *)(v7 + 164) |= 0x40u; /*0xffd822db*/
if ( v9 == -24254 /*0xffd8237d*/
|| v9 == -24253
|| v9 == -24252
|| v9 == -24251
|| v9 == -24250
|| v9 == -24249
|| v9 == -24248
|| v9 == -24256
|| v9 == -24255
|| v9 == -24243
|| v9 == -24242
|| v9 == -24241
|| v9 == -25280
|| v9 == -25279
|| v9 == -25278
|| v9 == -25277
|| v9 == -25274
|| v9 == -25272 )
{
*(_BYTE *)(v7 + 160) = -100; /*0xffd8237f*/
*(_DWORD *)(v7 + 164) |= 0x400000u; /*0xffd82391*/
}
*(_BYTE *)(v7 + 160) = -100; /*0xffd82397*/
*(_DWORD *)(v7 + 164) = *(_DWORD *)(v7 + 164) & 0xDF63E013 | 0x209C0224; /*0xffd823ae*/
if ( n2_1 == 1 ) /*0xffd823b7*/
{
*(_BYTE *)(v7 + 160) = -100; /*0xffd823b9*/
*(_DWORD *)(v7 + 164) |= 0x40000000u; /*0xffd823cb*/
}
v12 = *(_BYTE *)(v7 + 156) | 0x20; /*0xffd823d7*/
if ( *(_DWORD *)(a1 + 4) == 1 ) /*0xffd823dd*/
{
if ( (*(_BYTE *)(a1 + 76) & 1) != 0 ) /*0xffd823e5*/
v12 = *(_BYTE *)(v7 + 156) & 0x1F | 0xA0; /*0xffd823e7*/
else
v12 = *(_BYTE *)(v7 + 156) & 0x1F | 0x60; /*0xffd823eb*/
}
if ( v16 ) /*0xffd823f2*/
v13 = v12 & 0xE1 | 6; /*0xffd823f6*/
else
v13 = v12 & 0xE8 | 0x10; /*0xffd823fc*/
*(_BYTE *)(v7 + 156) = v13 & 0xF8 | 6; /*0xffd8240d*/
sub_FFD8CC4F(v7 + 148, 255); /*0xffd82413*/
sub_FFD7FA46(2u); /*0xffd8241b*/
DebugPrint(64, (int)"EarlyConfigurePchHSata() End\
"); /*0xffd82427*/
return 0; /*0xffd8242c*/
}
else
{
LOBYTE(v10) = n2_1; /*0xffd82434*/
sub_FFD81FF5(a3, v10); /*0xffd82436*/
return 0; /*0xffd8243b*/
}
}