I think it would be more interesting and fair if he hand-wrote the assembly code as well as the LLVM code. Those labels are unnecessarily intimidating and I'm sure a human could make the code structure much more clear.
$ cat >hello.s <<EOF
.text
.globl main
main:
leaq msg, %rdi
callq puts
ret
.data
msg: .asciz "hello world\n"
EOF
$ as -o hello.o hello.s; cc -o hello hello.o; ./hello
hello world