__int64 __fastcall sub_2550(char a1, __int64 a2, __int64 a3, __int64 a4, int a5, __int64 a6, _DWORD *a7, _BYTE *a8)
{
__int64 v8; // r10
__int64 v9; // rdi
char v10; // si
char v11; // bp
__int64 result; // rax
v8 = qword_96F8; /*0x2569*/
v9 = a4; /*0x2570*/
v10 = a3; /*0x2573*/
v11 = a2; /*0x2576*/
if ( !qword_96F8 ) /*0x257f*/
{
(*(void (__fastcall **)(void *, _QWORD, __int64 *))(qword_96A8 + 320))(&unk_93D0, 0, &qword_96F8); /*0x2598*/
v8 = qword_96F8; /*0x259e*/
if ( !qword_96F8 ) /*0x25a8*/
return 0x8000000000000018uLL; /*0x25aa*/
}
LOBYTE(a4) = v10; /*0x25bb*/
LOBYTE(a3) = v11; /*0x25c6*/
LOBYTE(a2) = a1; /*0x25ce*/
result = (*(__int64 (__fastcall **)(__int64, __int64, __int64, __int64, __int64, int, __int64, _DWORD *))(v8 + 16))( /*0x25e6*/
v8,
a2,
a3,
a4,
v9,
a5,
a6,
a7);
if ( a8 && (!result || result == 0x8000000000000007uLL && *a7 == 1) ) /*0x2611*/
*a8 = *(_BYTE *)qword_96F8; /*0x261c*/
return result; /*0x2636*/
}