KsepCacheInsert
VOID __stdcall KsepCacheInsert(_KSE_CACHE *Cache, VOID *InsertObject){
unsigned int v4;
_QWORD *v5;
_QWORD *v6;
__int64 v7;
__int64 v8;
_KSE_CACHE **v9;
_KSE_CACHE *v10;
_KSE_CACHE **v11;
__int64 *v12;
__int64 *v13;
__int64 v14;
__int64 **v15;
__int64 v16;
_QWORD *v17;
v4 = (*((__int64(__fastcall **)(VOID *))Cache + 10))(InsertObject);
v5 = (_QWORD *)(*((_QWORD *)Cache + 2) + 16i64 * (v4 % Cache[3]));
if( (_QWORD *)*v5 != v5 )
++Cache[14];
*(_DWORD *)InsertObject = v4;
v6 = (char *)InsertObject + 8;
v7 = *((_QWORD *)Cache + 2) + 16i64 * (v4 % Cache[3]);
v8 = *(_QWORD *)v7;
if( *(_QWORD *)(*(_QWORD *)v7 + 8i64) != v7 )
goto LABEL_7;
*v6 = v8;
*((_QWORD *)InsertObject + 2) = v7;
*(_QWORD *)(v8 + 8) = v6;
v9 = (_KSE_CACHE **)((char *)InsertObject + 24);
*(_QWORD *)v7 = v6;
v10 = Cache + 8;
v11 = (_KSE_CACHE **)*((_QWORD *)Cache + 5);
if( *v11 != Cache + 8 )
goto LABEL_7;
*v9 = v10;
*((_QWORD *)InsertObject + 4) = v11;
*v11 = (_KSE_CACHE *)v9;
*((_QWORD *)Cache + 5) = v9;
++Cache[2];
++Cache[15];
if( Cache[2] > (unsigned int)Cache[6] )
{
v12 = *(__int64 **)v10;
v13 = **(__int64 ***)v10;
v14 = *(_QWORD *)v10 - 24i64;
if( v13[1] == *(_QWORD *)v10 )
{
v15 = (__int64 **)v12[1];
if( *v15 == v12 )
{
*v15 = v13;
v13[1] = (__int64)v15;
v16 = *(_QWORD *)(v14 + 8);
if( *(_QWORD *)(v16 + 8) == v14 + 8 )
{
v17 = *(_QWORD **)(v14 + 16);
if( *v17 == v14 + 8 )
{
*v17 = v16;
*(_QWORD *)(v16 + 8) = v17;
--Cache[2];
++Cache[16];
(*((void(__fastcall **)(__int64))Cache + 11))(v14);
return;
}
}
}
}
LABEL_7:
__fastfail(3u);
}
}Referenced by:
KseAddHardwareId
KsepDbCacheInsertDevice