KsepDbCacheReadDeviceInternal
INT64 __fastcall KsepDbCacheReadDeviceInternal(INT64 a1, INT64 *a2, WCHAR *a3, INT64 a4){
unsigned int DatabaseMatch;
INT64 result;
RTL_RUN_ONCE *v8;
unsigned int i;
unsigned int v10;
unsigned int j;
unsigned int v12;
UINT64 Size;
UINT64 v14;
INT64 v15;
INT64 v16[2];
VOID *v17[2];
__int64 v18;
LODWORD(v14) = 0;
v15 = 0i64;
*(_OWORD *)v16 = 0i64;
v18 = 0i64;
*(_OWORD *)v17 = 0i64;
DatabaseMatch = SdbGetDatabaseMatchEx(a1, 1, a3, a4, 0i64, 0i64, a2);
if( !DatabaseMatch || !(unsigned int)SdbTagRefToTagID(a1, DatabaseMatch, (PVOID **)&v15, (int *)&v14) )
return 3221226021i64;
v8 = (RTL_RUN_ONCE *)v15;
for( i = SdbFindFirstTag(v15, (unsigned int)v14, 28691); ; i = SdbFindNextTag((__int64)v8, v14, v10) )
{
v10 = i;
if( !i )
break;
result = KsepDbReadKFlag(v8, i, (INT64)v16);
if( (int)result < 0 )
return result;
LODWORD(Size) = HIDWORD(v16[1]);
result = KsepCacheDeviceInsertData(a4, (_WORD *)v16[0], v17[0], LODWORD(v16[1]), Size);
if( (int)result < 0 )
return result;
}
for( j = SdbFindFirstTag((INT64)v8, (unsigned int)v14, 28712); ; j = SdbFindNextTag((__int64)v8, v14, v12) )
{
v12 = j;
if( !j )
break;
result = KsepDbReadKData(v8, j, (INT64)v16);
if( (int)result < 0 )
return result;
LODWORD(Size) = HIDWORD(v16[1]);
result = KsepCacheDeviceInsertData(a4, (_WORD *)v16[0], v17[0], LODWORD(v16[1]), Size);
if( (int)result < 0 )
return result;
}
return 0i64;
}Referenced by:
KsepDbCacheReadDevice