RtlCaptureRetpolineImportRvas
__int64 __fastcall RtlCaptureRetpolineImportRvas(
char *a1,
__int64 a2,
__int64 a3,
unsigned int (*a4)(void),
_DWORD *a5,
unsigned int *a6){
unsigned int v6;
__int64 *v10;
__int64 *v11;
unsigned int *v12;
unsigned int v13;
unsigned int v14;
__int64 v16;
__int64 v17;
int v18;
__int64 v20[7];
v6 = 0;
LODWORD(v20[0]) = 0;
v10 = (__int64 *)RtlImageDirectoryEntryToData(a1, 1u, 0xCu, (UINT64 *)v20);
v11 = v10;
if( v10 )
{
if( (char *)v10 + LODWORD(v20[0]) > &a1[a3] )
{
return(unsigned int)-1073741701;
}
else
{
v12 = a6;
v13 = LODWORD(v20[0]) >> 3;
v14 = 4 * (LODWORD(v20[0]) >> 3);
if( v14 > *a6 )
{
v6 = -1073741789;
}
else if( v13 )
{
v16 = v13;
do
{
*a5 = 0;
v17 = *v11;
if( *v11 )
{
v18 = v17 - a2;
if( (unsigned __int64)(v17 - a2 + 0x80000000i64) <= 0xFFFFFFFF && (!a4 || a4()) )
*a5 = v18;
}
++v11;
++a5;
--v16;
}
while( v16 );
v12 = a6;
}
*v12 = v14;
}
}
else
{
*a6 = 0;
}
return v6;
}Referenced by:
MiCaptureRetpolineImportInfo
RtlUpdateImportRelocationsInImage