This is an exercise in creating struct objects, passing them to a function as a void pointer, and then casting the incoming void pointer (inside the function) as the struct object.
I've also written some NASM code, to reflect the C code, with detailed comments. It also serves as an example of how to assemble assembly source, in a CMake environment, when the Main Subroutine is in the Assembly source, not the cpp or c version.