What do you need to analyze assembly code
for? There must be a specific question to answer. For example, I once tried to look at the relevant code for a rather inexplicable C++ bug, and I only had to look at a few symbol names and trivial push, mov and call instructions to get evidence that a class constructor was wrong enough to call itself recursively; there was absolutely no need to make modifications, predict branches, understand every line of the program, etc.
Science fair project suggestion: illustrating different ways to do something in assembly, to show which libraries and compilers are more clever and which approaches fit specific processors and use cases.
You should analyze a task that is:
- easy to understand (to avoid losing public)
- non-obvious to implement, with some difficulties and tradeoffs (to find interesting differences between implementations)
- simple to test (because you'll have to run performance measurements)
BLAS routines, for example dense matrix multiplication, should be good choices.