B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindLeafSiblingEx

struct B_TREE_NODE_HDR *__fastcall B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindLeafSiblingEx(
        __int64 a1,
        __int64 a2){
  struct B_TREE_NODE_HDR *v4; 
  __int64 v5; 
  void **v6; 
  __int64 *v7; 
  unsigned __int64 v8; 
  __int64 v9; 
  void **v10; 
  unsigned __int64 v11; 
  void **v12; 
  struct NP_CONTEXT::NP_CTX *v13; 
  struct B_TREE_NODE_HDR **v14; 
  __int64 v16[3]; 
  v4 = 0i64;
  *(_OWORD *)v16 = 0i64;
  if( (unsigned int)B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindSeperatorIndexEntry(
                       a2,
                       1,
                       v16) )
  {
    v6 = (void **)B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDescendToSibling(
                    v16,
                    v5,
                    0i64);
    if( **(_DWORD **)((a1 + 16) & -(__int64)(a1 != 0)) == -1 )
      v4 = (struct B_TREE_NODE_HDR *)*v6;
    else
      v4 = NP_CONTEXT::NpLeafRefInternal(
             (struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0)),
             v6,
             2 * (*(_BYTE *)(a2 + 32) & 1u));
    if( v4 )
    {
      v7 = (__int64 *)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 2));
      v8 = v7[1];
      v9 = *v7;
      v10 = (void **)(v8 - 8);
      v11 = v9 + 16;
      v12 = (void **)(v9 + 8);
      if( v8 <= v11 )
        v10 = v12;
      v13 = (struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0));
      if( **(_DWORD **)v13 != -1 )
        NP_CONTEXT::NpLeafDerefInternal(v13, v10);
      B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDescendToSibling(
        v16,
        (__int64)v10,
        a2);
      v14 = (struct B_TREE_NODE_HDR **)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
      *v14 = v4;
      v14[1] = (struct B_TREE_NODE_HDR *)((char *)v4 + 16);
    }
    else
    {
      return(struct B_TREE_NODE_HDR *)-1i64;
    }
  }
  return v4;
}

Referenced by:

No references.