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