char __fastcall SendBmcCommand(__int64 a1, __int64 a2, __int64 a3, __int64 a4)
{
__int64 v4; // rax
__int64 v6; // rax
char v7; // cl
char n3; // [rsp+50h] [rbp+8h] BYREF
char v9; // [rsp+58h] [rbp+10h] BYREF
char n2; // [rsp+60h] [rbp+18h] BYREF
v4 = qword_7920; /*0x7d0*/
if ( !qword_7920 ) /*0x7da*/
{
if ( (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920) < 0 ) /*0x7fc*/
{
qword_7920 = 0; /*0x7fe*/
return 85; /*0x80b*/
}
v4 = qword_7920; /*0x80d*/
}
n2 = 2; /*0x819*/
LOBYTE(a4) = 69; /*0x823*/
n3 = 3; /*0x82b*/
LOBYTE(a2) = 46; /*0x847*/
v6 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, char *, char, char *, char *))(v4 + 16))( /*0x84c*/
v4,
a2,
0,
a4,
&n2,
1,
&v9,
&n3);
v7 = v9; /*0x84f*/
if ( v6 < 0 ) /*0x85c*/
return 85; /*0x85c*/
return v7; /*0x861*/
}
__int64 __fastcall SendBmcByteCommand(char a1, _BYTE *a2, __int64 a3, __int64 a4)
{
__int64 v4; // rax
_BYTE *v5; // rbx
__int64 result; // rax
_BYTE v8[24]; // [rsp+40h] [rbp-18h] BYREF
char n3; // [rsp+70h] [rbp+18h] BYREF
char v10; // [rsp+78h] [rbp+20h] BYREF
v4 = qword_7920; /*0x872*/
v5 = a2; /*0x879*/
if ( !qword_7920 ) /*0x882*/
{
result = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920); /*0x89b*/
if ( result < 0 ) /*0x8a4*/
{
qword_7920 = 0; /*0x8a6*/
return result; /*0x8ae*/
}
v4 = qword_7920; /*0x8b0*/
}
v8[0] = a1; /*0x8bc*/
LOBYTE(a4) = 44; /*0x8c6*/
n3 = 3; /*0x8ce*/
LOBYTE(a2) = 46; /*0x8ea*/
result = (*(__int64 (__fastcall **)(__int64, _BYTE *, _QWORD, __int64, _BYTE *, char, char *, char *))(v4 + 16))( /*0x8ef*/
v4,
a2,
0,
a4,
v8,
1,
&v10,
&n3);
if ( result >= 0 ) /*0x8f5*/
{
*v5 = v10; /*0x8fb*/
return 0; /*0x8fd*/
}
return result; /*0x904*/
}
__int64 __fastcall SendBmcTwoByteCommand(char a1, __int64 a2, __int64 a3, __int64 a4)
{
__int64 v4; // rax
char v5; // bl
__int64 result; // rax
_BYTE v8[24]; // [rsp+40h] [rbp-18h] BYREF
char n3; // [rsp+70h] [rbp+18h] BYREF
char v10; // [rsp+78h] [rbp+20h] BYREF
v4 = qword_7920; /*0x916*/
v5 = a2; /*0x91d*/
if ( !qword_7920 ) /*0x925*/
{
result = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920); /*0x93e*/
if ( result < 0 ) /*0x947*/
{
qword_7920 = 0; /*0x949*/
return result; /*0x951*/
}
v4 = qword_7920; /*0x953*/
}
v8[0] = a1; /*0x95f*/
LOBYTE(a4) = 43; /*0x969*/
v8[1] = v5; /*0x971*/
LOBYTE(a2) = 46; /*0x98c*/
n3 = 3; /*0x991*/
return (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, _BYTE *, char, char *, char *))(v4 + 16))( /*0x99e*/
v4,
a2,
0,
a4,
v8,
2,
&v10,
&n3);
}
__int64 __fastcall SendBmcMultiByteCommand(char *a1, __int64 a2, __int64 a3, __int64 a4)
{
__int64 v4; // r10
__int64 result; // rax
unsigned __int8 v7; // di
int v8; // [rsp+28h] [rbp-20h]
char v9; // [rsp+58h] [rbp+10h] BYREF
char v10; // [rsp+60h] [rbp+18h] BYREF
char v11; // [rsp+68h] [rbp+20h] BYREF
unsigned __int8 v12; // [rsp+69h] [rbp+21h]
char v13; // [rsp+6Ah] [rbp+22h]
char v14; // [rsp+6Bh] [rbp+23h]
v4 = qword_7920; /*0x9ae*/
result = 0; /*0x9b5*/
if ( !qword_7920 ) /*0x9bd*/
{
result = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920); /*0x9d6*/
if ( result < 0 ) /*0x9df*/
{
qword_7920 = 0; /*0x9e1*/
return result; /*0x9e1*/
}
v4 = qword_7920; /*0x9f4*/
}
v7 = 0; /*0x9fb*/
if ( a1[1] ) /*0x9fe*/
{
while ( 1 ) /*0xa06*/
{
LOBYTE(a4) = 18; /*0xa06*/
v11 = *a1; /*0xa09*/
LOBYTE(a2) = 56; /*0xa14*/
v12 = v7; /*0xa16*/
v14 = 0; /*0xa1b*/
v9 = 1; /*0xa20*/
v13 = a1[v7 + 2]; /*0xa42*/
LOBYTE(v8) = 4; /*0xa49*/
result = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, char *, int, char *, char *))(v4 + 16))( /*0xa53*/
v4,
a2,
0,
a4,
&v11,
v8,
&v10,
&v9);
if ( ++v7 >= (unsigned __int8)a1[1] ) /*0xa5e*/
break; /*0xa5e*/
v4 = qword_7920; /*0xa60*/
}
}
return result; /*0x9ee*/
}