1. It is not necessary to go from no support to full support in one patch or even one MR. To give a more concrete example: the implementation of `NormalizeFileForPatchSignature` and its dependencies could be broken out into a patch by itself. `GetFilePatchSignature` functions depend on it, but it does not depend on them. Note: more breaking down may be needed, but that would be a good start. 2. Again using `NormalizeFileForPatchSignature` as an example, it takes a buffer as input (so no need to pass in a file). I have test cases for this function (as well as the `GetFilePatchSignature` functions) in a branch on my local machine that I could provide if you are still having difficulty. 3. Sorry, it was actually `mspatcha_main.c` that had the re-ordering issue.
From: - `GetFilePatchSignatureA` - `GetFilePatchSignatureW` - `GetFilePatchSignatureByHandle` - `GetFilePatchSignatureByBuffer` - `NormalizeFileForPatchSignature`
To: - `NormalizeFileForPatchSignature` - `GetFilePatchSignatureByBuffer` - `GetFilePatchSignatureByHandle` - `GetFilePatchSignatureA` - `GetFilePatchSignatureW`
4. Neither `NormalizeFileForPatchSignature` nor `normalize_old_file_image` contain any TRACE. At the very least, I would expect one of these to output the full parameter list.
Hopefully this gives you some clearer direction than my initial response. I (and hopefully others) will be better able to provide more detailed feedback after the above issues are addressed.