RtlValidateRetpolineRelocation

__int64 __fastcall RtlValidateRetpolineRelocation(_QWORD *a1, unsigned int a2, _DWORD *a3){
  unsigned int v6; 
  unsigned int v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  int v12; 
  unsigned __int64 v13; 
  __int64 v14; 
  unsigned int v15; 
  unsigned __int64 v16; 

  v6 = RtlSizeOfRetpolineRelocationEntry(*a1);
  v9 = 0;
  v10 = v6;
  v11 = 0i64;
  v12 = 0;
  if( v8 <= v7 )
  {
LABEL_12:
    *a3 = v12;
  }
  else
  {
    while( 1 )
    {
      v13 = v7 + 8i64;
      if( v13 < v7 )
        break;
      if( v13 > v8 )
        break;
      v14 = *(unsigned int *)((char *)a1 + v7 + 4);
      if( (unsigned int)v14 < 8 )
        break;
      v15 = v14 + v7;
      if( (unsigned int)v14 + v7 < v7 )
        break;
      if( v15 > v8 )
        break;
      v16 = *(unsigned int *)((char *)a1 + v7);
      if( (unsigned int)v16 >= a2 || (v16 & 0xFFF) != 0 || v16 <= v11 || (v14 - 8) % v10 )
        break;
      v11 = (unsigned int)v16;
      v7 += v14;
      v12 += (v14 - 8) / v10;
      if( v15 >= v8 )
        goto LABEL_12;
    }
    return(unsigned int)-1073741701;
  }
  return v9;
}

Referenced by:

MiCaptureRetpolineRelocationTables