PiSwAddPdoAssociation

INT64 __fastcall PiSwAddPdoAssociation(INT64 a1, VOID *a2, VOID *a3){
  unsigned int v3; 
  _QWORD *PoolWithTag; 
  _QWORD *v8; 
  _QWORD *v9; 
  _QWORD *v10; 
  v3 = 0;
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x30ui64, 0x57706E50ui64);
  if( PoolWithTag )
  {
    ObfReferenceObject(a2);
    ObfReferenceObject(a3);
    PoolWithTag[4] = a2;
    PoolWithTag[5] = a3;
    v8 = *(_QWORD **)(a1 + 136);
    if( *v8 != a1 + 128
      || (*PoolWithTag = a1 + 128,
          PoolWithTag[1] = v8,
          *v8 = PoolWithTag,
          *(_QWORD *)(a1 + 136) = PoolWithTag,
          v9 = PoolWithTag + 2,
          v10 = (_QWORD *)qword_140C43078,
          *(__int64 **)qword_140C43078 != &PiSwGlobalPdoAssociationList) )
    {
      __fastfail(3u);
    }
    *v9 = &PiSwGlobalPdoAssociationList;
    v9[1] = v10;
    *v10 = v9;
    qword_140C43078 = (__int64)v9;
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return v3;
}

Referenced by:

PiSwGetChildPdo