Newer
Older
AMI-Aptio-BIOS-Reversed / RegAccessPeim / decompiled / CpuTypeToTableIndex.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Init
// CpuTypeToTableIndex - addr:0xffdaf95e
int __cdecl CpuTypeToTableIndex(int a1, unsigned __int8 a2, unsigned __int8 n20, unsigned __int8 n6, char n2, int a6)
{
  int v6; // ebp
  int v7; // ecx
  int n6_2; // eax
  int n6_1; // [esp-4h] [ebp-14h]

  v6 = 0;
  v7 = a1;
  if ( (((1 << a2) & *(_DWORD *)(a6 + 46)) == 0 || n20 == 20) && (((1 << a2) & *(_DWORD *)(a6 + 50)) == 0 || n20 != 20) )
  {
    CpuDeadLoopEx(a1, "\nInvalid Socket Id %d. \n", a2);
    v7 = a1;
  }
  switch ( n20 )
  {
    case 7u:
    case 0xBu:
    case 8u:
    case 6u:
      return *(unsigned __int8 *)(6 * (a2 + 1) + a6);
    case 0x13u:
    case 0xDu:
    case 0x10u:
      return *(unsigned __int8 *)(6 * a2 + a6 + 4);
    case 0xEu:
      goto LABEL_26;
  }
  if ( n20 != 17 )
  {
    if ( n20 == 15 )
    {
      if ( !n6 )
      {
        n6_1 = 0;
        goto LABEL_23;
      }
      LOBYTE(n6_2) = (n6 - 1) / 4 + 1;
      if ( (unsigned __int8)n6_2 >= 6u )
      {
        n6_1 = n6;
LABEL_23:
        CpuDeadLoopEx(v7, "\nInvalid BOX_IIO_PCIE_NTB BoxInstance %d. \n", n6_1);
        return v6;
      }
LABEL_36:
      n6_2 = (unsigned __int8)n6_2;
      return *(unsigned __int8 *)(n6_2 + a6 + 6 * a2 + 4);
    }
    if ( n20 != 18 )
    {
      if ( n20 < 6u )
        return *(unsigned __int8 *)(6 * a2 + a6 + 5);
      if ( n20 == 12 || n20 == 9 || n20 == 10 )
        return *(unsigned __int8 *)(6 * a2 + a6 + 7);
      if ( n20 != 20 )
      {
        CpuDeadLoopEx(v7, "\nInvalid BoxType %d. \n", n20);
        return v6;
      }
      return *(unsigned __int8 *)(6 * a2 + a6 + 4);
    }
    if ( n2 )
    {
      if ( n2 == 2 || n2 == 4 )
      {
        LOBYTE(n6_2) = n6;
        if ( n6 >= 6u )
          return v6;
        goto LABEL_36;
      }
      if ( n2 != 5 && n2 != 1 && n2 != 3 )
      {
        CpuDeadLoopEx(v7, "\nInvalid BoxType %d, Functional block %d. \n", 18);
        return v6;
      }
      return *(unsigned __int8 *)(6 * a2 + a6 + 4);
    }
LABEL_26:
    if ( n6 )
    {
      LOBYTE(n6_2) = (n6 - 1) / 4 + 1;
      if ( (unsigned __int8)n6_2 >= 6u )
      {
        CpuDeadLoopEx(v7, "\nInvalid IIO_PCIE BoxInstance %d. \n", n6);
        return v6;
      }
      goto LABEL_36;
    }
    return *(unsigned __int8 *)(6 * a2 + a6 + 4);
  }
  n6_2 = n6;
  if ( n6 < 6u )
    return *(unsigned __int8 *)(n6_2 + a6 + 6 * a2 + 4);
  CpuDeadLoopEx(v7, "\nInvalid BOX_IIO_VTD BoxInstance %d. \n", n6);
  return v6;
}