A couple of thoughts. 1. I would suggest that ASSERT should not be the only protection for an invalid operation as ASSERT is usually disabled on release builds. 2. We do have a library to make this more explicit and common. https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Library/SafeIntLib.h#L548 Thanks