PiUEventCacheObjectProperties

INT64 __fastcall PiUEventCacheObjectProperties(INT64 a1){
  int v1; 
  unsigned __int64 v2; 
  PVOID *v3; 
  void *v4; 
  int v5; 
  int v6; 
  int v7; 
  INT64 v8; 
  int v9; 
  unsigned int v10; 
  unsigned int v11; 
  int v13; 
  int v14; 
  int v15; 
  int ObjectProperty; 
  INT64 v17; 
  UINT64 v18; 
  ULONG v19; 
  INT64 v20; 
  v1 = *(_DWORD *)(a1 + 88);
  v2 = a1 + 60;
  *(_DWORD *)(a1 + 60) = -1;
  v3 = (PVOID *)(a1 + 48);
  LODWORD(v18) = 0;
  v4 = 0i64;
  v19 = 0;
  v20 = 0i64;
  *(_QWORD *)(a1 + 48) = 0i64;
  v5 = v1 - 1;
  if( !v5 )
  {
LABEL_4:
    v8 = a1 + 120;
    goto LABEL_5;
  }
  v6 = v5 - 1;
  if( v6 )
  {
    v7 = v6 - 1;
    if( v7 )
    {
      v13 = v7 - 1;
      if( v13 )
      {
        v14 = v13 - 5;
        if( v14 )
        {
          v15 = v14 - 1;
          if( v15 )
          {
            if( v15 != 1 )
              return 0;
          }
        }
      }
    }
    goto LABEL_4;
  }
  LODWORD(v17) = 0;
  ObjectProperty = PnpGetObjectProperty(
                     1500540496i64,
                     200i64,
                     a1 + 136,
                     3i64,
                     0i64,
                     0i64,
                     (INT64 *)&DEVPKEY_Device_InstanceId,
                     (UINT64)&v18,
                     (INT64)&v20,
                     &v19,
                     v17);
  v4 = (void *)v20;
  v10 = ObjectProperty;
  if( ObjectProperty < 0 )
    goto LABEL_9;
  v8 = v20;
LABEL_5:
  LODWORD(v17) = 0;
  v9 = PnpGetObjectProperty(
         1500540496i64,
         512i64,
         v8,
         1i64,
         0i64,
         0i64,
         (INT64 *)&DEVPKEY_Device_RestrictedSD,
         (UINT64)&v18,
         (INT64)v3,
         &v19,
         v17);
  v10 = v9;
  if( v9 >= 0 )
  {
    if( (_DWORD)v18 != 19 )
    {
      ExFreePoolWithTag(*v3, 0x59706E50u);
      *v3 = 0i64;
    }
    goto LABEL_7;
  }
  if( v9 == -1073741772 || v9 == -1073741275 )
  {
LABEL_7:
    v11 = PnpGetObjectProperty(
            PiPnpRtlCtx,
            v8,
            1i64,
            0i64,
            0i64,
            (__int64)&DEVPKEY_Device_SessionId,
            (int *)&v18,
            v2,
            4,
            &v19,
            0);
    v10 = v11;
    if( v11 == -1073741772 || v11 == -1073741275 )
      v10 = 0;
  }
LABEL_9:
  if( v4 )
    ExFreePoolWithTag(v4, 0x59706E50u);
  return v10;
}

Referenced by:

PiUEventNotifyUserMode