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