PopAvlFindOrMakeStatsForScenarioType
CHAR *__fastcall PopAvlFindOrMakeStatsForScenarioType(INT64 a1){
int v1;
WCHAR v2;
const WCHAR *v3;
char *v4;
char *v5;
char *inserted;
char NewElement[8];
struct _UNICODE_STRING DestinationString;
char Buffer[8];
UNICODE_STRING SourceString;
v1 = a1;
NewElement[0] = 0;
memset((INT64)Buffer, 0i64);
DestinationString = 0i64;
if( v1 )
{
if( v1 != 1 )
goto LABEL_4;
v3 = MOBILE_HOTSPOT_STATS_ID;
}
else
{
v3 = AUDIO_STATS_ID;
}
RtlInitUnicodeString(&DestinationString, v3, v2);
PopUnicodeStringDeepCopy(&SourceString, &DestinationString);
LABEL_4:
LODWORD(v4) = RtlLookupElementGenericTableAvl(&PowerRequestStatsDatabase, Buffer);
v5 = v4;
if( !v4 )
{
inserted = (char *)RtlInsertElementGenericTableAvl(
&PowerRequestStatsDatabase,
Buffer,
0xD8ui64,
(UINT8 *)NewElement);
v5 = inserted;
if( inserted )
{
if( NewElement[0] )
{
memset((INT64)inserted, 0i64);
if( PopUnicodeStringDeepCopy((PUNICODE_STRING)(v5 + 8), &SourceString) < 0 )
RtlDeleteElementGenericTableAvl(&PowerRequestStatsDatabase, Buffer);
}
}
}
PopFreeUnicodeString((INT64)&SourceString);
return v5;
}Referenced by:
PopStatsScenarioStateChange