Newer
Older
AMI-Aptio-BIOS-Reversed / CpRcPkg / Universal / RegAccess / Pei / RegAccessPeim / decompiled / FuncBlockToIndex.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Restructure the repo
// FuncBlockToIndex - addr:0xffdafed6
int __cdecl FuncBlockToIndex(int a1, unsigned __int8 n20, unsigned __int8 n0x1C, unsigned __int8 n2, int a5)
{
  unsigned __int8 v5; // cl
  unsigned __int8 v6; // dl
  unsigned int n7; // esi
  int v8; // esi
  unsigned __int8 n7_1; // al

  v5 = *(_BYTE *)(a5 + 44);
  v6 = *(_BYTE *)(a5 + 60);
  n7 = 0;
  switch ( n20 )
  {
    case 0u:
    case 1u:
    case 2u:
      if ( !v5 && n0x1C < 0x1Cu )
      {
        n7 = n0x1C & 7;
        goto LABEL_15;
      }
      return n7;
    case 3u:
    case 4u:
    case 5u:
    case 6u:
    case 0xDu:
    case 0xEu:
    case 0xFu:
    case 0x10u:
    case 0x11u:
    case 0x13u:
      n7 = (unsigned __int8)byte_FFDB090C[168 * v5 + 8 * n20 + n2];
      goto LABEL_15;
    case 7u:
      if ( n2 >= 2u )
        return 4;
      v8 = (unsigned __int8)byte_FFDB0944[168 * v5 + n0x1C % (unsigned int)v6];
LABEL_5:
      n7 = n2 + v8;
      goto LABEL_15;
    case 8u:
      v8 = (unsigned __int8)byte_FFDB094C[168 * v5 + n0x1C % (unsigned int)v6];
      if ( n2 != 2 )
        goto LABEL_5;
      n7 = v8 + 3;
      goto LABEL_15;
    case 9u:
      n7 = (unsigned __int8)byte_FFDB0954[168 * v5 + n2];
      if ( n0x1C >= 9u )
        goto LABEL_13;
      goto LABEL_15;
    case 0xAu:
      n7 = (unsigned __int8)byte_FFDB095C[168 * v5 + n2];
      if ( n0x1C == 1 )
LABEL_13:
        n7 += 4;
      goto LABEL_15;
    case 0xBu:
      v8 = (unsigned __int8)byte_FFDB0964[168 * v5 + n0x1C % (unsigned int)v6];
      goto LABEL_5;
    case 0xCu:
      n7 = (unsigned __int8)byte_FFDB096C[168 * v5 + n2];
      if ( n0x1C == 2 || n0x1C == 4 )
        n7 += 4;
      goto LABEL_15;
    case 0x12u:
      if ( n0x1C >= 0x15u || (n7_1 = byte_FFDB099C[168 * v5 + n2], n7_1 == 0xFF) )
      {
        CpuDeadLoopEx(a1, "\nInvalid IIO DFX Box Instance Number %d. \n", n0x1C);
      }
      else if ( n2 )
      {
        n7 = n7_1;
      }
      else
      {
        if ( !n0x1C )
          return 0;
        n7 = (n0x1C - 1) % 4;
      }
LABEL_15:
      if ( n7 > 7 )
        CpuDeadLoopEx(
          a1,
          "\nInvalid Functional Block %d accessed for CPUType %d CPUIndex %d Box Type %d and Box Instance %d. \n",
          n2);
      return n7;
    case 0x14u:
      if ( n0x1C )
        CpuDeadLoopEx(a1, "\nInvalid FPGA Box Instance Number %d. \n", n0x1C);
      return 0;
    default:
      CpuDeadLoopEx(a1, "\nInvalid Box Type %d. \n", n20);
      goto LABEL_15;
  }
}