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

__int64 __fastcall B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeWalkPostOrderInternal(
        __int64 a1,
        const void *a2,
        _QWORD **a3,
        __int64 (__fastcall *a4)(_QWORD *, __int64, __int64),
        __int64 a5,
        __int64 a6){
  _QWORD *v6; 
  UINT8 *v10; 
  _BYTE *v11; 
  int v12; 
  char *v13; 
  unsigned __int64 v14; 
  char *v15; 
  __int64 v16; 
  const void **v17; 
  const void **v18; 
  v6 = *a3;
  if( *a3 )
  {
    v10 = (UINT8 *)*a3;
    *a3 = (_QWORD *)*v6;
    v11 = v6;
    memmove(v10, (UINT8 *)a2, 0x1000ui64);
  }
  else
  {
    v11 = a2;
  }
  if( v11[3] )
  {
    v12 = a4(v11, a5, a6);
    goto LABEL_22;
  }
  v13 = v11 + 16;
  v14 = (unsigned __int64)&v11[16 * (unsigned __int16)*(_DWORD *)v11 + 16];
  v15 = v11 + 16;
  if( **(_DWORD **)((a1 + 16) & -(__int64)(a1 != 0)) != -1 && v11[2] == 2 )
  {
    for( ; (unsigned __int64)v15 <= v14; v15 += 16 )
    {
      v16 = (__int64)(v15 - 8);
      if( v15 <= v13 )
        v16 = (__int64)(v11 + 8);
      v12 = a4(0i64, a5, v16);
      if( v12 < 0 )
        goto LABEL_22;
    }
LABEL_20:
    v12 = a4(v11, a5, a6);
    if( v12 >= 0 )
      v12 = 0;
    goto LABEL_22;
  }
  if( (unsigned __int64)v15 > v14 )
    goto LABEL_20;
  v17 = (const void **)(v11 + 8);
  while( 1 )
  {
    v18 = (const void **)(v15 - 8);
    if( v15 <= v13 )
      v18 = v17;
    v12 = B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeWalkPostOrderInternal(
            a1,
            *v18,
            a3,
            a4,
            a5,
            (__int64)v18);
    if( v12 < 0 )
      break;
    v15 += 16;
    v17 = (const void **)(v11 + 8);
    if( (unsigned __int64)v15 > v14 )
      goto LABEL_20;
  }
LABEL_22:
  if( v6 )
  {
    *v6 = *a3;
    *a3 = v6;
  }
  return(unsigned int)v12;
}

Referenced by:

No references.