SbpAddTransportToInstance

NTSTATUS __stdcall SbpAddTransportToInstance(){
  VOID **v0; 
  NTSTATUS DeviceObjectPointer; 
  PFILE_OBJECT v2; 
  NTSTATUS Status; 
  VOID **PoolWithTag; 
  _DEVICE_OBJECT *v5; 
  _IRP *v6; 
  UINT64 v7; 
  _IO_STACK_LOCATION *CurrentStackLocation; 
  PDEVICE_OBJECT v9; 
  UINT64 OutputBufferLength; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  __int128 Object; 
  __int64 v14; 
  VOID *ReturnAddress; 
  PDEVICE_OBJECT DeviceObject; 
  PFILE_OBJECT FileObject; 

  FileObject = 0i64;
  v14 = 0i64;
  DeviceObject = 0i64;
  Object = 0i64;
  v0 = 0i64;
  IoStatusBlock = 0i64;
  DeviceObjectPointer = IoGetDeviceObjectPointer(
                          (_UNICODE_STRING *)&InstanceName,
                          0x10000000ui64,
                          &FileObject,
                          &DeviceObject);
  v2 = FileObject;
  Status = DeviceObjectPointer;
  if( DeviceObjectPointer >= 0 )
  {
    PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0xD0ui64, 1113746771i64);
    v0 = PoolWithTag;
    if( !PoolWithTag )
      goto LABEL_3;
    memset((char *)PoolWithTag + 12, 0i64, 0xC4u);
    *(_DWORD *)v0 = 16;
    *((_DWORD *)v0 + 1) = 2;
    *((_DWORD *)v0 + 2) = 192;
    *(_OWORD *)((char *)v0 + 12) = *(_OWORD *)L"\\Device\\VMBus\\{4d12e519-17a0-4ae4-8eaa-5270fc6abdb7}-{dcc079ae-60ba-4d0"
                                               "7-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 28) = *(_OWORD *)L"VMBus\\{4d12e519-17a0-4ae4-8eaa-5270fc6abdb7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 44) = *(_OWORD *)L"d12e519-17a0-4ae4-8eaa-5270fc6abdb7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 60) = *(_OWORD *)L"17a0-4ae4-8eaa-5270fc6abdb7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 76) = *(_OWORD *)L"4-8eaa-5270fc6abdb7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 92) = *(_OWORD *)L"270fc6abdb7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 108) = *(_OWORD *)L"db7}-{dcc079ae-60ba-4d07-847c-3493609c0870}-0000";
    v5 = DeviceObject;
    *(_OWORD *)((char *)v0 + 124) = *(_OWORD *)L"c079ae-60ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 140) = *(_OWORD *)L"0ba-4d07-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 156) = *(_OWORD *)L"-847c-3493609c0870}-0000";
    *(_OWORD *)((char *)v0 + 172) = *(_OWORD *)L"93609c0870}-0000";
    *(_OWORD *)((char *)v0 + 188) = *(_OWORD *)L"70}-0000";
    v14 = (__int64)&Object + 8;
    LOWORD(Object) = 1;
    *((_QWORD *)&Object + 1) = (char *)&Object + 8;
    LODWORD(OutputBufferLength) = 0;
    BYTE2(Object) = 6;
    DWORD1(Object) = 0;
    v6 = IopBuildDeviceIoControlRequest(
           0x1401B0ui64,
           v5,
           v0,
           0xD0ui64,
           0i64,
           OutputBufferLength,
           0,
           (_KEVENT *)&Object,
           &IoStatusBlock,
           ReturnAddress);
    v7 = (UINT64)v6;
    if( v6 )
    {
      CurrentStackLocation = v6->Tail.CurrentStackLocation;
      v9 = DeviceObject;
      CurrentStackLocation[-1].FileObject = v2;
      CurrentStackLocation[-1].MajorFunction = 13;
      Status = IofCallDriver((UINT64)v9, v7);
      if( Status == 259 )
      {
        KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
        Status = IoStatusBlock.Status;
      }
    }
    else
    {
LABEL_3:
      Status = -1073741670;
    }
  }
  if( v2 )
    ObfDereferenceObjectWithTag(v2, 0x746C6644ui64);
  if( v0 )
    ExFreeHeapPool(v0);
  return Status;
}

Referenced by:

IopInitializeBootDrivers