PiControlGetUserFlagsFromDeviceNode
int __fastcall PiControlGetUserFlagsFromDeviceNode(__int64 a1, int *a2){
int IsDevNodeDNStarted;
int v5;
int v6;
BOOLEAN IsRootEnumeratedDevice;
int v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
int v15;
int v16;
int v17;
int v18;
int v19;
int v20;
int v21;
int v22;
int result;
PipAreDriversLoaded((_DEVICE_NODE *)a1);
IsDevNodeDNStarted = PipIsDevNodeDNStarted((_DEVICE_NODE *)a1);
v6 = v5 | 8;
if( !IsDevNodeDNStarted )
v6 = v5;
IsRootEnumeratedDevice = CmIsRootEnumeratedDevice(*(PCWSTR *)(a1 + 48));
v8 = *(_DWORD *)(a1 + 400);
v9 = *(_DWORD *)(a1 + 396);
v10 = v6 | 1;
if( !IsRootEnumeratedDevice )
v10 = v6;
v11 = v10 | 0x4000;
if( (*(_DWORD *)(a1 + 560) & 0x10) == 0 )
v11 = v10;
v12 = v11 | 0x40000;
if( (v8 & 1) == 0 )
v12 = v11;
v13 = v12 | 0x40000000;
if( (v8 & 2) == 0 )
v13 = v12;
v14 = v13 | 0x2000000;
if( (v8 & 0x40) == 0 )
v14 = v13;
v15 = v14 | 0x100;
if( (v8 & 4) == 0 )
v15 = v14;
v16 = v15 | 0x8000;
if( (v9 & 0x4000) == 0 )
v16 = v15;
v17 = v16 | 0x400;
if( (v9 & 0x2000) == 0 )
v17 = v16;
v18 = v17 | 0x40;
if( (*(_DWORD *)(a1 + 396) & 0x100000) == 0 )
v18 = v17;
v19 = v18 | 0x1000;
if( (v9 & 0x1000) == 0 )
v19 = v18;
v20 = v19 | 0x200;
if( (v9 & 0x200000) == 0 )
v20 = v19;
v21 = v20 | 0x2000;
if( *(_DWORD *)(a1 + 600) )
v21 = v20;
v22 = v21 | 0x10000;
if( (v8 & 0x100) == 0 )
v22 = v21;
result = v22 | 0x20000;
if( (v8 & 0x200) == 0 )
result = v22;
*a2 = result;
return result;
}Referenced by:
PiControlGetSetDeviceStatus