KseInitialize

NTSTATUS __stdcall KseInitialize(_LOADER_PARAMETER_BLOCK *LoaderBlock, UINT64 Phase){
  int matched; 
  unsigned int v3; 
  signed __int32 v5; 
  _LOADER_PARAMETER_EXTENSION *v7; 
  _LOADER_PARAMETER_EXTENSION *Extension; 
  __int64 v9; 
  char v10; 
  __int64 v11; 
  PVOID DbHandleOut; 

  matched = 0;
  v3 = Phase;
  if( (_DWORD)Phase )
  {
    if( (_DWORD)Phase == 1 )
    {
      DbHandleOut = 0i64;
      EtwRegister((_LPCGUID)&KernelShimEngineProvider, 0i64, 0i64, (PREGHANDLE)&stru_140CF2E80 + 627);
      matched = KseShimDatabaseOpen(&DbHandleOut);
      if( matched >= 0 && DbHandleOut )
      {
        KseShimDatabaseClose(DbHandleOut);
      }
      else
      {
        dword_140C50328 |= 0x80u;
        matched = -1073741637;
      }
      if( matched >= 0 )
      {
        KseVersionLieInitialize();
        KseSkipDriverUnloadInitialize();
        KseZeroPoolInitialize();
        KseClearPCIDBitsInitialize();
        KseKasperskyInitialize();
        KseMemcpyInitialize();
        KseKernelPadSectionsOverrideInitialize();
        KseUserCetInitialize();
      }
    }
LABEL_29:
    v9 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryMessagesIndex, 1u) + 1) & 0x3F;
    HIDWORD(KsepHistoryMessages[v9]) = 0;
    LODWORD(KsepHistoryMessages[v9]) = 327940;
    if( (KsepDebugFlag & 1) != 0 )
      KsepDebugPrint(1i64, "KSE: Initialized phase 0x%x\n", v3);
    KsepLogInfo(1, "KSE: Initialized phase 0x%x\n", v3);
    if( InitIsWinPEMode )
      Engine |= 1u;
    if( matched >= 0 )
      return matched;
    goto LABEL_34;
  }
  v5 = _InterlockedCompareExchange(&dword_140C50324, 1, 0);
  if( v5 == 2 )
    return 0;
  if( v5 == 1 )
    return 259;
  if( KseShimDatabaseBootInitialize(LoaderBlock->Extension->DrvDBImage, LoaderBlock->Extension->DrvDBSize) < 0 )
    return -1073741823;
  if( !InitSafeBootMode && (v7 = LoaderBlock->Extension, v7->DrvDBImage) && v7->DrvDBSize )
  {
    matched = KsepEngineInitialize(&Engine);
    if( matched >= 0 )
    {
      matched = KsepMatchInitialize((INT64)LoaderBlock);
      if( matched >= 0 )
      {
        dword_140C50324 = 2;
        KseDriverScopeInitialize();
        goto LABEL_29;
      }
    }
  }
  else
  {
    if( ViVerifierEnabled )
      dword_140C50328 |= 0x40u;
    if( InitSafeBootMode )
      dword_140C50328 |= 0x100u;
    Extension = LoaderBlock->Extension;
    if( !Extension->DrvDBImage || !Extension->DrvDBSize )
      dword_140C50328 |= 0x80u;
    matched = -1073741637;
  }
LABEL_34:
  dword_140C50324 = 0;
  KsepEngineUninitialize(&Engine);
  v10 = KsepDebugFlag;
  v11 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
  if( matched == -1073741637 )
  {
    dword_140C2A864[2 * v11] = -1073741637;
    KsepHistoryErrors[2 * v11] = 327968;
    if( (v10 & 2) != 0 )
      KsepDebugPrint(
        1i64,
        "KSE: Engine not initialized(disabled explicitly, safe boot on, verifier on, WinPE mode or loader issue)\n");
    KsepLogError(
      1,
      "KSE: Engine not initialized(disabled explicitly, safe boot on, verifier on, WinPE mode or loader issue)\n");
  }
  else
  {
    dword_140C2A864[2 * v11] = matched;
    KsepHistoryErrors[2 * v11] = 327972;
    if( (v10 & 2) != 0 )
      KsepDebugPrint(1i64, "KSE: Initialization failed: 0x%x\n", (unsigned int)matched);
    KsepLogError(1, "KSE: Initialization failed: 0x%x\n", (unsigned int)matched);
  }
  return matched;
}

Referenced by:

IoInitSystemPreDrivers