HvlPhase0Initialize

INT64 __fastcall HvlPhase0Initialize(
        INT64 a1,
        INT64 a2,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8,
        INT64 a9,
        INT64 a10,
        INT64 a11,
        INT64 a12,
        INT64 a13,
        INT64 a14,
        INT64 a15,
        INT64 a16,
        INT64 a17,
        INT64 a18,
        INT64 a19,
        INT64 a20,
        INT64 a21,
        INT64 a22,
        INT64 a23,
        INT64 a24,
        __m128i *a25,
        INT64 a26,
        INT64 a27,
        UINT64 ProcessorMaska,
        INT64 a29,
        CHAR a30,
        INT64 a31,
        INT64 a32,
        INT64 a33,
        INT64 a34,
        INT64 a35,
        INT64 a36,
        INT64 a37,
        INT64 a38,
        INT64 a39,
        INT16 a40){
  int v41; 
  INT64 result; 
  unsigned int v43; 
  LODWORD(HvlpFlags) = ((unsigned __int8)HviIsAnyHypervisorPresent() != 0 ? 0x1000 : 0) | HvlpFlags & 0xFFFFEFFF;
  HvlQueryConnection(0i64);
  if( v41 >= 0 || (LODWORD(result) = HvlpTryConfigureInterface((_LOADER_PARAMETER_BLOCK *)a1), (int)result >= 0) )
  {
    LODWORD(result) = HvlpSetupBootProcessorEarlyHypercallPages((_LOADER_PARAMETER_BLOCK *)a1);
    if( (int)result >= 0 )
    {
      LOBYTE(HvlHypervisorConnected) = 1;
      HvlpDetermineEnlightenments();
      result = HalSystemVectorDispatchEntry();
      if( (int)result >= 0 )
      {
        if( (HvlpFlags & 2) != 0 && strstr(*((CHAR **)KeLoaderBlock_0 + 27), "HYPERVISORDBG") )
          HvlpRootFlags |= 8u;
        if( (HvlpFlags & 2) != 0 && (*(_DWORD *)(*((_QWORD *)KeLoaderBlock_0 + 30) + 3460i64) & 0x2000) != 0 )
          HvlpRootFlags |= 0x800u;
        result = HvlpPhase0Enlightenments();
        if( (int)result >= 0 )
        {
          LODWORD(result) = HvlpInitializeBootProcessor((_LOADER_PARAMETER_BLOCK *)a1);
          v43 = result;
          if( (int)result >= 0 )
          {
            HviGetHypervisorVersion(&HvlpHypervisorVersion);
            return v43;
          }
        }
      }
    }
  }
  else if( (_DWORD)result == -1070264320 )
  {
    return 0i64;
  }
  return result;
}

Referenced by:

KiInitializeKernel