private void buildKnownHashes64() {
		REMOVE_HASHES.add(fh(5, 0xa668ec55aef791ecL));		// ??$__crt_interlocked_read@H@@YAHPEDH@Z
		REMOVE_HASHES.add(fh(6, 0x744ed66532c779f8L));		// ??1?$CAtlArray@PEAXV?$CElementTraits@PEAX@ATL@@@ATL@@QEAA@XZ
		REMOVE_HASHES.add(fh(3, 0x73d3b025f0122566L));		// ??1Bitmap@Gdiplus@@UEAA@XZ
		REMOVE_HASHES.add(fh(13, 0x1371a69353a7828L));		// ??_GFreeVirtualProcessorRoot@details@Concurrency@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(16, 0x81ce16d5bcd80d96L));		// ??_GCMFCVisualManagerBitmapCacheItem@CMFCVisualManagerBitmapCache@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(9, 0x482f6a6b1c9a9bc5L));		// ??1CPropbagPropExchange@@UEAA@XZ
		REMOVE_HASHES.add(fh(11, 0x380756a1e4cbab8aL));		// ??1CMFCPropertyPage@@UEAA@XZ
		REMOVE_HASHES.add(fh(18, 0x8393f8fd57b9e43cL));		// ??_GCMFCCustomColorsPropertyPage@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(12, 0x85a8f5c1bf2f96f5L));		// ?_Tidy@?$vector@EV?$allocator@E@std@@@std@@IEAAXXZ
		REMOVE_HASHES.add(fh(20, 0x9ff93e3930c33535L));		// ??_G?$ctype@G@std@@MEAAPEAXI@Z
		REMOVE_HASHES.add(fh(13, 0xfd681e45dcde824aL));		// ??1CMFCOutlookBarPane@@UEAA@XZ
		REMOVE_HASHES.add(fh(16, 0x64d27a7ffb0fc3a8L));		// ??_GBitmap@Gdiplus@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(13, 0x2ecc70b4797c9810L));		// ??_G?$CArray@HAEBH@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(20, 0x4878860cdc26f2bdL));		// ??_G?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(23, 0x545b08612c53fcf9L));		// ??0failure@ios_base@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@V_STL70@@@2@@Z
		REMOVE_HASHES.add(fh(5, 0xe522c1bfa12abc7cL));		// ??3CNoTrackObject@@SAXPEAX@Z
		REMOVE_HASHES.add(fh(17, 0xdddd776fd04f669L));		// ??_GCMiniDockFrameWnd@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(22, 0xb2dbb68d07f64ca3L));		// ??_G_com_error@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(10, 0x4f0b7cc769eb16f3L));		// ??1COleDispParams@@QEAA@XZ
		REMOVE_HASHES.add(fh(10, 0x510d2f08e95d5863L));		// ??1CRegKey@ATL@@QEAA@XZ
		REMOVE_HASHES.add(fh(20, 0xe1cf6ea84d56fb12L));		// ??_G?$numpunct@D@std@@MEAAPEAXI@Z
		REMOVE_HASHES.add(fh(19, 0xbb0a4a7803b8e830L));		// IERefreshElevationPolicy
		REMOVE_HASHES.add(fh(7, 0x41cab2108dd31ba7L));		// ==
		REMOVE_HASHES.add(fh(22, 0x27108c660568241bL));		// ??_Gfailure@ios_base@std@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(10, 0x21fea5167b4a7083L));		// ??1CAnimateCtrl@@UEAA@XZ
		REMOVE_HASHES.add(fh(8, 0x89426b655ac79064L));		// ??1CMediaSample@@UEAA@XZ
		REMOVE_HASHES.add(fh(19, 0xf39cb68bc80f76f7L));		// ??_GUMSFreeThreadProxy@details@Concurrency@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(20, 0xc9026b5e8e8d9ee8L));		// ??_GCOutlookOptionsDlg@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(17, 0x230acc291fed10c5L));		// ??_GThreadInternalContext@details@Concurrency@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(7, 0x1b004293e81305c4L));		// ??1?$CComPtr@UIAMAudioInputMixer@@@ATL@@QEAA@XZ
		REMOVE_HASHES.add(fh(16, 0xd42336b525605796L));		// ??_G_AFX_PROPPAGEFONTINFO@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(17, 0x97fd3cf798f2bd15L));		// ??_GCMultiPageDHtmlDialog@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(23, 0x1c009fbde7812ed5L));		// ??0failure@ios_base@std@@QEAA@AEBV012@@Z
		REMOVE_HASHES.add(fh(10, 0x7e10fbe69b976818L));		// ??1CAudioMediaType@@MEAA@XZ
		REMOVE_HASHES.add(fh(15, 0x79c797eb8032b47L));		// ??_G?$CList@IAEAI@@UEAAPEAXI@Z
		REMOVE_HASHES.add(fh(6, 0x1198931964e874fbL));		// ??0XRibbonInfoParserRoot@CMFCRibbonInfo@@IEAA@XZ
		REMOVE_HASHES.add(fh(6, 0x1524536d78c0da92L));		// ??1?$shared_ptr@V__ExceptionPtr@@@std@@QEAA@XZ
		REMOVE_HASHES.add(fh(7, 0x020d6fdf4571e246L));		// max_size
		REMOVE_HASHES.add(fh(13, 0x225ba93763be05b1L));		// operator==
		REMOVE_HASHES.add(fh(13, 0x287ae8c33777713cL));		// ??1CStreamOnCString@@UEAA@XZ
		REMOVE_HASHES.add(fh(9, 0x288020713ca1ea5bL));		// ??0?$move_iterator@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@V?$shared_ptr@U?$_Task_impl@E@details@Concurrency@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV01@@Z
		REMOVE_HASHES.add(fh(10, 0x2b3bd58383bd38e9L));		// ??1VirtualProcessorRoot@details@Concurrency@@UEAA@XZ
		REMOVE_HASHES.add(fh(7, 0x30a80a215b0bb2c4L));		// Generic destructor
		REMOVE_HASHES.add(fh(7, 0x53a0821862961cb4L));		// constructor
		REMOVE_HASHES.add(fh(4, 0x556c824f94bb014fL));		// return value derefed from first parameter ptr
		REMOVE_HASHES.add(fh(12, 0x6581a15f3efa819eL));		// copy two fields between pointer parameters
		REMOVE_HASHES.add(fh(9, 0x65e3ed6682944d20L));		// ??1CTraceSnapshot@@QEAA@XZ
		REMOVE_HASHES.add(fh(8, 0x6ce601a9094cc769L));		// destructor
		REMOVE_HASHES.add(fh(7, 0x6e6e4f635fd59012L));		// destructor
		REMOVE_HASHES.add(fh(8, 0xad4b1b8ef3775874L));		// pass derefed first param to subfunc
		REMOVE_HASHES.add(fh(8, 0xba8d3a7590fcc497L));		// destructor
		REMOVE_HASHES.add(fh(7, 0xc4312b6b7324334aL));		// destructor
		REMOVE_HASHES.add(fh(11, 0xd6650c343cfb0baeL));		// constructor
		REMOVE_HASHES.add(fh(13, 0xe6202628da545409L));		// ??0CXMLParserRoot@@QEAA@XZ
		REMOVE_HASHES.add(fh(6, 0xebd9388fe0c5b3d5L));		// operator++
		REMOVE_HASHES.add(fh(8, 0xebfa00c4b493da85L));		// constructor
		REMOVE_HASHES.add(fh(11, 0xf5d1f9d9b010f936L));		// constructor
		REMOVE_HASHES.add(fh(11, 0xf7f34c91b43fa7d3L));		// destructor
		REMOVE_HASHES.add(fh(8, 0xfcffed6fce4974a8L));		// constructor
		REMOVE_HASHES.add(fh(9, 0x1c82d67f2be6ec3cL));		// constructor
		REMOVE_HASHES.add(fh(10, 0x7dd643f9a75d75c4L));		// constructor
		REMOVE_HASHES.add(fh(5, 0x88b326842c8ac560L));		// constructor
		REMOVE_HASHES.add(fh(6, 0xa03ab775e8816d83L));		// wrapper
		REMOVE_HASHES.add(fh(15, 0xe964369cf92d003fL));		// constructor
		REMOVE_HASHES.add(fh(10, 0xf36c24d70ec93888L));		// wrapper
		REMOVE_HASHES.add(fh(7, 0x763a8202f3d3c655L));		// constructor
		REMOVE_HASHES.add(fh(12, 0x108d55ea8a0d124cL));		// scalar_deleting_destructor
		REMOVE_HASHES.add(fh(13, 0x73f55a446deac3b1L));		// scalar_deleting_destructor
		REMOVE_HASHES.add(fh(14, 0x3266cd569ab4eeffL));		// comparator
		REMOVE_HASHES.add(fh(34, 0x8069e1fe2475e7c0L));		// inlined copies followed by method call
		REMOVE_HASHES.add(fh(8, 0xa5c0d8da585783d3L));		// constructor
		REMOVE_HASHES.add(fh(14, 0xad597a6e08b319b6L));		// destructor
		REMOVE_HASHES.add(fh(17, 0xa552112bff535b06L));		// destructor
		REMOVE_HASHES.add(fh(13, 0xac7036a5a6a27973L));		// destructor
		REMOVE_HASHES.add(fh(6, 0x561ffc1c6cdb8a09L));		// Mysize
		REMOVE_HASHES.add(fh(8, 0x6838c16db21b0fcdL));		// ??1_AsyncTaskCollection@details@Concurrency@@UEAA@XZ
		REMOVE_HASHES.add(fh(6, 0x69e6a6ae661a1d17L));		// Generic size()
		REMOVE_HASHES.add(fh(4, 0xd4c0bfb00c09e33dL));		// Access field
		REMOVE_HASHES.add(fh(4, 0xc0845430b88f5debL));		// Save registers
		REMOVE_HASHES.add(fh(6, 0xef1dcb79b04b45a7L));		// 2 calls
		REMOVE_HASHES.add(fh(10, 0xc75e5da59c8147a1L));		// vector destructor
		REMOVE_HASHES.add(fh(15, 0x71183c69f857f80cL));		// copy constructor

		FORCE_RELATION.add(fh(6, 0x508d431b82512d5bL));		// Generic wrapper, one obvious child
		FORCE_RELATION.add(fh(19, 0x1e68c4d4d83e7585L));	// A little too generic stream thing, force parent
		FORCE_RELATION.add(fh(26, 0x12449040c1a0d37eL));	// Count decrement dispatcher, distinguish via parent
		FORCE_RELATION.add(fh(18, 0x9c1597a636ea13b3L));	// scalar_deleting_destructor with a child
		FORCE_RELATION.add(fh(15, 0x85b697ef56707979L));	// Generic form with one child
		FORCE_RELATION.add(fh(15, 0xe27b2550f3b616bcL));	// Generic form, force parent match
		FORCE_RELATION.add(fh(14, 0xa2b429ca49281059L));	// Generic destructor with one child
		FORCE_RELATION.add(fh(21, 0x5eae3016f3cc4caaL));	// Common destructor form (only child is free)
		FORCE_RELATION.add(fh(12, 0xe77f57508779c258L));	// Generic assign
		FORCE_RELATION.add(fh(18, 0x61950fc199f518fL));		// Generic destructor with children
		FORCE_RELATION.add(fh(25, 0xd08dc36210405cfdL));	// scalar_deleting_destructor force parent
		FORCE_RELATION.add(fh(13, 0xf1e4167aedf569aL));		// Generic form, with many children
		FORCE_RELATION.add(fh(20, 0x678b611a60783c98L));	// Generic form with children
		FORCE_RELATION.add(fh(15, 0x51980975b49f9f73L));	// ??1SchedulingNode@details@Concurrency@@QEAA@XZ
		FORCE_RELATION.add(fh(18, 0xcf323a39c909432bL));	// ?_Future_error_map@std@@YAPEBDH@Z
		FORCE_RELATION.add(fh(14, 0x41110421841870bdL));	// iterator::operator=
		FORCE_RELATION.add(fh(15, 0x4ff25b1581823b8dL));	// Uninitialized_move
		FORCE_RELATION.add(fh(17, 0x98b776bf2b245c57L));	// pair constructor
		FORCE_RELATION.add(fh(12, 0x5bd6de97fe12c3deL));	// ??0_WDI_RECEIVE_COALESCING_CAPABILITIES@@QEAA@XZ
		FORCE_RELATION.add(fh(15, 0x08c46c0927acd159L));	// _Ucopy
		FORCE_RELATION.add(fh(11, 0x809e950df92527a5L));	// Emplace
		FORCE_RELATION.add(fh(17, 0xb33a994d051dd9a0L));	// ??_G_AsyncTaskCollection@details@Concurrency@@UEAAPEAXI@Z
		FORCE_RELATION.add(fh(14, 0xee6fd3046cf7ee06L));	// ??0_WDI_CHECKSUM_OFFLOAD_CAPABILITIES_CONTAINER@@QEAA@XZ
		FORCE_RELATION.add(fh(16, 0xfb2a575f03442e59L));	// ?Equals@Guid@Platform@@QEAA_NAEBU_GUID@@@Z
		FORCE_RELATION.add(fh(17, 0x74a7b8ca8aa4062bL));	// Find_unchecked
		FORCE_RELATION.add(fh(13, 0x64bd12c74e7fa730L));	// boolean check on field
		FORCE_RELATION.add(fh(13, 0xe624a060e19a0c64L));	// copy
		FORCE_RELATION.add(fh(35, 0x4423b59693bfd81L));		// Generic destructor
		FORCE_RELATION.add(fh(19, 0x07ccaa127d5e1714L));	// operator=
		FORCE_RELATION.add(fh(25, 0xa6ea183912b2677dL));	// Generic copy
		FORCE_RELATION.add(fh(11, 0xb7e0a1d58b88d05cL));	// Generic constructor
		FORCE_RELATION.add(fh(12, 0xceece41b9d9525cbL));	// Generic constructor

		FORCE_SPECIFIC.add(fh(26, 0xf0f7f2439683bfeaL));	// Variants with specialized constants
		FORCE_SPECIFIC.add(fh(17, 0xf468f6c40495d8caL));	// Dispatcher form with lots of specific constants
		FORCE_SPECIFIC.add(fh(13, 0x8779436db6c1d90L));		// ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@V_STL70@@@std@@QEAA@XZ
		FORCE_SPECIFIC.add(fh(75, 0x48156d182763009dL));	// _write confused with _read
		FORCE_SPECIFIC.add(fh(51, 0x2d35582d216d91bbL));	// ??1CCommandLineInfo@@UEAA@XZ
		FORCE_SPECIFIC.add(fh(15, 0x4389c3585fa0606aL));	// has_flag
		FORCE_SPECIFIC.add(fh(15, 0xcc72f3219032eacfL));	// ?__acrt_stdio_parse_mode_D@@YA_NAEAU__acrt_stdio_stream_mode@@@Z
		FORCE_SPECIFIC.add(fh(36, 0xa07803de9bbbebbbL));	// vector deleting destructor
		FORCE_SPECIFIC.add(fh(20, 0x4af9f6ef9467bbcaL));	// ??_GFileLCRec@@QEAAPEAXI@Z
		FORCE_SPECIFIC.add(fh(11, 0x17c3832d5e7abe3L));		// isnan, isinf

		FORCE_SPECIFIC.add(fh(12, 0x1997c3c57f1359d6L));	// ?dtor$9@?0??AddMenuCommands@CMFCToolBarsCustomizeDialog@@QEAAXPEBVCMenu@@HPEB_W1@Z@4HA
		FORCE_RELATION.add(fh(12, 0x1997c3c57f1359d6L));
		FORCE_SPECIFIC.add(fh(11, 0x2c36a67a489920daL));	// ??1ContextBase@details@Concurrency@@UEAA@XZ
		FORCE_RELATION.add(fh(11, 0x2c36a67a489920daL));
		FORCE_SPECIFIC.add(fh(15, 0x69156cfc34e915e7L));	// ??0<lambda_6dd2c61d572e92a64c8eda4035773505>@@QEAA@AEBV0@@Z
		FORCE_RELATION.add(fh(15, 0x69156cfc34e915e7L));
		FORCE_SPECIFIC.add(fh(11, 0x781f34966e8ef7deL));	// FreeNode
		FORCE_RELATION.add(fh(11, 0x781f34966e8ef7deL));
		FORCE_SPECIFIC.add(fh(11, 0x86b8837a96bb2fadL));	// ??0NumaInformation@SchedulerBase@details@Concurrency@@QEAA@XZ
		FORCE_RELATION.add(fh(11, 0x86b8837a96bb2fadL));
		FORCE_SPECIFIC.add(fh(10, 0x87dd953d6c34861eL));	// get_allocator
		FORCE_RELATION.add(fh(10, 0x87dd953d6c34861eL));
		FORCE_SPECIFIC.add(fh(14, 0x8c77a958beb620dfL));	// ?HasRealizedChores@ScheduleGroupSegmentBase@details@Concurrency@@IEBA_NXZ
		FORCE_RELATION.add(fh(14, 0x8c77a958beb620dfL));
		FORCE_SPECIFIC.add(fh(10, 0x90181c81962ce711L));	// ??1CStreamOnCString@@QEAA@XZ
		FORCE_RELATION.add(fh(10, 0x90181c81962ce711L));
		FORCE_SPECIFIC.add(fh(17, 0x9248e909511b8ddaL));	// ??0FreeVirtualProcessorRoot@details@Concurrency@@QEAA@PEAVSchedulerProxy@12@PEAUSchedulerNode@12@I@Z
		FORCE_RELATION.add(fh(17, 0x9248e909511b8ddaL));
		FORCE_SPECIFIC.add(fh(15, 0x977e6c2c25e8f389L));	// ??1CMFCVisualManagerBitmapCache@@UEAA@XZ
		FORCE_RELATION.add(fh(15, 0x977e6c2c25e8f389L));
		FORCE_SPECIFIC.add(fh(17, 0xad2d41b71db78df0L));	// ??1COleDispatchException@@UEAA@XZ
		FORCE_RELATION.add(fh(17, 0xad2d41b71db78df0L));
		FORCE_SPECIFIC.add(fh(26, 0xb5b192b00955d1feL));	// ??1_Locinfo@std@@QEAA@XZ
		FORCE_RELATION.add(fh(26, 0xb5b192b00955d1feL));
		FORCE_SPECIFIC.add(fh(10, 0xd6a5fc3691b7f101L));	// DelRegTree
		FORCE_RELATION.add(fh(10, 0xd6a5fc3691b7f101L));
		FORCE_SPECIFIC.add(fh(13, 0xd75e6989aec2a5a9L));	// destructor form
		FORCE_RELATION.add(fh(13, 0xd75e6989aec2a5a9L));
		FORCE_SPECIFIC.add(fh(13, 0xdcfdfd3a9345b3a5L));	// constructor form
		FORCE_RELATION.add(fh(13, 0xdcfdfd3a9345b3a5L));
		FORCE_SPECIFIC.add(fh(14, 0xf323b038a8b540faL));	// ?GetPolicy@SchedulerBase@details@Concurrency@@UEBA?AVSchedulerPolicy@3@XZ
		FORCE_RELATION.add(fh(14, 0xf323b038a8b540faL));
		FORCE_SPECIFIC.add(fh(10, 0x6862321b024d5c83L));	// constructor
		FORCE_RELATION.add(fh(10, 0x6862321b024d5c83L));
		FORCE_SPECIFIC.add(fh(11, 0xa61ae8d54cfc35d6L));	// comparator, empty
		FORCE_RELATION.add(fh(11, 0xa61ae8d54cfc35d6L));
		FORCE_SPECIFIC.add(fh(12, 0x892067d7b5484452L));	// anonymous destructor
		FORCE_RELATION.add(fh(12, 0x892067d7b5484452L));
		FORCE_SPECIFIC.add(fh(12, 0x2155a28b83bb2704L));	// destructor
		FORCE_RELATION.add(fh(12, 0x2155a28b83bb2704L));
		FORCE_SPECIFIC.add(fh(14, 0x205bb2f03257b770L));	// destructor
		FORCE_RELATION.add(fh(14, 0x205bb2f03257b770L));
		FORCE_SPECIFIC.add(fh(12, 0xbdcafd32892d723L));		// ??1_Locimp@locale@std@@MEAA@XZ
		FORCE_RELATION.add(fh(12, 0xbdcafd32892d723L));
		FORCE_SPECIFIC.add(fh(12, 0xcd7e1f68717240f8L));	// destructor
		FORCE_RELATION.add(fh(12, 0xcd7e1f68717240f8L));

		FORCE_SPECIFIC.add(fh(10, 0x5c4a91ec77ecc3d2L));	// strnlen
		AUTO_PASS.add(fh(10, 0x5c4a91ec77ecc3d2L));
		FORCE_SPECIFIC.add(fh(11, 0xa508065e4b64b352L));	// ?AllocateHeap@?$CTempBuffer@D$0IA@VCCRTAllocator@ATL@@@ATL@@AEAAX_K@Z
		AUTO_PASS.add(fh(11, 0xa508065e4b64b352L));
		FORCE_SPECIFIC.add(fh(9, 0xe961767d5c594520L));		// ?AtlThrowImpl@ATL@@YAXJ@Z
		AUTO_PASS.add(fh(9, 0xe961767d5c594520L));
		FORCE_SPECIFIC.add(fh(10, 0xaba76591680821c6L));	// strnlen
		AUTO_PASS.add(fh(10, 0xaba76591680821c6L));
		FORCE_SPECIFIC.add(fh(10, 0x6244ea7ccad27b93L));	// wcsnlen
		AUTO_PASS.add(fh(10, 0x6244ea7ccad27b93L));
		FORCE_SPECIFIC.add(fh(9, 0x347bdce6848098d1L));		// strncnt
		AUTO_PASS.add(fh(9, 0x347bdce6848098d1L));
		FORCE_SPECIFIC.add(fh(10, 0x668ac85a3d5bf04bL));	// raise_securityfailure
		AUTO_PASS.add(fh(10, 0x668ac85a3d5bf04bL));

		// Must exhibit relation and constants, plus one specific set of constants are marked as auto-fail
		FORCE_SPECIFIC.add(fh(11, 0xf8ff33ae3bb6b9e9L));		// constructor
		FORCE_RELATION.add(fh(11, 0xf8ff33ae3bb6b9e9L));
		REMOVE_SPECHASHES.add(fh(11, 0xc03985b32a1f76ceL));

	}
Hash adjustments for 64-bit Visual Studio libraries
Ghidra/Features/FunctionID/ghidra_scripts/RemoveFunctions.java