WmipAllocateSingleInstanceWnode

NTSTATUS __stdcall WmipAllocateSingleInstanceWnode(
        UINT64 FixedHeaderSize,
        _UNICODE_STRING *InstanceName,
        UINT64 InstanceDataSize,
        UINT64 *InstanceNameOffset,
        UINT64 *InstanceDataOffset,
        UINT64 *WnodeSize,
        VOID **Wnode){
  NTSTATUS v8; 
  unsigned __int16 *v9; 
  int v10; 
  unsigned int v11; 
  unsigned int v12; 
  int v13; 
  int v14; 
  size_t v15; 
  VOID **PoolWithTag; 
  VOID **v17; 
  UINT64 *v18; 
  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;
          v15 = v12 + Number;
          PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v12 + (unsigned int)Number, 1885957463i64);
          v17 = PoolWithTag;
          if( PoolWithTag )
          {
            memset(PoolWithTag, 0i64, v15);
            v18 = InstanceDataOffset;
            v8 = 0;
            *(_DWORD *)InstanceNameOffset = v10;
            *(_DWORD *)v18 = v13;
            *(_DWORD *)WnodeSize = v14;
            *Wnode = v17;
          }
        }
      }
    }
  }
  return v8;
}

Referenced by:

IoWMIExecuteMethod
IoWMISetSingleInstance
IoWMISetSingleItem