Newer
Older
AMI-Aptio-BIOS-Reversed / SystemInventory / SystemInventory_sub_5C78.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Init
unsigned __int64 __fastcall sub_5C78(__int64 a1, __int64 a2, __int64 a3, __int64 a4)
{
  __int64 v4; // rdx
  __int64 v5; // rcx
  __int64 v6; // rbx
  __int64 v7; // r8
  __int64 v8; // r9
  __int64 v10; // rbx
  __int64 v11; // r14
  __int64 n24; // rdi
  __int64 v13; // rsi
  int v14; // r8d
  char *v15; // rcx
  __int64 v16; // rdx
  __int64 v17; // rcx
  __int64 v18; // r8
  __int64 v19; // r9
  __int64 v20; // [rsp+40h] [rbp-18h] BYREF
  __int64 v21; // [rsp+48h] [rbp-10h] BYREF
  unsigned __int8 v22; // [rsp+90h] [rbp+38h] BYREF
  char v23; // [rsp+98h] [rbp+40h] BYREF
  int v24; // [rsp+A0h] [rbp+48h] BYREF
  _BYTE *p_n145; // [rsp+A8h] [rbp+50h]

  v21 = 0; /*0x5c88*/
  v20 = 0; /*0x5c8d*/
  p_n145 = 0; /*0x5c92*/
  v24 = 0; /*0x5c97*/
  if ( (unsigned __int8)sub_7F8(a1, a2, a3, a4) && (unsigned __int8)sub_804(64) )
    sub_740(64, "SaveSmbiosDataToBmc: Enter \n");
  v6 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_96A8 + 320))(&unk_9460, 0, &qword_9690); /*0x5ce2*/
  if ( v6 < 0 ) /*0x5ce8*/
  {
    if ( (unsigned __int8)sub_7F8(v5, v4, v7, v8) ) /*0x5cea*/
    {
      if ( (unsigned __int8)sub_804(64) ) /*0x5cf6*/
        sub_740(64, "Locating IPMI Dxe Protocol Status - %r\n", v6); /*0x5d0c*/
    }
    return v6; /*0x5d14*/
  }
  if ( sub_1F50(&unk_94A0, &v20) >= 0 )
  {
    v10 = v20; /*0x5d2e*/
    if ( v20 )
    {
      v11 = *(_QWORD *)(v20 + 16); /*0x5d37*/
      n24 = 24; /*0x5d3b*/
      v13 = *(unsigned int *)(v20 + 12); /*0x5d40*/
LABEL_15:
      p_n145 = (_BYTE *)sub_1D2C(v13 + n24 + 1); /*0x5d78*/
      *p_n145 = 1; /*0x5d8e*/
      (*(void (__fastcall **)(_BYTE *, __int64, __int64))(qword_96A8 + 352))(p_n145 + 1, v10, n24); /*0x5d9f*/
      (*(void (__fastcall **)(_BYTE *, __int64, __int64))(qword_96A8 + 352))(&p_n145[n24 + 1], v11, v13); /*0x5dbc*/
      v6 = (*(__int64 (__fastcall **)(const __int16 *, void *, __int64))(qword_96E0 + 88))(L"RDBG_SMBIOS", &unk_9480, 2); /*0x5df5*/
      if ( !qword_94B0 )
      {
        LOBYTE(v14) = 71; /*0x5e19*/
        v15 = &v23; /*0x5e1c*/
        LOBYTE(v15) = 46; /*0x5e27*/
        v6 = sub_2640( /*0x5e32*/
               (_DWORD)v15,
               0,
               v14,
               (_DWORD)p_n145,
               (int)n24 + (int)v13 + 1,
               (__int64)&v23,
               (__int64)&v24,
               (__int64)&v22);
        if ( (unsigned __int8)sub_7F8(v17, v16, v18, v19) )
        {
          if ( (unsigned __int8)sub_804(64) )
            sub_740(64, "SaveSmbiosDataToBmc: SendOemIpmiCommand Status = %r , CompletionCode = %x \n", v6, v22);
        }
      }
      return v6; /*0x5e69*/
    }
  }
  if ( sub_1F50(&unk_9490, &v21) >= 0 ) /*0x5d58*/
  {
    v10 = v21; /*0x5d5e*/
    if ( v21 ) /*0x5d65*/
    {
      v11 = *(unsigned int *)(v21 + 24); /*0x5d6b*/
      n24 = 31; /*0x5d6f*/
      v13 = *(unsigned __int16 *)(v21 + 22); /*0x5d74*/
      goto LABEL_15; /*0x5d74*/
    }
  }
  return 0x800000000000000EuLL; /*0x5e78*/
}