PopAvlFindOrMakeStatsForScenarioType
CHAR *__stdcall PopAvlFindOrMakeStatsForScenarioType(INT64 a1){
int v1;
const wchar_t *v2;
char *v3;
char *inserted;
char NewElement[8];
_UNICODE_STRING DestinationString;
_QWORD Buffer[28];
v1 = a1;
NewElement[0] = 0;
memset(Buffer, 0i64, 0xD8u);
DestinationString = 0i64;
if( v1 )
{
if( v1 != 1 )
goto LABEL_4;
v2 = MOBILE_HOTSPOT_STATS_ID;
}
else
{
v2 = AUDIO_STATS_ID;
}
RtlInitUnicodeString(&DestinationString, v2);
PopUnicodeStringDeepCopy((PUNICODE_STRING)&Buffer[1], &DestinationString);
LABEL_4:
v3 = (char *)RtlLookupElementGenericTableAvl(&PowerRequestStatsDatabase, Buffer);
if( !v3 )
{
inserted = (char *)RtlInsertElementGenericTableAvl(
&PowerRequestStatsDatabase,
Buffer,
0xD8ui64,
(UINT8 *)NewElement);
v3 = inserted;
if( inserted )
{
if( NewElement[0] )
{
memset(inserted, 0i64, 0xD8u);
if( PopUnicodeStringDeepCopy((PUNICODE_STRING)(v3 + 8), (PCUNICODE_STRING)&Buffer[1]) < 0 )
RtlDeleteElementGenericTableAvl(&PowerRequestStatsDatabase, Buffer);
}
}
}
PopFreeUnicodeString((INT64)&Buffer[1]);
return v3;
}Referenced by:
PopStatsScenarioStateChange