VslpIumPhase0Initialize

NTSTATUS __stdcall VslpIumPhase0Initialize(INT64 a1){
  __int64 v1; 
  __int64 v3; 
  INT64 v4; 
  _KIDTENTRY64 *IdtBase; 
  INT64 v6; 
  INT64 v7; 
  int v8; 
  NTSTATUS v9; 
  __int64 v11; 
  int v12; 
  unsigned int v13; 
  int v14; 
  int v15; 
  INT64 v16[14]; 

  v1 = *(_QWORD *)(a1 + 240);
  v13 = 0;
  v12 = 0;
  if( (*(_DWORD *)(v1 + 132) & 0x200) != 0 )
  {
    if( !HvlQueryVsmConnection(0i64) )
      KeBugCheckEx(0x6Fu, (PVOID)0xFFFFFFFFC0000001i64, 0i64, 0i64, (PVOID)(v3 & v11));
    memset(v16, 0i64, 0x68u);
    LODWORD(v16[1]) = 167772168;
    LODWORD(v4) = MmGetPhysicalAddress((UINT64)&KUSER_SHARED_DATA);
    v16[2] = v4;
    VslpIumPhase0InitializeNtKd(a1, (INT64)v16);
    IdtBase = KeGetPcr()->IdtBase;
    LODWORD(v6) = MmGetPhysicalAddress((UINT64)KeGetPcr()->NtTib.ExceptionList);
    v16[8] = v6;
    LODWORD(v7) = MmGetPhysicalAddress((UINT64)IdtBase);
    v16[10] = v7;
    MmSetPageProtection(IdtBase, 0x1000ui64, 2ui64);
    ((void(__fastcall *)(__int64, __int64, INT64 *, int *))off_140C00A68[0])(45i64, 8i64, &v16[9], &v12);
    KUSER_SHARED_DATA.EnclaveFeatureMask[0] |= 0x100u;
    if( KiKvaShadowMode )
      HIDWORD(v16[1]) |= 1u;
    KeQueryKvaShadowInformation(&v13, 4u, &v12);
    v8 = HIDWORD(v16[1]);
    if( ((v13 >> 4) & 1) != 0 )
    {
      v8 = HIDWORD(v16[1]) | 2;
      HIDWORD(v16[1]) |= 2u;
    }
    if( BBTBuffer )
    {
      v8 |= 4u;
      HIDWORD(v16[1]) = v8;
    }
    if( ((v13 >> 4) & 1) != 0 && KiImplementedPhysicalBits > 0 )
    {
      v8 |= 8u;
      HIDWORD(v16[1]) = v8;
    }
    if( KiDisableTsx )
      HIDWORD(v16[1]) = v8 | 0x10;
    v15 = VslpNestedPageProtectionFlags & 2;
    v16[6] = (INT64)KeFeatureBits;
    v16[7] = (INT64)KeFeatureBits2;
    v9 = VslpEnterIumSecureMode(2u, 208, 0i64, (INT64)v16);
    if( v9 < 0 )
      KeBugCheckEx(0x6Fu, (PVOID)v9, 0i64, (PVOID)1, 0i64);
    if( LODWORD(v16[2]) != 167772168 )
      KeBugCheckEx(0x6Fu, (PVOID)0xFFFFFFFFC0000059i64, 0i64, (PVOID)2, 0i64);
    v14 = 0;
    *(&stru_140C452E0 + 954) = (char *)&stru_140C452E0 + 7624;
    *(&stru_140C452E0 + 953) = (char *)&stru_140C452E0 + 7624;
    *(&stru_140C452E0 + 1905) = HIDWORD(v16[2]);
    *(&stru_140C452E0 + 1910) = HIDWORD(v16[2]);
    *(&stru_140C452E0 + 7616) = 5;
    *(&stru_140C452E0 + 7618) = 8;
    VslVsmEnabled = 1;
    ((void(__fastcall *)(__int64, __int64, int *))off_140C00A70[0])(16i64, 4i64, &v14);
    LODWORD(v1) = ((__int64(__fastcall *)(__int64, __int64, int *))off_140C00A70[0])(18i64, 4i64, &v15);
  }
  return v1;
}

Referenced by:

HvlPhase1Initialize