CmGetVisibleMaxValueNameLenAndDataLen
__int64 __fastcall CmGetVisibleMaxValueNameLenAndDataLen(
__int64 a1,
__int64 a2,
__int64 a3,
_DWORD *a4,
unsigned int *a5){
unsigned int *v5;
__int64 v9;
__int64 v10;
__int64 v11;
__int64 v12;
unsigned __int16 v13;
unsigned int v14;
unsigned int v15;
int v16;
int v17;
int v18;
int v19;
v5 = a5;
*a4 = 0;
v17 = 0;
v16 = -1;
*v5 = 0;
v18 = -1;
v19 = 0;
if( a2 )
{
*a4 = *(_DWORD *)(a2 + 60);
*v5 = *(_DWORD *)(a2 + 64);
}
if( !a1 )
return 0i64;
*a4 = *(unsigned __int16 *)(a1 + 178);
*v5 = *(_DWORD *)(a1 + 180);
if( !a3 )
return 0i64;
v9 = *(_QWORD *)(a1 + 288);
if( !v9 )
return 0i64;
if( v9 != a3 )
return 0i64;
*a4 = 0;
*v5 = 0;
if( !*(_DWORD *)(a1 + 280) )
return 0i64;
v10 = (*(__int64(__fastcall **)(_QWORD, _QWORD, int *))(*(_QWORD *)(a1 + 32) + 8i64))(
*(_QWORD *)(a1 + 32),
*(unsigned int *)(a1 + 284),
&v16);
if( v10 )
{
v11 = 0i64;
if( *(_DWORD *)(a1 + 280) )
{
while( 1 )
{
v12 = (*(__int64(__fastcall **)(_QWORD, _QWORD, int *))(*(_QWORD *)(a1 + 32) + 8i64))(
*(_QWORD *)(a1 + 32),
*(unsigned int *)(v10 + 4 * v11),
&v18);
if( !v12 )
break;
v13 = 2 * *(_WORD *)(v12 + 2);
if( (*(_BYTE *)(v12 + 16) & 1) == 0 )
v13 = *(_WORD *)(v12 + 2);
if( *a4 < (unsigned int)v13 )
*a4 = v13;
v14 = *(_DWORD *)(v12 + 4);
v15 = v14 + 0x80000000;
if( v14 < 0x80000000 )
v15 = v14;
if( *v5 < v15 )
*v5 = v15;
(*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(a1 + 32) + 16i64))(*(_QWORD *)(a1 + 32), &v18);
v11 = (unsigned int)(v11 + 1);
if( (unsigned int)v11 >= *(_DWORD *)(a1 + 280) )
goto LABEL_21;
}
(*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(a1 + 32) + 16i64))(*(_QWORD *)(a1 + 32), &v16);
return 3221225626i64;
}
LABEL_21:
(*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(a1 + 32) + 16i64))(*(_QWORD *)(a1 + 32), &v16);
return 0i64;
}
return 3221225626i64;
}Referenced by:
CmpQueryKeyDataFromCache
CmpQueryKeyDataFromNode