Newer
Older
AMI-Aptio-BIOS-Reversed / SystemInventory / SystemInventory_sub_579C.c
@Ajax Dong Ajax Dong 2 days ago 4 KB Init
__int64 __fastcall nullsub(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable, __int64 a3, __int64 a4)
{
  double v4; // xmm3_8
  __int64 v6; // rdx
  __int64 v7; // rcx
  __int64 v8; // r8
  __int64 v9; // r9
  __int64 v10; // rdx
  __int64 v11; // rcx
  __int64 v12; // r8
  __int64 v13; // rdx
  __int64 v14; // rcx
  __int64 v15; // r8
  __int64 v16; // r9
  __int64 v17; // rdx
  __int64 v18; // r8
  __int64 v19; // r9
  __int64 p_n145_1; // rcx
  int v21; // edi
  __int64 v22; // rbx
  __int64 result; // rax
  __int64 v24; // rdx
  __int64 v25; // rcx
  __int64 v26; // r8
  __int64 v27; // r9
  char v28; // si
  unsigned int v29; // edi
  __int64 v30; // rdx
  __int64 v31; // rcx
  __int64 v32; // r8
  __int64 v33; // r9
  __int64 v34; // rbx
  __int64 v35; // rdx
  __int64 v36; // rcx
  __int64 v37; // r8
  __int64 v38; // r9
  __int64 v39; // rdx
  __int64 v40; // rcx
  __int64 v41; // r8
  __int64 v42; // r9
  unsigned __int64 v43; // rbx
  __int64 v44; // rdx
  __int64 v45; // rcx
  __int64 v46; // r8
  __int64 v47; // r9
  __int64 v48; // [rsp+40h] [rbp-10h] BYREF
  __int64 p_n145; // [rsp+48h] [rbp-8h] BYREF
  __int64 v50; // [rsp+90h] [rbp+40h] BYREF
  __int64 v51; // [rsp+98h] [rbp+48h] BYREF

  LODWORD(v48) = 0; /*0x57af*/
  p_n145 = 0; /*0x57b6*/
  if ( (unsigned __int8)sub_7F8(ImageHandle, SystemTable, a3, a4) && (unsigned __int8)sub_804(64) ) /*0x57cd*/
    sub_740(64, "[System Inventory] OnReadyToBoot \n"); /*0x57e0*/
  sub_4854(v7, v6, v8, v9); /*0x57e5*/
  sub_4C00(v11, v10, v12, v4); /*0x57ea*/
  sub_47B4(); /*0x57ef*/
  sub_5110(); /*0x57f4*/
  sub_3FE4(); /*0x57f9*/
  (*(void (__fastcall **)(void *, void *, _QWORD, _QWORD))(qword_96A8 + 328))(&unk_9688, &unk_93B0, ::p_n145, 0); /*0x581d*/
  *(_BYTE *)::p_n145 = -64; /*0x582a*/
  if ( (unsigned __int8)sub_7F8(v14, v13, v15, v16) && (unsigned __int8)sub_804(64) ) /*0x5839*/
    sub_740(64, "[System Inventory] Version info size - %d \n", 85); /*0x5852*/
  *(_BYTE *)(::p_n145 + 85LL) = -63; /*0x585e*/
  p_n145_1 = ::p_n145; /*0x5862*/
  v21 = 19 * *(unsigned __int8 *)(::p_n145 + 2274LL) + 2191; /*0x5873*/
  if ( *(_BYTE *)(::p_n145 + 2351LL) ) /*0x5879*/
  {
    v22 = (*(__int64 (__fastcall **)(__int64, __int64, __int64 *))(qword_96A8 + 64))(4, 3317, &p_n145); /*0x589e*/
    result = sub_7EC(); /*0x58a1*/
    if ( (_BYTE)result ) /*0x58a8*/
    {
      if ( v22 >= 0 ) /*0x58ad*/
      {
LABEL_15:
        v28 = 1; /*0x58fa*/
        sub_63C(p_n145, 3317); /*0x5908*/
        v29 = v21 - 1; /*0x5914*/
        sub_590(p_n145, ::p_n145 + 85LL, v29); /*0x5923*/
        sub_590(v29 + p_n145, ::p_n145 + 2351LL, 75LL * *(unsigned __int8 *)(::p_n145 + 2351LL) + 1); /*0x5947*/
        p_n145_1 = *(unsigned __int8 *)(::p_n145 + 2351LL); /*0x5953*/
        v21 = 75 * p_n145_1 + 1 + v29; /*0x595f*/
        goto LABEL_17; /*0x5961*/
      }
      if ( (unsigned __int8)sub_7F8(v25, v24, v26, v27) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x58bf*/
        sub_740(0x80000000LL, "\nASSERT_EFI_ERROR (Status = %r)\n", v22); /*0x58d4*/
      result = sub_788("e:\\hs\\LenovoServerPkg\\SystemInventory\\SystemInventory.c", 1641, "!EFI_ERROR (Status)"); /*0x58ec*/
    }
    if ( v22 < 0 ) /*0x58f4*/
      return result; /*0x58f4*/
    goto LABEL_15; /*0x58f4*/
  }
  v28 = 0; /*0x5967*/
  p_n145 = ::p_n145 + 85LL; /*0x596a*/
LABEL_17:
  if ( (unsigned __int8)sub_7F8(p_n145_1, v17, v18, v19) && (unsigned __int8)sub_804(64) ) /*0x597a*/
    sub_740(64, "[System Inventory] Device Info command size - %d\n", v21); /*0x5990*/
  if ( qword_94B0 ) /*0x599d*/
  {
    if ( (unsigned __int8)sub_7F8(v31, v30, v32, v33) && (unsigned __int8)sub_804(64) ) /*0x59fe*/
      sub_740( /*0x5a18*/
        64,
        "[System Inventory] OnReadyToBoot No Sending BMC Device Info Command by USB IPMI Status - %r\n",
        qword_94B0);
  }
  else
  {
    LOBYTE(v32) = 88; /*0x59ac*/
    LOBYTE(v31) = 6; /*0x59ba*/
    v34 = sub_2640(v31, 0, v32, p_n145, v21, (__int64)&v51, (__int64)&v48, (__int64)&v50); /*0x59ce*/
    if ( (unsigned __int8)sub_7F8(v36, v35, v37, v38) && (unsigned __int8)sub_804(64) ) /*0x59dd*/
      sub_740(64, "[System Inventory] OnReadyToBoot Sending BMC Device Info Command Status - %r\n", v34); /*0x59f0*/
  }
  if ( v28 ) /*0x5a20*/
    sub_1D54(p_n145); /*0x5a26*/
  v43 = sub_5C78(v40, v39, v41, v42); /*0x5a30*/
  if ( (unsigned __int8)sub_7F8(v45, v44, v46, v47) ) /*0x5a33*/
  {
    if ( (unsigned __int8)sub_804(64) ) /*0x5a3f*/
      sub_740(64, "[System Inventory] OnReadyToBoot SaveSmbiosDataToBmc Status - %r\n", v43); /*0x5a55*/
  }
  return (*(__int64 (__fastcall **)(EFI_HANDLE))(qword_96A8 + 112))(ImageHandle); /*0x5a6f*/
}