SMKM_STORE_MGR::SmFeCheckPresent
__int64 __fastcall SMKM_STORE_MGR::SmFeCheckPresent(__int64 a1, unsigned int *a2, unsigned int *a3, int *a4){
unsigned int v4;
unsigned int v7;
unsigned int v8;
int v9;
unsigned int v10;
int v11;
__m128i *v12;
__int64 v13;
unsigned __int64 v14;
__int64 v15;
__int64 v17;
unsigned int v18;
INT64 *v20;
__int64 v21[2];
int v22;
int v23;
__int64 v24;
INT64 result[17];
v4 = *a2;
memset((INT64)result, 0i64);
v24 = 1i64;
v21[0] = 0i64;
v21[1] = 0i64;
v20 = result;
v7 = 0;
v8 = *a3;
v9 = 0;
v22 = 0;
v10 = 1024;
v18 = v8;
v23 = 8;
v11 = 1024;
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(
a1 + 448,
v4,
(__int64)&v20);
if( v22 == -1 || !v22 )
v12 = (__m128i *)v21;
else
v12 = (__m128i *)&v20[2 * (unsigned int)(v22 - 1)];
v13 = v12->m128i_i64[0];
v14 = _mm_srli_si128(*v12, 8).m128i_u64[0] - 8;
while( v13 )
{
v14 += 8i64;
if( v14 >= v13 + 8 * ((unsigned __int64)(unsigned __int16)*(_DWORD *)v13 + 2) )
{
v17 = *(_QWORD *)(v13 + 8);
if( v17 )
{
v13 = *(_QWORD *)(v13 + 8);
v14 = v17 + 16;
}
v15 = (v17 + 16) & -(__int64)(v17 != 0);
}
else
{
v15 = v14;
}
if( !v15 || v4 < *(_DWORD *)v15 || (*(_BYTE *)(v15 + 7) & 1) != 0 || ((*(_BYTE *)(v15 + 6) - 1) & 0xFD) != 0 )
break;
if( *(_BYTE *)(v15 + 6) == 1 )
v9 = 1;
if( v7 )
{
if( v11 != *(unsigned __int16 *)(v15 + 4) )
break;
}
else
{
v11 = *(unsigned __int16 *)(v15 + 4);
}
if( ++v7 >= v18 )
break;
++v4;
}
if( v7 )
{
v10 = v11;
*a3 = v7;
*a4 = v9;
}
return v10;
}
Referenced by:
No references.