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