MiCaptureBootDriverRetpolineInfo

INT64 __stdcall MiCaptureBootDriverRetpolineInfo(PVOID Base, UINT64 Size, UINT64 *a3){
  __int64 v4; 
  int RetpolineRelocationInformation; 
  INT64 a5; 
  unsigned __int64 v8; 
  unsigned int v9; 
  INT64 v10; 
  INT64 a6; 
  UINT64 a1[9]; 
  INT64 a7; 
  IMAGE_NT_HEADERS *v15; 
  LODWORD(a7) = 0;
  v15 = 0i64;
  v4 = (unsigned int)Size;
  memset(a1, 0, 32);
  RetpolineRelocationInformation = RtlImageNtHeaderEx(0i64, Base, (unsigned int)Size, &v15);
  if( RetpolineRelocationInformation >= 0 )
  {
    LODWORD(a5) = LdrImageDirectoryEntryToLoadConfig(Base);
    if( a5 && *(int *)a5 >= 228 )
    {
      v8 = *(_QWORD *)(a5 + 120);
      v9 = 0;
      if( v8 && v8 >= (unsigned __int64)Base && v8 < (unsigned __int64)Base + v4 - 8 )
        v9 = v8 - (_DWORD)Base;
      LODWORD(a6) = *(_DWORD *)a5;
      RetpolineRelocationInformation = MiCaptureDynamicRelocationTableRva(
                                         Base,
                                         (unsigned int)v4,
                                         0i64,
                                         v15->OptionalHeader.Magic,
                                         a5,
                                         a6,
                                         (INT64)&a7);
      if( RetpolineRelocationInformation >= 0 )
      {
        RetpolineRelocationInformation = MiCaptureRetpolineRelocationTables(
                                           (CHAR *)Base,
                                           (unsigned int)v4,
                                           v10,
                                           (unsigned int)a7,
                                           a1);
        if( RetpolineRelocationInformation >= 0 )
        {
          RetpolineRelocationInformation = MiCreateRetpolineRelocationInformation((INT64)a1, v9, (unsigned int)v4, a3);
          MiFreeImageRetpolineContext(a1);
        }
      }
    }
    else
    {
      return(unsigned int)-1073741637;
    }
  }
  return(unsigned int)RetpolineRelocationInformation;
}

Referenced by:

MiInitializeLoadedModuleList