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