A function is called (functionA), passed with 128 bytes of data (I'm not sure where this data comes from - I'm assuming the MD5 section) and another buffer which I'm going to call "Buffer B".
Another function is called, passed an unknown amount of data. It's second parameters is a buffer I'm going to call "Buffer C". This function uses constants known to be used by the MD5 digest algorithm.
A third function is called, passed with Buffer B and Buffer C. It returns 0 if the buffers match and 1 if they don't. The size of the compare is 16-bytes (standard MD5 digest size)
FunctionA does a LOT of work, calling many functions, including searching nand for text strings such as "OEM_INFO" and magic constants like I've pasted in a previous post.
I'd LOVE to know what FunctionA returns, but I can't run it in it's native environment, and it accesses hardware on the phone directly (doesn't use drivers).