KseDriverLoadImage

NTSTATUS __stdcall KseDriverLoadImage(_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
  int v2; 
  int ShimsForDriver; 
  int v4; 
  int v5; 
  bool v6; 
  _UNICODE_STRING TargetString; 
  _UNICODE_STRING DriverPath; 
  UINT64 ShimCount; 
  VOID *Shims; 

  LODWORD(ShimCount) = 0;
  Shims = 0i64;
  *(_QWORD *)&TargetString.Length = 0i64;
  TargetString.Buffer = 0i64;
  *(_QWORD *)&DriverPath.Length = 0i64;
  DriverPath.Buffer = 0i64;
  if( !DataTableEntry || MmIsSessionAddress(DataTableEntry->DllBase) == 1 || dword_140C50324 != 2 || (Engine & 1) != 0 )
    goto LABEL_20;
  KsepStringDuplicateUnicode(&TargetString, &DataTableEntry->BaseDllName);
  ShimsForDriver = v2;
  if( v2 >= 0 )
  {
    KsepStringDuplicateUnicode(&DriverPath, &DataTableEntry->FullDllName);
    ShimsForDriver = v4;
    if( v4 >= 0 )
    {
      ShimsForDriver = KsepGetShimsForDriver(
                         &TargetString,
                         &DriverPath,
                         DataTableEntry->DllBase,
                         DataTableEntry->SizeOfImage,
                         &Shims,
                         &ShimCount);
      if( ShimsForDriver >= 0 )
      {
        KsepApplyShimsToDriver(DataTableEntry, &TargetString, (_KSE_SHIM_INFO *)Shims, (unsigned int)ShimCount);
        ShimsForDriver = v5;
        if( v5 >= 0 )
          KsepEvntLogShimsApplied(&TargetString, (_KSE_SHIM_INFO *)Shims, (unsigned int)ShimCount);
      }
    }
  }
  v6 = ShimsForDriver < 0;
  if( !ShimsForDriver )
  {
    dword_140C50328 |= 0x800u;
    v6 = 0;
    qword_140C50378 = (__int64)DataTableEntry->DllBase;
  }
  if( v6 )
  {
    if( ShimsForDriver == -1073740948 )
    {
      KsepHistoryMessages[((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryMessagesIndex, 1u) + 1) & 0x3F] = 458943i64;
      if( (KsepDebugFlag & 1) != 0 )
        KsepDebugPrint(4i64, "KSE: driver blocked from loading [%ws].\n", TargetString.Buffer);
      KsepLogInfo(4, "KSE: driver blocked from loading [%ws].\n", TargetString.Buffer);
      goto LABEL_21;
    }
LABEL_20:
    ShimsForDriver = 0;
    goto LABEL_21;
  }
  KsepHistoryMessages[((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryMessagesIndex, 1u) + 1) & 0x3F] = 458952i64;
  if( (KsepDebugFlag & 1) != 0 )
    KsepDebugPrint(4i64, "KSE: Applied %d shim(s) to [%ws].\n", (unsigned int)ShimCount, TargetString.Buffer);
  KsepLogInfo(4, "KSE: Applied %d shim(s) to [%ws].\n", (unsigned int)ShimCount, TargetString.Buffer);
LABEL_21:
  KsepStringFree(&TargetString);
  KsepStringFree(&DriverPath);
  return ShimsForDriver;
}

Referenced by:

IopInitializeBuiltinDriver
MiFinalizeDriverImage