KseDriverLoadImage

__int64 __fastcall KseDriverLoadImage(__int64 a1){
  int ShimsForDriver; 
  bool v3; 
  _UNICODE_STRING TargetString; 
  _UNICODE_STRING String; 
  INT64 ShimCount; 
  INT64 Shims; 
  LODWORD(ShimCount) = 0;
  Shims = 0i64;
  *(_QWORD *)&TargetString.Length = 0i64;
  TargetString.Buffer = 0i64;
  *(_QWORD *)&String.Length = 0i64;
  String.Buffer = 0i64;
  if( !a1
    || (unsigned int)MmIsSessionAddress(*(PVOID *)(a1 + 48)) == 1
    || dword_140C50324 != 2
    || (*(_BYTE *)KseEngine & 1) != 0 )
  {
    goto LABEL_20;
  }
  ShimsForDriver = KsepStringDuplicateUnicode(&TargetString, (_UNICODE_STRING *)(a1 + 88));
  if( ShimsForDriver >= 0 )
  {
    ShimsForDriver = KsepStringDuplicateUnicode(&String, (_UNICODE_STRING *)(a1 + 72));
    if( ShimsForDriver >= 0 )
    {
      ShimsForDriver = KsepGetShimsForDriver(
                         (INT64)&TargetString,
                         (INT64)&String,
                         *(VOID **)(a1 + 48),
                         *(unsigned int *)(a1 + 64),
                         (INT64)&Shims,
                         (INT64)&ShimCount);
      if( ShimsForDriver >= 0 )
      {
        ShimsForDriver = KsepApplyShimsToDriver(a1, (__int64)&TargetString, Shims, ShimCount);
        if( ShimsForDriver >= 0 )
          KsepEvntLogShimsApplied((__int64)&TargetString, Shims, (EVENT_DESCRIPTOR *)(unsigned int)ShimCount);
      }
    }
  }
  v3 = ShimsForDriver < 0;
  if( !ShimsForDriver )
  {
    dword_140C50328 |= 0x800u;
    v3 = 0;
    qword_140C50378 = *(_QWORD *)(a1 + 48);
  }
  if( v3 )
  {
    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(&String);
  return(unsigned int)ShimsForDriver;
}

Referenced by:

IopInitializeBuiltinDriver
MiFinalizeDriverImage