Do you think that interest has dropped a huge amount in the the area of assembly coding?
Yes, absolutely.
For several reasons:
1. We've got very good compilers which generate pretty good code within nanoseconds.
Even for a relatively trivial task an experienced programmer would take a couple of minutes to come up with equally good code.
But this doesn't make sense for absolutely uncritical parts of your code.
2. CPUs got increasingly complex and everyone has it's own optimization rules
Nowadays a CPU consists of many parallel arithmetic units and it's extremely difficult to track the availability at any given moment to minimize stalls.
Even if you've got a perfect hand-optimized solution for one processor, it might run like crap on another.
3. The CPUs don't execute cisc
On x86 half of the processor just handles the pre-processing of the incoming cisc assembly-code and converts it into risc micro-operations which match the actually available units. They even get reordered to take the best advantage of the given resources.
So what you think is the "lowest level" is actually two levels on top.
Nevertheless it's a big plus to understand what's happening on the assembly level.
And there are still many case where the compiler needs some help because it just can't see the obvious.
I noticed when I decompiled the C program it didn't quite match what the author had.
That depends very much on the compiler and the optimization settings you're using.
If you've got a rather simple loop in C the compiler usually unrolls a few iterations to have more possibilities to reorder instructions.
This makes the assembly code look horrible and adds another bit of overhead because you have to handle the rest of the elements which didn't fit into the unroll.