HvpViewMapCreateView

NTSTATUS __stdcall HvpViewMapCreateView(INT64 a1, INT64 a2, INT64 a3, CHAR **a4){
  unsigned __int64 v6; 
  VOID **Memory; 
  VOID **v10; 
  UINT64 v11; 
  UINT64 v12; 
  int v13; 
  VOID *v15; 
  UINT64 NewProtectWin32; 
  UINT64 NewProtectWin32a; 
  int v18; 
  __int64 v19; 

  LODWORD(v19) = 0;
  v6 = (unsigned __int64)(unsigned int)(a3 - a2) >> 12;
  Memory = CmSiAllocateMemory(v6 + 72, 0x35384D43ui64);
  v10 = Memory;
  if( !Memory )
    return -1073741670;
  memset(Memory, 0i64, v6 + 72);
  v10[4] = (VOID *)a3;
  v10[3] = (VOID *)a2;
  v11 = a3 - a2;
  LODWORD(NewProtectWin32) = ((*(_DWORD *)(a1 + 32) & 1) == 0) << 13;
  v13 = CmSiMapViewOfSection(*(VOID **)a1, *(VOID ***)(a1 + 24), (_LARGE_INTEGER)a2, v11, NewProtectWin32, v18, v10 + 7);
  if( v13 >= 0 )
  {
    LODWORD(NewProtectWin32a) = 1;
    v13 = CmSiProtectViewOfSection(v12, *(VOID ***)(a1 + 24), v10[7], v11, NewProtectWin32a, (__int64)&v19);
    if( v13 >= 0 )
    {
      *a4 = (CHAR *)v10;
      v10 = 0i64;
      v13 = 0;
    }
  }
  if( v10 )
  {
    v15 = v10[7];
    if( v15 )
      CmSiUnmapViewOfSection(v12, *(VOID ***)(a1 + 24), v15);
    CmSiFreeMemory((PPRIVILEGE_SET)v10);
  }
  return v13;
}

Referenced by:

HvpViewMapCreateViewsForRegion
HvpViewMapPromoteRangeToMapping