HvlSetHpetConfig
NTSTATUS __fastcall HvlSetHpetConfig(__int64 a1, int a2, __int64 a3, char a4, _OWORD *a5){
int v9;
LONGLONG *v10;
INT16 v11;
INT16 v12;
NTSTATUS v13;
LONGLONG *v14;
LONGLONG *v15;
__int16 v16;
_BYTE v17[40];
PHYSICAL_ADDRESS v18[4];
INT64 result[2];
char v20[2064];
memset(&v17[8], 0, 32);
memset(v18, 0, sizeof(v18));
memset((INT64)result, 0i64);
v9 = 0;
while( 1 )
{
v10 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v17[8], 1, (__int64)result, 40i64);
*(_DWORD *)v10 = 6;
v10[1] = a1;
*((_DWORD *)v10 + 4) = a2;
v10[3] = a3;
*((_BYTE *)v10 + 32) = a4;
HvcallInitiateHypercall();
v12 = v11;
HvlpReleaseHypercallPage((unsigned int *)&v17[8]);
if( !HvlpHvStatusIsInsufficientMemory(v12) )
break;
v13 = HvlpHandleInsufficientMemory();
if( v13 < 0 )
goto LABEL_8;
}
if( v12 )
return -1073741823;
v13 = 0;
LABEL_8:
if( v13 >= 0 )
{
v14 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)&v17[8], 1, (__int64)result, 8i64);
v15 = HvlpAcquireHypercallPage(v18, 2, (__int64)v20, 1032i64);
*(_DWORD *)v14 = 7;
HvcallInitiateHypercall();
if( v16 )
v9 = -1073741823;
else
*a5 = *(_OWORD *)v15;
HvlpReleaseHypercallPage((unsigned int *)v18);
HvlpReleaseHypercallPage((unsigned int *)&v17[8]);
return v9;
}
return v13;
}Referenced by:
No references.