ViThunkCreateSharedExportInformation

__int64 __fastcall ViThunkCreateSharedExportInformation(
        char *a1,
        __int64 a2,
        __int64 a3,
        struct _RTL_BITMAP *a4,
        void **a5){
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  void *PoolWithTag; 
  v9 = 1;
  v10 = RtlNumberOfClearBits(a4);
  v11 = v10;
  if( v10 )
  {
    PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 32i64 * v10, 0x54496656ui64);
    *a5 = PoolWithTag;
    if( PoolWithTag )
    {
      memset((INT64)PoolWithTag, 0i64);
      if( !(unsigned int)ViThunkSnapSharedExports(a1, a2, a3, a4, v11, (__int64)*a5) )
        ViThunkFreeSharedThunksArray(a5);
    }
    else
    {
      return 0;
    }
  }
  else
  {
    *a5 = 0i64;
  }
  return v9;
}

Referenced by:

VfThunkAddTargetNotify