B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeSearchKey

__int64 __fastcall B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeSearchKey(
        __int64 a1,
        __int64 a2,
        __int64 a3){
  unsigned int v3; 
  unsigned int v5; 
  __int64 *v6; 
  int v7; 
  __int64 v8; 
  UINT64 *v9; 
  _QWORD *v10; 
  __int64 v11; 
  unsigned int Key; 
  _DWORD *v13; 
  __int64 *v15; 
  v3 = 0;
  v5 = a2;
  v6 = (__int64 *)a1;
  if( *(_DWORD *)(a3 + 24) == -1 )
  {
    v10 = (_QWORD *)(a3 + 8);
    v7 = 0;
    *(_QWORD *)(a3 + 8) = 0i64;
  }
  else
  {
    *(_DWORD *)(a3 + 24) = 0;
    v7 = 1;
    v8 = *(_QWORD *)a1;
    a1 = 0i64;
    if( v8 )
      a1 = *(unsigned __int8 *)(v8 + 2);
    v9 = (UINT64 *)(a3 + 28);
    if( *(_DWORD *)v9 < (unsigned int)a1 && !(unsigned int)SmArrayGrow(a1, a2, v9, (PVOID *)a3) )
      return(unsigned int)-1073741670;
    v10 = *(_QWORD **)a3;
  }
  v11 = *v6;
  if( !v11 )
  {
    if( !v7 )
    {
      *v10 = 0i64;
      v10[1] = 0i64;
    }
    return(unsigned int)-1073741275;
  }
  while( 1 )
  {
    Key = B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeNodeFindKey(
            a1,
            (_DWORD *)v11,
            v5);
    if( *(_BYTE *)(v11 + 3) )
      break;
    if( v7 )
    {
      *v10 = v11;
      a1 = v11 + 16 * (Key + 1i64);
      v10[1] = a1;
      v10 += 2;
    }
    if( Key )
    {
      a1 = 16i64 * (Key - 1);
      v15 = (__int64 *)(a1 + v11 + 24);
    }
    else
    {
      v15 = (__int64 *)(v11 + 8);
    }
    v11 = *v15;
  }
  *v10 = v11;
  v13 = (_DWORD *)(v11 + 8 * (Key + 2i64));
  v10[1] = v13;
  if( v7 )
    *(_DWORD *)(a3 + 24) = (((__int64)v10 - *(_QWORD *)a3) >> 4) + 1;
  if( Key >= (unsigned __int16)*(_DWORD *)v11 || *v13 != v5 )
    return(unsigned int)-1073741275;
  return v3;
}

Referenced by:

No references.