CmpFindLowerBoundInSortedArray

UINT64 *__fastcall CmpFindLowerBoundInSortedArray(UINT64 *a1, UINT64 *a2, UINT64 a3){
  UINT64 *v3; 
  unsigned int v4; 
  UINT64 *v5; 
  int v6; 
  UINT64 *v7; 

  v3 = &a2[2 * a3];
  if( a2 < v3 )
  {
    v4 = *(_DWORD *)a1;
    do
    {
      v5 = &a2[2 * (a3 >> 1)];
      if( v4 <= *(_DWORD *)v5 )
      {
        a3 >>= 1;
        v3 = v5;
        v6 = -(v4 < *(_DWORD *)v5);
      }
      else
      {
        v6 = 1;
        a3 += -1i64 - (a3 >> 1);
      }
      v7 = v5 + 2;
      if( v6 > 0 )
        a2 = v7;
    }
    while( a2 < v3 );
  }
  return a2;
}

Referenced by:

CmpFindSecurityCellCacheIndex