BgpFwQueryBootGraphicsInformation
INT64 __fastcall BgpFwQueryBootGraphicsInformation(INT64 a1, INT64 a2){
unsigned int v2;
UINT8 *v3;
int v5;
int v7;
UINT8 *v8;
UINT64 v9;
UINT8 *v10;
UINT8 *PoolWithTag;
INT64 v12;
UINT8 *v13;
INT64 v14;
v2 = 0;
v3 = 0i64;
if( (_DWORD)a1 )
{
if( (_DWORD)a1 == 2 )
{
*(_DWORD *)a2 = 8;
*(_DWORD *)a2 = *(_DWORD *)Size + 8;
}
else if( (_DWORD)a1 == 3 )
{
*(_OWORD *)a2 = xmmword_140C133F0;
*(_OWORD *)(a2 + 16) = xmmword_140C13400;
*(_OWORD *)(a2 + 32) = xmmword_140C13410;
*(_OWORD *)(a2 + 48) = xmmword_140C13420;
*(_OWORD *)(a2 + 64) = xmmword_140C13430;
*(_OWORD *)(a2 + 80) = xmmword_140C13440;
*(_OWORD *)(a2 + 96) = xmmword_140C13450;
*(_OWORD *)(a2 + 112) = xmmword_140C13460;
}
else if( qword_140C13358 || qword_140C13360 )
{
v8 = (UINT8 *)qword_140C13360;
v9 = *(unsigned int *)Size;
if( !qword_140C13360 )
{
LODWORD(v10) = BgpFwAllocateMemory(*(unsigned int *)Size);
v3 = v10;
if( !v10 )
return(unsigned int)-1073741801;
v8 = v10;
memmove(v10, (UINT8 *)qword_140C13358, v9);
}
if( (int)v9 + 8 < (unsigned int)v9 )
{
v2 = -1073741675;
}
else
{
BgpFwReleaseLock();
PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(PagedPool, (unsigned int)(v9 + 8), 0x4B494742ui64);
v13 = PoolWithTag;
if( PoolWithTag )
{
*(_DWORD *)PoolWithTag = ((unsigned int)dword_140C13310 >> 23) & 1;
*((_DWORD *)PoolWithTag + 1) = 8;
memmove(PoolWithTag + 8, v8, v9);
BgpFwAcquireLock(v14);
*(_QWORD *)a2 = v13;
}
else
{
BgpFwAcquireLock(v12);
v2 = -1073741801;
}
}
if( v3 )
BgpFwFreeMemory(v3);
}
else
{
*(_QWORD *)a2 = 0i64;
}
}
else
{
*(_OWORD *)a2 = xmmword_140C132F0;
*(_OWORD *)(a2 + 16) = xmmword_140C13300;
*(_DWORD *)(a2 + 20) = 0;
v5 = *(_DWORD *)(a2 + 20);
if( (dword_140C13310 & 2) != 0 )
v5 = 1;
*(_DWORD *)(a2 + 20) = v5;
if( ((*((_BYTE *)BgInternal + 2) - 1) & 0xFD) == 0 )
{
v7 = *(_DWORD *)(a2 + 8);
*(_DWORD *)(a2 + 8) = *(_DWORD *)(a2 + 12);
*(_DWORD *)(a2 + 12) = v7;
}
*(_DWORD *)(a2 + 28) = *((unsigned __int8 *)BgInternal + 2);
}
return v2;
}Referenced by:
BgQueryBootGraphicsInformation