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