PiCMDeleteObject

INT64 __stdcall PiCMDeleteObject(
        PVOID IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        PVOID IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  __int64 *v5; 
  unsigned int v6; 
  __int64 *v8; 
  int v9; 
  int v10; 
  unsigned int v11; 
  __int64 v12; 
  INT64 v14[2]; 
  __int128 v15; 
  UINT64 ExpectedOutputSize; 
  __int64 *a1; 
  v5 = a1;
  v6 = IoctlOutputBufferSize;
  ExpectedOutputSize = 0i64;
  *(_DWORD *)a1 = 0;
  v8 = 0i64;
  *(_OWORD *)v14 = 0i64;
  a1 = 0i64;
  v15 = 0i64;
  v9 = PiCMCaptureObjectInputData((UINT64)IoctlInputBuffer, IoctlInputBufferSize, (unsigned int)BytesUsed, (INT64)v14);
  if( v9 >= 0 )
  {
    if( !PiAuDoesClientHaveAccess(2ui64) )
    {
      v9 = -1073741790;
LABEL_41:
      v9 = PiCMReturnBasicResultData(
             (unsigned int)v9,
             (unsigned int)ExpectedOutputSize,
             IoctlOutputBuffer,
             v6,
             (UINT64 *)v5);
      goto LABEL_42;
    }
    if( !(_QWORD)v15 )
      goto LABEL_40;
    if( HIDWORD(v14[0]) )
      goto LABEL_40;
    if( HIDWORD(v15) )
      goto LABEL_40;
    if( !IoctlOutputBuffer )
      goto LABEL_40;
    v10 = 8;
    if( v6 < 8 )
      goto LABEL_40;
    v11 = 0;
    if( SLODWORD(v14[1]) <= 6 )
    {
      switch( LODWORD(v14[1]) )
      {
        case 6:
          v11 = 6;
          goto LABEL_35;
        case 1:
          v11 = 1;
          goto LABEL_35;
        case 2:
          v11 = 2;
          goto LABEL_36;
        case 3:
          v11 = 4;
          goto LABEL_36;
        case 4:
          v11 = 3;
          goto LABEL_35;
        case 5:
          v11 = 5;
          goto LABEL_35;
      }
      goto LABEL_32;
    }
    if( LODWORD(v14[1]) == 65537 )
    {
      v10 = 7;
    }
    else if( LODWORD(v14[1]) != 65538 )
    {
      switch( LODWORD(v14[1]) )
      {
        case 0x10003:
          v10 = 9;
          break;
        case 0x10004:
          v10 = 10;
          break;
        case 0x10005:
          v10 = 11;
          break;
        default:
          goto LABEL_32;
      }
    }
    v11 = PiDrvDbCtx != 0 ? v10 : 0;
LABEL_32:
    if( v11 )
    {
      if( v11 <= 4 || v11 > 6 )
      {
LABEL_36:
        if( v9 >= 0 )
        {
          v9 = PiPnpRtlBeginOperation(&a1);
          if( v9 >= 0 )
            v9 = PnpDeleteObject(v12, v15, v11);
          v8 = a1;
        }
        goto LABEL_41;
      }
LABEL_35:
      v9 = -1073741637;
      goto LABEL_36;
    }
LABEL_40:
    v9 = -1073741811;
    goto LABEL_41;
  }
LABEL_42:
  PiCMReleaseObjectInputData((INT64)v14);
  if( v8 )
    PiPnpRtlEndOperation(v8);
  return(unsigned int)v9;
}

Referenced by:

No references.