I don't think the mental step between C and assembler is that big. You got almost no constructs in C that does not map directly to assembler, like function overloading or classes.
The confusion starts when the optimzer throws around your code and makes it unreadable.
The confusion starts when the optimzer throws around your code and makes it unreadable.