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