RtlpCaptureDynamicRelocationTableRva

INT64 __stdcall RtlpCaptureDynamicRelocationTableRva(PVOID Base, UINT64 Size, INT64 *a3){
  unsigned int v3; 
  __int64 v6; 
  __int64 v7; 
  int v8; 
  INT64 result; 
  int v10; 
  PIMAGE_NT_HEADERS NtHeader; 
  v3 = Size;
  NtHeader = 0i64;
  LODWORD(v6) = LdrImageDirectoryEntryToLoadConfig(Base);
  if( !v6 || *(_DWORD *)v6 < 0xC8u )
    return 3221225659i64;
  if( *(_DWORD *)v6 < 0xE6u )
  {
    if( *(_QWORD *)(v6 + 192) )
    {
      v10 = *(_DWORD *)(v6 + 192) - (_DWORD)Base;
      goto LABEL_8;
    }
    return 3221225659i64;
  }
  v7 = *(unsigned __int16 *)(v6 + 228);
  v8 = *(_DWORD *)(v6 + 224);
  if( !(_WORD)v7 )
    return 3221225659i64;
  LODWORD(result) = RtlImageNtHeaderEx(0i64, Base, v3, &NtHeader);
  if( (int)result < 0 )
    return result;
  if( (unsigned __int16)v7 > NtHeader->FileHeader.NumberOfSections )
    return 3221225595i64;
  v10 = v8 + *(_DWORD *)((char *)NtHeader + 40 * v7 + NtHeader->FileHeader.SizeOfOptionalHeader - 4);
LABEL_8:
  *(_DWORD *)a3 = v10;
  return 0i64;
}

Referenced by:

RtlPerformRetpolineRelocationsOnImageEx
RtlUpdateImportRelocationsInImage