Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / decompiled / ffd821b8.c
@Ajax Dong Ajax Dong 7 days ago 3 KB Recovering names
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*/
  }
}