Discrepancy in finding the top memory consuming processes

When I run 'top' command,I see the following
Memory: 32G real, 12G free, 96G swap free

Though it shows as 12G free,I am not able to account for processes that consume the rest 20G.

In my understanding some process should be consuming atleast 15-16 G but I am not able to find them.

Is there any other way?

No. A lot of memory is used by the kernel for cashing and buffers (it's almost free memory too). You can see this in "top" or with "free" command.