RtlpSearchFunctionTable

INT64 __fastcall RtlpSearchFunctionTable(_MMPFN *a1, INT64 a2){
  __int64 v2; 
  __int64 v3; 
  INT64 v4; 
  int v5; 
  unsigned __int64 v7; 
  unsigned int *v8; 
  unsigned __int64 v9; 
  bool v10; 
  int v11; 
  int v12; 
  int v13; 
  v4 = 0i64;
  v5 = a2;
  if( (_DWORD)a2 )
  {
    v7 = v2 - v3;
    v8 = (unsigned int *)((char *)a1 + 12 * (unsigned int)(a2 - 1));
    v9 = *v8;
    if( v7 < v9 )
    {
      v10 = v5 - 2 < 0;
      v11 = v5 - 2;
      v12 = 0;
      if( !v10 )
      {
        do
        {
          v13 = (v12 + v11) >> 1;
          v8 = (unsigned int *)((char *)a1 + 12 * v13);
          if( v7 < *v8 )
          {
            v11 = v13 - 1;
          }
          else
          {
            LODWORD(v9) = *v8;
            if( v7 < v8[3] )
              break;
            v12 = v13 + 1;
          }
          LODWORD(v9) = *v8;
        }
        while( v11 >= v12 );
      }
    }
    if( v7 >= (unsigned int)v9 && v7 < v8[1] )
      return(INT64)v8;
  }
  return v4;
}

Referenced by:

RtlMarkExceptionHandlingPages