CmpKeyEnumStackEntryNotifyPromotion
INT64 __fastcall CmpKeyEnumStackEntryNotifyPromotion(_QWORD *a1){
int v2;
__int64 v3;
_DWORD *v4;
int v5;
__int64 v6;
__int64 v7;
_QWORD *v8;
__int64 v9;
INT16 *v10;
unsigned int SubKeyByNumber;
unsigned int v12;
INT64 result;
v2 = 0;
v3 = 0i64;
v4 = a1 + 4;
v5 = 2;
while( *v4 == *(_DWORD *)((char *)v4 + a1[1] - (_QWORD)a1 - 12) )
{
++v2;
++v3;
++v4;
if( v3 >= 2 )
goto LABEL_6;
}
v5 = v2;
LABEL_6:
a1[15] = 0i64;
v6 = v5;
*((_DWORD *)a1 + 28) = -1;
v7 = v5;
if( a1[v7 + 10] )
{
(*(void(__fastcall **)(_QWORD, _QWORD *))(*a1 + 16i64))(*a1, &a1[v7 + 12]);
a1[v6 + 10] = 0i64;
*((_DWORD *)a1 + v6 + 18) = -1;
}
v8 = &a1[v7];
if( a1[v6 + 5] )
{
(*(void(__fastcall **)(_QWORD, _QWORD *))(*a1 + 16i64))(*a1, v8 + 7);
a1[v6 + 5] = 0i64;
}
v9 = a1[1];
*((_DWORD *)a1 + v6 + 8) = *(_DWORD *)(v9 + 4 * v6 + 20);
v10 = (INT16 *)(*(__int64(__fastcall **)(_QWORD, _QWORD, _QWORD *))(*a1 + 8i64))(
*a1,
*(unsigned int *)(v9 + 4 * v6 + 28),
v8 + 7);
a1[v6 + 5] = v10;
SubKeyByNumber = CmpDoFindSubKeyByNumber(*a1, v10, *((unsigned int *)a1 + v6 + 6));
*((_DWORD *)a1 + v6 + 18) = SubKeyByNumber;
v12 = SubKeyByNumber;
result = (*(__int64(__fastcall **)(_QWORD, _QWORD, _QWORD *))(*a1 + 8i64))(*a1, SubKeyByNumber, v8 + 12);
a1[v6 + 10] = result;
*((_DWORD *)a1 + 28) = v12;
a1[15] = result;
return result;
}Referenced by:
CmpKeyEnumStackNotifyPromotion