HvpViewMapCreateView

INT64 __fastcall HvpViewMapCreateView(INT64 a1, INT64 a2, INT64 a3, CHAR **a4){
  INT64 Memory; 
  INT64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  NTSTATUS v12; 
  VOID *v14; 
  UINT64 NewAccessProtection; 
  UINT64 NewAccessProtectiona; 
  INT64 a6; 
  INT64 v18; 
  LODWORD(v18) = 0;
  Memory = CmSiAllocateMemory(((unsigned __int64)(unsigned int)(a3 - a2) >> 12) + 72, 0x35384D43u);
  v9 = Memory;
  if( Memory )
  {
    memset(Memory, 0i64);
    *(_QWORD *)(v9 + 32) = a3;
    *(_QWORD *)(v9 + 24) = a2;
    v10 = a3 - a2;
    LODWORD(NewAccessProtection) = ((*(_DWORD *)(a1 + 32) & 1) == 0) << 13;
    v12 = CmSiMapViewOfSection(
            *(VOID **)a1,
            *(PVOID **)(a1 + 24),
            (LARGE_INTEGER)a2,
            v10,
            NewAccessProtection,
            a6,
            (PVOID *)(v9 + 56));
    if( v12 >= 0 )
    {
      LODWORD(NewAccessProtectiona) = 1;
      v12 = CmSiProtectViewOfSection(
              v11,
              *(VOID ***)(a1 + 24),
              *(VOID **)(v9 + 56),
              v10,
              NewAccessProtectiona,
              (INT64)&v18);
      if( v12 >= 0 )
      {
        *a4 = (CHAR *)v9;
        v9 = 0i64;
        v12 = 0;
      }
    }
    if( v9 )
    {
      v14 = *(VOID **)(v9 + 56);
      if( v14 )
        CmSiUnmapViewOfSection(v11, *(PVOID **)(a1 + 24), v14);
      CmSiFreeMemory((PPRIVILEGE_SET)v9);
    }
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return(unsigned int)v12;
}

Referenced by:

HvpViewMapCreateViewsForRegion
HvpViewMapPromoteRangeToMapping