CmGetVisibleMaxNameLenAndClassLen
INT64 __fastcall CmGetVisibleMaxNameLenAndClassLen(INT64 a1, INT64 a2, INT64 a3, UINT64 *a4, UINT64 *a5){
UINT64 *v7;
LIST_ENTRY *v9;
__int64 v10;
__int64 v11;
INT64 v12;
__int64 v13;
unsigned int v14;
unsigned int v15;
int v16;
int v17;
LIST_ENTRY *ListIterator;
v16 = -1;
ListIterator = 0i64;
v7 = a5;
*(_DWORD *)a4 = 0;
v17 = 0;
if( v7 )
*(_DWORD *)v7 = 0;
if( a2 )
{
*(_DWORD *)a4 = (unsigned __int16)*(_DWORD *)(a2 + 52);
if( v7 )
*(_DWORD *)v7 = *(_DWORD *)(a2 + 56);
}
if( a1 )
{
*(_DWORD *)a4 = *(unsigned __int16 *)(a1 + 176);
if( a3 )
{
v9 = (LIST_ENTRY *)(a1 + 208);
while( 1 )
{
LODWORD(v10) = CmListGetNextElement(v9, &ListIterator, 32i64);
v11 = v10;
if( !v10 )
break;
if( CmEqualTrans(*(_QWORD *)(v10 + 56), a3) )
{
if( *(_DWORD *)(v11 + 68) == 1 )
{
v12 = *(_QWORD *)(v11 + 88);
if( !CmpIsKeyDeleted(v12, 0i64) )
{
v13 = (*(__int64(__fastcall **)(_QWORD, _QWORD, int *))(*(_QWORD *)(v12 + 32) + 8i64))(
*(_QWORD *)(v12 + 32),
*(unsigned int *)(v12 + 40),
&v16);
if( !v13 )
return 3221225626i64;
v14 = (unsigned __int16)*(_DWORD *)(v13 + 52);
if( *(_DWORD *)a4 < v14 )
*(_DWORD *)a4 = v14;
if( v7 )
{
v15 = *(_DWORD *)(v13 + 56);
if( *(_DWORD *)v7 < v15 )
*(_DWORD *)v7 = v15;
}
(*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(v12 + 32) + 16i64))(*(_QWORD *)(v12 + 32), &v16);
}
}
}
}
}
}
return 0i64;
}Referenced by:
CmpQueryKeyDataFromCache
CmpQueryKeyDataFromNode