RtlpCaptureDynamicRelocationTableRva
NTSTATUS __stdcall RtlpCaptureDynamicRelocationTableRva(VOID *Base, UINT64 Size, INT64 *a3){
unsigned int v3;
__int64 v6;
__int64 v7;
int v8;
NTSTATUS result;
int v10;
__int64 v11;
v3 = Size;
v11 = 0i64;
LODWORD(v6) = LdrImageDirectoryEntryToLoadConfig(Base);
if( !v6 || *(_DWORD *)v6 < 0xC8u )
return -1073741637;
if( *(_DWORD *)v6 < 0xE6u )
{
if( *(_QWORD *)(v6 + 192) )
{
v10 = *(_DWORD *)(v6 + 192) - (_DWORD)Base;
goto LABEL_8;
}
return -1073741637;
}
v7 = *(unsigned __int16 *)(v6 + 228);
v8 = *(_DWORD *)(v6 + 224);
if( !(_WORD)v7 )
return -1073741637;
result = RtlImageNtHeaderEx(0, (unsigned __int64)Base, v3, &v11);
if( result < 0 )
return result;
if( (unsigned __int16)v7 > *(_WORD *)(v11 + 6) )
return -1073741701;
v10 = v8 + *(_DWORD *)(v11 + *(unsigned __int16 *)(v11 + 20) + 40 * v7 - 4);
LABEL_8:
*(_DWORD *)a3 = v10;
return 0;
}Referenced by:
RtlPerformRetpolineRelocationsOnImageEx
RtlUpdateImportRelocationsInImage