PiSwDoesCreateChangesRequireReEnum

VOID __fastcall PiSwDoesCreateChangesRequireReEnum(
        _PI_SWD_OBJECT *SwDeviceObject,
        _SW_DEVICE_CREATE_IOCTL_DATA *IoctlData){
  _QWORD *v4; 
  _QWORD *v5; 
  __int64 v6; 
  const wchar_t *v7; 
  const wchar_t *v8; 
  const wchar_t *v9; 
  const wchar_t *v10; 
  unsigned int v11; 
  wchar_t *v12; 
  wchar_t *v13; 
  wchar_t *v14; 
  wchar_t *v15; 

  if( SwDeviceObject[16] == IoctlData[16] )
  {
    v4 = (_QWORD *)*((_QWORD *)SwDeviceObject + 5);
    v5 = (_QWORD *)*((_QWORD *)IoctlData + 7);
    if( v4 == v5 )
      goto LABEL_30;
    if( v4 && v5 )
    {
      v6 = *v4 - *v5;
      if( *v4 == *v5 )
        v6 = v4[1] - v5[1];
      if( !v6 )
      {
LABEL_30:
        if( !wcsicmp(*(const wchar_t **)(*((_QWORD *)SwDeviceObject + 14) + 8i64), *((const wchar_t **)IoctlData + 1)) )
        {
          v7 = (const wchar_t *)*((_QWORD *)SwDeviceObject + 6);
          v8 = (const wchar_t *)*((_QWORD *)IoctlData + 9);
          if( v7 == v8 || v7 && v8 && !wcsicmp(v7, v8) )
          {
            v9 = (const wchar_t *)*((_QWORD *)SwDeviceObject + 7);
            v10 = (const wchar_t *)*((_QWORD *)IoctlData + 10);
            if( v9 == v10 || v9 && v10 && !wcsicmp(v9, v10) )
            {
              v11 = SwDeviceObject[40];
              if( v11 == IoctlData[22]
                && (!v11 || !memcmp(*((const VOID **)SwDeviceObject + 19), *((const VOID **)IoctlData + 12), v11)) )
              {
                v12 = (wchar_t *)*((_QWORD *)SwDeviceObject + 3);
                v13 = (wchar_t *)*((_QWORD *)IoctlData + 4);
                if( v12 == v13 || v12 && v13 && PnpCompareMultiSz(v12, v13, 1u) )
                {
                  v14 = (wchar_t *)*((_QWORD *)SwDeviceObject + 4);
                  v15 = (wchar_t *)*((_QWORD *)IoctlData + 6);
                  if( v14 != v15 && v14 )
                  {
                    if( v15 )
                      PnpCompareMultiSz(v14, v15, 1u);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Referenced by:

PiSwIrpStartCreateWorker