Newer
Older
AMI-Aptio-BIOS-Reversed / SetupDefaultLoad / sub_1AA8.txt
@Ajax Dong Ajax Dong 2 days ago 5 KB Init
__int64 __fastcall sub_1AA8(int a1)
{
  unsigned __int8 v1; // si
  __int64 v2; // rdx
  __int64 v3; // rcx
  __int64 v4; // r8
  __int64 v5; // r9
  unsigned __int8 v6; // r12
  unsigned __int8 v7; // r15
  bool v8; // zf
  unsigned __int8 v9; // r13
  char n8; // di
  char n4; // bl
  __int64 v12; // r9
  char n7; // cl
  char v14; // cl
  unsigned __int8 n4_1; // r11
  char v16; // r14
  char v17; // si
  char v18; // r11
  unsigned __int8 n4_2; // r11
  char v20; // r12
  char v21; // di
  char v22; // r11
  char n8_2; // cl
  char v24; // cl
  char v25; // r14
  char v26; // si
  char v27; // r11
  __int64 result; // rax
  unsigned __int8 v29; // [rsp+40h] [rbp-18h]
  unsigned __int8 v30; // [rsp+41h] [rbp-17h]
  unsigned __int8 v31; // [rsp+42h] [rbp-16h]
  unsigned __int8 n4_3; // [rsp+43h] [rbp-15h] BYREF
  _DWORD v33[5]; // [rsp+44h] [rbp-14h] BYREF
  int v34; // [rsp+A0h] [rbp+48h] BYREF
  unsigned __int8 v35; // [rsp+A8h] [rbp+50h] BYREF
  unsigned __int8 n8_1; // [rsp+B0h] [rbp+58h] BYREF
  char v37; // [rsp+B8h] [rbp+60h] BYREF

  v1 = 0; /*0x1abc*/
  v37 = -1; /*0x1abe*/
  n8_1 = 0; /*0x1ac6*/
  n4_3 = 0; /*0x1ace*/
  LOBYTE(v34) = -1; /*0x1adf*/
  if ( sub_57C4(a1, (unsigned int)&n8_1, (unsigned int)&v37, (unsigned int)&n4_3, (__int64)&v34) < 0 )
    return sub_5408(
             0x80000000LL,
             "[OemCollectNvmeVmdSlotInfo]: Get BP type failed!! Skip update the NVME slot info in VMD menu! \n");
  v6 = v37; /*0x1af1*/
  v7 = v34; /*0x1af5*/
  if ( v37 == -1 && (_BYTE)v34 == 0xFF )
    return sub_5408(
             0x80000000LL,
             "[OemCollectNvmeVmdSlotInfo]: Get BP type failed!! Skip update the NVME slot info in VMD menu! \n");
  sub_7CC(v3, v2, v4, v5); /*0x1b08*/
  v34 = 0; /*0x1b11*/
  sub_5B28(16973832, &v34); /*0x1b19*/
  v8 = v34 == 0; /*0x1b1e*/
  v34 = 0; /*0x1b2a*/
  v29 = v8; /*0x1b2d*/
  sub_5B28(16973833, &v34); /*0x1b31*/
  v8 = v34 == 0; /*0x1b36*/
  v34 = 0; /*0x1b42*/
  v30 = v8; /*0x1b45*/
  sub_5B28(16973834, &v34); /*0x1b49*/
  v8 = v34 == 0; /*0x1b4e*/
  v34 = 0; /*0x1b5a*/
  v31 = v8; /*0x1b5d*/
  sub_5B28(16973835, &v34); /*0x1b61*/
  v9 = v34 == 0; /*0x1b71*/
  sub_5768(&v34, &v35); /*0x1b75*/
  n8 = n8_1; /*0x1b7a*/
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: OnBoardNvmeBaseIndexNumber = %x\n", n8_1);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: OnBoardNvmeBaseSlotNumber = %x\n", v6);
  n4 = n4_3; /*0x1ba9*/
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: RiserNvmeBaseIndexNumber = %x\n", n4_3);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: RiserNvmeBaseSlotNumber = %x\n", v7);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: IsOnBoardNVME67Present = %x\n", v9);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: IsOnBoardNVME45Present = %x\n", v31);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: IsOnBoardNVME23Present = %x\n", v30);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: IsOnBoardNVME01Present = %x\n", v29);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: FirstInterPoserCardInstall = %x\n", (unsigned __int8)v34);
  sub_5408(0x80000000LL, "[OemCollectNvmeVmdSlotInfo]: SecondInterPoserCardInstallx = %x\n", v35);
  byte_7D91 = 0; /*0x1c4d*/
  sub_5B28(17170432, v33); /*0x1c59*/
  if ( v33[0] == 1 ) /*0x1c62*/
  {
    if ( v9 ) /*0x1c6b*/
    {
      n7 = n8; /*0x1c6d*/
      if ( (unsigned __int8)n8 >= 8u ) /*0x1c74*/
        goto LABEL_25; /*0x1c74*/
      do /*0x1ca6*/
      {
        sub_1914(n7, n8, v6, v29, v30, v31, v9); /*0x1c9c*/
        n7 = v14 + 1; /*0x1ca1*/
      }
      while ( (unsigned __int8)n7 < 8u ); /*0x1ca6*/
    }
    else
    {
      n4_1 = n4; /*0x1cad*/
      if ( (unsigned __int8)n4 >= 4u ) /*0x1cb3*/
        goto LABEL_25; /*0x1cb3*/
      v16 = v34; /*0x1cb9*/
      v17 = v35; /*0x1cbd*/
      do /*0x1ce4*/
      {
        sub_19FC(n4_1, n4, v7, v12, v16, v17, 1); /*0x1cd8*/
        n4_1 = v18 + 1; /*0x1cdd*/
      }
      while ( n4_1 < 4u ); /*0x1ce4*/
    }
  }
  else
  {
    n4_2 = n4; /*0x1ceb*/
    if ( v9 ) /*0x1cf1*/
    {
      if ( (unsigned __int8)n4 < 4u ) /*0x1cf6*/
      {
        v20 = v34; /*0x1cf8*/
        v21 = v35; /*0x1cfc*/
        do /*0x1d23*/
        {
          sub_19FC(n4_2, n4, v7, v12, v20, v21, 2); /*0x1d17*/
          n4_2 = v22 + 1; /*0x1d1c*/
        }
        while ( n4_2 < 4u ); /*0x1d23*/
        n8 = n8_1; /*0x1d25*/
        v6 = v37; /*0x1d29*/
      }
      n8_2 = n8; /*0x1d2d*/
      if ( (unsigned __int8)n8 >= 8u ) /*0x1d34*/
        goto LABEL_25; /*0x1d34*/
      do /*0x1d62*/
      {
        sub_1914(n8_2, n8, v6, v29, v30, v31, v9); /*0x1d58*/
        n8_2 = v24 + 1; /*0x1d5d*/
      }
      while ( (unsigned __int8)n8_2 < 8u ); /*0x1d62*/
    }
    else
    {
      if ( (unsigned __int8)n4 >= 4u ) /*0x1d69*/
        goto LABEL_25; /*0x1d69*/
      v25 = v34; /*0x1d6b*/
      v26 = v35; /*0x1d6f*/
      do /*0x1d96*/
      {
        sub_19FC(n4_2, n4, v7, v12, v25, v26, 2); /*0x1d8a*/
        n4_2 = v27 + 1; /*0x1d8f*/
      }
      while ( n4_2 < 4u ); /*0x1d96*/
    }
  }
  v1 = 0; /*0x1d9e*/
LABEL_25:
  byte_7D60[0] = byte_7D91; /*0x1da0*/
  result = sub_5408(
             0x80000000LL,
             "[OemCollectNvmeVmdSlotInfo]: mVmdSetupConfiguration.DevCount = %x\n",
             (unsigned __int8)byte_7D91);
  if ( byte_7D91 )
  {
    do
    {
      sub_5408(
        0x80000000LL,
        "[OemCollectNvmeVmdSlotInfo]: mVmdSetupConfiguration.Dev[%x].SlotIndex = %x\n",
        v1,
        (unsigned __int8)byte_7D60[2 * v1 + 1]);
      result = sub_5408(
                 0x80000000LL,
                 "[OemCollectNvmeVmdSlotInfo]: mVmdSetupConfiguration.Dev[%x].VmdPortIndex = %x\n",
                 v1,
                 (unsigned __int8)byte_7D60[2 * v1 + 2]);
      ++v1; /*0x1e07*/
    }
    while ( v1 < (unsigned __int8)byte_7D91 );
  }
  return result; /*0x1e26*/
}