ok, one thread seems to spend a considerable amount of time looping through the items in the 'file types' dialog. it looks like it's doing this in an extremely inefficient manner: the 'lock xadd' in the following loop is causing the CPU to purge cache & sync in a tight loop. It looks like this is getting called for every file on the disk, for every file type in the types dialog. is that right? it would seem that moving the lock to a higher level would be a good place to start.
(defraggler64.exe is loaded at 0x13f510000)
000000013F55C7D0 mov rdx,qword ptr [rbx]
000000013F55C7D3 sub rdx,18h
000000013F55C7D7 or eax,0FFFFFFFFh
000000013F55C7DA lock xadd dword ptr [rdx+10h],eax
000000013F55C7DF add eax,0FFFFFFFFh
000000013F55C7E2 test eax,eax
000000013F55C7E4 jg 000000013F55C7EF
000000013F55C7E6 mov rcx,qword ptr [rdx]
000000013F55C7E9 mov rax,qword ptr [rcx]
000000013F55C7EC call qword ptr [rax+8]
000000013F55C7EF add rbx,10h
000000013F55C7F3 cmp rbx,rsi
000000013F55C7F6 jne 000000013F55C7D0
the other thread that's pegging the CPU is also looping through this list of file types. although it's a different piece of code. but it's also got the dreaded lock in a tight loop:
000000013F63E819 jne 000000013F63E826
000000013F63E81B lea r12,[rdi-18h]
000000013F63E81F lock add dword ptr [rdi-8],1
000000013F63E824 jmp 000000013F63E866