MiApplyDynamicRelocations

NTSTATUS __stdcall MiApplyDynamicRelocations(PVOID Base, UINT64 Size, INT64 a3, INT64 a4){
  unsigned int v6; 
  _DWORD *v8; 
  NTSTATUS result; 
  __int64 v10; 
  __int64 v11; 
  int a5; 
  INT64 a6; 
  int v14; 
  int a7[5]; 

  v14 = 0;
  a7[0] = 0;
  v6 = Size;
  if( (MiFlags & 0x8000) != 0 )
    return VslApplyDynamicRelocations((__int64)Base, a3, a4);
  v8 = RtlImageDirectoryEntryToData(Base, 1u, 0xAu, (UINT64 *)&v14);
  if( !v8 || v14 != *v8 )
    return 0;
  LODWORD(a6) = *v8;
  result = MiCaptureDynamicRelocationTableRva(Base, v6, 0i64, 523, (INT64)v8, a6, (INT64)a7);
  if( result >= 0 )
    return LdrApplyDynamicRelocations((__int64)Base, (char *)Base + (unsigned int)a7[0], v10, v11, a5, a3, a4);
  if( result == -1073741637 )
    return 0;
  return result;
}

Referenced by:

MiRebaseDynamicRelocationRegions