WmipAllocateSingleInstanceWnode

INT64 __fastcall WmipAllocateSingleInstanceWnode(
        UINT64 FixedHeaderSize,
        _UNICODE_STRING *InstanceName,
        UINT64 InstanceDataSize,
        UINT64 *InstanceNameOffset,
        UINT64 *InstanceDataOffset,
        UINT64 *WnodeSize,
        VOID **Wnode){
  unsigned int v8; 
  unsigned __int16 *v9; 
  int v10; 
  unsigned int v11; 
  unsigned int v12; 
  int v13; 
  int v14; 
  VOID *PoolWithTag; 
  VOID *v16; 
  UINT64 *v17; 
  UINT64 Number; 
  LODWORD(Number) = FixedHeaderSize;
  v8 = -1073741670;
  if( WmipAlign(2ui64, &Number) )
  {
    v10 = Number;
    v11 = *v9 + 2;
    if( v11 <= ~(_DWORD)Number )
    {
      LODWORD(Number) = v11 + Number;
      if( WmipAlign(8ui64, &Number) )
      {
        v13 = Number;
        if( v12 <= ~(_DWORD)Number )
        {
          v14 = v12 + Number;
          PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, v12 + (unsigned int)Number, 0x70696D57ui64);
          v16 = PoolWithTag;
          if( PoolWithTag )
          {
            memset((INT64)PoolWithTag, 0i64);
            v17 = InstanceDataOffset;
            v8 = 0;
            *(_DWORD *)InstanceNameOffset = v10;
            *(_DWORD *)v17 = v13;
            *(_DWORD *)WnodeSize = v14;
            *Wnode = v16;
          }
        }
      }
    }
  }
  return v8;
}

Referenced by:

IoWMIExecuteMethod
IoWMISetSingleInstance
IoWMISetSingleItem