MiLogStrongCodeDriverLoadFailure

VOID __stdcall MiLogStrongCodeDriverLoadFailure(INT8 *FailureReason, _KLDR_DATA_TABLE_ENTRY *DataTableEntry){
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  _QWORD *Pool; 
  __int64 v8; 
  VOID *v9; 
  __int64 *v10; 
  int v11; 
  int v12; 
  unsigned int CheckSum; 
  unsigned int TimeDateStamp; 
  __int64 v15; 
  __int64 v16[4]; 
  INT64 v17[3]; 
  int v18; 
  int v19; 
  wchar_t *Buffer; 
  int v21[2]; 
  unsigned int *p_CheckSum; 
  int v23; 
  int v24; 
  unsigned int *p_TimeDateStamp; 
  int v26; 
  int v27; 
  __int64 *v28; 
  int v29; 
  int v30; 

  if( *(&stru_140C4DB30 + 542) )
  {
    if( **(&stru_140C4DB30 + 542) > 5u )
    {
      if( tlgKeywordOn(*(&stru_140C4DB30 + 542), 0x400000000000i64) )
      {
        tlgCreate1Sz_char((INT64)v17, FailureReason);
        v19 = 0;
        v21[1] = 0;
        v24 = 0;
        v27 = 0;
        v30 = 0;
        v17[2] = (INT64)v21;
        Buffer = DataTableEntry->BaseDllName.Buffer;
        v21[0] = DataTableEntry->BaseDllName.Length;
        CheckSum = DataTableEntry->CheckSum;
        p_CheckSum = &CheckSum;
        TimeDateStamp = DataTableEntry->TimeDateStamp;
        p_TimeDateStamp = &TimeDateStamp;
        v15 = 2164260864i64;
        v23 = 4;
        v26 = 4;
        v28 = &v15;
        v29 = 8;
        v18 = 2;
        tlgWriteEx_EtwWriteEx(v5, (unsigned __int8 *)&word_140024CF6, v4, 1u, v11, v12, 8u, (__int64)v16);
      }
    }
  }
  else
  {
    v6 = -1i64;
    do
      ++v6;
    while( FailureReason[v6] );
    Pool = MiAllocatePool(256i64, v6 + DataTableEntry->BaseDllName.Length + 49i64, 0x46446D4Dui64);
    v8 = (__int64)Pool;
    if( Pool )
    {
      Pool[2] = Pool + 6;
      memmove(Pool + 6, FailureReason, v6 + 1);
      v9 = (VOID *)(v8 + v6 + 49);
      *(_QWORD *)(v8 + 32) = v9;
      memmove(v9, DataTableEntry->BaseDllName.Buffer, DataTableEntry->BaseDllName.Length);
      *(_WORD *)(v8 + 24) = DataTableEntry->BaseDllName.Length;
      *(_WORD *)(v8 + 26) = DataTableEntry->BaseDllName.Length;
      *(_DWORD *)(v8 + 40) = DataTableEntry->CheckSum;
      *(_DWORD *)(v8 + 44) = DataTableEntry->TimeDateStamp;
      v10 = (__int64 *)qword_140C4CA50;
      if( *(PVOID **)qword_140C4CA50 != &qword_140C4CA48 )
        __fastfail(3u);
      *(_QWORD *)v8 = &qword_140C4CA48;
      *(_QWORD *)(v8 + 8) = v10;
      *v10 = v8;
      qword_140C4CA50 = v8;
    }
  }
}

Referenced by:

MiProcessKernelCfgImageLoadConfig
MiResolveImageImports
MmLoadSystemImageEx