MiMapImageForEnclaveUse

NTSTATUS __stdcall MiMapImageForEnclaveUse(VOID *a1, INT64 a2, _KPROCESSOR_MODE a3, INT64 *a4, INT64 *a5){
  NTSTATUS result; 
  _ADAPTER_OBJECT *v8; 
  _CONTROL_AREA *v9; 
  _CONTROL_AREA *v10; 
  int v11; 
  _FILE_OBJECT *v12; 
  PVOID *Object; 
  UINT64 v14; 
  UINT64 Win32Protect; 
  PVOID SectionToMap; 
  _LARGE_INTEGER SectionOffset; 
  _KAPC_STATE ApcState; 

  SectionToMap = 0i64;
  memset(&ApcState, 0, sizeof(ApcState));
  result = ObReferenceObjectByHandle(a1, 4ui64, MmSectionObjectType, a3, &SectionToMap, 0i64);
  if( result >= 0 )
  {
    v8 = (_ADAPTER_OBJECT *)SectionToMap;
    v9 = MiSectionControlArea((_SECTION *)SectionToMap);
    v10 = v9;
    if( ((__int64)v8->AdapterObject.ContiguousTranslationEnd.Buffer & 0x20) != 0 )
    {
      if( (v9->u2.WritableUserReferences & 0xC0000) != 0 )
        goto LABEL_9;
      if( (v9->u2.SeImageStub->SecurityContext.Value & 0xFFFFFFFFFFFFFFF8ui64) <= 8 )
      {
        LODWORD(Object) = 0x40000000;
        v12 = MiReferenceControlAreaFile(v9);
        v11 = MiValidateSectionCreate(v12, v10, 0xFFFFFFFFui64, (VOID *)a2, (UINT64)Object, 4u);
        MiDereferenceControlAreaFile(v10, v12);
        if( v11 < 0 )
          goto LABEL_10;
        if( (v10->u2.WritableUserReferences & 0xC0000) != 0 )
        {
LABEL_9:
          KiStackAttachProcess(PsSecureSystemProcess, 0i64, &ApcState);
          SectionOffset.QuadPart = 0i64;
          SectionToMap = 0i64;
          LODWORD(Win32Protect) = 2;
          LODWORD(v14) = 0;
          v11 = MmMapViewOfSection(
                  v8,
                  (_EPROCESS *)PsSecureSystemProcess,
                  (VOID **)a4,
                  0i64,
                  0i64,
                  &SectionOffset,
                  (UINT64 *)&SectionToMap,
                  ViewShare,
                  v14,
                  Win32Protect);
          KiUnstackDetachProcess(&ApcState, 0i64);
          *a5 = (INT64)v10;
          goto LABEL_10;
        }
      }
      v11 = -1073740760;
    }
    else
    {
      v11 = -1073741751;
    }
LABEL_10:
    HalPutDmaAdapter(v8);
    return v11;
  }
  return result;
}

Referenced by:

MiInitializeVsmEnclave
MiLoadSectionIntoVsmEnclave