ViThunkReplaceAllSharedExports

VOID __stdcall ViThunkReplaceAllSharedExports(_VF_TARGET_DRIVER *TargetNode, UINT64 AlreadyRunning){
  int v3; 
  unsigned int v4; 
  unsigned int v5; 
  unsigned int v6; 
  unsigned int v7; 

  v3 = AlreadyRunning;
  v4 = RtlNumberOfClearBits((UINT64 *)&VfPoolThunksBitMapHeader.SizeOfBitMap);
  ViThunkReplaceSharedExports((__int64)TargetNode->u1.AllSharedExportThunks.PoolSharedExportThunks, v4);
  if( !(_DWORD)KernelVerifier )
  {
    v5 = RtlNumberOfClearBits((UINT64 *)&VfRegularThunksBitMapHeader.SizeOfBitMap);
    ViThunkReplaceSharedExports((__int64)TargetNode->u1.AllSharedExportThunks.SharedExportThunks, v5);
    if( !v3 )
    {
      v6 = RtlNumberOfClearBits((UINT64 *)&VfOrderDependentThunksBitMapHeader.SizeOfBitMap);
      ViThunkReplaceSharedExports((__int64)TargetNode->u1.AllSharedExportThunks.OrderDependentSharedExportThunks, v6);
      v7 = RtlNumberOfClearBits((UINT64 *)&VfXdvThunksBitMapHeader.SizeOfBitMap);
      ViThunkReplaceSharedExports((__int64)TargetNode->u1.AllSharedExportThunks.XdvSharedExportThunks, v7);
    }
  }
}

Referenced by:

ViThunkApplyThunksCurrentSession