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.