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*/
}