ViDifCaptureIoCallbacks

char __fastcall ViDifCaptureIoCallbacks(_QWORD *a1){
  __int64 v1; 
  _QWORD *v2; 
  __int64 v4; 
  char *v5; 
  __int64 v6; 
  VOID(__fastcall **v7)(_DEVICE_OBJECT *, _IRP *); 
  VOID(__fastcall *v8)(_DEVICE_OBJECT *, _IRP *); 
  VOID(__fastcall *v9)(_DEVICE_OBJECT *, _IRP *); 
  void **v10; 
  VOID(__fastcall **v11)(_DEVICE_OBJECT *, _IRP *); 

  v1 = a1[6];
  v2 = *(_QWORD **)(v1 + 64);
  if( !v2 )
    return 0;
  v2[1] = a1[12];
  v4 = 28i64;
  v2[2] = a1[13];
  v5 = (char *)((char *)a1 - (char *)v2);
  v6 = 28i64;
  v2[3] = *(_QWORD *)(v1 + 8);
  v7 = (VOID(__fastcall **)(_DEVICE_OBJECT *, _IRP *))(v2 + 4);
  do
  {
    v8 = *(VOID(__fastcall **)(_DEVICE_OBJECT *, _IRP *))((char *)v7 + (_QWORD)v5 + 80);
    if( v8 && v8 != IopInvalidDeviceRequest )
      *v7 = v8;
    ++v7;
    --v6;
  }
  while( v6 );
  v9 = (VOID(__fastcall *)(_DEVICE_OBJECT *, _IRP *))a1[12];
  if( v9 && v9 != IopInvalidDeviceRequest )
    a1[12] = pXdvDriverStartIo;
  if( a1[13] )
    a1[13] = pXdvDriverUnload;
  if( *(_QWORD *)(v1 + 8) )
    *(_QWORD *)(v1 + 8) = pXdvAddDevice;
  v10 = &off_140D41DB0;
  v11 = (VOID(__fastcall **)(_DEVICE_OBJECT *, _IRP *))(a1 + 14);
  do
  {
    if( *v11 )
    {
      if( *v11 != IopInvalidDeviceRequest )
        *v11 = *(VOID(__fastcall **)(_DEVICE_OBJECT *, _IRP *))*v10;
    }
    ++v11;
    v10 += 4;
    --v4;
  }
  while( v4 );
  return 1;
}

Referenced by:

IovAttachDeviceToDeviceStack
VfDifCaptureIoCallbacks