Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / decompiled / ffd860b8.c
@Ajax Dong Ajax Dong 7 days ago 1 KB Recovering names
int __thiscall sub_FFD860B8(int this)
{
  int v2; // esi
  int v3; // edi
  int v4; // eax
  _DWORD *v5; // eax
  int n8; // edx
  int v8; // [esp+14h] [ebp-8h] BYREF
  int n17; // [esp+18h] [ebp-4h] BYREF

  DebugPrint(64, (int)"ConfigureXhci() - Start\n"); /*0xffd860c8*/
  v2 = *(_DWORD *)(this + 3510); /*0xffd860cd*/
  sub_FFD8BE68(); /*0xffd860d9*/
  v3 = sub_FFD8CBBA(0, 20, 0); /*0xffd860f1*/
  sub_FFD8C76F(&v8); /*0xffd860f3*/
  *(_DWORD *)(v3 + 16) = v2; /*0xffd860fd*/
  sub_FFD8CC4F(v3 + 4, 6); /*0xffd86101*/
  if ( (*(_BYTE *)(this + 2263) & 2) != 0 ) /*0xffd86109*/
    *(_DWORD *)(v2 + 33004) |= 1u; /*0xffd86114*/
  v4 = sub_FFD8AD54(); /*0xffd8611a*/
  (*(void (__cdecl **)(int, int *))(*(_DWORD *)v4 + 40))(v4, &n17); /*0xffd86127*/
  if ( n17 == 17 ) /*0xffd86133*/
    sub_FFD86747(this + 2263); /*0xffd86137*/
  else
    sub_FFD85FBC(); /*0xffd8613e*/
  sub_FFD861FF(this, v2, v3); /*0xffd86148*/
  sub_FFD8701A(this, v2); /*0xffd86151*/
  DebugPrint(64, (int)"xHCI: XhciPostInitDone Start\n");
  *(_DWORD *)(v2 + 32992) &= ~0x10000u; /*0xffd86174*/
  *(_DWORD *)(v3 + 80) = 265186911; /*0xffd8617c*/
  DebugPrint(64, (int)"xHCI: XhciPostInitDone End\n");
  if ( (*(_BYTE *)(this + 2263) & 4) != 0 ) /*0xffd8618e*/
  {
    sub_FFD86E37(this + 2263, v3); /*0xffd86194*/
  }
  else
  {
    DebugPrint(0x80000000, (int)"Clear Over-Current registers\n"); /*0xffd861a5*/
    v5 = (_DWORD *)(v3 + 208); /*0xffd861ae*/
    n8 = 8; /*0xffd861b4*/
    do /*0xffd861c8*/
    {
      *(v5 - 8) = 0; /*0xffd861b5*/
      *v5++ = 0; /*0xffd861bc*/
      --n8; /*0xffd861c5*/
    }
    while ( n8 ); /*0xffd861c8*/
  }
  sub_FFD8687F(this + 2263, v2); /*0xffd861ce*/
  sub_FFD8CC6A(v3 + 4, 65529); /*0xffd861db*/
  *(_DWORD *)(v3 + 16) = 0; /*0xffd861e7*/
  DebugPrint(64, (int)"ConfigureXhciPreMem () - End\n"); /*0xffd861ee*/
  return 0; /*0xffd861f5*/
}